Ceph module hotfix for NVMe device type when collecting SMART data
Related-PROD: PROD-36605
Change-Id: Ib8ad7d014d376293cfb292e4e1ac3e35738f6cd4
diff --git a/cfg_checker/modules/ceph/__init__.py b/cfg_checker/modules/ceph/__init__.py
index ad4a207..74fdde3 100644
--- a/cfg_checker/modules/ceph/__init__.py
+++ b/cfg_checker/modules/ceph/__init__.py
@@ -98,8 +98,8 @@
# ceph_info.load_info()
# end debug
- ceph_info.print_summary()
ceph_info.generate_archive(_tgzfile)
+ ceph_info.print_summary()
return
diff --git a/cfg_checker/modules/ceph/info.py b/cfg_checker/modules/ceph/info.py
index 092c1c7..9b55c3f 100644
--- a/cfg_checker/modules/ceph/info.py
+++ b/cfg_checker/modules/ceph/info.py
@@ -57,9 +57,14 @@
continue
else:
# TODO: Consider filtering out or prepare data for the table
+ _osd = _d.pop("osd_name")
+ _node_name = _d.pop("node_name")
_date = sorted(_d.keys(), reverse=True)[0]
self.ceph_info['ceph_health']['date'] = _date
self.ceph_info['ceph_health']['latest'][_n] = _d[_date]
+ self.ceph_info['ceph_health']['latest'][_n]["osd_name"] = _osd
+ self.ceph_info['ceph_health']['latest'][_n]["node_name"] = \
+ _node_name
return self.ceph_info['ceph_health']['latest']
@@ -98,14 +103,18 @@
logger_cli.info("{:45} {:<10}".format(_n, "<empty>"))
continue
- _status = _d['ata_smart_data']['self_test']['status']['passed']
+ _status = _d['smart_status']['passed']
+ if "interface_speed" in _d:
+ _speed = _d['interface_speed']['current']['string']
+ else:
+ _speed = "-"
_status = 'passed' if _status else 'failed'
logger_cli.info(
_fmt.format(
_n,
_d['device']['info_name'],
- _d['interface_speed']['current']['string'],
+ _speed,
_status,
_d['temperature']['current']
)
@@ -467,14 +476,24 @@
logger_cli.info("-> Collecting health metrics")
_health_metrics = {}
_devices = _c("ceph device ls")
- for device in _devices.splitlines():
+ _devices = _devices.splitlines()
+ _progress = Progress(len(_devices)-1)
+ _index = 1
+ for device in _devices:
_t = device.split()
_osd = _t[2]
+ _node = _t[1]
_dev = _t[0]
if _dev == "DEVICE":
continue
_metric = _cj("ceph device get-health-metrics {}".format(_dev))
- _health_metrics["{}_{}".format(_osd, _dev)] = _metric
+ _dev_name = "{}_{}".format(_osd, _dev)
+ _health_metrics[_dev_name] = _metric
+ _health_metrics[_dev_name]['node_name'] = _node
+ _health_metrics[_dev_name]['osd_name'] = _osd
+ _progress.write_progress(_index, note=_dev_name)
+ _index += 1
+ _progress.end()
self._add_ceph_info_item(
"ceph_health",
"Ceph Health Metrics",
diff --git a/templates/ceph_info_html.j2 b/templates/ceph_info_html.j2
index 1e461c8..eafa2fa 100644
--- a/templates/ceph_info_html.j2
+++ b/templates/ceph_info_html.j2
@@ -888,14 +888,24 @@
<tr class="node">
<td class="dev_name">
<div class="text">{{ _p['model_name'] }}, {{ _p['serial_number'] }}</div><br>
- <div class="note">{{ _p['model_family'] }}; {{ _p['sata_version']['string'] }}</div>
- <div class="note">{{ _d }}</div>
+ {% if "model_family" in _p %}
+ <div class="note">{{ _p['model_family'] }}</div>
+ {% endif %}
+ <div class="note">{{ _p['node_name'] }}:{{ _p['osd_name'] }}</div>
</td>
<td class="dev_param centered">{{ _p['device']['info_name'] }}</td>
<td class="dev_param centered">{{ _p['device']['protocol'] }}</td>
<td class="dev_param centered">{{ _p['firmware_version'] }}</td>
+ {% if "interface_speed" in _p %}
<td class="dev_param centered">{{ _p['interface_speed']['current']['string'] }} / {{ _p['interface_speed']['max']['string'] }}</td>
+ {% else %}
+ <td class="dev_param centered">- / -</td>
+ {% endif%}
+ {% if "physical_block_size" in _p %}
<td class="dev_param centered">{{ _p['physical_block_size'] }} / {{ _p['logical_block_size'] }}</td>
+ {% else %}
+ <td class="dev_param centered">- / {{ _p['logical_block_size'] }}</td>
+ {% endif %}
<td class="dev_param centered">{{ _p['power_cycle_count'] }}</td>
<td class="dev_param centered">{{ _p['temperature']['current'] }}</td>
{% if _p['smart_status']['passed'] %}