Module: AceClient::Niftycloud::Computing
- Defined in:
- lib/ace-client/niftycloud/computing.rb
Instance Method Summary collapse
- #delete_images ⇒ Object
- #delete_instances ⇒ Object
- #delete_key_pairs ⇒ Object
- #delete_load_balancers ⇒ Object
- #delete_resources ⇒ 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 ⇒ Object
- #wait_security_group_status(name, status) ⇒ Object
Instance Method Details
#delete_images ⇒ Object
137 138 139 140 141 142 143 |
# File 'lib/ace-client/niftycloud/computing.rb', line 137 def delete_images self.images.each do |image| if image['imageOwnerId'] == 'self' self.action('DeleteImage', 'ImageId' => image['imageId']) end end end |
#delete_instances ⇒ Object
60 61 62 63 64 65 66 67 68 69 70 |
# File 'lib/ace-client/niftycloud/computing.rb', line 60 def delete_instances until instances.empty? do instances.each do |instance| self.action('TerminateInstances', {'InstanceId.1' => instance['instanceId']}) end uploads.each do |upload| self.action('CancelUpload', {'ConversionTaskId' => upload['conversionTaskId']}) end sleep 5 end end |
#delete_key_pairs ⇒ Object
72 73 74 75 76 |
# File 'lib/ace-client/niftycloud/computing.rb', line 72 def delete_key_pairs key_pairs.each do |key_pair| self.action('DeleteKeyPair', {'KeyName' => key_pair['keyName']}) end end |
#delete_load_balancers ⇒ Object
122 123 124 125 126 127 128 129 |
# File 'lib/ace-client/niftycloud/computing.rb', line 122 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 ⇒ Object
151 152 153 154 155 156 157 158 159 160 161 |
# File 'lib/ace-client/niftycloud/computing.rb', line 151 def delete_resources stop_instances delete_instances 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
91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 |
# File 'lib/ace-client/niftycloud/computing.rb', line 91 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
113 114 115 116 117 118 119 120 |
# File 'lib/ace-client/niftycloud/computing.rb', line 113 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
145 146 147 148 149 |
# File 'lib/ace-client/niftycloud/computing.rb', line 145 def delete_ssl_certificates self.ssl_certificates.each do |sc| self.action('DeleteSslCertificate', 'FqdnId' => sc['fqdnId']) end end |
#delete_volumes ⇒ Object
131 132 133 134 135 |
# File 'lib/ace-client/niftycloud/computing.rb', line 131 def delete_volumes self.volumes.each do |volume| self.action('DeleteVolume', 'VolumeId' => volume['volumeId']) end end |
#find_instance_by_id(instance_id) ⇒ Object
44 45 46 47 |
# File 'lib/ace-client/niftycloud/computing.rb', line 44 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
78 79 80 81 |
# File 'lib/ace-client/niftycloud/computing.rb', line 78 def find_security_group_by_name(name) response = self.action('DescribeSecurityGroups', {'GroupName.1' => name}) response['DescribeSecurityGroupsResponse']['securityGroupInfo']['item'] rescue nil end |
#instances ⇒ Object
5 6 7 8 9 10 11 12 13 |
# File 'lib/ace-client/niftycloud/computing.rb', line 5 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
15 16 17 18 |
# File 'lib/ace-client/niftycloud/computing.rb', line 15 def items() response = self.action([:action], {}) [response[[:action] + 'Response'][[:key]]['item']].flatten rescue [] end |
#load_balancers ⇒ Object
36 37 38 39 |
# File 'lib/ace-client/niftycloud/computing.rb', line 36 def load_balancers response = self.action('DescribeLoadBalancers', {}) [response['DescribeLoadBalancersResponse']['DescribeLoadBalancersResult']['LoadBalancerDescriptions']['member']].flatten rescue [] end |
#security_group_rules ⇒ Object
41 42 |
# File 'lib/ace-client/niftycloud/computing.rb', line 41 def security_group_rules end |
#stop_instances ⇒ Object
49 50 51 52 53 54 55 56 57 58 |
# File 'lib/ace-client/niftycloud/computing.rb', line 49 def stop_instances until instances.all? {|instance| instance['instanceState']['name'] != 'running'} do instances.each do |instance| if instance['instanceState']['name'] != 'stopped' self.action('StopInstances', {'InstanceId.1' => instance['instanceId']}) end end sleep 5 end end |
#wait_security_group_status(name, status) ⇒ Object
83 84 85 86 87 88 89 |
# File 'lib/ace-client/niftycloud/computing.rb', line 83 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 |