]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
mgr/prometheus: avoid duplicates and deleted entries for rbd_stats_pool 48524/head
authorAvan Thakkar <athakkar@redhat.com>
Fri, 7 Oct 2022 20:10:57 +0000 (01:40 +0530)
committerKonstantin Shalygin <k0ste@k0ste.ru>
Wed, 26 Apr 2023 07:42:29 +0000 (14:42 +0700)
Fixes: https://tracker.ceph.com/issues/57797
Signed-off-by: Avan Thakkar <athakkar@redhat.com>
Avoid duplicate entries (pool[/namespace]) for rbd_stats_pools config and also avoid deleted pools.

(cherry picked from commit 06077827fe8344ca56d5a397f352bc4171affced)

src/pybind/mgr/prometheus/module.py

index 58d0bd98a6719689bbaf162fa0b80a3591101c9e..98153d6bcc11b46ddb2f6fa5785e53813a7da3c0 100644 (file)
@@ -1274,7 +1274,10 @@ class Module(MgrModule):
         # stats are collected for every namespace in the pool. The wildcard
         # '*' can be used to indicate all pools or namespaces
         pools_string = cast(str, self.get_localized_module_option('rbd_stats_pools'))
-        pool_keys = []
+        pool_keys = set()
+        osd_map = self.get('osd_map')
+        rbd_pools = [pool['pool_name'] for pool in osd_map['pools']
+                     if 'rbd' in pool.get('application_metadata', {})]
         for x in re.split(r'[\s,]+', pools_string):
             if not x:
                 continue
@@ -1287,13 +1290,11 @@ class Module(MgrModule):
 
             if pool_name == "*":
                 # collect for all pools
-                osd_map = self.get('osd_map')
-                for pool in osd_map['pools']:
-                    if 'rbd' not in pool.get('application_metadata', {}):
-                        continue
-                    pool_keys.append((pool['pool_name'], namespace_name))
+                for pool in rbd_pools:
+                    pool_keys.add((pool, namespace_name))
             else:
-                pool_keys.append((pool_name, namespace_name))
+                if pool_name in rbd_pools:
+                    pool_keys.add((pool_name, namespace_name))  # avoids adding deleted pool
 
         pools = {}  # type: Dict[str, Set[str]]
         for pool_key in pool_keys: