class Chef::Knife::KeyEdit
Service class for UserKeyEdit
and ClientKeyEdit
, Implements common functionality of knife [user | org client] key edit.
@author Tyler Cloke
@attr_accessor [Hash] cli input, see UserKeyEdit
and ClientKeyEdit
for what could populate it
Attributes
config[RW]
Public Class Methods
new(original_name, actor, actor_field_name, ui, config)
click to toggle source
# File lib/chef/knife/key_edit.rb, line 35 def initialize(original_name, actor, actor_field_name, ui, config) @original_name = original_name @actor = actor @actor_field_name = actor_field_name @ui = ui @config = config end
Public Instance Methods
display_info(input)
click to toggle source
# File lib/chef/knife/key_edit.rb, line 60 def display_info(input) @ui.info(input) end
display_private_key(private_key)
click to toggle source
# File lib/chef/knife/key_edit.rb, line 64 def display_private_key(private_key) @ui.msg(private_key) end
edit_data(key)
click to toggle source
# File lib/chef/knife/key_edit.rb, line 52 def edit_data(key) @ui.edit_data(key) end
edit_hash(key)
click to toggle source
# File lib/chef/knife/key_edit.rb, line 56 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_edit.rb, line 68 def output_private_key_to_file(private_key) File.open(@config[:file], "w") do |f| f.print(private_key) end end
public_key_and_create_key_error_msg()
click to toggle source
# File lib/chef/knife/key_edit.rb, line 43 def public_key_and_create_key_error_msg <<~EOS You passed both --public-key and --create-key. Only pass one, or the other, or neither. Do not pass either if you do not want to change the public_key field of your key. Pass --public-key if you want to update the public_key field of your key from a specific public key. Pass --create-key if you want the server to generate a new key and use that to update the public_key field of your key. EOS end
run()
click to toggle source
# File lib/chef/knife/key_edit.rb, line 78 def run key = Chef::Key.new(@actor, @actor_field_name) if @config[:public_key] && @config[:create_key] raise Chef::Exceptions::KeyCommandInputError, public_key_and_create_key_error_msg end if @config[:create_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]) else key.name(@original_name) end if @config[:expiration_date] key.expiration_date(@config[:expiration_date]) end output = edit_hash(key) key = update_key_from_hash(output) to_display = "Updated key: #{key.name}" to_display << " (formally #{@original_name})" if key.name != @original_name display_info(to_display) 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
update_key_from_hash(output)
click to toggle source
# File lib/chef/knife/key_edit.rb, line 74 def update_key_from_hash(output) Chef::Key.from_hash(output).update(@original_name) end