Skip to content

Commit 00af14b

Browse files
committed
Add DeleteVolume class to v3
This is done to support the volume unmanage command. Change-Id: Ib59b1f599be152a25c4b6a31988c28079f552ba9
1 parent cc7773f commit 00af14b

2 files changed

Lines changed: 40 additions & 1 deletion

File tree

openstackclient/volume/v3/volume.py

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -237,3 +237,42 @@ def take_action(self, parsed_args):
237237
return zip(*sorted(volume.items()))
238238

239239
return self._take_action(parsed_args)
240+
241+
242+
class DeleteVolume(volume_v2.DeleteVolume):
243+
_description = _("Delete volume(s)")
244+
245+
def get_parser(self, prog_name):
246+
parser = super().get_parser(prog_name)
247+
return parser
248+
249+
def take_action(self, parsed_args):
250+
volume_client = self.app.client_manager.volume
251+
result = 0
252+
253+
for i in parsed_args.volumes:
254+
try:
255+
volume_obj = utils.find_resource(volume_client.volumes, i)
256+
if parsed_args.force:
257+
volume_client.volumes.force_delete(volume_obj.id)
258+
else:
259+
volume_client.volumes.delete(
260+
volume_obj.id, cascade=parsed_args.purge
261+
)
262+
except Exception as e:
263+
result += 1
264+
LOG.error(
265+
_(
266+
"Failed to delete volume with "
267+
"name or ID '%(volume)s': %(e)s"
268+
),
269+
{'volume': i, 'e': e},
270+
)
271+
272+
if result > 0:
273+
total = len(parsed_args.volumes)
274+
msg = _("%(result)s of %(total)s volumes failed " "to delete.") % {
275+
'result': result,
276+
'total': total,
277+
}
278+
raise exceptions.CommandError(msg)

setup.cfg

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -766,7 +766,7 @@ openstack.volume.v3 =
766766
consistency_group_snapshot_show = openstackclient.volume.v2.consistency_group_snapshot:ShowConsistencyGroupSnapshot
767767

768768
volume_create = openstackclient.volume.v3.volume:CreateVolume
769-
volume_delete = openstackclient.volume.v2.volume:DeleteVolume
769+
volume_delete = openstackclient.volume.v3.volume:DeleteVolume
770770
volume_list = openstackclient.volume.v2.volume:ListVolume
771771
volume_migrate = openstackclient.volume.v2.volume:MigrateVolume
772772
volume_set = openstackclient.volume.v2.volume:SetVolume

0 commit comments

Comments
 (0)