From 00af14b3f207db101b08ff9add5bab03a70da8b8 Mon Sep 17 00:00:00 2001 From: Rajat Dhasmana Date: Wed, 15 May 2024 06:30:22 +0530 Subject: [PATCH] Add DeleteVolume class to v3 This is done to support the volume unmanage command. Change-Id: Ib59b1f599be152a25c4b6a31988c28079f552ba9 --- openstackclient/volume/v3/volume.py | 39 +++++++++++++++++++++++++++++ setup.cfg | 2 +- 2 files changed, 40 insertions(+), 1 deletion(-) diff --git a/openstackclient/volume/v3/volume.py b/openstackclient/volume/v3/volume.py index b73b3b2ee3..75d8f9ad24 100644 --- a/openstackclient/volume/v3/volume.py +++ b/openstackclient/volume/v3/volume.py @@ -237,3 +237,42 @@ class CreateVolume(volume_v2.CreateVolume): return zip(*sorted(volume.items())) return self._take_action(parsed_args) + + +class DeleteVolume(volume_v2.DeleteVolume): + _description = _("Delete volume(s)") + + def get_parser(self, prog_name): + parser = super().get_parser(prog_name) + return parser + + def take_action(self, parsed_args): + volume_client = self.app.client_manager.volume + result = 0 + + for i in parsed_args.volumes: + try: + volume_obj = utils.find_resource(volume_client.volumes, i) + if parsed_args.force: + volume_client.volumes.force_delete(volume_obj.id) + else: + volume_client.volumes.delete( + volume_obj.id, cascade=parsed_args.purge + ) + except Exception as e: + result += 1 + LOG.error( + _( + "Failed to delete volume with " + "name or ID '%(volume)s': %(e)s" + ), + {'volume': i, 'e': e}, + ) + + if result > 0: + total = len(parsed_args.volumes) + msg = _("%(result)s of %(total)s volumes failed " "to delete.") % { + 'result': result, + 'total': total, + } + raise exceptions.CommandError(msg) diff --git a/setup.cfg b/setup.cfg index 0bca7c1e6e..093bfe7a10 100644 --- a/setup.cfg +++ b/setup.cfg @@ -766,7 +766,7 @@ openstack.volume.v3 = consistency_group_snapshot_show = openstackclient.volume.v2.consistency_group_snapshot:ShowConsistencyGroupSnapshot volume_create = openstackclient.volume.v3.volume:CreateVolume - volume_delete = openstackclient.volume.v2.volume:DeleteVolume + volume_delete = openstackclient.volume.v3.volume:DeleteVolume volume_list = openstackclient.volume.v2.volume:ListVolume volume_migrate = openstackclient.volume.v2.volume:MigrateVolume volume_set = openstackclient.volume.v2.volume:SetVolume