Module: AceClient::Niftycloud::Computing
- Defined in:
- lib/ace-client/niftycloud/computing.rb
Constant Summary collapse
- DEFAULT_STOP_INSTANCES_TIMEOUT =
60*30
- DEFAULT_STOP_INSTANCES_SLEEP =
5
- DEFAULT_DELETE_INSTANCES_TIMEOUT =
60*30
- DEFAULT_DELETE_INSTANCES_SLEEP =
5
Class Method Summary collapse
Instance Method Summary collapse
- #delete_images ⇒ Object
- #delete_instances(options = {}) ⇒ Object
- #delete_key_pairs ⇒ Object
- #delete_load_balancers ⇒ Object
- #delete_resources(options = {}) ⇒ Object
- #delete_security_group_rules ⇒ Object
- #delete_security_groups ⇒ Object
- #delete_ssl_certificates ⇒ Object
- #delete_volumes ⇒ Object
- #find_instance_by_id(instance_id) ⇒ Object
- #find_security_group_by_name(name) ⇒ Object
- #instances ⇒ Object
- #items(options) ⇒ Object
- #load_balancers ⇒ Object
- #security_group_rules ⇒ Object
- #stop_instances(options = {}) ⇒ Object
- #wait_security_group_status(name, status) ⇒ Object
Class Method Details
.build_client(options = {}) ⇒ Object
10 11 12 13 14 15 16 17 18 19 |
# File 'lib/ace-client/niftycloud/computing.rb', line 10 def build_client(={}) = .merge( :before_signature => lambda {|params| params['AccessKeyId'] = params.delete('AWSAccessKeyId') } ) client = AceClient::Query2.new() client.extend(AceClient::Niftycloud::Computing) client end |
Instance Method Details
#delete_images ⇒ Object
167 168 169 170 171 172 173 |
# File 'lib/ace-client/niftycloud/computing.rb', line 167 def delete_images self.images.each do |image| if image['imageOwnerId'] == 'self' self.action('DeleteImage', 'ImageId' => image['imageId']) end end end |
#delete_instances(options = {}) ⇒ Object
81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 |
# File 'lib/ace-client/niftycloud/computing.rb', line 81 def delete_instances(={}) [:timeout] ||= DEFAULT_DELETE_INSTANCES_TIMEOUT [:sleep] ||= DEFAULT_DELETE_INSTANCES_SLEEP timeout([:timeout]) do until instances.empty? do instances.each do |instance| response = self.action('DescribeInstanceAttribute', {'InstanceId' => instance['instanceId'], 'Attribute' => 'disableApiTermination'}) if response['DescribeInstanceAttributeResponse']['disableApiTermination']['value'] == 'true' self.action('ModifyInstanceAttribute', {'InstanceId' => instance['instanceId'], 'Attribute' => 'disableApiTermination', 'Value' => 'false'}) end self.action('TerminateInstances', {'InstanceId.1' => instance['instanceId']}) end uploads.each do |upload| self.action('CancelUpload', {'ConversionTaskId' => upload['conversionTaskId']}) end sleep [:sleep] end end end |
#delete_key_pairs ⇒ Object
102 103 104 105 106 |
# File 'lib/ace-client/niftycloud/computing.rb', line 102 def delete_key_pairs key_pairs.each do |key_pair| self.action('DeleteKeyPair', {'KeyName' => key_pair['keyName']}) end end |
#delete_load_balancers ⇒ Object
152 153 154 155 156 157 158 159 |
# File 'lib/ace-client/niftycloud/computing.rb', line 152 def delete_load_balancers self.load_balancers.each do |lb| name = lb['LoadBalancerName'] port = lb['ListenerDescriptions']['member']['Listener']['LoadBalancerPort'] instance_port = lb['ListenerDescriptions']['member']['Listener']['InstancePort'] self.action('DeleteLoadBalancer', 'LoadBalancerName' => name, 'LoadBalancerPort' => port, 'InstancePort' => instance_port) end end |
#delete_resources(options = {}) ⇒ Object
181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 |
# File 'lib/ace-client/niftycloud/computing.rb', line 181 def delete_resources(={}) stop_instances( timeout: [:stop_instances_timeout], sleep: [:stop_instances_sleep] ) delete_instances( timeout: [:delete_instances_timeout], sleep: [:delete_instances_sleep] ) delete_key_pairs delete_security_group_rules delete_security_groups delete_load_balancers delete_volumes delete_images delete_ssl_certificates end |
#delete_security_group_rules ⇒ Object
121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 |
# File 'lib/ace-client/niftycloud/computing.rb', line 121 def delete_security_group_rules security_groups.each do |group| rules = [group['ipPermissions']['item']].flatten rescue [] next if rules.empty? rules.each do |rule| hash = {} hash["IpPermissions.1.IpProtocol"] = rule['ipProtocol'] hash["IpPermissions.1.FromPort"] = rule['fromPort'] if rule['fromPort'] hash["IpPermissions.1.ToPort"] = rule['toPort'] if rule['toPort'] hash["IpPermissions.1.InOut"] = rule['inOut'] if rule['inOut'] if rule.key?('ipRanges') hash["IpPermissions.1.IpRanges.1.CidrIp"] = rule['ipRanges']['item']['cidrIp'] # TODO: can't delete cidr ip rules elsif rule.key?('groups') hash["IpPermissions.1.Groups.1.GroupName"] = rule['groups']['item']['groupName'] end hash['GroupName'] = group['groupName'] self.action('RevokeSecurityGroupIngress', hash) wait_security_group_status(group['groupName'], 'applied') end end end |
#delete_security_groups ⇒ Object
143 144 145 146 147 148 149 150 |
# File 'lib/ace-client/niftycloud/computing.rb', line 143 def delete_security_groups until security_groups.empty? do security_groups.each do |group| self.action('DeleteSecurityGroup', 'GroupName' => group['groupName']) end sleep 5 end end |
#delete_ssl_certificates ⇒ Object
175 176 177 178 179 |
# File 'lib/ace-client/niftycloud/computing.rb', line 175 def delete_ssl_certificates self.ssl_certificates.each do |sc| self.action('DeleteSslCertificate', 'FqdnId' => sc['fqdnId']) end end |
#delete_volumes ⇒ Object
161 162 163 164 165 |
# File 'lib/ace-client/niftycloud/computing.rb', line 161 def delete_volumes self.volumes.each do |volume| self.action('DeleteVolume', 'VolumeId' => volume['volumeId']) end end |
#find_instance_by_id(instance_id) ⇒ Object
60 61 62 63 |
# File 'lib/ace-client/niftycloud/computing.rb', line 60 def find_instance_by_id(instance_id) response = self.action('DescribeInstances', {'InstanceId.1' => instance_id}) response['DescribeInstancesResponse']['reservationSet']['item']['instancesSet']['item'] rescue nil end |
#find_security_group_by_name(name) ⇒ Object
108 109 110 111 |
# File 'lib/ace-client/niftycloud/computing.rb', line 108 def find_security_group_by_name(name) response = self.action('DescribeSecurityGroups', {'GroupName.1' => name}) response['DescribeSecurityGroupsResponse']['securityGroupInfo']['item'] rescue nil end |
#instances ⇒ Object
21 22 23 24 25 26 27 28 29 |
# File 'lib/ace-client/niftycloud/computing.rb', line 21 def instances response = self.action('DescribeInstances', {}) begin items = [response['DescribeInstancesResponse']['reservationSet']['item']].flatten items.map{|item| item['instancesSet']['item'] }.flatten rescue [] end end |
#items(options) ⇒ Object
31 32 33 34 |
# File 'lib/ace-client/niftycloud/computing.rb', line 31 def items() response = self.action([:action], {}) [response[[:action] + 'Response'][[:key]]['item']].flatten rescue [] end |
#load_balancers ⇒ Object
52 53 54 55 |
# File 'lib/ace-client/niftycloud/computing.rb', line 52 def load_balancers response = self.action('DescribeLoadBalancers', {}) [response['DescribeLoadBalancersResponse']['DescribeLoadBalancersResult']['LoadBalancerDescriptions']['member']].flatten rescue [] end |
#security_group_rules ⇒ Object
57 58 |
# File 'lib/ace-client/niftycloud/computing.rb', line 57 def security_group_rules end |
#stop_instances(options = {}) ⇒ Object
65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 |
# File 'lib/ace-client/niftycloud/computing.rb', line 65 def stop_instances(={}) [:timeout] ||= DEFAULT_STOP_INSTANCES_TIMEOUT [:sleep] ||= DEFAULT_STOP_INSTANCES_SLEEP timeout([:timeout]) do until instances.all? {|instance| instance['instanceState']['name'] != 'running'} || instances.empty? do instances.each do |instance| if instance['instanceState']['name'] != 'stopped' self.action('StopInstances', {'InstanceId.1' => instance['instanceId']}) end end sleep [:sleep] end end end |
#wait_security_group_status(name, status) ⇒ Object
113 114 115 116 117 118 119 |
# File 'lib/ace-client/niftycloud/computing.rb', line 113 def wait_security_group_status(name, status) loop do group = find_security_group_by_name(name) break if group['groupStatus'] == status sleep 1 end end |