diff options
author | George Kraft <george.kraft@calxeda.com> | 2012-08-16 10:16:06 -0500 |
---|---|---|
committer | George Kraft <george.kraft@calxeda.com> | 2012-08-16 10:16:06 -0500 |
commit | ceeb912f50c9acaee69ce36ee137ea871798d6d3 (patch) | |
tree | c116876b9f5565ce9a10caac2c870559986d2953 | |
parent | 34a7d8aaf96c7f3affd9679ce7d1654ac0e081c1 (diff) | |
download | cxmanage-ceeb912f50c9acaee69ce36ee137ea871798d6d3.tar.gz |
cxmanage: Make sensor_name argument be a filter
So you can say, for example, "cxmanage sensor power" and it'll list
all sensors with "power" in the name.
-rw-r--r-- | cxmanage/controller.py | 10 | ||||
-rw-r--r-- | cxmanage/target.py | 14 | ||||
-rwxr-xr-x | scripts/cxmanage | 11 |
3 files changed, 23 insertions, 12 deletions
diff --git a/cxmanage/controller.py b/cxmanage/controller.py index e2db8a3..032e9cc 100644 --- a/cxmanage/controller.py +++ b/cxmanage/controller.py @@ -324,18 +324,18 @@ class Controller: return len(errors) > 0 - def get_sensors(self, name=None): + def get_sensors(self, name=""): """ Get sensor readings from all targets """ - results, errors = self._run_command("get_sensors") + results, errors = self._run_command("get_sensors", name) if len(results) > 0: # Get sensor names sensor_names = [] for address in results: for sensor in results[address]: - if (name in [None, sensor.sensor_name] and not - sensor.sensor_name in sensor_names): - sensor_names.append(sensor.sensor_name) + sensor_name = sensor.sensor_name + if not sensor_name in sensor_names: + sensor_names.append(sensor_name) # Print all sensors for sensor_name in sensor_names: diff --git a/cxmanage/target.py b/cxmanage/target.py index 8723bf8..a08d7c9 100644 --- a/cxmanage/target.py +++ b/cxmanage/target.py @@ -197,13 +197,23 @@ class Target: except IpmiError as e: raise CxmanageError(self._parse_ipmierror(e)) - def get_sensors(self): + def get_sensors(self, name=""): """ Get a list of sensors from this target """ try: - return self.bmc.sdr_list() + sensors = [x for x in self.bmc.sdr_list() + if name.lower() in x.sensor_name.lower()] except IpmiError as e: raise CxmanageError(self._parse_ipmierror(e)) + if len(sensors) == 0: + if name == "": + raise CxmanageError("No sensors were found") + else: + raise CxmanageError("No sensors containing \"%s\" were found" + % name) + + return sensors + def get_firmware_info(self): """ Get firmware info from the target """ try: diff --git a/scripts/cxmanage b/scripts/cxmanage index 7a0fd58..9a5be3a 100755 --- a/scripts/cxmanage +++ b/scripts/cxmanage @@ -164,7 +164,7 @@ def build_parser(): p['sensor'] = p['subparsers'].add_parser('sensor', help='read sensor value') p['sensor'].add_argument('sensor_name', help='Sensor name to read', - nargs='?') + nargs='?', default='') p['sensor'].set_defaults(func=sensor_command) #ipinfo command @@ -370,10 +370,11 @@ def fwupdate_command(controller, args): def sensor_command(controller, args): """read sensor values from a cluster or host""" - if not args.sensor_name or args.sensor_name.lower() == 'list': - return controller.get_sensors() - else: - return controller.get_sensors(args.sensor_name) + sensor_name = args.sensor_name + if sensor_name.lower() == 'list': + sensor_name = '' + + return controller.get_sensors(sensor_name) def ipinfo_command(controller, args): |