From 27c8b6262ad227ef7593402f86f2793b8f1a4c23 Mon Sep 17 00:00:00 2001 From: Julian Bigler Date: Wed, 24 Dec 2025 16:23:08 +0100 Subject: [PATCH] add basic support for metadata endpoint --- src/rgw_admin/__init__.py | 11 ++++++++++- src/rgw_admin/schema.py | 2 ++ 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/src/rgw_admin/__init__.py b/src/rgw_admin/__init__.py index 4dbcf46..82ed6e8 100644 --- a/src/rgw_admin/__init__.py +++ b/src/rgw_admin/__init__.py @@ -50,6 +50,8 @@ def __init__(self, response): class AdminClient: + metadata_types = ["user", "bucket", "bucket.instance"] + def __init__( self, url, access_key, secret_key, *, verify_cert=True, redundant_url=None ): @@ -108,7 +110,7 @@ def _delete(self, *args, **kwargs): self._request("delete", *args, **kwargs) def list_user_ids(self): - return self._get("metadata/user") + return self.get_metadata("user") def get_config(self): return self._get("config") @@ -119,6 +121,13 @@ def get_zone_groups(self): def get_period(self): return self._get("realm/period") + def get_metadata(self, metadata_type, key=None): + if metadata_type not in self.metadata_types: + raise Exception("Invalid metadata_type") + + params = {"key": key} if key else {} + return self._get(f"metadata/{metadata_type}", params=params) + @overload def get_user(self, user_id: str) -> serialization.User: ... diff --git a/src/rgw_admin/schema.py b/src/rgw_admin/schema.py index 3476ddb..de54f9b 100644 --- a/src/rgw_admin/schema.py +++ b/src/rgw_admin/schema.py @@ -5,6 +5,8 @@ class SchemaMeta(type): + + @override @classmethod def __prepare__(self, name, bases): return collections.OrderedDict()