class Chef::Knife::KeyCreate
Service class for UserKeyCreate and ClientKeyCreate, Implements common functionality of knife [user | org client] key create.
@author Tyler Cloke
@attr_accessor [Hash] cli input, see UserKeyCreate and ClientKeyCreate for what could populate it
Attributes
config[RW]
Public Class Methods
new(actor, actor_field_name, ui, config)
click to toggle source
# File lib/chef/knife/key_create.rb, line 35 def initialize(actor, actor_field_name, ui, config) @actor = actor @actor_field_name = actor_field_name @ui = ui @config = config end
Public Instance Methods
create_key_from_hash(output)
click to toggle source
# File lib/chef/knife/key_create.rb, line 72 def create_key_from_hash(output) Chef::Key.from_hash(output).create end
display_info(input)
click to toggle source
# File lib/chef/knife/key_create.rb, line 58 def display_info(input) @ui.info(input) end
display_private_key(private_key)
click to toggle source
# File lib/chef/knife/key_create.rb, line 62 def display_private_key(private_key) @ui.msg(private_key) end
edit_data(key)
click to toggle source
# File lib/chef/knife/key_create.rb, line 50 def edit_data(key) @ui.edit_data(key) end
edit_hash(key)
click to toggle source
# File lib/chef/knife/key_create.rb, line 54 def edit_hash(key) @ui.edit_hash(key) end
output_private_key_to_file(private_key)
click to toggle source
# File lib/chef/knife/key_create.rb, line 66 def output_private_key_to_file(private_key) File.open(@config[:file], "w") do |f| f.print(private_key) end end
public_key_or_key_name_error_msg()
click to toggle source
# File lib/chef/knife/key_create.rb, line 42 def public_key_or_key_name_error_msg <<EOS You must pass either --public-key or --key-name, or both. If you only pass --public-key, a key name will be generated from the fingerprint of your key. If you only pass --key-name, a key pair will be generated by the server. EOS end
run()
click to toggle source
# File lib/chef/knife/key_create.rb, line 76 def run key = Chef::Key.new(@actor, @actor_field_name) if !@config[:public_key] && !@config[:key_name] raise Chef::Exceptions::KeyCommandInputError, public_key_or_key_name_error_msg elsif !@config[:public_key] key.create_key(true) end if @config[:public_key] key.public_key(File.read(File.expand_path(@config[:public_key]))) end if @config[:key_name] key.name(@config[:key_name]) end if @config[:expiration_date] key.expiration_date(@config[:expiration_date]) else key.expiration_date("infinity") end output = edit_hash(key) key = create_key_from_hash(output) display_info("Created key: #{key.name}") if key.private_key if @config[:file] output_private_key_to_file(key.private_key) else display_private_key(key.private_key) end end end