lots of changes
diff --git a/bin/ipmi_manager.py b/bin/ipmi_manager.py
new file mode 100644
index 0000000..479d1a1
--- /dev/null
+++ b/bin/ipmi_manager.py
@@ -0,0 +1,105 @@
+#!/usr/bin/env python
+
+import sys
+import subprocess
+from gi.repository import GObject
+
+import dbus
+import dbus.service
+import dbus.mainloop.glib
+import PropertyManager
+
+if (len(sys.argv) < 2):
+	print "Usage:  ipmi_manager.py [system name]"
+	exit(1)
+
+System = __import__(sys.argv[1])
+import Openbmc
+
+DBUS_NAME = 'org.openbmc.managers.Ipmi'
+OBJ_NAME = '/org/openbmc/managers/Ipmi'
+
+
+class IpmiManager(dbus.service.Object):
+	def __init__(self,bus,name):
+		dbus.service.Object.__init__(self,bus,name)
+
+	## IPMI commands
+	@dbus.service.method(DBUS_NAME,
+		in_signature='yv', out_signature='')
+	def setSensor(self,sensor_id,value):
+		intf_sens = Openbmc.getManagerInterface(bus,"Sensors")
+		intf_sens.setSensorFromId(sensor_id,value)
+
+	@dbus.service.method(DBUS_NAME,
+		in_signature='y', out_signature='v')
+	def getSensor(self,sensor_id):
+		intf_sens = Openbmc.getManagerInterface(bus,"Sensors")
+		return intf_sens.getSensorFromId(sensor_id)
+
+	@dbus.service.method(DBUS_NAME,
+		in_signature='ia{sv}', out_signature='')
+	def updateFru(self,fru_id,data):
+		intf_fru = Openbmc.getManagerInterface(bus,"Frus")
+		intf_fru.updateFru(fru_id,data)
+
+	@dbus.service.method(DBUS_NAME,
+		in_signature='', out_signature='s')
+	def getFrus(self):
+		intf_fru = Openbmc.getManagerInterface(bus,"Frus")
+		return intf_fru.getFrus()
+
+
+	@dbus.service.method(DBUS_NAME,
+		in_signature='', out_signature='')
+	def pokeHostWatchdog(self):
+		## TODO don't do hardcoding
+		obj =  bus.get_object('org.openbmc.watchdog.Host',
+				'/org/openbmc/watchdog/HostWatchdog_0')
+		intf = dbus.Interface(obj, 'org.openbmc.Watchdog' )
+		intf.poke()
+		return None
+
+	@dbus.service.method(DBUS_NAME,
+		in_signature='', out_signature='')
+	def startHostWatchdog(self):
+		## TODO don't do hardcoding
+		obj =  bus.get_object('org.openbmc.watchdog.Host',
+				'/org/openbmc/watchdog/HostWatchdog_0')
+		intf = dbus.Interface(obj, 'org.openbmc.Watchdog' )
+		intf.start()
+		return None
+
+	@dbus.service.method(DBUS_NAME,
+		in_signature='', out_signature='')
+	def powerOn(self):
+		## TODO don't do hardcoding
+		obj =  bus.get_object('org.openbmc.control.Chassis',
+				'/org/openbmc/control/Chassis')
+		intf = dbus.Interface(obj, 'org.openbmc.control.Chassis' )
+		intf.powerOn()
+		return None
+
+	@dbus.service.method(DBUS_NAME,
+		in_signature='', out_signature='')
+	def powerOff(self):
+		## TODO don't do hardcoding
+		obj =  bus.get_object('org.openbmc.control.Chassis',
+				'/org/openbmc/control/Chassis')
+		intf = dbus.Interface(obj, 'org.openbmc.control.Chassis' )
+		intf.powerOff()
+		return None
+
+
+
+
+if __name__ == '__main__':
+    dbus.mainloop.glib.DBusGMainLoop(set_as_default=True)
+    bus = dbus.SessionBus()
+    name = dbus.service.BusName(DBUS_NAME,bus)
+    obj = IpmiManager(bus,OBJ_NAME)
+    mainloop = GObject.MainLoop()
+
+    print "Running IpmiManager"
+    mainloop.run()
+