diff --git a/manilaclient/api_versions.py b/manilaclient/api_versions.py index 2af5be0d1..dec554e2f 100644 --- a/manilaclient/api_versions.py +++ b/manilaclient/api_versions.py @@ -353,7 +353,8 @@ def experimental_api(f): @functools.wraps(f) def _wrapper(*args, **kwargs): client = args[0] - if isinstance(client, manilaclient.v2.client.Client): + if (isinstance(client, manilaclient.v2.client.Client) or + hasattr(client, 'client')): dh = client.client.default_headers dh[constants.EXPERIMENTAL_HTTP_HEADER] = 'true' return f(*args, **kwargs) diff --git a/manilaclient/base.py b/manilaclient/base.py index 484d76f74..d2961ac9e 100644 --- a/manilaclient/base.py +++ b/manilaclient/base.py @@ -46,6 +46,7 @@ class Manager(utils.HookableMixin): def __init__(self, api): self.api = api + self.client = api.client @property def api_version(self): diff --git a/manilaclient/tests/unit/v2/fakes.py b/manilaclient/tests/unit/v2/fakes.py index 35ca4046f..8bb282220 100644 --- a/manilaclient/tests/unit/v2/fakes.py +++ b/manilaclient/tests/unit/v2/fakes.py @@ -23,13 +23,18 @@ from manilaclient.v2 import client class FakeClient(fakes.FakeClient): def __init__(self, *args, **kwargs): - client.Client.__init__(self, manilaclient.API_MAX_VERSION, - 'username', 'password', - 'project_id', 'auth_url', - input_auth_token='token', - extensions=kwargs.get('extensions'), - service_catalog_url='http://localhost:8786', - api_version=manilaclient.API_MAX_VERSION) + client.Client.__init__( + self, + manilaclient.API_MAX_VERSION, + 'username', + 'password', + 'project_id', + 'auth_url', + input_auth_token='token', + extensions=kwargs.get('extensions'), + service_catalog_url='http://localhost:8786', + api_version=kwargs.get("api_version", manilaclient.API_MAX_VERSION) + ) self.client = FakeHTTPClient(**kwargs) fake_share_instance = { @@ -73,7 +78,8 @@ class FakeHTTPClient(fakes.FakeHTTPClient): } ], "min_version": "2.0", - "version": "2.8", + "version": self.default_headers[ + "X-Openstack-Manila-Api-Version"], "id": "v2.0", } ] diff --git a/manilaclient/tests/unit/v2/test_consistency_group_snapshots.py b/manilaclient/tests/unit/v2/test_consistency_group_snapshots.py index 19b8e81cf..0aca8712c 100644 --- a/manilaclient/tests/unit/v2/test_consistency_group_snapshots.py +++ b/manilaclient/tests/unit/v2/test_consistency_group_snapshots.py @@ -29,13 +29,10 @@ class ConsistencyGroupSnapshotsTest(utils.TestCase): class _FakeConsistencyGroupSnapshot(object): id = 'fake_cg_snapshot_id' - class _FakeClient(object): - api_version = manilaclient.API_MAX_VERSION - def setUp(self): super(ConsistencyGroupSnapshotsTest, self).setUp() self.manager = cg_snapshots.ConsistencyGroupSnapshotManager( - api=self._FakeClient()) + api=fakes.FakeClient()) self.values = { 'consistency_group_id': 'fake_cg_id', 'name': 'fake snapshot name', diff --git a/manilaclient/tests/unit/v2/test_consistency_groups.py b/manilaclient/tests/unit/v2/test_consistency_groups.py index 91a8e2a22..0cafeea22 100644 --- a/manilaclient/tests/unit/v2/test_consistency_groups.py +++ b/manilaclient/tests/unit/v2/test_consistency_groups.py @@ -28,13 +28,10 @@ class ConsistencyGroupsTest(utils.TestCase): class _FakeConsistencyGroupSnapshot(object): id = 'fake_cg_snapshot_id' - class _FakeClient(object): - api_version = manilaclient.API_MAX_VERSION - def setUp(self): super(ConsistencyGroupsTest, self).setUp() self.manager = consistency_groups.ConsistencyGroupManager( - api=self._FakeClient()) + api=fakes.FakeClient()) self.values = {'name': 'fake name', 'description': 'new cg'} def test_create(self): diff --git a/manilaclient/tests/unit/v2/test_scheduler_stats.py b/manilaclient/tests/unit/v2/test_scheduler_stats.py index 78571258d..37c9a6fce 100644 --- a/manilaclient/tests/unit/v2/test_scheduler_stats.py +++ b/manilaclient/tests/unit/v2/test_scheduler_stats.py @@ -15,6 +15,7 @@ import mock from manilaclient.tests.unit import utils +from manilaclient.tests.unit.v2 import fakes from manilaclient.v2 import scheduler_stats @@ -40,7 +41,7 @@ class PoolManagerTest(utils.TestCase): def setUp(self): super(PoolManagerTest, self).setUp() - self.manager = scheduler_stats.PoolManager(api=None) + self.manager = scheduler_stats.PoolManager(fakes.FakeClient()) @mock.patch.object(scheduler_stats.PoolManager, '_list', mock.Mock()) def test_list(self): diff --git a/manilaclient/tests/unit/v2/test_security_services.py b/manilaclient/tests/unit/v2/test_security_services.py index c19bb4acd..198ed54a7 100644 --- a/manilaclient/tests/unit/v2/test_security_services.py +++ b/manilaclient/tests/unit/v2/test_security_services.py @@ -27,7 +27,8 @@ class SecurityServiceTest(utils.TestCase): def setUp(self): super(SecurityServiceTest, self).setUp() - self.manager = security_services.SecurityServiceManager(api=None) + self.manager = security_services.SecurityServiceManager( + fakes.FakeClient()) def test_create_all_fields(self): values = { diff --git a/manilaclient/tests/unit/v2/test_share_networks.py b/manilaclient/tests/unit/v2/test_share_networks.py index becb5e2f9..0f9037924 100644 --- a/manilaclient/tests/unit/v2/test_share_networks.py +++ b/manilaclient/tests/unit/v2/test_share_networks.py @@ -30,7 +30,7 @@ class ShareNetworkTest(utils.TestCase): def setUp(self): super(ShareNetworkTest, self).setUp() - self.manager = share_networks.ShareNetworkManager(api=None) + self.manager = share_networks.ShareNetworkManager(fakes.FakeClient()) self.values = { 'nova_net_id': 'fake_nova_net_id', 'neutron_net_id': 'fake net id', diff --git a/manilaclient/tests/unit/v2/test_share_replicas.py b/manilaclient/tests/unit/v2/test_share_replicas.py index 91d2a083c..c67a5f51b 100644 --- a/manilaclient/tests/unit/v2/test_share_replicas.py +++ b/manilaclient/tests/unit/v2/test_share_replicas.py @@ -32,9 +32,8 @@ class ShareReplicasTest(utils.TestCase): def setUp(self): super(ShareReplicasTest, self).setUp() microversion = api_versions.APIVersion("2.11") - mock_microversion = mock.Mock(api_version=microversion) self.manager = share_replicas.ShareReplicaManager( - api=mock_microversion) + fakes.FakeClient(api_version=microversion)) def test_create(self): values = { diff --git a/manilaclient/tests/unit/v2/test_share_servers.py b/manilaclient/tests/unit/v2/test_share_servers.py index 64c02b744..b867be154 100644 --- a/manilaclient/tests/unit/v2/test_share_servers.py +++ b/manilaclient/tests/unit/v2/test_share_servers.py @@ -16,6 +16,7 @@ import mock from manilaclient.tests.unit import utils +from manilaclient.tests.unit.v2 import fakes from manilaclient.v2 import share_servers @@ -68,7 +69,7 @@ class ShareServerManagerTest(utils.TestCase): def setUp(self): super(ShareServerManagerTest, self).setUp() - self.manager = share_servers.ShareServerManager(api=None) + self.manager = share_servers.ShareServerManager(api=fakes.FakeClient()) def test_list(self): with mock.patch.object(self.manager, '_list', diff --git a/manilaclient/tests/unit/v2/test_shares.py b/manilaclient/tests/unit/v2/test_shares.py index 737a02185..0cadb87bb 100644 --- a/manilaclient/tests/unit/v2/test_shares.py +++ b/manilaclient/tests/unit/v2/test_shares.py @@ -533,8 +533,8 @@ class SharesTest(utils.TestCase): host = "fake_host" force_host_copy = "fake_force_host_copy" version = api_versions.APIVersion(microversion) - mock_microversion = mock.Mock(api_version=version) - manager = shares.ShareManager(api=mock_microversion) + manager = shares.ShareManager( + api=fakes.FakeClient(api_version=version)) with mock.patch.object(manager, "_action", mock.Mock(return_value="fake")): @@ -552,9 +552,7 @@ class SharesTest(utils.TestCase): def test_migration_complete(self): share = "fake_share" - version = api_versions.APIVersion("2.15") - mock_microversion = mock.Mock(api_version=version) - manager = shares.ShareManager(api=mock_microversion) + manager = shares.ShareManager(api=fakes.FakeClient()) with mock.patch.object(manager, "_action", mock.Mock(return_value="fake")): @@ -566,9 +564,7 @@ class SharesTest(utils.TestCase): def test_migration_get_progress(self): share = "fake_share" - version = api_versions.APIVersion("2.15") - mock_microversion = mock.Mock(api_version=version) - manager = shares.ShareManager(api=mock_microversion) + manager = shares.ShareManager(api=fakes.FakeClient()) with mock.patch.object(manager, "_action", mock.Mock(return_value="fake")): @@ -581,9 +577,7 @@ class SharesTest(utils.TestCase): def test_reset_task_state(self): share = "fake_share" state = "fake_state" - version = api_versions.APIVersion("2.15") - mock_microversion = mock.Mock(api_version=version) - manager = shares.ShareManager(api=mock_microversion) + manager = shares.ShareManager(api=fakes.FakeClient()) with mock.patch.object(manager, "_action", mock.Mock(return_value="fake")): @@ -595,9 +589,7 @@ class SharesTest(utils.TestCase): def test_migration_cancel(self): share = "fake_share" - version = api_versions.APIVersion("2.15") - mock_microversion = mock.Mock(api_version=version) - manager = shares.ShareManager(api=mock_microversion) + manager = shares.ShareManager(api=fakes.FakeClient()) with mock.patch.object(manager, "_action", mock.Mock(return_value="fake")): diff --git a/manilaclient/tests/unit/v2/test_shell.py b/manilaclient/tests/unit/v2/test_shell.py index 4586d03f2..14ed6a55e 100644 --- a/manilaclient/tests/unit/v2/test_shell.py +++ b/manilaclient/tests/unit/v2/test_shell.py @@ -40,7 +40,6 @@ class ShellTest(test_utils.TestCase): 'MANILA_USERNAME': 'username', 'MANILA_PASSWORD': 'password', 'MANILA_PROJECT_ID': 'project_id', - 'OS_SHARE_API_VERSION': '2.5', 'MANILA_URL': 'http://no.where', } diff --git a/manilaclient/v2/consistency_group_snapshots.py b/manilaclient/v2/consistency_group_snapshots.py index 08c6a179b..dfc5c4dda 100644 --- a/manilaclient/v2/consistency_group_snapshots.py +++ b/manilaclient/v2/consistency_group_snapshots.py @@ -51,6 +51,7 @@ class ConsistencyGroupSnapshotManager(base.ManagerWithFind): resource_class = ConsistencyGroupSnapshot @api_versions.wraps("2.4") + @api_versions.experimental_api def create(self, consistency_group_id, name=None, description=None): """Create a consistency group snapshot. @@ -68,6 +69,7 @@ class ConsistencyGroupSnapshotManager(base.ManagerWithFind): RESOURCE_NAME) @api_versions.wraps("2.4") + @api_versions.experimental_api def get(self, cg_snapshot): """Get a consistency group snapshot. @@ -80,6 +82,7 @@ class ConsistencyGroupSnapshotManager(base.ManagerWithFind): RESOURCE_NAME) @api_versions.wraps("2.4") + @api_versions.experimental_api def update(self, cg_snapshot, **kwargs): """Updates a consistency group snapshot. @@ -97,6 +100,7 @@ class ConsistencyGroupSnapshotManager(base.ManagerWithFind): RESOURCE_NAME) @api_versions.wraps("2.4") + @api_versions.experimental_api def list(self, detailed=True, search_opts=None): """Get a list of all consistency group snapshots. @@ -140,14 +144,17 @@ class ConsistencyGroupSnapshotManager(base.ManagerWithFind): self._delete(RESOURCE_PATH % cg_id) @api_versions.wraps("2.4", "2.6") + @api_versions.experimental_api def delete(self, cg_snapshot, force=False): return self._do_delete(cg_snapshot, force, 'os-force_delete') @api_versions.wraps("2.7") # noqa + @api_versions.experimental_api def delete(self, cg_snapshot, force=False): return self._do_delete(cg_snapshot, force, 'force_delete') @api_versions.wraps("2.4") + @api_versions.experimental_api def members(self, cg_snapshot, search_opts=None): """Get a list of consistency group snapshot members. @@ -176,10 +183,12 @@ class ConsistencyGroupSnapshotManager(base.ManagerWithFind): return self.api.client.post(url, body=body) @api_versions.wraps("2.4", "2.6") + @api_versions.experimental_api def reset_state(self, cg_snapshot, state): return self._do_reset_state(cg_snapshot, state, 'os-reset_status') @api_versions.wraps("2.7") # noqa + @api_versions.experimental_api def reset_state(self, cg_snapshot, state): return self._do_reset_state(cg_snapshot, state, 'reset_status') diff --git a/manilaclient/v2/consistency_groups.py b/manilaclient/v2/consistency_groups.py index 570105536..cbcb6fc8e 100644 --- a/manilaclient/v2/consistency_groups.py +++ b/manilaclient/v2/consistency_groups.py @@ -51,6 +51,7 @@ class ConsistencyGroupManager(base.ManagerWithFind): resource_class = ConsistencyGroup @api_versions.wraps("2.4") + @api_versions.experimental_api def create(self, share_network=None, name=None, description=None, source_cgsnapshot_id=None, share_types=None): """Create a Consistency Group. @@ -87,6 +88,7 @@ class ConsistencyGroupManager(base.ManagerWithFind): {RESOURCE_NAME: body}, RESOURCE_NAME) @api_versions.wraps("2.4") + @api_versions.experimental_api def get(self, consistency_group): """Get a consistency group. @@ -99,6 +101,7 @@ class ConsistencyGroupManager(base.ManagerWithFind): RESOURCE_NAME) @api_versions.wraps("2.4") + @api_versions.experimental_api def update(self, consistency_group, **kwargs): """Updates a consistency group. @@ -116,6 +119,7 @@ class ConsistencyGroupManager(base.ManagerWithFind): RESOURCE_NAME) @api_versions.wraps("2.4") + @api_versions.experimental_api def list(self, detailed=True, search_opts=None, sort_key=None, sort_dir=None): """Get a list of all shares. @@ -159,10 +163,12 @@ class ConsistencyGroupManager(base.ManagerWithFind): self._delete(url) @api_versions.wraps("2.4", "2.6") + @api_versions.experimental_api def delete(self, consistency_group, force=False): return self._do_delete(consistency_group, force, 'os-force_delete') @api_versions.wraps("2.7") # noqa + @api_versions.experimental_api def delete(self, consistency_group, force=False): return self._do_delete(consistency_group, force, 'force_delete') @@ -173,11 +179,13 @@ class ConsistencyGroupManager(base.ManagerWithFind): return self.api.client.post(url, body=body) @api_versions.wraps("2.4", "2.6") + @api_versions.experimental_api def reset_state(self, cg, state): return self._do_reset_state( consistency_group, state, 'os-reset_status') @api_versions.wraps("2.7") # noqa + @api_versions.experimental_api def reset_state(self, consistency_group, state): return self._do_reset_state(consistency_group, state, 'reset_status') diff --git a/manilaclient/v2/share_replicas.py b/manilaclient/v2/share_replicas.py index 6a6298926..08bad44d8 100644 --- a/manilaclient/v2/share_replicas.py +++ b/manilaclient/v2/share_replicas.py @@ -51,6 +51,7 @@ class ShareReplicaManager(base.ManagerWithFind): resource_class = ShareReplica @api_versions.wraps("2.11") + @api_versions.experimental_api def get(self, replica): """Get a share replica. @@ -61,6 +62,7 @@ class ShareReplicaManager(base.ManagerWithFind): return self._get(RESOURCE_PATH % replica_id, RESOURCE_NAME) @api_versions.wraps("2.11") + @api_versions.experimental_api def list(self, share=None): """List all share replicas or list replicas belonging to a share. @@ -76,6 +78,7 @@ class ShareReplicaManager(base.ManagerWithFind): return self._list(RESOURCES_PATH + '/detail', RESOURCES_NAME) @api_versions.wraps("2.11") + @api_versions.experimental_api def promote(self, replica): """Promote the provided replica. @@ -84,6 +87,7 @@ class ShareReplicaManager(base.ManagerWithFind): return self._action('promote', replica) @api_versions.wraps("2.11") + @api_versions.experimental_api def create(self, share, availability_zone=None, share_network=None): """Create a replica for a share. @@ -107,6 +111,7 @@ class ShareReplicaManager(base.ManagerWithFind): RESOURCE_NAME) @api_versions.wraps("2.11") + @api_versions.experimental_api def delete(self, replica, force=False): """Delete a replica. @@ -116,6 +121,7 @@ class ShareReplicaManager(base.ManagerWithFind): self._do_delete(replica, force=force) @api_versions.wraps("2.11") + @api_versions.experimental_api def reset_state(self, replica, state): """Reset the 'status' attr of the replica. @@ -125,6 +131,7 @@ class ShareReplicaManager(base.ManagerWithFind): return self._do_reset_state(replica, state, "reset_status") @api_versions.wraps("2.11") + @api_versions.experimental_api def reset_replica_state(self, replica, state): """Reset the 'replica_state' attr of the replica. @@ -134,6 +141,7 @@ class ShareReplicaManager(base.ManagerWithFind): return self._do_reset_state(replica, state, "reset_replica_state") @api_versions.wraps("2.11") + @api_versions.experimental_api def resync(self, replica): """Re-sync the provided replica. diff --git a/manilaclient/v2/shares.py b/manilaclient/v2/shares.py index 975d85054..86140a5a7 100644 --- a/manilaclient/v2/shares.py +++ b/manilaclient/v2/shares.py @@ -162,21 +162,25 @@ class ShareManager(base.ManagerWithFind): "notify": notify}) @api_versions.wraps("2.5", "2.6") + @api_versions.experimental_api def migration_start(self, share, host, force_host_copy): return self._do_migrate_start( share, host, force_host_copy, True, "os-migrate_share") @api_versions.wraps("2.7", "2.14") # noqa + @api_versions.experimental_api def migration_start(self, share, host, force_host_copy): return self._do_migrate_start( share, host, force_host_copy, True, "migrate_share") @api_versions.wraps("2.15") # noqa + @api_versions.experimental_api def migration_start(self, share, host, force_host_copy, notify): return self._do_migrate_start( share, host, force_host_copy, notify, "migration_start") @api_versions.wraps("2.15") + @api_versions.experimental_api def reset_task_state(self, share, task_state): """Update the provided share with the provided task state. @@ -187,6 +191,7 @@ class ShareManager(base.ManagerWithFind): {"task_state": task_state}) @api_versions.wraps("2.15") + @api_versions.experimental_api def migration_complete(self, share): """Completes migration for a given share. @@ -195,6 +200,7 @@ class ShareManager(base.ManagerWithFind): return self._action('migration_complete', share) @api_versions.wraps("2.15") + @api_versions.experimental_api def migration_cancel(self, share): """Attempts to cancel migration for a given share. @@ -203,6 +209,7 @@ class ShareManager(base.ManagerWithFind): return self._action('migration_cancel', share) @api_versions.wraps("2.15") + @api_versions.experimental_api def migration_get_progress(self, share): """Obtains progress of share migration for a given share. diff --git a/manilaclient/v2/shell.py b/manilaclient/v2/shell.py index d906b3cec..2163d6c4f 100644 --- a/manilaclient/v2/shell.py +++ b/manilaclient/v2/shell.py @@ -180,7 +180,6 @@ def _print_share_replica(cs, replica): cliutils.print_dict(info) -@api_versions.experimental_api @api_versions.wraps("2.4") def _find_consistency_group(cs, consistency_group): """Get a consistency group ID.""" @@ -634,7 +633,6 @@ def do_create(cs, args): help='Enables or disables generic host-based force-migration, which ' 'bypasses driver optimizations. Default=False.', default=False) -@api_versions.experimental_api @api_versions.wraps("2.5", "2.14") def do_migrate(cs, args): """(Deprecated) Migrates share to a new host (Admin only, Experimental).""" @@ -667,7 +665,6 @@ def do_migrate(cs, args): help='Enables or disables notification of data copying completed. ' 'Default=True.', default=True) -@api_versions.experimental_api @api_versions.wraps("2.15") def do_migration_start(cs, args): """Migrates share to a new host (Admin only, Experimental).""" @@ -679,7 +676,6 @@ def do_migration_start(cs, args): 'share', metavar='', help='Name or ID of share to complete migration.') -@api_versions.experimental_api @api_versions.wraps("2.15") def do_migration_complete(cs, args): """Completes migration for a given share (Admin only, Experimental).""" @@ -691,7 +687,6 @@ def do_migration_complete(cs, args): 'share', metavar='', help='Name or ID of share to cancel migration.') -@api_versions.experimental_api @api_versions.wraps("2.15") def do_migration_cancel(cs, args): """Cancels migration of a given share when copying @@ -721,7 +716,6 @@ def do_migration_cancel(cs, args): 'data_copying_completing, data_copying_completed, ' 'data_copying_cancelled, data_copying_error. If no value is ' 'provided, migration_error will be used.')) -@api_versions.experimental_api @api_versions.wraps("2.15") def do_reset_task_state(cs, args): """Explicitly update the task state of a share @@ -737,7 +731,6 @@ def do_reset_task_state(cs, args): metavar='', help='Name or ID of the share to get share migration progress ' 'information.') -@api_versions.experimental_api @api_versions.wraps("2.15") def do_migration_get_progress(cs, args): """Gets migration progress of a given share when copying @@ -2857,7 +2850,6 @@ def do_shrink(cs, args): help='Optional snapshot ID to create the share from. (Default=None)', default=None) @cliutils.service_type('sharev2') -@api_versions.experimental_api def do_cg_create(cs, args): """Creates a new consistency group (Experimental).""" @@ -2914,7 +2906,6 @@ def do_cg_create(cs, args): help='Comma separated list of columns to be displayed ' 'e.g. --columns "id,name"') @cliutils.service_type('sharev2') -@api_versions.experimental_api def do_cg_list(cs, args): """List consistency groups with filters (Experimental).""" list_of_keys = [ @@ -2942,7 +2933,6 @@ def do_cg_list(cs, args): metavar='', help='Name or ID of the consistency group.') @cliutils.service_type('sharev2') -@api_versions.experimental_api def do_cg_show(cs, args): """Show details about a consistency group (Experimental).""" consistency_group = _find_consistency_group(cs, args.consistency_group) @@ -2964,7 +2954,6 @@ def do_cg_show(cs, args): help='Optional consistency group description. (Default=None)', default=None) @cliutils.service_type('sharev2') -@api_versions.experimental_api def do_cg_update(cs, args): """Update a consistency group (Experimental).""" kwargs = {} @@ -2992,7 +2981,6 @@ def do_cg_update(cs, args): help='Attempt to force delete the consistency group (Default=False)' ' (Admin only).') @cliutils.service_type('sharev2') -@api_versions.experimental_api def do_cg_delete(cs, args): """Remove one or more consistency groups (Experimental).""" failure_count = 0 @@ -3028,7 +3016,6 @@ def do_cg_delete(cs, args): 'error_deleting. If no state is provided, ' 'available will be used.')) @cliutils.service_type('sharev2') -@api_versions.experimental_api def do_cg_reset_state(cs, args): """Explicitly update the state of a consistency group @@ -3053,7 +3040,6 @@ def do_cg_reset_state(cs, args): help='Optional consistency group snapshot description. (Default=None)', default=None) @cliutils.service_type('sharev2') -@api_versions.experimental_api def do_cg_snapshot_create(cs, args): """Creates a new consistency group snapshot (Experimental).""" @@ -3109,7 +3095,6 @@ def _split_columns(columns, title=True): help='Comma separated list of columns to be displayed ' 'e.g. --columns "id,name"') @cliutils.service_type('sharev2') -@api_versions.experimental_api def do_cg_snapshot_list(cs, args): """List consistency group snapshots with filters (Experimental).""" list_of_keys = [ @@ -3136,7 +3121,6 @@ def do_cg_snapshot_list(cs, args): metavar='', help='Name or ID of the consistency group snapshot.') @cliutils.service_type('sharev2') -@api_versions.experimental_api def do_cg_snapshot_show(cs, args): """Show details about a consistency group snapshot (Experimental).""" cg_snapshot = _find_cg_snapshot(cs, args.cg_snapshot) @@ -3156,7 +3140,6 @@ def do_cg_snapshot_show(cs, args): metavar='', help='Name or ID of the consistency group snapshot.') @cliutils.service_type('sharev2') -@api_versions.experimental_api def do_cg_snapshot_reset_state(cs, args): """Explicitly update the state of a consistency group @@ -3182,7 +3165,6 @@ def do_cg_snapshot_reset_state(cs, args): metavar='', help='Name or ID of the consistency group snapshot.') @cliutils.service_type('sharev2') -@api_versions.experimental_api def do_cg_snapshot_members(cs, args): """Get member details for a consistency group snapshot (Experimental).""" cg_snapshot = _find_cg_snapshot(cs, args.cg_snapshot) @@ -3224,7 +3206,6 @@ def do_cg_snapshot_members(cs, args): help='Optional cg snapshot description. (Default=None)', default=None) @cliutils.service_type('sharev2') -@api_versions.experimental_api def do_cg_snapshot_update(cs, args): """Update a consistency group snapshot (Experimental).""" kwargs = {} @@ -3252,7 +3233,6 @@ def do_cg_snapshot_update(cs, args): help='Attempt to force delete the cg snapshot(s) (Default=False)' ' (Admin only).') @cliutils.service_type('sharev2') -@api_versions.experimental_api def do_cg_snapshot_delete(cs, args): """Remove one or more consistency group snapshots (Experimental).""" failure_count = 0 @@ -3285,7 +3265,6 @@ def do_cg_snapshot_delete(cs, args): action='single_alias', help='List replicas belonging to share.') @api_versions.wraps("2.11") -@api_versions.experimental_api def do_share_replica_list(cs, args): """List share replicas (Experimental).""" share = _find_share(cs, args.share_id) if args.share_id else None @@ -3327,7 +3306,6 @@ def do_share_replica_list(cs, args): action='single_alias', help='Optional network info ID or name.') @api_versions.wraps("2.11") -@api_versions.experimental_api def do_share_replica_create(cs, args): """Create a share replica (Experimental).""" share = _find_share(cs, args.share) @@ -3347,7 +3325,6 @@ def do_share_replica_create(cs, args): metavar='', help='ID of the share replica.') @api_versions.wraps("2.11") -@api_versions.experimental_api def do_share_replica_show(cs, args): """Show details about a replica (Experimental).""" @@ -3368,7 +3345,6 @@ def do_share_replica_show(cs, args): 'this option will purge the replica from Manila even if it ' 'is not cleaned up on the backend. Defaults to False.') @api_versions.wraps("2.11") -@api_versions.experimental_api def do_share_replica_delete(cs, args): """Remove one or more share replicas (Experimental).""" failure_count = 0 @@ -3396,7 +3372,6 @@ def do_share_replica_delete(cs, args): metavar='', help='ID of the share replica.') @api_versions.wraps("2.11") -@api_versions.experimental_api def do_share_replica_promote(cs, args): """Promote specified replica to 'active' replica_state (Experimental).""" replica = _find_share_replica(cs, args.replica) @@ -3415,7 +3390,6 @@ def do_share_replica_promote(cs, args): 'available, error, creating, deleting, error_deleting. If no ' 'state is provided, available will be used.')) @api_versions.wraps("2.11") -@api_versions.experimental_api def do_share_replica_reset_state(cs, args): """Explicitly update the 'status' of a share replica (Experimental).""" replica = _find_share_replica(cs, args.replica) @@ -3437,7 +3411,6 @@ def do_share_replica_reset_state(cs, args): 'include in_sync, out_of_sync, active, error. If no ' 'state is provided, out_of_sync will be used.')) @api_versions.wraps("2.11") -@api_versions.experimental_api def do_share_replica_reset_replica_state(cs, args): """Explicitly update the 'replica_state' of a share replica @@ -3452,7 +3425,6 @@ def do_share_replica_reset_replica_state(cs, args): metavar='', help='ID of the share replica to resync.') @api_versions.wraps("2.11") -@api_versions.experimental_api def do_share_replica_resync(cs, args): """Attempt to update the share replica with its 'active' mirror