class ClusterSecretAdapter

Constants

CCLI_FLAG_LABEL

Public Instance Methods

fetch_all_secrets() click to toggle source
# File lib/adapters/cluster_secret_adapter.rb, line 23
def fetch_all_secrets
  raise client_missing_error unless client_installed?
  raise client_not_logged_in_error unless client_logged_in?

  secrets, _err = cmd.run("#{client} get secret -o yaml -l #{CCLI_FLAG_LABEL}=true")
  Psych.load(secrets)['items'].map do |secret|
    secret.to_yaml
  end
end
fetch_secret(name) click to toggle source
# File lib/adapters/cluster_secret_adapter.rb, line 9
def fetch_secret(name)
  raise client_missing_error unless client_installed?
  raise client_not_logged_in_error unless client_logged_in?

  begin
    out, _err = cmd.run("#{client} get -o yaml secret --field-selector='metadata.name=#{name}' " \
                        "-l #{CCLI_FLAG_LABEL}=true")

    Psych.load(out)['items'].first.to_yaml
  rescue TTY::Command::ExitError
    raise OpenshiftSecretNotFoundError
  end
end
insert_secret(secret) click to toggle source
# File lib/adapters/cluster_secret_adapter.rb, line 33
def insert_secret(secret)
  raise client_missing_error unless client_installed?
  raise client_not_logged_in_error unless client_logged_in?

  File.open("/tmp/#{secret.name}.yml", 'w') do |file|
    file.write secret.to_yaml
  end

  cmd.run("#{client} delete -f /tmp/#{secret.name}.yml --ignore-not-found=true")
  cmd.run("#{client} create -f /tmp/#{secret.name}.yml")
end

Private Instance Methods

client() click to toggle source
# File lib/adapters/cluster_secret_adapter.rb, line 59
def client
  raise 'implement in subclass'
end
client_installed?() click to toggle source
# File lib/adapters/cluster_secret_adapter.rb, line 47
def client_installed?
  cmd.run!("which #{client}").success?
end
client_logged_in?() click to toggle source
# File lib/adapters/cluster_secret_adapter.rb, line 51
def client_logged_in?
  cmd.run!("#{client} get secret").success?
end
client_missing_error() click to toggle source
# File lib/adapters/cluster_secret_adapter.rb, line 63
def client_missing_error
  raise 'implement in subclass'
end
client_not_logged_in_error() click to toggle source
# File lib/adapters/cluster_secret_adapter.rb, line 67
def client_not_logged_in_error
  raise 'implement in subclass'
end
cmd() click to toggle source
# File lib/adapters/cluster_secret_adapter.rb, line 55
def cmd
  @cmd ||= TTY::Command.new(printer: :null)
end