Skip to content

Commit 6ba9473

Browse files
Zuulopenstack-gerrit
authored andcommitted
Merge "Adds CLI support for glance md-namespace-properties-delete"
2 parents ae7e844 + 2177f07 commit 6ba9473

File tree

4 files changed

+39
-13
lines changed

4 files changed

+39
-13
lines changed

doc/source/cli/data/glance.csv

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ md-namespace-delete,image metadef namespace delete,Delete specified metadata def
2727
md-namespace-import,WONTFIX,Import a metadata definitions namespace from file or standard input.
2828
md-namespace-list,image metadef namespace list,List metadata definitions namespaces.
2929
md-namespace-objects-delete,image metadef object delete,Delete all metadata definitions objects inside a specific namespace.
30-
md-namespace-properties-delete,,Delete all metadata definitions property inside a specific namespace.
30+
md-namespace-properties-delete,image metadef property delete,Delete all metadata definitions property inside a specific namespace.
3131
md-namespace-resource-type-list,image metadef resource type association list,List resource types associated to specific namespace.
3232
md-namespace-show,image metadef namespace show,Describe a specific metadata definitions namespace.
3333
md-namespace-tags-delete,,Delete all metadata definitions tags inside a specific namespace.

openstackclient/image/v2/metadef_properties.py

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -124,14 +124,21 @@ def get_parser(self, prog_name):
124124
parser.add_argument(
125125
"properties",
126126
metavar="<property>",
127-
nargs="+",
128-
help=_("Metadef propert(ies) to delete (name)"),
127+
nargs="*",
128+
help=_(
129+
"Metadef properties to delete (name) "
130+
"(omit this argument to delete all properties in the namespace)"
131+
),
129132
)
130133
return parser
131134

132135
def take_action(self, parsed_args):
133136
image_client = self.app.client_manager.image
134137

138+
if not parsed_args.properties:
139+
image_client.delete_all_metadef_properties(parsed_args.namespace)
140+
return
141+
135142
result = 0
136143
for prop in parsed_args.properties:
137144
try:

openstackclient/tests/unit/image/v2/test_metadef_properties.py

Lines changed: 24 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -91,6 +91,7 @@ def setUp(self):
9191
super().setUp()
9292

9393
self.cmd = metadef_properties.DeleteMetadefProperty(self.app, None)
94+
self.image_client.delete_all_metadef_properties.return_value = None
9495

9596
def test_metadef_property_delete(self):
9697
arglist = ['namespace', 'property']
@@ -100,6 +101,10 @@ def test_metadef_property_delete(self):
100101
result = self.cmd.take_action(parsed_args)
101102

102103
self.assertIsNone(result)
104+
self.image_client.delete_metadef_property.assert_called_with(
105+
'property', 'namespace', ignore_missing=False
106+
)
107+
self.image_client.delete_all_metadef_properties.assert_not_called()
103108

104109
def test_metadef_property_delete_missing_arguments(self):
105110
arglist = []
@@ -110,28 +115,37 @@ def test_metadef_property_delete_missing_arguments(self):
110115
arglist,
111116
[],
112117
)
113-
114-
arglist = ['namespace']
115-
self.assertRaises(
116-
tests_utils.ParserException,
117-
self.check_parser,
118-
self.cmd,
119-
arglist,
120-
[],
121-
)
118+
self.image_client.delete_all_metadef_properties.assert_not_called()
119+
self.image_client.delete_metadef_property.assert_not_called()
122120

123121
def test_metadef_property_delete_exception(self):
124122
arglist = ['namespace', 'property']
125123
verifylist = []
126124
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
127-
128125
self.image_client.delete_metadef_property.side_effect = (
129126
sdk_exceptions.ResourceNotFound
130127
)
131128

132129
self.assertRaises(
133130
exceptions.CommandError, self.cmd.take_action, parsed_args
134131
)
132+
self.image_client.delete_metadef_property.assert_called_with(
133+
'property', 'namespace', ignore_missing=False
134+
)
135+
self.image_client.delete_all_metadef_properties.assert_not_called()
136+
137+
def test_metadef_property_delete_all(self):
138+
arglist = ['namespace']
139+
verifylist = []
140+
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
141+
142+
result = self.cmd.take_action(parsed_args)
143+
144+
self.assertIsNone(result)
145+
self.image_client.delete_all_metadef_properties.assert_called_with(
146+
'namespace'
147+
)
148+
self.image_client.delete_metadef_property.assert_not_called()
135149

136150

137151
class TestMetadefPropertyList(image_fakes.TestImagev2):
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
features:
3+
- |
4+
The ``image property delete`` command will now delete all properties in
5+
the provided namespace if no property is provided.

0 commit comments

Comments
 (0)