raise OrchestratorValidationError(f"Can't perform powercycle on node {hostname}: {e}")
return f'Powercycle scheduled on {hostname}'
+ @handle_orch_error
+ def node_proxy_fullreport(self, hostname: Optional[str] = None) -> Dict[str, Any]:
+ return self.node_proxy_cache.fullreport(hostname=hostname)
+
@handle_orch_error
def node_proxy_summary(self, hostname: Optional[str] = None) -> Dict[str, Any]:
return self.node_proxy_cache.summary(hostname=hostname)
"""
raise NotImplementedError()
+ def node_proxy_fullreport(self, hostname: Optional[str] = None) -> OrchResult[Dict[str, Any]]:
+ """
+ Return node-proxy full report
+
+ :param hostname: hostname
+ """
+ raise NotImplementedError()
+
def node_proxy_firmwares(self, hostname: Optional[str] = None) -> OrchResult[Dict[str, Any]]:
"""
Return node-proxy firmwares report
"""
table_heading_mapping = {
'summary': ['HOST', 'STORAGE', 'CPU', 'NET', 'MEMORY', 'POWER', 'FANS'],
+ 'fullreport': [],
'firmwares': ['HOST', 'COMPONENT', 'NAME', 'DATE', 'VERSION', 'STATUS'],
'criticals': ['HOST', 'COMPONENT', 'NAME', 'STATUS', 'STATE'],
'memory': ['HOST', 'NAME', 'STATUS', 'STATE'],
row.extend([v['status'][key] for key in ['storage', 'processors', 'network', 'memory', 'power', 'fans']])
table.add_row(row)
output = table.get_string()
+ elif category == 'fullreport':
+ if hostname is None:
+ output = "Missing host name"
+ elif format != Format.json:
+ output = "fullreport only supports json output"
+ else:
+ completion = self.node_proxy_fullreport(hostname=hostname)
+ fullreport: Dict[str, Any] = raise_if_exception(completion)
+ output = json.dumps(fullreport)
elif category == 'firmwares':
output = "Missing host name" if hostname is None else self._firmwares_table(hostname, table, format)
elif category == 'criticals':