mirror of
https://github.com/xcat2/confluent.git
synced 2026-04-12 20:01:30 +00:00
Provide more category based firmware query
Some platforms can have a very slow category, like disks. Give CLI a way to ask for the desired categories and a chance to optimize away the uninteresting.
This commit is contained in:
@@ -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:
|
||||
|
||||
@@ -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',
|
||||
|
||||
@@ -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()
|
||||
|
||||
@@ -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()
|
||||
|
||||
Reference in New Issue
Block a user