lib/chef/resource/machine_batch.rb in chef-provisioning-2.0.1 vs lib/chef/resource/machine_batch.rb in chef-provisioning-2.0.2

- old
+ new

@@ -1,78 +1,78 @@ -require 'chef/resource/lwrp_base' -require 'chef/mixin/deep_merge' - -class Chef -class Resource -class MachineBatch < Chef::Resource::LWRPBase - - self.resource_name = 'machine_batch' - - def initialize(*args) - super - @machines = [] - @driver = run_context.chef_provisioning.current_driver - @chef_server = run_context.cheffish.current_chef_server - @machine_options = run_context.chef_provisioning.current_machine_options - end - - actions :allocate, :ready, :setup, :converge, :converge_only, :destroy, :stop - default_action :converge - - attribute :machines, :kind_of => [ Array ] - attribute :max_simultaneous, :kind_of => [ Integer ] - attribute :from_recipe - - # These four attributes are for when you pass names or ManagedEntrys to - # "machines". Not used for auto-batch or explicit inline machine declarations. - attribute :driver - attribute :chef_server - attribute :machine_options - attribute :files, :kind_of => [ Array ] - - def machines(*values) - if values.size == 0 - @machines - else - @machines += values.flatten - end - end - - def machine(name, &block) - machines << from_recipe.build_resource(:machine, name, caller[0], &block) - end - - def add_machine_options(options) - @machine_options = Chef::Mixin::DeepMerge.hash_only_merge(@machine_options, options) - end - - # We override this because we want to hide @from_recipe and shorten @machines - # in error output. - def to_text - ivars = instance_variables.map { |ivar| ivar.to_sym } - HIDDEN_IVARS - [ :@from_recipe, :@machines ] - text = "# Declared in #{@source_line}\n\n" - text << self.class.dsl_name + "(\"#{name}\") do\n" - ivars.each do |ivar| - if (value = instance_variable_get(ivar)) && !(value.respond_to?(:empty?) && value.empty?) - value_string = value.respond_to?(:to_text) ? value.to_text : value.inspect - text << " #{ivar.to_s.sub(/^@/,'')} #{value_string}\n" - end - end - machine_names = @machines.map do |m| - if m.is_a?(Chef::Provisioning::ManagedEntry) - m.name - elsif m.is_a?(Chef::Resource::Machine) - m.name - else - m - end - end - text << " machines #{machine_names.inspect}\n" - [@not_if, @only_if].flatten.each do |conditional| - text << " #{conditional.to_text}\n" - end - text << "end\n" - end - -end -end -end +require 'chef/resource/lwrp_base' +require 'chef/mixin/deep_merge' + +class Chef +class Resource +class MachineBatch < Chef::Resource::LWRPBase + + self.resource_name = 'machine_batch' + + def initialize(*args) + super + @machines = [] + @driver = run_context.chef_provisioning.current_driver + @chef_server = run_context.cheffish.current_chef_server + @machine_options = run_context.chef_provisioning.current_machine_options + end + + actions :allocate, :ready, :setup, :converge, :converge_only, :destroy, :stop + default_action :converge + + attribute :machines, :kind_of => [ Array ] + attribute :max_simultaneous, :kind_of => [ Integer ] + attribute :from_recipe + + # These four attributes are for when you pass names or ManagedEntrys to + # "machines". Not used for auto-batch or explicit inline machine declarations. + attribute :driver + attribute :chef_server + attribute :machine_options + attribute :files, :kind_of => [ Array ] + + def machines(*values) + if values.size == 0 + @machines + else + @machines += values.flatten + end + end + + def machine(name, &block) + machines << from_recipe.build_resource(:machine, name, caller[0], &block) + end + + def add_machine_options(options) + @machine_options = Chef::Mixin::DeepMerge.hash_only_merge(@machine_options, options) + end + + # We override this because we want to hide @from_recipe and shorten @machines + # in error output. + def to_text + ivars = instance_variables.map { |ivar| ivar.to_sym } - HIDDEN_IVARS - [ :@from_recipe, :@machines ] + text = "# Declared in #{@source_line}\n\n" + text << self.class.dsl_name + "(\"#{name}\") do\n" + ivars.each do |ivar| + if (value = instance_variable_get(ivar)) && !(value.respond_to?(:empty?) && value.empty?) + value_string = value.respond_to?(:to_text) ? value.to_text : value.inspect + text << " #{ivar.to_s.sub(/^@/,'')} #{value_string}\n" + end + end + machine_names = @machines.map do |m| + if m.is_a?(Chef::Provisioning::ManagedEntry) + m.name + elsif m.is_a?(Chef::Resource::Machine) + m.name + else + m + end + end + text << " machines #{machine_names.inspect}\n" + [@not_if, @only_if].flatten.each do |conditional| + text << " #{conditional.to_text}\n" + end + text << "end\n" + end + +end +end +end