X-Git-Url: https://git.decadent.org.uk/gitweb/?a=blobdiff_plain;f=dak%2Fadmin.py;h=2183c2293b2ad4c039d1658362b1f72ad318c22b;hb=21407ef8d3338a7e8eff6e4e3b4780481e46e644;hp=d159651e75df850904971df8f7b3705b4bbd6837;hpb=2503c5721f91672e41e4af43aec4106c677db453;p=dak.git diff --git a/dak/admin.py b/dak/admin.py index d159651e..2183c229 100755 --- a/dak/admin.py +++ b/dak/admin.py @@ -61,6 +61,11 @@ Perform administrative work on the dak database. c db-shell show db config in a usable form for psql c NAME show option NAME as set in configuration table + keyring / k: + k list-all list all keyrings + k list-binary list all keyrings with a NULL source acl + k list-source list all keyrings with a non NULL source acl + architecture / a: a list show a list of architectures a rm ARCH remove an architecture (will only work if @@ -78,6 +83,9 @@ Perform administrative work on the dak database. add suite SUITE, version VERSION. label, description, origin and codename are optional. + s add-all-arches SUITE VERSION... as "s add" but adds suite-architecture + relationships for all architectures + suite-architecture / s-a: s-a list show the architectures for all suites s-a list-suite ARCH show the suites an ARCH is in @@ -188,7 +196,7 @@ def __suite_show(d, args): print su.details() -def __suite_add(d, args): +def __suite_add(d, args, addallarches=False): die_arglen(args, 4, "E: adding a suite requires at least a name and a version") suite_name = args[2].lower() version = args[3] @@ -212,13 +220,25 @@ def __suite_add(d, args): suite.origin = get_field('origin') suite.codename = get_field('codename') s.add(suite) - s.commit() + s.flush() except IntegrityError, e: die("E: Integrity error adding suite %s (it probably already exists)" % suite_name) except SQLAlchemyError, e: die("E: Error adding suite %s (%s)" % (suite_name, e)) print "Suite %s added" % (suite_name) + if addallarches: + arches = [] + q = s.query(Architecture).order_by('arch_string') + for arch in q.all(): + suite.architectures.append(arch) + arches.append(arch.arch_string) + + print "Architectures %s added to %s" % (','.join(arches), suite_name) + + s.commit() + + def suite(command): args = [str(x) for x in command] Cnf = utils.get_conf() @@ -233,7 +253,9 @@ def suite(command): elif mode == 'show': __suite_show(d, args) elif mode == 'add': - __suite_add(d, args) + __suite_add(d, args, False) + elif mode == 'add-all-arches': + __suite_add(d, args, True) else: die("E: suite command unknown") @@ -469,6 +491,35 @@ dispatch['c'] = show_config ################################################################################ +def show_keyring(command): + args = [str(x) for x in command] + cnf = utils.get_conf() + + die_arglen(args, 2, "E: keyring needs at least a command") + + mode = args[1].lower() + + d = DBConn() + + q = d.session().query(Keyring).filter(Keyring.active == True) + + if mode == 'list-all': + pass + elif mode == 'list-binary': + q = q.filter(Keyring.default_source_acl_id == None) + elif mode == 'list-source': + q = q.filter(Keyring.default_source_acl_id != None) + else: + die("E: keyring command unknown") + + for k in q.all(): + print k.keyring_name + +dispatch['keyring'] = show_keyring +dispatch['k'] = show_keyring + +################################################################################ + def main(): """Perform administrative work on the dak database""" global dryrun