class KeypairManager

Public Class Methods

chooser(os_compute) click to toggle source
# File lib/danarchy_sys/cli/keypair_manager.rb, line 65
  def self.chooser(os_compute)
    comp_kp = os_compute.keypairs
    keypairs = comp_kp.list_keypairs
    keypair_numhash = Helpers.array_to_numhash(keypairs)
    keypair_name = 'nil'
    keypair = 'nil'

    # Create a new keypairs if none exist
    if keypair_numhash.empty?
      print 'No existing keypairs were found. Should we create a new one? (Y/N): '
      abort('Exiting!') unless gets.chomp =~ /^y(es)?$/i
      keypair = PromptsCreateKeypair.create_keypair(os_compute, 'nil')
      puts "Working with: #{keypair.name}\tStatus: #{keypair.state}"
      return keypair
    end

    puts 'Available keypairs:'
    fields = PrintFormats.printf_hash(keypair_numhash)
    keypair_numhash.each do |k, v|
      printf("#{fields}\n", "#{k}.", v)
    end
    
    # Loop input until an existing keypair is selected
    print 'Enter an keypair to manage or enter a name for a new keypair: '

    until keypairs.include?(keypair_name)
      keypair_name = gets.chomp

      until keypair_name.empty? == false
        print 'Input was blank! Enter an keypair or Id from above: '
        keypair_name = gets.chomp
      end

      abort('Exiting') if keypair_name == 'exit'
      return 'main' if keypair_name == 'main'
      return 'keypair' if keypair_name == 'help'

      # Accept keypair Id as an entry
      if keypair_name =~ /^[0-9]*$/
        until keypair_numhash.keys.include?(keypair_name.to_i)
          print "#{keypair_name} is not a valid Id. Enter an Id from above: "
          keypair_name = gets.chomp
        end

        keypair_name = keypair_numhash[keypair_name.to_i]
      end

      if comp_kp.check_keypair(keypair_name) == false
        print "#{keypair_name} is not a valid keypair.
Should we create a new keypair named #{keypair_name}? (Y/N): "

        if gets.chomp =~ /^y(es)?$/i
          keypair = comp_kp.create_keypair(keypair_name)
          KeypairStatus.single_keypair(keypair)
        else
          puts "Not creating new keypair: #{keypair_name}."
          return false
        end
      end

      keypairs = comp_kp.list_keypairs
    end

    keypair = comp_kp.get_keypair(keypair_name)
    Menus.print_menu('keypair')
    puts "Managing keypair: #{keypair_name}"
    keypair
  end
manager(os_compute) click to toggle source
# File lib/danarchy_sys/cli/keypair_manager.rb, line 5
def self.manager(os_compute)
  comp_kp = os_compute.keypairs
  puts 'Keypair Manager: enter \'help\' to view available commands or \'main\' for the main menu.'
  menu = Menus.numbered_menu('keypair')
  keypair = false

  loop do
    while keypair == false
      keypair = chooser(os_compute)
      return Menus.print_menu('main') if keypair == 'main'

      if keypair == 'keypair'
        Menus.print_menu('keypair')
        keypair = false
      end
    end
    
    print "#{keypair.name} ~: " if keypair
    cmd = gets.chomp

    next if cmd.empty?
    abort('Exiting!') if cmd == 'exit'
    
    if cmd =~ /^[0-9]*$/
      menu[cmd.to_i].map { |k, v| cmd = k } if menu.keys.include? cmd.to_i
    end

    if cmd == 'help'
      Menus.print_menu('keypair')
    elsif cmd == 'main'
      return Menus.print_menu('main')
    elsif cmd == 'info'
      KeypairStatus.single_keypair(keypair)
    elsif cmd == 'chooser'
      keypair = chooser(os_compute)
    elsif cmd == 'create'
      print 'Enter a new keypair name: '
      keypair_name = gets.chomp
      keypair = comp_kp.create_keypair(keypair_name)
      puts "Keypair: #{keypair_name} created!"
      Menus.print_menu('keypair')
      puts "Managing keypair: #{keypair_name}"
    elsif cmd == 'delete'
      print "Are you sure you wish to delete keypair: #{keypair.name}? (this is permanent!) (Y/N): "
      delete = comp_kp.delete_keypair(keypair.name) if gets.chomp =~ /^y(es)?$/i
      if delete == true
        puts "#{keypair.name} has been deleted! Returning to the keypair chooser."
        keypair = chooser(os_compute)
      else
        puts "#{keypair.name} was not deleted!"
      end
    else
      Menus.print_menu('keypair')
      puts "\nCommand \'#{cmd}\' not available. Enter a command from above."
    end

    return Menus.print_menu('main') if keypair == 'main'
  end
end