Hello community, here is the log from the commit of package openSUSE-release-tools for openSUSE:Factory checked in at 2018-05-18 14:28:15 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/openSUSE-release-tools (Old) and /work/SRC/openSUSE:Factory/.openSUSE-release-tools.new (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Package is "openSUSE-release-tools" Fri May 18 14:28:15 2018 rev:96 rq:610224 version:20180518.ef92c2f Changes: -------- --- /work/SRC/openSUSE:Factory/openSUSE-release-tools/openSUSE-release-tools.changes 2018-05-17 18:05:17.560156557 +0200 +++ /work/SRC/openSUSE:Factory/.openSUSE-release-tools.new/openSUSE-release-tools.changes 2018-05-18 14:28:28.725102864 +0200 @@ -1,0 +2,18 @@ +Fri May 18 07:10:52 UTC 2018 - opensuse-releaseteam@opensuse.org + +- Update to version 20180518.ef92c2f: + * Add AMQP support to TTM + +------------------------------------------------------------------- +Thu May 17 13:06:05 UTC 2018 - opensuse-releaseteam@opensuse.org + +- Update to version 20180517.f446be2: + * Freeze adi: do not check the first package in frozenlinks but metadata + +------------------------------------------------------------------- +Wed May 16 19:38:59 UTC 2018 - opensuse-releaseteam@opensuse.org + +- Update to version 20180516.9f20fc7: + * repo_checker: whitelist_clean: handle binaries_common being None. + +------------------------------------------------------------------- Old: ---- openSUSE-release-tools-20180516.6459937.obscpio New: ---- openSUSE-release-tools-20180518.ef92c2f.obscpio ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ openSUSE-release-tools.spec ++++++ --- /var/tmp/diff_new_pack.pEJ3Ci/_old 2018-05-18 14:28:29.477075269 +0200 +++ /var/tmp/diff_new_pack.pEJ3Ci/_new 2018-05-18 14:28:29.477075269 +0200 @@ -20,7 +20,7 @@ %define source_dir openSUSE-release-tools %define announcer_filename factory-package-news Name: openSUSE-release-tools -Version: 20180516.6459937 +Version: 20180518.ef92c2f Release: 0 Summary: Tools to aid in staging and release work for openSUSE/SUSE License: GPL-2.0-or-later AND MIT ++++++ _servicedata ++++++ --- /var/tmp/diff_new_pack.pEJ3Ci/_old 2018-05-18 14:28:29.517073802 +0200 +++ /var/tmp/diff_new_pack.pEJ3Ci/_new 2018-05-18 14:28:29.517073802 +0200 @@ -1,6 +1,6 @@ <servicedata> <service name="tar_scm"> <param name="url">https://github.com/openSUSE/openSUSE-release-tools.git</param> - <param name="changesrevision">6459937f2cc6c3c9dfde8e9ffa89b4fe80c81398</param> + <param name="changesrevision">ef92c2fcec78af2d593e36597e0d9d1af27aa8b6</param> </service> </servicedata> ++++++ openSUSE-release-tools-20180516.6459937.obscpio -> openSUSE-release-tools-20180518.ef92c2f.obscpio ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/openSUSE-release-tools-20180516.6459937/osclib/stagingapi.py new/openSUSE-release-tools-20180518.ef92c2f/osclib/stagingapi.py --- old/openSUSE-release-tools-20180516.6459937/osclib/stagingapi.py 2018-05-16 21:22:02.000000000 +0200 +++ new/openSUSE-release-tools-20180518.ef92c2f/osclib/stagingapi.py 2018-05-18 09:02:54.000000000 +0200 @@ -392,9 +392,9 @@ except urllib2.HTTPError as e: if e.code == 404: return None - packages = root.findall('./frozenlink/package') + meta = self.get_prj_pseudometa(prj) # the first package's devel project is good enough - return devel_project_get(self.apiurl, self.project, packages[0].get('name'))[0] + return devel_project_get(self.apiurl, self.project, meta['requests'][0].get('package'))[0] def do_change_review_state(self, request_id, newstate, message=None, by_group=None, by_user=None, by_project=None): diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/openSUSE-release-tools-20180516.6459937/repo_checker.py new/openSUSE-release-tools-20180518.ef92c2f/repo_checker.py --- old/openSUSE-release-tools-20180516.6459937/repo_checker.py 2018-05-16 21:22:02.000000000 +0200 +++ new/openSUSE-release-tools-20180518.ef92c2f/repo_checker.py 2018-05-18 09:02:54.000000000 +0200 @@ -565,7 +565,7 @@ else: binaries_common = binaries_common.intersection(whitelists_remaining[key]) - if len(binaries_common): + if binaries_common is not None and len(binaries_common): # Remove entries common to all archs and place in common whitelist. whitelists_remaining[prefix].update(binaries_common) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/openSUSE-release-tools-20180516.6459937/totest-manager.py new/openSUSE-release-tools-20180518.ef92c2f/totest-manager.py --- old/openSUSE-release-tools-20180516.6459937/totest-manager.py 2018-05-16 21:22:02.000000000 +0200 +++ new/openSUSE-release-tools-20180518.ef92c2f/totest-manager.py 2018-05-18 09:02:54.000000000 +0200 @@ -6,6 +6,7 @@ # (C) 2014 aplanas@suse.de, openSUSE.org # (C) 2014 coolo@suse.de, openSUSE.org # (C) 2017 okurz@suse.de, openSUSE.org +# (C) 2018 dheidler@suse.de, openSUSE.org # Distribute under GPLv2 or GPLv3 from __future__ import print_function @@ -21,6 +22,7 @@ import signal import time import yaml +import pika from xml.etree import cElementTree as ET from openqa_client.client import OpenQA_Client @@ -66,6 +68,7 @@ self.load_issues_to_ignore() self.project_base = project.split(':')[0] self.update_pinned_descr = False + self.amqp_url = osc.conf.config.get('ttm_amqp_url') def load_issues_to_ignore(self): url = self.api.makeurl(['source', self.project, '_attribute', 'OSRT:IgnoredIssues']) @@ -247,16 +250,17 @@ jobs = self.find_openqa_results(snapshot) + self.failed_relevant_jobs = [] + self.failed_ignored_jobs = [] + if len(jobs) < self.jobs_num(): # not yet scheduled logger.warning('we have only %s jobs' % len(jobs)) return QA_INPROGRESS - number_of_fails = 0 in_progress = False for job in jobs: # print json.dumps(job, sort_keys=True, indent=4) if job['result'] in ('failed', 'incomplete', 'skipped', 'user_cancelled', 'obsoleted', 'parallel_failed'): - jobname = job['name'] # print json.dumps(job, sort_keys=True, indent=4), jobname url = makeurl(self.openqa_server, ['api', 'v1', 'jobs', str(job['id']), 'comments']) @@ -287,6 +291,7 @@ self.issues_to_ignore[ref] = build_nr if ignored: + self.failed_ignored_jobs.append(job['id']) if labeled: text = 'Ignored issue' if len(refs) > 0 else 'Ignored failure' # remove flag - unfortunately can't delete comment unless admin @@ -294,9 +299,9 @@ self.openqa.openqa_request( 'PUT', 'jobs/%s/comments/%d' % (job['id'], labeled), data=data) - logger.info("job %s failed, but was ignored", jobname) + logger.info("job %s failed, but was ignored", job['name']) else: - number_of_fails += 1 + self.failed_relevant_jobs.append(job['id']) if not labeled and len(refs) > 0: data = {'text': 'label:unknown_failure'} if self.dryrun: @@ -306,7 +311,7 @@ 'POST', 'jobs/%s/comments' % job['id'], data=data) joburl = '%s/tests/%s' % (self.openqa_server, job['id']) - logger.info("job %s failed, see %s", jobname, joburl) + logger.info("job %s failed, see %s", job['name'], joburl) elif job['result'] == 'passed' or job['result'] == 'softfailed': continue @@ -318,7 +323,7 @@ self.save_issues_to_ignore() - if number_of_fails > 0: + if len(self.failed_relevant_jobs) > 0: return QA_FAILED if in_progress: @@ -541,6 +546,8 @@ # with a new release can_release = False + self.send_amqp_event(current_snapshot, current_result) + can_publish = (current_result == QA_PASSED) # already published @@ -575,6 +582,38 @@ self.update_totest(new_snapshot) self.write_version_to_dashboard("totest", new_snapshot) + def send_amqp_event(self, current_snapshot, current_result): + if not self.amqp_url: + logger.debug('No ttm_amqp_url configured in oscrc - skipping amqp event emission') + return + + logger.debug('Sending AMQP message') + inf = re.sub(r"ed$", '', self._result2str(current_result)) + msg_topic = '%s.ttm.build.%s' % (self.project_base.lower(), inf) + msg_body = json.dumps({ + 'build': current_snapshot, + 'project': self.project, + 'failed_jobs': { + 'relevant': self.failed_relevant_jobs, + 'ignored': self.failed_ignored_jobs, + } + }) + + # send amqp event + tries = 7 # arbitrary + for t in range(tries): + try: + notify_connection = pika.BlockingConnection(pika.URLParameters(self.amqp_url)) + notify_channel = notify_connection.channel() + notify_channel.exchange_declare(exchange='pubsub', exchange_type='topic', passive=True, durable=True) + notify_channel.basic_publish(exchange='pubsub', routing_key=msg_topic, body=msg_body) + notify_connection.close() + break + except pika.exceptions.ConnectionClosed as e: + logger.warn('Sending AMQP event did not work: %s. Retrying try %s out of %s' % (e, t, tries)) + else: + logger.error('Could not send out AMQP event for %s tries, aborting.' % tries) + def release(self): new_snapshot = self.current_version() self.update_totest(new_snapshot) ++++++ openSUSE-release-tools.obsinfo ++++++ --- /var/tmp/diff_new_pack.pEJ3Ci/_old 2018-05-18 14:28:30.121051637 +0200 +++ /var/tmp/diff_new_pack.pEJ3Ci/_new 2018-05-18 14:28:30.121051637 +0200 @@ -1,5 +1,5 @@ name: openSUSE-release-tools -version: 20180516.6459937 -mtime: 1526498522 -commit: 6459937f2cc6c3c9dfde8e9ffa89b4fe80c81398 +version: 20180518.ef92c2f +mtime: 1526626974 +commit: ef92c2fcec78af2d593e36597e0d9d1af27aa8b6