]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
mgr/rgw: pass realm_id via token
authorYehuda Sadeh <yehuda@redhat.com>
Thu, 28 Oct 2021 14:15:58 +0000 (07:15 -0700)
committerYehuda Sadeh <yehuda@redhat.com>
Wed, 24 Nov 2021 20:54:30 +0000 (12:54 -0800)
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 <yehuda@redhat.com>
src/pybind/mgr/rgw/module.py
src/pybind/mgr/rgw/rgwam.py
src/pybind/mgr/rgw/types.py

index c48da3302afe8c31485370911329b76fedab9364..ac3a24c29152b70152bbfcc0f322b4cce21ae080 100644 (file)
@@ -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)
index 41f1bba7a121f3c7519d29e5bb2b59625268034f..c902eaf9f53f6180b976746b9ac8ae3c92b6e53c 100644 (file)
@@ -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)
 
index 7f781c2fb0075d1bde6a67092476d3cc85415a05..688905cc5d1b61408d2f2ebf4f6d075b6db4df3e 100644 (file)
@@ -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 = {}