diff --git a/confluent_client/bin/nodefirmware b/confluent_client/bin/nodefirmware index 0c6a0958..98ddc50a 100755 --- a/confluent_client/bin/nodefirmware +++ b/confluent_client/bin/nodefirmware @@ -153,9 +153,13 @@ def show_firmware(session): firmware_shown = False nodes_matched = False for component in components: + category = 'all' + if component in ('adapters', 'disks', 'misc', 'core'): + category = component + component = 'all' for res in session.read( - '/noderange/{0}/inventory/firmware/all/{1}'.format( - noderange, component)): + '/noderange/{0}/inventory/firmware/{2}/{1}'.format( + noderange, component, category)): nodes_matched = True exitcode |= client.printerror(res) if 'databynode' not in res: diff --git a/confluent_server/confluent/core.py b/confluent_server/confluent/core.py index 0e754b9f..2375078e 100644 --- a/confluent_server/confluent/core.py +++ b/confluent_server/confluent/core.py @@ -498,6 +498,22 @@ def _init_core(): 'pluginattrs': ['hardwaremanagement.method'], 'default': 'ipmi', }), + 'core': PluginCollection({ + 'pluginattrs': ['hardwaremanagement.method'], + 'default': 'ipmi', + }), + 'adapters': PluginCollection({ + 'pluginattrs': ['hardwaremanagement.method'], + 'default': 'ipmi', + }), + 'disks': PluginCollection({ + 'pluginattrs': ['hardwaremanagement.method'], + 'default': 'ipmi', + }), + 'misc': PluginCollection({ + 'pluginattrs': ['hardwaremanagement.method'], + 'default': 'ipmi', + }), 'updatestatus': PluginRoute({ 'pluginattrs': ['hardwaremanagement.method'], 'default': 'ipmi', diff --git a/confluent_server/confluent/plugins/hardwaremanagement/ipmi.py b/confluent_server/confluent/plugins/hardwaremanagement/ipmi.py index 02e324bb..38119dd6 100644 --- a/confluent_server/confluent/plugins/hardwaremanagement/ipmi.py +++ b/confluent_server/confluent/plugins/hardwaremanagement/ipmi.py @@ -973,12 +973,12 @@ class IpmiHandler(object): for id, data in self.ipmicmd.get_firmware(): self.output.put(msg.ChildCollection(simplify_name(id))) - def read_firmware(self, component): + def read_firmware(self, component, category): items = [] errorneeded = False try: complist = () if component == 'all' else (component,) - for id, data in self.ipmicmd.get_firmware(complist): + for id, data in self.ipmicmd.get_firmware(complist, category): if (component in ('core', 'all') or component == simplify_name(id) or match_aliases(component, simplify_name(id))): @@ -1014,7 +1014,7 @@ class IpmiHandler(object): if len(self.element) == 3: return self.list_firmware() elif len(self.element) == 4: - return self.read_firmware(self.element[-1]) + return self.read_firmware(self.element[-1], self.element[-2]) elif self.element[1] == 'hardware': if len(self.element) == 3: # list things in inventory return self.list_inventory() diff --git a/confluent_server/confluent/plugins/hardwaremanagement/redfish.py b/confluent_server/confluent/plugins/hardwaremanagement/redfish.py index 03edd4a6..bb709b40 100644 --- a/confluent_server/confluent/plugins/hardwaremanagement/redfish.py +++ b/confluent_server/confluent/plugins/hardwaremanagement/redfish.py @@ -830,12 +830,12 @@ class IpmiHandler(object): for id, data in self.ipmicmd.get_firmware(): self.output.put(msg.ChildCollection(simplify_name(id))) - def read_firmware(self, component): + def read_firmware(self, component, category): items = [] errorneeded = False try: complist = () if component == 'all' else (component,) - for id, data in self.ipmicmd.get_firmware(complist): + for id, data in self.ipmicmd.get_firmware(complist, category): if (component in ('core', 'all') or component == simplify_name(id) or match_aliases(component, simplify_name(id))): @@ -871,7 +871,7 @@ class IpmiHandler(object): if len(self.element) == 3: return self.list_firmware() elif len(self.element) == 4: - return self.read_firmware(self.element[-1]) + return self.read_firmware(self.element[-1], self.element[-2]) elif self.element[1] == 'hardware': if len(self.element) == 3: # list things in inventory return self.list_inventory()