Add functions to wipe and save plugin config data
authorSimo Sorce <simo@redhat.com>
Wed, 19 Mar 2014 22:41:56 +0000 (18:41 -0400)
committerSimo Sorce <simo@redhat.com>
Thu, 20 Mar 2014 21:28:03 +0000 (17:28 -0400)
This way all is needed is to instantiate a proper PluginObject from
any provider and just call its functions

Signed-off-by: Simo Sorce <simo@redhat.com>
ipsilon/util/data.py
ipsilon/util/plugin.py

index 2a55bb2..70e7d74 100755 (executable)
@@ -189,6 +189,25 @@ class Store(object):
             if con:
                 con.close()
 
+    def wipe_plugin_config(self, facility, plugin):
+        # Try to backup old data first, just in case ?
+        try:
+            con = sqlite3.connect(self._admin_dbname)
+            cur = con.cursor()
+            cur.execute("CREATE TABLE IF NOT EXISTS " +
+                        facility + " (name TEXT,option TEXT,value TEXT)")
+            cur.execute("DELETE FROM " + facility + " WHERE name=?",
+                        (plugin,))
+            con.commit()
+        except sqlite3.Error, e:
+            if con:
+                con.rollback()
+            cherrypy.log.error("Failed to wipe %s config: [%s]" % (plugin, e))
+            raise
+        finally:
+            if con:
+                con.close()
+
     def get_data(self, plugin, idval=None, name=None, value=None):
         con = None
         rows = []
@@ -276,3 +295,21 @@ class Store(object):
         finally:
             if con:
                 con.close()
+
+    def wipe_data(self, plugin):
+        # Try to backup old data first, just in case
+        try:
+            con = sqlite3.connect(self._admin_dbname)
+            cur = con.cursor()
+            cur.execute("DROP TABLE IF EXISTS " + plugin + "_data")
+            cur.execute("CREATE TABLE " + plugin + "_data"
+                        "(id INTEGER, name TEXT, value TEXT)")
+            con.commit()
+        except sqlite3.Error, e:
+            if con:
+                con.rollback()
+            cherrypy.log.error("Failed to wipe %s data: [%s]" % (plugin, e))
+            raise
+        finally:
+            if con:
+                con.close()
index fce058d..9ffa131 100755 (executable)
@@ -144,9 +144,18 @@ class PluginObject(object):
             self._config = dict()
         self._config[option] = value
 
+    def save_plugin_config(self, facility):
+        self._data.save_plugin_config(facility, self.name, self._config)
+
     def get_data(self, idval=None, name=None, value=None):
         return self._data.get_data(self.name, idval=idval, name=name,
                                    value=value)
 
     def save_data(self, data):
         self._data.save_data(self.name, data)
+
+    def wipe_config_values(self, facility):
+        self._data.wipe_plugin_config(facility, self.name)
+
+    def wipe_data(self):
+        self._data.wipe_data(self.name)