Skip to content

Commit cebf4d7

Browse files
eharneystephenfin
andcommitted
Rename openstack volume delete --purge -> --cascade
This flag is called "cascade" in the Cinder API. The flag "purge" doesn't really communicate an obvious meaning in the context of volume deletion. It also has the danger of implying some kind of behavior about volume wiping that does not exist. Rename this flag to "--cascade" and preserve "--purge" as a hidden flag for compatibility. Change-Id: I8de27811222c17155697073fb9c512746d009266 Signed-off-by: Eric Harney <eharney@redhat.com> Co-authored-by: Stephen Finucane <stephenfin@redhat.com>
1 parent 6439906 commit cebf4d7

5 files changed

Lines changed: 63 additions & 22 deletions

File tree

openstackclient/tests/unit/volume/v2/test_volume.py

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -655,7 +655,7 @@ def test_volume_delete_one_volume(self):
655655
arglist = [self.volumes[0].id]
656656
verifylist = [
657657
("force", False),
658-
("purge", False),
658+
("cascade", False),
659659
("volumes", [self.volumes[0].id]),
660660
]
661661
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
@@ -674,7 +674,7 @@ def test_volume_delete_multi_volumes(self):
674674
arglist = [v.id for v in self.volumes]
675675
verifylist = [
676676
('force', False),
677-
('purge', False),
677+
('cascade', False),
678678
('volumes', arglist),
679679
]
680680
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
@@ -701,7 +701,7 @@ def test_volume_delete_multi_volumes_with_exception(self):
701701
]
702702
verifylist = [
703703
('force', False),
704-
('purge', False),
704+
('cascade', False),
705705
('volumes', [self.volumes[0].id, 'unexist_volume']),
706706
]
707707
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
@@ -732,7 +732,7 @@ def test_volume_delete_with_purge(self):
732732
]
733733
verifylist = [
734734
('force', False),
735-
('purge', True),
735+
('cascade', True),
736736
('volumes', [self.volumes[0].id]),
737737
]
738738
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
@@ -754,7 +754,7 @@ def test_volume_delete_with_force(self):
754754
]
755755
verifylist = [
756756
('force', True),
757-
('purge', False),
757+
('cascade', False),
758758
('volumes', [self.volumes[0].id]),
759759
]
760760
parsed_args = self.check_parser(self.cmd, arglist, verifylist)

openstackclient/tests/unit/volume/v3/test_volume.py

Lines changed: 32 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -912,7 +912,7 @@ def test_volume_delete_one_volume(self):
912912
arglist = [self.volumes[0].id]
913913
verifylist = [
914914
("force", False),
915-
("purge", False),
915+
("cascade", False),
916916
("volumes", [self.volumes[0].id]),
917917
]
918918
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
@@ -931,7 +931,7 @@ def test_volume_delete_multi_volumes(self):
931931
arglist = [v.id for v in self.volumes]
932932
verifylist = [
933933
('force', False),
934-
('purge', False),
934+
('cascade', False),
935935
('volumes', arglist),
936936
]
937937
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
@@ -958,7 +958,7 @@ def test_volume_delete_multi_volumes_with_exception(self):
958958
]
959959
verifylist = [
960960
('force', False),
961-
('purge', False),
961+
('cascade', False),
962962
('volumes', [self.volumes[0].id, 'unexist_volume']),
963963
]
964964
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
@@ -989,7 +989,29 @@ def test_volume_delete_with_purge(self):
989989
]
990990
verifylist = [
991991
('force', False),
992-
('purge', True),
992+
('cascade', True),
993+
('volumes', [self.volumes[0].id]),
994+
]
995+
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
996+
997+
result = self.cmd.take_action(parsed_args)
998+
self.assertIsNone(result)
999+
1000+
self.volume_sdk_client.find_volume.assert_called_once_with(
1001+
self.volumes[0].id, ignore_missing=False
1002+
)
1003+
self.volume_sdk_client.delete_volume.assert_called_once_with(
1004+
self.volumes[0].id, cascade=True, force=False
1005+
)
1006+
1007+
def test_volume_delete_with_cascade(self):
1008+
arglist = [
1009+
'--cascade',
1010+
self.volumes[0].id,
1011+
]
1012+
verifylist = [
1013+
('force', False),
1014+
('cascade', True),
9931015
('volumes', [self.volumes[0].id]),
9941016
]
9951017
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
@@ -1011,7 +1033,7 @@ def test_volume_delete_with_force(self):
10111033
]
10121034
verifylist = [
10131035
('force', True),
1014-
('purge', False),
1036+
('cascade', False),
10151037
('volumes', [self.volumes[0].id]),
10161038
]
10171039
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
@@ -1031,7 +1053,7 @@ def test_volume_delete_remote(self):
10311053
verifylist = [
10321054
("remote", True),
10331055
("force", False),
1034-
("purge", False),
1056+
("cascade", False),
10351057
("volumes", [self.volumes[0].id]),
10361058
]
10371059
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
@@ -1052,7 +1074,7 @@ def test_volume_delete_multi_volumes_remote(self):
10521074
verifylist = [
10531075
('remote', True),
10541076
('force', False),
1055-
('purge', False),
1077+
('cascade', False),
10561078
('volumes', arglist[1:]),
10571079
]
10581080
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
@@ -1077,7 +1099,6 @@ def test_volume_delete_remote_with_purge(self):
10771099
verifylist = [
10781100
('remote', True),
10791101
('force', False),
1080-
('purge', True),
10811102
('volumes', [self.volumes[0].id]),
10821103
]
10831104

@@ -1086,7 +1107,7 @@ def test_volume_delete_remote_with_purge(self):
10861107
exceptions.CommandError, self.cmd.take_action, parsed_args
10871108
)
10881109
self.assertIn(
1089-
"The --force and --purge options are not supported with the "
1110+
"The --force and --cascade options are not supported with the "
10901111
"--remote parameter.",
10911112
str(exc),
10921113
)
@@ -1104,7 +1125,7 @@ def test_volume_delete_remote_with_force(self):
11041125
verifylist = [
11051126
('remote', True),
11061127
('force', True),
1107-
('purge', False),
1128+
('cascade', False),
11081129
('volumes', [self.volumes[0].id]),
11091130
]
11101131

@@ -1113,7 +1134,7 @@ def test_volume_delete_remote_with_force(self):
11131134
exceptions.CommandError, self.cmd.take_action, parsed_args
11141135
)
11151136
self.assertIn(
1116-
"The --force and --purge options are not supported with the "
1137+
"The --force and --cascade options are not supported with the "
11171138
"--remote parameter.",
11181139
str(exc),
11191140
)

openstackclient/volume/v2/volume.py

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -390,12 +390,19 @@ def get_parser(self, prog_name):
390390
),
391391
)
392392
group.add_argument(
393-
"--purge",
393+
"--cascade",
394394
action="store_true",
395395
help=_(
396396
"Remove any snapshots along with volume(s) (defaults to False)"
397397
),
398398
)
399+
group.add_argument(
400+
# now called "cascade", accept old arg for compatibility
401+
"--purge",
402+
action="store_true",
403+
help=argparse.SUPPRESS,
404+
dest='cascade',
405+
)
399406
return parser
400407

401408
def take_action(self, parsed_args):
@@ -410,7 +417,7 @@ def take_action(self, parsed_args):
410417
volume_client.delete_volume(
411418
volume_obj.id,
412419
force=parsed_args.force,
413-
cascade=parsed_args.purge,
420+
cascade=parsed_args.cascade,
414421
)
415422
except Exception as e:
416423
result += 1

openstackclient/volume/v3/volume.py

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -515,12 +515,19 @@ def get_parser(self, prog_name):
515515
),
516516
)
517517
group.add_argument(
518-
"--purge",
518+
"--cascade",
519519
action="store_true",
520520
help=_(
521521
"Remove any snapshots along with volume(s) (defaults to False)"
522522
),
523523
)
524+
group.add_argument(
525+
# now called "cascade", accept old arg for compatibility
526+
"--purge",
527+
action="store_true",
528+
help=argparse.SUPPRESS,
529+
dest='cascade',
530+
)
524531
parser.add_argument(
525532
'--remote',
526533
action='store_true',
@@ -532,9 +539,9 @@ def take_action(self, parsed_args):
532539
volume_client = self.app.client_manager.sdk_connection.volume
533540
result = 0
534541

535-
if parsed_args.remote and (parsed_args.force or parsed_args.purge):
542+
if parsed_args.remote and (parsed_args.force or parsed_args.cascade):
536543
msg = _(
537-
"The --force and --purge options are not "
544+
"The --force and --cascade options are not "
538545
"supported with the --remote parameter."
539546
)
540547
raise exceptions.CommandError(msg)
@@ -550,7 +557,7 @@ def take_action(self, parsed_args):
550557
volume_client.delete_volume(
551558
volume_obj.id,
552559
force=parsed_args.force,
553-
cascade=parsed_args.purge,
560+
cascade=parsed_args.cascade,
554561
)
555562
except Exception as e:
556563
result += 1
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
---
2+
upgrade:
3+
- |
4+
The ``--purge`` argument to the ``volume delete`` command has been renamed
5+
to ``--cascade`` to better match the Cinder API and the meaning of what
6+
this argument does. An alias is provided for backwards compatibility.

0 commit comments

Comments
 (0)