Hello community,

here is the log from the commit of package openSUSE-release-tools for 
openSUSE:Factory checked in at 2020-01-31 23:57:38
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/openSUSE-release-tools (Old)
 and      /work/SRC/openSUSE:Factory/.openSUSE-release-tools.new.26092 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "openSUSE-release-tools"

Fri Jan 31 23:57:38 2020 rev:273 rq:768986 version:20200131.38632736

Changes:
--------
--- 
/work/SRC/openSUSE:Factory/openSUSE-release-tools/openSUSE-release-tools.changes
    2020-01-30 22:37:44.172590145 +0100
+++ 
/work/SRC/openSUSE:Factory/.openSUSE-release-tools.new.26092/openSUSE-release-tools.changes
 2020-01-31 23:59:01.455705498 +0100
@@ -1,0 +2,33 @@
+Fri Jan 31 07:54:53 UTC 2020 - [email protected]
+
+- Update to version 20200131.38632736:
+  * dashboard: Add openQA results
+  * Add the same link to openqa than what is on obs_factory
+  * Dashboard: link the product package
+
+-------------------------------------------------------------------
+Thu Jan 30 21:03:49 UTC 2020 - [email protected]
+
+- Update to version 20200130.1ad5de89:
+  * dashboard: Output the time in UTC
+
+-------------------------------------------------------------------
+Thu Jan 30 20:53:26 UTC 2020 - [email protected]
+
+- Update to version 20200130.cb660d72:
+  * Add timestamp to the page for update info
+  * Add versions to the dashboard
+
+-------------------------------------------------------------------
+Thu Jan 30 16:08:31 UTC 2020 - [email protected]
+
+- Update to version 20200130.063dd72a:
+  * One more fix for the dashboard generator config
+
+-------------------------------------------------------------------
+Thu Jan 30 16:04:36 UTC 2020 - [email protected]
+
+- Update to version 20200130.1335e55b:
+  * Fix indentation of gocd config
+
+-------------------------------------------------------------------

Old:
----
  openSUSE-release-tools-20200130.02d3038b.obscpio

New:
----
  openSUSE-release-tools-20200131.38632736.obscpio

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ openSUSE-release-tools.spec ++++++
--- /var/tmp/diff_new_pack.BboJKU/_old  2020-01-31 23:59:02.411705993 +0100
+++ /var/tmp/diff_new_pack.BboJKU/_new  2020-01-31 23:59:02.411705993 +0100
@@ -20,7 +20,7 @@
 %define source_dir openSUSE-release-tools
 %define announcer_filename factory-package-news
 Name:           openSUSE-release-tools
-Version:        20200130.02d3038b
+Version:        20200131.38632736
 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.BboJKU/_old  2020-01-31 23:59:02.455706016 +0100
+++ /var/tmp/diff_new_pack.BboJKU/_new  2020-01-31 23:59:02.455706016 +0100
@@ -1,6 +1,6 @@
 <servicedata>
   <service name="tar_scm">
     <param 
name="url">https://github.com/openSUSE/openSUSE-release-tools.git</param>
-    <param 
name="changesrevision">5788e9ce2f17a3db2937177829a41c37bb78e712</param>
+    <param 
name="changesrevision">34ecf36d357e0f1fbf345a7ccb9d66e9663b37d8</param>
   </service>
 </servicedata>

++++++ openSUSE-release-tools-20200130.02d3038b.obscpio -> 
openSUSE-release-tools-20200131.38632736.obscpio ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/openSUSE-release-tools-20200130.02d3038b/dashboard/generate.py 
new/openSUSE-release-tools-20200131.38632736/dashboard/generate.py
--- old/openSUSE-release-tools-20200130.02d3038b/dashboard/generate.py  
2020-01-30 16:57:27.000000000 +0100
+++ new/openSUSE-release-tools-20200131.38632736/dashboard/generate.py  
2020-01-31 08:53:01.000000000 +0100
@@ -7,16 +7,19 @@
 import json
 import osc
 import re
+import yaml
 from time import sleep
 from osc.core import http_GET, http_POST, makeurl, show_project_meta
 from M2Crypto.SSL import SSLError as SSLError
 from osclib.conf import Config
+from osclib.core import attribute_value_load
 from osclib.stagingapi import StagingAPI
 from lxml import etree as ET
 from openqa_client.client import OpenQA_Client
 from openqa_client.exceptions import ConnectionError, RequestError
 from urllib.error import HTTPError, URLError
 from urllib.parse import quote_plus
+from datetime import datetime, timezone
 
 import requests
 from osclib.PubSubConsumer import PubSubConsumer
@@ -33,10 +36,28 @@
         else:
             amqp_prefix = 'opensuse'
             openqa_url = 'https://openqa.opensuse.org'
+        self.openqa = OpenQA_Client(openqa_url)
 
-    def add(self, name, nick):
+    def openqa_results(self, openqa_group, snapshot):
+        jobs = {}
+        if not openqa_group or not snapshot:
+            return jobs
+        result = self.openqa.openqa_request('GET', 'jobs', {'groupid': 
openqa_group, 'build': snapshot, 'latest': 1})
+        for job in result['jobs']:
+            if job['clone_id'] or job['result'] == 'obsoleted':
+                continue
+            name = job['name'].replace(snapshot, '')
+            key = job['result']
+            if job['state'] != 'done':
+                key = job['state']
+                if key == 'uploading' or key == 'assigned':
+                    key = 'running'
+            jobs.setdefault(key, []).append(job['name'])
+        return jobs
+
+    def add(self, name, **kwargs):
         # cyclic dependency!
-        self.projects.append(Project(self, name, nick))
+        self.projects.append(Project(self, name, kwargs))
 
     def build_summary(self, project, repository):
         url = makeurl(self.apiurl, ['build', project, '_result'], { 
'repository': repository, 'view': 'summary' })
@@ -80,12 +101,27 @@
             result.append(f"arch_{arch}=1")
         return '&'.join(result)
 
+    def fetch_ttm_status(self, project):
+        text = attribute_value_load(self.apiurl, project, 
'ToTestManagerStatus')
+        if text:
+            return yaml.safe_load(text)
+        return dict()
+
+    def fetch_product_version(self, project):
+        return attribute_value_load(self.apiurl, project, 'ProductVersion')
+
 class Project(object):
-    def __init__(self, fetcher, name, nick):
+    def __init__(self, fetcher, name, kwargs):
         self.fetcher = fetcher
         self.name = name
-        self.nick = nick
+        self.nick = kwargs.get('nick')
+        self.openqa_version = kwargs.get('openqa_version')
+        self.openqa_group = kwargs.get('openqa_group')
+        self.openqa_id = kwargs.get('openqa_groupid')
+        self.download_url = kwargs.get('download_url')
         self.all_archs = fetcher.generate_all_archs(name)
+        self.ttm_status = fetcher.fetch_ttm_status(name)
+        self.ttm_version = fetcher.fetch_product_version(name)
 
     def standard_progress(self):
         return fetcher.build_summary(self.name, 'standard')
@@ -100,6 +136,9 @@
     def all_archs(self):
         self.all_archs
 
+    def openqa_summary(self):
+        return self.fetcher.openqa_results(self.openqa_id, 
self.ttm_status.get('testing'))
+
 if __name__ == '__main__':
     parser = argparse.ArgumentParser(
         description='Bot to sync openQA status to OBS')
@@ -120,16 +159,18 @@
 
     app = Flask(__name__)
 
-    fetcher.add('openSUSE:Factory', 'Factory')
-    fetcher.add('openSUSE:Factory:Rings:0-Bootstrap', 'Ring 0')
-    fetcher.add('openSUSE:Factory:Rings:1-MinimalX', 'Ring 1')
-    fetcher.add('openSUSE:Factory:ARM', 'ARM')
-    fetcher.add('openSUSE:Factory:PowerPC', 'Power')
-    fetcher.add('openSUSE:Factory:zSystems', 'System Z')
-    fetcher.add('openSUSE:Factory:RISCV', 'Risc V')
+    fetcher.add('openSUSE:Factory', nick='Factory', 
download_url='https://download.opensuse.org/tumbleweed/iso/', 
openqa_group='openSUSE Tumbleweed', openqa_version='Tumbleweed', 
openqa_groupid=1)
+    fetcher.add('openSUSE:Factory:Live', nick='Live')
+    fetcher.add('openSUSE:Factory:Rings:0-Bootstrap', nick='Ring 0')
+    fetcher.add('openSUSE:Factory:Rings:1-MinimalX', nick='Ring 1')
+    fetcher.add('openSUSE:Factory:ARM', nick='ARM', 
download_url='http://download.opensuse.org/ports/aarch64/tumbleweed/iso/', 
openqa_groupid=3)
+    fetcher.add('openSUSE:Factory:PowerPC', nick='Power', 
download_url='http://download.opensuse.org/ports/ppc/tumbleweed/iso/', 
openqa_groupid=4)
+    fetcher.add('openSUSE:Factory:zSystems', nick='System Z', 
download_url='http://download.opensuse.org/ports/zsystems/tumbleweed/iso/', 
openqa_groupid=34)
+    fetcher.add('openSUSE:Factory:RISCV', nick='Risc V', 
download_url='http://download.opensuse.org/ports/riscv/tumbleweed/iso/')
 
     with app.app_context():
         rendered = render_template('dashboard.html',
             projectname = args.project,
+            lastupdate = datetime.now(timezone.utc),
             projects = fetcher.projects)
         print(rendered)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/openSUSE-release-tools-20200130.02d3038b/dashboard/templates/dashboard.html 
new/openSUSE-release-tools-20200131.38632736/dashboard/templates/dashboard.html
--- 
old/openSUSE-release-tools-20200130.02d3038b/dashboard/templates/dashboard.html 
    2020-01-30 16:57:27.000000000 +0100
+++ 
new/openSUSE-release-tools-20200131.38632736/dashboard/templates/dashboard.html 
    2020-01-31 08:53:01.000000000 +0100
@@ -1,64 +1,115 @@
 <!doctype html>
 <html lang="en">
-  <head>
-    <!-- Required meta tags -->
-    <meta charset="utf-8">
-    <meta name="viewport" content="width=device-width, initial-scale=1, 
shrink-to-fit=no">
 
-    <link rel="stylesheet" 
href="https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/css/bootstrap.min.css"; 
integrity="sha384-Vkoo8x4CGsO3+Hhxv8T/Q5PaXtkKtu6ug5TOeNV6gBiFeWPGFN9MuhOf23Q9Ifjh"
 crossorigin="anonymous">
-       <title>Dashboard for {{ projectname }}</title>
-  </head>
-  <body>
-       <h1>Dashboard for {{ projectname }}</h1>
-  <table class="table">
-    <thead>
+<head>
+  <!-- Required meta tags -->
+  <meta charset="utf-8">
+  <meta http-equiv="refresh" content="60" />
+  <meta name="viewport" content="width=device-width, initial-scale=1, 
shrink-to-fit=no">
+
+  <link rel="stylesheet" 
href="https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/css/bootstrap.min.css"; 
integrity="sha384-Vkoo8x4CGsO3+Hhxv8T/Q5PaXtkKtu6ug5TOeNV6gBiFeWPGFN9MuhOf23Q9Ifjh"
 crossorigin="anonymous">
+  <title>Dashboard for {{ projectname }}</title>
+</head>
+
+<body>
+  <div class="container">
+    <div class="row">
+      <div class="h1 col text-left">Dashboard for {{ projectname }}</div>
+      <div class="col-3 text-right">Last update: <time class="timeago" 
datetime="{{lastupdate}}">{{ lastupdate }}</time></div>
+    </div>
+    <table class="table">
+      <thead>
+        <tr>
+          <th scope="col">Part</th>
+          <th scope="col">standard</th>
+          <th scope="col">images</th>
+          <th scope="col">source</th>
+          <th scope="col">testing</th>
+          <th scope="col">published</th>
+          <th scope="col">openQA</th>
+        </tr>
+      </thead>
+      {% for project in projects %}
       <tr>
-        <th scope="col">Part</th>
-        <th scope="col">standard</th>
-        <th scope="col">images</th>
-      </tr>
-    </thead>
-    {% for project in projects %}
-    <tr>
-      <th scope="row"><a href="https://build.opensuse.org/project/show/{{ 
project.name }}">{{project.nick}}</a></th>
-      <td>
-        {% set progress = project.standard_progress() %}
-        {% if progress['building'] < 1000 %}
+        <th scope="row"><a href="https://build.opensuse.org/project/show/{{ 
project.name }}">{{project.nick}}</a></th>
+        <td>
+          {% set progress = project.standard_progress() %}
+          {% if progress['building'] < 1000 %}
           {{ progress['building'] / 10}}% done
-        {% else %}
+          {% else %}
           done
-        {% endif %}
-        {% if progress['failed'] > 0 %}
-         , <a href="https://build.opensuse.org/project/monitor/{{ project.name 
}}?failed=1&defaults=0&repo_standard=1&{{project.all_archs}}">{{ 
progress['failed'] }} failed</a>
-        {% endif %}
-        {% if progress['unresolvable'] > 0 %}
-         , <a href="https://build.opensuse.org/project/monitor/{{ project.name 
}}?unresolvable=1&defaults=0&repo_standard=1&{{project.all_archs}}">{{ 
progress['unresolvable'] }} unresolvable</a>
-        {% endif %}
-      </td>
-      <td>
-        {% set progress = project.images_progress() %}
-        {% if progress['building'] >= 0 %}
+          {% endif %}
+          {% if progress['failed'] > 0 %}
+          , <a href="https://build.opensuse.org/project/monitor/{{ 
project.name }}?failed=1&defaults=0&repo_standard=1&{{project.all_archs}}">{{ 
progress['failed'] }} failed</a>
+          {% endif %}
+          {% if progress['unresolvable'] > 0 %}
+          , <a href="https://build.opensuse.org/project/monitor/{{ 
project.name 
}}?unresolvable=1&defaults=0&repo_standard=1&{{project.all_archs}}">{{ 
progress['unresolvable'] }} unresolvable</a>
+          {% endif %}
+        </td>
+        <td>
+          {% set progress = project.images_progress() %}
+          {% if progress['building'] >= 0 %}
           {% if progress['building'] < 1000 %}
-            {{ progress['building'] / 10}}% done
+          {{ progress['building'] / 10}}% done
           {% else %}
-            done
+          done
           {% endif %}
           {% if progress['failed'] > 0 %}
-            , <a href="https://build.opensuse.org/project/monitor/{{ 
project.name }}?failed=1&defaults=0&repo_images=1&{{project.all_archs}}">{{ 
progress['failed'] }} failed</a>
+          , <a href="https://build.opensuse.org/project/monitor/{{ 
project.name }}?failed=1&defaults=0&repo_images=1&{{project.all_archs}}">{{ 
progress['failed'] }} failed</a>
           {% endif %}
           {% if progress['unresolvable'] > 0 %}
-            , <a href="https://build.opensuse.org/project/monitor/{{ 
project.name 
}}?unresolvable=1&defaults=0&repo_images=1&{{project.all_archs}}">{{ 
progress['unresolvable'] }} unresolvable</a>
+          , <a href="https://build.opensuse.org/project/monitor/{{ 
project.name 
}}?unresolvable=1&defaults=0&repo_images=1&{{project.all_archs}}">{{ 
progress['unresolvable'] }} unresolvable</a>
           {% endif %}
-        {% else %}
-          N.A.
-        {% endif %}
-      </td>
-    </tr>
-    {% endfor %}
-  </table>
+          {% else %}
+          n.a.
+          {% endif %}
+        </td>
+        <td>
+         {% if project.ttm_version %}
+           <a href="https://build.opensuse.org/package/show/{{ project.name 
}}/000product">{{ project.ttm_version }}</a>
+         {% else %}
+           n.a.
+         {% endif %}
+        </td>
+        <td>
+          {% set ttm_testing = project.ttm_status.get('testing') %}
+          {% if ttm_testing %}
+           {% if project.openqa_version %}
+             <a 
href='https://openqa.opensuse.org/tests/overview?distri=opensuse&version={{ 
project.openqa_version }}'>{{ ttm_testing }}</a>
+           {% else %}
+             {{ ttm_testing }}
+           {% endif %}
+         {% else %}
+           n.a.
+         {% endif %}
+        </td>
+        <td>
+         {% set ttm_published = project.ttm_status.get('published', None) %}
+         {% if ttm_published %}
+           <a href="{{ project.download_url }}">{{ ttm_published }}</a>
+          {% else %}
+            n.a.
+         {% endif %}
+        </td>
+        <td>
+          {% set openqa_summary = project.openqa_summary() %}
+          {% for state in openqa_summary.keys() %}
+            {{ state }}: {{ openqa_summary[state]|length }}
+          {% endfor %}
+        </td>
+      </tr>
+      {% endfor %}
+    </table>
+  </div>
   <script src="https://code.jquery.com/jquery-3.4.1.slim.min.js"; 
integrity="sha384-J6qa4849blE2+poT4WnyKhv5vZF5SrPo0iEjwBvKU7imGFAV0wwj1yYfoRSJoZ+n"
 crossorigin="anonymous"></script>
   <script 
src="https://cdn.jsdelivr.net/npm/[email protected]/dist/umd/popper.min.js"; 
integrity="sha384-Q6E9RHvbIyZFJoft+2mJbHaEWldlvI9IOYy5n3zV9zzTtmI3UksdQRVvoxMfooAo"
 crossorigin="anonymous"></script>
   <script 
src="https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/js/bootstrap.min.js"; 
integrity="sha384-wfSDF2E50Y2D1uUdj0O3uMBJnjuUD4Ih7YwaYd1iqfktj0Uod8GCExl3Og8ifwB6"
 crossorigin="anonymous"></script>
+  <script 
src="https://cdnjs.cloudflare.com/ajax/libs/jquery-timeago/1.6.7/jquery.timeago.min.js";
 integrity="sha256-0+5OfvOxkLHqpLPPwy9pDjug8N3cwaqcmleaxnR5VS8=" 
crossorigin="anonymous"></script>
+  <script>
+    jQuery(document).ready(function() {
+      jQuery("time.timeago").timeago();
+    });
+  </script>
+</body>
 
-  </body>
 </html>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/openSUSE-release-tools-20200130.02d3038b/gocd/dashboard.generator.gocd.yaml 
new/openSUSE-release-tools-20200131.38632736/gocd/dashboard.generator.gocd.yaml
--- 
old/openSUSE-release-tools-20200130.02d3038b/gocd/dashboard.generator.gocd.yaml 
    2020-01-30 16:57:27.000000000 +0100
+++ 
new/openSUSE-release-tools-20200131.38632736/gocd/dashboard.generator.gocd.yaml 
    2020-01-31 08:53:01.000000000 +0100
@@ -9,7 +9,6 @@
     materials:
       script:
         git: https://github.com/openSUSE/openSUSE-release-tools.git
-        destination: scripts
     timer:
       spec: 0 */5 * ? * *
       only_on_changes: false
@@ -20,6 +19,6 @@
         - staging-bot
         tasks:
         - script: |-
-         set -x
-         PYTHONPATH=$PWD python3 ./dashboard/generate.py -p openSUSE:Factory > 
dashboard/output/index.html
-         rsync -av dashboard/output/ 
rsync://[email protected]:11873/factory-dashboard.opensuse.org/
+           set -e
+           PYTHONPATH=$PWD python3 ./dashboard/generate.py -p openSUSE:Factory 
> dashboard/output/index.html
+           rsync -av dashboard/output/ 
rsync://[email protected]:11873/factory-dashboard.opensuse.org/

++++++ openSUSE-release-tools.obsinfo ++++++
--- /var/tmp/diff_new_pack.BboJKU/_old  2020-01-31 23:59:03.167706385 +0100
+++ /var/tmp/diff_new_pack.BboJKU/_new  2020-01-31 23:59:03.167706385 +0100
@@ -1,5 +1,5 @@
 name: openSUSE-release-tools
-version: 20200130.02d3038b
-mtime: 1580399847
-commit: 02d3038bf62c7de96e11b86a56b8a8ec4d1487a4
+version: 20200131.38632736
+mtime: 1580457181
+commit: 3863273695ceff2aed38e4116255bebf0ca66ee7
 


Reply via email to