Skip to content
Snippets Groups Projects
Commit 024b8248 authored by Sebastien Luttringer's avatar Sebastien Luttringer
Browse files

introduce repo and database strict versionning

parent f61d2075
No related branches found
No related tags found
No related merge requests found
...@@ -47,10 +47,23 @@ class Database(object): ...@@ -47,10 +47,23 @@ class Database(object):
raise Exception("Database not exists") raise Exception("Database not exists")
self.conn = sqlite3.connect(self.path, isolation_level=None) self.conn = sqlite3.connect(self.path, isolation_level=None)
self.conn.execute("PRAGMA foreign_keys = ON") self.conn.execute("PRAGMA foreign_keys = ON")
# get database version
try:
r = self.ask("SELECT value FROM misc WHERE key = 'version'").fetchone()
if r is None:
raise TypeError()
self.version = r[0]
except:
self.version = u"1"
# we only support database v1
if self.version != u"1":
debug("Invalid database format: %s" % self.version)
raise Exception("Invalid database format")
# we make a query to be sure format is valid # we make a query to be sure format is valid
try: try:
self.ask("SELECT * FROM image") self.ask("SELECT * FROM image")
except: except:
debug("Invalid database format: %s" % self.version)
raise Exception("Invalid database format") raise Exception("Invalid database format")
def begin(self): def begin(self):
......
...@@ -66,7 +66,6 @@ class Repository(object): ...@@ -66,7 +66,6 @@ class Repository(object):
def __init__(self, config): def __init__(self, config):
self.config = config self.config = config
self.version = 1
self.local = istools.isfile(self.config.path) self.local = istools.isfile(self.config.path)
if not self.config.offline: if not self.config.offline:
try: try:
...@@ -76,7 +75,6 @@ class Repository(object): ...@@ -76,7 +75,6 @@ class Repository(object):
if self.config.offline: if self.config.offline:
debug("Repository %s is offline" % config.name) debug("Repository %s is offline" % config.name)
def __getattribute__(self, name): def __getattribute__(self, name):
''' '''
Raise an error if repository is unavailable Raise an error if repository is unavailable
...@@ -92,6 +90,13 @@ class Repository(object): ...@@ -92,6 +90,13 @@ class Repository(object):
raise Exception("Repository %s is offline" % config.name) raise Exception("Repository %s is offline" % config.name)
return object.__getattribute__(self, name) return object.__getattribute__(self, name)
@property
def version(self):
'''
Return repository version
'''
return self.db.version
def init(self): def init(self):
''' '''
Initialize an empty base repository Initialize an empty base repository
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment