stacker_bee 2.1.1.pre305 → 2.1.1.pre324
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +8 -8
- data/README.md +43 -8
- data/config.default.yml +1 -1
- data/lib/stacker_bee/client.rb +5 -2
- data/lib/stacker_bee/configuration.rb +22 -2
- data/lib/stacker_bee/middleware/adapter.rb +5 -1
- data/lib/stacker_bee/middleware/cloud_stack_api.rb +1 -2
- data/lib/stacker_bee/middleware/console_access.rb +1 -2
- data/lib/stacker_bee/request_error.rb +1 -1
- data/spec/cassettes/A_request_sent_to_CloudStack_for_console_access/returns_html_for_console_access.yml +1 -1
- data/spec/cassettes/A_response_to_a_request_sent_to_the_CloudStack_API/.yml +4 -34
- data/spec/cassettes/A_response_to_a_request_sent_to_the_CloudStack_API/a_nil_request_parameter/properly_executes_the_request.yml +4 -34
- data/spec/cassettes/A_response_to_a_request_sent_to_the_CloudStack_API/a_request_parameter_with_a_map/can_create_an_object.yml +18 -198
- data/spec/cassettes/A_response_to_a_request_sent_to_the_CloudStack_API/a_request_parameter_with_an_Array/.yml +6 -37
- data/spec/cassettes/A_response_to_a_request_sent_to_the_CloudStack_API/a_request_parameter_with_and_empty_string/properly_executes_the_request.yml +4 -34
- data/spec/cassettes/A_response_to_a_request_sent_to_the_CloudStack_API/a_request_that_triggers_an_error/properly_signs_the_request.yml +2 -34
- data/spec/cassettes/A_response_to_a_request_sent_to_the_CloudStack_API/first_item/.yml +4 -34
- data/spec/cassettes/A_response_to_a_request_sent_to_the_CloudStack_API/first_item/_account_type_/.yml +4 -34
- data/spec/cassettes/A_response_to_a_request_sent_to_the_CloudStack_API/first_item/_accounttype_/.yml +4 -34
- data/spec/cassettes/A_response_to_a_request_sent_to_the_CloudStack_API/middleware/a_middleware_that_doesn_t_match_the_content_type/uses_the_middleware.yml +3 -33
- data/spec/cassettes/A_response_to_a_request_sent_to_the_CloudStack_API/middleware/a_middleware_that_matches_the_content_type/uses_the_middleware.yml +3 -33
- data/spec/cassettes/A_response_to_a_request_sent_to_the_CloudStack_API/space_character_in_a_request_parameter/properly_signs_the_request.yml +2 -31
- data/spec/cassettes/A_response_to_a_request_sent_to_the_CloudStack_API/with_a_nonexistant_path/raises_a_client_error.yml +47 -0
- data/spec/integration/console_spec.rb +4 -3
- data/spec/integration/request_spec.rb +26 -9
- data/spec/units/stacker_bee/configuration_spec.rb +30 -0
- data/spec/units/stacker_bee/middleware/adapter_spec.rb +9 -1
- data/spec/units/stacker_bee/middleware/cloud_stack_api_spec.rb +6 -13
- data/spec/units/stacker_bee/middleware/console_access_spec.rb +6 -3
- metadata +4 -12
- data/spec/cassettes/A_response_to_a_request_sent_to_the_CloudStack_API/containing_an_error/.yml +0 -37
- data/spec/cassettes/A_response_to_a_request_sent_to_the_CloudStack_API/containing_an_error/should_log_response_as_error.yml +0 -37
- data/spec/cassettes/A_response_to_a_request_sent_to_the_CloudStack_API/first/.yml +0 -33
- data/spec/cassettes/A_response_to_a_request_sent_to_the_CloudStack_API/should_log_request.yml +0 -33
- data/spec/cassettes/A_response_to_a_request_sent_to_the_CloudStack_API/should_not_log_response_as_error.yml +0 -33
checksums.yaml
CHANGED
@@ -1,15 +1,15 @@
|
|
1
1
|
---
|
2
2
|
!binary "U0hBMQ==":
|
3
3
|
metadata.gz: !binary |-
|
4
|
-
|
4
|
+
Njk5OTk4ZGQ2Nzc4ODljOWYyMDc0OTgzZDFhZTNhNmI3MDkxNzRlNA==
|
5
5
|
data.tar.gz: !binary |-
|
6
|
-
|
6
|
+
Y2U1ZjVhYWNlN2M0N2QzN2YwZjc3NjZhYTIxOTMyYzM1YTc2ODY0ZA==
|
7
7
|
SHA512:
|
8
8
|
metadata.gz: !binary |-
|
9
|
-
|
10
|
-
|
11
|
-
|
9
|
+
MGM4NzZiOGU2ZTZjODJiZDFiOGZlN2MzN2RhZTZhNmIzNzJjY2RiNTY5ODg3
|
10
|
+
YTg5MDMxM2JjNjRmZWY4OThkNjZkZTg0ZGQ2OWFmZGFjZGQxMTcyNTIzNmRk
|
11
|
+
MjE1MDg2NTQ2MDc3ODU3YWVmMjI2MzE0YjliZjBkMjI2OWQwNTc=
|
12
12
|
data.tar.gz: !binary |-
|
13
|
-
|
14
|
-
|
15
|
-
|
13
|
+
ODhkNGRlMTBiODliZTZkYTA1ZjkyYTVhMjgzNzYyMTBhOGVlZTkzNDI4Mzll
|
14
|
+
NzBkNTU0ZGM2MTAzODg5MGZkZGIwZjJiYWE1OGZlMmRiMjYwYzVhZDEwZDUx
|
15
|
+
ZDFiYjA3YThiODY3N2RlOTQyYmEwZGVmZTQ2YWU5MTIxMWMzYzc=
|
data/README.md
CHANGED
@@ -29,7 +29,7 @@ And execute:
|
|
29
29
|
|
30
30
|
```ruby
|
31
31
|
cloud_stack = StackerBee::Client.new(
|
32
|
-
url: 'http://localhost:8080
|
32
|
+
url: 'http://localhost:8080',
|
33
33
|
api_key: 'MY_API_KEY',
|
34
34
|
secret_key: 'MY_SECRET_KEY'
|
35
35
|
)
|
@@ -85,7 +85,7 @@ Usage:
|
|
85
85
|
|
86
86
|
Example:
|
87
87
|
|
88
|
-
$ stacker_bee -u http://localhost:8080
|
88
|
+
$ stacker_bee -u http://localhost:8080 -a MY_API_KEY -s MY_SECRET_KEY
|
89
89
|
StackerBee CloudStack REPL
|
90
90
|
>> list_virtual_machines state: 'Running'
|
91
91
|
=> [{"id"=>"48b91ab4-dc23-4e24-bc6f-695d58c91087",
|
@@ -100,7 +100,7 @@ Configuring a client:
|
|
100
100
|
|
101
101
|
```ruby
|
102
102
|
cloud_stack = StackerBee::Client.new(
|
103
|
-
url: 'http://localhost:8080
|
103
|
+
url: 'http://localhost:8080',
|
104
104
|
api_key: 'API_KEY',
|
105
105
|
secret_key: 'SECRET_KEY'
|
106
106
|
)
|
@@ -109,7 +109,7 @@ cloud_stack = StackerBee::Client.new(
|
|
109
109
|
All configuration parameters set on the `StackerBee::Client` class are used as defaults for `StackerBee::Client` instances.
|
110
110
|
|
111
111
|
```ruby
|
112
|
-
StackerBee::Client.url = 'http://localhost:8080
|
112
|
+
StackerBee::Client.url = 'http://localhost:8080'
|
113
113
|
|
114
114
|
user_client = StackerBee::Client.new(
|
115
115
|
api_key: 'USER_API_KEY',
|
@@ -127,17 +127,52 @@ root_client = StackerBee::Client.new(
|
|
127
127
|
The URL of your CloudStack instance's URL.
|
128
128
|
|
129
129
|
```ruby
|
130
|
-
StackerBee::Client.url = 'http://localhost:8080
|
130
|
+
StackerBee::Client.url = 'http://localhost:8080'
|
131
131
|
```
|
132
132
|
|
133
133
|
Or:
|
134
134
|
|
135
135
|
```ruby
|
136
136
|
my_client = StackerBee::Client.new(
|
137
|
-
url: 'http://localhost:8080
|
137
|
+
url: 'http://localhost:8080'
|
138
138
|
)
|
139
139
|
```
|
140
140
|
|
141
|
+
### API path
|
142
|
+
|
143
|
+
The path of your CloudStack instance's API URL.
|
144
|
+
Defaults to `'/client/api/'`.
|
145
|
+
|
146
|
+
```ruby
|
147
|
+
StackerBee::Client.api_path = '/other-path/client/api'
|
148
|
+
```
|
149
|
+
|
150
|
+
Or:
|
151
|
+
|
152
|
+
```ruby
|
153
|
+
my_client = StackerBee::Client.new(
|
154
|
+
api_path: '/other-path/client/api'
|
155
|
+
)
|
156
|
+
```
|
157
|
+
|
158
|
+
### Console path
|
159
|
+
|
160
|
+
The path of your CloudStack instance's URL for console access.
|
161
|
+
Defaults to `'/client/console/'`.
|
162
|
+
|
163
|
+
```ruby
|
164
|
+
StackerBee::Client.console_path = '/other-path/client/console'
|
165
|
+
```
|
166
|
+
|
167
|
+
Or:
|
168
|
+
|
169
|
+
```ruby
|
170
|
+
my_client = StackerBee::Client.new(
|
171
|
+
console_path: '/other-path/client/console'
|
172
|
+
)
|
173
|
+
```
|
174
|
+
|
175
|
+
|
141
176
|
### Keys
|
142
177
|
|
143
178
|
Your CloudStack credentials, i.e. API key and secret key.
|
@@ -219,7 +254,7 @@ StackerBee supports using SSL. To do so, use an HTTPS URL. In some deployments,
|
|
219
254
|
|
220
255
|
```ruby
|
221
256
|
StackerBee::Client.configuration = {
|
222
|
-
url: 'https://my-cloudstack-server
|
257
|
+
url: 'https://my-cloudstack-server',
|
223
258
|
ssl_verify: false # ignore certificate validation errors
|
224
259
|
}
|
225
260
|
```
|
@@ -230,7 +265,7 @@ The `StackerBee::Client` class can be configured with multiple options at once.
|
|
230
265
|
|
231
266
|
```ruby
|
232
267
|
StackerBee::Client.configuration = {
|
233
|
-
url: 'http://localhost:8080
|
268
|
+
url: 'http://localhost:8080',
|
234
269
|
api_key: 'API_KEY',
|
235
270
|
secret_key: 'MY_SECRET_KEY'
|
236
271
|
}
|
data/config.default.yml
CHANGED
@@ -1,3 +1,3 @@
|
|
1
|
-
url: 'http://127.0.0.1:1234
|
1
|
+
url: 'http://127.0.0.1:1234'
|
2
2
|
api_key: 'MY-KEY-MY-KEY-MY-KEY-MY-KEY-MY-KEY-MY-KEY-MY-KEY-MY-KEY-MY-KEY-MY-KEY-MY-KEY-MY-KEY-MY'
|
3
3
|
secret_key: 'TOP-SECRET-TOP-SECRET-TOP-SECRET-TOP-SECRET-TOP-SECRET-TOP-SECRET-TOP-SECRET-TOP-SECRE'
|
data/lib/stacker_bee/client.rb
CHANGED
@@ -34,11 +34,14 @@ module StackerBee
|
|
34
34
|
# rubocop:disable Metrics/AbcSize
|
35
35
|
def middlewares
|
36
36
|
# request
|
37
|
-
builder.use Middleware::ConsoleAccess
|
37
|
+
builder.use Middleware::ConsoleAccess,
|
38
|
+
console_path: configuration.console_path
|
38
39
|
|
39
40
|
builder.use Middleware::EndpointNormalizer, api: self.class.api
|
40
41
|
builder.use Middleware::RemoveEmptyStrings
|
41
|
-
builder.use Middleware::CloudStackAPI,
|
42
|
+
builder.use Middleware::CloudStackAPI,
|
43
|
+
api_path: configuration.api_path,
|
44
|
+
api_key: configuration.api_key
|
42
45
|
|
43
46
|
configuration.middlewares.call builder
|
44
47
|
|
@@ -6,6 +6,8 @@ module StackerBee
|
|
6
6
|
ATTRIBUTES = [
|
7
7
|
:ssl_verify,
|
8
8
|
:url,
|
9
|
+
:api_path,
|
10
|
+
:console_path,
|
9
11
|
:secret_key,
|
10
12
|
:api_key,
|
11
13
|
:middlewares,
|
@@ -37,6 +39,14 @@ module StackerBee
|
|
37
39
|
attribute :url
|
38
40
|
end
|
39
41
|
|
42
|
+
def api_path
|
43
|
+
attribute :api_path, '/client/api'
|
44
|
+
end
|
45
|
+
|
46
|
+
def console_path
|
47
|
+
attribute :console_path, '/client/console'
|
48
|
+
end
|
49
|
+
|
40
50
|
def secret_key
|
41
51
|
attribute :secret_key
|
42
52
|
end
|
@@ -67,8 +77,18 @@ module StackerBee
|
|
67
77
|
|
68
78
|
private
|
69
79
|
|
70
|
-
def attribute(key,
|
71
|
-
@attributes.fetch(key,
|
80
|
+
def attribute(key, default_value = nil)
|
81
|
+
value = @attributes.fetch(key, default_value)
|
82
|
+
|
83
|
+
if blank?(value)
|
84
|
+
default_value
|
85
|
+
else
|
86
|
+
value
|
87
|
+
end
|
88
|
+
end
|
89
|
+
|
90
|
+
def blank?(value)
|
91
|
+
value.nil? || value == ''
|
72
92
|
end
|
73
93
|
end
|
74
94
|
end
|
@@ -18,7 +18,11 @@ module StackerBee
|
|
18
18
|
|
19
19
|
def perform_request(env)
|
20
20
|
params = env.request.params.to_a.sort
|
21
|
-
env.raw_response = connection.get(env
|
21
|
+
env.raw_response = connection.get(path(env), params)
|
22
|
+
end
|
23
|
+
|
24
|
+
def path(env)
|
25
|
+
env.request.path.to_s.gsub(/\/$/, '')
|
22
26
|
end
|
23
27
|
|
24
28
|
def endpoint_name_for(*)
|
@@ -2,7 +2,6 @@ module StackerBee
|
|
2
2
|
module Middleware
|
3
3
|
class CloudStackAPI < Base
|
4
4
|
RESPONSE_TYPE = 'json'
|
5
|
-
DEFAULT_PATH = '/client/api/'
|
6
5
|
|
7
6
|
def before(env)
|
8
7
|
env.request.params.merge!(
|
@@ -10,7 +9,7 @@ module StackerBee
|
|
10
9
|
command: env.request.endpoint_name,
|
11
10
|
response: RESPONSE_TYPE
|
12
11
|
)
|
13
|
-
env.request.path ||=
|
12
|
+
env.request.path ||= api_path
|
14
13
|
end
|
15
14
|
end
|
16
15
|
end
|
@@ -4,13 +4,12 @@ module StackerBee
|
|
4
4
|
include Utilities
|
5
5
|
|
6
6
|
ENDPOINT = 'consoleAccess'
|
7
|
-
PATH = '/client/console'
|
8
7
|
PARAMS = { cmd: 'access' }
|
9
8
|
|
10
9
|
def before(env)
|
11
10
|
return unless matches_endpoint?(env.request.endpoint_name)
|
12
11
|
super
|
13
|
-
env.request.path =
|
12
|
+
env.request.path = console_path
|
14
13
|
env.request.endpoint_name = ENDPOINT
|
15
14
|
end
|
16
15
|
|
@@ -2,7 +2,7 @@
|
|
2
2
|
http_interactions:
|
3
3
|
- request:
|
4
4
|
method: get
|
5
|
-
uri: <CLOUD_STACK_HOST>/client/console?apiKey=<CLOUD_STACK_API_KEY>&cmd=access&command=consoleAccess&response=json&signature=
|
5
|
+
uri: <CLOUD_STACK_HOST>/client/console?apiKey=<CLOUD_STACK_API_KEY>&cmd=access&command=consoleAccess&response=json&signature=0xjsh2gd3qbGVi9egkb6VHocx%2BI=&vm=36f9c08b-f17a-4d0e-ac9b-d45ce2d34fcd
|
6
6
|
body:
|
7
7
|
encoding: US-ASCII
|
8
8
|
string: ''
|
@@ -2,37 +2,7 @@
|
|
2
2
|
http_interactions:
|
3
3
|
- request:
|
4
4
|
method: get
|
5
|
-
uri: <
|
6
|
-
body:
|
7
|
-
encoding: US-ASCII
|
8
|
-
string: ''
|
9
|
-
headers:
|
10
|
-
User-Agent:
|
11
|
-
- Faraday v0.8.8
|
12
|
-
Accept-Encoding:
|
13
|
-
- gzip;q=1.0,deflate;q=0.6,identity;q=0.3
|
14
|
-
Accept:
|
15
|
-
- '*/*'
|
16
|
-
response:
|
17
|
-
status:
|
18
|
-
code: 200
|
19
|
-
message: OK
|
20
|
-
headers:
|
21
|
-
Content-Type:
|
22
|
-
- text/javascript; charset=UTF-8
|
23
|
-
Content-Length:
|
24
|
-
- '1727'
|
25
|
-
Server:
|
26
|
-
- Jetty(6.1.26)
|
27
|
-
body:
|
28
|
-
encoding: UTF-8
|
29
|
-
string: '{ "listaccountsresponse" : { "count":1 ,"account" : [ {"id":"fdc009b8-2034-11e3-a44b-d6558ad1fb9f","name":"admin","accounttype":1,"domainid":"fdbfec94-2034-11e3-a44b-d6558ad1fb9f","domain":"ROOT","vmlimit":"Unlimited","vmtotal":0,"vmavailable":"Unlimited","iplimit":"Unlimited","iptotal":0,"ipavailable":"Unlimited","volumelimit":"Unlimited","volumetotal":0,"volumeavailable":"Unlimited","snapshotlimit":"Unlimited","snapshottotal":0,"snapshotavailable":"Unlimited","templatelimit":"Unlimited","templatetotal":0,"templateavailable":"Unlimited","projectlimit":"Unlimited","projecttotal":0,"projectavailable":"Unlimited","networklimit":"Unlimited","networktotal":0,"networkavailable":"Unlimited","vpclimit":"Unlimited","vpctotal":0,"vpcavailable":"Unlimited","cpulimit":"Unlimited","cputotal":0,"cpuavailable":"Unlimited","memorylimit":"Unlimited","memorytotal":0,"memoryavailable":"Unlimited","primarystoragelimit":"Unlimited","primarystoragetotal":0,"primarystorageavailable":"Unlimited","secondarystoragelimit":"Unlimited","secondarystoragetotal":0,"secondarystorageavailable":"Unlimited","state":"enabled","user":[{"id":"fdc03456-2034-11e3-a44b-d6558ad1fb9f","username":"admin","firstname":"Admin","lastname":"User","email":"admin@mailprovider.com","created":"2013-09-17T23:36:11-0400","state":"enabled","account":"admin","accounttype":1,"domainid":"fdbfec94-2034-11e3-a44b-d6558ad1fb9f","domain":"ROOT","apikey":"<CLOUD_STACK_API_KEY>","secretkey":"<CLOUD_STACK_SECRET_KEY>","accountid":"fdc009b8-2034-11e3-a44b-d6558ad1fb9f","iscallerchilddomain":false,"isdefault":true}],"isdefault":true}
|
30
|
-
] } }'
|
31
|
-
http_version:
|
32
|
-
recorded_at: Thu, 24 Oct 2013 18:42:15 GMT
|
33
|
-
- request:
|
34
|
-
method: get
|
35
|
-
uri: <CLOUD_STACK_URL>/?apiKey=<CLOUD_STACK_API_KEY>&command=listAccounts&response=json&signature=oftBcJm8kFc%2Buxul8pAL2%2Bh0bdU=
|
5
|
+
uri: <CLOUD_STACK_HOST>/client/api?apiKey=<CLOUD_STACK_API_KEY>&command=listAccounts&response=json&signature=oftBcJm8kFc%2Buxul8pAL2%2Bh0bdU=
|
36
6
|
body:
|
37
7
|
encoding: US-ASCII
|
38
8
|
string: ''
|
@@ -51,13 +21,13 @@ http_interactions:
|
|
51
21
|
Content-Type:
|
52
22
|
- text/javascript; charset=UTF-8
|
53
23
|
Content-Length:
|
54
|
-
- '
|
24
|
+
- '1727'
|
55
25
|
Server:
|
56
26
|
- Jetty(6.1.26)
|
57
27
|
body:
|
58
28
|
encoding: UTF-8
|
59
|
-
string: '{ "listaccountsresponse" : { "count":1 ,"account" : [ {"id":"b32dc958-b904-11e3-b3f0-080027079e3d","name":"admin","accounttype":1,"domainid":"b32db4c2-b904-11e3-b3f0-080027079e3d","domain":"ROOT","vmlimit":"Unlimited","vmtotal":0,"vmavailable":"Unlimited","iplimit":"Unlimited","iptotal":0,"ipavailable":"Unlimited","volumelimit":"Unlimited","volumetotal":0,"volumeavailable":"Unlimited","snapshotlimit":"Unlimited","snapshottotal":0,"snapshotavailable":"Unlimited","templatelimit":"Unlimited","templatetotal":0,"templateavailable":"Unlimited","projectlimit":"Unlimited","projecttotal":0,"projectavailable":"Unlimited","networklimit":"Unlimited","networktotal":
|
29
|
+
string: '{ "listaccountsresponse" : { "count":1 ,"account" : [ {"id":"b32dc958-b904-11e3-b3f0-080027079e3d","name":"admin","accounttype":1,"domainid":"b32db4c2-b904-11e3-b3f0-080027079e3d","domain":"ROOT","vmlimit":"Unlimited","vmtotal":0,"vmavailable":"Unlimited","iplimit":"Unlimited","iptotal":0,"ipavailable":"Unlimited","volumelimit":"Unlimited","volumetotal":0,"volumeavailable":"Unlimited","snapshotlimit":"Unlimited","snapshottotal":0,"snapshotavailable":"Unlimited","templatelimit":"Unlimited","templatetotal":0,"templateavailable":"Unlimited","projectlimit":"Unlimited","projecttotal":0,"projectavailable":"Unlimited","networklimit":"Unlimited","networktotal":2,"networkavailable":"Unlimited","vpclimit":"Unlimited","vpctotal":0,"vpcavailable":"Unlimited","cpulimit":"Unlimited","cputotal":0,"cpuavailable":"Unlimited","memorylimit":"Unlimited","memorytotal":0,"memoryavailable":"Unlimited","primarystoragelimit":"Unlimited","primarystoragetotal":0,"primarystorageavailable":"Unlimited","secondarystoragelimit":"Unlimited","secondarystoragetotal":0,"secondarystorageavailable":"Unlimited","state":"enabled","user":[{"id":"b32e02b0-b904-11e3-b3f0-080027079e3d","username":"admin","firstname":"Admin","lastname":"User","email":"admin@mailprovider.com","created":"2014-03-31T18:45:58+0000","state":"enabled","account":"admin","accounttype":1,"domainid":"b32db4c2-b904-11e3-b3f0-080027079e3d","domain":"ROOT","apikey":"<CLOUD_STACK_API_KEY>","secretkey":"<CLOUD_STACK_SECRET_KEY>","accountid":"b32dc958-b904-11e3-b3f0-080027079e3d","iscallerchilddomain":false,"isdefault":true}],"isdefault":true}
|
60
30
|
] } }'
|
61
31
|
http_version:
|
62
|
-
recorded_at:
|
32
|
+
recorded_at: Mon, 24 Nov 2014 18:07:24 GMT
|
63
33
|
recorded_with: VCR 2.9.3
|
@@ -2,37 +2,7 @@
|
|
2
2
|
http_interactions:
|
3
3
|
- request:
|
4
4
|
method: get
|
5
|
-
uri: <
|
6
|
-
body:
|
7
|
-
encoding: US-ASCII
|
8
|
-
string: ''
|
9
|
-
headers:
|
10
|
-
User-Agent:
|
11
|
-
- Faraday v0.8.8
|
12
|
-
Accept-Encoding:
|
13
|
-
- gzip;q=1.0,deflate;q=0.6,identity;q=0.3
|
14
|
-
Accept:
|
15
|
-
- '*/*'
|
16
|
-
response:
|
17
|
-
status:
|
18
|
-
code: 200
|
19
|
-
message: OK
|
20
|
-
headers:
|
21
|
-
Content-Type:
|
22
|
-
- text/javascript; charset=UTF-8
|
23
|
-
Content-Length:
|
24
|
-
- '1778'
|
25
|
-
Server:
|
26
|
-
- Jetty(6.1.26)
|
27
|
-
body:
|
28
|
-
encoding: UTF-8
|
29
|
-
string: '{ "listaccountsresponse" : { "count":1 ,"account" : [ {"id":"fdc009b8-2034-11e3-a44b-d6558ad1fb9f","name":"admin","accounttype":1,"domainid":"fdbfec94-2034-11e3-a44b-d6558ad1fb9f","domain":"ROOT","receivedbytes":100,"sentbytes":100,"vmlimit":"Unlimited","vmtotal":1,"vmavailable":"Unlimited","iplimit":"Unlimited","iptotal":1,"ipavailable":"Unlimited","volumelimit":"Unlimited","volumetotal":1,"volumeavailable":"Unlimited","snapshotlimit":"Unlimited","snapshottotal":0,"snapshotavailable":"Unlimited","templatelimit":"Unlimited","templatetotal":0,"templateavailable":"Unlimited","vmrunning":1,"projectlimit":"Unlimited","projecttotal":0,"projectavailable":"Unlimited","networklimit":"Unlimited","networktotal":1,"networkavailable":"Unlimited","vpclimit":"Unlimited","vpctotal":0,"vpcavailable":"Unlimited","cpulimit":"Unlimited","cputotal":1,"cpuavailable":"Unlimited","memorylimit":"Unlimited","memorytotal":32,"memoryavailable":"Unlimited","primarystoragelimit":"Unlimited","primarystoragetotal":2,"primarystorageavailable":"Unlimited","secondarystoragelimit":"Unlimited","secondarystoragetotal":0,"secondarystorageavailable":"Unlimited","state":"enabled","user":[{"id":"fdc03456-2034-11e3-a44b-d6558ad1fb9f","username":"admin","firstname":"Admin","lastname":"User","email":"admin@mailprovider.com","created":"2013-09-17T23:36:11-0400","state":"enabled","account":"admin","accounttype":1,"domainid":"fdbfec94-2034-11e3-a44b-d6558ad1fb9f","domain":"ROOT","apikey":"<CLOUD_STACK_API_KEY>","secretkey":"<CLOUD_STACK_SECRET_KEY>","accountid":"fdc009b8-2034-11e3-a44b-d6558ad1fb9f","iscallerchilddomain":false,"isdefault":true}],"isdefault":true}
|
30
|
-
] } }'
|
31
|
-
http_version:
|
32
|
-
recorded_at: Mon, 28 Oct 2013 17:22:52 GMT
|
33
|
-
- request:
|
34
|
-
method: get
|
35
|
-
uri: <CLOUD_STACK_URL>/?apiKey=<CLOUD_STACK_API_KEY>&command=listAccounts&response=json&signature=oftBcJm8kFc%2Buxul8pAL2%2Bh0bdU=
|
5
|
+
uri: <CLOUD_STACK_HOST>/client/api?apiKey=<CLOUD_STACK_API_KEY>&command=listAccounts&response=json&signature=oftBcJm8kFc%2Buxul8pAL2%2Bh0bdU=
|
36
6
|
body:
|
37
7
|
encoding: US-ASCII
|
38
8
|
string: ''
|
@@ -51,13 +21,13 @@ http_interactions:
|
|
51
21
|
Content-Type:
|
52
22
|
- text/javascript; charset=UTF-8
|
53
23
|
Content-Length:
|
54
|
-
- '
|
24
|
+
- '1727'
|
55
25
|
Server:
|
56
26
|
- Jetty(6.1.26)
|
57
27
|
body:
|
58
28
|
encoding: UTF-8
|
59
|
-
string: '{ "listaccountsresponse" : { "count":1 ,"account" : [ {"id":"b32dc958-b904-11e3-b3f0-080027079e3d","name":"admin","accounttype":1,"domainid":"b32db4c2-b904-11e3-b3f0-080027079e3d","domain":"ROOT","vmlimit":"Unlimited","vmtotal":0,"vmavailable":"Unlimited","iplimit":"Unlimited","iptotal":0,"ipavailable":"Unlimited","volumelimit":"Unlimited","volumetotal":0,"volumeavailable":"Unlimited","snapshotlimit":"Unlimited","snapshottotal":0,"snapshotavailable":"Unlimited","templatelimit":"Unlimited","templatetotal":0,"templateavailable":"Unlimited","projectlimit":"Unlimited","projecttotal":0,"projectavailable":"Unlimited","networklimit":"Unlimited","networktotal":
|
29
|
+
string: '{ "listaccountsresponse" : { "count":1 ,"account" : [ {"id":"b32dc958-b904-11e3-b3f0-080027079e3d","name":"admin","accounttype":1,"domainid":"b32db4c2-b904-11e3-b3f0-080027079e3d","domain":"ROOT","vmlimit":"Unlimited","vmtotal":0,"vmavailable":"Unlimited","iplimit":"Unlimited","iptotal":0,"ipavailable":"Unlimited","volumelimit":"Unlimited","volumetotal":0,"volumeavailable":"Unlimited","snapshotlimit":"Unlimited","snapshottotal":0,"snapshotavailable":"Unlimited","templatelimit":"Unlimited","templatetotal":0,"templateavailable":"Unlimited","projectlimit":"Unlimited","projecttotal":0,"projectavailable":"Unlimited","networklimit":"Unlimited","networktotal":3,"networkavailable":"Unlimited","vpclimit":"Unlimited","vpctotal":0,"vpcavailable":"Unlimited","cpulimit":"Unlimited","cputotal":0,"cpuavailable":"Unlimited","memorylimit":"Unlimited","memorytotal":0,"memoryavailable":"Unlimited","primarystoragelimit":"Unlimited","primarystoragetotal":0,"primarystorageavailable":"Unlimited","secondarystoragelimit":"Unlimited","secondarystoragetotal":0,"secondarystorageavailable":"Unlimited","state":"enabled","user":[{"id":"b32e02b0-b904-11e3-b3f0-080027079e3d","username":"admin","firstname":"Admin","lastname":"User","email":"admin@mailprovider.com","created":"2014-03-31T18:45:58+0000","state":"enabled","account":"admin","accounttype":1,"domainid":"b32db4c2-b904-11e3-b3f0-080027079e3d","domain":"ROOT","apikey":"<CLOUD_STACK_API_KEY>","secretkey":"<CLOUD_STACK_SECRET_KEY>","accountid":"b32dc958-b904-11e3-b3f0-080027079e3d","iscallerchilddomain":false,"isdefault":true}],"isdefault":true}
|
60
30
|
] } }'
|
61
31
|
http_version:
|
62
|
-
recorded_at:
|
32
|
+
recorded_at: Mon, 24 Nov 2014 18:07:26 GMT
|
63
33
|
recorded_with: VCR 2.9.3
|