diff options
author | Andrew Geissler <andrewg@us.ibm.com> | 2016-06-29 15:49:26 -0500 |
---|---|---|
committer | Andrew Geissler <andrewg@us.ibm.com> | 2016-06-30 10:38:26 -0500 |
commit | b7f40b52730f9af7dbe31aecab4f21f985936297 (patch) | |
tree | 699e4dd243547b0c0106a1fcb8ba1eb5001c7713 /pychassisctl | |
parent | a194b9d150b9a8d35f757bae356083cbf0d1dfd8 (diff) | |
download | talos-skeleton-b7f40b52730f9af7dbe31aecab4f21f985936297.tar.gz talos-skeleton-b7f40b52730f9af7dbe31aecab4f21f985936297.zip |
Reformat pychassisctl/chassis_control.py with pep8 standards
This commit is formatting only, no functional changes.
Diffstat (limited to 'pychassisctl')
-rw-r--r-- | pychassisctl/chassis_control.py | 392 |
1 files changed, 200 insertions, 192 deletions
diff --git a/pychassisctl/chassis_control.py b/pychassisctl/chassis_control.py index 376e0e9..8d34e2e 100644 --- a/pychassisctl/chassis_control.py +++ b/pychassisctl/chassis_control.py @@ -19,197 +19,205 @@ POWER_ON = 1 BOOTED = 100 -class ChassisControlObject(DbusProperties,DbusObjectManager): - def getUuid(self): - uuid = ""; - try: - with open(MACHINE_ID) as f: - data = f.readline().rstrip('\n') - if (len(data) == 32): - uuid = data - else: - print "ERROR: UUID is not formatted correctly: "+data - except: - print "ERROR: Unable to open uuid file: "+MACHINE_ID - - return uuid - - def __init__(self,bus,name): - self.dbus_objects = { } - DbusProperties.__init__(self) - DbusObjectManager.__init__(self) - dbus.service.Object.__init__(self,bus,name) - ## load utilized objects - self.dbus_objects = { - 'power_control' : { - 'bus_name' : 'org.openbmc.control.Power', - 'object_name' : '/org/openbmc/control/power0', - 'interface_name' : 'org.openbmc.control.Power' - }, - 'identify_led' : { - 'bus_name' : 'org.openbmc.control.led', - 'object_name' : '/org/openbmc/control/led/identify', - 'interface_name' : 'org.openbmc.Led' - }, - 'watchdog' : { - 'bus_name' : 'org.openbmc.watchdog.Host', - 'object_name' : '/org/openbmc/watchdog/host0', - 'interface_name' : 'org.openbmc.Watchdog' - }, - 'host_services' : { - 'bus_name' : 'org.openbmc.HostServices', - 'object_name' : '/org/openbmc/HostServices', - 'interface_name' : 'org.openbmc.HostServices' - }, - 'settings' : { - 'bus_name' : 'org.openbmc.settings.Host', - 'object_name' : '/org/openbmc/settings/host0', - 'interface_name' : 'org.freedesktop.DBus.Properties' - }, - } - - #uuid - self.Set(DBUS_NAME,"uuid",self.getUuid()) - self.Set(DBUS_NAME,"reboot",0) - - bus.add_signal_receiver(self.power_button_signal_handler, - dbus_interface = "org.openbmc.Button", signal_name = "Released", - path="/org/openbmc/buttons/power0" ) - bus.add_signal_receiver(self.reset_button_signal_handler, - dbus_interface = "org.openbmc.Button", signal_name = "PressedLong", - path="/org/openbmc/buttons/power0" ) - bus.add_signal_receiver(self.softreset_button_signal_handler, - dbus_interface = "org.openbmc.Button", signal_name = "Released", - path="/org/openbmc/buttons/reset0" ) - - bus.add_signal_receiver(self.host_watchdog_signal_handler, - dbus_interface = "org.openbmc.Watchdog", signal_name = "WatchdogError") - - bus.add_signal_receiver(self.emergency_shutdown_signal_handler, - dbus_interface = "org.openbmc.SensorThresholds", signal_name = "Emergency") - - bus.add_signal_receiver(self.SystemStateHandler,signal_name = "GotoSystemState") - self.InterfacesAdded(name,self.properties) - - - def getInterface(self,name): - o = self.dbus_objects[name] - obj = bus.get_object(o['bus_name'],o['object_name'],introspect=False) - return dbus.Interface(obj,o['interface_name']) - - - @dbus.service.method(DBUS_NAME, - in_signature='', out_signature='') - def setIdentify(self): - print "Turn on identify" - intf = self.getInterface('identify_led') - intf.setOn() - return None - - @dbus.service.method(DBUS_NAME, - in_signature='', out_signature='') - def clearIdentify(self): - print "Turn on identify" - intf = self.getInterface('identify_led') - intf.setOff() - return None - - @dbus.service.method(DBUS_NAME, - in_signature='', out_signature='') - def powerOn(self): - print "Turn on power and boot" - self.Set(DBUS_NAME,"reboot",0) - if (self.getPowerState()==0): - intf = self.getInterface('power_control') - intf.setPowerState(POWER_ON) - intfwatchdog = self.getInterface('watchdog') - #Start watchdog with 30s timeout per the OpenPower Host IPMI Spec - #Once the host starts booting, it'll reset and refresh the timer - intfwatchdog.set(30000) - intfwatchdog.start() - return None - - @dbus.service.method(DBUS_NAME, - in_signature='', out_signature='') - def powerOff(self): - print "Turn off power" - intfwatchdog = self.getInterface('watchdog') - intfwatchdog.stop() - intf = self.getInterface('power_control') - intf.setPowerState(POWER_OFF) - return None - - @dbus.service.method(DBUS_NAME, - in_signature='', out_signature='') - def softPowerOff(self): - print "Soft off power" - intf = self.getInterface('host_services') - ## host services will call power off when ready - intf.SoftPowerOff() - return None - - @dbus.service.method(DBUS_NAME, - in_signature='', out_signature='') - def reboot(self): - print "Rebooting" - if self.getPowerState() == POWER_OFF: - self.powerOn(); - else: - self.Set(DBUS_NAME,"reboot",1) - self.powerOff() - return None - - @dbus.service.method(DBUS_NAME, - in_signature='', out_signature='') - def softReboot(self): - print "Soft Rebooting" - if self.getPowerState() == POWER_OFF: - self.powerOn(); - else: - self.Set(DBUS_NAME,"reboot",1) - self.softPowerOff() - return None - - @dbus.service.method(DBUS_NAME, - in_signature='', out_signature='i') - def getPowerState(self): - intf = self.getInterface('power_control') - return intf.getPowerState() - - ## Signal handler - - def SystemStateHandler(self,state_name): - if (state_name == "HOST_POWERED_OFF" or state_name == "HOST_POWERED_ON"): - intf = self.getInterface('settings') - intf.Set("org.openbmc.settings.Host","system_state",state_name) - - if (state_name == "HOST_POWERED_OFF" and self.Get(DBUS_NAME,"reboot")==1): - self.powerOn() - - def power_button_signal_handler(self): - # toggle power - state = self.getPowerState() - if state == POWER_OFF: - self.powerOn() - elif state == POWER_ON: - self.powerOff(); - - def reset_button_signal_handler(self): - self.reboot(); - - def softreset_button_signal_handler(self): - self.softReboot(); - - def host_watchdog_signal_handler(self): - print "Watchdog Error, Hard Rebooting" - self.Set(DBUS_NAME,"reboot",1) - self.powerOff() - - def emergency_shutdown_signal_handler(self): - print "Emergency Shutdown!" - self.powerOff() - - + +class ChassisControlObject(DbusProperties, DbusObjectManager): + def getUuid(self): + uuid = ""; + try: + with open(MACHINE_ID) as f: + data = f.readline().rstrip('\n') + if (len(data) == 32): + uuid = data + else: + print "ERROR: UUID is not formatted correctly: " + data + except: + print "ERROR: Unable to open uuid file: " + MACHINE_ID + + return uuid + + def __init__(self, bus, name): + self.dbus_objects = {} + DbusProperties.__init__(self) + DbusObjectManager.__init__(self) + dbus.service.Object.__init__(self, bus, name) + ## load utilized objects + self.dbus_objects = { + 'power_control': { + 'bus_name': 'org.openbmc.control.Power', + 'object_name': '/org/openbmc/control/power0', + 'interface_name': 'org.openbmc.control.Power' + }, + 'identify_led': { + 'bus_name': 'org.openbmc.control.led', + 'object_name': '/org/openbmc/control/led/identify', + 'interface_name': 'org.openbmc.Led' + }, + 'watchdog': { + 'bus_name': 'org.openbmc.watchdog.Host', + 'object_name': '/org/openbmc/watchdog/host0', + 'interface_name': 'org.openbmc.Watchdog' + }, + 'host_services': { + 'bus_name': 'org.openbmc.HostServices', + 'object_name': '/org/openbmc/HostServices', + 'interface_name': 'org.openbmc.HostServices' + }, + 'settings': { + 'bus_name': 'org.openbmc.settings.Host', + 'object_name': '/org/openbmc/settings/host0', + 'interface_name': 'org.freedesktop.DBus.Properties' + }, + } + + # uuid + self.Set(DBUS_NAME, "uuid", self.getUuid()) + self.Set(DBUS_NAME, "reboot", 0) + + bus.add_signal_receiver(self.power_button_signal_handler, + dbus_interface="org.openbmc.Button", + signal_name="Released", + path="/org/openbmc/buttons/power0") + bus.add_signal_receiver(self.reset_button_signal_handler, + dbus_interface="org.openbmc.Button", + signal_name="PressedLong", + path="/org/openbmc/buttons/power0") + bus.add_signal_receiver(self.softreset_button_signal_handler, + dbus_interface="org.openbmc.Button", + signal_name="Released", + path="/org/openbmc/buttons/reset0") + + bus.add_signal_receiver(self.host_watchdog_signal_handler, + dbus_interface="org.openbmc.Watchdog", + signal_name="WatchdogError") + + bus.add_signal_receiver(self.emergency_shutdown_signal_handler, + dbus_interface="org.openbmc.SensorThresholds", + signal_name="Emergency") + + bus.add_signal_receiver(self.SystemStateHandler, + signal_name="GotoSystemState") + self.InterfacesAdded(name, self.properties) + + + def getInterface(self, name): + o = self.dbus_objects[name] + obj = bus.get_object(o['bus_name'], o['object_name'], introspect=False) + return dbus.Interface(obj, o['interface_name']) + + + @dbus.service.method(DBUS_NAME, + in_signature='', out_signature='') + def setIdentify(self): + print "Turn on identify" + intf = self.getInterface('identify_led') + intf.setOn() + return None + + @dbus.service.method(DBUS_NAME, + in_signature='', out_signature='') + def clearIdentify(self): + print "Turn on identify" + intf = self.getInterface('identify_led') + intf.setOff() + return None + + @dbus.service.method(DBUS_NAME, + in_signature='', out_signature='') + def powerOn(self): + print "Turn on power and boot" + self.Set(DBUS_NAME, "reboot", 0) + if (self.getPowerState() == 0): + intf = self.getInterface('power_control') + intf.setPowerState(POWER_ON) + intfwatchdog = self.getInterface('watchdog') + # Start watchdog with 30s timeout per the OpenPower Host IPMI Spec + #Once the host starts booting, it'll reset and refresh the timer + intfwatchdog.set(30000) + intfwatchdog.start() + return None + + @dbus.service.method(DBUS_NAME, + in_signature='', out_signature='') + def powerOff(self): + print "Turn off power" + intfwatchdog = self.getInterface('watchdog') + intfwatchdog.stop() + intf = self.getInterface('power_control') + intf.setPowerState(POWER_OFF) + return None + + @dbus.service.method(DBUS_NAME, + in_signature='', out_signature='') + def softPowerOff(self): + print "Soft off power" + intf = self.getInterface('host_services') + ## host services will call power off when ready + intf.SoftPowerOff() + return None + + @dbus.service.method(DBUS_NAME, + in_signature='', out_signature='') + def reboot(self): + print "Rebooting" + if self.getPowerState() == POWER_OFF: + self.powerOn(); + else: + self.Set(DBUS_NAME, "reboot", 1) + self.powerOff() + return None + + @dbus.service.method(DBUS_NAME, + in_signature='', out_signature='') + def softReboot(self): + print "Soft Rebooting" + if self.getPowerState() == POWER_OFF: + self.powerOn(); + else: + self.Set(DBUS_NAME, "reboot", 1) + self.softPowerOff() + return None + + @dbus.service.method(DBUS_NAME, + in_signature='', out_signature='i') + def getPowerState(self): + intf = self.getInterface('power_control') + return intf.getPowerState() + + ## Signal handler + + def SystemStateHandler(self, state_name): + if ( + state_name == "HOST_POWERED_OFF" or state_name == "HOST_POWERED_ON"): + intf = self.getInterface('settings') + intf.Set("org.openbmc.settings.Host", "system_state", state_name) + + if (state_name == "HOST_POWERED_OFF" and self.Get(DBUS_NAME, + "reboot") == 1): + self.powerOn() + + def power_button_signal_handler(self): + # toggle power + state = self.getPowerState() + if state == POWER_OFF: + self.powerOn() + elif state == POWER_ON: + self.powerOff(); + + def reset_button_signal_handler(self): + self.reboot(); + + def softreset_button_signal_handler(self): + self.softReboot(); + + def host_watchdog_signal_handler(self): + print "Watchdog Error, Hard Rebooting" + self.Set(DBUS_NAME, "reboot", 1) + self.powerOff() + + def emergency_shutdown_signal_handler(self): + print "Emergency Shutdown!" + self.powerOff() + if __name__ == '__main__': dbus.mainloop.glib.DBusGMainLoop(set_as_default=True) @@ -218,7 +226,7 @@ if __name__ == '__main__': name = dbus.service.BusName(DBUS_NAME, bus) obj = ChassisControlObject(bus, OBJ_NAME) mainloop = gobject.MainLoop() - + print "Running ChassisControlService" mainloop.run() |