From 024b82481be46405d4eb4ba14bb71ebc6c5ccf47 Mon Sep 17 00:00:00 2001 From: Sebastien Luttringer <sebastien.luttringer@smartjog.com> Date: Tue, 20 Dec 2011 19:31:42 +0100 Subject: [PATCH] introduce repo and database strict versionning --- installsystems/database.py | 13 +++++++++++++ installsystems/repository.py | 9 +++++++-- 2 files changed, 20 insertions(+), 2 deletions(-) diff --git a/installsystems/database.py b/installsystems/database.py index 5b91277..c723e26 100644 --- a/installsystems/database.py +++ b/installsystems/database.py @@ -47,10 +47,23 @@ class Database(object): raise Exception("Database not exists") self.conn = sqlite3.connect(self.path, isolation_level=None) 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 try: self.ask("SELECT * FROM image") except: + debug("Invalid database format: %s" % self.version) raise Exception("Invalid database format") def begin(self): diff --git a/installsystems/repository.py b/installsystems/repository.py index 84d0439..365408d 100644 --- a/installsystems/repository.py +++ b/installsystems/repository.py @@ -66,7 +66,6 @@ class Repository(object): def __init__(self, config): self.config = config - self.version = 1 self.local = istools.isfile(self.config.path) if not self.config.offline: try: @@ -76,7 +75,6 @@ class Repository(object): if self.config.offline: debug("Repository %s is offline" % config.name) - def __getattribute__(self, name): ''' Raise an error if repository is unavailable @@ -92,6 +90,13 @@ class Repository(object): raise Exception("Repository %s is offline" % config.name) return object.__getattribute__(self, name) + @property + def version(self): + ''' + Return repository version + ''' + return self.db.version + def init(self): ''' Initialize an empty base repository -- GitLab