]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph-ci.git/commitdiff
mgr/dashboard: RGW rest client instances cache eviction
authorRicardo Marques <rimarques@suse.com>
Mon, 10 Jun 2019 21:47:10 +0000 (22:47 +0100)
committerRicardo Marques <rimarques@suse.com>
Wed, 19 Jun 2019 21:49:23 +0000 (22:49 +0100)
Fixes: https://tracker.ceph.com/issues/40252
Signed-off-by: Ricardo Marques <rimarques@suse.com>
src/pybind/mgr/dashboard/services/rgw_client.py

index 6d47526a716372a58cb17e1342a2a241af796445..4d7ed2c77ec64bf014a22bbc07d7689bfbd9c2b3 100644 (file)
@@ -200,6 +200,7 @@ class RgwClient(RestClient):
     _port = None
     _ssl = None
     _user_instances = {}
+    _rgw_settings_snapshot = None
 
     @staticmethod
     def _load_settings():
@@ -234,8 +235,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()