diff options
Diffstat (limited to 'openstackclient/volume')
| -rw-r--r-- | openstackclient/volume/v1/backup.py | 1 | ||||
| -rw-r--r-- | openstackclient/volume/v1/snapshot.py | 3 | ||||
| -rw-r--r-- | openstackclient/volume/v2/backup.py | 1 | ||||
| -rw-r--r-- | openstackclient/volume/v2/snapshot.py | 3 | ||||
| -rw-r--r-- | openstackclient/volume/v2/volume.py | 2 | ||||
| -rw-r--r-- | openstackclient/volume/v2/volume_type.py | 102 |
6 files changed, 95 insertions, 17 deletions
diff --git a/openstackclient/volume/v1/backup.py b/openstackclient/volume/v1/backup.py index 32f39fb5..40b60315 100644 --- a/openstackclient/volume/v1/backup.py +++ b/openstackclient/volume/v1/backup.py @@ -41,7 +41,6 @@ class CreateBackup(command.ShowOne): parser.add_argument( '--name', metavar='<name>', - required=False, help='Name of the backup', ) parser.add_argument( diff --git a/openstackclient/volume/v1/snapshot.py b/openstackclient/volume/v1/snapshot.py index 95200e40..6c6131ea 100644 --- a/openstackclient/volume/v1/snapshot.py +++ b/openstackclient/volume/v1/snapshot.py @@ -36,7 +36,6 @@ class CreateSnapshot(command.ShowOne): parser.add_argument( '--name', metavar='<name>', - required=True, help='Name of the snapshot', ) parser.add_argument( @@ -250,7 +249,7 @@ class UnsetSnapshot(command.Command): action='append', default=[], help='Property to remove from snapshot ' - '(repeat to remove multiple values)', + '(repeat option to remove multiple properties)', required=True, ) return parser diff --git a/openstackclient/volume/v2/backup.py b/openstackclient/volume/v2/backup.py index 64ca97ae..016a414c 100644 --- a/openstackclient/volume/v2/backup.py +++ b/openstackclient/volume/v2/backup.py @@ -35,7 +35,6 @@ class CreateBackup(command.ShowOne): parser.add_argument( "--name", metavar="<name>", - required=True, help="Name of the backup" ) parser.add_argument( diff --git a/openstackclient/volume/v2/snapshot.py b/openstackclient/volume/v2/snapshot.py index 4d00b726..f124a5e2 100644 --- a/openstackclient/volume/v2/snapshot.py +++ b/openstackclient/volume/v2/snapshot.py @@ -36,7 +36,6 @@ class CreateSnapshot(command.ShowOne): parser.add_argument( "--name", metavar="<name>", - required=True, help="Name of the snapshot" ) parser.add_argument( @@ -241,7 +240,7 @@ class UnsetSnapshot(command.Command): action='append', default=[], help='Property to remove from snapshot ' - '(repeat to remove multiple values)', + '(repeat option to remove multiple properties)', ) return parser diff --git a/openstackclient/volume/v2/volume.py b/openstackclient/volume/v2/volume.py index 5b7511e8..5a739f61 100644 --- a/openstackclient/volume/v2/volume.py +++ b/openstackclient/volume/v2/volume.py @@ -110,7 +110,7 @@ class CreateVolume(command.ShowOne): snapshot = None if parsed_args.snapshot: snapshot = utils.find_resource( - volume_client.snapshots, + volume_client.volume_snapshots, parsed_args.snapshot).id project = None diff --git a/openstackclient/volume/v2/volume_type.py b/openstackclient/volume/v2/volume_type.py index 5509ac52..30500518 100644 --- a/openstackclient/volume/v2/volume_type.py +++ b/openstackclient/volume/v2/volume_type.py @@ -17,8 +17,10 @@ import six from openstackclient.common import command +from openstackclient.common import exceptions from openstackclient.common import parseractions from openstackclient.common import utils +from openstackclient.identity import common as identity_common class CreateVolumeType(command.ShowOne): @@ -55,7 +57,7 @@ class CreateVolumeType(command.ShowOne): '--property', metavar='<key=value>', action=parseractions.KeyValueAction, - help='Set a property on this volume type' + help='Set a property on this volume type ' '(repeat option to set multiple properties)', ) return parser @@ -156,19 +158,30 @@ class SetVolumeType(command.Command): help='Set a property on this volume type ' '(repeat option to set multiple properties)', ) + parser.add_argument( + '--project', + metavar='<project>', + help='Set 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) if (not parsed_args.name and not parsed_args.description - and not parsed_args.property): + and not parsed_args.property + and not parsed_args.project): self.app.log.error("No changes requested\n") return + result = 0 kwargs = {} if parsed_args.name: kwargs['name'] = parsed_args.name @@ -176,13 +189,42 @@ class SetVolumeType(command.Command): kwargs['description'] = parsed_args.description if kwargs: - volume_client.volume_types.update( - volume_type.id, - **kwargs - ) + try: + volume_client.volume_types.update( + volume_type.id, + **kwargs + ) + except Exception as e: + self.app.log.error("Failed to update volume type name or" + " description: " + str(e)) + result += 1 if parsed_args.property: - volume_type.set_keys(parsed_args.property) + try: + volume_type.set_keys(parsed_args.property) + except Exception as e: + self.app.log.error("Failed to set 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.add_project_access( + volume_type.id, project_info.id) + except Exception as e: + self.app.log.error("Failed to set volume type access to" + " project: " + str(e)) + result += 1 + + if result > 0: + raise exceptions.CommandError("Command Failed: One or more of the" + " operations failed") class ShowVolumeType(command.ShowOne): @@ -219,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") |
