From 14ca1d5ed8b7ea783d57d76802d8cb93d7f2fabb Mon Sep 17 00:00:00 2001 From: Mark Hymers Date: Sat, 8 Nov 2014 14:14:35 +0000 Subject: [PATCH] Add database update to contain release_suite field Signed-off-by: Mark Hymers --- dak/dakdb/update105.py | 57 ++++++++++++++++++++++++++++++++++++++++ dak/generate_releases.py | 13 ++------- daklib/dbconn.py | 6 +++++ 3 files changed, 65 insertions(+), 11 deletions(-) create mode 100644 dak/dakdb/update105.py diff --git a/dak/dakdb/update105.py b/dak/dakdb/update105.py new file mode 100644 index 00000000..6ae17d72 --- /dev/null +++ b/dak/dakdb/update105.py @@ -0,0 +1,57 @@ +#!/usr/bin/env python +# coding=utf8 + +""" +Add a new release_suite name which we use in generate_releases + +@contact: Debian FTP Master +@copyright: 2014, Mark Hymers +@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 +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + +################################################################################ + +import psycopg2 +from daklib.dak_exceptions import DBUpdateError +from daklib.config import Config + +# This includes some updates to the tables which are Debian specific but +# shouldn't affect anyone else +statements = [ +"ALTER TABLE suite ADD COLUMN release_suite TEXT DEFAULT NULL", +"UPDATE suite SET release_suite = 'oldstable-updates' WHERE suite_name = 'squeeze-updates'", +"UPDATE suite SET release_suite = 'stable-updates' WHERE suite_name = 'wheezy-updates'", +"UPDATE suite SET release_suite = 'testing-updates' WHERE suite_name = 'jessie-updates'", +] + +################################################################################ +def do_update(self): + print __doc__ + try: + cnf = Config() + + c = self.db.cursor() + + for stmt in statements: + c.execute(stmt) + + c.execute("UPDATE config SET value = '105' WHERE name = 'db_revision'") + self.db.commit() + + except psycopg2.ProgrammingError as msg: + self.db.rollback() + raise DBUpdateError('Unable to apply sick update 105, rollback issued. Error message: {0}'.format(msg)) diff --git a/dak/generate_releases.py b/dak/generate_releases.py index ce8f1281..57830390 100755 --- a/dak/generate_releases.py +++ b/dak/generate_releases.py @@ -137,7 +137,7 @@ class ReleaseWriter(object): # fill them in attribs = ( ('Origin', 'origin'), ('Label', 'label'), - ('Suite', 'suite_name'), + ('Suite', 'release_suite_output'), ('Version', 'version'), ('Codename', 'codename') ) @@ -159,16 +159,7 @@ class ReleaseWriter(object): out = open(outfile + ".new", "w") for key, dbfield in attribs: - if getattr(suite, dbfield) is not None: - # TEMPORARY HACK HACK HACK until we change the way we store the suite names etc - if key == 'Suite' and getattr(suite, dbfield) == 'squeeze-updates': - out.write("Suite: oldstable-updates\n") - elif key == 'Suite' and getattr(suite, dbfield) == 'wheezy-updates': - out.write("Suite: stable-updates\n") - elif key == 'Suite' and getattr(suite, dbfield) == 'jessie-updates': - out.write("Suite: testing-updates\n") - else: - out.write("%s: %s\n" % (key, getattr(suite, dbfield))) + out.write("%s: %s\n" % (key, getattr(suite, dbfield))) out.write("Date: %s\n" % (time.strftime("%a, %d %b %Y %H:%M:%S UTC", time.gmtime(time.time())))) diff --git a/daklib/dbconn.py b/daklib/dbconn.py index c2621e36..535c7f8e 100644 --- a/daklib/dbconn.py +++ b/daklib/dbconn.py @@ -2274,6 +2274,12 @@ class Suite(ORMObject): def path(self): return os.path.join(self.archive.path, 'dists', self.suite_name) + @property + def release_suite_output(self): + if self.release_suite is not None: + return self.release_suite + return self.suite_name + __all__.append('Suite') @session_wrapper -- 2.39.2