From 204b15ab13004e3d5ac1ec4d0dbd3fe94bb2a8fd Mon Sep 17 00:00:00 2001 From: Ivan Kolodyazhny Date: Fri, 23 Dec 2016 16:36:19 +0200 Subject: [PATCH] Removed unnecessary 'service_type' decorator @utils.service_type was introduced with 'Initial split from python-novaclient' commit and used for CLI. Now both Python and Command-line APIs for each version work well without this decorator. Unused 'get_service_type' function is removed too. 'utils.retype_method' removed as well because everything works well without it. Change-Id: Ic2470d8ca9d581b7c47da8d7e6a414c3c78ad27a Partial-Bug: #1643584 Related-Bug: #1621126 --- cinderclient/utils.py | 29 ------ cinderclient/v1/contrib/list_extensions.py | 1 - cinderclient/v1/shell.py | 64 ------------- cinderclient/v2/contrib/list_extensions.py | 1 - cinderclient/v2/shell.py | 106 --------------------- cinderclient/v3/contrib/list_extensions.py | 9 -- cinderclient/v3/shell.py | 37 ------- 7 files changed, 247 deletions(-) diff --git a/cinderclient/utils.py b/cinderclient/utils.py index c5341c03c..a93bf4a02 100644 --- a/cinderclient/utils.py +++ b/cinderclient/utils.py @@ -18,7 +18,6 @@ from __future__ import print_function import os import pkg_resources import sys -import types import uuid import six @@ -84,27 +83,6 @@ def isunauthenticated(f): return getattr(f, 'unauthenticated', False) -def service_type(stype): - """ - Adds 'service_type' attribute to decorated function. - Usage: - @service_type('volume') - def mymethod(f): - ... - """ - def inner(f): - f.service_type = stype - return f - return inner - - -def get_service_type(f): - """ - Retrieves service type from function - """ - return getattr(f, 'service_type', None) - - def _print(pt, order): if sys.version_info >= (3, 0): print(pt.get_string(sortby=order)) @@ -300,13 +278,6 @@ def _load_entry_point(ep_name, name=None): continue -def retype_method(old_type, new_type, namespace): - for attr in namespace.values(): - if (isinstance(attr, types.FunctionType) and - getattr(attr, 'service_type', None) == old_type): - setattr(attr, 'service_type', new_type) - - def get_function_name(func): if six.PY2: if hasattr(func, "im_class"): diff --git a/cinderclient/v1/contrib/list_extensions.py b/cinderclient/v1/contrib/list_extensions.py index 308d39683..f63ba5f22 100644 --- a/cinderclient/v1/contrib/list_extensions.py +++ b/cinderclient/v1/contrib/list_extensions.py @@ -37,7 +37,6 @@ class ListExtManager(base.Manager): return self._list("/extensions", 'extensions') -@utils.service_type('volume') def do_list_extensions(client, _args): """ Lists all available os-api extensions. diff --git a/cinderclient/v1/shell.py b/cinderclient/v1/shell.py index 993918743..59535ab97 100644 --- a/cinderclient/v1/shell.py +++ b/cinderclient/v1/shell.py @@ -176,7 +176,6 @@ def _extract_metadata(args): metavar='', default=None, help='Maximum number of volumes to return. OPTIONAL: Default=None.') -@utils.service_type('volume') def do_list(cs, args): """Lists all volumes.""" all_tenants = 1 if args.tenant else \ @@ -205,7 +204,6 @@ def do_list(cs, args): @utils.arg('volume', metavar='', help='Volume name or ID.') -@utils.service_type('volume') def do_show(cs, args): """Shows volume details.""" volume = utils.find_volume(cs, args.volume) @@ -286,7 +284,6 @@ def do_show(cs, args): default=None, help='Metadata key and value pairs. ' 'Default=None.') -@utils.service_type('volume') def do_create(cs, args): """Creates a volume.""" @@ -309,7 +306,6 @@ def do_create(cs, args): @utils.arg('volume', metavar='', nargs='+', help='Name or ID of volume to delete. ' 'Separate multiple volumes with a space.') -@utils.service_type('volume') def do_delete(cs, args): """Removes one or more volumes.""" failure_count = 0 @@ -328,7 +324,6 @@ def do_delete(cs, args): @utils.arg('volume', metavar='', nargs='+', help='Name or ID of volume to delete. ' 'Separate multiple volumes with a space.') -@utils.service_type('volume') def do_force_delete(cs, args): """Attempts force-delete of volume, regardless of state.""" failure_count = 0 @@ -353,7 +348,6 @@ def do_force_delete(cs, args): 'NOTE: This command simply changes the state of the ' 'Volume in the DataBase with no regard to actual status, ' 'exercise caution when using. Default=available.')) -@utils.service_type('volume') def do_reset_state(cs, args): """Explicitly updates the volume state.""" failure_flag = False @@ -377,7 +371,6 @@ def do_reset_state(cs, args): help='New display name for volume.') @utils.arg('--display-description', metavar='', default=None, help='Volume description. Default=None.') -@utils.service_type('volume') def do_rename(cs, args): """Renames a volume.""" kwargs = {} @@ -407,7 +400,6 @@ def do_rename(cs, args): help='The metadata key and pair to set or unset. ' 'For unset, specify only the key. ' 'Default=[].') -@utils.service_type('volume') def do_metadata(cs, args): """Sets or deletes volume metadata.""" volume = utils.find_volume(cs, args.volume) @@ -451,7 +443,6 @@ def do_metadata(cs, args): metavar='', default=None, help='Filters list by a volume ID. Default=None.') -@utils.service_type('volume') def do_snapshot_list(cs, args): """Lists all snapshots.""" all_tenants = int(os.environ.get("ALL_TENANTS", args.all_tenants)) @@ -470,7 +461,6 @@ def do_snapshot_list(cs, args): @utils.arg('snapshot', metavar='', help='Name or ID of snapshot.') -@utils.service_type('volume') def do_snapshot_show(cs, args): """Shows snapshot details.""" snapshot = _find_volume_snapshot(cs, args.snapshot) @@ -505,7 +495,6 @@ def do_snapshot_show(cs, args): @utils.arg( '--display_description', help=argparse.SUPPRESS) -@utils.service_type('volume') def do_snapshot_create(cs, args): """Creates a snapshot.""" volume = utils.find_volume(cs, args.volume) @@ -519,7 +508,6 @@ def do_snapshot_create(cs, args): @utils.arg('snapshot', metavar='', nargs='+', help='Name or ID of the snapshot(s) to delete.') -@utils.service_type('volume') def do_snapshot_delete(cs, args): """Remove one or more snapshots.""" failure_count = 0 @@ -540,7 +528,6 @@ def do_snapshot_delete(cs, args): help='New display name for snapshot.') @utils.arg('--display-description', metavar='', default=None, help='Snapshot description. Default=None.') -@utils.service_type('volume') def do_snapshot_rename(cs, args): """Renames a snapshot.""" kwargs = {} @@ -565,7 +552,6 @@ def do_snapshot_rename(cs, args): 'the state of the Snapshot in the DataBase with no regard ' 'to actual status, exercise caution when using. ' 'Default=available.')) -@utils.service_type('volume') def do_snapshot_reset_state(cs, args): """Explicitly updates the snapshot state.""" failure_count = 0 @@ -592,14 +578,12 @@ def _print_volume_type_list(vtypes): utils.print_list(vtypes, ['ID', 'Name']) -@utils.service_type('volume') def do_type_list(cs, args): """Lists available 'volume types'.""" vtypes = cs.volume_types.list() _print_volume_type_list(vtypes) -@utils.service_type('volume') def do_extra_specs_list(cs, args): """Lists current volume types and extra specs.""" vtypes = cs.volume_types.list() @@ -609,7 +593,6 @@ def do_extra_specs_list(cs, args): @utils.arg('name', metavar='', help='Name for the volume type.') -@utils.service_type('volume') def do_type_create(cs, args): """Creates a volume type.""" vtype = cs.volume_types.create(args.name) @@ -619,7 +602,6 @@ def do_type_create(cs, args): @utils.arg('id', metavar='', help='ID of volume type to delete.') -@utils.service_type('volume') def do_type_delete(cs, args): """Deletes a specified volume type.""" volume_type = _find_volume_type(cs, args.id) @@ -639,7 +621,6 @@ def do_type_delete(cs, args): default=None, help='The extra specs key and value pair to set or unset. ' 'For unset, specify only the key. Default=None.') -@utils.service_type('volume') def do_type_key(cs, args): """Sets or unsets extra_spec for a volume type.""" vtype = _find_volume_type(cs, args.vtype) @@ -720,7 +701,6 @@ def _quota_update(manager, identifier, args): @utils.arg('tenant', metavar='', help='ID of the tenant for which to list quotas.') -@utils.service_type('volume') def do_quota_show(cs, args): """Lists quotas for a tenant.""" @@ -729,7 +709,6 @@ def do_quota_show(cs, args): @utils.arg('tenant', metavar='', help='ID of the tenant for which to list quota usage.') -@utils.service_type('volume') def do_quota_usage(cs, args): """Lists quota usage for a tenant.""" @@ -738,7 +717,6 @@ def do_quota_usage(cs, args): @utils.arg('tenant', metavar='', help='ID of the tenant for which to list default quotas.') -@utils.service_type('volume') def do_quota_defaults(cs, args): """Lists default quotas for a tenant.""" @@ -771,7 +749,6 @@ def do_quota_defaults(cs, args): metavar='', default=None, help='Volume type. Default=None.') -@utils.service_type('volume') def do_quota_update(cs, args): """Updates quotas for a tenant.""" @@ -780,7 +757,6 @@ def do_quota_update(cs, args): @utils.arg('tenant', metavar='', help='UUID of tenant to delete the quotas for.') -@utils.service_type('volume') def do_quota_delete(cs, args): """Delete the quotas for a tenant.""" @@ -789,7 +765,6 @@ def do_quota_delete(cs, args): @utils.arg('class_name', metavar='', help='Name of quota class for which to list quotas.') -@utils.service_type('volume') def do_quota_class_show(cs, args): """Lists quotas for a quota class.""" @@ -814,14 +789,12 @@ def do_quota_class_show(cs, args): metavar='', default=None, help='Volume type. Default=None.') -@utils.service_type('volume') def do_quota_class_update(cs, args): """Updates quotas for a quota class.""" _quota_update(cs.quota_classes, args.class_name, args) -@utils.service_type('volume') def do_absolute_limits(cs, args): """Lists absolute limits for a user.""" limits = cs.limits.get().absolute @@ -829,7 +802,6 @@ def do_absolute_limits(cs, args): utils.print_list(limits, columns) -@utils.service_type('volume') def do_rate_limits(cs, args): """Lists rate limits for a user.""" limits = cs.limits.get().rate @@ -864,7 +836,6 @@ def _find_volume_type(cs, vtype): @utils.arg('image_name', metavar='', help='The new image name.') -@utils.service_type('volume') def do_upload_to_image(cs, args): """Uploads volume to Image Service as an image.""" volume = utils.find_volume(cs, args.volume) @@ -885,7 +856,6 @@ def do_upload_to_image(cs, args): @utils.arg('--display-description', metavar='', default=None, help='Backup description. Default=None.') -@utils.service_type('volume') def do_backup_create(cs, args): """Creates a volume backup.""" volume = utils.find_volume(cs, args.volume) @@ -904,7 +874,6 @@ def do_backup_create(cs, args): @utils.arg('backup', metavar='', help='Name or ID of backup.') -@utils.service_type('volume') def do_backup_show(cs, args): """Show backup details.""" backup = _find_backup(cs, args.backup) @@ -917,7 +886,6 @@ def do_backup_show(cs, args): utils.print_dict(info) -@utils.service_type('volume') def do_backup_list(cs, args): """Lists all backups.""" backups = cs.backups.list() @@ -928,7 +896,6 @@ def do_backup_list(cs, args): @utils.arg('backup', metavar='', help='Name or ID of backup to delete.') -@utils.service_type('volume') def do_backup_delete(cs, args): """Removes a backup.""" backup = _find_backup(cs, args.backup) @@ -941,7 +908,6 @@ def do_backup_delete(cs, args): default=None, help='ID or name of backup volume to ' 'which to restore. Default=None.') -@utils.service_type('volume') def do_backup_restore(cs, args): """Restores a backup.""" if args.volume_id: @@ -956,7 +922,6 @@ def do_backup_restore(cs, args): @utils.arg('--display-name', metavar='', default=None, help='Transfer name. Default=None.') -@utils.service_type('volume') def do_transfer_create(cs, args): """Creates a volume transfer.""" volume = utils.find_volume(cs, args.volume) @@ -973,7 +938,6 @@ def do_transfer_create(cs, args): @utils.arg('transfer', metavar='', help='Name or ID of transfer to delete.') -@utils.service_type('volume') def do_transfer_delete(cs, args): """Undoes a transfer.""" transfer = _find_transfer(cs, args.transfer) @@ -984,7 +948,6 @@ def do_transfer_delete(cs, args): help='ID of transfer to accept.') @utils.arg('auth_key', metavar='', help='Authentication key of transfer to accept.') -@utils.service_type('volume') def do_transfer_accept(cs, args): """Accepts a volume transfer.""" transfer = cs.transfers.accept(args.transfer, args.auth_key) @@ -1012,7 +975,6 @@ def do_transfer_accept(cs, args): type=int, const=1, help=argparse.SUPPRESS) -@utils.service_type('volume') def do_transfer_list(cs, args): """Lists all transfers.""" all_tenants = int(os.environ.get("ALL_TENANTS", args.all_tenants)) @@ -1026,7 +988,6 @@ def do_transfer_list(cs, args): @utils.arg('transfer', metavar='', help='Name or ID of transfer to accept.') -@utils.service_type('volume') def do_transfer_show(cs, args): """Show transfer details.""" transfer = _find_transfer(cs, args.transfer) @@ -1045,7 +1006,6 @@ def do_transfer_show(cs, args): metavar='', type=int, help='Size of volume, in GiBs.') -@utils.service_type('volume') def do_extend(cs, args): """Attempts to extend size of an existing volume.""" volume = utils.find_volume(cs, args.volume) @@ -1056,7 +1016,6 @@ def do_extend(cs, args): help='Host name. Default=None.') @utils.arg('--binary', metavar='', default=None, help='Service binary. Default=None.') -@utils.service_type('volume') def do_service_list(cs, args): """Lists all services. Filter by host and service binary.""" result = cs.services.list(host=args.host, binary=args.binary) @@ -1070,7 +1029,6 @@ def do_service_list(cs, args): @utils.arg('host', metavar='', help='Host name.') @utils.arg('binary', metavar='', help='Service binary.') -@utils.service_type('volume') def do_service_enable(cs, args): """Enables the service.""" result = cs.services.enable(args.host, args.binary) @@ -1082,7 +1040,6 @@ def do_service_enable(cs, args): @utils.arg('binary', metavar='', help='Service binary.') @utils.arg('--reason', metavar='', help='Reason for disabling service.') -@utils.service_type('volume') def do_service_disable(cs, args): """Disables the service.""" columns = ["Host", "Binary", "Status"] @@ -1137,7 +1094,6 @@ def _treeizeAvailabilityZone(zone): return result -@utils.service_type('volume') def do_availability_zone_list(cs, _args): """Lists all availability zones.""" try: @@ -1166,7 +1122,6 @@ def _print_volume_encryption_type_list(encryption_types): 'Control Location']) -@utils.service_type('volume') def do_encryption_type_list(cs, args): """Shows encryption type details for volume types. Admin only.""" result = cs.volume_encryption_types.list() @@ -1178,7 +1133,6 @@ def do_encryption_type_list(cs, args): metavar='', type=str, help='Name or ID of volume type.') -@utils.service_type('volume') def do_encryption_type_show(cs, args): """Shows encryption type details for volume type. Admin only.""" volume_type = _find_volume_type(cs, args.volume_type) @@ -1225,7 +1179,6 @@ def do_encryption_type_show(cs, args): 'Valid values are "front-end" or "back-end." ' 'For example, front-end=Nova. ' 'Default is "front-end."') -@utils.service_type('volume') def do_encryption_type_create(cs, args): """Creates encryption type for a volume type. Admin only.""" volume_type = _find_volume_type(cs, args.volume_type) @@ -1245,7 +1198,6 @@ def do_encryption_type_create(cs, args): metavar='', type=str, help='Name or ID of volume type.') -@utils.service_type('volume') def do_encryption_type_delete(cs, args): """Deletes encryption type for a volume type. Admin only.""" volume_type = _find_volume_type(cs, args.volume_type) @@ -1260,7 +1212,6 @@ def do_encryption_type_delete(cs, args): help='Enables or disables generic host-based ' 'force-migration, which bypasses driver ' 'optimizations. Default=False.') -@utils.service_type('volume') def do_migrate(cs, args): """Migrates volume to a new host.""" volume = utils.find_volume(cs, args.volume) @@ -1292,7 +1243,6 @@ def _print_associations_list(associations): nargs='+', default=[], help='Specifications for QoS.') -@utils.service_type('volume') def do_qos_create(cs, args): """Creates a qos specs.""" keypair = None @@ -1302,7 +1252,6 @@ def do_qos_create(cs, args): _print_qos_specs(qos_specs) -@utils.service_type('volume') def do_qos_list(cs, args): """Lists qos specs.""" qos_specs = cs.qos_specs.list() @@ -1311,7 +1260,6 @@ def do_qos_list(cs, args): @utils.arg('qos_specs', metavar='', help='ID of QoS specifications.') -@utils.service_type('volume') def do_qos_show(cs, args): """Shows a specified qos specs.""" qos_specs = _find_qos_specs(cs, args.qos_specs) @@ -1325,7 +1273,6 @@ def do_qos_show(cs, args): default=False, help='Enables or disables deletion of in-use ' 'QoS specifications. Default=False.') -@utils.service_type('volume') def do_qos_delete(cs, args): """Deletes a specified qos specs.""" force = strutils.bool_from_string(args.force, strict=True) @@ -1337,7 +1284,6 @@ def do_qos_delete(cs, args): help='ID of QoS specifications.') @utils.arg('vol_type_id', metavar='', help='ID of volume type.') -@utils.service_type('volume') def do_qos_associate(cs, args): """Associates qos specs with specified volume type.""" cs.qos_specs.associate(args.qos_specs, args.vol_type_id) @@ -1347,7 +1293,6 @@ def do_qos_associate(cs, args): help='ID of QoS specifications.') @utils.arg('vol_type_id', metavar='', help='ID of volume type.') -@utils.service_type('volume') def do_qos_disassociate(cs, args): """Disassociates qos specs from specified volume type.""" cs.qos_specs.disassociate(args.qos_specs, args.vol_type_id) @@ -1355,7 +1300,6 @@ def do_qos_disassociate(cs, args): @utils.arg('qos_specs', metavar='', help='ID of QoS specifications.') -@utils.service_type('volume') def do_qos_disassociate_all(cs, args): """Disassociates qos specs from all associations.""" cs.qos_specs.disassociate_all(args.qos_specs) @@ -1384,7 +1328,6 @@ def do_qos_key(cs, args): @utils.arg('qos_specs', metavar='', help='ID of QoS specifications.') -@utils.service_type('volume') def do_qos_get_association(cs, args): """Gets all associations for specified qos specs.""" associations = cs.qos_specs.get_associations(args.qos_specs) @@ -1404,7 +1347,6 @@ def do_qos_get_association(cs, args): default=[], help='The metadata key and value pair to set or unset. ' 'For unset, specify only the key.') -@utils.service_type('volume') def do_snapshot_metadata(cs, args): """Sets or deletes snapshot metadata.""" snapshot = _find_volume_snapshot(cs, args.snapshot) @@ -1419,7 +1361,6 @@ def do_snapshot_metadata(cs, args): @utils.arg('snapshot', metavar='', help='ID of snapshot.') -@utils.service_type('volume') def do_snapshot_metadata_show(cs, args): """Shows snapshot metadata.""" snapshot = _find_volume_snapshot(cs, args.snapshot) @@ -1428,7 +1369,6 @@ def do_snapshot_metadata_show(cs, args): @utils.arg('volume', metavar='', help='ID of volume.') -@utils.service_type('volume') def do_metadata_show(cs, args): """Shows volume metadata.""" volume = utils.find_volume(cs, args.volume) @@ -1444,7 +1384,6 @@ def do_metadata_show(cs, args): default=[], help='Metadata key and value pair or pairs to update. ' 'Default=[].') -@utils.service_type('volume') def do_metadata_update_all(cs, args): """Updates volume metadata.""" volume = utils.find_volume(cs, args.volume) @@ -1462,7 +1401,6 @@ def do_metadata_update_all(cs, args): default=[], help='Metadata key and value pair or pairs to update. ' 'Default=[].') -@utils.service_type('volume') def do_snapshot_metadata_update_all(cs, args): """Updates snapshot metadata.""" snapshot = _find_volume_snapshot(cs, args.snapshot) @@ -1477,7 +1415,6 @@ def do_snapshot_metadata_update_all(cs, args): choices=['True', 'true', 'False', 'false'], help='Enables or disables update of volume to ' 'read-only access mode.') -@utils.service_type('volume') def do_readonly_mode_update(cs, args): """Updates volume read-only access-mode flag.""" volume = utils.find_volume(cs, args.volume) @@ -1491,7 +1428,6 @@ def do_readonly_mode_update(cs, args): metavar='', choices=['True', 'true', 'False', 'false'], help='Flag to indicate whether volume is bootable.') -@utils.service_type('volume') def do_set_bootable(cs, args): """Update bootable status of a volume.""" volume = utils.find_volume(cs, args.volume) diff --git a/cinderclient/v2/contrib/list_extensions.py b/cinderclient/v2/contrib/list_extensions.py index 62bd2e1a6..92572feff 100644 --- a/cinderclient/v2/contrib/list_extensions.py +++ b/cinderclient/v2/contrib/list_extensions.py @@ -46,6 +46,5 @@ def list_extensions(client, _args): utils.print_list(extensions, fields) -@utils.service_type('volumev2') def do_list_extensions(client, _args): return list_extensions(client, _args) diff --git a/cinderclient/v2/shell.py b/cinderclient/v2/shell.py index 7b2772cdc..73fbbe6dc 100644 --- a/cinderclient/v2/shell.py +++ b/cinderclient/v2/shell.py @@ -110,7 +110,6 @@ from cinderclient.v2 import availability_zones nargs='?', metavar='', help='Display information from single tenant (Admin only).') -@utils.service_type('volumev2') def do_list(cs, args): """Lists all volumes.""" # NOTE(thingee): Backwards-compatibility with v1 args @@ -176,7 +175,6 @@ def do_list(cs, args): @utils.arg('volume', metavar='', help='Name or ID of volume.') -@utils.service_type('volumev2') def do_show(cs, args): """Shows volume details.""" info = dict() @@ -201,7 +199,6 @@ class CheckSizeArgForCreate(argparse.Action): setattr(args, self.dest, values) -@utils.service_type('volumev2') @utils.arg('size', metavar='', nargs='?', @@ -375,7 +372,6 @@ def do_create(cs, args): help='The new image name.') @utils.arg('--image_name', help=argparse.SUPPRESS) -@utils.service_type('volumev2') def do_upload_to_image(cs, args): """Uploads volume to Image Service as an image.""" volume = utils.find_volume(cs, args.volume) @@ -393,7 +389,6 @@ def do_upload_to_image(cs, args): @utils.arg('volume', metavar='', nargs='+', help='Name or ID of volume or volumes to delete.') -@utils.service_type('volumev2') def do_delete(cs, args): """Removes one or more volumes.""" failure_count = 0 @@ -412,7 +407,6 @@ def do_delete(cs, args): @utils.arg('volume', metavar='', nargs='+', help='Name or ID of volume or volumes to delete.') -@utils.service_type('volumev2') def do_force_delete(cs, args): """Attempts force-delete of volume, regardless of state.""" failure_count = 0 @@ -448,7 +442,6 @@ def do_force_delete(cs, args): help=('Clears the migration status of the volume in the DataBase ' 'that indicates the volume is source or destination of ' 'volume migration, with no regard to the actual status.')) -@utils.service_type('volumev2') def do_reset_state(cs, args): """Explicitly updates the volume state in the Cinder database. @@ -493,7 +486,6 @@ def do_reset_state(cs, args): help=argparse.SUPPRESS) @utils.arg('--display_description', help=argparse.SUPPRESS) -@utils.service_type('volumev2') def do_rename(cs, args): """Renames a volume.""" kwargs = {} @@ -525,7 +517,6 @@ def do_rename(cs, args): default=[], help='Metadata key and value pair to set or unset. ' 'For unset, specify only the key.') -@utils.service_type('volumev2') def do_metadata(cs, args): """Sets or deletes volume metadata.""" volume = utils.find_volume(cs, args.volume) @@ -552,7 +543,6 @@ def do_metadata(cs, args): default=[], help='Metadata key and value pair to set or unset. ' 'For unset, specify only the key.') -@utils.service_type('volumev2') def do_image_metadata(cs, args): """Sets or deletes volume image metadata.""" volume = utils.find_volume(cs, args.volume) @@ -619,7 +609,6 @@ def do_image_metadata(cs, args): nargs='?', metavar='', help='Display information from single tenant (Admin only).') -@utils.service_type('volumev2') def do_snapshot_list(cs, args): """Lists all snapshots.""" all_tenants = (1 if args.tenant else @@ -654,7 +643,6 @@ def do_snapshot_list(cs, args): @utils.arg('snapshot', metavar='', help='Name or ID of snapshot.') -@utils.service_type('volumev2') def do_snapshot_show(cs, args): """Shows snapshot details.""" snapshot = shell_utils.find_volume_snapshot(cs, args.snapshot) @@ -697,7 +685,6 @@ def do_snapshot_show(cs, args): metavar='', default=None, help='Snapshot metadata key and value pairs. Default=None.') -@utils.service_type('volumev2') def do_snapshot_create(cs, args): """Creates a snapshot.""" if args.display_name is not None: @@ -727,7 +714,6 @@ def do_snapshot_create(cs, args): help='Allows deleting snapshot of a volume ' 'when its status is other than "available" or "error". ' 'Default=False.') -@utils.service_type('volumev2') def do_snapshot_delete(cs, args): """Removes one or more snapshots.""" failure_count = 0 @@ -754,7 +740,6 @@ def do_snapshot_delete(cs, args): help=argparse.SUPPRESS) @utils.arg('--display_description', help=argparse.SUPPRESS) -@utils.service_type('volumev2') def do_snapshot_rename(cs, args): """Renames a snapshot.""" kwargs = {} @@ -784,7 +769,6 @@ def do_snapshot_rename(cs, args): 'the state of the Snapshot in the DataBase with no regard ' 'to actual status, exercise caution when using. ' 'Default=available.')) -@utils.service_type('volumev2') def do_snapshot_reset_state(cs, args): """Explicitly updates the snapshot state.""" failure_count = 0 @@ -808,7 +792,6 @@ def do_snapshot_reset_state(cs, args): raise exceptions.CommandError(msg) -@utils.service_type('volumev2') def do_type_list(cs, args): """Lists available 'volume types'. @@ -818,7 +801,6 @@ def do_type_list(cs, args): shell_utils.print_volume_type_list(vtypes) -@utils.service_type('volumev2') def do_type_default(cs, args): """List the default volume type.""" vtype = cs.volume_types.default() @@ -828,7 +810,6 @@ def do_type_default(cs, args): @utils.arg('volume_type', metavar='', help='Name or ID of the volume type.') -@utils.service_type('volumev2') def do_type_show(cs, args): """Show volume type details.""" vtype = shell_utils.find_vtype(cs, args.volume_type) @@ -851,7 +832,6 @@ def do_type_show(cs, args): @utils.arg('--is-public', metavar='', help='Make type accessible to the public or not.') -@utils.service_type('volumev2') def do_type_update(cs, args): """Updates volume type name, description, and/or is_public.""" is_public = args.is_public @@ -866,7 +846,6 @@ def do_type_update(cs, args): shell_utils.print_volume_type_list([vtype]) -@utils.service_type('volumev2') def do_extra_specs_list(cs, args): """Lists current volume types and extra specs.""" vtypes = cs.volume_types.list() @@ -883,7 +862,6 @@ def do_extra_specs_list(cs, args): metavar='', default=True, help='Make type accessible to the public (default true).') -@utils.service_type('volumev2') def do_type_create(cs, args): """Creates a volume type.""" is_public = strutils.bool_from_string(args.is_public, strict=True) @@ -894,7 +872,6 @@ def do_type_create(cs, args): @utils.arg('vol_type', metavar='', nargs='+', help='Name or ID of volume type or types to delete.') -@utils.service_type('volumev2') def do_type_delete(cs, args): """Deletes volume type or types.""" failure_count = 0 @@ -925,7 +902,6 @@ def do_type_delete(cs, args): default=[], help='The extra specs key and value pair to set or unset. ' 'For unset, specify only the key.') -@utils.service_type('volumev2') def do_type_key(cs, args): """Sets or unsets extra_spec for a volume type.""" vtype = shell_utils.find_volume_type(cs, args.vtype) @@ -939,7 +915,6 @@ def do_type_key(cs, args): @utils.arg('--volume-type', metavar='', required=True, help='Filter results by volume type name or ID.') -@utils.service_type('volumev2') def do_type_access_list(cs, args): """Print access information about the given volume type.""" volume_type = shell_utils.find_volume_type(cs, args.volume_type) @@ -956,7 +931,6 @@ def do_type_access_list(cs, args): help='Volume type name or ID to add access for the given project.') @utils.arg('--project-id', metavar='', required=True, help='Project ID to add volume type access for.') -@utils.service_type('volumev2') def do_type_access_add(cs, args): """Adds volume type access for the given project.""" vtype = shell_utils.find_volume_type(cs, args.volume_type) @@ -968,7 +942,6 @@ def do_type_access_add(cs, args): 'for the given project.')) @utils.arg('--project-id', metavar='', required=True, help='Project ID to remove volume type access for.') -@utils.service_type('volumev2') def do_type_access_remove(cs, args): """Removes volume type access for the given project.""" vtype = shell_utils.find_volume_type(cs, args.volume_type) @@ -976,7 +949,6 @@ def do_type_access_remove(cs, args): vtype, args.project_id) -@utils.service_type('volumev2') def do_endpoints(cs, args): """Discovers endpoints registered by authentication service.""" warnings.warn( @@ -988,7 +960,6 @@ def do_endpoints(cs, args): utils.print_dict(e['endpoints'][0], e['name']) -@utils.service_type('volumev2') def do_credentials(cs, args): """Shows user credentials returned from auth.""" catalog = cs.client.service_catalog.catalog @@ -1003,7 +974,6 @@ def do_credentials(cs, args): @utils.arg('tenant', metavar='', help='ID of tenant for which to list quotas.') -@utils.service_type('volumev2') def do_quota_show(cs, args): """Lists quotas for a tenant.""" @@ -1012,7 +982,6 @@ def do_quota_show(cs, args): @utils.arg('tenant', metavar='', help='ID of tenant for which to list quota usage.') -@utils.service_type('volumev2') def do_quota_usage(cs, args): """Lists quota usage for a tenant.""" @@ -1022,7 +991,6 @@ def do_quota_usage(cs, args): @utils.arg('tenant', metavar='', help='ID of tenant for which to list quota defaults.') -@utils.service_type('volumev2') def do_quota_defaults(cs, args): """Lists default quotas for a tenant.""" @@ -1064,7 +1032,6 @@ def do_quota_defaults(cs, args): metavar='', type=int, default=None, help='Set max volume size limit. Default=None.') -@utils.service_type('volumev2') def do_quota_update(cs, args): """Updates quotas for a tenant.""" @@ -1073,7 +1040,6 @@ def do_quota_update(cs, args): @utils.arg('tenant', metavar='', help='UUID of tenant to delete the quotas for.') -@utils.service_type('volumev2') def do_quota_delete(cs, args): """Delete the quotas for a tenant.""" @@ -1083,7 +1049,6 @@ def do_quota_delete(cs, args): @utils.arg('class_name', metavar='', help='Name of quota class for which to list quotas.') -@utils.service_type('volumev2') def do_quota_class_show(cs, args): """Lists quotas for a quota class.""" @@ -1109,7 +1074,6 @@ def do_quota_class_show(cs, args): metavar='', default=None, help='Volume type. Default=None.') -@utils.service_type('volumev2') def do_quota_class_update(cs, args): """Updates quotas for a quota class.""" @@ -1121,7 +1085,6 @@ def do_quota_class_update(cs, args): nargs='?', default=None, help='Display information for a single tenant (Admin only).') -@utils.service_type('volumev2') def do_absolute_limits(cs, args): """Lists absolute limits for a user.""" limits = cs.limits.get(args.tenant).absolute @@ -1134,7 +1097,6 @@ def do_absolute_limits(cs, args): nargs='?', default=None, help='Display information for a single tenant (Admin only).') -@utils.service_type('volumev2') def do_rate_limits(cs, args): """Lists rate limits for a user.""" limits = cs.limits.get(args.tenant).rate @@ -1173,7 +1135,6 @@ def do_rate_limits(cs, args): help='The new image name.') @utils.arg('--image_name', help=argparse.SUPPRESS) -@utils.service_type('volumev2') def do_upload_to_image(cs, args): """Uploads volume to Image Service as an image.""" volume = utils.find_volume(cs, args.volume) @@ -1210,7 +1171,6 @@ def do_upload_to_image(cs, args): 'migration. False means it allows the volume migration ' 'to be aborted. The volume status is still in the original ' 'status. Default=False.') -@utils.service_type('volumev2') def do_migrate(cs, args): """Migrates volume to a new host.""" volume = utils.find_volume(cs, args.volume) @@ -1229,7 +1189,6 @@ def do_migrate(cs, args): @utils.arg('--migration-policy', metavar='', required=False, choices=['never', 'on-demand'], default='never', help='Migration policy during retype of volume.') -@utils.service_type('volumev2') def do_retype(cs, args): """Changes the volume type for a volume.""" volume = utils.find_volume(cs, args.volume) @@ -1269,7 +1228,6 @@ def do_retype(cs, args): metavar='', default=None, help='ID of snapshot to backup. Default=None.') -@utils.service_type('volumev2') def do_backup_create(cs, args): """Creates a volume backup.""" if args.display_name is not None: @@ -1297,7 +1255,6 @@ def do_backup_create(cs, args): @utils.arg('backup', metavar='', help='Name or ID of backup.') -@utils.service_type('volumev2') def do_backup_show(cs, args): """Shows backup details.""" backup = shell_utils.find_backup(cs, args.backup) @@ -1351,7 +1308,6 @@ def do_backup_show(cs, args): 'form of [:]. ' 'Valid keys: %s. ' 'Default=None.') % ', '.join(base.SORT_KEY_VALUES))) -@utils.service_type('volumev2') def do_backup_list(cs, args): """Lists all backups.""" @@ -1383,7 +1339,6 @@ def do_backup_list(cs, args): 'Default=False.') @utils.arg('backup', metavar='', nargs='+', help='Name or ID of backup(s) to delete.') -@utils.service_type('volumev2') def do_backup_delete(cs, args): """Removes one or more backups.""" failure_count = 0 @@ -1415,7 +1370,6 @@ def do_backup_delete(cs, args): 'This is mutually exclusive with --volume (or the deprecated ' '--volume-id) and --volume (or --volume-id) takes priority. ' 'Default=None.') -@utils.service_type('volumev2') def do_backup_restore(cs, args): """Restores a backup.""" vol = args.volume or args.volume_id @@ -1442,7 +1396,6 @@ def do_backup_restore(cs, args): @utils.arg('backup', metavar='', help='ID of the backup to export.') -@utils.service_type('volumev2') def do_backup_export(cs, args): """Export backup metadata record.""" info = cs.backups.export_record(args.backup) @@ -1453,7 +1406,6 @@ def do_backup_export(cs, args): help='Backup service to use for importing the backup.') @utils.arg('backup_url', metavar='', help='Backup URL for importing the backup metadata.') -@utils.service_type('volumev2') def do_backup_import(cs, args): """Import backup metadata record.""" info = cs.backups.import_record(args.backup_service, args.backup_url) @@ -1468,7 +1420,6 @@ def do_backup_import(cs, args): default='available', help='The state to assign to the backup. Valid values are ' '"available", "error". Default=available.') -@utils.service_type('volumev2') def do_backup_reset_state(cs, args): """Explicitly updates the backup state.""" failure_count = 0 @@ -1499,7 +1450,6 @@ def do_backup_reset_state(cs, args): help='Transfer name. Default=None.') @utils.arg('--display-name', help=argparse.SUPPRESS) -@utils.service_type('volumev2') def do_transfer_create(cs, args): """Creates a volume transfer.""" if args.display_name is not None: @@ -1517,7 +1467,6 @@ def do_transfer_create(cs, args): @utils.arg('transfer', metavar='', help='Name or ID of transfer to delete.') -@utils.service_type('volumev2') def do_transfer_delete(cs, args): """Undoes a transfer.""" transfer = shell_utils.find_transfer(cs, args.transfer) @@ -1528,7 +1477,6 @@ def do_transfer_delete(cs, args): help='ID of transfer to accept.') @utils.arg('auth_key', metavar='', help='Authentication key of transfer to accept.') -@utils.service_type('volumev2') def do_transfer_accept(cs, args): """Accepts a volume transfer.""" transfer = cs.transfers.accept(args.transfer, args.auth_key) @@ -1552,7 +1500,6 @@ def do_transfer_accept(cs, args): type=int, const=1, help=argparse.SUPPRESS) -@utils.service_type('volumev2') def do_transfer_list(cs, args): """Lists all transfers.""" all_tenants = int(os.environ.get("ALL_TENANTS", args.all_tenants)) @@ -1566,7 +1513,6 @@ def do_transfer_list(cs, args): @utils.arg('transfer', metavar='', help='Name or ID of transfer to accept.') -@utils.service_type('volumev2') def do_transfer_show(cs, args): """Shows transfer details.""" transfer = shell_utils.find_transfer(cs, args.transfer) @@ -1583,7 +1529,6 @@ def do_transfer_show(cs, args): metavar='', type=int, help='New size of volume, in GiBs.') -@utils.service_type('volumev2') def do_extend(cs, args): """Attempts to extend size of an existing volume.""" volume = utils.find_volume(cs, args.volume) @@ -1601,7 +1546,6 @@ def do_extend(cs, args): default=False, help='Enables or disables display of ' 'Replication info for c-vol services. Default=False.') -@utils.service_type('volumev2') def do_service_list(cs, args): """Lists all services. Filter by host and service binary.""" replication = strutils.bool_from_string(args.withreplication, @@ -1619,7 +1563,6 @@ def do_service_list(cs, args): @utils.arg('host', metavar='', help='Host name.') @utils.arg('binary', metavar='', help='Service binary.') -@utils.service_type('volumev2') def do_service_enable(cs, args): """Enables the service.""" result = cs.services.enable(args.host, args.binary) @@ -1631,7 +1574,6 @@ def do_service_enable(cs, args): @utils.arg('binary', metavar='', help='Service binary.') @utils.arg('--reason', metavar='', help='Reason for disabling service.') -@utils.service_type('volumev2') def do_service_disable(cs, args): """Disables the service.""" columns = ["Host", "Binary", "Status"] @@ -1644,7 +1586,6 @@ def do_service_disable(cs, args): utils.print_list([result], columns) -@utils.service_type('volumev2') def treeizeAvailabilityZone(zone): """Builds a tree view for availability zones.""" AvailabilityZone = availability_zones.AvailabilityZone @@ -1687,7 +1628,6 @@ def treeizeAvailabilityZone(zone): return result -@utils.service_type('volumev2') def do_availability_zone_list(cs, _args): """Lists all availability zones.""" try: @@ -1705,7 +1645,6 @@ def do_availability_zone_list(cs, _args): utils.print_list(result, ['Name', 'Status']) -@utils.service_type('volumev2') def do_encryption_type_list(cs, args): """Shows encryption type details for volume types. Admin only.""" result = cs.volume_encryption_types.list() @@ -1717,7 +1656,6 @@ def do_encryption_type_list(cs, args): metavar='', type=str, help='Name or ID of volume type.') -@utils.service_type('volumev2') def do_encryption_type_show(cs, args): """Shows encryption type details for a volume type. Admin only.""" volume_type = shell_utils.find_volume_type(cs, args.volume_type) @@ -1763,7 +1701,6 @@ def do_encryption_type_show(cs, args): help='Notional service where encryption is performed. ' 'Valid values are "front-end" or "back-end." ' 'For example, front-end=Nova. Default is "front-end."') -@utils.service_type('volumev2') def do_encryption_type_create(cs, args): """Creates encryption type for a volume type. Admin only.""" volume_type = shell_utils.find_volume_type(cs, args.volume_type) @@ -1820,7 +1757,6 @@ def do_encryption_type_create(cs, args): default=argparse.SUPPRESS, help="Notional service where encryption is performed (e.g., " "front-end=Nova). Values: 'front-end', 'back-end' (Optional)") -@utils.service_type('volumev2') def do_encryption_type_update(cs, args): """Update encryption type information for a volume type (Admin Only).""" volume_type = shell_utils.find_volume_type(cs, args.volume_type) @@ -1840,7 +1776,6 @@ def do_encryption_type_update(cs, args): metavar='', type=str, help='Name or ID of volume type.') -@utils.service_type('volumev2') def do_encryption_type_delete(cs, args): """Deletes encryption type for a volume type. Admin only.""" volume_type = shell_utils.find_volume_type(cs, args.volume_type) @@ -1855,7 +1790,6 @@ def do_encryption_type_delete(cs, args): nargs='+', default=[], help='QoS specifications.') -@utils.service_type('volumev2') def do_qos_create(cs, args): """Creates a qos specs.""" keypair = None @@ -1865,7 +1799,6 @@ def do_qos_create(cs, args): shell_utils.print_qos_specs(qos_specs) -@utils.service_type('volumev2') def do_qos_list(cs, args): """Lists qos specs.""" qos_specs = cs.qos_specs.list() @@ -1874,7 +1807,6 @@ def do_qos_list(cs, args): @utils.arg('qos_specs', metavar='', help='ID of QoS specifications to show.') -@utils.service_type('volumev2') def do_qos_show(cs, args): """Shows qos specs details.""" qos_specs = shell_utils.find_qos_specs(cs, args.qos_specs) @@ -1890,7 +1822,6 @@ def do_qos_show(cs, args): default=False, help='Enables or disables deletion of in-use ' 'QoS specifications. Default=False.') -@utils.service_type('volumev2') def do_qos_delete(cs, args): """Deletes a specified qos specs.""" force = strutils.bool_from_string(args.force, @@ -1904,7 +1835,6 @@ def do_qos_delete(cs, args): @utils.arg('vol_type_id', metavar='', help='ID of volume type with which to associate ' 'QoS specifications.') -@utils.service_type('volumev2') def do_qos_associate(cs, args): """Associates qos specs with specified volume type.""" cs.qos_specs.associate(args.qos_specs, args.vol_type_id) @@ -1915,7 +1845,6 @@ def do_qos_associate(cs, args): @utils.arg('vol_type_id', metavar='', help='ID of volume type with which to associate ' 'QoS specifications.') -@utils.service_type('volumev2') def do_qos_disassociate(cs, args): """Disassociates qos specs from specified volume type.""" cs.qos_specs.disassociate(args.qos_specs, args.vol_type_id) @@ -1923,7 +1852,6 @@ def do_qos_disassociate(cs, args): @utils.arg('qos_specs', metavar='', help='ID of QoS specifications on which to operate.') -@utils.service_type('volumev2') def do_qos_disassociate_all(cs, args): """Disassociates qos specs from all its associations.""" cs.qos_specs.disassociate_all(args.qos_specs) @@ -1940,7 +1868,6 @@ def do_qos_disassociate_all(cs, args): default=[], help='Metadata key and value pair to set or unset. ' 'For unset, specify only the key.') -@utils.service_type('volumev2') def do_qos_key(cs, args): """Sets or unsets specifications for a qos spec.""" keypair = shell_utils.extract_metadata(args) @@ -1953,7 +1880,6 @@ def do_qos_key(cs, args): @utils.arg('qos_specs', metavar='', help='ID of QoS specifications.') -@utils.service_type('volumev2') def do_qos_get_association(cs, args): """Lists all associations for specified qos specs.""" associations = cs.qos_specs.get_associations(args.qos_specs) @@ -1973,7 +1899,6 @@ def do_qos_get_association(cs, args): default=[], help='Metadata key and value pair to set or unset. ' 'For unset, specify only the key.') -@utils.service_type('volumev2') def do_snapshot_metadata(cs, args): """Sets or deletes snapshot metadata.""" snapshot = shell_utils.find_volume_snapshot(cs, args.snapshot) @@ -1988,7 +1913,6 @@ def do_snapshot_metadata(cs, args): @utils.arg('snapshot', metavar='', help='ID of snapshot.') -@utils.service_type('volumev2') def do_snapshot_metadata_show(cs, args): """Shows snapshot metadata.""" snapshot = shell_utils.find_volume_snapshot(cs, args.snapshot) @@ -1997,7 +1921,6 @@ def do_snapshot_metadata_show(cs, args): @utils.arg('volume', metavar='', help='ID of volume.') -@utils.service_type('volumev2') def do_metadata_show(cs, args): """Shows volume metadata.""" volume = utils.find_volume(cs, args.volume) @@ -2006,7 +1929,6 @@ def do_metadata_show(cs, args): @utils.arg('volume', metavar='', help='ID of volume.') -@utils.service_type('volumev2') def do_image_metadata_show(cs, args): """Shows volume image metadata.""" volume = utils.find_volume(cs, args.volume) @@ -2022,7 +1944,6 @@ def do_image_metadata_show(cs, args): nargs='+', default=[], help='Metadata key and value pair or pairs to update.') -@utils.service_type('volumev2') def do_metadata_update_all(cs, args): """Updates volume metadata.""" volume = utils.find_volume(cs, args.volume) @@ -2039,7 +1960,6 @@ def do_metadata_update_all(cs, args): nargs='+', default=[], help='Metadata key and value pair to update.') -@utils.service_type('volumev2') def do_snapshot_metadata_update_all(cs, args): """Updates snapshot metadata.""" snapshot = shell_utils.find_volume_snapshot(cs, args.snapshot) @@ -2054,7 +1974,6 @@ def do_snapshot_metadata_update_all(cs, args): choices=['True', 'true', 'False', 'false'], help='Enables or disables update of volume to ' 'read-only access mode.') -@utils.service_type('volumev2') def do_readonly_mode_update(cs, args): """Updates volume read-only access-mode flag.""" volume = utils.find_volume(cs, args.volume) @@ -2068,7 +1987,6 @@ def do_readonly_mode_update(cs, args): metavar='', choices=['True', 'true', 'False', 'false'], help='Flag to indicate whether volume is bootable.') -@utils.service_type('volumev2') def do_set_bootable(cs, args): """Update bootable status of a volume.""" volume = utils.find_volume(cs, args.volume) @@ -2110,7 +2028,6 @@ def do_set_bootable(cs, args): action='store_true', help='Specifies that the newly created volume should be' ' marked as bootable') -@utils.service_type('volumev2') def do_manage(cs, args): """Manage an existing volume.""" volume_metadata = None @@ -2153,7 +2070,6 @@ def do_manage(cs, args): @utils.arg('volume', metavar='', help='Name or ID of the volume to unmanage.') -@utils.service_type('volumev2') def do_unmanage(cs, args): """Stop managing a volume.""" volume = utils.find_volume(cs, args.volume) @@ -2164,7 +2080,6 @@ def do_unmanage(cs, args): help='Name or ID of the volume to promote. ' 'The volume should have the replica volume created with ' 'source-replica argument.') -@utils.service_type('volumev2') def do_replication_promote(cs, args): """Promote a secondary volume to primary for a relationship.""" volume = utils.find_volume(cs, args.volume) @@ -2174,7 +2089,6 @@ def do_replication_promote(cs, args): @utils.arg('volume', metavar='', help='Name or ID of the volume to reenable replication. ' 'The replication-status of the volume should be inactive.') -@utils.service_type('volumev2') def do_replication_reenable(cs, args): """Sync the secondary volume with primary for a relationship.""" volume = utils.find_volume(cs, args.volume) @@ -2189,7 +2103,6 @@ def do_replication_reenable(cs, args): const=1, default=0, help='Shows details for all tenants. Admin only.') -@utils.service_type('volumev2') def do_consisgroup_list(cs, args): """Lists all consistency groups.""" consistencygroups = cs.consistencygroups.list() @@ -2198,7 +2111,6 @@ def do_consisgroup_list(cs, args): utils.print_list(consistencygroups, columns) -@utils.service_type('volumev2') @utils.arg('consistencygroup', metavar='', help='Name or ID of a consistency group.') @@ -2216,7 +2128,6 @@ def do_consisgroup_show(cs, args): @utils.arg('group', metavar='', help='Name or ID of a group.') -@utils.service_type('volumev2') def do_group_show(cs, args): """Shows details of a group.""" info = dict() @@ -2241,7 +2152,6 @@ def do_group_show(cs, args): metavar='', default=None, help='Availability zone for volume. Default=None.') -@utils.service_type('volumev2') def do_consisgroup_create(cs, args): """Creates a consistency group.""" @@ -2271,7 +2181,6 @@ def do_consisgroup_create(cs, args): @utils.arg('--description', metavar='', help='Description of a consistency group. Default=None.') -@utils.service_type('volumev2') def do_consisgroup_create_from_src(cs, args): """Creates a consistency group from a cgsnapshot or a source CG.""" if not args.cgsnapshot and not args.source_cg: @@ -2310,7 +2219,6 @@ def do_consisgroup_create_from_src(cs, args): 'it can be deleted without the force flag. ' 'If the consistency group is not empty, the force ' 'flag is required for it to be deleted.') -@utils.service_type('volumev2') def do_consisgroup_delete(cs, args): """Removes one or more consistency groups.""" failure_count = 0 @@ -2344,7 +2252,6 @@ def do_consisgroup_delete(cs, args): help='UUID of one or more volumes ' 'to be removed from the consistency group, ' 'separated by commas. Default=None.') -@utils.service_type('volumev2') def do_consisgroup_update(cs, args): """Updates a consistency group.""" kwargs = {} @@ -2386,7 +2293,6 @@ def do_consisgroup_update(cs, args): metavar='', default=None, help='Filters results by a consistency group ID. Default=None.') -@utils.service_type('volumev2') def do_cgsnapshot_list(cs, args): """Lists all cgsnapshots.""" @@ -2407,7 +2313,6 @@ def do_cgsnapshot_list(cs, args): @utils.arg('cgsnapshot', metavar='', help='Name or ID of cgsnapshot.') -@utils.service_type('volumev2') def do_cgsnapshot_show(cs, args): """Shows cgsnapshot details.""" info = dict() @@ -2429,7 +2334,6 @@ def do_cgsnapshot_show(cs, args): metavar='', default=None, help='Cgsnapshot description. Default=None.') -@utils.service_type('volumev2') def do_cgsnapshot_create(cs, args): """Creates a cgsnapshot.""" consistencygroup = shell_utils.find_consistencygroup(cs, @@ -2450,7 +2354,6 @@ def do_cgsnapshot_create(cs, args): @utils.arg('cgsnapshot', metavar='', nargs='+', help='Name or ID of one or more cgsnapshots to be deleted.') -@utils.service_type('volumev2') def do_cgsnapshot_delete(cs, args): """Removes one or more cgsnapshots.""" failure_count = 0 @@ -2468,7 +2371,6 @@ def do_cgsnapshot_delete(cs, args): @utils.arg('--detail', action='store_true', help='Show detailed information about pools.') -@utils.service_type('volumev2') def do_get_pools(cs, args): """Show pool information for backends. Admin only.""" pools = cs.volumes.get_pools(args.detail) @@ -2487,7 +2389,6 @@ def do_get_pools(cs, args): metavar='', help='Cinder host to show backend volume stats and properties; ' 'takes the form: host@backend-name') -@utils.service_type('volumev2') def do_get_capabilities(cs, args): """Show backend volume stats and properties. Admin only.""" @@ -2522,7 +2423,6 @@ def do_get_capabilities(cs, args): nargs='*', metavar='', help='Metadata key=value pairs (Default=None)') -@utils.service_type('volumev2') def do_snapshot_manage(cs, args): """Manage an existing snapshot.""" snapshot_metadata = None @@ -2553,7 +2453,6 @@ def do_snapshot_manage(cs, args): @utils.arg('snapshot', metavar='', help='Name or ID of the snapshot to unmanage.') -@utils.service_type('volumev2') def do_snapshot_unmanage(cs, args): """Stop managing a snapshot.""" snapshot = shell_utils.find_volume_snapshot(cs, args.snapshot) @@ -2561,20 +2460,17 @@ def do_snapshot_unmanage(cs, args): @utils.arg('host', metavar='', help='Host name.') -@utils.service_type('volumev2') def do_freeze_host(cs, args): """Freeze and disable the specified cinder-volume host.""" cs.services.freeze_host(args.host) @utils.arg('host', metavar='', help='Host name.') -@utils.service_type('volumev2') def do_thaw_host(cs, args): """Thaw and enable the specified cinder-volume host.""" cs.services.thaw_host(args.host) -@utils.service_type('volumev2') @utils.arg('host', metavar='', help='Host name.') @utils.arg('--backend_id', metavar='', @@ -2613,7 +2509,6 @@ def do_failover_host(cs, args): 'form of [:]. ' 'Valid keys: %s. ' 'Default=None.') % ', '.join(base.SORT_KEY_VALUES))) -@utils.service_type('volumev2') def do_manageable_list(cs, args): """Lists all manageable volumes.""" detailed = strutils.bool_from_string(args.detailed) @@ -2655,7 +2550,6 @@ def do_manageable_list(cs, args): 'form of [:]. ' 'Valid keys: %s. ' 'Default=None.') % ', '.join(base.SORT_KEY_VALUES))) -@utils.service_type('volumev2') def do_snapshot_manageable_list(cs, args): """Lists all manageable snapshots.""" detailed = strutils.bool_from_string(args.detailed) diff --git a/cinderclient/v3/contrib/list_extensions.py b/cinderclient/v3/contrib/list_extensions.py index 9e02b8413..9793fa892 100644 --- a/cinderclient/v3/contrib/list_extensions.py +++ b/cinderclient/v3/contrib/list_extensions.py @@ -13,13 +13,4 @@ # License for the specific language governing permissions and limitations # under the License. -from cinderclient import utils from cinderclient.v2.contrib.list_extensions import * # flake8: noqa - - -@utils.service_type('volumev3') -def do_list_extensions(client, _args): - """ - Lists all available os-api extensions. - """ - return list_extensions(client, _args) diff --git a/cinderclient/v3/shell.py b/cinderclient/v3/shell.py index 50213a513..cf3e42512 100644 --- a/cinderclient/v3/shell.py +++ b/cinderclient/v3/shell.py @@ -30,8 +30,6 @@ from cinderclient import utils from cinderclient.v2.shell import * # flake8: noqa -utils.retype_method('volumev2', 'volumev3', globals()) - @utils.arg('--all-tenants', dest='all_tenants', @@ -119,7 +117,6 @@ utils.retype_method('volumev2', 'volumev3', globals()) nargs='?', metavar='', help='Display information from single tenant (Admin only).') -@utils.service_type('volumev3') def do_list(cs, args): """Lists all volumes.""" # NOTE(thingee): Backwards-compatibility with v1 args @@ -184,7 +181,6 @@ def do_list(cs, args): sortby_index=sortby_index) -@utils.service_type('volumev3') @utils.arg('size', metavar='', nargs='?', @@ -361,7 +357,6 @@ def do_create(cs, args): start_version='3.15', help='Metadata key and value pair to set or unset. ' 'For unset, specify only the key(s): ') -@utils.service_type('volumev3') def do_metadata(cs, args): """Sets or deletes volume metadata.""" volume = utils.find_volume(cs, args.volume) @@ -375,7 +370,6 @@ def do_metadata(cs, args): reverse=True)) -@utils.service_type('volumev3') @api_versions.wraps('3.11') def do_group_type_list(cs, args): """Lists available 'group types'. (Admin only will see private types)""" @@ -383,7 +377,6 @@ def do_group_type_list(cs, args): shell_utils.print_group_type_list(gtypes) -@utils.service_type('volumev3') @api_versions.wraps('3.11') def do_group_type_default(cs, args): """List the default group type.""" @@ -391,7 +384,6 @@ def do_group_type_default(cs, args): shell_utils.print_group_type_list([gtype]) -@utils.service_type('volumev3') @api_versions.wraps('3.11') @utils.arg('group_type', metavar='', @@ -406,7 +398,6 @@ def do_group_type_show(cs, args): utils.print_dict(info, formatters=['group_specs']) -@utils.service_type('volumev3') @api_versions.wraps('3.11') @utils.arg('id', metavar='', @@ -428,7 +419,6 @@ def do_group_type_update(cs, args): shell_utils.print_group_type_list([gtype]) -@utils.service_type('volumev3') @api_versions.wraps('3.11') def do_group_specs_list(cs, args): """Lists current group types and specs.""" @@ -436,7 +426,6 @@ def do_group_specs_list(cs, args): utils.print_list(gtypes, ['ID', 'Name', 'group_specs']) -@utils.service_type('volumev3') @api_versions.wraps('3.11') @utils.arg('name', metavar='', @@ -455,7 +444,6 @@ def do_group_type_create(cs, args): shell_utils.print_group_type_list([gtype]) -@utils.service_type('volumev3') @api_versions.wraps('3.11') @utils.arg('group_type', metavar='', nargs='+', @@ -477,7 +465,6 @@ def do_group_type_delete(cs, args): "specified types.") -@utils.service_type('volumev3') @api_versions.wraps('3.11') @utils.arg('gtype', metavar='', @@ -543,7 +530,6 @@ def do_group_type_key(cs, args): metavar='', type=int, default=None, help='Set max volume size limit. Default=None.') -@utils.service_type('volumev3') def do_quota_update(cs, args): """Updates quotas for a tenant.""" @@ -592,7 +578,6 @@ def do_quota_update(cs, args): help='Prevents image from being deleted. Default=False.', default=False, start_version='3.1') -@utils.service_type('volumev3') def do_upload_to_image(cs, args): """Uploads volume to Image Service as an image.""" volume = utils.find_volume(cs, args.volume) @@ -612,7 +597,6 @@ def do_upload_to_image(cs, args): args.disk_format)) -@utils.service_type('volumev3') @api_versions.wraps('3.9') @utils.arg('backup', metavar='', help='Name or ID of backup to rename.') @@ -637,7 +621,6 @@ def do_backup_update(cs, args): shell_utils.find_backup(cs, args.backup).update(**kwargs) -@utils.service_type('volumev3') @api_versions.wraps('3.7') @utils.arg('--name', metavar='', default=None, help='Filter by cluster name, without backend will list all ' @@ -672,7 +655,6 @@ def do_cluster_list(cs, args): utils.print_list(clusters, columns) -@utils.service_type('volumev3') @api_versions.wraps('3.7') @utils.arg('binary', metavar='', nargs='?', default='cinder-volume', help='Binary to filter by. Default: cinder-volume.') @@ -684,7 +666,6 @@ def do_cluster_show(cs, args): utils.print_dict(cluster.to_dict()) -@utils.service_type('volumev3') @api_versions.wraps('3.7') @utils.arg('binary', metavar='', nargs='?', default='cinder-volume', help='Binary to filter by. Default: cinder-volume.') @@ -696,7 +677,6 @@ def do_cluster_enable(cs, args): utils.print_dict(cluster.to_dict()) -@utils.service_type('volumev3') @api_versions.wraps('3.7') @utils.arg('binary', metavar='', nargs='?', default='cinder-volume', help='Binary to filter by. Default: cinder-volume.') @@ -711,7 +691,6 @@ def do_cluster_disable(cs, args): utils.print_dict(cluster.to_dict()) -@utils.service_type('volumev3') @api_versions.wraps('3.8') @utils.arg('host', metavar='', @@ -754,7 +733,6 @@ def do_manageable_list(cs, args): utils.print_list(volumes, columns, sortby_index=None) -@utils.service_type('volumev3') @api_versions.wraps('3.13') @utils.arg('--all-tenants', dest='all_tenants', @@ -772,7 +750,6 @@ def do_group_list(cs, args): utils.print_list(groups, columns) -@utils.service_type('volumev3') @api_versions.wraps('3.13') @utils.arg('grouptype', metavar='', @@ -809,7 +786,6 @@ def do_group_create(cs, args): utils.print_dict(info) -@utils.service_type('volumev3') @api_versions.wraps('3.14') @utils.arg('--group-snapshot', metavar='', @@ -850,7 +826,6 @@ def do_group_create_from_src(cs, args): utils.print_dict(info) -@utils.service_type('volumev3') @api_versions.wraps('3.13') @utils.arg('group', metavar='', nargs='+', @@ -880,7 +855,6 @@ def do_group_delete(cs, args): "groups.") -@utils.service_type('volumev3') @api_versions.wraps('3.13') @utils.arg('group', metavar='', @@ -923,7 +897,6 @@ def do_group_update(cs, args): shell_utils.find_group(cs, args.group).update(**kwargs) -@utils.service_type('volumev3') @api_versions.wraps('3.14') @utils.arg('--all-tenants', dest='all_tenants', @@ -958,7 +931,6 @@ def do_group_snapshot_list(cs, args): utils.print_list(group_snapshots, columns) -@utils.service_type('volumev3') @api_versions.wraps('3.14') @utils.arg('group_snapshot', metavar='', @@ -973,7 +945,6 @@ def do_group_snapshot_show(cs, args): utils.print_dict(info) -@utils.service_type('volumev3') @api_versions.wraps('3.14') @utils.arg('group', metavar='', @@ -1002,7 +973,6 @@ def do_group_snapshot_create(cs, args): utils.print_dict(info) -@utils.service_type('volumev3') @api_versions.wraps('3.14') @utils.arg('group_snapshot', metavar='', nargs='+', @@ -1034,7 +1004,6 @@ def do_group_snapshot_delete(cs, args): default=False, help='Enables or disables display of ' 'Replication info for c-vol services. Default=False.') -@utils.service_type('volumev3') def do_service_list(cs, args): """Lists all services. Filter by host and service binary.""" replication = strutils.bool_from_string(args.withreplication, @@ -1052,7 +1021,6 @@ def do_service_list(cs, args): utils.print_list(result, columns) -@utils.service_type('volumev3') @api_versions.wraps('3.8') @utils.arg('host', metavar='', @@ -1098,7 +1066,6 @@ def do_snapshot_manageable_list(cs, args): utils.print_list(snapshots, columns, sortby_index=None) -@utils.service_type('volumev3') @api_versions.wraps("3.0") def do_api_version(cs, args): """Display the server API version information.""" @@ -1107,7 +1074,6 @@ def do_api_version(cs, args): utils.print_list(response, columns) -@utils.service_type('volumev3') @api_versions.wraps("3.3") @utils.arg('--marker', metavar='', @@ -1179,7 +1145,6 @@ def do_message_list(cs, args): utils.print_list(messages, columns, sortby_index=sortby_index) -@utils.service_type('volumev3') @api_versions.wraps("3.3") @utils.arg('message', metavar='', @@ -1193,7 +1158,6 @@ def do_message_show(cs, args): utils.print_dict(info) -@utils.service_type('volumev3') @api_versions.wraps("3.3") @utils.arg('message', metavar='', nargs='+', @@ -1273,7 +1237,6 @@ def do_message_delete(cs, args): start_version='3.22', help='Filters results by a metadata key and value pair. Require ' 'volume api version >=3.22. Default=None.') -@utils.service_type('volumev3') def do_snapshot_list(cs, args): """Lists all snapshots.""" all_tenants = (1 if args.tenant else