Sort Ceph pool data by name

There is no guarantee that both commands output the pools in the same
order, so sort them by name first so the iteration over the pools by ID
is successful.
This commit is contained in:
Joshua Boniface 2024-07-22 13:26:27 -04:00
parent c186015d6f
commit 97329bb90d
1 changed files with 6 additions and 2 deletions

View File

@ -157,7 +157,9 @@ def collect_ceph_stats(logger, config, zkhandler, this_node, queue):
1 1
].decode("ascii") ].decode("ascii")
try: try:
ceph_pool_df_raw = json.loads(ceph_df_output)["pools"] ceph_pool_df_raw = sorted(
json.loads(ceph_df_output)["pools"], key=lambda x: x["name"]
)
except Exception as e: except Exception as e:
logger.out("Failed to obtain Pool data (ceph df): {}".format(e), state="w") logger.out("Failed to obtain Pool data (ceph df): {}".format(e), state="w")
ceph_pool_df_raw = [] ceph_pool_df_raw = []
@ -166,7 +168,9 @@ def collect_ceph_stats(logger, config, zkhandler, this_node, queue):
"rados df --format json", timeout=1 "rados df --format json", timeout=1
) )
try: try:
rados_pool_df_raw = json.loads(stdout)["pools"] rados_pool_df_raw = sorted(
json.loads(stdout)["pools"], key=lambda x: x["name"]
)
except Exception as e: except Exception as e:
logger.out("Failed to obtain Pool data (rados df): {}".format(e), state="w") logger.out("Failed to obtain Pool data (rados df): {}".format(e), state="w")
rados_pool_df_raw = [] rados_pool_df_raw = []