added virtual sensors
diff --git a/bin/Openbmc.py b/bin/Openbmc.py
index 485525c..f086898 100755
--- a/bin/Openbmc.py
+++ b/bin/Openbmc.py
@@ -74,10 +74,12 @@
 	tmp_path = path
 	if (path == ""):
 		tmp_path="/"
+
 	obj = bus.get_object(bus_name,tmp_path)
 	introspect_iface = dbus.Interface(obj,"org.freedesktop.DBus.Introspectable")
  	tree = ET.ElementTree(ET.fromstring(introspect_iface.Introspect()))
  	root = tree.getroot()
+
 	parent = True
 	for node in root.iter('node'):
 		for intf in node.iter('interface'):
diff --git a/bin/sensors_virtual_p8.py b/bin/sensors_virtual_p8.py
new file mode 100755
index 0000000..d8bf1ef
--- /dev/null
+++ b/bin/sensors_virtual_p8.py
@@ -0,0 +1,170 @@
+#!/usr/bin/env python
+
+import sys
+#from gi.repository import GObject
+import gobject
+import dbus
+import dbus.service
+import dbus.mainloop.glib
+import Openbmc
+
+SENSOR_INTERFACE = 'org.openbmc.SensorValue'
+DBUS_NAME = 'org.openbmc.sensor.Power8Virtual'
+OBJ_NAME = '/org/openbmc/sensor/virtual/'
+
+class BootProgress(dbus.service.Object):
+	def __init__(self,bus,name):
+		self.object_name = "BootProgress"
+		self.value = 0
+		self.units = ""
+		dbus.service.Object.__init__(self,bus,name+self.object_name)
+
+	@dbus.service.method(SENSOR_INTERFACE,
+		in_signature='v', out_signature='')
+	def setValue(self,value):
+		if (value != self.value):
+			self.value=value
+			self.Changed()
+
+	@dbus.service.method(SENSOR_INTERFACE,
+		in_signature='', out_signature='v')
+	def getValue(self):
+		return self.value;
+
+	@dbus.service.method(SENSOR_INTERFACE,
+		in_signature='', out_signature='s')
+	def getUnits(self):
+		return self.units;
+
+	@dbus.service.signal(SENSOR_INTERFACE,signature='vs')
+	def Changed(self,value,units):
+		pass
+		
+class HostStatus(dbus.service.Object):
+	def __init__(self,bus,name):
+		self.object_name = "HostStatus"
+		self.value = 0
+		self.units = ""
+		dbus.service.Object.__init__(self,bus,name+self.object_name)
+
+	@dbus.service.method(SENSOR_INTERFACE,
+		in_signature='v', out_signature='')
+	def setValue(self,value):
+		if (value != self.value):
+			self.value=value
+			self.Changed(self.value,self.units)
+
+	@dbus.service.method(SENSOR_INTERFACE,
+		in_signature='', out_signature='v')
+	def getValue(self):
+		return self.value;
+
+	@dbus.service.method(SENSOR_INTERFACE,
+		in_signature='', out_signature='s')
+	def getUnits(self):
+		return self.units;
+		
+	@dbus.service.signal(SENSOR_INTERFACE,signature='vs')
+	def Changed(self,value,units):
+		pass
+
+class OsStatus(dbus.service.Object):
+	def __init__(self,bus,name):
+		self.object_name = "OperatingSystemStatus"
+		self.value = 0
+		self.units = ""
+		dbus.service.Object.__init__(self,bus,name+self.object_name)
+
+	@dbus.service.method(SENSOR_INTERFACE,
+		in_signature='v', out_signature='')
+	def setValue(self,value):
+		if (value != self.value):
+			self.value=value
+			self.Changed(self.value,self.units)
+
+	@dbus.service.method(SENSOR_INTERFACE,
+		in_signature='', out_signature='v')
+	def getValue(self):
+		return self.value;
+
+	@dbus.service.method(SENSOR_INTERFACE,
+		in_signature='', out_signature='s')
+	def getUnits(self):
+		return self.units;
+		
+	@dbus.service.signal(SENSOR_INTERFACE,signature='vs')
+	def Changed(self,value,units):
+		pass
+		
+class BootCount(dbus.service.Object):
+	def __init__(self,bus,name):
+		self.object_name = "BootCount"
+		self.value = 0
+		self.units = ""
+		dbus.service.Object.__init__(self,bus,name+self.object_name)
+
+	@dbus.service.method(SENSOR_INTERFACE,
+		in_signature='v', out_signature='')
+	def setValue(self,value):
+		if (value != self.value):
+			self.value=value
+			self.Changed(self.value,self.units)
+
+	@dbus.service.method(SENSOR_INTERFACE,
+		in_signature='', out_signature='v')
+	def getValue(self):
+		return self.value;
+
+	@dbus.service.method(SENSOR_INTERFACE,
+		in_signature='', out_signature='s')
+	def getUnits(self):
+		return self.units;
+		
+	@dbus.service.signal(SENSOR_INTERFACE,signature='vs')
+	def Changed(self,value,units):
+		pass
+
+
+class OccStatus(dbus.service.Object):
+	def __init__(self,bus,name):
+		self.object_name = "OccStatus"
+		self.value = 0
+		self.units = ""
+		dbus.service.Object.__init__(self,bus,name+self.object_name)
+
+	@dbus.service.method(SENSOR_INTERFACE,
+		in_signature='v', out_signature='')
+	def setValue(self,value):
+		if (value != self.value):
+			self.value=value
+			self.Changed(self.value,self.units)
+
+	@dbus.service.method(SENSOR_INTERFACE,
+		in_signature='', out_signature='v')
+	def getValue(self):
+		return self.value;
+
+	@dbus.service.method(SENSOR_INTERFACE,
+		in_signature='', out_signature='s')
+	def getUnits(self):
+		return self.units;
+		
+	@dbus.service.signal(SENSOR_INTERFACE,signature='vs')
+	def Changed(self,value,units):
+		pass
+
+				
+if __name__ == '__main__':
+    dbus.mainloop.glib.DBusGMainLoop(set_as_default=True)
+    bus = Openbmc.getDBus()
+    name = dbus.service.BusName(DBUS_NAME,bus)
+    boot_progress = BootProgress(bus,OBJ_NAME)
+    host_status = HostStatus(bus,OBJ_NAME)
+    os_status = OsStatus(bus,OBJ_NAME)
+    boot_count = BootCount(bus,OBJ_NAME)
+    occ_status = OccStatus(bus,OBJ_NAME)
+    mainloop = gobject.MainLoop()
+
+    print "Starting virtual sensors"
+    mainloop.run()
+