class EC2::Ec2

Attributes

config[R]
ec2_instances[R]
gateway[R]
key_pair[R]
security_group[R]

Public Class Methods

new(vpc=nil) click to toggle source
# File lib/etude_for_aws/ec2/ec2.rb, line 5
def initialize(vpc=nil)
  @config = Configuration.new
  @gateway = Ec2ApiGateway.new
  setup_config(vpc) unless vpc.nil?
end

Public Instance Methods

create() click to toggle source
# File lib/etude_for_aws/ec2/ec2.rb, line 11
def create

  create_security_group

  create_key_pair

  create_ec2_instance

end
destroy() click to toggle source
# File lib/etude_for_aws/ec2/ec2.rb, line 21
def destroy

  terminate_ec2_instance

  delete_security_group

  delete_key_pair

end
reboot() click to toggle source
# File lib/etude_for_aws/ec2/ec2.rb, line 43
def reboot
  @ec2_instances.each do |ec2_instance|
    ec2_instance.reboot
  end
end
start() click to toggle source
# File lib/etude_for_aws/ec2/ec2.rb, line 31
def start
  @ec2_instances.each do |ec2_instance|
    ec2_instance.start
  end
end
stop() click to toggle source
# File lib/etude_for_aws/ec2/ec2.rb, line 37
def stop
  @ec2_instances.each do |ec2_instance|
    ec2_instance.stop
  end
end

Private Instance Methods

create_ec2_instance() click to toggle source
# File lib/etude_for_aws/ec2/ec2.rb, line 86
def create_ec2_instance
  private_i = 0
  public_i = 0
  @subnet_infos.each do |info|
    @config.subnet_id = info[:subnet_id]
    @config.az = info[:az]
    if info[:network] == 'Private'
      @config.instance_tags = @config.instance_tags_private[private_i]
      private_i += private_i
    else
      @config.instance_tags = @config.instance_tags_public[public_i]
      public_i += public_i
    end
    ec2_instance = Ec2Instance.new(self)
    ec2_instance.create(@security_group,@key_pair)
    @ec2_instances << ec2_instance
  end
end
create_key_pair() click to toggle source
# File lib/etude_for_aws/ec2/ec2.rb, line 82
def create_key_pair
  @key_pair.create
end
create_security_group() click to toggle source
# File lib/etude_for_aws/ec2/ec2.rb, line 78
def create_security_group
  @security_group.create
end
delete_key_pair() click to toggle source
# File lib/etude_for_aws/ec2/ec2.rb, line 115
def delete_key_pair
  @key_pair.delete
  @key_pair = nil
end
delete_security_group() click to toggle source
# File lib/etude_for_aws/ec2/ec2.rb, line 111
def delete_security_group
  @security_group = nil if @security_group.delete.nil?
end
setup_config(vpc) click to toggle source
# File lib/etude_for_aws/ec2/ec2.rb, line 50
def setup_config(vpc)
  @config.vpc_id = vpc.get_vpc_id
  @subnet_infos = vpc.get_subnet_infos
  @security_group = SecurityGroup.new(self)
  @key_pair = KeyPair.new(self)

  @ec2_instances = []
  @config.instance_tags_public.each do |tag|
    @config.instance_tags = tag
    values = [@config.instance_tags[0][:value]]
    instance_ids = @gateway.get_instance_collection(values)
    instance_ids.each do |instance_id|
      ec2_instance = Ec2Instance.new(self, instance_id)
      @ec2_instances << ec2_instance
    end
  end

  @config.instance_tags_private.each do |tag|
    @config.instance_tags = tag
    values = [@config.instance_tags[0][:value]]
    instance_ids = @gateway.get_instance_collection(values)
    instance_ids.each do |instance_id|
      ec2_instance = Ec2Instance.new(self, instance_id)
      @ec2_instances << ec2_instance
    end
  end
end
terminate_ec2_instance() click to toggle source
# File lib/etude_for_aws/ec2/ec2.rb, line 105
def terminate_ec2_instance
  @ec2_instances.each do |ec2_instance|
    ec2_instance.terminate
  end
end