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