Volume Block Device Mapping cannot be found
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
OpenStack Compute (nova) |
Invalid
|
Medium
|
Unassigned | ||
tempest |
Fix Released
|
Undecided
|
Mitsuhiro Tanino |
Bug Description
In Short:
Block Device Mapping cannot be found for Tempest online snapshot test on devstack with remote file system driver.
More Detailed:
Testing Environment is plain kilo head devstack with the included Tempest testsuite and a new remotefs based cinder driver.
The test:
tempest.
produces an error in Nova, stacktrace:
2014-12-10 11:14:42.329 ^[[00;32mDEBUG nova.api.
2014-12-10 11:14:42.374 ^[[00;36mINFO nova.osapi_
2014-12-10 11:14:43.381 ^[[00;32mDEBUG nova.api.
2014-12-10 11:14:43.423 ^[[00;36mINFO nova.osapi_
2014-12-10 11:14:43.995 ^[[00;32mDEBUG nova.api.
2014-12-10 11:14:43.995 ^[[01;36mAUDIT nova.api.
2014-12-10 11:14:44.007 ^[[01;31mERROR nova.api.openstack [^[[01;
^[[01;31m2014-12-10 11:14:44.007 TRACE nova.api.openstack ^[[01;35m^
^[[01;31m2014-12-10 11:14:44.007 TRACE nova.api.openstack ^[[01;35m^[[00m File "/opt/stack/
^[[01;31m2014-12-10 11:14:44.007 TRACE nova.api.openstack ^[[01;35m^[[00m return req.get_
^[[01;31m2014-12-10 11:14:44.007 TRACE nova.api.openstack ^[[01;35m^[[00m File "/usr/lib/
^[[01;31m2014-12-10 11:14:44.007 TRACE nova.api.openstack ^[[01;35m^[[00m application, catch_exc_
^[[01;31m2014-12-10 11:14:44.007 TRACE nova.api.openstack ^[[01;35m^[[00m File "/usr/lib/
^[[01;31m2014-12-10 11:14:44.007 TRACE nova.api.openstack ^[[01;35m^[[00m app_iter = application(
^[[01;31m2014-12-10 11:14:44.007 TRACE nova.api.openstack ^[[01;35m^[[00m File "/usr/lib/
^[[01;31m2014-12-10 11:14:44.007 TRACE nova.api.openstack ^[[01;35m^[[00m return resp(environ, start_response)^M
^[[01;31m2014-12-10 11:14:44.007 TRACE nova.api.openstack ^[[01;35m^[[00m File "/usr/local/
^[[01;31m2014-12-10 11:14:44.007 TRACE nova.api.openstack ^[[01;35m^[[00m return self._call_app(env, start_response)^M
^[[01;31m2014-12-10 11:14:44.007 TRACE nova.api.openstack ^[[01;35m^[[00m File "/usr/local/
^[[01;31m2014-12-10 11:14:44.007 TRACE nova.api.openstack ^[[01;35m^[[00m return self._app(env, _fake_start_
^[[01;31m2014-12-10 11:14:44.007 TRACE nova.api.openstack ^[[01;35m^[[00m File "/usr/lib/
^[[01;31m2014-12-10 11:14:44.007 TRACE nova.api.openstack ^[[01;35m^[[00m return resp(environ, start_response)^M
^[[01;31m2014-12-10 11:14:44.007 TRACE nova.api.openstack ^[[01;35m^[[00m File "/usr/lib/
^[[01;31m2014-12-10 11:14:44.007 TRACE nova.api.openstack ^[[01;35m^[[00m return resp(environ, start_response)^M
^[[01;31m2014-12-10 11:14:44.007 TRACE nova.api.openstack ^[[01;35m^[[00m File "/usr/local/
^[[01;31m2014-12-10 11:14:44.007 TRACE nova.api.openstack ^[[01;35m^[[00m response = self.app(environ, start_response)^M
^[[01;31m2014-12-10 11:14:44.007 TRACE nova.api.openstack ^[[01;35m^[[00m File "/usr/lib/
^[[01;31m2014-12-10 11:14:44.007 TRACE nova.api.openstack ^[[01;35m^[[00m return resp(environ, start_response)^M
^[[01;31m2014-12-10 11:14:44.007 TRACE nova.api.openstack ^[[01;35m^[[00m File "/usr/lib/
^[[01;31m2014-12-10 11:14:44.007 TRACE nova.api.openstack ^[[01;35m^[[00m resp = self.call_func(req, *args, **self.kwargs)^M
^[[01;31m2014-12-10 11:14:44.007 TRACE nova.api.openstack ^[[01;35m^[[00m File "/usr/lib/
^[[01;31m2014-12-10 11:14:44.007 TRACE nova.api.openstack ^[[01;35m^[[00m return self.func(req, *args, **kwargs)^M
^[[01;31m2014-12-10 11:14:44.007 TRACE nova.api.openstack ^[[01;35m^[[00m File "/opt/stack/
^[[01;31m2014-12-10 11:14:44.007 TRACE nova.api.openstack ^[[01;35m^[[00m content_type, body, accept)^M
^[[01;31m2014-12-10 11:14:44.007 TRACE nova.api.openstack ^[[01;35m^[[00m File "/opt/stack/
^[[01;31m2014-12-10 11:14:44.007 TRACE nova.api.openstack ^[[01;35m^[[00m action_result = self.dispatch(meth, request, action_args)^M
^[[01;31m2014-12-10 11:14:44.007 TRACE nova.api.openstack ^[[01;35m^[[00m File "/opt/stack/
^[[01;31m2014-12-10 11:14:44.007 TRACE nova.api.openstack ^[[01;35m^[[00m return method(req=request, **action_args)^M
^[[01;31m2014-12-10 11:14:44.007 TRACE nova.api.openstack ^[[01;35m^[[00m File "/opt/stack/
^[[01;31m2014-12-10 11:14:44.007 TRACE nova.api.openstack ^[[01;35m^[[00m create_info)^M
^[[01;31m2014-12-10 11:14:44.007 TRACE nova.api.openstack ^[[01;35m^[[00m File "/opt/stack/
^[[01;31m2014-12-10 11:14:44.007 TRACE nova.api.openstack ^[[01;35m^[[00m return func(self, context, target, *args, **kwargs)^M
^[[01;31m2014-12-10 11:14:44.007 TRACE nova.api.openstack ^[[01;35m^[[00m File "/opt/stack/
^[[01;31m2014-12-10 11:14:44.007 TRACE nova.api.openstack ^[[01;35m^[[00m context, volume_id, expected_
^[[01;31m2014-12-10 11:14:44.007 TRACE nova.api.openstack ^[[01;35m^[[00m File "/opt/stack/
^[[01;31m2014-12-10 11:14:44.007 TRACE nova.api.openstack ^[[01;35m^[[00m result = fn(cls, context, *args, **kwargs)^M
^[[01;31m2014-12-10 11:14:44.007 TRACE nova.api.openstack ^[[01;35m^[[00m File "/opt/stack/
^[[01;31m2014-12-10 11:14:44.007 TRACE nova.api.openstack ^[[01;35m^[[00m raise exception.
^[[01;31m2014-12-10 11:14:44.007 TRACE nova.api.openstack ^[[01;35m^
^[[01;31m2014-12-10 11:14:44.007 TRACE nova.api.openstack ^[[01;35m^[[00m^M
Testing the tests individual steps via manual cli commands (create instance, attach volume, create online snapshot) works without errors in any of the involved components.
The error occurs with our Quobyte Driver (in development, see https:/
Changed in nova: | |
status: | New → Confirmed |
importance: | Undecided → Medium |
Changed in tempest: | |
assignee: | nobody → Mitsuhiro Tanino (mitsuhiro-tanino) |
I just talked to mtanino about this, I think we have a basic understanding of why this happens.
It looks like the test calls os_attach to tell Cinder the volume is attached, but it doesn't actually attach it. (Need to tell Nova to attach the volume, not just send attach info to Cinder.) Then it calls create_snapshot which will try to perform an assisted snapshot for GlusterFS, Quobyte, etc.
This assisted snapshot fails in Nova because, since the volume wasn't _actually_ attached, Nova can't find it. The test needs to actually attach the volume for this to work as intended.