Class: CloudManager::Configuration::Service::EC2
- Inherits:
-
AbstractService
- Object
- AbstractService
- CloudManager::Configuration::Service::EC2
- Defined in:
- lib/cloud_manager/configuration/service/ec2.rb
Overview
Service class, that handles Amazon EC2 services configuration.
Instance Attribute Summary collapse
-
#client ⇒ Aws::EC2::Client
readonly
The AWS EC2 client – docs.aws.amazon.com/sdkforruby/api/Aws/EC2/Client.html.
-
#config ⇒ Hash
readonly
The service configuration.
-
#default_region ⇒ String
The default region.
-
#machines ⇒ Hash
readonly
The machine objects.
-
#resource ⇒ Aws::EC2::Resource
readonly
The AWS EC2 resource, created for the client – docs.aws.amazon.com/sdkforruby/api/Aws/EC2/Resource.html.
Attributes inherited from AbstractService
Instance Method Summary collapse
-
#dns_names_of(machine_alias) ⇒ Array<String>
Returns the DNS name list for the given machine.
-
#initialize(config, default_region, base_configuration) ⇒ EC2
constructor
Returns a new instance of EC2 service.
-
#instance_ids ⇒ Array<String>
private
Returns the AWS EC2 instance id list for all machines.
-
#ips_of(machine_alias) ⇒ Array<String>
Returns the IP list for the given machine.
-
#manage ⇒ void
Starts the configured AWS services.
Constructor Details
#initialize(config, default_region, base_configuration) ⇒ EC2
Returns a new instance of EC2 service.
Initializes the configured machines, the AWS EC2 client and resource.
38 39 40 41 42 43 44 45 46 47 48 49 50 |
# File 'lib/cloud_manager/configuration/service/ec2.rb', line 38 def initialize(config, default_region, base_configuration) super(base_configuration) @default_region = default_region @config = config @client = @default_region ? Aws::EC2::Client.new(region: @default_region) : Aws::EC2::Client.new @resource = Aws::EC2::Resource.new(client: @client) @machines = {} @config.each do |machine_alias, machine_config| @machines[machine_alias] = EC2Machine.new(machine_alias, machine_config, self) end end |
Instance Attribute Details
#client ⇒ Aws::EC2::Client (readonly)
Returns the AWS EC2 client – docs.aws.amazon.com/sdkforruby/api/Aws/EC2/Client.html.
21 22 23 |
# File 'lib/cloud_manager/configuration/service/ec2.rb', line 21 def client @client end |
#config ⇒ Hash (readonly)
Returns the service configuration.
15 16 17 |
# File 'lib/cloud_manager/configuration/service/ec2.rb', line 15 def config @config end |
#default_region ⇒ String
Returns the default region.
27 28 29 |
# File 'lib/cloud_manager/configuration/service/ec2.rb', line 27 def default_region @default_region end |
#machines ⇒ Hash (readonly)
Returns the machine objects.
18 19 20 |
# File 'lib/cloud_manager/configuration/service/ec2.rb', line 18 def machines @machines end |
#resource ⇒ Aws::EC2::Resource (readonly)
Returns the AWS EC2 resource, created for the client – docs.aws.amazon.com/sdkforruby/api/Aws/EC2/Resource.html.
24 25 26 |
# File 'lib/cloud_manager/configuration/service/ec2.rb', line 24 def resource @resource end |
Instance Method Details
#dns_names_of(machine_alias) ⇒ Array<String>
Returns the DNS name list for the given machine.
86 87 88 89 90 91 92 93 94 |
# File 'lib/cloud_manager/configuration/service/ec2.rb', line 86 def dns_names_of(machine_alias) dns_names = [] if @machines.has_key?(machine_alias) dns_names.concat(@machines[machine_alias].dns_names) end dns_names end |
#instance_ids ⇒ Array<String> (private)
Returns the AWS EC2 instance id list for all machines
101 102 103 104 105 106 107 108 109 110 111 |
# File 'lib/cloud_manager/configuration/service/ec2.rb', line 101 def instance_ids ids = [] @machines.each do |_machine_alias, machine| machine.instances.each do |machine_instance| ids.push(machine_instance.id) end end ids end |
#ips_of(machine_alias) ⇒ Array<String>
Returns the IP list for the given machine.
72 73 74 75 76 77 78 79 80 |
# File 'lib/cloud_manager/configuration/service/ec2.rb', line 72 def ips_of(machine_alias) ips = [] if @machines.has_key?(machine_alias) ips.concat(@machines[machine_alias].ips) end ips end |
#manage ⇒ void
This method returns an undefined value.
Starts the configured AWS services.
55 56 57 58 59 60 61 62 63 64 65 66 |
# File 'lib/cloud_manager/configuration/service/ec2.rb', line 55 def manage # start every machine @machines.each do |machine_alias, machine| puts ' - managing machine ' + machine_alias machine.start end # wait until all machines are running print ' - waiting all machines to start... ' @client.wait_until(:instance_running, {instance_ids: instance_ids}) puts 'OK' end |