lots of changes
diff --git a/bin/chassis_control.py b/bin/chassis_control.py
index d11ab40..22c0314 100644
--- a/bin/chassis_control.py
+++ b/bin/chassis_control.py
@@ -1,42 +1,63 @@
 #!/usr/bin/env python
 
+import sys
 import gobject
 import dbus
 import dbus.service
 import dbus.mainloop.glib
+import System
 
 DBUS_NAME = 'org.openbmc.control.Chassis'
-OBJ_NAME = '/org/openbmc/control/Chassis'
+OBJ_NAME = '/org/openbmc/control/Chassis/'+sys.argv[1]
 
 POWER_OFF = 0
 POWER_ON = 1
 
+process_config = System.BarreleyeProcesses()
+
+
+
 class ChassisControlObject(dbus.service.Object):
 	def __init__(self,bus,name):
+		self.dbus_objects = { }
+		self.dbus_busses = {
+				'org.openbmc.control.Power' :        [ { 'name' : 'PowerControl1' ,   'intf' : 'org.openbmc.control.Power' } ],
+				'org.openbmc.leds.ChassisIdentify' : [ { 'name' : 'ChassisIdentify1', 'intf' : 'org.openbmc.control.Chassis' } ],
+				'org.openbmc.control.Host' :         [ { 'name' : 'HostControl1',     'intf' : 'org.openbmc.control.Host' } ]
+		}
 		self.power_sequence = 0
 		dbus.service.Object.__init__(self,bus,name)
 		bus = dbus.SessionBus()
 		try: 
-			# Get PowerControl object
-			power_control_service = bus.get_object('org.openbmc.control.Power','/org/openbmc/control/Power/0')
-			self.power_control_iface = dbus.Interface(power_control_service, 'org.openbmc.control.Power')
-			# Get ChassisIdentify object
-			chassis_identify_service = bus.get_object('org.openbmc.leds.ChassisIdentify','/org/openbmc/leds/ChassisIdentify/0')
-			self.identify_led_iface = dbus.Interface(chassis_identify_service, 'org.openbmc.Led');
-			# Get HostControl object
-			host_control_service = bus.get_object('org.openbmc.control.Host','/org/openbmc/control/Host/0')
-			self.host_control_iface = dbus.Interface(host_control_service, 'org.openbmc.control.Host');
-
-			bus.add_signal_receiver(self.power_button_signal_handler, 
-						dbus_interface = "org.openbmc.Button", signal_name = "ButtonPressed")
-    			bus.add_signal_receiver(self.power_good_signal_handler, 
-						dbus_interface = "org.openbmc.control.Power", signal_name = "PowerGood")
-
-
+			for bus_name in self.dbus_busses.keys():
+				self.request_name(bus_name,"",bus_name)
+			bus.add_signal_receiver(self.request_name,
+					dbus_interface = 'org.freedesktop.DBus', 
+					signal_name = "NameOwnerChanged")
 		except dbus.exceptions.DBusException, e:
 			# TODO: not sure what to do if can't find other services
-			print "Unable to find dependent services: ",e
+			print e
 
+		bus.add_signal_receiver(self.power_button_signal_handler, 
+					dbus_interface = "org.openbmc.Button", signal_name = "ButtonPressed", 
+					path="/org/openbmc/buttons/ButtonPower/PowerButton1" )
+    		bus.add_signal_receiver(self.power_good_signal_handler, 
+					dbus_interface = "org.openbmc.control.Power", signal_name = "PowerGood",
+					path="/org/openbmc/control/Power/PowerControl1")
+
+
+	
+	def request_name(self, bus_name, a, b):
+		# bus added
+		if (len(b) > 0 ):
+			if (self.dbus_busses.has_key(bus_name)):
+				obj_path = "/"+bus_name.replace('.','/')
+				for objs in self.dbus_busses[bus_name]:
+					inst_name = objs['name']
+					obj =  bus.get_object(bus_name,obj_path+"/"+inst_name)
+					print "Interface:  "+inst_name+","+objs['intf']
+					self.dbus_objects[inst_name] = dbus.Interface(obj, objs['intf'])
+	
 
 	@dbus.service.method(DBUS_NAME,
 		in_signature='', out_signature='s')
@@ -48,7 +69,7 @@
 		in_signature='', out_signature='')
 	def setIdentify(self):
 		print "Turn on identify"
-		self.identify_led_iface.setOn()
+		self.dbus_objects['ChassisIdentify1'].setOn()
 		return None
 
 
@@ -56,7 +77,7 @@
 		in_signature='', out_signature='')
 	def clearIdentify(self):
 		print "Turn off identify"
-		r=self.identify_led_iface.setOff()
+		r=self.dbus_objects['ChassisIdentify1'].setOff()
 		return None
 
 	@dbus.service.method(DBUS_NAME,
@@ -65,7 +86,7 @@
 		print "Turn on power and boot"
 		self.power_sequence = 0
 		if (self.getPowerState()==0):
-			self.power_control_iface.setPowerState(POWER_ON)
+			self.dbus_objects['PowerControl1'].setPowerState(POWER_ON)
 			self.power_sequence = 1
 		return None
 
@@ -73,13 +94,13 @@
 		in_signature='', out_signature='')
 	def setPowerOff(self):
 		print "Turn off power"
-		self.power_control_iface.setPowerState(POWER_OFF);
+		self.dbus_objects['PowerControl1'].setPowerState(POWER_OFF);
 		return None
 
 	@dbus.service.method(DBUS_NAME,
 		in_signature='', out_signature='i')
 	def getPowerState(self):
-		state = self.power_control_iface.getPowerState();
+		state = self.dbus_objects['PowerControl1'].getPowerState();
 		return state
 
 	@dbus.service.method(DBUS_NAME,
@@ -106,7 +127,7 @@
 	## Signal handler
 	def power_good_signal_handler(self):
 		if (self.power_sequence==1):
-			self.host_control_iface.boot()
+			self.dbus_objects['HostControl1'].boot()
 			self.power_sequence = 2