Merge "Adds CLI support for `glance md-namespace-properties-delete
`"
This commit is contained in:
@@ -27,7 +27,7 @@ md-namespace-delete,image metadef namespace delete,Delete specified metadata def
|
|||||||
md-namespace-import,WONTFIX,Import a metadata definitions namespace from file or standard input.
|
md-namespace-import,WONTFIX,Import a metadata definitions namespace from file or standard input.
|
||||||
md-namespace-list,image metadef namespace list,List metadata definitions namespaces.
|
md-namespace-list,image metadef namespace list,List metadata definitions namespaces.
|
||||||
md-namespace-objects-delete,image metadef object delete,Delete all metadata definitions objects inside a specific namespace.
|
md-namespace-objects-delete,image metadef object delete,Delete all metadata definitions objects inside a specific namespace.
|
||||||
md-namespace-properties-delete,,Delete all metadata definitions property inside a specific namespace.
|
md-namespace-properties-delete,image metadef property delete,Delete all metadata definitions property inside a specific namespace.
|
||||||
md-namespace-resource-type-list,image metadef resource type association list,List resource types associated to specific namespace.
|
md-namespace-resource-type-list,image metadef resource type association list,List resource types associated to specific namespace.
|
||||||
md-namespace-show,image metadef namespace show,Describe a specific metadata definitions namespace.
|
md-namespace-show,image metadef namespace show,Describe a specific metadata definitions namespace.
|
||||||
md-namespace-tags-delete,,Delete all metadata definitions tags inside a specific namespace.
|
md-namespace-tags-delete,,Delete all metadata definitions tags inside a specific namespace.
|
||||||
|
|
@@ -124,14 +124,21 @@ class DeleteMetadefProperty(command.Command):
|
|||||||
parser.add_argument(
|
parser.add_argument(
|
||||||
"properties",
|
"properties",
|
||||||
metavar="<property>",
|
metavar="<property>",
|
||||||
nargs="+",
|
nargs="*",
|
||||||
help=_("Metadef propert(ies) to delete (name)"),
|
help=_(
|
||||||
|
"Metadef properties to delete (name) "
|
||||||
|
"(omit this argument to delete all properties in the namespace)"
|
||||||
|
),
|
||||||
)
|
)
|
||||||
return parser
|
return parser
|
||||||
|
|
||||||
def take_action(self, parsed_args):
|
def take_action(self, parsed_args):
|
||||||
image_client = self.app.client_manager.image
|
image_client = self.app.client_manager.image
|
||||||
|
|
||||||
|
if not parsed_args.properties:
|
||||||
|
image_client.delete_all_metadef_properties(parsed_args.namespace)
|
||||||
|
return
|
||||||
|
|
||||||
result = 0
|
result = 0
|
||||||
for prop in parsed_args.properties:
|
for prop in parsed_args.properties:
|
||||||
try:
|
try:
|
||||||
|
@@ -91,6 +91,7 @@ class TestMetadefPropertyDelete(image_fakes.TestImagev2):
|
|||||||
super().setUp()
|
super().setUp()
|
||||||
|
|
||||||
self.cmd = metadef_properties.DeleteMetadefProperty(self.app, None)
|
self.cmd = metadef_properties.DeleteMetadefProperty(self.app, None)
|
||||||
|
self.image_client.delete_all_metadef_properties.return_value = None
|
||||||
|
|
||||||
def test_metadef_property_delete(self):
|
def test_metadef_property_delete(self):
|
||||||
arglist = ['namespace', 'property']
|
arglist = ['namespace', 'property']
|
||||||
@@ -100,6 +101,10 @@ class TestMetadefPropertyDelete(image_fakes.TestImagev2):
|
|||||||
result = self.cmd.take_action(parsed_args)
|
result = self.cmd.take_action(parsed_args)
|
||||||
|
|
||||||
self.assertIsNone(result)
|
self.assertIsNone(result)
|
||||||
|
self.image_client.delete_metadef_property.assert_called_with(
|
||||||
|
'property', 'namespace', ignore_missing=False
|
||||||
|
)
|
||||||
|
self.image_client.delete_all_metadef_properties.assert_not_called()
|
||||||
|
|
||||||
def test_metadef_property_delete_missing_arguments(self):
|
def test_metadef_property_delete_missing_arguments(self):
|
||||||
arglist = []
|
arglist = []
|
||||||
@@ -110,21 +115,13 @@ class TestMetadefPropertyDelete(image_fakes.TestImagev2):
|
|||||||
arglist,
|
arglist,
|
||||||
[],
|
[],
|
||||||
)
|
)
|
||||||
|
self.image_client.delete_all_metadef_properties.assert_not_called()
|
||||||
arglist = ['namespace']
|
self.image_client.delete_metadef_property.assert_not_called()
|
||||||
self.assertRaises(
|
|
||||||
tests_utils.ParserException,
|
|
||||||
self.check_parser,
|
|
||||||
self.cmd,
|
|
||||||
arglist,
|
|
||||||
[],
|
|
||||||
)
|
|
||||||
|
|
||||||
def test_metadef_property_delete_exception(self):
|
def test_metadef_property_delete_exception(self):
|
||||||
arglist = ['namespace', 'property']
|
arglist = ['namespace', 'property']
|
||||||
verifylist = []
|
verifylist = []
|
||||||
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
|
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
|
||||||
|
|
||||||
self.image_client.delete_metadef_property.side_effect = (
|
self.image_client.delete_metadef_property.side_effect = (
|
||||||
sdk_exceptions.ResourceNotFound
|
sdk_exceptions.ResourceNotFound
|
||||||
)
|
)
|
||||||
@@ -132,6 +129,23 @@ class TestMetadefPropertyDelete(image_fakes.TestImagev2):
|
|||||||
self.assertRaises(
|
self.assertRaises(
|
||||||
exceptions.CommandError, self.cmd.take_action, parsed_args
|
exceptions.CommandError, self.cmd.take_action, parsed_args
|
||||||
)
|
)
|
||||||
|
self.image_client.delete_metadef_property.assert_called_with(
|
||||||
|
'property', 'namespace', ignore_missing=False
|
||||||
|
)
|
||||||
|
self.image_client.delete_all_metadef_properties.assert_not_called()
|
||||||
|
|
||||||
|
def test_metadef_property_delete_all(self):
|
||||||
|
arglist = ['namespace']
|
||||||
|
verifylist = []
|
||||||
|
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
|
||||||
|
|
||||||
|
result = self.cmd.take_action(parsed_args)
|
||||||
|
|
||||||
|
self.assertIsNone(result)
|
||||||
|
self.image_client.delete_all_metadef_properties.assert_called_with(
|
||||||
|
'namespace'
|
||||||
|
)
|
||||||
|
self.image_client.delete_metadef_property.assert_not_called()
|
||||||
|
|
||||||
|
|
||||||
class TestMetadefPropertyList(image_fakes.TestImagev2):
|
class TestMetadefPropertyList(image_fakes.TestImagev2):
|
||||||
|
@@ -0,0 +1,5 @@
|
|||||||
|
---
|
||||||
|
features:
|
||||||
|
- |
|
||||||
|
The ``image property delete`` command will now delete all properties in
|
||||||
|
the provided namespace if no property is provided.
|
Reference in New Issue
Block a user