class Chef::Provider::Machine
Attributes
machine_spec[R]
Public Class Methods
additional_machine_option_keys()
click to toggle source
# File lib/chef/provider/machine.rb, line 179 def self.additional_machine_option_keys @@additional_machine_option_keys ||= [] end
upload_files(action_handler, machine, files)
click to toggle source
# File lib/chef/provider/machine.rb, line 201 def self.upload_files(action_handler, machine, files) if files files.each_pair do |remote_file, local| if local.is_a?(Hash) if local[:local_path] machine.upload_file(action_handler, local[:local_path], remote_file) else machine.write_file(action_handler, remote_file, local[:content]) end else machine.upload_file(action_handler, local, remote_file) end end end end
Public Instance Methods
action_handler()
click to toggle source
# File lib/chef/provider/machine.rb, line 11 def action_handler @action_handler ||= Chef::Provisioning::ChefProviderActionHandler.new(self) end
action_handler=(value)
click to toggle source
# File lib/chef/provider/machine.rb, line 14 def action_handler=(value) @action_handler = value end
chef_managed_entry_store()
click to toggle source
# File lib/chef/provider/machine.rb, line 197 def chef_managed_entry_store @chef_managed_entry_store ||= Provisioning.chef_managed_entry_store(new_resource.chef_server) end
current_driver()
click to toggle source
# File lib/chef/provider/machine.rb, line 117 def current_driver if machine_spec.driver_url run_context.chef_provisioning.driver_for(machine_spec.driver_url) end end
current_machine_options()
click to toggle source
# File lib/chef/provider/machine.rb, line 137 def current_machine_options machine_options(current_driver) end
from_image_spec()
click to toggle source
# File lib/chef/provider/machine.rb, line 123 def from_image_spec @from_image_spec ||= begin if new_resource.from_image chef_managed_entry_store.get!(:machine_image, new_resource.from_image) else nil end end end
load_current_resource()
click to toggle source
# File lib/chef/provider/machine.rb, line 183 def load_current_resource if defined?(Chef::Provider::ChefNode) # Cheffish 1.x node_provider = Chef::Provider::ChefNode.new(new_resource, run_context) else # Cheffish 2.x node_provider = Chef::Resource::ChefNode.action_class.new(new_resource, run_context) end node_provider.load_current_resource json = node_provider.new_json json['normal']['chef_provisioning'] = node_provider.current_json['normal']['chef_provisioning'] @machine_spec = chef_managed_entry_store.new_entry(:machine, new_resource.name, json) end
machine_options(driver)
click to toggle source
# File lib/chef/provider/machine.rb, line 141 def machine_options(driver) configs = [] configs << { :convergence_options => [ :chef_server, :allow_overwrite_keys, :source_key, :source_key_path, :source_key_pass_phrase, :private_key_options, :ohai_hints, :public_key_path, :public_key_format, :admin, :validator, :chef_config ].inject({}) do |result, key| result[key] = new_resource.send(key) result end } # The current use case for this is adding a new attribute `aws_tags` to # the machine resource from the chef-provisioning-aws driver. Because we # want that attribute to work for the recipe DSL, it needs to be added at the # Chef::Resource::Machine class level and not at an instance level. Thus we # also need to pull the additional_machine_option_keys (:aws_tags) from the # Chef::Resource::Machine class level. If you use two drivers (like AWS and # Azure) then all machine instances will still have the `aws_tags` attribute # DSL and will pass `:aws_tags` in on the machine_options. They can simply # be ignored by the Azure driver. (self.class.additional_machine_option_keys || []).each do |k| configs << { k => new_resource.send(k)} if new_resource.send(k) end configs << { from_image: new_resource.from_image } if new_resource.from_image configs << new_resource.machine_options if new_resource.machine_options configs << driver.config[:machine_options] if driver.config[:machine_options] Cheffish::MergedConfig.new(*configs) end
new_driver()
click to toggle source
# File lib/chef/provider/machine.rb, line 113 def new_driver run_context.chef_provisioning.driver_for(new_resource.driver) end
new_machine_options()
click to toggle source
# File lib/chef/provider/machine.rb, line 133 def new_machine_options machine_options(new_driver) end
whyrun_supported?()
click to toggle source
# File lib/chef/provider/machine.rb, line 20 def whyrun_supported? true end
Private Instance Methods
upload_files(machine)
click to toggle source
# File lib/chef/provider/machine.rb, line 219 def upload_files(machine) Machine.upload_files(action_handler, machine, new_resource.files) end