blob: eae5a03d467512a4be93196e0e087d03a0f9183c [file] [log] [blame]
Andrew Geissler000b50f2017-09-26 08:35:53 -05001#!/bin/env python
2
3import argparse
4import requests
5import json
6
7import urllib3
8urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)
9
10
11class BMC:
12 def __init__(self, server):
13 self.url = "https://{0}/".format(server)
14 self.session = requests.Session()
15 self.login()
16
17 def login(self):
18 r = self.session.post(self.url + 'login',
19 json={'data': ['root', '0penBmc']},
20 verify=False)
21 j = r.json()
22 if j['status'] != 'ok':
23 raise Exception("Failed to login: \n" + r.text)
24
25 def list_all(self):
26 r = self.session.get(self.url + 'xyz/openbmc_project/sensors/enumerate',
27 verify=False)
28 j = r.json()
29 if j['status'] != 'ok':
30 raise Exception("Failed to query sensors: \n" + r.text)
31
32 sensors = j['data']
Andrew Geisslerf2622292017-11-09 13:47:12 -060033 sensors = sorted(sensors,key=lambda x: x.split("/")[-1])
Andrew Geissler000b50f2017-09-26 08:35:53 -050034
35 return sensors
36
37 def get_sensor(self, sensor):
38 r = self.session.get(self.url + sensor, verify=False)
39
40 j = r.json()
41 if j['status'] != 'ok':
42 raise Exception("Failed to get sensor " + sensor + ": \n" + r.text)
43
Andrew Geisslerf2622292017-11-09 13:47:12 -060044 return j['data']
Andrew Geissler000b50f2017-09-26 08:35:53 -050045
46def do_list_all(args):
47 s = BMC(server=args.server)
48 for e in s.list_all():
Andrew Geissler058fd3d2017-11-09 14:09:40 -060049 if (args.value):
50 value = s.get_sensor(e)
51 print(e + ' : '+ str(value["Value"]))
52 else:
53 print(e)
Andrew Geissler000b50f2017-09-26 08:35:53 -050054
55def do_view_sensor(args):
56 s = BMC(server=args.server)
57 print(s.get_sensor(args.sensor))
58 print json.dumps(s.get_sensor(args.sensor), indent=4)
59
60parser = argparse.ArgumentParser()
61parser.add_argument('--server', help='hostname or IP of BMC', type=str,
62 required=True)
63
64subparsers = parser.add_subparsers()
65
66list_all_sensors = subparsers.add_parser('list', help='List all sensors on BMC')
67list_all_sensors.set_defaults(func=do_list_all)
Andrew Geissler058fd3d2017-11-09 14:09:40 -060068list_all_sensors.add_argument(
69 '--value',
70 action='store_true',
71 default=False,
72 help='Provide current value of sensor')
Andrew Geissler000b50f2017-09-26 08:35:53 -050073
74view_sensor = subparsers.add_parser(
75 'view', help='View all data for an individual sensor')
76view_sensor.add_argument('sensor', help='The sensor to view')
77view_sensor.set_defaults(func=do_view_sensor)
78
79args = parser.parse_args()
80
81if 'func' in args:
82 args.func(args)
83else:
84 parser.print_help()