require 'chef/provider/lwrp_base' require 'chef_metal/chef_provider_action_handler' require 'chef_metal/machine' class Chef::Provider::MachineFile < Chef::Provider::LWRPBase def action_handler @action_handler ||= ChefMetal::ChefProviderActionHandler.new(self) end use_inline_resources def whyrun_supported? true end def machine @machine ||= begin if new_resource.machine.kind_of?(ChefMetal::Machine) new_resource.machine else run_context.chef_metal.connect_to_machine(new_resource.machine, new_resource.chef_server) end end end action :upload do if new_resource.content machine.write_file(action_handler, new_resource.path, new_resource.content) else machine.upload_file(action_handler, new_resource.local_path, new_resource.path) end attributes = {} attributes[:group] = new_resource.group if new_resource.group attributes[:owner] = new_resource.owner if new_resource.owner attributes[:mode] = new_resource.mode if new_resource.mode machine.set_attributes(action_handler, new_resource.path, attributes) end action :download do machine.download_file(action_handler, new_resource.path, new_resource.local_path) end action :delete do machine.delete_file(action_handler, new_resource.path) end end