When multiple regions are used, nova api doesn't know to which cinder to reach out:
2015-06-24 10:43:47.964 1170 TRACE nova.api.openstack Traceback (most recent call last): 2015-06-24 10:43:47.964 1170 TRACE nova.api.openstack File "/usr/lib/python2.7/dist-packages/nova/api/openstack/__init__.py", line 124, in __call__ 2015-06-24 10:43:47.964 1170 TRACE nova.api.openstack return req.get_response(self.application) 2015-06-24 10:43:47.964 1170 TRACE nova.api.openstack File "/usr/lib/python2.7/dist-packages/webob/request.py", line 1320, in send 2015-06-24 10:43:47.964 1170 TRACE nova.api.openstack application, catch_exc_info=False) 2015-06-24 10:43:47.964 1170 TRACE nova.api.openstack File "/usr/lib/python2.7/dist-packages/webob/request.py", line 1284, in call_application 2015-06-24 10:43:47.964 1170 TRACE nova.api.openstack app_iter = application(self.environ, start_response) 2015-06-24 10:43:47.964 1170 TRACE nova.api.openstack File "/usr/lib/python2.7/dist-packages/webob/dec.py", line 144, in __call__ 2015-06-24 10:43:47.964 1170 TRACE nova.api.openstack return resp(environ, start_response) 2015-06-24 10:43:47.964 1170 TRACE nova.api.openstack File "/usr/lib/python2.7/dist-packages/keystoneclient/middleware/auth_token.py", line 663, in __call__ 2015-06-24 10:43:47.964 1170 TRACE nova.api.openstack return self.app(env, start_response) 2015-06-24 10:43:47.964 1170 TRACE nova.api.openstack File "/usr/lib/python2.7/dist-packages/webob/dec.py", line 144, in __call__ 2015-06-24 10:43:47.964 1170 TRACE nova.api.openstack return resp(environ, start_response) 2015-06-24 10:43:47.964 1170 TRACE nova.api.openstack File "/usr/lib/python2.7/dist-packages/webob/dec.py", line 144, in __call__ 2015-06-24 10:43:47.964 1170 TRACE nova.api.openstack return resp(environ, start_response) 2015-06-24 10:43:47.964 1170 TRACE nova.api.openstack File "/usr/lib/python2.7/dist-packages/routes/middleware.py", line 131, in __call__ 2015-06-24 10:43:47.964 1170 TRACE nova.api.openstack response = self.app(environ, start_response) 2015-06-24 10:43:47.964 1170 TRACE nova.api.openstack File "/usr/lib/python2.7/dist-packages/webob/dec.py", line 144, in __call__ 2015-06-24 10:43:47.964 1170 TRACE nova.api.openstack return resp(environ, start_response) 2015-06-24 10:43:47.964 1170 TRACE nova.api.openstack File "/usr/lib/python2.7/dist-packages/webob/dec.py", line 130, in __call__ 2015-06-24 10:43:47.964 1170 TRACE nova.api.openstack resp = self.call_func(req, *args, **self.kwargs) 2015-06-24 10:43:47.964 1170 TRACE nova.api.openstack File "/usr/lib/python2.7/dist-packages/webob/dec.py", line 195, in call_func 2015-06-24 10:43:47.964 1170 TRACE nova.api.openstack return self.func(req, *args, **kwargs) 2015-06-24 10:43:47.964 1170 TRACE nova.api.openstack File "/usr/lib/python2.7/dist-packages/nova/api/openstack/wsgi.py", line 910, in __call__ 2015-06-24 10:43:47.964 1170 TRACE nova.api.openstack content_type, body, accept) 2015-06-24 10:43:47.964 1170 TRACE nova.api.openstack File "/usr/lib/python2.7/dist-packages/nova/api/openstack/wsgi.py", line 975, in _process_stack 2015-06-24 10:43:47.964 1170 TRACE nova.api.openstack action_result = self.dispatch(meth, request, action_args) 2015-06-24 10:43:47.964 1170 TRACE nova.api.openstack File "/usr/lib/python2.7/dist-packages/nova/api/openstack/wsgi.py", line 1059, in dispatch 2015-06-24 10:43:47.964 1170 TRACE nova.api.openstack return method(req=request, **action_args) 2015-06-24 10:43:47.964 1170 TRACE nova.api.openstack File "/usr/lib/python2.7/dist-packages/nova/api/openstack/compute/contrib/volumes.py", line 418, in create 2015-06-24 10:43:47.964 1170 TRACE nova.api.openstack volume_id, device) 2015-06-24 10:43:47.964 1170 TRACE nova.api.openstack File "/usr/lib/python2.7/dist-packages/nova/compute/api.py", line 221, in wrapped 2015-06-24 10:43:47.964 1170 TRACE nova.api.openstack return func(self, context, target, *args, **kwargs) 2015-06-24 10:43:47.964 1170 TRACE nova.api.openstack File "/usr/lib/python2.7/dist-packages/nova/compute/api.py", line 211, in inner 2015-06-24 10:43:47.964 1170 TRACE nova.api.openstack return function(self, context, instance, *args, **kwargs) 2015-06-24 10:43:47.964 1170 TRACE nova.api.openstack File "/usr/lib/python2.7/dist-packages/nova/compute/api.py", line 192, in inner 2015-06-24 10:43:47.964 1170 TRACE nova.api.openstack return f(self, context, instance, *args, **kw) 2015-06-24 10:43:47.964 1170 TRACE nova.api.openstack File "/usr/lib/python2.7/dist-packages/nova/compute/api.py", line 2947, in attach_volume 2015-06-24 10:43:47.964 1170 TRACE nova.api.openstack disk_bus, device_type) 2015-06-24 10:43:47.964 1170 TRACE nova.api.openstack File "/usr/lib/python2.7/dist-packages/nova/compute/api.py", line 2928, in _attach_volume 2015-06-24 10:43:47.964 1170 TRACE nova.api.openstack volume_bdm.destroy(context) 2015-06-24 10:43:47.964 1170 TRACE nova.api.openstack File "/usr/lib/python2.7/dist-packages/nova/openstack/common/excutils.py", line 82, in __exit__ 2015-06-24 10:43:47.964 1170 TRACE nova.api.openstack six.reraise(self.type_, self.value, self.tb) 2015-06-24 10:43:47.964 1170 TRACE nova.api.openstack File "/usr/lib/python2.7/dist-packages/nova/compute/api.py", line 2921, in _attach_volume 2015-06-24 10:43:47.964 1170 TRACE nova.api.openstack volume = self.volume_api.get(context, volume_id) 2015-06-24 10:43:47.964 1170 TRACE nova.api.openstack File "/usr/lib/python2.7/dist-packages/nova/volume/cinder.py", line 185, in wrapper 2015-06-24 10:43:47.964 1170 TRACE nova.api.openstack res = method(self, ctx, volume_id, *args, **kwargs) 2015-06-24 10:43:47.964 1170 TRACE nova.api.openstack File "/usr/lib/python2.7/dist-packages/nova/volume/cinder.py", line 283, in get 2015-06-24 10:43:47.964 1170 TRACE nova.api.openstack item = cinderclient(context).volumes.get(volume_id) 2015-06-24 10:43:47.964 1170 TRACE nova.api.openstack File "/usr/lib/python2.7/dist-packages/nova/volume/cinder.py", line 92, in cinderclient 2015-06-24 10:43:47.964 1170 TRACE nova.api.openstack version = get_cinder_client_version(context) 2015-06-24 10:43:47.964 1170 TRACE nova.api.openstack File "/usr/lib/python2.7/dist-packages/nova/volume/cinder.py", line 254, in get_cinder_client_version 2015-06-24 10:43:47.964 1170 TRACE nova.api.openstack endpoint_type=endpoint_type) 2015-06-24 10:43:47.964 1170 TRACE nova.api.openstack File "/usr/lib/python2.7/dist-packages/cinderclient/service_catalog.py", line 86, in url_for 2015-06-24 10:43:47.964 1170 TRACE nova.api.openstack raise cinderclient.exceptions.AmbiguousEndpoints(endpoints=eplist) 2015-06-24 10:43:47.964 1170 TRACE nova.api.openstack AmbiguousEndpoints: AmbiguousEndpoints: [{u'adminURL': u'http://172.16.20.4:8776/v1/9eb8fcc4d6114834b8716f3209c05478', u'region': u'Chassis1', u'internalURL': u'http://172.16.20.4:8776/v1/9eb8fcc4d6114834b8716f3209c05478', 'serviceName': u'cinder', u'id': u'65776036ee7745b89483b992d1d41d73', u'publicURL': u'http://172.16.20.4:8776/v1/9eb8fcc4d6114834b8716f3209c05478'}, {u'adminURL': u'http://172.16.30.4:8776/v1/9eb8fcc4d6114834b8716f3209c05478', u'region': u'Chassis2', u'internalURL': u'http://172.16.30.4:8776/v1/9eb8fcc4d6114834b8716f3209c05478', 'serviceName': u'cinder', u'id' : u'1e8916d776414e6da4d7bf1b4ada5fc1', u'publicURL': u'http://172.16.30.4:8776/v1/9eb8fcc4d6114834b8716f3209c05478'}, {u'adminURL': u'http://172.16.40.4:8776/v1/9eb8fcc4d6114834b8716f3209c05478', u'region': u'Chas sis3', u'internalURL': u'http://172.16.40.4:8776/v1/9eb8fcc4d6114834b8716f3209c05478', 'serviceName': u'cinder', u'id': u'0e42b2c9322a49f3842a088b630accd9', u'publicURL': u'http://172.16.40.4:8776/v1/9eb8fcc4d6114 834b8716f3209c05478'}]
It's missing os_region_name = [Region] in nova.conf.
Setting os_region_name with config-flags is a workaround, but this should be part of the template. Note that region for nova-cloud-controller is set to [Region].
When multiple regions are used, nova api doesn't know to which cinder to reach out:
2015-06-24 10:43:47.964 1170 TRACE nova.api.openstack Traceback (most recent call last): python2. 7/dist- packages/ nova/api/ openstack/ __init_ _.py", line 124, in __call__ response( self.applicatio n) python2. 7/dist- packages/ webob/request. py", line 1320, in send info=False) python2. 7/dist- packages/ webob/request. py", line 1284, in call_application self.environ, start_response) python2. 7/dist- packages/ webob/dec. py", line 144, in __call__ python2. 7/dist- packages/ keystoneclient/ middleware/ auth_token. py", line 663, in __call__ python2. 7/dist- packages/ webob/dec. py", line 144, in __call__ python2. 7/dist- packages/ webob/dec. py", line 144, in __call__ python2. 7/dist- packages/ routes/ middleware. py", line 131, in __call__ python2. 7/dist- packages/ webob/dec. py", line 144, in __call__ python2. 7/dist- packages/ webob/dec. py", line 130, in __call__ python2. 7/dist- packages/ webob/dec. py", line 195, in call_func python2. 7/dist- packages/ nova/api/ openstack/ wsgi.py" , line 910, in __call__ python2. 7/dist- packages/ nova/api/ openstack/ wsgi.py" , line 975, in _process_stack python2. 7/dist- packages/ nova/api/ openstack/ wsgi.py" , line 1059, in dispatch python2. 7/dist- packages/ nova/api/ openstack/ compute/ contrib/ volumes. py", line 418, in create python2. 7/dist- packages/ nova/compute/ api.py" , line 221, in wrapped python2. 7/dist- packages/ nova/compute/ api.py" , line 211, in inner python2. 7/dist- packages/ nova/compute/ api.py" , line 192, in inner python2. 7/dist- packages/ nova/compute/ api.py" , line 2947, in attach_volume python2. 7/dist- packages/ nova/compute/ api.py" , line 2928, in _attach_volume bdm.destroy( context) python2. 7/dist- packages/ nova/openstack/ common/ excutils. py", line 82, in __exit__ self.type_ , self.value, self.tb) python2. 7/dist- packages/ nova/compute/ api.py" , line 2921, in _attach_volume api.get( context, volume_id) python2. 7/dist- packages/ nova/volume/ cinder. py", line 185, in wrapper python2. 7/dist- packages/ nova/volume/ cinder. py", line 283, in get context) .volumes. get(volume_ id) python2. 7/dist- packages/ nova/volume/ cinder. py", line 92, in cinderclient client_ version( context) python2. 7/dist- packages/ nova/volume/ cinder. py", line 254, in get_cinder_ client_ version type=endpoint_ type) python2. 7/dist- packages/ cinderclient/ service_ catalog. py", line 86, in url_for exceptions. AmbiguousEndpoi nts(endpoints= eplist) 172.16. 20.4:8776/ v1/9eb8fcc4d611 4834b8716f3209c 05478', u'region': u'Chassis1', u'internalURL': 172.16. 20.4:8776/ v1/9eb8fcc4d611 4834b8716f3209c 05478', 'serviceName': u'cinder', u'id': u'65776036ee774 5b89483b992d1d4 1d73', u'publicURL': u'http:// 172.16. 20.4:8776/ v1/9eb8fcc4d611 4834b8716f3209c 05478'}, 172.16. 30.4:8776/ v1/9eb8fcc4d611 4834b8716f3209c 05478', u'region': u'Chassis2', u'internalURL': u'http:// 172.16. 30.4:8776/ v1/9eb8fcc4d611 4834b8716f3209c 05478', 'serviceName': u'cinder', u'id' e6da4d7bf1b4ada 5fc1', u'publicURL': u'http:// 172.16. 30.4:8776/ v1/9eb8fcc4d611 4834b8716f3209c 05478'}, {u'adminURL': u'http:// 172.16. 40.4:8776/ v1/9eb8fcc4d611 4834b8716f3209c 05478', u'region': u'Chas 172.16. 40.4:8776/ v1/9eb8fcc4d611 4834b8716f3209c 05478', 'serviceName': u'cinder', u'id': u'0e42b2c9322a4 9f3842a088b630a ccd9', u'publicURL': u'http:// 172.16. 40.4:8776/ v1/9eb8fcc4d611 4 5478'}]
2015-06-24 10:43:47.964 1170 TRACE nova.api.openstack File "/usr/lib/
2015-06-24 10:43:47.964 1170 TRACE nova.api.openstack return req.get_
2015-06-24 10:43:47.964 1170 TRACE nova.api.openstack File "/usr/lib/
2015-06-24 10:43:47.964 1170 TRACE nova.api.openstack application, catch_exc_
2015-06-24 10:43:47.964 1170 TRACE nova.api.openstack File "/usr/lib/
2015-06-24 10:43:47.964 1170 TRACE nova.api.openstack app_iter = application(
2015-06-24 10:43:47.964 1170 TRACE nova.api.openstack File "/usr/lib/
2015-06-24 10:43:47.964 1170 TRACE nova.api.openstack return resp(environ, start_response)
2015-06-24 10:43:47.964 1170 TRACE nova.api.openstack File "/usr/lib/
2015-06-24 10:43:47.964 1170 TRACE nova.api.openstack return self.app(env, start_response)
2015-06-24 10:43:47.964 1170 TRACE nova.api.openstack File "/usr/lib/
2015-06-24 10:43:47.964 1170 TRACE nova.api.openstack return resp(environ, start_response)
2015-06-24 10:43:47.964 1170 TRACE nova.api.openstack File "/usr/lib/
2015-06-24 10:43:47.964 1170 TRACE nova.api.openstack return resp(environ, start_response)
2015-06-24 10:43:47.964 1170 TRACE nova.api.openstack File "/usr/lib/
2015-06-24 10:43:47.964 1170 TRACE nova.api.openstack response = self.app(environ, start_response)
2015-06-24 10:43:47.964 1170 TRACE nova.api.openstack File "/usr/lib/
2015-06-24 10:43:47.964 1170 TRACE nova.api.openstack return resp(environ, start_response)
2015-06-24 10:43:47.964 1170 TRACE nova.api.openstack File "/usr/lib/
2015-06-24 10:43:47.964 1170 TRACE nova.api.openstack resp = self.call_func(req, *args, **self.kwargs)
2015-06-24 10:43:47.964 1170 TRACE nova.api.openstack File "/usr/lib/
2015-06-24 10:43:47.964 1170 TRACE nova.api.openstack return self.func(req, *args, **kwargs)
2015-06-24 10:43:47.964 1170 TRACE nova.api.openstack File "/usr/lib/
2015-06-24 10:43:47.964 1170 TRACE nova.api.openstack content_type, body, accept)
2015-06-24 10:43:47.964 1170 TRACE nova.api.openstack File "/usr/lib/
2015-06-24 10:43:47.964 1170 TRACE nova.api.openstack action_result = self.dispatch(meth, request, action_args)
2015-06-24 10:43:47.964 1170 TRACE nova.api.openstack File "/usr/lib/
2015-06-24 10:43:47.964 1170 TRACE nova.api.openstack return method(req=request, **action_args)
2015-06-24 10:43:47.964 1170 TRACE nova.api.openstack File "/usr/lib/
2015-06-24 10:43:47.964 1170 TRACE nova.api.openstack volume_id, device)
2015-06-24 10:43:47.964 1170 TRACE nova.api.openstack File "/usr/lib/
2015-06-24 10:43:47.964 1170 TRACE nova.api.openstack return func(self, context, target, *args, **kwargs)
2015-06-24 10:43:47.964 1170 TRACE nova.api.openstack File "/usr/lib/
2015-06-24 10:43:47.964 1170 TRACE nova.api.openstack return function(self, context, instance, *args, **kwargs)
2015-06-24 10:43:47.964 1170 TRACE nova.api.openstack File "/usr/lib/
2015-06-24 10:43:47.964 1170 TRACE nova.api.openstack return f(self, context, instance, *args, **kw)
2015-06-24 10:43:47.964 1170 TRACE nova.api.openstack File "/usr/lib/
2015-06-24 10:43:47.964 1170 TRACE nova.api.openstack disk_bus, device_type)
2015-06-24 10:43:47.964 1170 TRACE nova.api.openstack File "/usr/lib/
2015-06-24 10:43:47.964 1170 TRACE nova.api.openstack volume_
2015-06-24 10:43:47.964 1170 TRACE nova.api.openstack File "/usr/lib/
2015-06-24 10:43:47.964 1170 TRACE nova.api.openstack six.reraise(
2015-06-24 10:43:47.964 1170 TRACE nova.api.openstack File "/usr/lib/
2015-06-24 10:43:47.964 1170 TRACE nova.api.openstack volume = self.volume_
2015-06-24 10:43:47.964 1170 TRACE nova.api.openstack File "/usr/lib/
2015-06-24 10:43:47.964 1170 TRACE nova.api.openstack res = method(self, ctx, volume_id, *args, **kwargs)
2015-06-24 10:43:47.964 1170 TRACE nova.api.openstack File "/usr/lib/
2015-06-24 10:43:47.964 1170 TRACE nova.api.openstack item = cinderclient(
2015-06-24 10:43:47.964 1170 TRACE nova.api.openstack File "/usr/lib/
2015-06-24 10:43:47.964 1170 TRACE nova.api.openstack version = get_cinder_
2015-06-24 10:43:47.964 1170 TRACE nova.api.openstack File "/usr/lib/
2015-06-24 10:43:47.964 1170 TRACE nova.api.openstack endpoint_
2015-06-24 10:43:47.964 1170 TRACE nova.api.openstack File "/usr/lib/
2015-06-24 10:43:47.964 1170 TRACE nova.api.openstack raise cinderclient.
2015-06-24 10:43:47.964 1170 TRACE nova.api.openstack AmbiguousEndpoints: AmbiguousEndpoints: [{u'adminURL': u'http://
u'http://
{u'adminURL': u'http://
: u'1e8916d776414
sis3', u'internalURL': u'http://
834b8716f3209c0
It's missing os_region_name = [Region] in nova.conf.
Setting os_region_name with config-flags is a workaround, but this should be part of the template. Note that region for nova-cloud- controller is set to [Region].