← Back to team overview

canonical-ubuntu-qa team mailing list archive

[Merge] ~andersson123/autopkgtest-cloud:die-roll-mechanism-stable-vs-devel into autopkgtest-cloud:master

 

Tim Andersson has proposed merging ~andersson123/autopkgtest-cloud:die-roll-mechanism-stable-vs-devel into autopkgtest-cloud:master.

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

For more details, see:
https://code.launchpad.net/~andersson123/autopkgtest-cloud/+git/autopkgtest-cloud/+merge/465916
-- 
Your team Canonical's Ubuntu QA is requested to review the proposed merge of ~andersson123/autopkgtest-cloud:die-roll-mechanism-stable-vs-devel into autopkgtest-cloud:master.
diff --git a/charms/focal/autopkgtest-cloud-worker/autopkgtest-cloud/worker/worker b/charms/focal/autopkgtest-cloud-worker/autopkgtest-cloud/worker/worker
index af3b906..d01f827 100755
--- a/charms/focal/autopkgtest-cloud-worker/autopkgtest-cloud/worker/worker
+++ b/charms/focal/autopkgtest-cloud-worker/autopkgtest-cloud/worker/worker
@@ -697,6 +697,7 @@ def request(msg):
         raise NotImplementedError(
             "cannot parse queue name %s" % msg.delivery_info["routing_key"]
         )
+    # Add die roll mechanism here for stable vs devel
 
     systemd_logging_handler._extra["ADT_RELEASE"] = release
     systemd_logging_handler._extra["ADT_ARCH"] = architecture
@@ -707,6 +708,28 @@ def request(msg):
         )
     except Exception as _:
         worker_upstream_percentage = 33
+
+    try:
+        stable_release_percentage = int(
+            cfg["autopkgtest"]["stable_release_percentage"]
+        )
+    except Exception as _:
+        stable_release_percentage = 100
+
+    if release != distro_info.UbuntuDistroInfo().devel():
+        if random.randint(1, 100) > stable_release_percentage:
+            logging.info(
+                "Stable release test request and 1d100 rolled above %i, skipping for now",
+                stable_release_percentage,
+            )
+            msg.channel.basic_reject(msg.delivery_tag, requeue=True)
+            return
+        else:
+            logging.info(
+                "Stable release test request and 1d100 rolled below %i, running it now",
+                stable_release_percentage,
+            )
+
     if msg.delivery_info["routing_key"].startswith("debci-upstream-"):
         # crude way to not allow upstream tests to monopolise resources - only X%
         # of chances to really run them
diff --git a/charms/focal/autopkgtest-cloud-worker/config.yaml b/charms/focal/autopkgtest-cloud-worker/config.yaml
index 3719fad..ddbeae5 100644
--- a/charms/focal/autopkgtest-cloud-worker/config.yaml
+++ b/charms/focal/autopkgtest-cloud-worker/config.yaml
@@ -119,3 +119,8 @@ options:
     description: Percentage of workers that'll accept upstream tests.
                  This is useful to prioritise certain tests.
     type: int
+  stable-release-percentage:
+    default: 100
+    description: Percentage of workers that'll accept test requests for
+                 stable releases. This is useful to prioritise tests
+                 for the development release.
diff --git a/charms/focal/autopkgtest-cloud-worker/reactive/autopkgtest_cloud_worker.py b/charms/focal/autopkgtest-cloud-worker/reactive/autopkgtest_cloud_worker.py
index c8874c3..9aa2444 100644
--- a/charms/focal/autopkgtest-cloud-worker/reactive/autopkgtest_cloud_worker.py
+++ b/charms/focal/autopkgtest-cloud-worker/reactive/autopkgtest_cloud_worker.py
@@ -506,6 +506,7 @@ def write_swift_config():
     "config.changed.mirror",
     "config.changed.net-name",
     "config.changed.worker-upstream-percentage",
+    "config.changed.stable-release-percentage",
 )
 @when_any("config.set.nova-rcs", "config.set.lxd-remotes")
 def write_worker_config():
@@ -533,6 +534,9 @@ def write_worker_config():
             "worker_upstream_percentage": config().get(
                 "worker-upstream-percentage"
             ),
+            "stable_release_percentage": config().get(
+                "stable-release-percentage"
+            ),
         },
         "virt": {
             "package_size_default": config().get("worker-default-flavor"),
diff --git a/mojo/service-bundle b/mojo/service-bundle
index 77703c1..1b0c64e 100644
--- a/mojo/service-bundle
+++ b/mojo/service-bundle
@@ -76,6 +76,7 @@ applications:
             nova-rcs: include-base64://{{local_dir}}/novarcs.tar
             worker-tmp-cleanup-config: D /tmp 1777 root root 30d
             worker-upstream-percentage: 33
+            stable-release-percentage: 100
 {%- if stage_name == "production" %}
             net-name: net_prod-proposed-migration
             worker-default-flavor: autopkgtest