Class: Akashi::Ec2::Instance

Inherits:
Base
  • Object
show all
Defined in:
lib/akashi/ec2/instance.rb

Class Method Summary collapse

Methods inherited from Base

#name, #name=, service_class

Methods inherited from Base

all, base_class, collection, find, find_by, #initialize, object_class, where

Constructor Details

This class inherits a constructor from Akashi::Base

Class Method Details

.create(ami:, instance_class:, security_group:, subnet:) ⇒ Object



9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
# File 'lib/akashi/ec2/instance.rb', line 9

def create(ami:, instance_class:, security_group:, subnet:)
  name = "#{subnet.name}-#{next_number(subnet: subnet)}"

  response = Akashi::Aws.ec2.instances.create(
    image_id:                    ami.id,
    key_name:                    Akashi.name,
    security_group_ids:          [ security_group.id ],
    subnet_id:                   subnet.id,
    instance_type:               instance_class,
    associate_public_ip_address: true,
  )

  new(response.id).tap do |instance|
    instance.name = name
    puts "Created an EC2 Instance (#{instance.id}) on a Subnet (#{subnet.id})."
  end
end

.next_number(subnet:) ⇒ Object



27
28
29
# File 'lib/akashi/ec2/instance.rb', line 27

def next_number(subnet:)
  "%03d" % (where(subnet_id: subnet.id).count + 1)
end