]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
mgr/dashboard: RGW rest client instances cache eviction 29044/head
authorRicardo Marques <rimarques@suse.com>
Mon, 10 Jun 2019 21:47:10 +0000 (22:47 +0100)
committerTatjana Dehler <tdehler@suse.com>
Mon, 15 Jul 2019 10:23:17 +0000 (12:23 +0200)
Fixes: https://tracker.ceph.com/issues/40252
Signed-off-by: Ricardo Marques <rimarques@suse.com>
(cherry picked from commit 76fe070d6cf7006b7e245b9da49b83dd786bb49a)

src/pybind/mgr/dashboard/services/rgw_client.py

index d148235c538fd1ecb86ad7ff2a162bde2e6e0699..1351c62592292f99a3c590bdfdb3d0c89472fe9d 100644 (file)
@@ -196,6 +196,7 @@ class RgwClient(RestClient):
     _port = None
     _ssl = None
     _user_instances = {}
+    _rgw_settings_snapshot = None
 
     @staticmethod
     def _load_settings():
@@ -230,8 +231,24 @@ class RgwClient(RestClient):
         # Append the instance to the internal map.
         RgwClient._user_instances[RgwClient._SYSTEM_USERID] = instance
 
+    @staticmethod
+    def _rgw_settings():
+        return (Settings.RGW_API_HOST,
+                Settings.RGW_API_PORT,
+                Settings.RGW_API_ACCESS_KEY,
+                Settings.RGW_API_SECRET_KEY,
+                Settings.RGW_API_ADMIN_RESOURCE,
+                Settings.RGW_API_SCHEME,
+                Settings.RGW_API_USER_ID,
+                Settings.RGW_API_SSL_VERIFY)
+
     @staticmethod
     def instance(userid):
+        # Discard all cached instances if any rgw setting has changed
+        if RgwClient._rgw_settings_snapshot != RgwClient._rgw_settings():
+            RgwClient._rgw_settings_snapshot = RgwClient._rgw_settings()
+            RgwClient._user_instances.clear()
+
         if not RgwClient._user_instances:
             RgwClient._load_settings()