Skip to content

Commit 2e5d797

Browse files
committed
Enh: remove leveldb dependency, by switching to sqlite if not installed.
1 parent 5d90c22 commit 2e5d797

File tree

59 files changed

+638
-125
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

59 files changed

+638
-125
lines changed

opsbro/dbwrapper.py

+11-10
Original file line numberDiff line numberDiff line change
@@ -1,32 +1,33 @@
11
from .log import logger
22

33

4-
class FakeDB(object):
5-
def __init__(self):
6-
self.already_error = False
4+
class SqliteDB(object):
5+
def __init__(self, path):
6+
from .misc.sqlitedict import SqliteDict
7+
self.db = SqliteDict(path+'.sqlite', autocommit=True)
78

89

910
def Get(self, key, fill_cache=False):
10-
return ''
11+
return self.db[key]
1112

1213

1314
def Put(self, key, value):
14-
return
15+
self.db[key] = value
1516

1617

1718
def GetStats(self):
18-
return ''
19+
return 'No stats from sqlitedb'
1920

2021

2122
class DBWrapper(object):
2223
def __init__(self):
2324
# only import leveldb when need
2425
self.leveldb = None
25-
self.is_leveldb_lib_imported = False
2626

2727

28+
# Want a database, if we can we ty leveldb, if not, fallback to sqlite
2829
def get_db(self, path):
29-
if not self.is_leveldb_lib_imported:
30+
if self.leveldb is None:
3031
try:
3132
import leveldb
3233
self.leveldb = leveldb
@@ -37,8 +38,8 @@ def get_db(self, path):
3738
db = self.leveldb.LevelDB(path)
3839
logger.info('KV database at path %s is opened: %s' % (path, db))
3940
return db
40-
logger.error('Librairy leveldb is missing, you cannot save KV values.')
41-
return FakeDB()
41+
logger.info('Librairy leveldb is missing, falling back to sqlite db backend.')
42+
return SqliteDB(path)
4243

4344

4445
dbwrapper = DBWrapper()

opsbro/kv.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -151,7 +151,7 @@ def __init__(self):
151151
def init(self, data_dir):
152152
self.data_dir = data_dir
153153
self.db_dir = os.path.join(data_dir, 'kv')
154-
self.db = dbwrapper.get_db(self.db_dir) # leveldb.LevelDB(self.db_dir)
154+
self.db = dbwrapper.get_db(self.db_dir)
155155
self.ttldb = TTLDatabase(os.path.join(data_dir, 'ttl'))
156156

157157
# We can now export our http interface

0 commit comments

Comments
 (0)