Ceph info and report OSD configuration
- Added OSD configuration gathering
- Uniq values filtering
Related-PROD: PROD-36669
Change-Id: I7a2ef144554d892d06c0f05f978a512ba156360a
diff --git a/cfg_checker/modules/ceph/info.py b/cfg_checker/modules/ceph/info.py
index f6d5758..2a23936 100644
--- a/cfg_checker/modules/ceph/info.py
+++ b/cfg_checker/modules/ceph/info.py
@@ -594,3 +594,63 @@
)
return
+
+ def gather_osd_configs(self):
+ _total_osd = len(self.ceph_info["ceph_osd_df"]["data"]["nodes"])
+ logger_cli.info(
+ "-> Gathering OSD configuration ({})".format(_total_osd)
+ )
+ # Shortcuts
+ # _c = self._safe_tools_cmd
+ _cj = self._safe_get_cmd_output_as_json
+ _progress = Progress(_total_osd)
+ _idx = 1
+ _cfgs = {}
+ for _osd in self.ceph_info["ceph_osd_df"]["data"]["nodes"]:
+ _progress.write_progress(_idx, note=_osd["name"])
+ _cfgs[_osd["name"]] = _cj(
+ "ceph config show-with-defaults -f json {}".format(
+ _osd["name"]
+ )
+ )
+ _idx += 1
+ _progress.end()
+
+ # Process configs
+ _base = {}
+ _uniq = {}
+ logger_cli.info("-> Filtering config values")
+ _progress = Progress(_total_osd)
+ _idx = 1
+ for _osd, _data in _cfgs.items():
+ _progress.write_progress(_idx, note=_osd)
+ for _o in _data:
+ _name = _o.pop("name")
+ if not _o["value"]:
+ _o["value"] = "-"
+ if _name not in _base:
+ _base[_name] = _o
+ elif _base[_name]["value"] != _o["value"]:
+ _progress.clearline()
+ logger_cli.info(
+ "...specific value for {} (src: '{}'): {}={}".format(
+ _osd,
+ _o["source"],
+ _name,
+ _o["value"]
+ )
+ )
+ _uniq[_osd] = {
+ _name: _o
+ }
+ _idx += 1
+ _progress.end()
+ self._add_ceph_info_item(
+ "osd_config_data",
+ "OSD Configuration values",
+ {
+ "common": _base,
+ "uniq": _uniq
+ }
+ )
+ return