poolparty 1.6.6 → 1.6.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (67) hide show
  1. data/VERSION.yml +2 -3
  2. data/lib/poolparty/chef_solo.rb +0 -1
  3. metadata +12 -69
  4. data/vendor/gems/amazon-ec2/ChangeLog +0 -304
  5. data/vendor/gems/amazon-ec2/LICENSE +0 -66
  6. data/vendor/gems/amazon-ec2/README.rdoc +0 -359
  7. data/vendor/gems/amazon-ec2/README_dev.rdoc +0 -10
  8. data/vendor/gems/amazon-ec2/Rakefile +0 -70
  9. data/vendor/gems/amazon-ec2/VERSION +0 -1
  10. data/vendor/gems/amazon-ec2/amazon-ec2.gemspec +0 -142
  11. data/vendor/gems/amazon-ec2/bin/ec2-gem-example.rb +0 -137
  12. data/vendor/gems/amazon-ec2/bin/ec2-gem-profile.rb +0 -10
  13. data/vendor/gems/amazon-ec2/bin/ec2sh +0 -62
  14. data/vendor/gems/amazon-ec2/bin/setup.rb +0 -29
  15. data/vendor/gems/amazon-ec2/deps.rip +0 -1
  16. data/vendor/gems/amazon-ec2/lib/AWS/Autoscaling/autoscaling.rb +0 -273
  17. data/vendor/gems/amazon-ec2/lib/AWS/Autoscaling.rb +0 -70
  18. data/vendor/gems/amazon-ec2/lib/AWS/Cloudwatch/monitoring.rb +0 -80
  19. data/vendor/gems/amazon-ec2/lib/AWS/Cloudwatch.rb +0 -32
  20. data/vendor/gems/amazon-ec2/lib/AWS/EC2/availability_zones.rb +0 -29
  21. data/vendor/gems/amazon-ec2/lib/AWS/EC2/console.rb +0 -25
  22. data/vendor/gems/amazon-ec2/lib/AWS/EC2/devpay.rb +0 -18
  23. data/vendor/gems/amazon-ec2/lib/AWS/EC2/elastic_ips.rb +0 -86
  24. data/vendor/gems/amazon-ec2/lib/AWS/EC2/image_attributes.rb +0 -133
  25. data/vendor/gems/amazon-ec2/lib/AWS/EC2/images.rb +0 -117
  26. data/vendor/gems/amazon-ec2/lib/AWS/EC2/instances.rb +0 -249
  27. data/vendor/gems/amazon-ec2/lib/AWS/EC2/keypairs.rb +0 -47
  28. data/vendor/gems/amazon-ec2/lib/AWS/EC2/products.rb +0 -21
  29. data/vendor/gems/amazon-ec2/lib/AWS/EC2/security_groups.rb +0 -164
  30. data/vendor/gems/amazon-ec2/lib/AWS/EC2/snapshots.rb +0 -80
  31. data/vendor/gems/amazon-ec2/lib/AWS/EC2/volumes.rb +0 -100
  32. data/vendor/gems/amazon-ec2/lib/AWS/EC2.rb +0 -33
  33. data/vendor/gems/amazon-ec2/lib/AWS/ELB/load_balancers.rb +0 -178
  34. data/vendor/gems/amazon-ec2/lib/AWS/ELB.rb +0 -71
  35. data/vendor/gems/amazon-ec2/lib/AWS/RDS/rds.rb +0 -522
  36. data/vendor/gems/amazon-ec2/lib/AWS/RDS.rb +0 -73
  37. data/vendor/gems/amazon-ec2/lib/AWS/exceptions.rb +0 -200
  38. data/vendor/gems/amazon-ec2/lib/AWS/responses.rb +0 -21
  39. data/vendor/gems/amazon-ec2/lib/AWS.rb +0 -304
  40. data/vendor/gems/amazon-ec2/perftools/ec2prof +0 -0
  41. data/vendor/gems/amazon-ec2/perftools/ec2prof-results.dot +0 -132
  42. data/vendor/gems/amazon-ec2/perftools/ec2prof-results.txt +0 -100
  43. data/vendor/gems/amazon-ec2/perftools/ec2prof.symbols +0 -102
  44. data/vendor/gems/amazon-ec2/test/test_Autoscaling_groups.rb +0 -337
  45. data/vendor/gems/amazon-ec2/test/test_EC2.rb +0 -68
  46. data/vendor/gems/amazon-ec2/test/test_EC2_availability_zones.rb +0 -49
  47. data/vendor/gems/amazon-ec2/test/test_EC2_console.rb +0 -54
  48. data/vendor/gems/amazon-ec2/test/test_EC2_elastic_ips.rb +0 -144
  49. data/vendor/gems/amazon-ec2/test/test_EC2_image_attributes.rb +0 -238
  50. data/vendor/gems/amazon-ec2/test/test_EC2_images.rb +0 -229
  51. data/vendor/gems/amazon-ec2/test/test_EC2_instances.rb +0 -611
  52. data/vendor/gems/amazon-ec2/test/test_EC2_keypairs.rb +0 -123
  53. data/vendor/gems/amazon-ec2/test/test_EC2_products.rb +0 -48
  54. data/vendor/gems/amazon-ec2/test/test_EC2_responses.rb +0 -53
  55. data/vendor/gems/amazon-ec2/test/test_EC2_s3_xmlsimple.rb +0 -80
  56. data/vendor/gems/amazon-ec2/test/test_EC2_security_groups.rb +0 -205
  57. data/vendor/gems/amazon-ec2/test/test_EC2_snapshots.rb +0 -83
  58. data/vendor/gems/amazon-ec2/test/test_EC2_volumes.rb +0 -142
  59. data/vendor/gems/amazon-ec2/test/test_ELB_load_balancers.rb +0 -239
  60. data/vendor/gems/amazon-ec2/test/test_RDS.rb +0 -354
  61. data/vendor/gems/amazon-ec2/test/test_helper.rb +0 -23
  62. data/vendor/gems/amazon-ec2/wsdl/2007-08-29.ec2.wsdl +0 -1269
  63. data/vendor/gems/amazon-ec2/wsdl/2008-02-01.ec2.wsdl +0 -1614
  64. data/vendor/gems/amazon-ec2/wsdl/2008-05-05.ec2.wsdl +0 -2052
  65. data/vendor/gems/amazon-ec2/wsdl/2008-12-01.ec2.wsdl +0 -2354
  66. data/vendor/gems/amazon-ec2/wsdl/2009-10-31.ec2.wsdl +0 -4261
  67. data/vendor/gems/amazon-ec2/wsdl/2009-11-30.ec2.wsdl +0 -4668
@@ -1,200 +0,0 @@
1
- #--
2
- # AWS ERROR CODES
3
- # AWS can throw error exceptions that contain a '.' in them.
4
- # since we can't name an exception class with that '.' I compressed
5
- # each class name into the non-dot version which allows us to retain
6
- # the granularity of the exception.
7
- #++
8
-
9
- module AWS
10
-
11
- # All AWS errors are superclassed by Error < RuntimeError
12
- class Error < RuntimeError; end
13
-
14
- # CLIENT : A client side argument error
15
- class ArgumentError < Error; end
16
-
17
- # Elastic Compute Cloud
18
- ############################
19
-
20
- # EC2 : User has the maximum number of allowed IP addresses.
21
- class AddressLimitExceeded < Error; end
22
-
23
- # EC2 : The limit on the number of Amazon EBS volumes attached to one instance has been exceeded.
24
- class AttachmentLimitExceeded < Error; end
25
-
26
- # EC2 : User not authorized.
27
- class AuthFailure < Error; end
28
-
29
- # EC2 : Volume is in incorrect state
30
- class IncorrectState < Error; end
31
-
32
- # EC2 : User has max allowed concurrent running instances.
33
- class InstanceLimitExceeded < Error; end
34
-
35
- # EC2 : The value of an item added to, or removed from, an image attribute is invalid.
36
- class InvalidAMIAttributeItemValue < Error; end
37
-
38
- # EC2 : Specified AMI ID is not valid.
39
- class InvalidAMIIDMalformed < Error; end
40
-
41
- # EC2 : Specified AMI ID does not exist.
42
- class InvalidAMIIDNotFound < Error; end
43
-
44
- # EC2 : Specified AMI ID has been deregistered and is no longer available.
45
- class InvalidAMIIDUnavailable < Error; end
46
-
47
- # EC2 : The instance cannot detach from a volume to which it is not attached.
48
- class InvalidAttachmentNotFound < Error; end
49
-
50
- # EC2 : The device to which you are trying to attach (i.e. /dev/sdh) is already in use on the instance.
51
- class InvalidDeviceInUse < Error; end
52
-
53
- # EC2 : Specified instance ID is not valid.
54
- class InvalidInstanceIDMalformed < Error; end
55
-
56
- # EC2 : Specified instance ID does not exist.
57
- class InvalidInstanceIDNotFound < Error; end
58
-
59
- # EC2 : Specified keypair name does not exist.
60
- class InvalidKeyPairNotFound < Error; end
61
-
62
- # EC2 : Attempt to create a duplicate keypair.
63
- class InvalidKeyPairDuplicate < Error; end
64
-
65
- # EC2 : Specified group name does not exist.
66
- class InvalidGroupNotFound < Error; end
67
-
68
- # EC2 : Attempt to create a duplicate group.
69
- class InvalidGroupDuplicate < Error; end
70
-
71
- # EC2 : Specified group can not be deleted because it is in use.
72
- class InvalidGroupInUse < Error; end
73
-
74
- # EC2 : Specified group name is a reserved name.
75
- class InvalidGroupReserved < Error; end
76
-
77
- # EC2 : Specified AMI has an unparsable manifest.
78
- class InvalidManifest < Error; end
79
-
80
- # EC2 : RunInstances was called with minCount and maxCount set to 0 or minCount > maxCount.
81
- class InvalidParameterCombination < Error; end
82
-
83
- # EC2 : The value supplied for a parameter was invalid.
84
- class InvalidParameterValue < Error; end
85
-
86
- # EC2 : Attempt to authorize a permission that has already been authorized.
87
- class InvalidPermissionDuplicate < Error; end
88
-
89
- # EC2 : Specified permission is invalid.
90
- class InvalidPermissionMalformed < Error; end
91
-
92
- # EC2 : Specified reservation ID is invalid.
93
- class InvalidReservationIDMalformed < Error; end
94
-
95
- # EC2 : Specified reservation ID does not exist.
96
- class InvalidReservationIDNotFound < Error; end
97
-
98
- # EC2 : The snapshot ID that was passed as an argument was malformed.
99
- class InvalidSnapshotIDMalformed < Error; end
100
-
101
- # EC2 : The specified snapshot does not exist.
102
- class InvalidSnapshotIDNotFound < Error; end
103
-
104
- # EC2 : The user ID is neither in the form of an AWS account ID or one
105
- # of the special values accepted by the owner or executableBy flags
106
- # in the DescribeImages call.
107
- class InvalidUserIDMalformed < Error; end
108
-
109
- # EC2 : Reserved Instances ID not found.
110
- class InvalidReservedInstancesId < Error; end
111
-
112
- # EC2 : Reserved Instances Offering ID not found.
113
- class InvalidReservedInstancesOfferingId < Error; end
114
-
115
- # EC2 : The volume ID that was passed as an argument was malformed.
116
- class InvalidVolumeIDMalformed < Error; end
117
-
118
- # EC2 : The volume specified does not exist.
119
- class InvalidVolumeIDNotFound < Error; end
120
-
121
- # EC2 : The volume already exists in the system.
122
- class InvalidVolumeIDDuplicate < Error; end
123
-
124
- # EC2 : The specified volume ID and instance ID are in different Availability Zones.
125
- class InvalidVolumeIDZoneMismatch < Error; end
126
-
127
- # EC2 : The zone specified does not exist.
128
- class InvalidZoneNotFound < Error; end
129
-
130
- # EC2 : Insufficient Reserved Instances capacity.
131
- class InsufficientReservedInstancesCapacity < Error; end
132
-
133
- # EC2 : The instance specified does not support EBS.
134
- class NonEBSInstance < Error; end
135
-
136
- # EC2 : The limit on the number of Amazon EBS snapshots in the pending state has been exceeded.
137
- class PendingSnapshotLimitExceeded < Error; end
138
-
139
- # EC2 : Your current quota does not allow you to purchase the required number of reserved instances.
140
- class ReservedInstancesLimitExceeded < Error; end
141
-
142
- # EC2 : The limit on the number of Amazon EBS snapshots has been exceeded.
143
- class SnapshotLimitExceeded < Error; end
144
-
145
- # EC2 : An unknown parameter was passed as an argument
146
- class UnknownParameter < Error; end
147
-
148
- # EC2 : The limit on the number of Amazon EBS volumes has been exceeded.
149
- class VolumeLimitExceeded < Error; end
150
-
151
- # Server Error Codes
152
- ###
153
-
154
- # Server : Internal Error.
155
- class InternalError < Error; end
156
-
157
- # Server : Not enough available addresses to satisfy your minimum request.
158
- class InsufficientAddressCapacity < Error; end
159
-
160
- # Server : There are not enough available instances to satisfy your minimum request.
161
- class InsufficientInstanceCapacity < Error; end
162
-
163
- # Server : There are not enough available reserved instances to satisfy your minimum request.
164
- class InsufficientReservedInstanceCapacity < Error; end
165
-
166
- # Server : The server is overloaded and cannot handle the request.
167
- class Unavailable < Error; end
168
-
169
- # Elastic Load Balancer
170
- ############################
171
-
172
- # ELB : The Load balancer specified was not found.
173
- class LoadBalancerNotFound < Error; end
174
-
175
- # ELB :
176
- class ValidationError < Error; end
177
-
178
- # ELB :
179
- class DuplicateLoadBalancerName < Error; end
180
-
181
- # ELB :
182
- class TooManyLoadBalancers < Error; end
183
-
184
- # ELB :
185
- class InvalidInstance < Error; end
186
-
187
- # ELB :
188
- class InvalidConfigurationRequest < Error; end
189
-
190
- # API Errors
191
- ############################
192
-
193
- # Server : Invalid AWS Account
194
- class InvalidClientTokenId < Error; end
195
-
196
- # Server : The provided signature does not match.
197
- class SignatureDoesNotMatch < Error; end
198
-
199
- end
200
-
@@ -1,21 +0,0 @@
1
- module AWS
2
-
3
- class Response
4
-
5
- # Parse the XML response from AWS
6
- #
7
- # @option options [String] :xml The XML response from AWS that we want to parse
8
- # @option options [Hash] :parse_options Override the options for XmlSimple.
9
- # @return [Hash] the input :xml converted to a custom Ruby Hash by XmlSimple.
10
- def self.parse(options = {})
11
- options = {
12
- :xml => "",
13
- :parse_options => { 'forcearray' => ['item', 'member'], 'suppressempty' => nil, 'keeproot' => false }
14
- }.merge(options)
15
- response = XmlSimple.xml_in(options[:xml], options[:parse_options])
16
- end
17
-
18
- end # class Response
19
-
20
- end # module AWS
21
-
@@ -1,304 +0,0 @@
1
- #--
2
- # Amazon Web Services EC2 + ELB API Ruby library
3
- #
4
- # Ruby Gem Name:: amazon-ec2
5
- # Author:: Glenn Rempe (mailto:glenn@rempe.us)
6
- # Copyright:: Copyright (c) 2007-2009 Glenn Rempe
7
- # License:: Distributes under the same terms as Ruby
8
- # Home:: http://github.com/grempe/amazon-ec2/tree/master
9
- #++
10
-
11
- %w[ base64 cgi openssl digest/sha1 net/https rexml/document time ostruct ].each { |f| require f }
12
-
13
- begin
14
- require 'xmlsimple' unless defined? XmlSimple
15
- rescue Exception => e
16
- require 'xml-simple' unless defined? XmlSimple
17
- end
18
-
19
-
20
- # A custom implementation of Hash that allows us to access hash values using dot notation
21
- #
22
- # @example Access the hash keys in the standard way or using dot notation
23
- # foo[:bar] => "baz"
24
- # foo.bar => "baz"
25
- class Hash
26
- def method_missing(meth, *args, &block)
27
- if args.size == 0
28
- self[meth.to_s] || self[meth.to_sym]
29
- end
30
- end
31
-
32
- def has?(key)
33
- self[key] && !self[key].to_s.empty?
34
- end
35
-
36
- def does_not_have?(key)
37
- self[key].nil? || self[key].to_s.empty?
38
- end
39
- end
40
-
41
-
42
- module AWS
43
-
44
- # Builds the canonical string for signing requests. This strips out all '&', '?', and '='
45
- # from the query string to be signed. The parameters in the path passed in must already
46
- # be sorted in case-insensitive alphabetical order and must not be url encoded.
47
- #
48
- # @param [String] params the params that will be sorted and encoded as a canonical string.
49
- # @param [String] host the hostname of the API endpoint.
50
- # @param [String] method the HTTP method that will be used to submit the params.
51
- # @param [String] base the URI path that this information will be submitted to.
52
- # @return [String] the canonical request description string.
53
- def AWS.canonical_string(params, host, method="POST", base="/")
54
- # Sort, and encode parameters into a canonical string.
55
- sorted_params = params.sort {|x,y| x[0] <=> y[0]}
56
- encoded_params = sorted_params.collect do |p|
57
- encoded = (CGI::escape(p[0].to_s) +
58
- "=" + CGI::escape(p[1].to_s))
59
- # Ensure spaces are encoded as '%20', not '+'
60
- encoded.gsub('+', '%20')
61
- end
62
- sigquery = encoded_params.join("&")
63
-
64
- # Generate the request description string
65
- req_desc =
66
- method + "\n" +
67
- host + "\n" +
68
- base + "\n" +
69
- sigquery
70
-
71
- end
72
-
73
- # Encodes the given string with the secret_access_key by taking the
74
- # hmac-sha1 sum, and then base64 encoding it. Optionally, it will also
75
- # url encode the result of that to protect the string if it's going to
76
- # be used as a query string parameter.
77
- #
78
- # @param [String] secret_access_key the user's secret access key for signing.
79
- # @param [String] str the string to be hashed and encoded.
80
- # @param [Boolean] urlencode whether or not to url encode the result., true or false
81
- # @return [String] the signed and encoded string.
82
- def AWS.encode(secret_access_key, str, urlencode=true)
83
- digest = OpenSSL::Digest::Digest.new('sha1')
84
- b64_hmac =
85
- Base64.encode64(
86
- OpenSSL::HMAC.digest(digest, secret_access_key, str)).gsub("\n","")
87
-
88
- if urlencode
89
- return CGI::escape(b64_hmac)
90
- else
91
- return b64_hmac
92
- end
93
- end
94
-
95
- # This class provides all the methods for using the EC2 or ELB service
96
- # including the handling of header signing and other security concerns.
97
- # This class uses the Net::HTTP library to interface with the AWS Query API
98
- # interface. You should not instantiate this directly, instead
99
- # you should setup an instance of 'AWS::EC2::Base' or 'AWS::ELB::Base'.
100
- class Base
101
-
102
- attr_reader :use_ssl, :server, :proxy_server, :port
103
-
104
- # @option options [String] :access_key_id ("") The user's AWS Access Key ID
105
- # @option options [String] :secret_access_key ("") The user's AWS Secret Access Key
106
- # @option options [Boolean] :use_ssl (true) Connect using SSL?
107
- # @option options [String] :server ("ec2.amazonaws.com") The server API endpoint host
108
- # @option options [String] :proxy_server (nil) An HTTP proxy server FQDN
109
- # @return [Object] the object.
110
- def initialize( options = {} )
111
-
112
- options = { :access_key_id => "",
113
- :secret_access_key => "",
114
- :use_ssl => true,
115
- :server => default_host,
116
- :proxy_server => nil
117
- }.merge(options)
118
-
119
- @server = options[:server]
120
- @proxy_server = options[:proxy_server]
121
- @use_ssl = options[:use_ssl]
122
-
123
- raise ArgumentError, "No :access_key_id provided" if options[:access_key_id].nil? || options[:access_key_id].empty?
124
- raise ArgumentError, "No :secret_access_key provided" if options[:secret_access_key].nil? || options[:secret_access_key].empty?
125
- raise ArgumentError, "No :use_ssl value provided" if options[:use_ssl].nil?
126
- raise ArgumentError, "Invalid :use_ssl value provided, only 'true' or 'false' allowed" unless options[:use_ssl] == true || options[:use_ssl] == false
127
- raise ArgumentError, "No :server provided" if options[:server].nil? || options[:server].empty?
128
-
129
- if options[:port]
130
- # user-specified port
131
- @port = options[:port]
132
- elsif @use_ssl
133
- # https
134
- @port = 443
135
- else
136
- # http
137
- @port = 80
138
- end
139
-
140
- @access_key_id = options[:access_key_id]
141
- @secret_access_key = options[:secret_access_key]
142
-
143
- # Use proxy server if defined
144
- # Based on patch by Mathias Dalheimer. 20070217
145
- proxy = @proxy_server ? URI.parse(@proxy_server) : OpenStruct.new
146
- @http = Net::HTTP::Proxy( proxy.host,
147
- proxy.port,
148
- proxy.user,
149
- proxy.password).new(options[:server], @port)
150
-
151
- @http.use_ssl = @use_ssl
152
-
153
- # Don't verify the SSL certificates. Avoids SSL Cert warning in log on every GET.
154
- @http.verify_mode = OpenSSL::SSL::VERIFY_NONE
155
-
156
- end
157
-
158
-
159
- protected
160
-
161
- # pathlist is a utility method which takes a key string and and array as input.
162
- # It converts the array into a Hash with the hash key being 'Key.n' where
163
- # 'n' increments by 1 for each iteration. So if you pass in args
164
- # ("ImageId", ["123", "456"]) you should get
165
- # {"ImageId.1"=>"123", "ImageId.2"=>"456"} returned.
166
- def pathlist(key, arr)
167
- params = {}
168
-
169
- # ruby 1.9 will barf if we pass in a string instead of the array expected.
170
- # it will fail on each_with_index below since string is not enumerable.
171
- if arr.is_a? String
172
- new_arr = []
173
- new_arr << arr
174
- arr = new_arr
175
- end
176
-
177
- arr.each_with_index do |value, i|
178
- params["#{key}.#{i+1}"] = value
179
- end
180
- params
181
- end
182
-
183
- # Same as _pathlist_ except it deals with arrays of hashes.
184
- # So if you pass in args
185
- # ("People", [{:name=>'jon', :age=>'22'}, {:name=>'chris'}], {:name => 'Name', :age => 'Age'}) you should get
186
- # {"People.1.Name"=>"jon", "People.1.Age"=>'22', 'People.2.Name'=>'chris'}
187
- def pathhashlist(key, arr_of_hashes, mappings)
188
- raise ArgumentError, "expected a key that is a String" unless key.is_a? String
189
- raise ArgumentError, "expected a arr_of_hashes that is an Array" unless arr_of_hashes.is_a? Array
190
- arr_of_hashes.each{|h| raise ArgumentError, "expected each element of arr_of_hashes to be a Hash" unless h.is_a?(Hash)}
191
- raise ArgumentError, "expected a mappings that is an Hash" unless mappings.is_a? Hash
192
- params = {}
193
- arr_of_hashes.each_with_index do |hash, i|
194
- hash.each do |attribute, value|
195
- params["#{key}.#{i+1}.#{mappings[attribute]}"] = value.to_s
196
- end
197
- end
198
- params
199
- end
200
-
201
- # Make the connection to AWS EC2 passing in our request. This is generally called from
202
- # within a 'Response' class object or one of its sub-classes so the response is interpreted
203
- # in its proper context. See lib/EC2/responses.rb
204
- def make_request(action, params, data='')
205
-
206
- @http.start do
207
-
208
- # remove any keys that have nil or empty values
209
- params.reject! { |key, value| value.nil? or value.empty?}
210
-
211
- params.merge!( {"Action" => action,
212
- "SignatureVersion" => "2",
213
- "SignatureMethod" => 'HmacSHA1',
214
- "AWSAccessKeyId" => @access_key_id,
215
- "Version" => api_version,
216
- "Timestamp"=>Time.now.getutc.iso8601} )
217
-
218
- sig = get_aws_auth_param(params, @secret_access_key, @server)
219
-
220
- query = params.sort.collect do |param|
221
- CGI::escape(param[0]) + "=" + CGI::escape(param[1])
222
- end.join("&") + "&Signature=" + sig
223
-
224
- req = Net::HTTP::Post.new("/")
225
- req.content_type = 'application/x-www-form-urlencoded'
226
- req['User-Agent'] = "github-amazon-ec2-ruby-gem"
227
-
228
- response = @http.request(req, query)
229
-
230
- # Make a call to see if we need to throw an error based on the response given by EC2
231
- # All error classes are defined in EC2/exceptions.rb
232
- aws_error?(response)
233
- return response
234
-
235
- end
236
-
237
- end
238
-
239
- # Set the Authorization header using AWS signed header authentication
240
- def get_aws_auth_param(params, secret_access_key, server)
241
- canonical_string = AWS.canonical_string(params, server)
242
- encoded_canonical = AWS.encode(secret_access_key, canonical_string)
243
- end
244
-
245
- # allow us to have a one line call in each method which will do all of the work
246
- # in making the actual request to AWS.
247
- def response_generator( options = {} )
248
-
249
- options = {
250
- :action => "",
251
- :params => {}
252
- }.merge(options)
253
-
254
- raise ArgumentError, ":action must be provided to response_generator" if options[:action].nil? || options[:action].empty?
255
-
256
- http_response = make_request(options[:action], options[:params])
257
- http_xml = http_response.body
258
- return Response.parse(:xml => http_xml)
259
-
260
- end
261
-
262
- # Raises the appropriate error if the specified Net::HTTPResponse object
263
- # contains an AWS error; returns +false+ otherwise.
264
- def aws_error?(response)
265
-
266
- # return false if we got a HTTP 200 code,
267
- # otherwise there is some type of error (40x,50x) and
268
- # we should try to raise an appropriate exception
269
- # from one of our exception classes defined in
270
- # exceptions.rb
271
- return false if response.is_a?(Net::HTTPSuccess)
272
-
273
- # parse the XML document so we can walk through it
274
- doc = REXML::Document.new(response.body)
275
-
276
- # Check that the Error element is in the place we would expect.
277
- # and if not raise a generic error exception
278
- unless doc.root.elements['Errors'].elements['Error'].name == 'Error'
279
- raise Error, "Unexpected error format. response.body is: #{response.body}"
280
- end
281
-
282
- # An valid error response looks like this:
283
- # <?xml version="1.0"?><Response><Errors><Error><Code>InvalidParameterCombination</Code><Message>Unknown parameter: foo</Message></Error></Errors><RequestID>291cef62-3e86-414b-900e-17246eccfae8</RequestID></Response>
284
- # AWS throws some exception codes that look like Error.SubError. Since we can't name classes this way
285
- # we need to strip out the '.' in the error 'Code' and we name the error exceptions with this
286
- # non '.' name as well.
287
- error_code = doc.root.elements['Errors'].elements['Error'].elements['Code'].text.gsub('.', '')
288
- error_message = doc.root.elements['Errors'].elements['Error'].elements['Message'].text
289
-
290
- # Raise one of our specific error classes if it exists.
291
- # otherwise, throw a generic EC2 Error with a few details.
292
- if AWS.const_defined?(error_code)
293
- raise AWS.const_get(error_code), error_message
294
- else
295
- raise AWS::Error, error_message
296
- end
297
-
298
- end
299
-
300
- end
301
- end
302
-
303
- Dir[File.join(File.dirname(__FILE__), 'AWS/**/*.rb')].sort.each { |lib| require lib }
304
-
@@ -1,132 +0,0 @@
1
- digraph "/usr/bin/ruby; 2043 samples" {
2
- node [width=0.375,height=0.25];
3
- Legend [shape=box,fontsize=24,shape=plaintext,label="/usr/bin/ruby\lTotal samples: 2043\lFocusing on: 2035\lDropped nodes with <= 10 abs(samples)\lDropped edges with <= 2 samples\l"];
4
- N1 [label="garbage_collector\n1298 (63.5%)\r",shape=box,fontsize=47.9];
5
- N2 [label="XmlSimple#xml_in\n0 (0.0%)\rof 507 (24.8%)\r",shape=box,fontsize=8.0];
6
- N3 [label="XmlSimple.xml_in\n0 (0.0%)\rof 469 (23.0%)\r",shape=box,fontsize=8.0];
7
- N4 [label="AWS\nResponse.parse\n0 (0.0%)\rof 442 (21.6%)\r",shape=box,fontsize=8.0];
8
- N5 [label="AWS\nBase#response_generator\n0 (0.0%)\rof 431 (21.1%)\r",shape=box,fontsize=8.0];
9
- N6 [label="AWS\nEC2\nBase#describe_images\n0 (0.0%)\rof 422 (20.7%)\r",shape=box,fontsize=8.0];
10
- N7 [label="Class#new\n142 (7.0%)\rof 371 (18.2%)\r",shape=box,fontsize=21.2];
11
- N8 [label="REXML\nDocument#build\n14 (0.7%)\rof 370 (18.1%)\r",shape=box,fontsize=12.1];
12
- N9 [label="REXML\nDocument#initialize\n0 (0.0%)\rof 370 (18.1%)\r",shape=box,fontsize=8.0];
13
- N10 [label="XmlSimple#parse\n0 (0.0%)\rof 370 (18.1%)\r",shape=box,fontsize=8.0];
14
- N11 [label="REXML\nParsers\nTreeParser#parse\n65 (3.2%)\rof 355 (17.4%)\r",shape=box,fontsize=16.9];
15
- N12 [label="REXML\nElement#each_element\n5 (0.2%)\rof 338 (16.5%)\r",shape=box,fontsize=10.5];
16
- N13 [label="REXML\nElements#each\n11 (0.5%)\rof 338 (16.5%)\r",shape=box,fontsize=11.7];
17
- N14 [label="REXML\nXPath.each\n4 (0.2%)\rof 338 (16.5%)\r",shape=box,fontsize=10.2];
18
- N15 [label="XmlSimple#collapse\n45 (2.2%)\rof 338 (16.5%)\r",shape=box,fontsize=15.4];
19
- N16 [label="REXML\nParsers\nBaseParser#pull\n14 (0.7%)\rof 107 (5.2%)\r",shape=box,fontsize=12.1];
20
- N17 [label="XmlSimple#collapse_text_node\n20 (1.0%)\rof 97 (4.7%)\r",shape=box,fontsize=13.0];
21
- N18 [label="REXML\nElement#add_element\n2 (0.1%)\rof 94 (4.6%)\r",shape=box,fontsize=9.6];
22
- N19 [label="REXML\nElements#add\n2 (0.1%)\rof 92 (4.5%)\r",shape=box,fontsize=9.6];
23
- N20 [label="REXML\nElement#initialize\n18 (0.9%)\rof 81 (4.0%)\r",shape=box,fontsize=12.7];
24
- N21 [label="XmlSimple#node_to_text\n6 (0.3%)\rof 76 (3.7%)\r",shape=box,fontsize=10.7];
25
- N22 [label="REXML\nText#value\n19 (0.9%)\rof 74 (3.6%)\r",shape=box,fontsize=12.8];
26
- N23 [label="REXML\nElement#has_elements?\n0 (0.0%)\rof 55 (2.7%)\r",shape=box,fontsize=8.0];
27
- N24 [label="REXML\nElement#has_text?\n3 (0.1%)\rof 55 (2.7%)\r",shape=box,fontsize=9.9];
28
- N25 [label="REXML\nElements#empty?\n2 (0.1%)\rof 55 (2.7%)\r",shape=box,fontsize=9.6];
29
- N26 [label="REXML\nChild#find\n50 (2.4%)\rof 54 (2.6%)\r",shape=box,fontsize=15.8];
30
- N27 [label="REXML\nElement#text\n5 (0.2%)\rof 52 (2.5%)\r",shape=box,fontsize=10.5];
31
- N28 [label="REXML\nElement#texts\n5 (0.2%)\rof 45 (2.2%)\r",shape=box,fontsize=10.5];
32
- N29 [label="REXML\nSource#match\n44 (2.2%)\r",shape=box,fontsize=15.4];
33
- N30 [label="REXML\nChild#find_all\n37 (1.8%)\rof 40 (2.0%)\r",shape=box,fontsize=14.7];
34
- N31 [label="Array#map\n2 (0.1%)\rof 36 (1.8%)\r",shape=box,fontsize=9.6];
35
- N32 [label="Array#each\n7 (0.3%)\rof 33 (1.6%)\r",shape=box,fontsize=10.9];
36
- N33 [label="REXML\nElement#document\n11 (0.5%)\rof 29 (1.4%)\r",shape=box,fontsize=11.7];
37
- N34 [label="XmlSimple#has_mixed_content?\n3 (0.1%)\rof 29 (1.4%)\r",shape=box,fontsize=9.9];
38
- N35 [label="REXML\nXPathParser#parse\n0 (0.0%)\rof 23 (1.1%)\r",shape=box,fontsize=8.0];
39
- N36 [label="REXML\nParent#initialize\n17 (0.8%)\rof 22 (1.1%)\r",shape=box,fontsize=12.6];
40
- N37 [label="Set#initialize\n2 (0.1%)\rof 22 (1.1%)\r",shape=box,fontsize=9.6];
41
- N38 [label="XmlSimple#merge\n13 (0.6%)\rof 21 (1.0%)\r",shape=box,fontsize=12.0];
42
- N39 [label="AWS\nBase#make_request\n0 (0.0%)\rof 20 (1.0%)\r",shape=box,fontsize=8.0];
43
- N40 [label="Net\nHTTP#request\n0 (0.0%)\rof 20 (1.0%)\r",shape=box,fontsize=8.0];
44
- N41 [label="Net\nHTTP#start\n0 (0.0%)\rof 20 (1.0%)\r",shape=box,fontsize=8.0];
45
- N42 [label="Net\nHTTPResponse#body\n0 (0.0%)\rof 20 (1.0%)\r",shape=box,fontsize=8.0];
46
- N43 [label="Net\nHTTPResponse#read_body\n0 (0.0%)\rof 20 (1.0%)\r",shape=box,fontsize=8.0];
47
- N44 [label="Net\nHTTPResponse#read_body_0\n0 (0.0%)\rof 20 (1.0%)\r",shape=box,fontsize=8.0];
48
- N45 [label="Net\nHTTPResponse#read_chunked\n0 (0.0%)\rof 20 (1.0%)\r",shape=box,fontsize=8.0];
49
- N46 [label="Net\nHTTPResponse#reading_body\n0 (0.0%)\rof 20 (1.0%)\r",shape=box,fontsize=8.0];
50
- N47 [label="Net\nBufferedIO#read\n5 (0.2%)\rof 19 (0.9%)\r",shape=box,fontsize=10.5];
51
- N48 [label="REXML\nText#initialize\n17 (0.8%)\rof 19 (0.9%)\r",shape=box,fontsize=12.6];
52
- N49 [label="REXML\nElement#root\n18 (0.9%)\r",shape=box,fontsize=12.7];
53
- N50 [label="REXML\nText.unnormalize\n16 (0.8%)\rof 18 (0.9%)\r",shape=box,fontsize=12.4];
54
- N51 [label="REXML\nParent#each\n2 (0.1%)\rof 16 (0.8%)\r",shape=box,fontsize=9.6];
55
- N52 [label="REXML\nParsers\nXPathParser#parse\n4 (0.2%)\rof 15 (0.7%)\r",shape=box,fontsize=10.2];
56
- N53 [label="Net\nBufferedIO#rbuf_fill\n13 (0.6%)\rof 14 (0.7%)\r",shape=box,fontsize=12.0];
57
- N54 [label="Object#timeout\n0 (0.0%)\rof 14 (0.7%)\r",shape=box,fontsize=8.0];
58
- N55 [label="Timeout.timeout\n1 (0.0%)\rof 14 (0.7%)\r",shape=box,fontsize=9.1];
59
- N56 [label="REXML\nParsers\nXPathParser#OrExpr\n2 (0.1%)\rof 11 (0.5%)\r",shape=box,fontsize=9.6];
60
- N22 -> N50 [label=18, weight=7, style="setlinewidth(0.053071)"];
61
- N13 -> N14 [label=911, weight=117, style="setlinewidth(2.000000)"];
62
- N20 -> N7 [label=32, weight=11, style="setlinewidth(0.094349)"];
63
- N21 -> N31 [label=36, weight=12, style="setlinewidth(0.106143)"];
64
- N14 -> N13 [label=904, weight=117, style="setlinewidth(2.000000)"];
65
- N7 -> N48 [label=19, weight=7, style="setlinewidth(0.056020)"];
66
- N22 -> N33 [label=29, weight=10, style="setlinewidth(0.085504)"];
67
- N44 -> N45 [label=20, weight=8, style="setlinewidth(0.058968)"];
68
- N51 -> N32 [label=14, weight=6, style="setlinewidth(0.041278)"];
69
- N16 -> N7 [label=43, weight=13, style="setlinewidth(0.126781)"];
70
- N20 -> N36 [label=22, weight=8, style="setlinewidth(0.064865)"];
71
- N7 -> N20 [label=81, weight=21, style="setlinewidth(0.238821)"];
72
- N34 -> N28 [label=7, weight=3, style="setlinewidth(0.020639)"];
73
- N15 -> N34 [label=29, weight=10, style="setlinewidth(0.085504)"];
74
- N16 -> N29 [label=44, weight=14, style="setlinewidth(0.129730)"];
75
- N27 -> N22 [label=44, weight=14, style="setlinewidth(0.129730)"];
76
- N32 -> N26 [label=7, weight=3, style="setlinewidth(0.020639)"];
77
- N25 -> N26 [label=54, weight=16, style="setlinewidth(0.159214)"];
78
- N15 -> N17 [label=97, weight=24, style="setlinewidth(0.285995)"];
79
- N26 -> N51 [label=10, weight=5, style="setlinewidth(0.029484)"];
80
- N4 -> N3 [label=442, weight=71, style="setlinewidth(1.303194)"];
81
- N54 -> N55 [label=14, weight=6, style="setlinewidth(0.041278)"];
82
- N15 -> N23 [label=46, weight=14, style="setlinewidth(0.135627)"];
83
- N45 -> N47 [label=19, weight=7, style="setlinewidth(0.056020)"];
84
- N9 -> N8 [label=370, weight=62, style="setlinewidth(1.090909)"];
85
- N7 -> N9 [label=370, weight=62, style="setlinewidth(1.090909)"];
86
- N37 -> N7 [label=20, weight=8, style="setlinewidth(0.058968)"];
87
- N55 -> N53 [label=13, weight=6, style="setlinewidth(0.038329)"];
88
- N24 -> N27 [label=52, weight=15, style="setlinewidth(0.153317)"];
89
- N11 -> N7 [label=77, weight=20, style="setlinewidth(0.227027)"];
90
- N40 -> N46 [label=20, weight=8, style="setlinewidth(0.058968)"];
91
- N21 -> N28 [label=38, weight=12, style="setlinewidth(0.112039)"];
92
- N43 -> N44 [label=20, weight=8, style="setlinewidth(0.058968)"];
93
- N5 -> N39 [label=20, weight=8, style="setlinewidth(0.058968)"];
94
- N13 -> N15 [label=922, weight=118, style="setlinewidth(2.000000)"];
95
- N10 -> N7 [label=370, weight=62, style="setlinewidth(1.090909)"];
96
- N5 -> N4 [label=411, weight=67, style="setlinewidth(1.211794)"];
97
- N15 -> N15 [label=892, weight=116, style="setlinewidth(2.000000)"];
98
- N15 -> N12 [label=801, weight=107, style="setlinewidth(2.000000)"];
99
- N17 -> N21 [label=76, weight=20, style="setlinewidth(0.224079)"];
100
- N14 -> N35 [label=23, weight=8, style="setlinewidth(0.067813)"];
101
- N30 -> N51 [label=6, weight=3, style="setlinewidth(0.017690)"];
102
- N52 -> N56 [label=11, weight=5, style="setlinewidth(0.032432)"];
103
- N39 -> N40 [label=20, weight=8, style="setlinewidth(0.058968)"];
104
- N8 -> N11 [label=355, weight=60, style="setlinewidth(1.046683)"];
105
- N2 -> N15 [label=137, weight=31, style="setlinewidth(0.403931)"];
106
- N34 -> N23 [label=9, weight=4, style="setlinewidth(0.026536)"];
107
- N39 -> N41 [label=20, weight=8, style="setlinewidth(0.058968)"];
108
- N12 -> N13 [label=857, weight=113, style="setlinewidth(2.000000)"];
109
- N11 -> N16 [label=107, weight=26, style="setlinewidth(0.315479)"];
110
- N2 -> N10 [label=370, weight=62, style="setlinewidth(1.090909)"];
111
- N19 -> N7 [label=91, weight=23, style="setlinewidth(0.268305)"];
112
- N34 -> N24 [label=9, weight=4, style="setlinewidth(0.026536)"];
113
- N15 -> N38 [label=21, weight=8, style="setlinewidth(0.061916)"];
114
- N21 -> N22 [label=30, weight=10, style="setlinewidth(0.088452)"];
115
- N53 -> N54 [label=14, weight=6, style="setlinewidth(0.041278)"];
116
- N46 -> N42 [label=20, weight=8, style="setlinewidth(0.058968)"];
117
- N31 -> N21 [label=34, weight=11, style="setlinewidth(0.100246)"];
118
- N41 -> N39 [label=20, weight=8, style="setlinewidth(0.058968)"];
119
- N23 -> N25 [label=55, weight=16, style="setlinewidth(0.162162)"];
120
- N7 -> N37 [label=22, weight=8, style="setlinewidth(0.064865)"];
121
- N3 -> N2 [label=469, weight=74, style="setlinewidth(1.382801)"];
122
- N35 -> N52 [label=15, weight=6, style="setlinewidth(0.044226)"];
123
- N47 -> N53 [label=14, weight=6, style="setlinewidth(0.041278)"];
124
- N6 -> N5 [label=422, weight=68, style="setlinewidth(1.244226)"];
125
- N32 -> N30 [label=3, weight=2, style="setlinewidth(0.008845)"];
126
- N42 -> N43 [label=20, weight=8, style="setlinewidth(0.058968)"];
127
- N33 -> N49 [label=18, weight=7, style="setlinewidth(0.053071)"];
128
- N11 -> N18 [label=94, weight=24, style="setlinewidth(0.277150)"];
129
- N28 -> N30 [label=40, weight=13, style="setlinewidth(0.117936)"];
130
- N18 -> N19 [label=92, weight=23, style="setlinewidth(0.271253)"];
131
- N15 -> N24 [label=46, weight=14, style="setlinewidth(0.135627)"];
132
- }