lib/jamie/vagrant.rb in jamie-0.1.0.alpha1 vs lib/jamie/vagrant.rb in jamie-0.1.0.alpha2

- old
+ new

@@ -4,58 +4,58 @@ require 'vagrant' require 'jamie' module Jamie + module Vagrant + + # A Vagrant confiuration class which wraps a Jamie::Config instance. class Config < ::Vagrant::Config::Base extend Forwardable - def_delegators :@config, :yaml, :yaml=, :platforms, :platforms=, - :suites, :suites=, :log_level, :log_level=, + def_delegators :@config, :suites, :suites=, :platforms, :platforms=, + :instances, :yaml_file, :yaml_file=, :log_level, :log_level=, :data_bags_base_path, :data_bags_base_path=, :yaml_data def initialize @config = Jamie::Config.new end end - def self.init! - ::Vagrant.config_keys.register(:jamie) { Jamie::Vagrant::Config } - end - + # Defines all Vagrant virtual machines, one for each instance. + # + # @param config [Vagrant::Config::Top] Vagrant top level config object def self.define_vms(config) - config.jamie.suites.each do |suite| - config.jamie.platforms.each do |platform| - define_vagrant_vm(config, suite, platform) - end + config.jamie.instances.each do |instance| + define_vagrant_vm(config, instance) end end private - def self.define_vagrant_vm(config, suite, platform) - name = "#{suite.name}-#{platform.name}".gsub(/_/, '-').gsub(/\./, '') + def self.define_vagrant_vm(config, instance) + driver = instance.platform.driver - config.vm.define name do |c| - c.vm.box = platform.vagrant_box - c.vm.box_url = platform.vagrant_box_url if platform.vagrant_box_url - c.vm.host_name = "#{name}.vagrantup.com" - c.vm.customize ["modifyvm", :id, "--memory", "256"] + config.vm.define instance.name do |c| + c.vm.box = driver['box'] + c.vm.box_url = driver['box_url'] if driver['box_url'] + c.vm.host_name = "#{instance.name}.vagrantup.com" + c.vm.customize ["modifyvm", :id, "--memory", driver['memory']] c.vm.provision :chef_solo do |chef| chef.log_level = config.jamie.log_level - chef.run_list = platform.base_run_list + Array(suite.run_list) - chef.json = suite.json - chef.data_bags_path = calculate_data_bags_path(config, name) + chef.run_list = instance.run_list + chef.json = instance.json + chef.data_bags_path = calculate_data_bags_path(config, instance) end end end - def self.calculate_data_bags_path(config, instance_name) + def self.calculate_data_bags_path(config, instance) base_path = config.jamie.data_bags_base_path - instance_data_bags_path = File.join(base_path, instance_name, "data_bags") + instance_data_bags_path = File.join(base_path, instance.name, "data_bags") common_data_bags_path = File.join(base_path, "data_bags") if File.directory?(instance_data_bags_path) instance_data_bags_path elsif File.directory?(common_data_bags_path) @@ -65,6 +65,6 @@ end end end end -Jamie::Vagrant.init! +Vagrant.config_keys.register(:jamie) { Jamie::Vagrant::Config }