提交 0dd17ca8 编写于 作者: T Tollef Fog Heen 提交者: Tollef Fog Heen

dak/admin.py: Add commands to manipulate the suite-component mapping

Signed-off-by: NTollef Fog Heen <tfheen@varnish-software.com>
上级 3aa655a3
......@@ -107,6 +107,17 @@ 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)
suite-component / s-c:
s-c list show the architectures for all suites
s-c list-suite COMPONENT
show the suites a COMPONENT is in
s-c list-component SUITE
show the components in a SUITE
s-c add SUITE COMPONENT
add COMPONENT to suite
s-c rm SUITE COMPONENT remove component from suite (will only work if
no packages remain for the component in the suite)
archive:
archive list list all archives
archive add NAME ROOT DESCRIPTION [primary-mirror=MIRROR] [tainted=1]
......@@ -491,6 +502,108 @@ dispatch['s-a'] = suite_architecture
################################################################################
def __suite_component_list(d, args):
s = d.session()
for j in s.query(Suite).order_by(Suite.suite_name):
components = j.components
print j.suite_name + ': ' + \
', '.join([c.component_name for c in components])
def __suite_component_listcomponent(d, args):
die_arglen(args, 3, "E: suite-component list-component requires a suite")
suite = get_suite(args[2].lower(), d.session())
if suite is None:
die('E: suite %s is invalid' % args[2].lower())
for c in suite.components:
print c.component_name
def __suite_component_listsuite(d, args):
die_arglen(args, 3, "E: suite-component list-suite requires an component")
component = get_component(args[2].lower(), d.session())
if component is None:
die("E: component %s is invalid" % args[2].lower())
for s in component.suites:
print s.suite_name
def __suite_component_add(d, args):
if len(args) < 3:
die("E: adding a suite-component entry requires a suite and component")
s = d.session()
suite = get_suite(args[2].lower(), s)
if suite is None: die("E: Can't find suite %s" % args[2].lower())
component = get_component(args[3].lower(), s)
if component is None: die("E: Can't find component %s" % args[3].lower())
if not dryrun:
try:
suite.components.append(component)
s.commit()
except IntegrityError as e:
die("E: Can't add suite-component entry (%s, %s) - probably already exists" % (args[2].lower(), args[3].lower()))
except SQLAlchemyError as e:
die("E: Can't add suite-component entry (%s, %s) - %s" % (args[2].lower(), args[3].lower(), e))
print "Added suite-component entry for %s, %s" % (args[2].lower(), args[3].lower())
def __suite_component_rm(d, args):
if len(args) < 3:
die("E: removing an suite-component entry requires a suite and component")
s = d.session()
if not dryrun:
try:
suite_name = args[2].lower()
suite = get_suite(suite_name, s)
if suite is None:
die('E: no such suite %s' % suite_name)
component_string = args[3].lower()
component = get_component(arch_string, s)
if component not in suite.components:
die("E: component %s not found in suite %s" % (component_string, suite_name))
suite.components.remove(component)
s.commit()
except IntegrityError as e:
die("E: Can't remove suite-component entry (%s, %s) - it's probably referenced" % (args[2].lower(), args[3].lower()))
except SQLAlchemyError as e:
die("E: Can't remove suite-component entry (%s, %s) - %s" % (args[2].lower(), args[3].lower(), e))
print "Removed suite-component entry for %s, %s" % (args[2].lower(), args[3].lower())
def suite_component(command):
args = [str(x) for x in command]
Cnf = utils.get_conf()
d = DBConn()
die_arglen(args, 2, "E: suite-component needs at least a command")
mode = args[1].lower()
if mode == 'list':
__suite_component_list(d, args)
elif mode == 'list-component':
__suite_component_listcomponent(d, args)
elif mode == 'list-suite':
__suite_component_listsuite(d, args)
elif mode == 'add':
__suite_component_add(d, args)
# elif mode == 'rm':
# __suite_architecture_rm(d, args)
else:
die("E: suite-component command unknown")
dispatch['suite-component'] = suite_component
dispatch['s-c'] = suite_component
################################################################################
def archive_list():
session = DBConn().session()
for archive in session.query(Archive).order_by(Archive.archive_name):
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册