Class: Chef::Provider::Machine

Inherits:
LWRPBase
  • Object
show all
Defined in:
lib/chef/provider/machine.rb

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Instance Attribute Details

#machine_specObject (readonly)

Returns the value of attribute machine_spec


95
96
97
# File 'lib/chef/provider/machine.rb', line 95

def machine_spec
  @machine_spec
end

Class Method Details

.upload_files(action_handler, machine, files) ⇒ Object


160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
# File 'lib/chef/provider/machine.rb', line 160

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_handlerObject


11
12
13
# File 'lib/chef/provider/machine.rb', line 11

def action_handler
  @action_handler ||= Chef::Provisioning::ChefProviderActionHandler.new(self)
end

#current_driverObject


101
102
103
104
105
# File 'lib/chef/provider/machine.rb', line 101

def current_driver
  if machine_spec.driver_url
    run_context.chef_provisioning.driver_for(machine_spec.driver_url)
  end
end

#current_machine_optionsObject


121
122
123
# File 'lib/chef/provider/machine.rb', line 121

def current_machine_options
  machine_options(current_driver)
end

#from_image_specObject


107
108
109
110
111
112
113
114
115
# File 'lib/chef/provider/machine.rb', line 107

def from_image_spec
  @from_image_spec ||= begin
    if new_resource.from_image
      Chef::Provisioning::ChefImageSpec.get(new_resource.from_image, new_resource.chef_server)
    else
      nil
    end
  end
end

#load_current_resourceObject


152
153
154
155
156
157
158
# File 'lib/chef/provider/machine.rb', line 152

def load_current_resource
  node_driver = Chef::Provider::ChefNode.new(new_resource, run_context)
  node_driver.load_current_resource
  json = node_driver.new_json
  json['normal']['chef_provisioning'] = node_driver.current_json['normal']['chef_provisioning']
  @machine_spec = Chef::Provisioning::ChefMachineSpec.new(json, new_resource.chef_server)
end

#machine_options(driver) ⇒ Object


125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
# File 'lib/chef/provider/machine.rb', line 125

def machine_options(driver)
  configs = []

  if from_image_spec && from_image_spec.machine_options
    configs << from_image_spec.machine_options
  end

  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
      ].inject({}) do |result, key|
        result[key] = new_resource.send(key)
        result
      end
  }

  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_driverObject


97
98
99
# File 'lib/chef/provider/machine.rb', line 97

def new_driver
  run_context.chef_provisioning.driver_for(new_resource.driver)
end

#new_machine_optionsObject


117
118
119
# File 'lib/chef/provider/machine.rb', line 117

def new_machine_options
  machine_options(new_driver)
end

#whyrun_supported?Boolean

Returns:

  • (Boolean)

17
18
19
# File 'lib/chef/provider/machine.rb', line 17

def whyrun_supported?
  true
end