diff --git a/manila/api/openstack/wsgi.py b/manila/api/openstack/wsgi.py index 34614a23a9..4a4ce005bc 100644 --- a/manila/api/openstack/wsgi.py +++ b/manila/api/openstack/wsgi.py @@ -1185,6 +1185,8 @@ class AdminActionsMixin(object): constants.STATUS_DELETING, constants.STATUS_ERROR, constants.STATUS_ERROR_DELETING, + constants.STATUS_MIGRATING, + constants.STATUS_MIGRATING_TO, ]), 'replica_state': set([ constants.REPLICA_STATE_ACTIVE, diff --git a/manila/tests/api/fakes.py b/manila/tests/api/fakes.py index da09ac6bd0..c104b8835b 100644 --- a/manila/tests/api/fakes.py +++ b/manila/tests/api/fakes.py @@ -277,6 +277,24 @@ fixture_invalid_reset_status_body = ( ) +fixture_valid_reset_status_body = ( + ({'os-reset_status': {'status': 'creating'}}, '2.6'), + ({'os-reset_status': {'status': 'available'}}, '2.6'), + ({'os-reset_status': {'status': 'deleting'}}, '2.6'), + ({'os-reset_status': {'status': 'error_deleting'}}, '2.6'), + ({'os-reset_status': {'status': 'error'}}, '2.6'), + ({'os-reset_status': {'status': 'migrating'}}, '2.6'), + ({'os-reset_status': {'status': 'migrating_to'}}, '2.6'), + ({'reset_status': {'status': 'creating'}}, '2.7'), + ({'reset_status': {'status': 'available'}}, '2.7'), + ({'reset_status': {'status': 'deleting'}}, '2.7'), + ({'reset_status': {'status': 'error_deleting'}}, '2.7'), + ({'reset_status': {'status': 'error'}}, '2.7'), + ({'reset_status': {'status': 'migrating'}}, '2.7'), + ({'reset_status': {'status': 'migrating_to'}}, '2.7'), +) + + def mock_fake_admin_check(context, resource_name, action, *args, **kwargs): if context.is_admin: return diff --git a/manila/tests/api/v2/test_share_instances.py b/manila/tests/api/v2/test_share_instances.py index 1fe3d2fab3..3d6a15e008 100644 --- a/manila/tests/api/v2/test_share_instances.py +++ b/manila/tests/api/v2/test_share_instances.py @@ -232,6 +232,20 @@ class ShareInstancesAPITest(test.TestCase): self._reset_status(ctxt, instance, req, db.share_instance_get, valid_code, valid_status, version=version) + @ddt.data(*fakes.fixture_valid_reset_status_body) + @ddt.unpack + def test_share_instance_reset_status(self, body, version): + instance, req = self._setup_share_instance_data() + req.headers['X-Openstack-Manila-Api-Version'] = version + + if float(version) > 2.6: + state = body['reset_status']['status'] + else: + state = body['os-reset_status']['status'] + self._reset_status(self.admin_context, instance, req, + db.share_instance_get, 202, + state, body, version=version) + @ddt.data( ({'os-reset_status': {'x-status': 'bad'}}, '2.6'), ({'os-reset_status': {'status': 'invalid'}}, '2.6'),