Class: Awsome::Ec2::Instance
- Inherits:
-
Object
- Object
- Awsome::Ec2::Instance
- Defined in:
- lib/awsome/ec2/instance.rb
Instance Attribute Summary collapse
-
#properties ⇒ Object
readonly
Returns the value of attribute properties.
Instance Method Summary collapse
- #associate_cnames(*cnames) ⇒ Object
- #associate_ips(*elastic_ips) ⇒ Object
- #create_tags(tags) ⇒ Object
- #deregister_from_elbs ⇒ Object
-
#initialize(property_hash) ⇒ Instance
constructor
A new instance of Instance.
- #install_packages(*packages) ⇒ Object
- #packages ⇒ Object
- #reattach_volumes(*volumes) ⇒ Object
- #register_with_elbs(*load_balancer_names) ⇒ Object
- #remove_packages(*packages) ⇒ Object
- #ssh(*args) ⇒ Object
- #terminate ⇒ Object
- #volumes ⇒ Object
- #wait_for_ssh! ⇒ Object
- #wait_until_running! ⇒ Object
Constructor Details
#initialize(property_hash) ⇒ Instance
Returns a new instance of Instance.
6 7 8 9 |
# File 'lib/awsome/ec2/instance.rb', line 6 def initialize(property_hash) raise 'properties must be a hash' unless property_hash.is_a?(Hash) @properties = property_hash.clone end |
Instance Attribute Details
#properties ⇒ Object (readonly)
Returns the value of attribute properties.
4 5 6 |
# File 'lib/awsome/ec2/instance.rb', line 4 def properties @properties end |
Instance Method Details
#associate_cnames(*cnames) ⇒ Object
36 37 38 39 40 41 42 43 |
# File 'lib/awsome/ec2/instance.rb', line 36 def associate_cnames(*cnames) cnames.each do |cname| zone = cname['zone'] cname['names'].each do |name| Awsome::R53.redefine_cname(zone, name, @properties['private_dns_name']) end end end |
#associate_ips(*elastic_ips) ⇒ Object
45 46 47 48 49 |
# File 'lib/awsome/ec2/instance.rb', line 45 def associate_ips(*elastic_ips) elastic_ips.each do |ip| Awsome::Ec2.associate_address(@properties['instance_id'], ip) end end |
#create_tags(tags) ⇒ Object
79 80 81 |
# File 'lib/awsome/ec2/instance.rb', line 79 def () Awsome::Ec2.(@properties['instance_id'], ) end |
#deregister_from_elbs ⇒ Object
59 60 61 |
# File 'lib/awsome/ec2/instance.rb', line 59 def deregister_from_elbs elbs.each { |elb| elb.deregister(@properties['instance_id']) } end |
#install_packages(*packages) ⇒ Object
71 72 73 |
# File 'lib/awsome/ec2/instance.rb', line 71 def install_packages(*packages) Awsome::Debian.install_debian_packages(@properties['public_dns_name'], *packages) end |
#packages ⇒ Object
11 12 13 |
# File 'lib/awsome/ec2/instance.rb', line 11 def packages Awsome::Debian.describe_debian_packages(@properties['public_dns_name']).to_set end |
#reattach_volumes(*volumes) ⇒ Object
51 52 53 54 55 56 57 |
# File 'lib/awsome/ec2/instance.rb', line 51 def reattach_volumes(*volumes) volumes.each do |info| Awsome::Ec2.detach_volume(info['id'], info['dir'], info['preumount']) Awsome.wait_until(interval: 10) { Awsome::Ec2.volume_available?(info['id']) } Awsome::Ec2.attach_volume(info['id'], @properties['instance_id'], info['device']) end end |
#register_with_elbs(*load_balancer_names) ⇒ Object
63 64 65 |
# File 'lib/awsome/ec2/instance.rb', line 63 def register_with_elbs(*load_balancer_names) Awsome::Elb.describe_lbs(*load_balancer_names).each { |elb| elb.register(@properties['instance_id']) } end |
#remove_packages(*packages) ⇒ Object
67 68 69 |
# File 'lib/awsome/ec2/instance.rb', line 67 def remove_packages(*packages) Awsome::Debian.remove_debian_packages(@properties['public_dns_name'], *packages) end |
#ssh(*args) ⇒ Object
32 33 34 |
# File 'lib/awsome/ec2/instance.rb', line 32 def ssh(*args) Awsome::Ssh.ssh(@properties['public_dns_name'], *args) end |
#terminate ⇒ Object
75 76 77 |
# File 'lib/awsome/ec2/instance.rb', line 75 def terminate Awsome::Ec2.terminate_instances(@properties['instance_id']) end |
#volumes ⇒ Object
15 16 17 18 19 |
# File 'lib/awsome/ec2/instance.rb', line 15 def volumes Awsome::Ec2.('attachment.instance-id' => @properties['instance_id']).collect do |p| p['volume_id'] end.to_set end |
#wait_for_ssh! ⇒ Object
28 29 30 |
# File 'lib/awsome/ec2/instance.rb', line 28 def wait_for_ssh! Awsome.wait_until(interval: 10) { has_ssh? } end |
#wait_until_running! ⇒ Object
21 22 23 24 25 26 |
# File 'lib/awsome/ec2/instance.rb', line 21 def wait_until_running! Awsome.wait_until(interval: 10) do reload! @properties['state'] =~ /^running/ end end |