diff options
| author | Jenkins <jenkins@review.openstack.org> | 2017-01-11 23:12:38 +0000 |
|---|---|---|
| committer | Gerrit Code Review <review@openstack.org> | 2017-01-11 23:12:38 +0000 |
| commit | 3c031bbb6873db077ae155ddf7d31d19b712c26f (patch) | |
| tree | 9ce8770cddc738bd4c106aa3df94706e1bf9337e /openstackclient/volume/v2 | |
| parent | 365d4c9ef8049fc2a7840e707748e2beefbe0d31 (diff) | |
| parent | 2f2603d90896d0765e1bb2bb1cfb223fdba75835 (diff) | |
| download | python-openstackclient-3c031bbb6873db077ae155ddf7d31d19b712c26f.tar.gz | |
Merge "Add two consistency group commands"
Diffstat (limited to 'openstackclient/volume/v2')
| -rw-r--r-- | openstackclient/volume/v2/consistency_group.py | 92 |
1 files changed, 92 insertions, 0 deletions
diff --git a/openstackclient/volume/v2/consistency_group.py b/openstackclient/volume/v2/consistency_group.py index 2f4f3c95..0a932f84 100644 --- a/openstackclient/volume/v2/consistency_group.py +++ b/openstackclient/volume/v2/consistency_group.py @@ -27,6 +27,60 @@ from openstackclient.i18n import _ LOG = logging.getLogger(__name__) +def _find_volumes(parsed_args_volumes, volume_client): + result = 0 + uuid = '' + for volume in parsed_args_volumes: + try: + volume_id = utils.find_resource( + volume_client.volumes, volume).id + uuid += volume_id + ',' + except Exception as e: + result += 1 + LOG.error(_("Failed to find volume with " + "name or ID '%(volume)s':%(e)s") + % {'volume': volume, 'e': e}) + + return result, uuid + + +class AddVolumeToConsistencyGroup(command.Command): + _description = _("Add volume(s) to consistency group") + + def get_parser(self, prog_name): + parser = super(AddVolumeToConsistencyGroup, self).get_parser(prog_name) + parser.add_argument( + 'consistency_group', + metavar="<consistency-group>", + help=_('Consistency group to contain <volume> (name or ID)'), + ) + parser.add_argument( + 'volumes', + metavar='<volume>', + nargs='+', + help=_('Volume(s) to add to <consistency-group> (name or ID) ' + '(repeat option to add multiple volumes)'), + ) + return parser + + def take_action(self, parsed_args): + volume_client = self.app.client_manager.volume + result, add_uuid = _find_volumes(parsed_args.volumes, volume_client) + + if result > 0: + total = len(parsed_args.volumes) + LOG.error(_("%(result)s of %(total)s volumes failed " + "to add.") % {'result': result, 'total': total}) + + if add_uuid: + add_uuid = add_uuid.rstrip(',') + consistency_group_id = utils.find_resource( + volume_client.consistencygroups, + parsed_args.consistency_group).id + volume_client.consistencygroups.update( + consistency_group_id, add_volumes=add_uuid) + + class CreateConsistencyGroup(command.ShowOne): _description = _("Create new consistency group.") @@ -188,6 +242,44 @@ class ListConsistencyGroup(command.Lister): for s in consistency_groups)) +class RemoveVolumeFromConsistencyGroup(command.Command): + _description = _("Remove volume(s) from consistency group") + + def get_parser(self, prog_name): + parser = \ + super(RemoveVolumeFromConsistencyGroup, self).get_parser(prog_name) + parser.add_argument( + 'consistency_group', + metavar="<consistency-group>", + help=_('Consistency group containing <volume> (name or ID)'), + ) + parser.add_argument( + 'volumes', + metavar='<volume>', + nargs='+', + help=_('Volume(s) to remove from <consistency-group> (name or ID) ' + '(repeat option to remove multiple volumes)'), + ) + return parser + + def take_action(self, parsed_args): + volume_client = self.app.client_manager.volume + result, remove_uuid = _find_volumes(parsed_args.volumes, volume_client) + + if result > 0: + total = len(parsed_args.volumes) + LOG.error(_("%(result)s of %(total)s volumes failed " + "to remove.") % {'result': result, 'total': total}) + + if remove_uuid: + remove_uuid = remove_uuid.rstrip(',') + consistency_group_id = utils.find_resource( + volume_client.consistencygroups, + parsed_args.consistency_group).id + volume_client.consistencygroups.update( + consistency_group_id, remove_volumes=remove_uuid) + + class SetConsistencyGroup(command.Command): _description = _("Set consistency group properties") |
