poolparty 1.4.6 → 1.4.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.
- data/VERSION.yml +2 -2
- data/bin/cloud-contract +6 -1
- data/bin/cloud-list +5 -6
- data/bin/cloud-vnc +39 -0
- data/examples/rds_cloud.rb +44 -0
- data/lib/cloud_providers/connections.rb +0 -1
- data/lib/cloud_providers/ec2/ec2.rb +86 -25
- data/lib/cloud_providers/ec2/ec2_instance.rb +6 -2
- data/lib/cloud_providers/ec2/helpers/ec2_helper.rb +19 -6
- data/lib/cloud_providers/ec2/helpers/elastic_load_balancer.rb +3 -3
- data/lib/cloud_providers/ec2/helpers/rds_instance.rb +110 -0
- data/lib/cloud_providers/remote_instance.rb +5 -3
- data/lib/poolparty/cloud.rb +8 -3
- data/lib/poolparty/pool.rb +12 -0
- data/test/fixtures/clouds/rds_cloud.rb +14 -0
- data/test/fixtures/clouds/rds_missing_params.rb +11 -0
- data/test/fixtures/ec2/ec2-describe-security-groups_response_body.xml +23 -0
- data/test/fixtures/ec2/rds-describe-db-instances-empty_response_body.xml +9 -0
- data/test/lib/poolparty/rds_test.rb +35 -0
- data/test/test_helper.rb +4 -4
- data/vendor/gems/amazon-ec2/ChangeLog +15 -0
- data/vendor/gems/amazon-ec2/README.rdoc +27 -24
- data/vendor/gems/amazon-ec2/README_dev.rdoc +0 -2
- data/vendor/gems/amazon-ec2/Rakefile +8 -39
- data/vendor/gems/amazon-ec2/VERSION +1 -1
- data/vendor/gems/amazon-ec2/amazon-ec2.gemspec +24 -16
- data/vendor/gems/amazon-ec2/bin/setup.rb +1 -0
- data/vendor/gems/amazon-ec2/lib/AWS/Autoscaling/autoscaling.rb +6 -16
- data/vendor/gems/amazon-ec2/lib/AWS/EC2/availability_zones.rb +8 -0
- data/vendor/gems/amazon-ec2/lib/AWS/EC2/console.rb +2 -0
- data/vendor/gems/amazon-ec2/lib/AWS/EC2/devpay.rb +18 -0
- data/vendor/gems/amazon-ec2/lib/AWS/EC2/elastic_ips.rb +37 -32
- data/vendor/gems/amazon-ec2/lib/AWS/EC2/images.rb +43 -27
- data/vendor/gems/amazon-ec2/lib/AWS/EC2/instances.rb +136 -99
- data/vendor/gems/amazon-ec2/lib/AWS/EC2/keypairs.rb +3 -17
- data/vendor/gems/amazon-ec2/lib/AWS/EC2/security_groups.rb +4 -23
- data/vendor/gems/amazon-ec2/lib/AWS/EC2/snapshots.rb +38 -17
- data/vendor/gems/amazon-ec2/lib/AWS/EC2/volumes.rb +6 -21
- data/vendor/gems/amazon-ec2/lib/AWS/EC2.rb +2 -2
- data/vendor/gems/amazon-ec2/lib/AWS/ELB/load_balancers.rb +11 -38
- data/vendor/gems/amazon-ec2/lib/AWS/RDS/rds.rb +522 -0
- data/vendor/gems/amazon-ec2/lib/AWS/RDS.rb +73 -0
- data/vendor/gems/amazon-ec2/lib/AWS/exceptions.rb +103 -25
- data/vendor/gems/amazon-ec2/lib/AWS.rb +19 -9
- data/vendor/gems/amazon-ec2/perftools/ec2prof +0 -0
- data/vendor/gems/amazon-ec2/perftools/ec2prof-results.dot +130 -191
- data/vendor/gems/amazon-ec2/perftools/ec2prof-results.txt +100 -126
- data/vendor/gems/amazon-ec2/perftools/ec2prof.symbols +102 -129
- data/vendor/gems/amazon-ec2/test/test_Autoscaling_groups.rb +3 -2
- data/vendor/gems/amazon-ec2/test/test_EC2_images.rb +32 -0
- data/vendor/gems/amazon-ec2/test/test_EC2_instances.rb +204 -22
- data/vendor/gems/amazon-ec2/test/test_EC2_snapshots.rb +1 -1
- data/vendor/gems/amazon-ec2/test/test_ELB_load_balancers.rb +2 -2
- data/vendor/gems/amazon-ec2/test/test_RDS.rb +354 -0
- data/vendor/gems/amazon-ec2/wsdl/2009-10-31.ec2.wsdl +4261 -0
- data/vendor/gems/amazon-ec2/wsdl/2009-11-30.ec2.wsdl +4668 -0
- metadata +17 -2
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
#--
|
|
2
|
-
# AWS
|
|
3
|
-
# AWS
|
|
2
|
+
# AWS ERROR CODES
|
|
3
|
+
# AWS can throw error exceptions that contain a '.' in them.
|
|
4
4
|
# since we can't name an exception class with that '.' I compressed
|
|
5
|
-
# each class name into the non-dot version
|
|
5
|
+
# each class name into the non-dot version which allows us to retain
|
|
6
6
|
# the granularity of the exception.
|
|
7
7
|
#++
|
|
8
8
|
|
|
@@ -14,17 +14,26 @@ module AWS
|
|
|
14
14
|
# CLIENT : A client side argument error
|
|
15
15
|
class ArgumentError < Error; end
|
|
16
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
|
+
|
|
17
26
|
# EC2 : User not authorized.
|
|
18
27
|
class AuthFailure < Error; end
|
|
19
28
|
|
|
20
|
-
# EC2 :
|
|
21
|
-
class
|
|
29
|
+
# EC2 : Volume is in incorrect state
|
|
30
|
+
class IncorrectState < Error; end
|
|
22
31
|
|
|
23
|
-
# EC2 :
|
|
24
|
-
class
|
|
32
|
+
# EC2 : User has max allowed concurrent running instances.
|
|
33
|
+
class InstanceLimitExceeded < Error; end
|
|
25
34
|
|
|
26
|
-
# EC2 :
|
|
27
|
-
class
|
|
35
|
+
# EC2 : The value of an item added to, or removed from, an image attribute is invalid.
|
|
36
|
+
class InvalidAMIAttributeItemValue < Error; end
|
|
28
37
|
|
|
29
38
|
# EC2 : Specified AMI ID is not valid.
|
|
30
39
|
class InvalidAMIIDMalformed < Error; end
|
|
@@ -35,6 +44,12 @@ module AWS
|
|
|
35
44
|
# EC2 : Specified AMI ID has been deregistered and is no longer available.
|
|
36
45
|
class InvalidAMIIDUnavailable < Error; end
|
|
37
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
|
+
|
|
38
53
|
# EC2 : Specified instance ID is not valid.
|
|
39
54
|
class InvalidInstanceIDMalformed < Error; end
|
|
40
55
|
|
|
@@ -59,6 +74,15 @@ module AWS
|
|
|
59
74
|
# EC2 : Specified group name is a reserved name.
|
|
60
75
|
class InvalidGroupReserved < Error; end
|
|
61
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
|
+
|
|
62
86
|
# EC2 : Attempt to authorize a permission that has already been authorized.
|
|
63
87
|
class InvalidPermissionDuplicate < Error; end
|
|
64
88
|
|
|
@@ -71,22 +95,79 @@ module AWS
|
|
|
71
95
|
# EC2 : Specified reservation ID does not exist.
|
|
72
96
|
class InvalidReservationIDNotFound < Error; end
|
|
73
97
|
|
|
74
|
-
# EC2 :
|
|
75
|
-
class
|
|
98
|
+
# EC2 : The snapshot ID that was passed as an argument was malformed.
|
|
99
|
+
class InvalidSnapshotIDMalformed < Error; end
|
|
76
100
|
|
|
77
|
-
# EC2 :
|
|
78
|
-
class
|
|
79
|
-
|
|
80
|
-
# EC2 : An unknown parameter was passed as an argument
|
|
81
|
-
class UnknownParameter < Error; end
|
|
101
|
+
# EC2 : The specified snapshot does not exist.
|
|
102
|
+
class InvalidSnapshotIDNotFound < Error; end
|
|
82
103
|
|
|
83
104
|
# EC2 : The user ID is neither in the form of an AWS account ID or one
|
|
84
105
|
# of the special values accepted by the owner or executableBy flags
|
|
85
106
|
# in the DescribeImages call.
|
|
86
107
|
class InvalidUserIDMalformed < Error; end
|
|
87
108
|
|
|
88
|
-
# EC2 :
|
|
89
|
-
class
|
|
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
|
+
############################
|
|
90
171
|
|
|
91
172
|
# ELB : The Load balancer specified was not found.
|
|
92
173
|
class LoadBalancerNotFound < Error; end
|
|
@@ -106,14 +187,11 @@ module AWS
|
|
|
106
187
|
# ELB :
|
|
107
188
|
class InvalidConfigurationRequest < Error; end
|
|
108
189
|
|
|
109
|
-
#
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
# Server : There are not enough available instances to satisfy your minimum request.
|
|
113
|
-
class InsufficientInstanceCapacity < Error; end
|
|
190
|
+
# API Errors
|
|
191
|
+
############################
|
|
114
192
|
|
|
115
|
-
# Server :
|
|
116
|
-
class
|
|
193
|
+
# Server : Invalid AWS Account
|
|
194
|
+
class InvalidClientTokenId < Error; end
|
|
117
195
|
|
|
118
196
|
# Server : The provided signature does not match.
|
|
119
197
|
class SignatureDoesNotMatch < Error; end
|
|
@@ -11,7 +11,6 @@
|
|
|
11
11
|
%w[ base64 cgi openssl digest/sha1 net/https rexml/document time ostruct ].each { |f| require f }
|
|
12
12
|
|
|
13
13
|
begin
|
|
14
|
-
require "rubygems"
|
|
15
14
|
require 'xmlsimple' unless defined? XmlSimple
|
|
16
15
|
rescue Exception => e
|
|
17
16
|
require 'xml-simple' unless defined? XmlSimple
|
|
@@ -29,6 +28,14 @@ class Hash
|
|
|
29
28
|
self[meth.to_s] || self[meth.to_sym]
|
|
30
29
|
end
|
|
31
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
|
|
32
39
|
end
|
|
33
40
|
|
|
34
41
|
|
|
@@ -178,10 +185,14 @@ module AWS
|
|
|
178
185
|
# ("People", [{:name=>'jon', :age=>'22'}, {:name=>'chris'}], {:name => 'Name', :age => 'Age'}) you should get
|
|
179
186
|
# {"People.1.Name"=>"jon", "People.1.Age"=>'22', 'People.2.Name'=>'chris'}
|
|
180
187
|
def pathhashlist(key, arr_of_hashes, mappings)
|
|
181
|
-
|
|
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 = {}
|
|
182
193
|
arr_of_hashes.each_with_index do |hash, i|
|
|
183
194
|
hash.each do |attribute, value|
|
|
184
|
-
params["#{key}.#{i+1}.#{mappings[attribute]}"] = value
|
|
195
|
+
params["#{key}.#{i+1}.#{mappings[attribute]}"] = value.to_s
|
|
185
196
|
end
|
|
186
197
|
end
|
|
187
198
|
params
|
|
@@ -213,9 +224,9 @@ module AWS
|
|
|
213
224
|
req = Net::HTTP::Post.new("/")
|
|
214
225
|
req.content_type = 'application/x-www-form-urlencoded'
|
|
215
226
|
req['User-Agent'] = "github-amazon-ec2-ruby-gem"
|
|
216
|
-
|
|
227
|
+
|
|
217
228
|
response = @http.request(req, query)
|
|
218
|
-
|
|
229
|
+
|
|
219
230
|
# Make a call to see if we need to throw an error based on the response given by EC2
|
|
220
231
|
# All error classes are defined in EC2/exceptions.rb
|
|
221
232
|
aws_error?(response)
|
|
@@ -241,16 +252,15 @@ module AWS
|
|
|
241
252
|
}.merge(options)
|
|
242
253
|
|
|
243
254
|
raise ArgumentError, ":action must be provided to response_generator" if options[:action].nil? || options[:action].empty?
|
|
244
|
-
|
|
245
|
-
http_response = make_request(options[:action], options[:params])
|
|
246
255
|
|
|
256
|
+
http_response = make_request(options[:action], options[:params])
|
|
247
257
|
http_xml = http_response.body
|
|
248
258
|
return Response.parse(:xml => http_xml)
|
|
249
259
|
|
|
250
260
|
end
|
|
251
261
|
|
|
252
262
|
# Raises the appropriate error if the specified Net::HTTPResponse object
|
|
253
|
-
# contains an
|
|
263
|
+
# contains an AWS error; returns +false+ otherwise.
|
|
254
264
|
def aws_error?(response)
|
|
255
265
|
|
|
256
266
|
# return false if we got a HTTP 200 code,
|
|
@@ -271,7 +281,7 @@ module AWS
|
|
|
271
281
|
|
|
272
282
|
# An valid error response looks like this:
|
|
273
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>
|
|
274
|
-
# AWS
|
|
284
|
+
# AWS throws some exception codes that look like Error.SubError. Since we can't name classes this way
|
|
275
285
|
# we need to strip out the '.' in the error 'Code' and we name the error exceptions with this
|
|
276
286
|
# non '.' name as well.
|
|
277
287
|
error_code = doc.root.elements['Errors'].elements['Error'].elements['Code'].text.gsub('.', '')
|
|
Binary file
|
|
@@ -1,193 +1,132 @@
|
|
|
1
|
-
digraph "/usr/
|
|
1
|
+
digraph "/usr/bin/ruby; 2043 samples" {
|
|
2
2
|
node [width=0.375,height=0.25];
|
|
3
|
-
Legend [shape=box,fontsize=24,shape=plaintext,label="/usr/
|
|
4
|
-
N1 [label="
|
|
5
|
-
N2 [label="XmlSimple
|
|
6
|
-
N3 [label="
|
|
7
|
-
N4 [label="
|
|
8
|
-
N5 [label="
|
|
9
|
-
N6 [label="
|
|
10
|
-
N7 [label="
|
|
11
|
-
N8 [label="
|
|
12
|
-
N9 [label="
|
|
13
|
-
N10 [label="
|
|
14
|
-
N11 [label="REXML\nParsers\nTreeParser#parse\
|
|
15
|
-
N12 [label="REXML\
|
|
16
|
-
N13 [label="
|
|
17
|
-
N14 [label="REXML\
|
|
18
|
-
N15 [label="
|
|
19
|
-
N16 [label="
|
|
20
|
-
N17 [label="
|
|
21
|
-
N18 [label="
|
|
22
|
-
N19 [label="
|
|
23
|
-
N20 [label="REXML\nElement#
|
|
24
|
-
N21 [label="
|
|
25
|
-
N22 [label="
|
|
26
|
-
N23 [label="REXML\
|
|
27
|
-
N24 [label="REXML\
|
|
28
|
-
N25 [label="REXML\
|
|
29
|
-
N26 [label="
|
|
30
|
-
N27 [label="
|
|
31
|
-
N28 [label="REXML\
|
|
32
|
-
N29 [label="REXML\
|
|
33
|
-
N30 [label="REXML\
|
|
34
|
-
N31 [label="
|
|
35
|
-
N32 [label="
|
|
36
|
-
N33 [label="REXML\nElement#
|
|
37
|
-
N34 [label="
|
|
38
|
-
N35 [label="REXML\
|
|
39
|
-
N36 [label="REXML\nParent#
|
|
40
|
-
N37 [label="
|
|
41
|
-
N38 [label="
|
|
42
|
-
N39 [label="
|
|
43
|
-
N40 [label="
|
|
44
|
-
N41 [label="
|
|
45
|
-
N42 [label="
|
|
46
|
-
N43 [label="
|
|
47
|
-
N44 [label="
|
|
48
|
-
N45 [label="
|
|
49
|
-
N46 [label="
|
|
50
|
-
N47 [label="
|
|
51
|
-
N48 [label="REXML\
|
|
52
|
-
N49 [label="REXML\
|
|
53
|
-
N50 [label="REXML\
|
|
54
|
-
N51 [label="REXML\nParent#
|
|
55
|
-
N52 [label="REXML\
|
|
56
|
-
N53 [label="
|
|
57
|
-
N54 [label="
|
|
58
|
-
N55 [label="
|
|
59
|
-
N56 [label="
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
N15 ->
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
N39 -> N41 [label=
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
N18 -> N27 [label=124, weight=29, style="setlinewidth(0.342857)"];
|
|
133
|
-
N65 -> N63 [label=32, weight=11, style="setlinewidth(0.088479)"];
|
|
134
|
-
N11 -> N80 [label=22, weight=8, style="setlinewidth(0.060829)"];
|
|
135
|
-
N33 -> N33 [label=77, weight=20, style="setlinewidth(0.212903)"];
|
|
136
|
-
N4 -> N5 [label=2408, weight=232, style="setlinewidth(2.000000)"];
|
|
137
|
-
N50 -> N18 [label=5, weight=3, style="setlinewidth(0.013825)"];
|
|
138
|
-
N13 -> N10 [label=801, weight=107, style="setlinewidth(2.000000)"];
|
|
139
|
-
N28 -> N27 [label=116, weight=27, style="setlinewidth(0.320737)"];
|
|
140
|
-
N8 -> N2 [label=934, weight=120, style="setlinewidth(2.000000)"];
|
|
141
|
-
N5 -> N5 [label=2446, weight=235, style="setlinewidth(2.000000)"];
|
|
142
|
-
N49 -> N53 [label=38, weight=12, style="setlinewidth(0.105069)"];
|
|
143
|
-
N5 -> N3 [label=2152, weight=215, style="setlinewidth(2.000000)"];
|
|
144
|
-
N10 -> N32 [label=3, weight=2, style="setlinewidth(0.008295)"];
|
|
145
|
-
N19 -> N22 [label=233, weight=45, style="setlinewidth(0.644240)"];
|
|
146
|
-
N42 -> N59 [label=34, weight=11, style="setlinewidth(0.094009)"];
|
|
147
|
-
N6 -> N38 [label=86, weight=22, style="setlinewidth(0.237788)"];
|
|
148
|
-
N54 -> N70 [label=30, weight=10, style="setlinewidth(0.082949)"];
|
|
149
|
-
N44 -> N45 [label=44, weight=14, style="setlinewidth(0.121659)"];
|
|
150
|
-
N34 -> N24 [label=93, weight=23, style="setlinewidth(0.257143)"];
|
|
151
|
-
N12 -> N11 [label=801, weight=107, style="setlinewidth(2.000000)"];
|
|
152
|
-
N1 -> N5 [label=312, weight=55, style="setlinewidth(0.862673)"];
|
|
153
|
-
N11 -> N78 [label=24, weight=9, style="setlinewidth(0.066359)"];
|
|
154
|
-
N31 -> N37 [label=11, weight=5, style="setlinewidth(0.030415)"];
|
|
155
|
-
N71 -> N75 [label=25, weight=9, style="setlinewidth(0.069124)"];
|
|
156
|
-
N3 -> N4 [label=2226, weight=220, style="setlinewidth(2.000000)"];
|
|
157
|
-
N11 -> N15 [label=462, weight=73, style="setlinewidth(1.277419)"];
|
|
158
|
-
N7 -> N57 [label=34, weight=11, style="setlinewidth(0.094009)"];
|
|
159
|
-
N38 -> N47 [label=42, weight=13, style="setlinewidth(0.116129)"];
|
|
160
|
-
N32 -> N10 [label=97, weight=24, style="setlinewidth(0.268203)"];
|
|
161
|
-
N1 -> N13 [label=801, weight=107, style="setlinewidth(2.000000)"];
|
|
162
|
-
N31 -> N20 [label=29, weight=10, style="setlinewidth(0.080184)"];
|
|
163
|
-
N5 -> N54 [label=37, weight=12, style="setlinewidth(0.102304)"];
|
|
164
|
-
N27 -> N48 [label=10, weight=5, style="setlinewidth(0.027650)"];
|
|
165
|
-
N22 -> N17 [label=131, weight=30, style="setlinewidth(0.362212)"];
|
|
166
|
-
N73 -> N74 [label=27, weight=10, style="setlinewidth(0.074654)"];
|
|
167
|
-
N45 -> N49 [label=41, weight=13, style="setlinewidth(0.113364)"];
|
|
168
|
-
N66 -> N68 [label=32, weight=11, style="setlinewidth(0.088479)"];
|
|
169
|
-
N26 -> N22 [label=152, weight=33, style="setlinewidth(0.420276)"];
|
|
170
|
-
N11 -> N36 [label=95, weight=24, style="setlinewidth(0.262673)"];
|
|
171
|
-
N37 -> N39 [label=83, weight=22, style="setlinewidth(0.229493)"];
|
|
172
|
-
N7 -> N8 [label=911, weight=117, style="setlinewidth(2.000000)"];
|
|
173
|
-
N60 -> N32 [label=28, weight=10, style="setlinewidth(0.077419)"];
|
|
174
|
-
N9 -> N7 [label=918, weight=118, style="setlinewidth(2.000000)"];
|
|
175
|
-
N18 -> N50 [label=5, weight=3, style="setlinewidth(0.013825)"];
|
|
176
|
-
N10 -> N43 [label=46, weight=14, style="setlinewidth(0.127189)"];
|
|
177
|
-
N38 -> N44 [label=44, weight=14, style="setlinewidth(0.121659)"];
|
|
178
|
-
N2 -> N1 [label=993, weight=125, style="setlinewidth(2.000000)"];
|
|
179
|
-
N51 -> N60 [label=33, weight=11, style="setlinewidth(0.091244)"];
|
|
180
|
-
N67 -> N73 [label=26, weight=9, style="setlinewidth(0.071889)"];
|
|
181
|
-
N18 -> N34 [label=79, weight=21, style="setlinewidth(0.218433)"];
|
|
182
|
-
N68 -> N65 [label=32, weight=11, style="setlinewidth(0.088479)"];
|
|
183
|
-
N29 -> N33 [label=102, weight=25, style="setlinewidth(0.282028)"];
|
|
184
|
-
N5 -> N42 [label=56, weight=16, style="setlinewidth(0.154839)"];
|
|
185
|
-
N6 -> N10 [label=3, weight=2, style="setlinewidth(0.008295)"];
|
|
186
|
-
N36 -> N76 [label=16, weight=6, style="setlinewidth(0.044240)"];
|
|
187
|
-
N11 -> N25 [label=153, weight=33, style="setlinewidth(0.423041)"];
|
|
188
|
-
N30 -> N34 [label=101, weight=25, style="setlinewidth(0.279263)"];
|
|
189
|
-
N25 -> N32 [label=104, weight=25, style="setlinewidth(0.287558)"];
|
|
190
|
-
N34 -> N30 [label=37, weight=12, style="setlinewidth(0.102304)"];
|
|
191
|
-
N19 -> N61 [label=14, weight=6, style="setlinewidth(0.038710)"];
|
|
192
|
-
N5 -> N20 [label=234, weight=45, style="setlinewidth(0.647005)"];
|
|
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)"];
|
|
193
132
|
}
|