Class: Puppetserver::Ca::Action::List
- Inherits:
-
Object
- Object
- Puppetserver::Ca::Action::List
- Includes:
- Utils
- Defined in:
- lib/puppetserver/ca/action/list.rb
Constant Summary collapse
- SUMMARY =
'List certificates and CSRs'
- BANNER =
<<-BANNER Usage: puppetserver ca list [--help] puppetserver ca list [--config] puppetserver ca list [--all] Description: List outstanding certificate requests. If --all is specified, signed and revoked certificates will be listed as well. Options: BANNER
- BODY =
JSON.dump({desired_state: 'signed'})
Class Method Summary collapse
Instance Method Summary collapse
- #get_all_certs(settings) ⇒ Object
-
#initialize(logger) ⇒ List
constructor
A new instance of List.
- #output_certs(certs) ⇒ Object
- #output_certs_by_state(requested, signed = [], revoked = []) ⇒ Object
- #parse(args) ⇒ Object
- #run(input) ⇒ Object
- #separate_certs(all_certs) ⇒ Object
Constructor Details
#initialize(logger) ⇒ List
Returns a new instance of List.
30 31 32 |
# File 'lib/puppetserver/ca/action/list.rb', line 30 def initialize(logger) @logger = logger end |
Class Method Details
.parser(parsed = {}) ⇒ Object
34 35 36 37 38 39 40 41 42 43 44 45 46 47 |
# File 'lib/puppetserver/ca/action/list.rb', line 34 def self.parser(parsed = {}) OptionParser.new do |opts| opts. = BANNER opts.on('--config CONF', 'Custom path to Puppet\'s config file') do |conf| parsed['config'] = conf end opts.on('--help', 'Display this command specific help output') do |help| parsed['help'] = true end opts.on('--all', 'List all certificates') do |a| parsed['all'] = true end end end |
Instance Method Details
#get_all_certs(settings) ⇒ Object
116 117 118 119 |
# File 'lib/puppetserver/ca/action/list.rb', line 116 def get_all_certs(settings) result = Puppetserver::Ca::CertificateAuthority.new(@logger, settings).get_certificate_statuses JSON.parse(result.body) if result end |
#output_certs(certs) ⇒ Object
91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 |
# File 'lib/puppetserver/ca/action/list.rb', line 91 def output_certs(certs) padded = 0 certs.each do |cert| cert_size = cert["name"].size padded = cert_size if cert_size > padded end certs.each do |cert| # In newer versions of the CA api we return subjcet_alt_names # in addition to dns_alt_names, this field includes DNS alt # names but also IP alt names. alt_names = cert["subject_alt_names"] || cert["dns_alt_names"] @logger.inform " #{cert["name"]}".ljust(padded + 6) + " (SHA256) " + " #{cert["fingerprints"]["SHA256"]}" + (alt_names.empty? ? "" : "\talt names: #{alt_names}") end end |
#output_certs_by_state(requested, signed = [], revoked = []) ⇒ Object
69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 |
# File 'lib/puppetserver/ca/action/list.rb', line 69 def output_certs_by_state(requested, signed = [], revoked = []) if revoked.empty? && signed.empty? && requested.empty? @logger.inform "No certificates to list" return end unless requested.empty? @logger.inform "Requested Certificates:" output_certs(requested) end unless signed.empty? @logger.inform "Signed Certificates:" output_certs(signed) end unless revoked.empty? @logger.inform "Revoked Certificates:" output_certs(revoked) end end |
#parse(args) ⇒ Object
121 122 123 124 125 126 127 128 129 130 131 132 |
# File 'lib/puppetserver/ca/action/list.rb', line 121 def parse(args) results = {} parser = self.class.parser(results) errors = CliParsing.parse_with_errors(parser, args) errors_were_handled = CliParsing.handle_errors(@logger, errors, parser.help) exit_code = errors_were_handled ? 1 : nil return results, exit_code end |
#run(input) ⇒ Object
49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 |
# File 'lib/puppetserver/ca/action/list.rb', line 49 def run(input) config = input['config'] if config errors = FileSystem.validate_file_paths(config) return 1 if CliParsing.handle_errors(@logger, errors) end puppet = Config::Puppet.parse(config) return 1 if CliParsing.handle_errors(@logger, puppet.errors) all_certs = get_all_certs(puppet.settings) return 1 if all_certs.nil? requested, signed, revoked = separate_certs(all_certs) input['all'] ? output_certs_by_state(requested, signed, revoked) : output_certs_by_state(requested) return 0 end |
#separate_certs(all_certs) ⇒ Object
108 109 110 111 112 113 114 |
# File 'lib/puppetserver/ca/action/list.rb', line 108 def separate_certs(all_certs) certs = all_certs.group_by { |v| v["state"]} requested = certs.fetch("requested", []) signed = certs.fetch("signed", []) revoked = certs.fetch("revoked", []) return requested, signed, revoked end |