openSUSE-release-tools/sync-rebuild.py

108 lines
2.7 KiB
Python
Raw Normal View History

2013-10-24 14:32:30 +02:00
#!/usr/bin/python
import sys
import os
import osc
import osc.core
import osc.conf
import xml.etree.ElementTree as ET
import re
results = []
repo = ""
architectures = ["x86_64","i586"]
pkg = ""
projects = ['openSUSE:Factory','openSUSE:Factory:Rebuild']
#initialize osc config
osc.conf.get_config()
2013-12-07 08:53:05 +01:00
def get_prj_results(prj, arch):
url = osc.core.makeurl(osc.conf.config['apiurl'], ['build', prj, 'standard', arch, "_jobhistory?code=lastfailures"])
2013-10-24 14:32:30 +02:00
f = osc.core.http_GET(url)
xml = f.read()
results = []
root = ET.fromstring(xml)
xmllines = root.findall("./jobhist")
for pkg in xmllines:
if pkg.attrib['code'] == 'failed':
results.append(pkg.attrib['package'])
return results
def compare_results(factory, rebuild, testmode):
com_res = set(rebuild).symmetric_difference(set(factory))
2013-10-24 14:32:30 +02:00
if testmode != False:
print com_res
return com_res
def check_pkgs(rebuild_list):
url = osc.core.makeurl(osc.conf.config['apiurl'], ['source', 'openSUSE:Factory'])
f = osc.core.http_GET(url)
xml = f.read()
pkglist = []
root = ET.fromstring(xml)
xmllines = root.findall("./entry")
for pkg in xmllines:
if pkg.attrib['name'] in rebuild_list:
pkglist.append(pkg.attrib['name'])
return pkglist
2013-12-07 08:53:05 +01:00
def rebuild_pkg_in_factory(package, prj, arch, testmode, code=None):
query = { 'cmd': 'rebuild', 'arch': arch }
2013-10-24 14:32:30 +02:00
#prj = "home:jzwickl"
if package:
query['package'] = package
pkg = query['package']
u = osc.core.makeurl(osc.conf.config['apiurl'], ['build', prj], query=query)
# print u
if testmode != False:
print "Trigger rebuild for this package: " + u
else:
try:
print 'tried to trigger rebuild for project \'%s\' package \'%s\'' % (prj, pkg)
f = osc.core.http_POST(u)
except:
print 'could not trigger rebuild for project \'%s\' package \'%s\'' % (prj, pkg)
testmode = False
2013-10-24 14:32:30 +02:00
try:
if sys.argv[1] != None:
if sys.argv[1] == '-test':
testmode = True
print "testmode: "+str(testmode)
else:
testmode = False
except:
pass
2013-10-24 14:32:30 +02:00
2013-12-07 08:53:05 +01:00
for arch in architectures:
fact_result = get_prj_results('openSUSE:Factory', arch)
rebuild_result = get_prj_results('openSUSE:Factory:Rebuild', arch)
rebuild_result = check_pkgs(rebuild_result)
fact_result = check_pkgs(fact_result)
result = compare_results(fact_result, rebuild_result, testmode)
2013-10-24 14:32:30 +02:00
2013-12-07 08:53:05 +01:00
print sorted(result)
2013-10-24 14:32:30 +02:00
2013-12-07 08:53:05 +01:00
for package in result:
rebuild_pkg_in_factory(package, 'openSUSE:Factory', arch, testmode, None)
rebuild_pkg_in_factory(package, 'openSUSE:Factory:Rebuild', arch, testmode, None)
2013-10-24 14:32:30 +02:00