diff options
Diffstat (limited to 'storperf/db/configuration_db.py')
-rw-r--r-- | storperf/db/configuration_db.py | 115 |
1 files changed, 66 insertions, 49 deletions
diff --git a/storperf/db/configuration_db.py b/storperf/db/configuration_db.py index 649c186..700588d 100644 --- a/storperf/db/configuration_db.py +++ b/storperf/db/configuration_db.py @@ -8,74 +8,88 @@ ############################################################################## from _sqlite3 import OperationalError +from threading import Lock import logging import sqlite3 +db_mutex = Lock() + class ConfigurationDB(object): - db_name = "StorPerf.db" + db_name = "StorPerfConfig.db" def __init__(self): """ - Creates the StorPerf.db and configuration tables on demand + Creates the StorPerfConfig.db and configuration tables on demand """ self.logger = logging.getLogger(__name__) self.logger.debug("Connecting to " + ConfigurationDB.db_name) - db = sqlite3.connect(ConfigurationDB.db_name) - - cursor = db.cursor() - try: - cursor.execute('''CREATE TABLE configuration - (configuration_name text, - key text, - value text)''') - self.logger.debug("Created configuration table") - except OperationalError: - self.logger.debug("Configuration table exists") - - cursor.execute('SELECT * FROM configuration') + with db_mutex: + db = sqlite3.connect(ConfigurationDB.db_name) + + cursor = db.cursor() + try: + cursor.execute('''CREATE TABLE configuration + (configuration_name text, + key text, + value text)''') + self.logger.debug("Created configuration table") + except OperationalError: + self.logger.debug("Configuration table exists") + + cursor.execute('SELECT * FROM configuration') + db.commit() + db.close() def delete_configuration_value(self, configuration_name, key): """Deletes the value associated with the given key """ - db = sqlite3.connect(ConfigurationDB.db_name) - cursor = db.cursor() + with db_mutex: + db = sqlite3.connect(ConfigurationDB.db_name) + cursor = db.cursor() - cursor.execute( - "delete from configuration where configuration_name=? and key=?", - (configuration_name, key)) + cursor.execute( + "delete from configuration where configuration_name=? and key=?", + (configuration_name, key)) - self.logger.debug("Deleted " + configuration_name + ":" + key) + self.logger.debug("Deleted " + configuration_name + ":" + key) - db.commit() + db.commit() + db.close() def get_configuration_value(self, configuration_name, key): """Returns a string representation of the value stored with this key under the given configuration name. """ - db = sqlite3.connect(ConfigurationDB.db_name) - cursor = db.cursor() + with db_mutex: + db = sqlite3.connect(ConfigurationDB.db_name) + cursor = db.cursor() - cursor.execute( - """select value from configuration - where configuration_name = ? - and key = ?""", - (configuration_name, key,)) + cursor.execute( + """select value from configuration + where configuration_name = ? + and key = ?""", + (configuration_name, key,)) - row = cursor.fetchone() + row = cursor.fetchone() - if (row is None): - self.logger.debug( - configuration_name + ":" + key + " does not exist") - return None - else: - self.logger.debug( - configuration_name + ":" + key + " is " + str(row[0])) - return str(row[0]) + return_value = None + + if (row is None): + self.logger.debug( + configuration_name + ":" + key + " does not exist") + else: + self.logger.debug( + configuration_name + ":" + key + " is " + str(row[0])) + return_value = str(row[0]) + + db.close() + + return return_value def set_configuration_value(self, configuration_name, key, value): """Updates or creates the key under the given configuration @@ -85,19 +99,22 @@ class ConfigurationDB(object): if (value is None): return self.delete_configuration_value(configuration_name, key) - value = str(value) + with db_mutex: + value = str(value) - db = sqlite3.connect(ConfigurationDB.db_name) - cursor = db.cursor() + db = sqlite3.connect(ConfigurationDB.db_name) + cursor = db.cursor() - cursor.execute( - "delete from configuration where configuration_name=? and key=?", - (configuration_name, key)) + cursor.execute( + "delete from configuration where configuration_name=? and key=?", + (configuration_name, key)) - cursor.execute( - """insert into configuration(configuration_name, key, value) - values (?,?,?)""", (configuration_name, key, value)) + cursor.execute( + """insert into configuration(configuration_name, key, value) + values (?,?,?)""", (configuration_name, key, value)) - self.logger.debug(configuration_name + ":" + key + " set to " + value) + self.logger.debug( + configuration_name + ":" + key + " set to " + value) - db.commit() + db.commit() + db.close() |