class Chef::Knife::ClientCreate
Public Instance Methods
client()
click to toggle source
# File lib/chef/knife/client_create.rb, line 53 def client @client_field ||= Chef::ApiClientV1.new end
create_client(client)
click to toggle source
# File lib/chef/knife/client_create.rb, line 61 def create_client(client) # should not be using save :( bad behavior Chef::ApiClientV1.from_hash(client).save end
file()
click to toggle source
# File lib/chef/knife/client_create.rb, line 57 def file config[:file] end
file_is_writable!()
click to toggle source
This method is used to verify that the file and it's containing directory are writable. This ensures that you don't create the client and then lose the private key because you weren't able to write it to disk.
@return [void]
# File lib/chef/knife/client_create.rb, line 114 def file_is_writable! return unless file dir = File.dirname(File.expand_path(file)) unless File.exist?(dir) ui.fatal "Directory #{dir} does not exist. Please create and retry." exit 1 end unless File.directory?(dir) ui.fatal "#{dir} exists, but is not a directory. Please update your file path (--file #{file}) or re-create #{dir} as a directory." exit 1 end unless File.writable?(dir) ui.fatal "Directory #{dir} is not writable. Please check the permissions." exit 1 end if File.exist?(file) && !File.writable?(file) ui.fatal "File #{file} is not writable. Please check the permissions." exit 1 end end
run()
click to toggle source
# File lib/chef/knife/client_create.rb, line 66 def run test_mandatory_field(@name_args[0], "client name") client.name @name_args[0] if config[:public_key] && config[:prevent_keygen] show_usage ui.fatal("You cannot pass --public-key and --prevent-keygen") exit 1 end if !config[:prevent_keygen] && !config[:public_key] client.create_key(true) end if config[:validator] client.validator(true) end if config[:public_key] client.public_key File.read(File.expand_path(config[:public_key])) end file_is_writable! output = edit_hash(client) final_client = create_client(output) ui.info("Created #{final_client}") # output private_key if one if final_client.private_key if config[:file] File.open(config[:file], "w") do |f| f.print(final_client.private_key) end else puts final_client.private_key end end end