From 7cda6f7d6ea00cb5ae309a5b2bff9fd4250a8ed3 Mon Sep 17 00:00:00 2001 From: Jarrod Johnson Date: Tue, 28 Apr 2015 10:37:47 -0400 Subject: [PATCH] Add support for fetching single component inventory Like sensors, ipmi plugin now supports fetching individual component information. --- .../plugins/hardwaremanagement/ipmi.py | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/confluent_server/confluent/plugins/hardwaremanagement/ipmi.py b/confluent_server/confluent/plugins/hardwaremanagement/ipmi.py index e4604fc9..b6f7423b 100644 --- a/confluent_server/confluent/plugins/hardwaremanagement/ipmi.py +++ b/confluent_server/confluent/plugins/hardwaremanagement/ipmi.py @@ -422,8 +422,22 @@ class IpmiHandler(object): newinf = {'present': True, 'information': invdata[1]} newinf['name'] = invdata[0] invitems.append(newinf) - newinvdata = {'inventory': invitems} - self.output.put(msg.KeyValueData(newinvdata, self.node)) + else: + self.make_inventory_map() + compname = self.invmap.get(component, None) + if compname is None: + self.output.put(msg.ConfluentTargetNotFound()) + return + invdata = self.ipmicmd.get_inventory_of_component(compname) + if invdata is None: + newinf = {'present': False, 'information': None} + else: + sanitize_invdata(invdata) + newinf = {'present': True, 'information': invdata} + newinf['name'] = compname + invitems.append(newinf) + newinvdata = {'inventory': invitems} + self.output.put(msg.KeyValueData(newinvdata, self.node)) def handle_sensors(self): if self.element[-1] == '':