From 1a1574c73c35fba8cc22dd4de155764841f1ff74 Mon Sep 17 00:00:00 2001 From: clbu Date: Thu, 17 Oct 2024 10:12:59 +0200 Subject: [PATCH] continue parsing even if the command return is different from 0 --- netbox_agent/ipmi.py | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/netbox_agent/ipmi.py b/netbox_agent/ipmi.py index ff2b42b..478e88b 100644 --- a/netbox_agent/ipmi.py +++ b/netbox_agent/ipmi.py @@ -39,12 +39,10 @@ class IPMI(): def __init__(self): self.ret, self.output = subprocess.getstatusoutput('ipmitool lan print') if self.ret != 0: - logging.error('Cannot get ipmi info: {}'.format(self.output)) + logging.warning('IPMI command failed: {}'.format(self.output)) def parse(self): _ipmi = {} - if self.ret != 0: - return _ipmi for line in self.output.splitlines(): key = line.split(':')[0].strip() @@ -57,11 +55,15 @@ def parse(self): ret['name'] = 'IPMI' ret["mtu"] = 1500 ret['bonding'] = False - ret['mac'] = _ipmi['MAC Address'] - ret['vlan'] = int(_ipmi['802.1q VLAN ID']) \ - if _ipmi['802.1q VLAN ID'] != 'Disabled' else None - ip = _ipmi['IP Address'] - netmask = _ipmi['Subnet Mask'] + try: + ret['mac'] = _ipmi['MAC Address'] + ret['vlan'] = int(_ipmi['802.1q VLAN ID']) \ + if _ipmi['802.1q VLAN ID'] != 'Disabled' else None + ip = _ipmi['IP Address'] + netmask = _ipmi['Subnet Mask'] + except KeyError as e: + logging.error("IPMI decoding failed, missing: ", e.args[0]) + return {} address = str(IPNetwork('{}/{}'.format(ip, netmask))) ret['ip'] = [address]