Initial sensor support
Signed-off-by: Andrew Geissler <geissonator@yahoo.com>
diff --git a/openbmc-sensors b/openbmc-sensors
new file mode 100755
index 0000000..c54dc97
--- /dev/null
+++ b/openbmc-sensors
@@ -0,0 +1,75 @@
+#!/bin/env python
+
+import argparse
+import requests
+import json
+
+import urllib3
+urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)
+
+
+class BMC:
+ def __init__(self, server):
+ self.url = "https://{0}/".format(server)
+ self.session = requests.Session()
+ self.login()
+
+ def login(self):
+ r = self.session.post(self.url + 'login',
+ json={'data': ['root', '0penBmc']},
+ verify=False)
+ j = r.json()
+ if j['status'] != 'ok':
+ raise Exception("Failed to login: \n" + r.text)
+
+ def list_all(self):
+ r = self.session.get(self.url + 'xyz/openbmc_project/sensors/enumerate',
+ verify=False)
+ j = r.json()
+ if j['status'] != 'ok':
+ raise Exception("Failed to query sensors: \n" + r.text)
+
+ sensors = j['data']
+ #sensors.sort(key=lambda x: int(x.split("/")[-1]))
+
+ return sensors
+
+ def get_sensor(self, sensor):
+ r = self.session.get(self.url + sensor, verify=False)
+
+ j = r.json()
+ if j['status'] != 'ok':
+ raise Exception("Failed to get sensor " + sensor + ": \n" + r.text)
+
+ return j['data']
+
+def do_list_all(args):
+ s = BMC(server=args.server)
+ for e in s.list_all():
+ print(e)
+
+def do_view_sensor(args):
+ s = BMC(server=args.server)
+ print(s.get_sensor(args.sensor))
+ print json.dumps(s.get_sensor(args.sensor), indent=4)
+
+parser = argparse.ArgumentParser()
+parser.add_argument('--server', help='hostname or IP of BMC', type=str,
+ required=True)
+
+subparsers = parser.add_subparsers()
+
+list_all_sensors = subparsers.add_parser('list', help='List all sensors on BMC')
+list_all_sensors.set_defaults(func=do_list_all)
+
+view_sensor = subparsers.add_parser(
+ 'view', help='View all data for an individual sensor')
+view_sensor.add_argument('sensor', help='The sensor to view')
+view_sensor.set_defaults(func=do_view_sensor)
+
+args = parser.parse_args()
+
+if 'func' in args:
+ args.func(args)
+else:
+ parser.print_help()