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.



85
86
87
# File 'lib/chef/provider/machine.rb', line 85

def machine_spec
  @machine_spec
end

Class Method Details

.upload_files(action_handler, machine, files) ⇒ Object



149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
# File 'lib/chef/provider/machine.rb', line 149

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



9
10
11
# File 'lib/chef/provider/machine.rb', line 9

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

#current_driverObject



91
92
93
94
95
# File 'lib/chef/provider/machine.rb', line 91

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

#current_machine_optionsObject



111
112
113
# File 'lib/chef/provider/machine.rb', line 111

def current_machine_options
  machine_options(current_driver)
end

#from_image_specObject



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

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

#load_current_resourceObject



141
142
143
144
145
146
147
# File 'lib/chef/provider/machine.rb', line 141

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']['metal'] = node_driver.current_json['normal']['metal']
  @machine_spec = ChefMetal::ChefMachineSpec.new(json, new_resource.chef_server)
end

#machine_options(driver) ⇒ Object



115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
# File 'lib/chef/provider/machine.rb', line 115

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



87
88
89
# File 'lib/chef/provider/machine.rb', line 87

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

#new_machine_optionsObject



107
108
109
# File 'lib/chef/provider/machine.rb', line 107

def new_machine_options
  machine_options(new_driver)
end

#whyrun_supported?Boolean

Returns:

  • (Boolean)


15
16
17
# File 'lib/chef/provider/machine.rb', line 15

def whyrun_supported?
  true
end