module AceClient::Niftycloud::Computing
Constants
- DEFAULT_DELETE_INSTANCES_SLEEP
- DEFAULT_DELETE_INSTANCES_TIMEOUT
- DEFAULT_STOP_INSTANCES_SLEEP
- DEFAULT_STOP_INSTANCES_TIMEOUT
Public Class Methods
build_client(options={})
click to toggle source
# File lib/ace-client/niftycloud/computing.rb, line 10 def build_client(options={}) options = options.merge( :before_signature => lambda {|params| params['AccessKeyId'] = params.delete('AWSAccessKeyId') } ) client = AceClient::Query2.new(options) client.extend(AceClient::Niftycloud::Computing) client end
Public Instance Methods
delete_images()
click to toggle source
# 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={})
click to toggle source
# File lib/ace-client/niftycloud/computing.rb, line 81 def delete_instances(options={}) options[:timeout] ||= DEFAULT_DELETE_INSTANCES_TIMEOUT options[:sleep] ||= DEFAULT_DELETE_INSTANCES_SLEEP timeout(options[: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 options[:sleep] end end end
delete_key_pairs()
click to toggle source
# 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()
click to toggle source
# 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={})
click to toggle source
# File lib/ace-client/niftycloud/computing.rb, line 181 def delete_resources(options={}) stop_instances( timeout: options[:stop_instances_timeout], sleep: options[:stop_instances_sleep] ) delete_instances( timeout: options[:delete_instances_timeout], sleep: options[: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()
click to toggle source
# 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()
click to toggle source
# 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()
click to toggle source
# 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()
click to toggle source
# 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)
click to toggle source
# 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)
click to toggle source
# 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()
click to toggle source
# 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)
click to toggle source
# File lib/ace-client/niftycloud/computing.rb, line 31 def items(options) response = self.action(options[:action], {}) [response[options[:action] + 'Response'][options[:key]]['item']].flatten rescue [] end
load_balancers()
click to toggle source
# 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()
click to toggle source
# File lib/ace-client/niftycloud/computing.rb, line 57 def security_group_rules end
stop_instances(options={})
click to toggle source
# File lib/ace-client/niftycloud/computing.rb, line 65 def stop_instances(options={}) options[:timeout] ||= DEFAULT_STOP_INSTANCES_TIMEOUT options[:sleep] ||= DEFAULT_STOP_INSTANCES_SLEEP timeout(options[: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 options[:sleep] end end end
wait_security_group_status(name, status)
click to toggle source
# 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
Private Instance Methods
build_client(options={})
click to toggle source
# File lib/ace-client/niftycloud/computing.rb, line 10 def build_client(options={}) options = options.merge( :before_signature => lambda {|params| params['AccessKeyId'] = params.delete('AWSAccessKeyId') } ) client = AceClient::Query2.new(options) client.extend(AceClient::Niftycloud::Computing) client end