Class: Ec2::Control::Query
- Inherits:
-
Object
- Object
- Ec2::Control::Query
- Defined in:
- lib/ec2/control/query.rb
Instance Method Summary collapse
- #__init_availability_zones(reload = false) ⇒ Object
- #__init_elastic_ips(reload = false) ⇒ Object
- #__init_running_and_pending(reload = false) ⇒ Object
- #__init_security_groups(reload = false) ⇒ Object
- #__init_volumes(reload = false) ⇒ Object
- #availability_zone_available?(name) ⇒ Boolean
- #elastic_ip_associated?(ip) ⇒ Boolean
- #elastic_ip_associated_instance_id(ip) ⇒ Object
- #elastic_ip_available?(ip) ⇒ Boolean
- #init ⇒ Object
-
#initialize(ec2) ⇒ Query
constructor
A new instance of Query.
- #instance_id_by_instance_name(name) ⇒ Object
- #instance_name_by_instance_id(instance_id) ⇒ Object
- #instance_pending_by_name?(value) ⇒ Boolean
- #instance_pending_count ⇒ Object
- #instance_pending_names ⇒ Object
- #instance_running_by_name?(value) ⇒ Boolean
- #instance_running_count ⇒ Object
- #instance_running_names ⇒ Object
- #instances_running_except_names(names) ⇒ Object
- #security_group_exist?(name) ⇒ Boolean
- #volume_available?(volume_id) ⇒ Boolean
- #volume_mounted?(volume_id) ⇒ Boolean
- #volume_mounted_instance_id(volume_id) ⇒ Object
Constructor Details
#initialize(ec2) ⇒ Query
Returns a new instance of Query.
6 7 8 9 |
# File 'lib/ec2/control/query.rb', line 6 def initialize(ec2) @ec2 = ec2 self.init end |
Instance Method Details
#__init_availability_zones(reload = false) ⇒ Object
100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 |
# File 'lib/ec2/control/query.rb', line 100 def __init_availability_zones(reload=false) if @available_zones.nil? || reload available_zones = [] availability_zone_info = @ec2.describe_availability_zones.availabilityZoneInfo if availability_zone_info && !(z_item = availability_zone_info.item).empty? z_item.each do |zone| available_zones << {:region => zone.regionName, :name => zone.zoneName, :status => zone.zoneState} end end @available_zones = available_zones end @available_zones end |
#__init_elastic_ips(reload = false) ⇒ Object
118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 |
# File 'lib/ec2/control/query.rb', line 118 def __init_elastic_ips(reload=false) if @elastic_ips.nil? || reload ips = [] addressesSet = @ec2.describe_addresses.addressesSet if addressesSet && !(a_item = addressesSet.item).empty? a_item.each do |adr| ips << {:instance_id => adr.instanceId, :ip => adr.publicIp} end end @elastic_ips = ips end @elastic_ips end |
#__init_running_and_pending(reload = false) ⇒ Object
168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 |
# File 'lib/ec2/control/query.rb', line 168 def __init_running_and_pending(reload=false) if @instances.nil? || reload @instances = [] reservationSet = @ec2.describe_instances.reservationSet if reservationSet && !(r_item = reservationSet.item).empty? r_item.each do |reservation| reservation.groupSet.item.each do |grp| if grp.groupId =~ /^ec2_control_/ grp_name = grp.groupId.gsub(/ec2_control_/, '') instancesSet = reservation.instancesSet if instancesSet && !(i_item = instancesSet.item).empty? raise "this version of ec2-control cannot handle more than one instance per reservation" if i_item.length > 1 instance = i_item.first instance_id = instance.instanceId @instances << {:name => grp_name, :id => instance_id, :status => instance.instanceState.name} end end end end end end @instances end |
#__init_security_groups(reload = false) ⇒ Object
90 91 92 93 94 95 96 97 98 |
# File 'lib/ec2/control/query.rb', line 90 def __init_security_groups(reload=false) if @security_groups.nil? || reload @security_groups = @ec2.describe_security_groups.securityGroupInfo.item.collect{ |security_group| security_group.groupName } end @security_groups end |
#__init_volumes(reload = false) ⇒ Object
136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 |
# File 'lib/ec2/control/query.rb', line 136 def __init_volumes(reload=false) if @volumes.nil? || reload volumes = [] volumeSet = @ec2.describe_volumes.volumeSet if volumeSet && !(v_item = volumeSet.item).empty? v_item.each do |volume| volume_id = volume.volumeId availability_zone = volume.availabilityZone status = volume.status instance_id = nil = volume. if && !(a_item = .item).empty? raise "this version of ec2-control cannot handle more than one attachement set" if a_item.length > 1 instance_id = a_item.first.instanceId end volumes << {:volume_id => volume_id, :availability_zone => availability_zone, :instance_id => instance_id, :status => status} end end @volumes = volumes end @volumes end |
#availability_zone_available?(name) ⇒ Boolean
23 24 25 |
# File 'lib/ec2/control/query.rb', line 23 def availability_zone_available?(name) @available_zones.find{|zone| zone.status == "available" && zone.name == name} end |
#elastic_ip_associated?(ip) ⇒ Boolean
44 45 46 |
# File 'lib/ec2/control/query.rb', line 44 def elastic_ip_associated?(ip) @elastic_ips.find{|elastic|elastic[:ip] == ip && elastic[:instance_id]} end |
#elastic_ip_associated_instance_id(ip) ⇒ Object
48 49 50 |
# File 'lib/ec2/control/query.rb', line 48 def elastic_ip_associated_instance_id(ip) @elastic_ips.find{|elastic|elastic[:ip] == ip}[:instance_id] end |
#elastic_ip_available?(ip) ⇒ Boolean
40 41 42 |
# File 'lib/ec2/control/query.rb', line 40 def elastic_ip_available?(ip) @elastic_ips.find{|elastic|elastic[:ip] == ip} end |
#init ⇒ Object
11 12 13 14 15 16 17 |
# File 'lib/ec2/control/query.rb', line 11 def init __init_security_groups(true) __init_availability_zones(true) __init_volumes(true) __init_elastic_ips(true) __init_running_and_pending(true) end |
#instance_id_by_instance_name(name) ⇒ Object
57 58 59 60 |
# File 'lib/ec2/control/query.rb', line 57 def instance_id_by_instance_name(name) instance = @instances.find{|instance|instance[:status] == "running" && instance[:name] == name} instance ? instance[:id] : nil end |
#instance_name_by_instance_id(instance_id) ⇒ Object
52 53 54 55 |
# File 'lib/ec2/control/query.rb', line 52 def instance_name_by_instance_id(instance_id) instance = @instances.find{|instance|instance[:id] == instance_id} instance ? instance[:name] : nil end |
#instance_pending_by_name?(value) ⇒ Boolean
66 67 68 |
# File 'lib/ec2/control/query.rb', line 66 def instance_pending_by_name?(value) @instances.find{|instance|instance[:status] == "pending" && instance[:name] == value} end |
#instance_pending_count ⇒ Object
78 79 80 |
# File 'lib/ec2/control/query.rb', line 78 def instance_pending_count @instances.find_all{|instance|instance[:status] == "pending"}.length end |
#instance_pending_names ⇒ Object
86 87 88 |
# File 'lib/ec2/control/query.rb', line 86 def instance_pending_names @instances.find_all{|instance|instance[:status] == "pending"}.collect{|instance|instance[:name]} end |
#instance_running_by_name?(value) ⇒ Boolean
62 63 64 |
# File 'lib/ec2/control/query.rb', line 62 def instance_running_by_name?(value) @instances.find{|instance|instance[:status] == "running" && instance[:name] == value} end |
#instance_running_count ⇒ Object
74 75 76 |
# File 'lib/ec2/control/query.rb', line 74 def instance_running_count @instances.find_all{|instance|instance[:status] == "running"}.length end |
#instance_running_names ⇒ Object
82 83 84 |
# File 'lib/ec2/control/query.rb', line 82 def instance_running_names @instances.find_all{|instance|instance[:status] == "running"}.collect{|instance|instance[:name]} end |
#instances_running_except_names(names) ⇒ Object
70 71 72 |
# File 'lib/ec2/control/query.rb', line 70 def instances_running_except_names(names) @instances.find_all{|instance|instance[:status] == "running" && !names.include?(instance[:name])} end |
#security_group_exist?(name) ⇒ Boolean
19 20 21 |
# File 'lib/ec2/control/query.rb', line 19 def security_group_exist?(name) @security_groups.include?(name) end |
#volume_available?(volume_id) ⇒ Boolean
27 28 29 |
# File 'lib/ec2/control/query.rb', line 27 def volume_available?(volume_id) @volumes.find{|volume| volume[:status] == "available" && volume[:volume_id] == volume_id} end |
#volume_mounted?(volume_id) ⇒ Boolean
31 32 33 |
# File 'lib/ec2/control/query.rb', line 31 def volume_mounted?(volume_id) @volumes.find{|volume| volume[:status] == "in-use" && volume[:volume_id] == volume_id} end |
#volume_mounted_instance_id(volume_id) ⇒ Object
35 36 37 38 |
# File 'lib/ec2/control/query.rb', line 35 def volume_mounted_instance_id(volume_id) volume = @volumes.find{|volume| volume[:status] == "in-use" && volume[:volume_id] == volume_id} volume ? volume[:instance_id] : nil end |