Merge "Adding SDK support for ``glance md-namespace-properties-delete``"

This commit is contained in:
Zuul 2024-04-10 11:03:48 +00:00 committed by Gerrit Code Review
commit fe18a3bef8
3 changed files with 50 additions and 0 deletions

View File

@ -1525,6 +1525,23 @@ class Proxy(proxy.Proxy):
**query,
)
def delete_all_metadef_properties(self, metadef_namespace):
"""Delete all metadata definitions property inside a specific namespace.
:param metadef_namespace: The value can be either the name of a metadef
namespace or a
:class:`~openstack.image.v2.metadef_namespace.MetadefNamespace`
instance.
:returns: ``None``
:raises: :class:`~openstack.exceptions.ResourceNotFound` when no
resource can be found.
"""
namespace = self._get_resource(
_metadef_namespace.MetadefNamespace, metadef_namespace
)
return namespace.delete_all_properties(self)
# ====== SCHEMAS ======
def get_images_schema(self):
"""Get images schema

View File

@ -10,7 +10,9 @@
# License for the specific language governing permissions and limitations
# under the License.
from openstack import exceptions
from openstack import resource
from openstack import utils
class MetadefNamespace(resource.Resource):
@ -71,3 +73,18 @@ class MetadefNamespace(resource.Resource):
has_body=True,
retry_on_conflict=None,
)
def _delete_all(self, session, url):
response = session.delete(url)
exceptions.raise_from_response(response)
self._translate_response(response, has_body=False)
return self
def delete_all_properties(self, session):
"""Delete all properties in a namespace.
:param session: The session to use for making this request
:returns: The server response
"""
url = utils.urljoin(self.base_path, self.id, 'properties')
return self._delete_all(session, url)

View File

@ -10,6 +10,12 @@
# License for the specific language governing permissions and limitations
# under the License.
from unittest import mock
from keystoneauth1 import adapter
from openstack import exceptions
from openstack.image.v2 import metadef_namespace
from openstack.tests.unit import base
@ -71,3 +77,13 @@ class TestMetadefNamespace(base.TestCase):
},
sot._query_mapping._mapping,
)
@mock.patch.object(exceptions, 'raise_from_response', mock.Mock())
def test_delete_all_properties(self):
sot = metadef_namespace.MetadefNamespace(**EXAMPLE)
session = mock.Mock(spec=adapter.Adapter)
sot._translate_response = mock.Mock()
sot.delete_all_properties(session)
session.delete.assert_called_with(
'metadefs/namespaces/OS::Cinder::Volumetype/properties'
)