X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=sfa%2Fstorage%2Fdbschema.py;h=4c99fb2be40cffd212f98d4e71c323a988320609;hb=c900832bcc4f4dddceeac1978d56e5f10e0e2bb5;hp=79d3c6774715befef1cca54c937093f62160cdb9;hpb=2323eb5f54f6d958352b94e16119f1bfeda8dd07;p=sfa.git diff --git a/sfa/storage/dbschema.py b/sfa/storage/dbschema.py index 79d3c677..4c99fb2b 100644 --- a/sfa/storage/dbschema.py +++ b/sfa/storage/dbschema.py @@ -45,7 +45,6 @@ class DBSchema: self.url=alchemy.url self.engine=alchemy.engine self.repository="/usr/share/sfa/migrations" - self.meta=MetaData (bind=self.engine) def current_version (self): try: @@ -55,7 +54,8 @@ class DBSchema: def table_exists (self, tablename): try: - table=Table (tablename, self.meta, autoload=True) + metadata = MetaData (bind=self.engine) + table=Table (tablename, metadata, autoload=True) return True except NoSuchTableError: return False @@ -71,8 +71,9 @@ class DBSchema: try: # try to find out which old version this can be if not self.table_exists ('records'): - # this likely means we've just created the db, so it's either a fresh install - # or we come from a 'very old' depl. + # this likely means + # (.) we've just created the db, so it's either a fresh install, or + # (.) we come from a 'very old' depl. # in either case, an import is required but there's nothing to clean up print >> sys.stderr,"%s: make sure to run import"%(DBSchema.header,) elif self.table_exists ('sfa_db_version'): @@ -109,6 +110,8 @@ class DBSchema: after="%s"%self.current_version() if before != after: logger.info("DBSchema : upgraded version from %s to %s"%(before,after)) + else: + logger.debug("DBSchema : no change needed in db schema (%s==%s)"%(before,after)) # this trashes the db altogether, from the current model in sfa.storage.model # I hope this won't collide with ongoing migrations and all @@ -117,7 +120,10 @@ class DBSchema: def nuke (self): model.drop_tables(self.engine) # so in this case it's like we haven't initialized the db at all - migrate.drop_version_control (self.url, self.repository) + try: + migrate.drop_version_control (self.url, self.repository) + except migrate.exceptions.DatabaseNotControlledError: + logger.log_exc("Failed to drop version control") if __name__ == '__main__':