Module: Kontena::Plugin::Aws::Prompts
- Included in:
- Master::CreateCommand, Nodes::CreateCommand, Nodes::RestartCommand, Nodes::TerminateCommand
- Defined in:
- lib/kontena/plugin/aws/prompts.rb
Instance Method Summary collapse
- #ask_aws_access_key ⇒ Object
- #ask_aws_az(access_key, secret_key, region) ⇒ Object
- #ask_aws_instance_type(default = 't2.small') ⇒ Object
- #ask_aws_key_pair(access_key, secret_key, region) ⇒ Object
- #ask_aws_region(access_key, secret_key, default = 'eu-west-1') ⇒ Object
- #ask_aws_secret_key ⇒ Object
- #ask_aws_storage(default = '30') ⇒ Object
- #ask_aws_subnet(access_key, secret_key, region, zone, vpc) ⇒ Object
- #ask_aws_vpc(access_key, secret_key, region) ⇒ Object
- #ask_node ⇒ Object
Instance Method Details
#ask_aws_access_key ⇒ Object
4 5 6 7 8 9 10 |
# File 'lib/kontena/plugin/aws/prompts.rb', line 4 def ask_aws_access_key if self.access_key.nil? prompt.ask('AWS access key: ', echo: false) else self.access_key end end |
#ask_aws_az(access_key, secret_key, region) ⇒ Object
51 52 53 54 55 56 57 58 59 60 61 62 63 64 |
# File 'lib/kontena/plugin/aws/prompts.rb', line 51 def ask_aws_az(access_key, secret_key, region) if self.zone.nil? prompt.select("Choose EC2 Availability Zone: ") do || aws_client = ::Aws::EC2::Client.new(access_key_id: access_key, secret_access_key: secret_key, region: region) aws_client.describe_availability_zones.availability_zones.sort_by{|r| r.zone_name }.each{ |zone| if zone.state == 'available' .choice zone.zone_name, zone.zone_name.sub(zone.region_name, '') end } end else self.zone end end |
#ask_aws_instance_type(default = 't2.small') ⇒ Object
115 116 117 118 119 120 121 |
# File 'lib/kontena/plugin/aws/prompts.rb', line 115 def ask_aws_instance_type(default = 't2.small') if self.type.nil? prompt.ask('Instance type: ', default: default) else self.type end end |
#ask_aws_key_pair(access_key, secret_key, region) ⇒ Object
20 21 22 23 24 25 26 27 28 29 30 31 |
# File 'lib/kontena/plugin/aws/prompts.rb', line 20 def ask_aws_key_pair(access_key, secret_key, region) if self.key_pair.nil? prompt.select("Choose EC2 key pair: ") do || aws_client = ::Aws::EC2::Client.new(access_key_id: access_key, secret_access_key: secret_key, region: region) aws_client.describe_key_pairs.key_pairs.each{ |key_pair| .choice key_pair.key_name, key_pair.key_name } end else self.key_pair end end |
#ask_aws_region(access_key, secret_key, default = 'eu-west-1') ⇒ Object
33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 |
# File 'lib/kontena/plugin/aws/prompts.rb', line 33 def ask_aws_region(access_key, secret_key, default = 'eu-west-1') if self.region.nil? prompt.select("Choose EC2 region: ") do || aws_client = ::Aws::EC2::Client.new(access_key_id: access_key, secret_access_key: secret_key, region: 'eu-west-1') i = 1 aws_client.describe_regions.regions.sort_by{|r| r.region_name }.each{ |region| .choice region.region_name, region.region_name if region.region_name == default .default i end i += 1 } end else self.region end end |
#ask_aws_secret_key ⇒ Object
12 13 14 15 16 17 18 |
# File 'lib/kontena/plugin/aws/prompts.rb', line 12 def ask_aws_secret_key if self.secret_key.nil? prompt.ask('AWS secret key: ', echo: false) else self.secret_key end end |
#ask_aws_storage(default = '30') ⇒ Object
123 124 125 126 127 128 129 |
# File 'lib/kontena/plugin/aws/prompts.rb', line 123 def ask_aws_storage(default = '30') if self.storage.nil? prompt.ask('Storage size (GiB): ', default: default) else self.storage end end |
#ask_aws_subnet(access_key, secret_key, region, zone, vpc) ⇒ Object
89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 |
# File 'lib/kontena/plugin/aws/prompts.rb', line 89 def ask_aws_subnet(access_key, secret_key, region, zone, vpc) if self.subnet_id.nil? aws_client = ::Aws::EC2::Client.new(access_key_id: access_key, secret_access_key: secret_key, region: region) subnets_result = aws_client.describe_subnets(filters: [ { name: "vpc-id", values: [vpc] }, { name: "availability-zone", values: [zone]} ]) subnets = subnets_result.subnets.sort_by{|s| s.cidr_block} return nil if subnets.size == 0 if subnets.size == 1 && subnets.first.state == "available" puts "Using Subnet (#{subnets.first.subnet_id})" subnets.first.subnet_id else prompt.select("Specify subnet to launch instance into: ") do || subnets.each{ |subnet| if subnet.state == 'available' .choice "#{subnet.subnet_id} (#{subnet.cidr_block})", subnet.subnet_id end } end end else self.subnet_id end end |
#ask_aws_vpc(access_key, secret_key, region) ⇒ Object
66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 |
# File 'lib/kontena/plugin/aws/prompts.rb', line 66 def ask_aws_vpc(access_key, secret_key, region) if self.vpc_id.nil? aws_client = ::Aws::EC2::Client.new(access_key_id: access_key, secret_access_key: secret_key, region: region) vpcs = aws_client.describe_vpcs.vpcs return nil if vpcs.size == 0 if vpcs.size == 1 && vpcs.first.state == "available" vpcs.first.vpc_id else prompt.select("Choose Virtual Private Cloud (VPC) ID: ") do || vpcs.each{ |vpc| if vpc.state == 'available' name = vpc.vpc_id name += ' (default)' if vpc.is_default .choice name, vpc.vpc_id end } end end else self.vpc_id end end |
#ask_node ⇒ Object
131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 |
# File 'lib/kontena/plugin/aws/prompts.rb', line 131 def ask_node if self.name.nil? nodes = client.get("grids/#{current_grid}/nodes") nodes = nodes['nodes'].select{ |n| n['labels'] && n['labels'].include?('provider=aws'.freeze) } raise "Did not find any nodes with label provider=aws" if nodes.size == 0 prompt.select("Select node: ") do || nodes.sort_by{|n| n['node_number'] }.reverse.each do |node| initial = node['initial_member'] ? '(initial) ' : '' .choice "#{node['name']} #{initial}", node['name'] end end else self.name end end |