From 6965a73ab255b407f8002177fefaeb0c90fc16c0 Mon Sep 17 00:00:00 2001 From: "yanjun.fu" Date: Fri, 23 Dec 2016 10:23:15 +0800 Subject: [PATCH] Allow share status reset to migration status Fix the status of the share instances cannot be reset to "migrating" and "migrating_to" in server APIImpact Add two status "migrating" and "migrating_to" in share status. Change-Id: Ia23c13f62997d99495d9ecca066475565d9bfc87 Closes-Bug: #1650774 --- manila/api/openstack/wsgi.py | 2 ++ manila/tests/api/fakes.py | 18 ++++++++++++++++++ manila/tests/api/v2/test_share_instances.py | 14 ++++++++++++++ 3 files changed, 34 insertions(+) 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'),