aviator 0.0.1 → 0.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (72) hide show
  1. data/.coveralls.yml +1 -0
  2. data/.gitignore +6 -1
  3. data/.ruby-gemset +1 -0
  4. data/.ruby-version +1 -0
  5. data/.travis.yml +12 -0
  6. data/Gemfile +13 -0
  7. data/Guardfile +6 -0
  8. data/LICENSE.txt +1 -1
  9. data/README.md +151 -2
  10. data/Rakefile +8 -0
  11. data/aviator.gemspec +14 -1
  12. data/bin/aviator +110 -0
  13. data/lib/aviator/core.rb +9 -0
  14. data/lib/aviator/core/request.rb +229 -0
  15. data/lib/aviator/core/response.rb +33 -0
  16. data/lib/aviator/core/service.rb +203 -0
  17. data/lib/aviator/core/session.rb +187 -0
  18. data/lib/aviator/openstack/compute/v2/public/list_images.rb +49 -0
  19. data/lib/aviator/openstack/identity/v2/admin/create_tenant.rb +42 -0
  20. data/lib/aviator/openstack/identity/v2/admin/list_tenants.rb +43 -0
  21. data/lib/aviator/openstack/identity/v2/public/create_token.rb +61 -0
  22. data/lib/aviator/openstack/identity/v2/public/list_tenants.rb +44 -0
  23. data/lib/aviator/version.rb +1 -1
  24. data/test/aviator/core/request_test.rb +342 -0
  25. data/test/aviator/core/service_test.rb +158 -0
  26. data/test/aviator/core/session_test.rb +201 -0
  27. data/test/aviator/openstack/compute/v2/public/list_images_test.rb +179 -0
  28. data/test/aviator/openstack/identity/v2/admin/create_tenant_test.rb +151 -0
  29. data/test/aviator/openstack/identity/v2/public/create_token_test.rb +159 -0
  30. data/test/cassettes/core/service/i_default_session_data_/sets_the_service_s_default_session_data.yml +63 -0
  31. data/test/cassettes/core/service/i_request/accepts_an_endpoint_type_option_for_selecting_a_specific_request.yml +140 -0
  32. data/test/cassettes/core/service/i_request/can_find_the_correct_request_based_on_bootstrapped_session_data.yml +63 -0
  33. data/test/cassettes/core/service/i_request/can_find_the_correct_request_based_on_non-bootstrapped_session_data.yml +97 -0
  34. data/test/cassettes/core/service/i_request/can_find_the_correct_request_if_api_version_is_not_defined_but_can_be_inferred_from_host_uri.yml +63 -0
  35. data/test/cassettes/core/service/i_request/uses_the_default_session_data_if_session_data_is_not_provided.yml +97 -0
  36. data/test/cassettes/core/session/c_load/creates_a_new_instance_from_the_given_session_dump.yml +63 -0
  37. data/test/cassettes/core/session/c_load/uses_the_loaded_auth_info_for_its_services.yml +63 -0
  38. data/test/cassettes/core/session/c_new/directs_log_entries_to_the_given_log_file.yml +63 -0
  39. data/test/cassettes/core/session/i_authenticate/authenticates_against_the_auth_service_indicated_in_the_config_file.yml +63 -0
  40. data/test/cassettes/core/session/i_authenticate/authenticates_against_the_auth_service_using_the_credentials_in_the_given_block.yml +38 -0
  41. data/test/cassettes/core/session/i_authenticate/raises_an_AuthenticationError_when_authentication_fails.yml +35 -0
  42. data/test/cassettes/core/session/i_authenticate/updates_the_session_data_of_its_service_objects.yml +123 -0
  43. data/test/cassettes/core/session/i_dump/serializes_the_session_data_for_caching.yml +63 -0
  44. data/test/cassettes/core/session/i_validate/returns_false_if_session_is_no_longer_valid.yml +97 -0
  45. data/test/cassettes/core/session/i_validate/returns_true_if_session_is_still_valid.yml +98 -0
  46. data/test/cassettes/core/session/i_xxx_service/returns_an_instance_of_the_indicated_service.yml +63 -0
  47. data/test/cassettes/openstack/compute/v2/public/list_images/leads_to_a_valid_response_when_no_parameters_are_provided.yml +108 -0
  48. data/test/cassettes/openstack/compute/v2/public/list_images/leads_to_a_valid_response_when_parameters_are_invalid.yml +96 -0
  49. data/test/cassettes/openstack/compute/v2/public/list_images/leads_to_a_valid_response_when_parameters_are_valid.yml +103 -0
  50. data/test/cassettes/openstack/compute/v2/public/list_images/returns_the_correct_value_for_body.yml +63 -0
  51. data/test/cassettes/openstack/compute/v2/public/list_images/returns_the_correct_value_for_body_.yml +63 -0
  52. data/test/cassettes/openstack/compute/v2/public/list_images/returns_the_correct_value_for_headers.yml +63 -0
  53. data/test/cassettes/openstack/compute/v2/public/list_images/returns_the_correct_value_for_headers_.yml +63 -0
  54. data/test/cassettes/openstack/compute/v2/public/list_images/returns_the_correct_value_for_url.yml +63 -0
  55. data/test/cassettes/openstack/compute/v2/public/list_images/returns_the_correct_value_for_url_.yml +63 -0
  56. data/test/cassettes/openstack/identity/v2/admin/create_tenant/leads_to_a_valid_response_when_params_are_invalid.yml +97 -0
  57. data/test/cassettes/openstack/identity/v2/admin/create_tenant/leads_to_a_valid_response_when_params_are_valid.yml +97 -0
  58. data/test/cassettes/openstack/identity/v2/admin/create_tenant/leads_to_a_valid_response_when_provided_with_invalid_params.yml +97 -0
  59. data/test/cassettes/openstack/identity/v2/public/create_token/leads_to_a_valid_response_when_parameters_are_invalid.yml +35 -0
  60. data/test/cassettes/openstack/identity/v2/public/create_token/leads_to_a_valid_response_when_parameters_are_valid.yml +38 -0
  61. data/test/cassettes/openstack/identity/v2/public/create_token/leads_to_a_valid_response_when_provided_with_a_token.yml +98 -0
  62. data/test/environment.yml.example +22 -0
  63. data/test/environment.yml.travis-ci +24 -0
  64. data/test/support/openstack_request_test_helper.rb +57 -0
  65. data/test/support/test_base_class.rb +39 -0
  66. data/test/support/test_environment.rb +37 -0
  67. data/test/support/test_reporter.rb +45 -0
  68. data/test/support/vcr_setup.rb +41 -0
  69. data/test/test_helper.rb +35 -0
  70. data/tmp/.gitignore +0 -0
  71. metadata +310 -8
  72. data/lib/aviator.rb +0 -5
@@ -0,0 +1,151 @@
1
+ require 'test_helper'
2
+
3
+ class Aviator::Test
4
+
5
+ describe 'aviator/openstack/identity/v2/admin/create_tenant' do
6
+
7
+ def create_request
8
+ klass.new(helper.admin_session_data) do |params|
9
+ params[:name] = 'Project'
10
+ params[:description] = 'My Project'
11
+ params[:enabled] = true
12
+ end
13
+ end
14
+
15
+
16
+ def new_session_data
17
+ service = Aviator::Service.new(
18
+ provider: 'openstack',
19
+ service: 'identity'
20
+ )
21
+
22
+ bootstrap = RequestHelper.admin_bootstrap_session_data
23
+
24
+ response = service.request :create_token, session_data: bootstrap do |params|
25
+ auth_credentials = Environment.openstack_admin[:auth_credentials]
26
+ auth_credentials.each { |key, value| params[key] = auth_credentials[key] }
27
+ end
28
+
29
+ response.body
30
+ end
31
+
32
+
33
+ def helper
34
+ Aviator::Test::RequestHelper
35
+ end
36
+
37
+
38
+ def klass
39
+ path = helper.request_path('identity', 'v2', 'admin', 'create_tenant.rb')
40
+ klass, request_name = Aviator::Service::RequestBuilder.build(path)
41
+ klass
42
+ end
43
+
44
+
45
+ validate :api_version do
46
+ klass.api_version.must_equal :v2
47
+ end
48
+
49
+
50
+ validate :anonymous? do
51
+ klass.anonymous?.must_equal false
52
+ end
53
+
54
+
55
+ validate :body do
56
+ params = {
57
+ name: 'Project',
58
+ description: 'My Project',
59
+ enabled: true
60
+ }
61
+
62
+ body = {
63
+ tenant: params
64
+ }
65
+
66
+ request = klass.new(helper.admin_session_data) do |p|
67
+ params.each do |k,v|
68
+ p[k] = params[k]
69
+ end
70
+ end
71
+
72
+ request.body.must_equal body
73
+ end
74
+
75
+
76
+ validate :endpoint_type do
77
+ klass.endpoint_type.must_equal :admin
78
+ end
79
+
80
+
81
+ validate :headers do
82
+ headers = { 'X-Auth-Token' => helper.admin_session_data[:access][:token][:id] }
83
+
84
+ request = create_request
85
+
86
+ request.headers.must_equal headers
87
+ end
88
+
89
+
90
+ validate :http_method do
91
+ klass.http_method.must_equal :post
92
+ end
93
+
94
+
95
+ validate :required_params do
96
+ klass.required_params.must_equal [:name, :description, :enabled]
97
+ end
98
+
99
+
100
+ validate :url do
101
+ session_data = helper.admin_session_data
102
+ service_spec = session_data[:access][:serviceCatalog].find{|s| s[:type] == 'identity' }
103
+ url = "#{ service_spec[:endpoints][0][:adminURL] }/tenants"
104
+
105
+ request = create_request
106
+
107
+ request.url.must_equal url
108
+ end
109
+
110
+
111
+ validate_response 'params are invalid' do
112
+ service = Aviator::Service.new(
113
+ provider: 'openstack',
114
+ service: 'identity',
115
+ default_session_data: new_session_data
116
+ )
117
+
118
+ response = service.request :create_tenant do |params|
119
+ params[:name] = ""
120
+ params[:description] = ""
121
+ params[:enabled] = true
122
+ end
123
+
124
+ response.status.must_equal 400
125
+ response.body.wont_be_nil
126
+ response.headers.wont_be_nil
127
+ end
128
+
129
+
130
+ validate_response 'params are valid' do
131
+ service = Aviator::Service.new(
132
+ provider: 'openstack',
133
+ service: 'identity',
134
+ default_session_data: new_session_data
135
+ )
136
+
137
+ response = service.request :create_tenant do |params|
138
+ params[:name] = "Project 1377582007"
139
+ params[:description] = 'My Project'
140
+ params[:enabled] = true
141
+ end
142
+
143
+ response.status.must_equal 200
144
+ response.body.wont_be_nil
145
+ response.headers.wont_be_nil
146
+ end
147
+
148
+
149
+ end
150
+
151
+ end
@@ -0,0 +1,159 @@
1
+ require 'test_helper'
2
+
3
+ class Aviator::Test
4
+
5
+ describe 'aviator/openstack/identity/v2/public/create_token' do
6
+
7
+ def create_request
8
+ klass.new(helper.admin_bootstrap_session_data) do |params|
9
+ params[:username] = Environment.openstack_admin[:auth_credentials][:username]
10
+ params[:password] = Environment.openstack_admin[:auth_credentials][:password]
11
+ end
12
+ end
13
+
14
+
15
+ def helper
16
+ Aviator::Test::RequestHelper
17
+ end
18
+
19
+
20
+ def klass
21
+ path = helper.request_path('identity', 'v2', 'public', 'create_token.rb')
22
+ klass, request_name = Aviator::Service::RequestBuilder.build(path)
23
+ klass
24
+ end
25
+
26
+
27
+ validate :anonymous? do
28
+ klass.anonymous?.must_equal true
29
+ end
30
+
31
+
32
+ validate :api_version do
33
+ klass.api_version.must_equal :v2
34
+ end
35
+
36
+
37
+ validate :body do
38
+ p = {
39
+ auth: {
40
+ passwordCredentials: {
41
+ username: Environment.openstack_admin[:auth_credentials][:username],
42
+ password: Environment.openstack_admin[:auth_credentials][:password]
43
+ }
44
+ }
45
+ }
46
+
47
+ create_request.body.must_equal p
48
+ end
49
+
50
+
51
+ validate :endpoint_type do
52
+ klass.endpoint_type.must_equal :public
53
+ end
54
+
55
+
56
+ validate :headers do
57
+ create_request.headers?.must_equal false
58
+ end
59
+
60
+
61
+ validate :http_method do
62
+ klass.http_method.must_equal :post
63
+ end
64
+
65
+
66
+
67
+ validate :optional_params do
68
+ klass.optional_params.must_equal [:username, :password, :tokenId, :tenantName, :tenantId]
69
+ end
70
+
71
+
72
+ validate :required_params do
73
+ klass.required_params.must_equal []
74
+ end
75
+
76
+
77
+ validate :url do
78
+ session_data = helper.admin_bootstrap_session_data
79
+ url = "#{ session_data[:auth_service][:host_uri] }/v2.0/tokens"
80
+
81
+ create_request.url.must_equal url
82
+ end
83
+
84
+
85
+ validate :url, 'when the host uri contains the api version' do
86
+ host_uri = 'http://x.y.z:5000/v2.0'
87
+
88
+ request = klass.new({ auth_service: { host_uri: host_uri } }) do |params|
89
+ params[:username] = Environment.openstack_admin[:auth_credentials][:username]
90
+ params[:password] = Environment.openstack_admin[:auth_credentials][:password]
91
+ end
92
+
93
+ request.url.must_equal "#{ host_uri }/tokens"
94
+ end
95
+
96
+
97
+ validate_response 'parameters are invalid' do
98
+ service = Aviator::Service.new(
99
+ provider: 'openstack',
100
+ service: 'identity',
101
+ default_session_data: RequestHelper.admin_bootstrap_session_data
102
+ )
103
+
104
+ response = service.request :create_token do |params|
105
+ params[:username] = 'somebogususer'
106
+ params[:password] = 'doesitreallymatter?'
107
+ end
108
+
109
+ response.status.must_equal 401
110
+ response.body.wont_be_nil
111
+ response.headers.wont_be_nil
112
+ end
113
+
114
+
115
+ validate_response 'parameters are valid' do
116
+ service = Aviator::Service.new(
117
+ provider: 'openstack',
118
+ service: 'identity',
119
+ default_session_data: RequestHelper.admin_bootstrap_session_data
120
+ )
121
+
122
+ response = service.request :create_token do |params|
123
+ params[:username] = Environment.openstack_admin[:auth_credentials][:username]
124
+ params[:password] = Environment.openstack_admin[:auth_credentials][:password]
125
+ end
126
+
127
+ response.status.must_equal 200
128
+ response.body.wont_be_nil
129
+ response.headers.wont_be_nil
130
+ end
131
+
132
+
133
+ validate_response 'provided with a token' do
134
+ service = Aviator::Service.new(
135
+ provider: 'openstack',
136
+ service: 'identity',
137
+ default_session_data: RequestHelper.admin_bootstrap_session_data
138
+ )
139
+
140
+ response = service.request :create_token do |params|
141
+ params[:username] = Environment.openstack_admin[:auth_credentials][:username]
142
+ params[:password] = Environment.openstack_admin[:auth_credentials][:password]
143
+ end
144
+
145
+ token = response.body[:access][:token][:id]
146
+
147
+ response = service.request :create_token do |params|
148
+ params[:tokenId] = token
149
+ params[:tenantName] = Environment.openstack_admin[:auth_credentials][:tenantName]
150
+ end
151
+
152
+ response.status.must_equal 200
153
+ response.body.wont_be_nil
154
+ response.headers.wont_be_nil
155
+ end
156
+
157
+ end
158
+
159
+ end
@@ -0,0 +1,63 @@
1
+ ---
2
+ http_interactions:
3
+ - request:
4
+ method: post
5
+ uri: <HOST_URI>:5000/v2.0/tokens
6
+ body:
7
+ encoding: UTF-8
8
+ string: ! '{"auth":{"passwordCredentials":{"username":"admin","password":"<PASSWORD>"},"tenantName":"admin"}}'
9
+ headers:
10
+ Content-Type:
11
+ - application/json
12
+ User-Agent:
13
+ - Faraday v0.8.8
14
+ response:
15
+ status:
16
+ code: 200
17
+ message:
18
+ headers:
19
+ vary:
20
+ - X-Auth-Token
21
+ content-type:
22
+ - application/json
23
+ content-length:
24
+ - '2648'
25
+ date:
26
+ - Thu, 29 Aug 2013 02:36:53 GMT
27
+ connection:
28
+ - close
29
+ body:
30
+ encoding: US-ASCII
31
+ string: ! '{"access": {"token": {"issued_at": "2013-08-29T02:36:53.654460",
32
+ "expires": "2013-08-30T02:36:53Z", "id": "b0a33b6330084fde977b3a268cbb0660",
33
+ "tenant": {"description": null, "enabled": true, "id": "3cab25130620477b8b03f1bfa8741603",
34
+ "name": "admin"}}, "serviceCatalog": [{"endpoints": [{"adminURL": "http://192.168.56.11:8774/v2/3cab25130620477b8b03f1bfa8741603",
35
+ "region": "RegionOne", "internalURL": "http://192.168.56.11:8774/v2/3cab25130620477b8b03f1bfa8741603",
36
+ "id": "3b72a66bf2f0491bb8dba827cade0d48", "publicURL": "http://192.168.56.11:8774/v2/3cab25130620477b8b03f1bfa8741603"}],
37
+ "endpoints_links": [], "type": "compute", "name": "nova"}, {"endpoints": [{"adminURL":
38
+ "http://192.168.56.11:3333", "region": "RegionOne", "internalURL": "http://192.168.56.11:3333",
39
+ "id": "482f749b370c40eab8788d6d0bc47f48", "publicURL": "http://192.168.56.11:3333"}],
40
+ "endpoints_links": [], "type": "s3", "name": "s3"}, {"endpoints": [{"adminURL":
41
+ "http://192.168.56.11:9292", "region": "RegionOne", "internalURL": "http://192.168.56.11:9292",
42
+ "id": "0cd5d5d5a0c24721a0392b47c89e3640", "publicURL": "http://192.168.56.11:9292"}],
43
+ "endpoints_links": [], "type": "image", "name": "glance"}, {"endpoints": [{"adminURL":
44
+ "http://192.168.56.11:8777", "region": "RegionOne", "internalURL": "http://192.168.56.11:8777",
45
+ "id": "4eb4edec1d2647bfb8ba4f9a5757169d", "publicURL": "http://192.168.56.11:8777"}],
46
+ "endpoints_links": [], "type": "metering", "name": "ceilometer"}, {"endpoints":
47
+ [{"adminURL": "http://192.168.56.11:8776/v1/3cab25130620477b8b03f1bfa8741603",
48
+ "region": "RegionOne", "internalURL": "http://192.168.56.11:8776/v1/3cab25130620477b8b03f1bfa8741603",
49
+ "id": "009e8a41953d439f845b2a0c0dc28b73", "publicURL": "http://192.168.56.11:8776/v1/3cab25130620477b8b03f1bfa8741603"}],
50
+ "endpoints_links": [], "type": "volume", "name": "cinder"}, {"endpoints":
51
+ [{"adminURL": "http://192.168.56.11:8773/services/Admin", "region": "RegionOne",
52
+ "internalURL": "http://192.168.56.11:8773/services/Cloud", "id": "6820836ec6834548bf7b54da0271dded",
53
+ "publicURL": "http://192.168.56.11:8773/services/Cloud"}], "endpoints_links":
54
+ [], "type": "ec2", "name": "ec2"}, {"endpoints": [{"adminURL": "http://192.168.56.11:35357/v2.0",
55
+ "region": "RegionOne", "internalURL": "http://192.168.56.11:5000/v2.0", "id":
56
+ "24a95f51f67949e784971e97463ee4d8", "publicURL": "http://192.168.56.11:5000/v2.0"}],
57
+ "endpoints_links": [], "type": "identity", "name": "keystone"}], "user": {"username":
58
+ "admin", "roles_links": [], "id": "cbbcc4f7aef6435fa2da7e5f0b2f1e97", "roles":
59
+ [{"name": "admin"}], "name": "admin"}, "metadata": {"is_admin": 0, "roles":
60
+ ["01a81f2dbb3441f1aaa8fe68a7c6f546"]}}}'
61
+ http_version:
62
+ recorded_at: Thu, 29 Aug 2013 06:36:58 GMT
63
+ recorded_with: VCR 2.5.0
@@ -0,0 +1,140 @@
1
+ ---
2
+ http_interactions:
3
+ - request:
4
+ method: post
5
+ uri: <HOST_URI>:5000/v2.0/tokens
6
+ body:
7
+ encoding: UTF-8
8
+ string: ! '{"auth":{"passwordCredentials":{"username":"admin","password":"<PASSWORD>"},"tenantName":"admin"}}'
9
+ headers:
10
+ Content-Type:
11
+ - application/json
12
+ User-Agent:
13
+ - Faraday v0.8.8
14
+ response:
15
+ status:
16
+ code: 200
17
+ message:
18
+ headers:
19
+ vary:
20
+ - X-Auth-Token
21
+ content-type:
22
+ - application/json
23
+ content-length:
24
+ - '2648'
25
+ date:
26
+ - Tue, 27 Aug 2013 21:24:30 GMT
27
+ connection:
28
+ - close
29
+ body:
30
+ encoding: US-ASCII
31
+ string: ! '{"access": {"token": {"issued_at": "2013-08-27T21:24:30.251551",
32
+ "expires": "2013-08-28T21:24:30Z", "id": "5865544dc19f445ab4c48a75fef7bd00",
33
+ "tenant": {"description": null, "enabled": true, "id": "3cab25130620477b8b03f1bfa8741603",
34
+ "name": "admin"}}, "serviceCatalog": [{"endpoints": [{"adminURL": "http://192.168.56.11:8774/v2/3cab25130620477b8b03f1bfa8741603",
35
+ "region": "RegionOne", "internalURL": "http://192.168.56.11:8774/v2/3cab25130620477b8b03f1bfa8741603",
36
+ "id": "3b72a66bf2f0491bb8dba827cade0d48", "publicURL": "http://192.168.56.11:8774/v2/3cab25130620477b8b03f1bfa8741603"}],
37
+ "endpoints_links": [], "type": "compute", "name": "nova"}, {"endpoints": [{"adminURL":
38
+ "http://192.168.56.11:3333", "region": "RegionOne", "internalURL": "http://192.168.56.11:3333",
39
+ "id": "482f749b370c40eab8788d6d0bc47f48", "publicURL": "http://192.168.56.11:3333"}],
40
+ "endpoints_links": [], "type": "s3", "name": "s3"}, {"endpoints": [{"adminURL":
41
+ "http://192.168.56.11:9292", "region": "RegionOne", "internalURL": "http://192.168.56.11:9292",
42
+ "id": "0cd5d5d5a0c24721a0392b47c89e3640", "publicURL": "http://192.168.56.11:9292"}],
43
+ "endpoints_links": [], "type": "image", "name": "glance"}, {"endpoints": [{"adminURL":
44
+ "http://192.168.56.11:8777", "region": "RegionOne", "internalURL": "http://192.168.56.11:8777",
45
+ "id": "4eb4edec1d2647bfb8ba4f9a5757169d", "publicURL": "http://192.168.56.11:8777"}],
46
+ "endpoints_links": [], "type": "metering", "name": "ceilometer"}, {"endpoints":
47
+ [{"adminURL": "http://192.168.56.11:8776/v1/3cab25130620477b8b03f1bfa8741603",
48
+ "region": "RegionOne", "internalURL": "http://192.168.56.11:8776/v1/3cab25130620477b8b03f1bfa8741603",
49
+ "id": "009e8a41953d439f845b2a0c0dc28b73", "publicURL": "http://192.168.56.11:8776/v1/3cab25130620477b8b03f1bfa8741603"}],
50
+ "endpoints_links": [], "type": "volume", "name": "cinder"}, {"endpoints":
51
+ [{"adminURL": "http://192.168.56.11:8773/services/Admin", "region": "RegionOne",
52
+ "internalURL": "http://192.168.56.11:8773/services/Cloud", "id": "6820836ec6834548bf7b54da0271dded",
53
+ "publicURL": "http://192.168.56.11:8773/services/Cloud"}], "endpoints_links":
54
+ [], "type": "ec2", "name": "ec2"}, {"endpoints": [{"adminURL": "http://192.168.56.11:35357/v2.0",
55
+ "region": "RegionOne", "internalURL": "http://192.168.56.11:5000/v2.0", "id":
56
+ "24a95f51f67949e784971e97463ee4d8", "publicURL": "http://192.168.56.11:5000/v2.0"}],
57
+ "endpoints_links": [], "type": "identity", "name": "keystone"}], "user": {"username":
58
+ "admin", "roles_links": [], "id": "cbbcc4f7aef6435fa2da7e5f0b2f1e97", "roles":
59
+ [{"name": "admin"}], "name": "admin"}, "metadata": {"is_admin": 0, "roles":
60
+ ["01a81f2dbb3441f1aaa8fe68a7c6f546"]}}}'
61
+ http_version:
62
+ recorded_at: Wed, 28 Aug 2013 08:09:24 GMT
63
+ - request:
64
+ method: get
65
+ uri: http://192.168.56.11:35357/v2.0/tenants
66
+ body:
67
+ encoding: US-ASCII
68
+ string: ''
69
+ headers:
70
+ Content-Type:
71
+ - application/json
72
+ User-Agent:
73
+ - Faraday v0.8.8
74
+ X-Auth-Token:
75
+ - 5865544dc19f445ab4c48a75fef7bd00
76
+ response:
77
+ status:
78
+ code: 200
79
+ message:
80
+ headers:
81
+ vary:
82
+ - X-Auth-Token
83
+ content-type:
84
+ - application/json
85
+ content-length:
86
+ - '794'
87
+ date:
88
+ - Tue, 27 Aug 2013 21:24:30 GMT
89
+ connection:
90
+ - close
91
+ body:
92
+ encoding: US-ASCII
93
+ string: ! '{"tenants_links": [], "tenants": [{"description": null, "enabled":
94
+ true, "id": "3cab25130620477b8b03f1bfa8741603", "name": "admin"}, {"description":
95
+ "This is a test", "enabled": true, "id": "85329d06f76241e49eaff15185ca70ff",
96
+ "name": "Test Project Too"}, {"description": null, "enabled": true, "id":
97
+ "88272b47a46949b78f4cfae3a7d642aa", "name": "service"}, {"description": null,
98
+ "enabled": true, "id": "99ac3327702a4da09fd2513fe7d8e5bf", "name": "demo"},
99
+ {"description": "This is a test", "enabled": true, "id": "d14f977f7b4342f39ab3907e07978162",
100
+ "name": "Test Project"}, {"description": null, "enabled": true, "id": "e6b430d6f18c44bc9f3fca604faae771",
101
+ "name": "alt_demo"}, {"description": "My Project", "enabled": true, "id":
102
+ "fc200ea29b4e48b19ba39d3a34eb97ee", "name": "Project 1377582007"}]}'
103
+ http_version:
104
+ recorded_at: Wed, 28 Aug 2013 08:09:24 GMT
105
+ - request:
106
+ method: get
107
+ uri: http://192.168.56.11:5000/v2.0/tenants
108
+ body:
109
+ encoding: US-ASCII
110
+ string: ''
111
+ headers:
112
+ Content-Type:
113
+ - application/json
114
+ User-Agent:
115
+ - Faraday v0.8.8
116
+ X-Auth-Token:
117
+ - 5865544dc19f445ab4c48a75fef7bd00
118
+ response:
119
+ status:
120
+ code: 200
121
+ message:
122
+ headers:
123
+ vary:
124
+ - X-Auth-Token
125
+ content-type:
126
+ - application/json
127
+ content-length:
128
+ - '231'
129
+ date:
130
+ - Tue, 27 Aug 2013 21:24:30 GMT
131
+ connection:
132
+ - close
133
+ body:
134
+ encoding: US-ASCII
135
+ string: ! '{"tenants_links": [], "tenants": [{"description": null, "enabled":
136
+ true, "id": "3cab25130620477b8b03f1bfa8741603", "name": "admin"}, {"description":
137
+ null, "enabled": true, "id": "99ac3327702a4da09fd2513fe7d8e5bf", "name": "demo"}]}'
138
+ http_version:
139
+ recorded_at: Wed, 28 Aug 2013 08:09:24 GMT
140
+ recorded_with: VCR 2.5.0