Merge pull request #67 from relaxdiego/fix/65

This merge adds the ability for the client to specify a base_url for 
the request. This is useful in situations where the session in use 
is based on a default token which does not have any service catalog.
This commit is contained in:
Mark Maglana
2013-09-25 15:59:51 -07:00
12 changed files with 822 additions and 5 deletions

View File

@@ -35,6 +35,23 @@ module Aviator
end
class MissingServiceEndpointError < StandardError
def initialize(service_name, request_name)
request_name = request_name.to_s.split('::').last.underscore
super "The session's service catalog does not have an entry for the #{ service_name } "\
"service. Therefore, I don't know to which base URL the request should be sent. "\
"This may be because you are using a default or unscoped token. If this is not your "\
"intention, please authenticate with a scoped token. If using a default token is your "\
"intention, make sure to provide a base url when you call the request. For example: \n\n"\
"session.#{ service_name }_service.request :#{ request_name }, base_url: 'http://myenv.com:9999/v2.0' do |params|\n"\
" params[:example1] = 'example1'\n"\
" params[:example2] = 'example2'\n"\
"end\n\n"
end
end
class Logger < Faraday::Response::Logger
def initialize(app, logger=nil)
super(app)
@@ -67,6 +84,10 @@ module Aviator
session_data = options[:session_data] || default_session_data
raise SessionDataNotProvidedError.new unless session_data
[:base_url].each do |k|
session_data[k] = options[k] if options[k]
end
request_class = find_request(request_name, session_data, options[:endpoint_type])
@@ -119,11 +140,11 @@ module Aviator
namespace = Aviator.const_get(provider.camelize)
.const_get(service.camelize)
version = infer_version(session_data).to_s.camelize
version = infer_version(session_data, name).to_s.camelize
return nil unless version && namespace.const_defined?(version)
namespace = namespace.const_get(version)
namespace = namespace.const_get(version, name)
endpoint_types.each do |endpoint_type|
name = name.to_s.camelize
@@ -139,7 +160,7 @@ module Aviator
# Candidate for extraction to aviator/openstack
def infer_version(session_data)
def infer_version(session_data, request_name='sample_request')
if session_data.has_key?(:auth_service) && session_data[:auth_service][:api_version]
session_data[:auth_service][:api_version].to_sym
@@ -147,8 +168,13 @@ module Aviator
m = session_data[:auth_service][:host_uri].match(/(v\d+)\.?\d*/)
return m[1].to_sym unless m.nil?
elsif session_data.has_key? :base_url
m = session_data[:base_url].match(/(v\d+)\.?\d*/)
return m[1].to_sym unless m.nil?
elsif session_data.has_key? :access
service_spec = session_data[:access][:serviceCatalog].find{|s| s[:type] == service }
raise MissingServiceEndpointError.new(service.to_s, request_name) unless service_spec
version = service_spec[:endpoints][0][:publicURL].match(/(v\d+)\.?\d*/)
version ? version[1].to_sym : :v1
end

View File

@@ -16,9 +16,15 @@ module Aviator
private
def base_url_for(endpoint_type)
service_spec = session_data[:access][:serviceCatalog].find { |s| s[:type] == service.to_s }
service_spec[:endpoints][0]["#{ endpoint_type }URL".to_sym]
if session_data[:base_url]
session_data[:base_url]
else
service_spec = session_data[:access][:serviceCatalog].find { |s| s[:type] == service.to_s }
raise Aviator::Service::MissingServiceEndpointError.new(service.to_s, self.class) unless service_spec
service_spec[:endpoints][0]["#{ endpoint_type }URL".to_sym]
end
end

View File

@@ -74,6 +74,24 @@ class Aviator::Test
end
it 'raises an error if session data does not have the endpoint information' do
request_name = config[:auth_service][:request].to_sym
bootstrap = JSON.parse('{"access": {"token": {"issued_at": "2013-09-25T20:21:55.453783",
"expires": "2013-09-26T02:21:55Z", "id": "2f6bdec6cd0f49b4a60ede0cd4bf2c0d"},
"serviceCatalog": [], "user": {"username": "bogus",
"roles_links": [], "id": "447527294dae4a1788d36beb0db99c00", "roles": [],
"name": "bogus"}, "metadata": {"is_admin": 0, "roles":
[]}}}').with_indifferent_access
s = service(bootstrap)
the_method = lambda { s.request request_name }
the_method.must_raise Aviator::Service::MissingServiceEndpointError
end
it 'can find the correct request based on non-bootstrapped session data' do
session_data = do_auth_request.body

View File

@@ -0,0 +1,109 @@
require 'test_helper'
class Aviator::Test
describe 'aviator/openstack/common/v2/public/base' do
def create_request(session_data = get_session_data, &block)
block ||= lambda do |params|
params[:tenant_id] = 0
params[:role_id] = 0
params[:user_id] = 0
end
klass.new(session_data, &block)
end
def get_session_data
session.send :auth_info
end
def helper
Aviator::Test::RequestHelper
end
def klass
@klass ||= helper.load_request('openstack', 'common', 'v2', 'public', 'base.rb')
end
def session
unless @session
@session = Aviator::Session.new(
config_file: Environment.path,
environment: 'openstack_admin'
)
@session.authenticate
end
@session
end
validate_attr :anonymous? do
klass.anonymous?.must_equal false
end
validate_attr :api_version do
klass.api_version.must_equal :v2
end
validate_attr :endpoint_type do
klass.endpoint_type.must_equal :public
end
validate_attr :headers do
headers = { 'X-Auth-Token' => get_session_data[:access][:token][:id] }
request = create_request
request.headers.must_equal headers
end
describe '::base_url_for' do
it 'must throw a MissingServiceEndpointError when the service\'s endpoint can\'t be found' do
default_session_data = JSON.parse('{"access": {"token": {"issued_at": "2013-09-25T20:21:55.453783",
"expires": "2013-09-26T02:21:55Z", "id": "2f6bdec6cd0f49b4a60ede0cd4bf2c0d"},
"serviceCatalog": [], "user": {"username": "bogus",
"roles_links": [], "id": "447527294dae4a1788d36beb0db99c00", "roles": [],
"name": "bogus"}, "metadata": {"is_admin": 0, "roles":
[]}}}').with_indifferent_access
request = klass.new(default_session_data)
the_method = lambda { request.send(:base_url_for, :public) }
the_method.must_raise Aviator::Service::MissingServiceEndpointError
end
it 'must use the base_url value if provided.' do
default_session_data = JSON.parse('{"access": {"token": {"issued_at": "2013-09-25T20:21:55.453783",
"expires": "2013-09-26T02:21:55Z", "id": "2f6bdec6cd0f49b4a60ede0cd4bf2c0d"},
"serviceCatalog": [], "user": {"username": "bogus",
"roles_links": [], "id": "447527294dae4a1788d36beb0db99c00", "roles": [],
"name": "bogus"}, "metadata": {"is_admin": 0, "roles":
[]}}}').with_indifferent_access
base_url = 'http://sample'
default_session_data.merge!({ base_url: base_url })
request = klass.new(default_session_data)
request.send(:base_url_for, :public).must_equal base_url
end
end
end
end

View File

@@ -0,0 +1,131 @@
require 'test_helper'
class Aviator::Test
describe 'aviator/openstack/identity/v2/public/list_tenants' do
def create_request(session_data = get_session_data, &block)
klass.new(session_data, &block)
end
def get_session_data
session.send :auth_info
end
def helper
Aviator::Test::RequestHelper
end
def klass
@klass ||= helper.load_request('openstack', 'identity', 'v2', 'public', 'list_tenants.rb')
end
def session
unless @session
@session = Aviator::Session.new(
config_file: Environment.path,
environment: 'openstack_admin'
)
@session.authenticate
end
@session
end
validate_attr :anonymous? do
klass.anonymous?.must_equal false
end
validate_attr :api_version do
klass.api_version.must_equal :v2
end
validate_attr :body do
klass.body?.must_equal false
create_request.body?.must_equal false
end
validate_attr :endpoint_type do
klass.endpoint_type.must_equal :public
end
validate_attr :headers do
session_data = get_session_data
headers = { 'X-Auth-Token' => session_data[:access][:token][:id] }
request = create_request(session_data)
request.headers.must_equal headers
end
validate_attr :http_method do
create_request.http_method.must_equal :get
end
validate_attr :url do
session_data = get_session_data
service_spec = session_data[:access][:serviceCatalog].find{|s| s[:type] == 'identity' }
url = "#{ service_spec[:endpoints][0][:publicURL] }/tenants"
request = klass.new(session_data)
request.url.must_equal url
end
validate_response 'no parameters are provided' do
service = session.identity_service
response = service.request :list_tenants
response.status.must_equal 200
response.body.wont_be_nil
response.body[:tenants].length.wont_equal 0
response.headers.wont_be_nil
end
validate_response 'session is using a default token' do
s = Aviator::Session.new(
config_file: Environment.path,
environment: 'openstack_admin'
)
s.authenticate do |creds|
creds.username = Environment.openstack_member[:auth_credentials][:username]
creds.password = Environment.openstack_member[:auth_credentials][:password]
end
base_url = URI(Environment.openstack_admin[:auth_service][:host_uri])
api_version = Environment.openstack_admin[:auth_service][:api_version]
if api_version
base_url.path = (api_version == 'v2' ? '/v2.0' : "/#{ api_version }")
end
# base_url should have the form 'https://<domain>:<port>/<api_version>'
response = s.identity_service.request :list_tenants, base_url: base_url.to_s
response.status.must_equal 200
response.body.wont_be_nil
response.body[:tenants].length.wont_equal 0
response.headers.wont_be_nil
end
end
end

View File

@@ -0,0 +1,62 @@
---
http_interactions:
- request:
method: post
uri: <OPENSTACK_ADMIN_HOST_URI>:5000/v2.0/tokens
body:
encoding: UTF-8
string: ! '{"auth":{"passwordCredentials":{"username":"<OPENSTACK_ADMIN_USERNAME>","password":"<OPENSTACK_ADMIN_PASSWORD>"},"tenantName":"<OPENSTACK_ADMIN_TENANTNAME>"}}'
headers:
Content-Type:
- application/json
User-Agent:
- Faraday v0.8.8
response:
status:
code: 200
message:
headers:
vary:
- X-Auth-Token
content-type:
- application/json
content-length:
- '2649'
date:
- Wed, 25 Sep 2013 20:21:00 GMT
connection:
- close
body:
encoding: US-ASCII
string: ! '{"access": {"token": {"issued_at": "2013-09-25T20:21:00.599676",
"expires": "2013-09-26T02:21:00Z", "id": "695465ba44f34e32b008250b7a92e4e9",
"tenant": {"description": "Used for Aviator testing/development", "enabled":
true, "id": "291e43291289457da59d8f727c46147a", "name": "<OPENSTACK_ADMIN_TENANTNAME>"}},
"serviceCatalog": [{"endpoints": [{"adminURL": "<OPENSTACK_ADMIN_HOST_URI>:8774/v2/291e43291289457da59d8f727c46147a",
"region": "RegionOne", "internalURL": "<OPENSTACK_ADMIN_HOST_URI>:8774/v2/291e43291289457da59d8f727c46147a",
"id": "6bb597a3738045f4b2c51a7702037cab", "publicURL": "<OPENSTACK_ADMIN_HOST_URI>:8774/v2/291e43291289457da59d8f727c46147a"}],
"endpoints_links": [], "type": "compute", "name": "nova"}, {"endpoints": [{"adminURL":
"<OPENSTACK_ADMIN_HOST_URI>:9292", "region": "RegionOne", "internalURL": "<OPENSTACK_ADMIN_HOST_URI>:9292",
"id": "2985945e07b74103bb2dfef7e426cd43", "publicURL": "<OPENSTACK_ADMIN_HOST_URI>:9292"}],
"endpoints_links": [], "type": "image", "name": "glance"}, {"endpoints": [{"adminURL":
"<OPENSTACK_ADMIN_HOST_URI>:8777", "region": "RegionOne", "internalURL": "<OPENSTACK_ADMIN_HOST_URI>:8777",
"id": "370119dd80e84894bfe83d766fd467dd", "publicURL": "<OPENSTACK_ADMIN_HOST_URI>:8777"}],
"endpoints_links": [], "type": "metering", "name": "ceilometer"}, {"endpoints":
[{"adminURL": "<OPENSTACK_ADMIN_HOST_URI>:8776/v1/291e43291289457da59d8f727c46147a",
"region": "RegionOne", "internalURL": "<OPENSTACK_ADMIN_HOST_URI>:8776/v1/291e43291289457da59d8f727c46147a",
"id": "2492a6f5fa80466d9312e51a8f79b638", "publicURL": "<OPENSTACK_ADMIN_HOST_URI>:8776/v1/291e43291289457da59d8f727c46147a"}],
"endpoints_links": [], "type": "volume", "name": "cinder"}, {"endpoints":
[{"adminURL": "<OPENSTACK_ADMIN_HOST_URI>:8773/services/Admin", "region":
"RegionOne", "internalURL": "<OPENSTACK_ADMIN_HOST_URI>:8773/services/Cloud",
"id": "1f68f3ce931946c788e487443e772fb2", "publicURL": "<OPENSTACK_ADMIN_HOST_URI>:8773/services/Cloud"}],
"endpoints_links": [], "type": "ec2", "name": "nova_ec2"}, {"endpoints": [{"adminURL":
"<OPENSTACK_ADMIN_HOST_URI>:35357/v2.0", "region": "RegionOne", "internalURL":
"<OPENSTACK_ADMIN_HOST_URI>:5000/v2.0", "id": "12c722e9b9fb471fbea83c6157c0123a",
"publicURL": "<OPENSTACK_ADMIN_HOST_URI>:5000/v2.0"}], "endpoints_links":
[], "type": "identity", "name": "keystone"}], "user": {"username": "<OPENSTACK_ADMIN_USERNAME>",
"roles_links": [], "id": "3cb44449b3cb48519641864ca82d1911", "roles": [{"name":
"admin"}], "name": "<OPENSTACK_ADMIN_USERNAME>"}, "metadata": {"is_admin":
0, "roles": ["a0d6ba8f41b746b495a6d25c69962489"]}}}'
http_version:
recorded_at: Wed, 25 Sep 2013 20:21:00 GMT
recorded_with: VCR 2.5.0

View File

@@ -0,0 +1,143 @@
---
http_interactions:
- request:
method: post
uri: <OPENSTACK_ADMIN_HOST_URI>:5000/v2.0/tokens
body:
encoding: UTF-8
string: ! '{"auth":{"passwordCredentials":{"username":"<OPENSTACK_ADMIN_USERNAME>","password":"<OPENSTACK_ADMIN_PASSWORD>"},"tenantName":"<OPENSTACK_ADMIN_TENANTNAME>"}}'
headers:
Content-Type:
- application/json
User-Agent:
- Faraday v0.8.8
response:
status:
code: 200
message:
headers:
vary:
- X-Auth-Token
content-type:
- application/json
content-length:
- '2649'
date:
- Wed, 25 Sep 2013 19:00:22 GMT
connection:
- close
body:
encoding: US-ASCII
string: ! '{"access": {"token": {"issued_at": "2013-09-25T19:00:22.822563",
"expires": "2013-09-26T01:00:22Z", "id": "9db5bd6b0022494f8bb97ceea0ce4b68",
"tenant": {"description": "Used for Aviator testing/development", "enabled":
true, "id": "291e43291289457da59d8f727c46147a", "name": "<OPENSTACK_ADMIN_TENANTNAME>"}},
"serviceCatalog": [{"endpoints": [{"adminURL": "<OPENSTACK_ADMIN_HOST_URI>:8774/v2/291e43291289457da59d8f727c46147a",
"region": "RegionOne", "internalURL": "<OPENSTACK_ADMIN_HOST_URI>:8774/v2/291e43291289457da59d8f727c46147a",
"id": "6bb597a3738045f4b2c51a7702037cab", "publicURL": "<OPENSTACK_ADMIN_HOST_URI>:8774/v2/291e43291289457da59d8f727c46147a"}],
"endpoints_links": [], "type": "compute", "name": "nova"}, {"endpoints": [{"adminURL":
"<OPENSTACK_ADMIN_HOST_URI>:9292", "region": "RegionOne", "internalURL": "<OPENSTACK_ADMIN_HOST_URI>:9292",
"id": "2985945e07b74103bb2dfef7e426cd43", "publicURL": "<OPENSTACK_ADMIN_HOST_URI>:9292"}],
"endpoints_links": [], "type": "image", "name": "glance"}, {"endpoints": [{"adminURL":
"<OPENSTACK_ADMIN_HOST_URI>:8777", "region": "RegionOne", "internalURL": "<OPENSTACK_ADMIN_HOST_URI>:8777",
"id": "370119dd80e84894bfe83d766fd467dd", "publicURL": "<OPENSTACK_ADMIN_HOST_URI>:8777"}],
"endpoints_links": [], "type": "metering", "name": "ceilometer"}, {"endpoints":
[{"adminURL": "<OPENSTACK_ADMIN_HOST_URI>:8776/v1/291e43291289457da59d8f727c46147a",
"region": "RegionOne", "internalURL": "<OPENSTACK_ADMIN_HOST_URI>:8776/v1/291e43291289457da59d8f727c46147a",
"id": "2492a6f5fa80466d9312e51a8f79b638", "publicURL": "<OPENSTACK_ADMIN_HOST_URI>:8776/v1/291e43291289457da59d8f727c46147a"}],
"endpoints_links": [], "type": "volume", "name": "cinder"}, {"endpoints":
[{"adminURL": "<OPENSTACK_ADMIN_HOST_URI>:8773/services/Admin", "region":
"RegionOne", "internalURL": "<OPENSTACK_ADMIN_HOST_URI>:8773/services/Cloud",
"id": "1f68f3ce931946c788e487443e772fb2", "publicURL": "<OPENSTACK_ADMIN_HOST_URI>:8773/services/Cloud"}],
"endpoints_links": [], "type": "ec2", "name": "nova_ec2"}, {"endpoints": [{"adminURL":
"<OPENSTACK_ADMIN_HOST_URI>:35357/v2.0", "region": "RegionOne", "internalURL":
"<OPENSTACK_ADMIN_HOST_URI>:5000/v2.0", "id": "12c722e9b9fb471fbea83c6157c0123a",
"publicURL": "<OPENSTACK_ADMIN_HOST_URI>:5000/v2.0"}], "endpoints_links":
[], "type": "identity", "name": "keystone"}], "user": {"username": "<OPENSTACK_ADMIN_USERNAME>",
"roles_links": [], "id": "3cb44449b3cb48519641864ca82d1911", "roles": [{"name":
"admin"}], "name": "<OPENSTACK_ADMIN_USERNAME>"}, "metadata": {"is_admin":
0, "roles": ["a0d6ba8f41b746b495a6d25c69962489"]}}}'
http_version:
recorded_at: Wed, 25 Sep 2013 19:00:22 GMT
- request:
method: get
uri: <OPENSTACK_ADMIN_HOST_URI>:5000/v2.0/tenants
body:
encoding: US-ASCII
string: ''
headers:
Content-Type:
- application/json
User-Agent:
- Faraday v0.8.8
X-Auth-Token:
- 9db5bd6b0022494f8bb97ceea0ce4b68
response:
status:
code: 200
message:
headers:
vary:
- X-Auth-Token
content-type:
- application/json
content-length:
- '4062'
date:
- Wed, 25 Sep 2013 19:00:23 GMT
connection:
- close
body:
encoding: US-ASCII
string: ! '{"tenants_links": [], "tenants": [{"description": "Description",
"enabled": true, "id": "1113967479ea4426a4c80a1b109daee2", "name": "Permanent
Project"}, {"description": "", "enabled": true, "id": "1b398a49e78448b3bdb7acf77e584fe5",
"name": "alvintest"}, {"description": "Tenant for the openstack services",
"enabled": true, "id": "1c386cddb0604535ba1f372a1c971550", "name": "services"},
{"description": "My Project", "enabled": true, "id": "25f6138692a5497982e0a9185b6925eb",
"name": "Project"}, {"description": "", "enabled": true, "id": "27779ee35855440cbbed49e93bb068f5",
"name": "alvintest3"}, {"description": "Used for Aviator testing/development",
"enabled": true, "id": "291e43291289457da59d8f727c46147a", "name": "<OPENSTACK_ADMIN_TENANTNAME>"},
{"description": "asdf", "enabled": true, "id": "3abf2f47fb194ecc9977362e5d1a8c09",
"name": "mmaglana"}, {"description": "testing", "enabled": true, "id": "3ec6ecaff17a41a5bb105a15376c5566",
"name": "ninja"}, {"description": "This is a test", "enabled": true, "id":
"4170d3aef0ff4fdcb0287496f5eb3a61", "name": "Test Project Too"}, {"description":
"My Project", "enabled": true, "id": "47c27e66021546c8b39fe9a2cf0d0935", "name":
"Xample"}, {"description": "This is a test", "enabled": true, "id": "5a15648e5483474aa8d6fa13dbe37a4b",
"name": "Test Project"}, {"description": "sample", "enabled": true, "id":
"646fe18d914745eeae0122a24ea653cc", "name": "newprojtest"}, {"description":
"test", "enabled": true, "id": "6bad4d3fe00c43d3ad3c2dcca4ff3eb0", "name":
"elmer"}, {"description": "My Project", "enabled": true, "id": "6f2c8fc3dda7430c9c1adbdf8c769b9c",
"name": "WWProject"}, {"description": "Test Project", "enabled": true, "id":
"713e1b55039d4fd6b91bbeac8914028c", "name": "a_test_project"}, {"description":
"", "enabled": true, "id": "763d42422d914f0ca6eab905b85c65c5", "name": "Fonsy
Test 1"}, {"description": "lalala", "enabled": true, "id": "7dfb270af41245c4911cce903532cdde",
"name": "jason_test"}, {"description": "testing", "enabled": true, "id": "85ea75f214ca4d3f834ca37cc570a8fd",
"name": "ann"}, {"description": "test", "enabled": true, "id": "89b89207b57a4ac4a9e9d0be628a95b3",
"name": "projet"}, {"description": "admin tenant", "enabled": true, "id":
"8a42fc89e6fb41a0b676d7b502b35c81", "name": "admin"}, {"description": "My
Project", "enabled": true, "id": "8f6e20e1ad2a4ffb98da9450dc804891", "name":
"Aviator Project"}, {"description": "one instance in SUSPENDED state cannot
be \"resumed\" and deleted", "enabled": true, "id": "951659d798a14d5e98a94878760cfe39",
"name": "admgelProject"}, {"description": "sample", "enabled": true, "id":
"a0d20724cd2d475e99b01b2b9a03f71e", "name": "projecttest"}, {"description":
"lalala", "enabled": true, "id": "a0e37889b3eb4e319992c5b29ef8c5fe", "name":
"jason_testxxx"}, {"description": "lalala", "enabled": true, "id": "aadac34ef5f44c869151d9f62851ea1b",
"name": "jason_testxxxxx"}, {"description": "DELETEME", "enabled": true, "id":
"b7d51b17bbc144b3991d94d3a715fe7b", "name": "DELETEME"}, {"description": "test",
"enabled": true, "id": "bd57591e188f438ba53b19228e156358", "name": "test123"},
{"description": "", "enabled": true, "id": "bfaebc8688fc48a2b227509173c934e3",
"name": "aviator_test"}, {"description": "sample", "enabled": true, "id":
"bfed1ed0079b4cb78abbbbb3257ddc21", "name": "another test project"}, {"description":
"My Project", "enabled": true, "id": "c764b14c998040d6ad1fb98831b31754", "name":
"Project 1377582007"}, {"description": "Used for Aviator testing/development
", "enabled": true, "id": "d770443fc60a410c843dc12b98ac8135", "name": "<OPENSTACK_MEMBER_TENANTNAME>"},
{"description": "System account for Morphlabs mCloud administration", "enabled":
true, "id": "e7b1b62aa1474f758c4974b8be44cf6c", "name": "demo"}, {"description":
"", "enabled": true, "id": "ecc997fefbb24691b14ff16ebe900f17", "name": "alvintest2"},
{"description": "", "enabled": true, "id": "f10664c00326466b98707ce4d5cff470",
"name": "alvintest4"}, {"description": "lalala", "enabled": true, "id": "f74461b5bd9e4740b2d4fb3df0e07b51",
"name": "jason_testxxxx"}]}'
http_version:
recorded_at: Wed, 25 Sep 2013 19:00:23 GMT
recorded_with: VCR 2.5.0

View File

@@ -0,0 +1,74 @@
---
http_interactions:
- request:
method: post
uri: <OPENSTACK_ADMIN_HOST_URI>:5000/v2.0/tokens
body:
encoding: UTF-8
string: ! '{"auth":{"passwordCredentials":{"username":"<OPENSTACK_MEMBER_USERNAME>","password":"<OPENSTACK_MEMBER_PASSWORD>"}}}'
headers:
Content-Type:
- application/json
User-Agent:
- Faraday v0.8.8
response:
status:
code: 200
message:
headers:
vary:
- X-Auth-Token
content-type:
- application/json
content-length:
- '355'
date:
- Wed, 25 Sep 2013 22:45:41 GMT
connection:
- close
body:
encoding: US-ASCII
string: ! '{"access": {"token": {"issued_at": "2013-09-25T22:45:41.760351",
"expires": "2013-09-26T04:45:41Z", "id": "922efc3fc21c4ffa86c280209f4aa9b8"},
"serviceCatalog": [], "user": {"username": "<OPENSTACK_MEMBER_USERNAME>",
"roles_links": [], "id": "447527294dae4a1788d36beb0db99c00", "roles": [],
"name": "<OPENSTACK_MEMBER_USERNAME>"}, "metadata": {"is_admin": 0, "roles":
[]}}}'
http_version:
recorded_at: Wed, 25 Sep 2013 22:45:41 GMT
- request:
method: get
uri: <OPENSTACK_ADMIN_HOST_URI>:5000/v2.0/tenants
body:
encoding: US-ASCII
string: ''
headers:
Content-Type:
- application/json
User-Agent:
- Faraday v0.8.8
X-Auth-Token:
- 922efc3fc21c4ffa86c280209f4aa9b8
response:
status:
code: 200
message:
headers:
vary:
- X-Auth-Token
content-type:
- application/json
content-length:
- '189'
date:
- Wed, 25 Sep 2013 22:45:42 GMT
connection:
- close
body:
encoding: US-ASCII
string: ! '{"tenants_links": [], "tenants": [{"description": "Used for Aviator
testing/development ", "enabled": true, "id": "d770443fc60a410c843dc12b98ac8135",
"name": "<OPENSTACK_MEMBER_TENANTNAME>"}]}'
http_version:
recorded_at: Wed, 25 Sep 2013 22:45:42 GMT
recorded_with: VCR 2.5.0

View File

@@ -0,0 +1,62 @@
---
http_interactions:
- request:
method: post
uri: <OPENSTACK_ADMIN_HOST_URI>:5000/v2.0/tokens
body:
encoding: UTF-8
string: ! '{"auth":{"passwordCredentials":{"username":"<OPENSTACK_ADMIN_USERNAME>","password":"<OPENSTACK_ADMIN_PASSWORD>"},"tenantName":"<OPENSTACK_ADMIN_TENANTNAME>"}}'
headers:
Content-Type:
- application/json
User-Agent:
- Faraday v0.8.8
response:
status:
code: 200
message:
headers:
vary:
- X-Auth-Token
content-type:
- application/json
content-length:
- '2649'
date:
- Wed, 25 Sep 2013 19:00:19 GMT
connection:
- close
body:
encoding: US-ASCII
string: ! '{"access": {"token": {"issued_at": "2013-09-25T19:00:19.111920",
"expires": "2013-09-26T01:00:19Z", "id": "f9433cbaa20849c9b6123d2f8d9efec6",
"tenant": {"description": "Used for Aviator testing/development", "enabled":
true, "id": "291e43291289457da59d8f727c46147a", "name": "<OPENSTACK_ADMIN_TENANTNAME>"}},
"serviceCatalog": [{"endpoints": [{"adminURL": "<OPENSTACK_ADMIN_HOST_URI>:8774/v2/291e43291289457da59d8f727c46147a",
"region": "RegionOne", "internalURL": "<OPENSTACK_ADMIN_HOST_URI>:8774/v2/291e43291289457da59d8f727c46147a",
"id": "6bb597a3738045f4b2c51a7702037cab", "publicURL": "<OPENSTACK_ADMIN_HOST_URI>:8774/v2/291e43291289457da59d8f727c46147a"}],
"endpoints_links": [], "type": "compute", "name": "nova"}, {"endpoints": [{"adminURL":
"<OPENSTACK_ADMIN_HOST_URI>:9292", "region": "RegionOne", "internalURL": "<OPENSTACK_ADMIN_HOST_URI>:9292",
"id": "2985945e07b74103bb2dfef7e426cd43", "publicURL": "<OPENSTACK_ADMIN_HOST_URI>:9292"}],
"endpoints_links": [], "type": "image", "name": "glance"}, {"endpoints": [{"adminURL":
"<OPENSTACK_ADMIN_HOST_URI>:8777", "region": "RegionOne", "internalURL": "<OPENSTACK_ADMIN_HOST_URI>:8777",
"id": "370119dd80e84894bfe83d766fd467dd", "publicURL": "<OPENSTACK_ADMIN_HOST_URI>:8777"}],
"endpoints_links": [], "type": "metering", "name": "ceilometer"}, {"endpoints":
[{"adminURL": "<OPENSTACK_ADMIN_HOST_URI>:8776/v1/291e43291289457da59d8f727c46147a",
"region": "RegionOne", "internalURL": "<OPENSTACK_ADMIN_HOST_URI>:8776/v1/291e43291289457da59d8f727c46147a",
"id": "2492a6f5fa80466d9312e51a8f79b638", "publicURL": "<OPENSTACK_ADMIN_HOST_URI>:8776/v1/291e43291289457da59d8f727c46147a"}],
"endpoints_links": [], "type": "volume", "name": "cinder"}, {"endpoints":
[{"adminURL": "<OPENSTACK_ADMIN_HOST_URI>:8773/services/Admin", "region":
"RegionOne", "internalURL": "<OPENSTACK_ADMIN_HOST_URI>:8773/services/Cloud",
"id": "1f68f3ce931946c788e487443e772fb2", "publicURL": "<OPENSTACK_ADMIN_HOST_URI>:8773/services/Cloud"}],
"endpoints_links": [], "type": "ec2", "name": "nova_ec2"}, {"endpoints": [{"adminURL":
"<OPENSTACK_ADMIN_HOST_URI>:35357/v2.0", "region": "RegionOne", "internalURL":
"<OPENSTACK_ADMIN_HOST_URI>:5000/v2.0", "id": "12c722e9b9fb471fbea83c6157c0123a",
"publicURL": "<OPENSTACK_ADMIN_HOST_URI>:5000/v2.0"}], "endpoints_links":
[], "type": "identity", "name": "keystone"}], "user": {"username": "<OPENSTACK_ADMIN_USERNAME>",
"roles_links": [], "id": "3cb44449b3cb48519641864ca82d1911", "roles": [{"name":
"admin"}], "name": "<OPENSTACK_ADMIN_USERNAME>"}, "metadata": {"is_admin":
0, "roles": ["a0d6ba8f41b746b495a6d25c69962489"]}}}'
http_version:
recorded_at: Wed, 25 Sep 2013 19:00:19 GMT
recorded_with: VCR 2.5.0

View File

@@ -0,0 +1,62 @@
---
http_interactions:
- request:
method: post
uri: <OPENSTACK_ADMIN_HOST_URI>:5000/v2.0/tokens
body:
encoding: UTF-8
string: ! '{"auth":{"passwordCredentials":{"username":"<OPENSTACK_ADMIN_USERNAME>","password":"<OPENSTACK_ADMIN_PASSWORD>"},"tenantName":"<OPENSTACK_ADMIN_TENANTNAME>"}}'
headers:
Content-Type:
- application/json
User-Agent:
- Faraday v0.8.8
response:
status:
code: 200
message:
headers:
vary:
- X-Auth-Token
content-type:
- application/json
content-length:
- '2649'
date:
- Wed, 25 Sep 2013 19:00:18 GMT
connection:
- close
body:
encoding: US-ASCII
string: ! '{"access": {"token": {"issued_at": "2013-09-25T19:00:18.408332",
"expires": "2013-09-26T01:00:18Z", "id": "bdd80cf6e8bd44898e107f050fb879cb",
"tenant": {"description": "Used for Aviator testing/development", "enabled":
true, "id": "291e43291289457da59d8f727c46147a", "name": "<OPENSTACK_ADMIN_TENANTNAME>"}},
"serviceCatalog": [{"endpoints": [{"adminURL": "<OPENSTACK_ADMIN_HOST_URI>:8774/v2/291e43291289457da59d8f727c46147a",
"region": "RegionOne", "internalURL": "<OPENSTACK_ADMIN_HOST_URI>:8774/v2/291e43291289457da59d8f727c46147a",
"id": "6bb597a3738045f4b2c51a7702037cab", "publicURL": "<OPENSTACK_ADMIN_HOST_URI>:8774/v2/291e43291289457da59d8f727c46147a"}],
"endpoints_links": [], "type": "compute", "name": "nova"}, {"endpoints": [{"adminURL":
"<OPENSTACK_ADMIN_HOST_URI>:9292", "region": "RegionOne", "internalURL": "<OPENSTACK_ADMIN_HOST_URI>:9292",
"id": "2985945e07b74103bb2dfef7e426cd43", "publicURL": "<OPENSTACK_ADMIN_HOST_URI>:9292"}],
"endpoints_links": [], "type": "image", "name": "glance"}, {"endpoints": [{"adminURL":
"<OPENSTACK_ADMIN_HOST_URI>:8777", "region": "RegionOne", "internalURL": "<OPENSTACK_ADMIN_HOST_URI>:8777",
"id": "370119dd80e84894bfe83d766fd467dd", "publicURL": "<OPENSTACK_ADMIN_HOST_URI>:8777"}],
"endpoints_links": [], "type": "metering", "name": "ceilometer"}, {"endpoints":
[{"adminURL": "<OPENSTACK_ADMIN_HOST_URI>:8776/v1/291e43291289457da59d8f727c46147a",
"region": "RegionOne", "internalURL": "<OPENSTACK_ADMIN_HOST_URI>:8776/v1/291e43291289457da59d8f727c46147a",
"id": "2492a6f5fa80466d9312e51a8f79b638", "publicURL": "<OPENSTACK_ADMIN_HOST_URI>:8776/v1/291e43291289457da59d8f727c46147a"}],
"endpoints_links": [], "type": "volume", "name": "cinder"}, {"endpoints":
[{"adminURL": "<OPENSTACK_ADMIN_HOST_URI>:8773/services/Admin", "region":
"RegionOne", "internalURL": "<OPENSTACK_ADMIN_HOST_URI>:8773/services/Cloud",
"id": "1f68f3ce931946c788e487443e772fb2", "publicURL": "<OPENSTACK_ADMIN_HOST_URI>:8773/services/Cloud"}],
"endpoints_links": [], "type": "ec2", "name": "nova_ec2"}, {"endpoints": [{"adminURL":
"<OPENSTACK_ADMIN_HOST_URI>:35357/v2.0", "region": "RegionOne", "internalURL":
"<OPENSTACK_ADMIN_HOST_URI>:5000/v2.0", "id": "12c722e9b9fb471fbea83c6157c0123a",
"publicURL": "<OPENSTACK_ADMIN_HOST_URI>:5000/v2.0"}], "endpoints_links":
[], "type": "identity", "name": "keystone"}], "user": {"username": "<OPENSTACK_ADMIN_USERNAME>",
"roles_links": [], "id": "3cb44449b3cb48519641864ca82d1911", "roles": [{"name":
"admin"}], "name": "<OPENSTACK_ADMIN_USERNAME>"}, "metadata": {"is_admin":
0, "roles": ["a0d6ba8f41b746b495a6d25c69962489"]}}}'
http_version:
recorded_at: Wed, 25 Sep 2013 19:00:18 GMT
recorded_with: VCR 2.5.0

View File

@@ -0,0 +1,62 @@
---
http_interactions:
- request:
method: post
uri: <OPENSTACK_ADMIN_HOST_URI>:5000/v2.0/tokens
body:
encoding: UTF-8
string: ! '{"auth":{"passwordCredentials":{"username":"<OPENSTACK_ADMIN_USERNAME>","password":"<OPENSTACK_ADMIN_PASSWORD>"},"tenantName":"<OPENSTACK_ADMIN_TENANTNAME>"}}'
headers:
Content-Type:
- application/json
User-Agent:
- Faraday v0.8.8
response:
status:
code: 200
message:
headers:
vary:
- X-Auth-Token
content-type:
- application/json
content-length:
- '2649'
date:
- Wed, 25 Sep 2013 19:00:20 GMT
connection:
- close
body:
encoding: US-ASCII
string: ! '{"access": {"token": {"issued_at": "2013-09-25T19:00:20.145845",
"expires": "2013-09-26T01:00:20Z", "id": "d95df57d5f424d0a996ed719bf4de115",
"tenant": {"description": "Used for Aviator testing/development", "enabled":
true, "id": "291e43291289457da59d8f727c46147a", "name": "<OPENSTACK_ADMIN_TENANTNAME>"}},
"serviceCatalog": [{"endpoints": [{"adminURL": "<OPENSTACK_ADMIN_HOST_URI>:8774/v2/291e43291289457da59d8f727c46147a",
"region": "RegionOne", "internalURL": "<OPENSTACK_ADMIN_HOST_URI>:8774/v2/291e43291289457da59d8f727c46147a",
"id": "6bb597a3738045f4b2c51a7702037cab", "publicURL": "<OPENSTACK_ADMIN_HOST_URI>:8774/v2/291e43291289457da59d8f727c46147a"}],
"endpoints_links": [], "type": "compute", "name": "nova"}, {"endpoints": [{"adminURL":
"<OPENSTACK_ADMIN_HOST_URI>:9292", "region": "RegionOne", "internalURL": "<OPENSTACK_ADMIN_HOST_URI>:9292",
"id": "2985945e07b74103bb2dfef7e426cd43", "publicURL": "<OPENSTACK_ADMIN_HOST_URI>:9292"}],
"endpoints_links": [], "type": "image", "name": "glance"}, {"endpoints": [{"adminURL":
"<OPENSTACK_ADMIN_HOST_URI>:8777", "region": "RegionOne", "internalURL": "<OPENSTACK_ADMIN_HOST_URI>:8777",
"id": "370119dd80e84894bfe83d766fd467dd", "publicURL": "<OPENSTACK_ADMIN_HOST_URI>:8777"}],
"endpoints_links": [], "type": "metering", "name": "ceilometer"}, {"endpoints":
[{"adminURL": "<OPENSTACK_ADMIN_HOST_URI>:8776/v1/291e43291289457da59d8f727c46147a",
"region": "RegionOne", "internalURL": "<OPENSTACK_ADMIN_HOST_URI>:8776/v1/291e43291289457da59d8f727c46147a",
"id": "2492a6f5fa80466d9312e51a8f79b638", "publicURL": "<OPENSTACK_ADMIN_HOST_URI>:8776/v1/291e43291289457da59d8f727c46147a"}],
"endpoints_links": [], "type": "volume", "name": "cinder"}, {"endpoints":
[{"adminURL": "<OPENSTACK_ADMIN_HOST_URI>:8773/services/Admin", "region":
"RegionOne", "internalURL": "<OPENSTACK_ADMIN_HOST_URI>:8773/services/Cloud",
"id": "1f68f3ce931946c788e487443e772fb2", "publicURL": "<OPENSTACK_ADMIN_HOST_URI>:8773/services/Cloud"}],
"endpoints_links": [], "type": "ec2", "name": "nova_ec2"}, {"endpoints": [{"adminURL":
"<OPENSTACK_ADMIN_HOST_URI>:35357/v2.0", "region": "RegionOne", "internalURL":
"<OPENSTACK_ADMIN_HOST_URI>:5000/v2.0", "id": "12c722e9b9fb471fbea83c6157c0123a",
"publicURL": "<OPENSTACK_ADMIN_HOST_URI>:5000/v2.0"}], "endpoints_links":
[], "type": "identity", "name": "keystone"}], "user": {"username": "<OPENSTACK_ADMIN_USERNAME>",
"roles_links": [], "id": "3cb44449b3cb48519641864ca82d1911", "roles": [{"name":
"admin"}], "name": "<OPENSTACK_ADMIN_USERNAME>"}, "metadata": {"is_admin":
0, "roles": ["a0d6ba8f41b746b495a6d25c69962489"]}}}'
http_version:
recorded_at: Wed, 25 Sep 2013 19:00:20 GMT
recorded_with: VCR 2.5.0

View File

@@ -0,0 +1,62 @@
---
http_interactions:
- request:
method: post
uri: <OPENSTACK_ADMIN_HOST_URI>:5000/v2.0/tokens
body:
encoding: UTF-8
string: ! '{"auth":{"passwordCredentials":{"username":"<OPENSTACK_ADMIN_USERNAME>","password":"<OPENSTACK_ADMIN_PASSWORD>"},"tenantName":"<OPENSTACK_ADMIN_TENANTNAME>"}}'
headers:
Content-Type:
- application/json
User-Agent:
- Faraday v0.8.8
response:
status:
code: 200
message:
headers:
vary:
- X-Auth-Token
content-type:
- application/json
content-length:
- '2649'
date:
- Wed, 25 Sep 2013 19:00:21 GMT
connection:
- close
body:
encoding: US-ASCII
string: ! '{"access": {"token": {"issued_at": "2013-09-25T19:00:21.745126",
"expires": "2013-09-26T01:00:21Z", "id": "eb587564e730436b8f55861fb77fa04e",
"tenant": {"description": "Used for Aviator testing/development", "enabled":
true, "id": "291e43291289457da59d8f727c46147a", "name": "<OPENSTACK_ADMIN_TENANTNAME>"}},
"serviceCatalog": [{"endpoints": [{"adminURL": "<OPENSTACK_ADMIN_HOST_URI>:8774/v2/291e43291289457da59d8f727c46147a",
"region": "RegionOne", "internalURL": "<OPENSTACK_ADMIN_HOST_URI>:8774/v2/291e43291289457da59d8f727c46147a",
"id": "6bb597a3738045f4b2c51a7702037cab", "publicURL": "<OPENSTACK_ADMIN_HOST_URI>:8774/v2/291e43291289457da59d8f727c46147a"}],
"endpoints_links": [], "type": "compute", "name": "nova"}, {"endpoints": [{"adminURL":
"<OPENSTACK_ADMIN_HOST_URI>:9292", "region": "RegionOne", "internalURL": "<OPENSTACK_ADMIN_HOST_URI>:9292",
"id": "2985945e07b74103bb2dfef7e426cd43", "publicURL": "<OPENSTACK_ADMIN_HOST_URI>:9292"}],
"endpoints_links": [], "type": "image", "name": "glance"}, {"endpoints": [{"adminURL":
"<OPENSTACK_ADMIN_HOST_URI>:8777", "region": "RegionOne", "internalURL": "<OPENSTACK_ADMIN_HOST_URI>:8777",
"id": "370119dd80e84894bfe83d766fd467dd", "publicURL": "<OPENSTACK_ADMIN_HOST_URI>:8777"}],
"endpoints_links": [], "type": "metering", "name": "ceilometer"}, {"endpoints":
[{"adminURL": "<OPENSTACK_ADMIN_HOST_URI>:8776/v1/291e43291289457da59d8f727c46147a",
"region": "RegionOne", "internalURL": "<OPENSTACK_ADMIN_HOST_URI>:8776/v1/291e43291289457da59d8f727c46147a",
"id": "2492a6f5fa80466d9312e51a8f79b638", "publicURL": "<OPENSTACK_ADMIN_HOST_URI>:8776/v1/291e43291289457da59d8f727c46147a"}],
"endpoints_links": [], "type": "volume", "name": "cinder"}, {"endpoints":
[{"adminURL": "<OPENSTACK_ADMIN_HOST_URI>:8773/services/Admin", "region":
"RegionOne", "internalURL": "<OPENSTACK_ADMIN_HOST_URI>:8773/services/Cloud",
"id": "1f68f3ce931946c788e487443e772fb2", "publicURL": "<OPENSTACK_ADMIN_HOST_URI>:8773/services/Cloud"}],
"endpoints_links": [], "type": "ec2", "name": "nova_ec2"}, {"endpoints": [{"adminURL":
"<OPENSTACK_ADMIN_HOST_URI>:35357/v2.0", "region": "RegionOne", "internalURL":
"<OPENSTACK_ADMIN_HOST_URI>:5000/v2.0", "id": "12c722e9b9fb471fbea83c6157c0123a",
"publicURL": "<OPENSTACK_ADMIN_HOST_URI>:5000/v2.0"}], "endpoints_links":
[], "type": "identity", "name": "keystone"}], "user": {"username": "<OPENSTACK_ADMIN_USERNAME>",
"roles_links": [], "id": "3cb44449b3cb48519641864ca82d1911", "roles": [{"name":
"admin"}], "name": "<OPENSTACK_ADMIN_USERNAME>"}, "metadata": {"is_admin":
0, "roles": ["a0d6ba8f41b746b495a6d25c69962489"]}}}'
http_version:
recorded_at: Wed, 25 Sep 2013 19:00:21 GMT
recorded_with: VCR 2.5.0