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
+ k add-buildd NAME ARCH... add buildd keyring with upload permission
+ for the given architectures
architecture / a:
a list show a list of architectures
primary mirror MIRROR.
archive rm NAME remove archive NAME (will only work if there are
no files and no suites in the archive)
+ archive rename OLD NEW rename archive OLD to NEW
version-check / v-c:
v-c list show version checks for all suites
else:
session.commit()
+def archive_rename(oldname, newname):
+ session = DBConn().session()
+ archive = get_archive(oldname, session)
+ archive.archive_name = newname
+ session.flush()
+
+ if dryrun:
+ session.rollback()
+ else:
+ session.commit()
+
def archive(command):
mode = command[1]
if mode == 'list':
archive_list()
+ elif mode == 'rename':
+ archive_rename(command[2], command[3])
elif mode == 'add':
archive_add(command[2:])
elif mode == 'rm':
print "PGPORT=%s" % cnf["DB::Port"]
e.append('PGPORT')
print "export " + " ".join(e)
+ elif mode == 'get':
+ print cnf.get(args[2])
else:
session = DBConn().session()
try:
if mode == 'list-all':
pass
elif mode == 'list-binary':
- q = q.filter(Keyring.default_source_acl_id == None)
+ q = q.join(Keyring.acl).filter(ACL.allow_source == False)
elif mode == 'list-source':
- q = q.filter(Keyring.default_source_acl_id != None)
+ q = q.join(Keyring.acl).filter(ACL.allow_source == True)
else:
die("E: keyring command unknown")
for k in q.all():
print k.keyring_name
-dispatch['keyring'] = show_keyring
-dispatch['k'] = show_keyring
+def keyring_add_buildd(command):
+ name = command[2]
+ arch_names = command[3:]
+
+ session = DBConn().session()
+ arches = session.query(Architecture).filter(Architecture.arch_string.in_(arch_names))
+
+ acl = ACL()
+ acl.name = 'buildd-{0}'.format('+'.join(arch_names))
+ acl.architectures.update(arches)
+ acl.allow_new = True
+ acl.allow_binary = True
+ acl.allow_binary_only = True
+ acl.allow_hijack = True
+ session.add(acl)
+
+ k = Keyring()
+ k.keyring_name = name
+ k.acl = acl
+ k.priority = 10
+ session.add(k)
+
+ session.commit()
+
+def keyring(command):
+ if command[1].startswith('list-'):
+ show_keyring(command)
+ elif command[1] == 'add-buildd':
+ keyring_add_buildd(command)
+ else:
+ die("E: keyring command unknown")
+
+dispatch['keyring'] = keyring
+dispatch['k'] = keyring
################################################################################