class Aws::SSM::Console::Options

Attributes

command[R]
instance_ids[R]

Public Class Methods

new(argv) click to toggle source
# File lib/aws/ssm/console/options.rb, line 10
def initialize(argv)
  @instance_ids = []
  @command = nil

  parser.parse!(argv)
  validate!
end

Private Instance Methods

collect_instance_ids_by_tag(tag) click to toggle source
# File lib/aws/ssm/console/options.rb, line 32
def collect_instance_ids_by_tag(tag)
  name, value = tag.split(':', 2)
  filters = [{ name: "tag:#{name}", values: [value] }]
  Aws::EC2::Client.new.describe_instances(filters: filters).reservations.each_with_object([]) do |reservation, res|
    reservation.instances.each { |instance| res << instance.instance_id }
  end
end
parser() click to toggle source
# File lib/aws/ssm/console/options.rb, line 20
def parser
  @parser = OptionParser.new do |opt|
    opt.on('--instance-ids id,id,...', Array) { |v| @instance_ids += v }
    opt.on('-c command', String) { |v| @command = v }
    opt.on('--tag Name:Value', String) { |v| @instance_ids += collect_instance_ids_by_tag(v) }
  end
end
validate!() click to toggle source
# File lib/aws/ssm/console/options.rb, line 28
def validate!
  raise ArgumentError, 'EC2 instance IDs required.' if instance_ids.empty?
end