From 24874dfdf89a88b03b39b964741aa00be35690a4 Mon Sep 17 00:00:00 2001 From: Yehuda Sadeh Date: Thu, 28 Oct 2021 07:15:58 -0700 Subject: [PATCH] mgr/rgw: pass realm_id via token Add realm_id to token. Also, use realm_id from token instead of requiring realm_name for command that uses realm token. Signed-off-by: Yehuda Sadeh --- src/pybind/mgr/rgw/module.py | 3 +-- src/pybind/mgr/rgw/rgwam.py | 9 +++++---- src/pybind/mgr/rgw/types.py | 5 ++++- 3 files changed, 10 insertions(+), 7 deletions(-) diff --git a/src/pybind/mgr/rgw/module.py b/src/pybind/mgr/rgw/module.py index c48da3302afe8..ac3a24c29152b 100644 --- a/src/pybind/mgr/rgw/module.py +++ b/src/pybind/mgr/rgw/module.py @@ -141,12 +141,11 @@ class Module(orchestrator.OrchestratorClientMixin, MgrModule): @CLICommand('rgw realm remove zone-creds', perm='rw') def _cmd_rgw_realm_rm_zone_creds(self, - realm_name: Optional[str] = None, realm_token : Optional[str] = None): """Create credentials for new zone creation""" try: - retval, out, err = RGWAM(self.env).realm_rm_zone_creds(realm_name, realm_token) + retval, out, err = RGWAM(self.env).realm_rm_zone_creds(realm_token) except RGWAMException as e: self.log.error('cmd run exception: (%d) %s' % (e.retcode, e.message)) return (e.retcode, e.message, e.stderr) diff --git a/src/pybind/mgr/rgw/rgwam.py b/src/pybind/mgr/rgw/rgwam.py index 41f1bba7a121f..c902eaf9f53f6 100644 --- a/src/pybind/mgr/rgw/rgwam.py +++ b/src/pybind/mgr/rgw/rgwam.py @@ -463,7 +463,7 @@ class RGWAM: svc_id = realm_name + '.' + zone_name self.env.mgr.apply_rgw(svc_id, realm_name, zone_name, o.port) - realm_token = RealmToken(ep, sys_user.uid, sys_access_key, sys_secret) + realm_token = RealmToken(realm_id, ep, sys_user.uid, sys_access_key, sys_secret) logging.info(realm_token.to_json()) @@ -520,14 +520,14 @@ class RGWAM: sys_access_key = sys_user.keys[0].access_key sys_secret = sys_user.keys[0].secret_key - realm_token = RealmToken(ep, sys_user.uid, sys_access_key, sys_secret) + realm_token = RealmToken(period.realm_id, ep, sys_user.uid, sys_access_key, sys_secret) logging.info(realm_token.to_json()) realm_token_b = realm_token.to_json().encode('utf-8') return (0, 'Realm Token: %s' % base64.b64encode(realm_token_b).decode('utf-8'), '') - def realm_rm_zone_creds(self, realm_name, realm_token_b64): + def realm_rm_zone_creds(self, realm_token_b64): if not realm_token_b64: print('missing realm token') return False @@ -538,9 +538,10 @@ class RGWAM: realm_token = json.loads(realm_token_s) access_key = realm_token['access_key'] + realm_id = realm_token['realm_id'] try: - period_info = self.period_op().get(EntityName(realm_name)) + period_info = self.period_op().get(EntityID(realm_id)) except RGWAMException as e: raise RGWAMException('failed to fetch period info', e) diff --git a/src/pybind/mgr/rgw/types.py b/src/pybind/mgr/rgw/types.py index 7f781c2fb0075..688905cc5d1b6 100644 --- a/src/pybind/mgr/rgw/types.py +++ b/src/pybind/mgr/rgw/types.py @@ -37,7 +37,8 @@ class JSONObj: return json.dumps(self, default=lambda o: o.__dict__, indent=4) class RealmToken(JSONObj): - def __init__(self, endpoint, uid, access_key, secret): + def __init__(self, realm_id, endpoint, uid, access_key, secret): + self.realm_id = realm_id self.endpoint = endpoint self.uid = uid self.access_key = access_key @@ -90,6 +91,8 @@ class RGWPeriod(JSONObj): self.epoch = period_dict['epoch'] self.master_zone = period_dict['master_zone'] self.master_zonegroup = period_dict['master_zonegroup'] + self.realm_name = period_dict['realm_name'] + self.realm_id = period_dict['realm_id'] pm = period_dict['period_map'] self.zonegroups_by_id = {} self.zonegroups_by_name = {} -- 2.39.5