Class: Chef::Knife::KeyList

Inherits:
Object
  • Object
show all
Defined in:
lib/chef/knife/key_list.rb

Overview

Service class for UserKeyList and ClientKeyList, used to list keys. Implements common functionality of knife [user | org client] key list.

Author:

  • Tyler Cloke

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(actor, list_method, ui, config) ⇒ KeyList

Returns a new instance of KeyList.



35
36
37
38
39
40
# File 'lib/chef/knife/key_list.rb', line 35

def initialize(actor, list_method, ui, config)
  @actor = actor
  @list_method = list_method
  @ui = ui
  @config = config
end

Instance Attribute Details

#configObject

Returns the value of attribute config.



33
34
35
# File 'lib/chef/knife/key_list.rb', line 33

def config
  @config
end

Instance Method Details

#colorize(string) ⇒ Object



53
54
55
# File 'lib/chef/knife/key_list.rb', line 53

def colorize(string)
  @ui.color(string, :cyan)
end

#display_info(string) ⇒ Object



49
50
51
# File 'lib/chef/knife/key_list.rb', line 49

def display_info(string)
  @ui.output(string)
end

#expired_and_non_expired_msgObject



42
43
44
45
46
47
# File 'lib/chef/knife/key_list.rb', line 42

def expired_and_non_expired_msg
  <<~EOS
    You cannot pass both --only-expired and --only-non-expired.
    Please pass one or none.
  EOS
end

#runObject



57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
# File 'lib/chef/knife/key_list.rb', line 57

def run
  if @config[:only_expired] && @config[:only_non_expired]
    raise Chef::Exceptions::KeyCommandInputError, expired_and_non_expired_msg
  end

  # call proper list function
  keys = Chef::Key.send(@list_method, @actor)
  if @config[:with_details]
    max_length = 0
    keys.each do |key|
      key["name"] = key["name"] + ":"
      max_length = key["name"].length if key["name"].length > max_length
    end
    keys.each do |key|
      next if !key["expired"] && @config[:only_expired]
      next if key["expired"] && @config[:only_non_expired]

      display = "#{colorize(key["name"].ljust(max_length))} #{key["uri"]}"
      display = "#{display} (expired)" if key["expired"]
      display_info(display)
    end
  else
    keys.each do |key|
      next if !key["expired"] && @config[:only_expired]
      next if key["expired"] && @config[:only_non_expired]

      display_info(key["name"])
    end
  end
end