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