← Back to team overview

canonical-ubuntu-qa team mailing list archive

[Merge] ~uralt/autopkgtest-cloud:get-by-uuid into autopkgtest-cloud:master

 

Ural Tunaboyu has proposed merging ~uralt/autopkgtest-cloud:get-by-uuid into autopkgtest-cloud:master.

Requested reviews:
  Canonical's Ubuntu QA (canonical-ubuntu-qa)

For more details, see:
https://code.launchpad.net/~uralt/autopkgtest-cloud/+git/autopkgtest-cloud/+merge/469607

Added a new endpoint for getting a test result directly by UUID at /<uuid>. 
-- 
Your team Canonical's Ubuntu QA is requested to review the proposed merge of ~uralt/autopkgtest-cloud:get-by-uuid into autopkgtest-cloud:master.
diff --git a/charms/focal/autopkgtest-web/webcontrol/browse-test.py b/charms/focal/autopkgtest-web/webcontrol/browse-test.py
index a01d944..95c1cc6 100755
--- a/charms/focal/autopkgtest-web/webcontrol/browse-test.py
+++ b/charms/focal/autopkgtest-web/webcontrol/browse-test.py
@@ -2,7 +2,7 @@
 """Run browse app in local debug mode for testing."""
 
 import argparse
-import importlib
+from importlib import util, machinery
 from pathlib import Path
 
 try:
@@ -16,9 +16,9 @@ from helpers import tests, utils
 
 # import browse.cgi
 browse_path = str(Path(__file__).parent / "browse.cgi")
-loader = importlib.machinery.SourceFileLoader("browse", browse_path)
-spec = importlib.util.spec_from_loader("browse", loader)
-browse = importlib.util.module_from_spec(spec)
+loader = machinery.SourceFileLoader("browse", browse_path)
+spec = util.spec_from_loader("browse", loader)
+browse = util.module_from_spec(spec)
 loader.exec_module(browse)
 
 
diff --git a/charms/focal/autopkgtest-web/webcontrol/browse.cgi b/charms/focal/autopkgtest-web/webcontrol/browse.cgi
index 3029f4f..4007995 100755
--- a/charms/focal/autopkgtest-web/webcontrol/browse.cgi
+++ b/charms/focal/autopkgtest-web/webcontrol/browse.cgi
@@ -755,6 +755,65 @@ def package_release_arch(package, release, arch, _=None):
         title_suffix="- %s/%s/%s" % (package, release, arch),
     )
 
+@app.route("/<uuid>")
+def get_by_uuid(uuid):
+    results = []
+    package = ""
+    release = ""
+    arch = ""
+    for row in db_con.execute("SELECT run_id, version, triggers, duration, exitcode, requester, env, uuid, package, release, arch FROM result "
+                              "LEFT JOIN test ON result.test_id = test.id "
+                              "WHERE uuid = ?",
+                              (uuid,)):
+        requester = row[5] if row[5] else "-"
+        code = human_exitcode(row[4])
+        version = row[1]
+        triggers = row[2]
+        additional_params = row[
+            6
+        ]  # string of comma separated env variables e.g. all-proposed=1,test-name=mytest
+        package = row[8]
+        release = row[9]
+        arch = row[10]
+
+        show_retry = code != "pass"
+        url = os.path.join(
+            swift_container_url % release,
+            release,
+            arch,
+            srchash(package),
+            package,
+            row[0],
+        )
+        all_proposed = (
+            additional_params is not None
+            and "all-proposed=1" in additional_params
+        )
+        results.append(
+            (
+                version,
+                triggers,
+                additional_params,
+                human_date(row[0]),
+                human_sec(int(row[3])),
+                requester,
+                code,
+                url,
+                show_retry,
+                all_proposed,
+                row[7],
+            )
+        )
+    return render(
+        "browse-results.html",
+        package=package,
+        release=release,
+        arch=arch,
+        package_results=results,
+        title_suffix="- %s/%s/%s" % (package, release, arch),
+    )
+
+
 
 @app.route("/releases/<release>")
 @app.route("/releases/<release>/<arch>")

Follow ups