Class: Chef::Knife::ClientCreate
- Inherits:
-
Chef::Knife
- Object
- Chef::Knife
- Chef::Knife::ClientCreate
- Defined in:
- lib/chef/knife/client_create.rb
Constant Summary
Constants inherited from Chef::Knife
CHEF_ORGANIZATION_MANAGEMENT, KNIFE_ROOT, OFFICIAL_PLUGINS, OPSCODE_HOSTED_CHEF_ACCESS_CONTROL, VERSION
Instance Attribute Summary
Attributes inherited from Chef::Knife
Instance Method Summary collapse
- #client ⇒ Object
- #create_client(client) ⇒ Object
- #file ⇒ Object
-
#file_is_writable! ⇒ void
This method is used to verify that the file and it’s containing directory are writable.
- #run ⇒ Object
Methods inherited from Chef::Knife
#api_key, #apply_computed_config, category, chef_config_dir, common_name, #config_file_defaults, #config_file_settings, config_loader, #config_source, #configure_chef, #create_object, #delete_object, dependency_loaders, deps, #format_rest_error, guess_category, #humanize_exception, #humanize_http_exception, inherited, #initialize, list_commands, load_commands, load_config, load_deps, #maybe_setup_fips, #merge_configs, msg, #noauth_rest, #parse_options, reset_config_loader!, reset_subcommands!, #rest, #root_rest, run, #run_with_pretty_exceptions, #server_url, #show_usage, snake_case_name, subcommand_category, subcommand_class_from, subcommand_files, subcommand_loader, subcommands, subcommands_by_category, #test_mandatory_field, ui, unnamed?, use_separate_defaults?, #username
Constructor Details
This class inherits a constructor from Chef::Knife
Instance Method Details
#client ⇒ Object
53 54 55 |
# File 'lib/chef/knife/client_create.rb', line 53 def client @client_field ||= Chef::ApiClientV1.new end |
#create_client(client) ⇒ Object
61 62 63 64 |
# 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 ⇒ Object
57 58 59 |
# File 'lib/chef/knife/client_create.rb', line 57 def file config[:file] end |
#file_is_writable! ⇒ void
This method returns an undefined value.
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.
114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 |
# File 'lib/chef/knife/client_create.rb', line 114 def file_is_writable! return unless file dir = File.dirname(File.(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 ⇒ Object
66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 |
# 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.(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 |