I haven't been able to test this one fully as I'm on my laptop and
haven't fully deployed the openqa bits here, but I at least tested it
just running openqa_trigger.py - it gets as far as
download_rawhide_iso() and fails because the expected dir doesn't exist.
It also doesn't handle the case where you pass in args, yet. But it
should at least give the general idea. Wanted to send it out before I
forgot.

(note: the all_boot_images property isn't available for non-nightly
composes likes TCs/TCs, so I went with a find_images() query. I will try
and keep that interface stable...and send patches if I don't :> unless
anyone thinks the query object design is bad and wants to suggest a
better way.)
-- 
Adam Williamson
Fedora QA Community Monkey
IRC: adamw | Twitter: AdamW_Fedora | identi.ca: adamwfedora
http://www.happyassassin.net
From 4598b551c64b2f47db5f550f76c84507d28439d8 Mon Sep 17 00:00:00 2001
From: Adam Williamson <[email protected]>
Date: Thu, 12 Feb 2015 19:32:27 -0800
Subject: [PATCH] use python-wikitcms and fedfind to find current images

This replaces read_currents() by finding the 'current' release
validation event from python-wikitcms and using fedfind to
locate its images. Doesn't yet cover the case where you pass
in a version with args.
---
 tools/openqa_trigger/openqa_trigger.py | 48 +++++++++++++---------------------
 1 file changed, 18 insertions(+), 30 deletions(-)

diff --git a/tools/openqa_trigger/openqa_trigger.py b/tools/openqa_trigger/openqa_trigger.py
index 9406d0c..fdfd5fa 100755
--- a/tools/openqa_trigger/openqa_trigger.py
+++ b/tools/openqa_trigger/openqa_trigger.py
@@ -7,13 +7,13 @@ import urlgrabber
 import os.path
 import sys
 import subprocess
+import wikitcms.wiki
+import fedfind.release
 
 from report_job_results import report_results
 
 PERSISTENT = "/var/tmp/openqa_watcher.json"
-CURRENT_TEST = "https://fedoraproject.org/wiki/Test_Results:Current_Installation_Test";
 ISO_URL = "https://kojipkgs.fedoraproject.org/mash/rawhide-%s/rawhide/%s/os/images/boot.iso";
-ISO_REGEX = re.compile(r'https://kojipkgs\.fedoraproject\.org/mash/(?P<name>rawhide-(?P<build>\d+))/rawhide/(?P<arch>x86_64|i386)/os/images/boot\.iso')
 ISO_PATH = "/var/lib/openqa/factory/iso/"
 RUN_COMMAND = "/var/lib/openqa/script/client isos post ISO=%s DISTRI=fedora VERSION=rawhide FLAVOR=server ARCH=%s BUILD=%s_%s"
 VERSIONS = ['i386', 'x86_64']
@@ -33,22 +33,13 @@ def read_last():
         result[version] = json_parsed.get(version, None)
     return result, json_parsed
 
-# read current version from Current Installation Test page
-def read_currents():
-    page = urllib2.urlopen(CURRENT_TEST).read()
-    f_regex = re.compile(r'<title>.*Fedora (?P<version>\d+).*</title>')
-    m = f_regex.search(page)
-    for match in ISO_REGEX.finditer(page):
-        yield m.group('version'), match.group("build"), match.group(0), match.group("name"), match.group("arch")
-
 # download rawhide iso from koji
-def download_rawhide_iso(link, name, arch):
-    isoname = "%s_%s.iso" % (name, arch)
+def download_rawhide_iso(image, event):
+    isoname = "{0}_{1}.iso".format(event.version.replace(' ', '_'), image.arch)
     filename = os.path.join(ISO_PATH, isoname)
     if not os.path.isfile(filename):
-        link = "http://"; + link[len("https://";):]
-        urlgrabber.urlgrab(link, filename)
-    return isoname
+        urlgrabber.urlgrab(image.url, filename)
+    return filename
 
 # run OpenQA 'isos' job on selected isoname, with given arch and build
 # returns list of job IDs
@@ -75,22 +66,19 @@ def run_if_newer():
     last_versions, json_parsed = read_last()
     jobs = []
 
-    # for every architecture
-    for f_version, current_version, link, name, arch in read_currents():
-        # don't run when there is newer version
-        last_version = last_versions.get(arch, None)
-        print f_version, current_version, link, name, arch,
-        if last_version is not None and (last_version >= current_version):
-            print " - Skipped"
+    wiki = wikitcms.wiki.Wiki(('https', 'fedoraproject.org'), '/w/')
+    currev = wiki.current_event
+    query1 = fedfind.release.Query('imagetype', ('boot',))
+    query2 = fedfind.release.Query('arch', VERSIONS)
+    for image in currev.ff_release.find_images((query1, query2)):
+        last_version = last_versions.get(image.arch, None)
+        print("{0} {1}".format(image.url, image.desc))
+        if last_version and last_version >= currev.version:
+            print(" - Skipped")
             continue
-
-        print ""
-
-        json_parsed[arch] = current_version
-
-        isoname = download_rawhide_iso(link, name, arch)
-        job_ids = run_openqa_jobs(isoname, arch, f_version, current_version)
-
+        json_parsed[image.arch] = currev.version
+        isoname = download_rawhide_iso(image, currev)
+        job_ids = run_openqa_jobs(isoname, image.arch, currev.version)
         jobs.extend(job_ids)
 
     # write info about latest versions
-- 
2.1.0

_______________________________________________
qa-devel mailing list
[email protected]
https://admin.fedoraproject.org/mailman/listinfo/qa-devel

Reply via email to