summaryrefslogtreecommitdiff
path: root/openstackclient/volume
diff options
context:
space:
mode:
authorSheel Rana <ranasheel2000@gmail.com>2016-04-16 23:00:00 +0530
committerSheel Rana <ranasheel2000@gmail.com>2016-04-16 23:01:19 +0530
commit92950b6f5fcaae972ef51235223394b501844354 (patch)
treec7b40ffa52f6d3fe833d8c15d4dcbd84ebd640aa /openstackclient/volume
parente80048de09044adad3ad7bd8d323b025856bf94e (diff)
downloadpython-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.py46
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")