Class: Chef::Provider::Machine
- Inherits:
-
LWRPBase
- Object
- LWRPBase
- Chef::Provider::Machine
- Defined in:
- lib/chef/provider/machine.rb
Instance Attribute Summary collapse
-
#machine_spec ⇒ Object
readonly
Returns the value of attribute machine_spec.
Class Method Summary collapse
Instance Method Summary collapse
- #action_handler ⇒ Object
- #action_handler=(value) ⇒ Object
- #chef_managed_entry_store ⇒ Object
- #current_driver ⇒ Object
- #current_machine_options ⇒ Object
- #from_image_spec ⇒ Object
- #load_current_resource ⇒ Object
- #machine_options(driver) ⇒ Object
- #new_driver ⇒ Object
- #new_machine_options ⇒ Object
- #whyrun_supported? ⇒ Boolean
Instance Attribute Details
#machine_spec ⇒ Object (readonly)
Returns the value of attribute machine_spec.
105 106 107 |
# File 'lib/chef/provider/machine.rb', line 105 def machine_spec @machine_spec end |
Class Method Details
.additional_machine_option_keys ⇒ Object
173 174 175 |
# File 'lib/chef/provider/machine.rb', line 173 def self.additional_machine_option_keys @@additional_machine_option_keys ||= [] end |
.upload_files(action_handler, machine, files) ⇒ Object
195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 |
# File 'lib/chef/provider/machine.rb', line 195 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 |
Instance Method Details
#action_handler ⇒ Object
11 12 13 |
# File 'lib/chef/provider/machine.rb', line 11 def action_handler @action_handler ||= Chef::Provisioning::ChefProviderActionHandler.new(self) end |
#action_handler=(value) ⇒ Object
14 15 16 |
# File 'lib/chef/provider/machine.rb', line 14 def action_handler=(value) @action_handler = value end |
#chef_managed_entry_store ⇒ Object
191 192 193 |
# File 'lib/chef/provider/machine.rb', line 191 def chef_managed_entry_store @chef_managed_entry_store ||= Provisioning.chef_managed_entry_store(new_resource.chef_server) end |
#current_driver ⇒ Object
111 112 113 114 115 |
# File 'lib/chef/provider/machine.rb', line 111 def current_driver if machine_spec.driver_url run_context.chef_provisioning.driver_for(machine_spec.driver_url) end end |
#current_machine_options ⇒ Object
131 132 133 |
# File 'lib/chef/provider/machine.rb', line 131 def (current_driver) end |
#from_image_spec ⇒ Object
117 118 119 120 121 122 123 124 125 |
# File 'lib/chef/provider/machine.rb', line 117 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 ⇒ Object
177 178 179 180 181 182 183 184 185 186 187 188 189 |
# File 'lib/chef/provider/machine.rb', line 177 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) ⇒ Object
135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 |
# File 'lib/chef/provider/machine.rb', line 135 def (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. if new_resource. configs << driver.config[:machine_options] if driver.config[:machine_options] Cheffish::MergedConfig.new(*configs) end |
#new_driver ⇒ Object
107 108 109 |
# File 'lib/chef/provider/machine.rb', line 107 def new_driver run_context.chef_provisioning.driver_for(new_resource.driver) end |
#new_machine_options ⇒ Object
127 128 129 |
# File 'lib/chef/provider/machine.rb', line 127 def (new_driver) end |
#whyrun_supported? ⇒ Boolean
20 21 22 |
# File 'lib/chef/provider/machine.rb', line 20 def whyrun_supported? true end |