From: Ansgar Burchardt Date: Thu, 31 May 2012 08:24:57 +0000 (+0200) Subject: dak/admin.py: add archive subcommand X-Git-Url: https://git.decadent.org.uk/gitweb/?a=commitdiff_plain;h=091c71d5917bb976ca48fff767f3c69afb765578;p=dak.git dak/admin.py: add archive subcommand --- diff --git a/dak/admin.py b/dak/admin.py index 378a878a..c77e93f3 100755 --- a/dak/admin.py +++ b/dak/admin.py @@ -96,6 +96,14 @@ Perform administrative work on the dak database. s-a rm SUITE ARCH remove ARCH from suite (will only work if no packages remain for the arch in the suite) + archive: + archive list list all archives + archive add NAME ROOT DESCRIPTION [primary-mirror=MIRROR] [tainted=1] + add archive NAME with path ROOT, + primary mirror MIRROR. + archive rm NAME remove archive NAME (will only work if there are + no files and no suites in the archive) + version-check / v-c: v-c list show version checks for all suites v-c list-suite SUITE show version checks for suite SUITE @@ -378,6 +386,64 @@ dispatch['s-a'] = suite_architecture ################################################################################ +def archive_list(): + session = DBConn().session() + for archive in session.query(Archive).order_by(Archive.archive_name): + print "{0} path={1} description={2} tainted={3}".format(archive.archive_name, archive.path, archive.description, archive.tainted) + +def archive_add(args): + (name, path, description) = args[0:3] + + attributes = dict( + archive_name=name, + path=path, + description=description, + ) + + for option in args[3:]: + (key, value) = option.split('=') + attributes[key] = value + + session = DBConn().session() + + archive = Archive() + for key, value in attributes.iteritems(): + setattr(archive, key, value) + + session.add(archive) + session.flush() + + if dryrun: + session.rollback() + else: + session.commit() + +def archive_rm(name): + session = DBConn().session() + archive = session.query(Archive).filter_by(archive_name=name).one() + session.delete(archive) + session.flush() + + if dryrun: + session.rollback() + else: + session.commit() + +def archive(command): + mode = command[1] + if mode == 'list': + archive_list() + elif mode == 'add': + archive_add(command[2:]) + elif mode == 'rm': + archive_rm(command[2]) + else: + die("E: archive command unknown") + +dispatch['archive'] = archive + +################################################################################ + def __version_check_list(d): session = d.session() for s in session.query(Suite).order_by(Suite.suite_name):