summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGeorge Kraft <george.kraft@calxeda.com>2012-08-17 11:20:23 -0500
committerGeorge Kraft <george.kraft@calxeda.com>2012-08-17 11:20:23 -0500
commita6b75432354e1ec3af421bdf1042c39845d9070e (patch)
tree889d80d85651dcd5d5a243f07f527a9fefc456b1
parent468c254cf594c6dde84532091d38d5084074b046 (diff)
downloadcxmanage-a6b75432354e1ec3af421bdf1042c39845d9070e.tar.gz
cxmanage: Add "fwinfo" command
For convenience. This is pretty much just a shortcut to the ipmitool cxoem fw info command.
-rw-r--r--cxmanage/controller.py25
-rwxr-xr-xscripts/cxmanage9
2 files changed, 33 insertions, 1 deletions
diff --git a/cxmanage/controller.py b/cxmanage/controller.py
index 3e2da84..1f7b0f9 100644
--- a/cxmanage/controller.py
+++ b/cxmanage/controller.py
@@ -286,7 +286,7 @@ class Controller:
return self._retry_command("mc_reset")
def update_firmware(self, partition_arg="INACTIVE"):
- """ Send firmware update commands to all targets in group. """
+ """ Send firmware update commands to all targets """
if self.verbosity >= 1:
print "Updating firmware on these hosts:"
for target in self.targets:
@@ -296,6 +296,29 @@ class Controller:
return self._retry_command("update_firmware", self.tftp, self.images,
partition_arg)
+ def firmware_info(self):
+ """ Print firmware info for all targets """
+ results, errors = self._run_command(self.targets, "get_firmware_info")
+
+ for target in self.targets:
+ if target.address in results:
+ print "[ Firmware info for %s ]" % target.address
+
+ for partition in results[target.address]:
+ print "Partition : %s" % partition.partition
+ print "Type : %s" % partition.type
+ print "Offset : %s" % partition.offset
+ print "Size : %s" % partition.size
+ print "Version : %s" % partition.version
+ print "Daddr : %s" % partition.daddr
+ print "Flags : %s" % partition.flags
+ print "In Use : %s" % partition.in_use
+ print
+
+ self._print_errors(errors)
+
+ return len(errors) > 0
+
def get_sensors(self, name=""):
""" Get sensor readings from all targets """
results, errors = self._run_command(self.targets, "get_sensors", name)
diff --git a/scripts/cxmanage b/scripts/cxmanage
index 9a5be3a..d83ba01 100755
--- a/scripts/cxmanage
+++ b/scripts/cxmanage
@@ -160,6 +160,10 @@ def build_parser():
default=False, action='store_true')
p['fwupdate'].set_defaults(func=fwupdate_command)
+ #fwinfo command
+ p['fwinfo'] = p['subparsers'].add_parser('fwinfo', help='get FW info')
+ p['fwinfo'].set_defaults(func=fwinfo_command)
+
#sensor command
p['sensor'] = p['subparsers'].add_parser('sensor',
help='read sensor value')
@@ -368,6 +372,11 @@ def fwupdate_command(controller, args):
return controller.update_firmware(args.partition)
+def fwinfo_command(controller, args):
+ """print firmware info"""
+ return controller.firmware_info()
+
+
def sensor_command(controller, args):
"""read sensor values from a cluster or host"""
sensor_name = args.sensor_name