diff options
| author | Sheel Rana <ranasheel2000@gmail.com> | 2016-04-16 23:00:00 +0530 |
|---|---|---|
| committer | Sheel Rana <ranasheel2000@gmail.com> | 2016-04-16 23:01:19 +0530 |
| commit | 92950b6f5fcaae972ef51235223394b501844354 (patch) | |
| tree | c7b40ffa52f6d3fe833d8c15d4dcbd84ebd640aa /openstackclient/volume | |
| parent | e80048de09044adad3ad7bd8d323b025856bf94e (diff) | |
| download | python-openstackclient-92950b6f5fcaae972ef51235223394b501844354.tar.gz | |
Add support for removing volume-type-access
OSC does not support to remove volume type access to project.
This feature will provide support to remove volume type access
from project.
Closes-Bug:#1554890
Implements: bp cinder-command-support
Change-Id: I029a4292da05f028e8937962cb845ec6e00b0279
Diffstat (limited to 'openstackclient/volume')
| -rw-r--r-- | openstackclient/volume/v2/volume_type.py | 46 |
1 files changed, 43 insertions, 3 deletions
diff --git a/openstackclient/volume/v2/volume_type.py b/openstackclient/volume/v2/volume_type.py index 203974da..30500518 100644 --- a/openstackclient/volume/v2/volume_type.py +++ b/openstackclient/volume/v2/volume_type.py @@ -261,17 +261,57 @@ class UnsetVolumeType(command.Command): parser.add_argument( '--property', metavar='<key>', - default=[], - required=True, help='Remove a property from this volume type ' '(repeat option to remove multiple properties)', ) + parser.add_argument( + '--project', + metavar='<project>', + help='Removes volume type access to project (name or ID) ' + ' (admin only)', + ) + identity_common.add_project_domain_option_to_parser(parser) + return parser def take_action(self, parsed_args): volume_client = self.app.client_manager.volume + identity_client = self.app.client_manager.identity + volume_type = utils.find_resource( volume_client.volume_types, parsed_args.volume_type, ) - volume_type.unset_keys(parsed_args.property) + + if (not parsed_args.property + and not parsed_args.project): + self.app.log.error("No changes requested\n") + return + + result = 0 + if parsed_args.property: + try: + volume_type.unset_keys(parsed_args.property) + except Exception as e: + self.app.log.error("Failed to unset volume type property: " + + str(e)) + result += 1 + + if parsed_args.project: + project_info = None + try: + project_info = identity_common.find_project( + identity_client, + parsed_args.project, + parsed_args.project_domain) + + volume_client.volume_type_access.remove_project_access( + volume_type.id, project_info.id) + except Exception as e: + self.app.log.error("Failed to remove volume type access from" + " project: " + str(e)) + result += 1 + + if result > 0: + raise exceptions.CommandError("Command Failed: One or more of the" + " operations failed") |
