lots of changes
diff --git a/bin/PropertyManager.py b/bin/PropertyManager.py
index 312c688..ff0e200 100644
--- a/bin/PropertyManager.py
+++ b/bin/PropertyManager.py
@@ -4,81 +4,84 @@
import cPickle
import os
import Openbmc
-import gobject
import dbus
import dbus.service
import dbus.mainloop.glib
+from gi.repository import Gio, GLib, GObject
-SAVE_PATH = 'data/'
-
-def loadProperties(bus,bus_name,obj_path,properties):
- ## Load properties from system config
- obj = bus.get_object(bus_name,obj_path)
- dbus_properties = dbus.Interface(obj, 'org.freedesktop.DBus.Properties')
- for prop_interface in properties.keys():
- print "Intf: "+prop_interface
- for prop in properties[prop_interface]:
- tmp_val = dbus_properties.Get(prop_interface,prop)
- dbus_prop = Openbmc.DbusProperty(prop,tmp_val)
- value = properties[prop_interface][prop]
- dbus_prop.changeValue(value)
- dbus_properties.Set(prop_interface,prop,dbus_prop.getValue())
-
- ## if save file exists, overlay properties from file
- directory = obj_path.replace('/','.')
- directory = SAVE_PATH+directory.lstrip('.')
- filename = directory+"/"+prop_interface
- if (os.path.isfile(filename) == False):
- ## not an error
- print "No cache available for: "+filename
- else:
- try:
- print "Loading from disk: "+obj_path
- output = open(filename, 'rb')
- dbus_props = cPickle.load(output)
- output.close()
- save_properties = dbus.Interface(obj, 'org.freedesktop.DBus.Properties')
- for dbus_prop in dbus_props:
- save_properties.Set(prop_interface,dbus_prop.getName(),dbus_prop.getValue())
-
- except Exception as e:
- ## TODO: Error handling
- print "Error loadFru: "+str(e)
-
- return None
-
-def saveProperties(bus,bus_name,obj_path,interface_name,cache,properties):
- obj = bus.get_object(bus_name,obj_path)
- prop_intf = dbus.Interface(obj, 'org.freedesktop.DBus.Properties')
-
- for prop in properties.keys():
- print "Saving properties: "+prop
- prop_intf.Set(interface_name,prop,properties[prop])
-
-
- dbus_props = []
- if (cache):
- print "Caching: "+obj_path
- all_properties = prop_intf.GetAll(interface_name)
- for prop in all_properties.keys():
- dbus_prop = Openbmc.DbusProperty(prop,all_properties[prop])
- dbus_props.append(dbus_prop)
-
- try:
+class PropertyManager():
+ def __init__(self,bus,save_path):
+ self.bus = bus
+ self.save_path = save_path
+
+ def loadProperties(self,bus_name,obj_path,properties):
+ ## Load properties from system config
+ obj = self.bus.get_object(bus_name,obj_path)
+ dbus_properties = dbus.Interface(obj, 'org.freedesktop.DBus.Properties')
+ for prop_interface in properties.keys():
+ for prop in properties[prop_interface]:
+ tmp_val = dbus_properties.Get(prop_interface,prop)
+ dbus_prop = Openbmc.DbusProperty(prop,tmp_val)
+ value = properties[prop_interface][prop]
+ dbus_prop.setValue(value)
+ dbus_properties.Set(prop_interface,prop,dbus_prop.getValue())
+
+ ## if save file exists, overlay properties from file
directory = obj_path.replace('/','.')
- directory = SAVE_PATH+directory.lstrip('.')
- filename = directory+"/"+interface_name
- if not os.path.exists(directory):
- os.makedirs(directory)
-
- output = open(filename, 'wb')
- cPickle.dump(dbus_props,output)
- output.close()
- except Exception as e:
- ## TODO: error handling
- print str(e)
+ directory = self.save_path+directory.lstrip('.')
+ filename = directory+"/"+prop_interface
+ if (os.path.isfile(filename) == False):
+ ## not an error
+ print "No cache available for: "+filename
+ else:
+ try:
+ print "Loading from disk: "+obj_path
+ output = open(filename, 'rb')
+ dbus_props = cPickle.load(output)
+ output.close()
+ save_properties = dbus.Interface(obj, 'org.freedesktop.DBus.Properties')
+ for dbus_prop in dbus_props:
+ save_properties.Set(prop_interface,dbus_prop.getName(),dbus_prop.getValue())
- return None
+ except Exception as e:
+ ## TODO: Error handling
+ print "Error loadFru: "+str(e)
+
+ return None
+
+ def saveProperties(self,bus_name,obj_path,interface_name,cache,properties):
+ obj = self.bus.get_object(bus_name,obj_path)
+ prop_intf = dbus.Interface(obj, 'org.freedesktop.DBus.Properties')
+
+ for prop in properties.keys():
+ print "Saving properties: "+prop
+ ## convert property to correct dbus type
+ print type(properties[prop])
+ prop_intf.Set(interface_name,prop,properties[prop])
+
+ dbus_props = []
+ if (cache):
+ print "Caching: "+obj_path
+ all_properties = prop_intf.GetAll(interface_name)
+ for prop in all_properties.keys():
+ dbus_prop = Openbmc.DbusProperty(prop,all_properties[prop])
+ dbus_props.append(dbus_prop)
+
+ try:
+ directory = obj_path.replace('/','.')
+ directory = self.save_path+directory.lstrip('.')
+ filename = directory+"/"+interface_name
+ if not os.path.exists(directory):
+ os.makedirs(directory)
+
+ output = open(filename, 'wb')
+ cPickle.dump(dbus_props,output)
+ output.close()
+ except Exception as e:
+ ## TODO: error handling
+ print str(e)
+
+ return None