class Kontena::Cli::Certificate::ImportCommand

Public Instance Methods

certificate_subject(cert) click to toggle source
# File lib/kontena/cli/certificate/import_command.rb, line 38
def certificate_subject(cert)
  cert.subject.to_a.each do |name, data|
    return data if name == 'CN'
  end

  exit_with_error "No CN in certificate subject: #{cert.subject}"
end
execute() click to toggle source
# File lib/kontena/cli/certificate/import_command.rb, line 46
def execute
  cert = load_certificate
  subject = self.subject || self.certificate_subject(cert)

  certificate = spinner "Importing certificate from #{cert_file.path}..." do
    client.put("certificates/#{current_grid}/#{subject}",
      certificate: cert.to_pem,
      private_key: self.key_file.read(),
      chain: chain_file_list.map{|chain_file| chain_file.read() },
    )
  end

  show_certificate(certificate)
end
load_certificate() click to toggle source
# File lib/kontena/cli/certificate/import_command.rb, line 32
def load_certificate
  OpenSSL::X509::Certificate.new(self.cert_file)
rescue OpenSSL::OpenSSLError => exc
  exit_with_error "Invalid certificate at #{self.cert_file.path}: #{exc.class}: #{exc.message}"
end
open_file(path) click to toggle source

@raise [ArgumentError]

# File lib/kontena/cli/certificate/import_command.rb, line 11
def open_file(path)
  File.open(path)
rescue Errno::ENOENT
  raise ArgumentError, "File not found: #{path}"
end