class Awsom::Instance
Public Class Methods
new(name, vpc_id:, setup_proc: nil)
click to toggle source
# File lib/awsom/instance.rb, line 7 def initialize(name, vpc_id:, setup_proc: nil) @name = name @vpc_id = vpc_id end
Public Instance Methods
created(setup_proc = nil) { || ... }
click to toggle source
# File lib/awsom/instance.rb, line 12 def created(setup_proc = nil, &block) id = find_id return id if id run_params = yield id = create(run_params) instance = Aws::EC2::Instance.new(id) puts "(#{@name}) waiting for instance to start" instance.wait_until_running setup_proc.call(instance) if setup_proc end
Private Instance Methods
create(run_params)
click to toggle source
# File lib/awsom/instance.rb, line 46 def create(run_params) result = Ec2.run_instances(run_params) result.instances[0].instance_id rescue Aws::Errors::ServiceError, ArgumentError raise Error, "while creating instance #{@name}" end
find_id()
click to toggle source
# File lib/awsom/instance.rb, line 25 def find_id filters = [ { name: "vpc-id", values: [@vpc_id] }, { name: "tag:Name", values: [@name] } ] result = Ec2.describe_instances(filters: filters) instances = [] result.reservations.each do |r| r.instances.each { |i| instances << i } end num_results = instances.size raise Error, "mulitple instances found with name #{@name}" if num_results > 1 if num_results == 1 instances.first.instance_id else false end end