Module: AceClient::Niftycloud::Computing
- Defined in:
- lib/ace-client/niftycloud/computing.rb
Class Method Summary collapse
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
Class Method Details
.build_client(options = {}) ⇒ Object
5 6 7 8 9 10 11 12 13 14 |
# File 'lib/ace-client/niftycloud/computing.rb', line 5 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
148 149 150 151 152 153 154 |
# File 'lib/ace-client/niftycloud/computing.rb', line 148 def delete_images self.images.each do |image| if image['imageOwnerId'] == 'self' self.action('DeleteImage', 'ImageId' => image['imageId']) end end end |
#delete_instances ⇒ Object
71 72 73 74 75 76 77 78 79 80 81 |
# File 'lib/ace-client/niftycloud/computing.rb', line 71 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
83 84 85 86 87 |
# File 'lib/ace-client/niftycloud/computing.rb', line 83 def delete_key_pairs key_pairs.each do |key_pair| self.action('DeleteKeyPair', {'KeyName' => key_pair['keyName']}) end end |
#delete_load_balancers ⇒ Object
133 134 135 136 137 138 139 140 |
# File 'lib/ace-client/niftycloud/computing.rb', line 133 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
162 163 164 165 166 167 168 169 170 171 172 |
# File 'lib/ace-client/niftycloud/computing.rb', line 162 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
102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 |
# File 'lib/ace-client/niftycloud/computing.rb', line 102 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
124 125 126 127 128 129 130 131 |
# File 'lib/ace-client/niftycloud/computing.rb', line 124 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
156 157 158 159 160 |
# File 'lib/ace-client/niftycloud/computing.rb', line 156 def delete_ssl_certificates self.ssl_certificates.each do |sc| self.action('DeleteSslCertificate', 'FqdnId' => sc['fqdnId']) end end |
#delete_volumes ⇒ Object
142 143 144 145 146 |
# File 'lib/ace-client/niftycloud/computing.rb', line 142 def delete_volumes self.volumes.each do |volume| self.action('DeleteVolume', 'VolumeId' => volume['volumeId']) end end |
#find_instance_by_id(instance_id) ⇒ Object
55 56 57 58 |
# File 'lib/ace-client/niftycloud/computing.rb', line 55 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
89 90 91 92 |
# File 'lib/ace-client/niftycloud/computing.rb', line 89 def find_security_group_by_name(name) response = self.action('DescribeSecurityGroups', {'GroupName.1' => name}) response['DescribeSecurityGroupsResponse']['securityGroupInfo']['item'] rescue nil end |
#instances ⇒ Object
16 17 18 19 20 21 22 23 24 |
# File 'lib/ace-client/niftycloud/computing.rb', line 16 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
26 27 28 29 |
# File 'lib/ace-client/niftycloud/computing.rb', line 26 def items() response = self.action([:action], {}) [response[[:action] + 'Response'][[:key]]['item']].flatten rescue [] end |
#load_balancers ⇒ Object
47 48 49 50 |
# File 'lib/ace-client/niftycloud/computing.rb', line 47 def load_balancers response = self.action('DescribeLoadBalancers', {}) [response['DescribeLoadBalancersResponse']['DescribeLoadBalancersResult']['LoadBalancerDescriptions']['member']].flatten rescue [] end |
#security_group_rules ⇒ Object
52 53 |
# File 'lib/ace-client/niftycloud/computing.rb', line 52 def security_group_rules end |
#stop_instances ⇒ Object
60 61 62 63 64 65 66 67 68 69 |
# File 'lib/ace-client/niftycloud/computing.rb', line 60 def stop_instances 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 5 end end |
#wait_security_group_status(name, status) ⇒ Object
94 95 96 97 98 99 100 |
# File 'lib/ace-client/niftycloud/computing.rb', line 94 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 |