class Cyoi::Cli::KeyPair

Attributes

key_pair_name[R]

Public Class Methods

key_pair_cli(name) click to toggle source
# File lib/cyoi/cli/key_pair.rb, line 58
def self.key_pair_cli(name)
  @key_pair_clis[name]
end
new(argv, stdin=STDIN, stdout=STDOUT, stderr=STDERR, kernel=Kernel) click to toggle source
# File lib/cyoi/cli/key_pair.rb, line 9
def initialize(argv, stdin=STDIN, stdout=STDOUT, stderr=STDERR, kernel=Kernel)
  @argv, @stdin, @stdout, @stderr, @kernel = argv, stdin, stdout, stderr, kernel
  unless @key_pair_name = @argv.shift
    raise "Please provide key pair name as first argument"
  end
  @settings_dir = @argv.shift || "/tmp/provider_settings"
  @settings_dir = File.expand_path(@settings_dir)
end
register_key_pair_cli(name, klass) click to toggle source
# File lib/cyoi/cli/key_pair.rb, line 53
def self.register_key_pair_cli(name, klass)
  @key_pair_clis ||= {}
  @key_pair_clis[name] = klass
end

Public Instance Methods

execute!() click to toggle source

TODO run Cyoi::Cli::Provider first if settings.provider.name missing

# File lib/cyoi/cli/key_pair.rb, line 19
def execute!
  unless settings.exists?("provider.name")
    $stderr.puts("Please run 'cyoi provider' first")
    exit 1
  end
  unless valid?
    settings["key_pair"] = key_pair_cli.perform_and_return_attributes
  end
  save_settings!
  key_pair_cli.display_confirmation
end
key_pair_cli() click to toggle source

Continue the interactive session with the user specific to the key_pair/infrastructure they have chosen.

The returned object is a class from cyoi/cli/key_pairs/provier_cli_NAME.rb The class loads itself into ‘@key_pair_clis` via `register_key_pair_cli`

Returns nil if settings.key_pair.name not set

# File lib/cyoi/cli/key_pair.rb, line 39
def key_pair_cli
  @key_pair_cli ||= begin
    provider_name = settings.exists?("provider.name")
    return nil unless provider_name
    require "cyoi/cli/provider_key_pair/key_pair_#{settings.provider.name}"

    settings["key_pair"] ||= {}
    settings.key_pair["name"] = key_pair_name

    klass = self.class.key_pair_cli(settings.provider.name)
    klass.new(provider_client, settings.key_pair, hl)
  end
end

Protected Instance Methods

valid?() click to toggle source
# File lib/cyoi/cli/key_pair.rb, line 63
def valid?
  key_pair_cli && key_pair_cli.valid?
end