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 - [email protected]
+
+- Update to version 20180518.ef92c2f:
+  * Add AMQP support to TTM
+
+-------------------------------------------------------------------
+Thu May 17 13:06:05 UTC 2018 - [email protected]
+
+- 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 - [email protected]
+
+- 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 [email protected], openSUSE.org
 # (C) 2014 [email protected], openSUSE.org
 # (C) 2017 [email protected], openSUSE.org
+# (C) 2018 [email protected], 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
 


Reply via email to