poolparty 1.6.6 → 1.6.7

Sign up to get free protection for your applications and to get access to all the features.
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
- }