]> git.decadent.org.uk Git - dak.git/blobdiff - dak/update_db.py
marge from master
[dak.git] / dak / update_db.py
index f9b6e478fd6686ecde9d3b15f56b8f61ded2a645..f35521f49c61d50bd5a6c5129569d66e3eefd53d 100755 (executable)
@@ -1,7 +1,11 @@
 #!/usr/bin/env python
 
-""" Database Update Main Script """
+""" Database Update Main Script
+
+@contact: Debian FTP Master <ftpmaster@debian.org>
 # Copyright (C) 2008  Michael Casadevall <mcasadevall@debian.org>
+@license: GNU General Public License version 2 or later
+"""
 
 # This program is free software; you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
 
 ################################################################################
 
-import psycopg2, sys, fcntl, os
+import psycopg2
+import sys
+import fcntl
+import os
 import apt_pkg
 import time
 import errno
-from daklib import database
+
 from daklib import utils
+from daklib.dak_exceptions import DBUpdateError
 
 ################################################################################
 
 Cnf = None
-projectB = None
-required_database_schema = 3
+required_database_schema = 15
 
 ################################################################################
 
@@ -78,8 +85,6 @@ Updates dak's database schema to the lastest version. You should disable crontab
 ################################################################################
 
     def get_db_rev(self):
-        global projectB
-
         # We keep database revision info the config table
         # Try and access it
 
@@ -102,9 +107,10 @@ Updates dak's database schema to the lastest version. You should disable crontab
 
         try:
             # Build a connect string
-            connect_str = "dbname=%s"% (Cnf["DB::Name"])
-            if Cnf["DB::Host"] != '': connect_str += " host=%s" % (Cnf["DB::Host"])
-            if Cnf["DB::Port"] != '-1': connect_str += " port=%d" % (int(Cnf["DB::Port"]))
+#            connect_str = "dbname=%s"% (Cnf["DB::Name"])
+            connect_str = "dbname=%s"% "projectbstew"
+#            if Cnf["DB::Host"] != '': connect_str += " host=%s" % (Cnf["DB::Host"])
+#            if Cnf["DB::Port"] != '-1': connect_str += " port=%d" % (int(Cnf["DB::Port"]))
 
             self.db = psycopg2.connect(connect_str)
 
@@ -136,16 +142,22 @@ Updates dak's database schema to the lastest version. You should disable crontab
             sys.exit(0)
 
         for i in range (database_revision, required_database_schema):
-            print "updating databse schema from " + str(database_revision) + " to " + str(i+1)
-            dakdb = __import__("dakdb", globals(), locals(), ['update'+str(i+1)])
-            update_module = getattr(dakdb, "update"+str(i+1))
-            update_module.do_update(self)
+            print "updating database schema from " + str(database_revision) + " to " + str(i+1)
+            try:
+                dakdb = __import__("dakdb", globals(), locals(), ['update'+str(i+1)])
+                update_module = getattr(dakdb, "update"+str(i+1))
+                update_module.do_update(self)
+            except DBUpdateError, e:
+                # Seems the update did not work.
+                print "Was unable to update database schema from %s to %s." % (str(database_revision), str(i+1))
+                print "The error message received was %s" % (e)
+                utils.fubar("DB Schema upgrade failed")
             database_revision += 1
 
 ################################################################################
 
     def init (self):
-        global Cnf, projectB
+        global Cnf
 
         Cnf = utils.get_conf()
         arguments = [('h', "help", "Update-DB::Options::Help")]