Class: Chef::Knife::KeyEdit
- Inherits:
-
Object
- Object
- Chef::Knife::KeyEdit
- Defined in:
- lib/chef/knife/key_edit.rb
Overview
Service class for UserKeyEdit and ClientKeyEdit, Implements common functionality of knife [user | org client] key edit.
Instance Attribute Summary collapse
-
#config ⇒ Object
Returns the value of attribute config.
Instance Method Summary collapse
- #display_info(input) ⇒ Object
- #display_private_key(private_key) ⇒ Object
- #edit_data(key) ⇒ Object
- #edit_hash(key) ⇒ Object
-
#initialize(original_name, actor, actor_field_name, ui, config) ⇒ KeyEdit
constructor
A new instance of KeyEdit.
- #output_private_key_to_file(private_key) ⇒ Object
- #public_key_and_create_key_error_msg ⇒ Object
- #run ⇒ Object
- #update_key_from_hash(output) ⇒ Object
Constructor Details
#initialize(original_name, actor, actor_field_name, ui, config) ⇒ KeyEdit
Returns a new instance of KeyEdit.
35 36 37 38 39 40 41 |
# 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 |
Instance Attribute Details
#config ⇒ Object
Returns the value of attribute config.
33 34 35 |
# File 'lib/chef/knife/key_edit.rb', line 33 def config @config end |
Instance Method Details
#display_info(input) ⇒ Object
60 61 62 |
# File 'lib/chef/knife/key_edit.rb', line 60 def display_info(input) @ui.info(input) end |
#display_private_key(private_key) ⇒ Object
64 65 66 |
# File 'lib/chef/knife/key_edit.rb', line 64 def display_private_key(private_key) @ui.msg(private_key) end |
#edit_data(key) ⇒ Object
52 53 54 |
# File 'lib/chef/knife/key_edit.rb', line 52 def edit_data(key) @ui.edit_data(key) end |
#edit_hash(key) ⇒ Object
56 57 58 |
# 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) ⇒ Object
68 69 70 71 72 |
# 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 ⇒ Object
43 44 45 46 47 48 49 50 |
# 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 ⇒ Object
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 105 106 107 108 109 110 111 112 113 114 115 |
# 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.(@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) ⇒ Object
74 75 76 |
# File 'lib/chef/knife/key_edit.rb', line 74 def update_key_from_hash(output) Chef::Key.from_hash(output).update(@original_name) end |