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
152 153 154 155 156 157 158 |
# File 'lib/ace-client/niftycloud/computing.rb', line 152 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 82 83 84 85 |
# File 'lib/ace-client/niftycloud/computing.rb', line 71 def delete_instances 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 5 end end |
#delete_key_pairs ⇒ Object
87 88 89 90 91 |
# File 'lib/ace-client/niftycloud/computing.rb', line 87 def delete_key_pairs key_pairs.each do |key_pair| self.action('DeleteKeyPair', {'KeyName' => key_pair['keyName']}) end end |
#delete_load_balancers ⇒ Object
137 138 139 140 141 142 143 144 |
# File 'lib/ace-client/niftycloud/computing.rb', line 137 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
166 167 168 169 170 171 172 173 174 175 176 |
# File 'lib/ace-client/niftycloud/computing.rb', line 166 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
106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 |
# File 'lib/ace-client/niftycloud/computing.rb', line 106 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
128 129 130 131 132 133 134 135 |
# File 'lib/ace-client/niftycloud/computing.rb', line 128 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
160 161 162 163 164 |
# File 'lib/ace-client/niftycloud/computing.rb', line 160 def delete_ssl_certificates self.ssl_certificates.each do |sc| self.action('DeleteSslCertificate', 'FqdnId' => sc['fqdnId']) end end |
#delete_volumes ⇒ Object
146 147 148 149 150 |
# File 'lib/ace-client/niftycloud/computing.rb', line 146 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
93 94 95 96 |
# File 'lib/ace-client/niftycloud/computing.rb', line 93 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
98 99 100 101 102 103 104 |
# File 'lib/ace-client/niftycloud/computing.rb', line 98 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 |