blob: 7cdb4c172cfb334c23673b6c4654eb075c99c950 [file] [log] [blame]
Brad Bishop291ae832016-08-30 20:12:12 -04001#!/usr/bin/env python
Norman Jamesf20dd6b2015-12-18 15:00:55 -06002
Norman Jamesf20dd6b2015-12-18 15:00:55 -06003import dbus
Norman Jamesf20dd6b2015-12-18 15:00:55 -06004
5
6dbus_objects = {
Brad Bishop291ae832016-08-30 20:12:12 -04007 'power': {
8 'bus_name': 'org.openbmc.control.Power',
9 'object_name': '/org/openbmc/control/power0',
10 'interface_name': 'org.openbmc.control.Power'
Ratan Guptab7484a02016-08-01 12:02:05 -050011 },
Brad Bishop291ae832016-08-30 20:12:12 -040012 'occstatus0': {
13 'bus_name': 'org.openbmc.Sensors',
14 'object_name': '/org/openbmc/sensors/host/cpu0/OccStatus',
15 'interface_name': 'org.openbmc.SensorValue'
Ratan Guptab7484a02016-08-01 12:02:05 -050016 },
Brad Bishop291ae832016-08-30 20:12:12 -040017 'occstatus1': {
18 'bus_name': 'org.openbmc.Sensors',
19 'object_name': '/org/openbmc/sensors/host/cpu1/OccStatus',
20 'interface_name': 'org.openbmc.SensorValue'
Ratan Guptab7484a02016-08-01 12:02:05 -050021 },
Brad Bishop291ae832016-08-30 20:12:12 -040022 'bootprogress': {
23 'bus_name': 'org.openbmc.Sensors',
24 'object_name': '/org/openbmc/sensors/host/BootProgress',
25 'interface_name': 'org.openbmc.SensorValue'
Ratan Guptab7484a02016-08-01 12:02:05 -050026 },
Brad Bishop291ae832016-08-30 20:12:12 -040027 'chassis': {
28 'bus_name': 'org.openbmc.control.Chassis',
29 'object_name': '/org/openbmc/control/chassis0',
30 'interface_name': 'org.openbmc.control.Chassis'
Ratan Guptab7484a02016-08-01 12:02:05 -050031 },
Brad Bishop291ae832016-08-30 20:12:12 -040032 'settings': {
33 'bus_name': 'org.openbmc.settings.Host',
34 'object_name': '/org/openbmc/settings/host0',
35 'interface_name': 'org.freedesktop.DBus.Properties'
Ratan Guptab7484a02016-08-01 12:02:05 -050036 },
Norman Jamesf20dd6b2015-12-18 15:00:55 -060037}
38
Norman Jamesf20dd6b2015-12-18 15:00:55 -060039
Brad Bishop291ae832016-08-30 20:12:12 -040040def getInterface(bus, objs, key):
41 obj = bus.get_object(
42 objs[key]['bus_name'], objs[key]['object_name'], introspect=False)
43 return dbus.Interface(obj, objs[key]['interface_name'])
44
45
46def getProperty(bus, objs, key, prop):
47 obj = bus.get_object(
48 objs[key]['bus_name'], objs[key]['object_name'], introspect=False)
49 intf = dbus.Interface(obj, dbus.PROPERTIES_IFACE)
50 return intf.Get(objs[key]['interface_name'], prop)
Norman Jamesf20dd6b2015-12-18 15:00:55 -060051
52
53bus = dbus.SystemBus()
Brad Bishop291ae832016-08-30 20:12:12 -040054pgood = getProperty(bus, dbus_objects, 'power', 'pgood')
Norman Jamesf20dd6b2015-12-18 15:00:55 -060055
56if (pgood == 1):
Brad Bishop291ae832016-08-30 20:12:12 -040057 intf = getInterface(bus, dbus_objects, 'bootprogress')
Ratan Guptab7484a02016-08-01 12:02:05 -050058 intf.setValue("FW Progress, Starting OS")
Brad Bishop291ae832016-08-30 20:12:12 -040059 intf = getInterface(bus, dbus_objects, 'occstatus0')
Ratan Guptab7484a02016-08-01 12:02:05 -050060 intf.setValue("Enabled")
Brad Bishop291ae832016-08-30 20:12:12 -040061 intf = getInterface(bus, dbus_objects, 'occstatus1')
Ratan Guptab7484a02016-08-01 12:02:05 -050062 intf.setValue("Enabled")
Norman Jamesf5edb9e2016-01-31 13:32:24 -060063else:
Ratan Guptab7484a02016-08-01 12:02:05 -050064 ## Power is off, so check power policy
Brad Bishop291ae832016-08-30 20:12:12 -040065 settings_intf = getInterface(bus, dbus_objects, 'settings')
66 system_state = settings_intf.Get(
67 "org.openbmc.settings.Host", "system_state")
68 power_policy = settings_intf.Get(
69 "org.openbmc.settings.Host", "power_policy")
Norman Jamesf20dd6b2015-12-18 15:00:55 -060070
Ratan Guptab7484a02016-08-01 12:02:05 -050071 print "Last System State: "+system_state+"; Power Policy: "+power_policy
Brad Bishop291ae832016-08-30 20:12:12 -040072 chassis_intf = getInterface(bus, dbus_objects, 'chassis')
Ratan Guptab7484a02016-08-01 12:02:05 -050073 if (power_policy == "ALWAYS_POWER_ON" or
Brad Bishop291ae832016-08-30 20:12:12 -040074 (power_policy == "RESTORE_LAST_STATE" and
75 system_state == "HOST_POWERED_ON")):
Ratan Guptab7484a02016-08-01 12:02:05 -050076 chassis_intf.powerOn()
Brad Bishop53066752016-09-21 08:48:04 -040077
78# vim: tabstop=8 expandtab shiftwidth=4 softtabstop=4