diff --git a/fifloader.py b/fifloader.py index 0104d32d..7f4a2f69 100755 --- a/fifloader.py +++ b/fifloader.py @@ -39,6 +39,12 @@ loader expects a more obvious and simple format where the value of the 'settings dict of keys and values. With this loader, Products can inherit settings from Flavors to reduce duplication - see below. +Each Product must have a 'group_name' key whose value is the name of a job group which all job +templates that test against that Product will be a part of. This association is an invention of +this loader, derived from how Fedora organizes tests. The value is used by this loader, then the +entry is dropped entirely as part of conversion to the upstream format. group_name can be set via +ProductDefaults (see below). + The expected format of the Flavors dict is a dict-of-dicts. For each entry, the key is a flavor name that is expected to be used as the 'flavor' for one or more Product(s). The value is a dict with only a 'settings' key, containing settings in the same format described above. When @@ -269,27 +275,13 @@ def generate_job_templates(products, profiles, pgroups, testsuites): continue for (profile, prio) in suiteprofs.items(): jobtemplate = {'test_suite_name': name, 'prio': prio} - # x86_64 compose - jobtemplate['group_name'] = 'fedora' jobtemplate['machine_name'] = profiles[profile]['machine'] product = products[profiles[profile]['product']] + jobtemplate['group_name'] = product['group_name'] jobtemplate['arch'] = product['arch'] jobtemplate['flavor'] = product['flavor'] jobtemplate['distri'] = product['distri'] jobtemplate['version'] = product['version'] - if jobtemplate['machine_name'] == 'ppc64le': - if 'updates' in product['flavor']: - jobtemplate['group_name'] = "Fedora PowerPC Updates" - else: - jobtemplate['group_name'] = "Fedora PowerPC" - elif jobtemplate['machine_name'] in ('aarch64', 'ARM'): - if 'updates' in product['flavor']: - jobtemplate['group_name'] = "Fedora AArch64 Updates" - else: - jobtemplate['group_name'] = "Fedora AArch64" - elif 'updates' in product['flavor']: - # x86_64 updates - jobtemplate['group_name'] = "Fedora Updates" jobtemplates.append(jobtemplate) return jobtemplates @@ -321,8 +313,10 @@ def reverse_qol(machines, flavors, products, testsuites): converted.append({'key': key, 'value': value}) return converted - # merge flavors into products for product in products.values(): + # delete group names, this association is a loader-only concept + del product["group_name"] + # merge flavors into products flavsets = flavors.get(product["flavor"], {}).get("settings", {}) if flavsets: temp = dict(flavsets) diff --git a/schemas/fif-product-predefault.json b/schemas/fif-product-predefault.json index 00b2a7be..c484ed7b 100644 --- a/schemas/fif-product-predefault.json +++ b/schemas/fif-product-predefault.json @@ -1,12 +1,13 @@ { "$schema": "http://json-schema.org/draft-07/schema#", - "$id": "fif-product.json", + "$id": "fif-product-predefault.json", "title": "FIF single product schema (pre-defaults-merge)", "type": "object", "properties": { "arch": { "$ref": "fif-arch.json" }, "distri": { "$ref": "fif-distri.json" }, "flavor": { "type": "string" }, + "group_name": { "type": "string" }, "version": { "$ref": "fif-version.json" }, "settings": { "$ref": "fif-settingshash.json" }, "name": { "type": "string" } diff --git a/schemas/fif-product.json b/schemas/fif-product.json index 35812783..892fc62a 100644 --- a/schemas/fif-product.json +++ b/schemas/fif-product.json @@ -7,6 +7,7 @@ "arch", "distri", "flavor", + "group_name", "version" ], "properties": { @@ -14,6 +15,7 @@ "distri": { "$ref": "fif-distri.json" }, "flavor": { "type": "string" }, "version": { "$ref": "fif-version.json" }, + "group_name": { "type": "string" }, "settings": { "$ref": "fif-settingshash.json" }, "name": { "type": "string" } }, diff --git a/schemas/fif-productdefaults.json b/schemas/fif-productdefaults.json index e1c20714..7509333f 100644 --- a/schemas/fif-productdefaults.json +++ b/schemas/fif-productdefaults.json @@ -8,6 +8,7 @@ "arch": { "$ref": "fif-arch.json" }, "distri": { "$ref": "fif-distri.json" }, "flavor": { "type": "string" }, + "group_name": { "type": "string" }, "version": { "$ref": "fif-version.json" }, "settings": { "$ref": "fif-settingshash.json" }, "name": { "type": "string" } diff --git a/templates-updates.fif.json b/templates-updates.fif.json index dcbb6237..2b69becb 100644 --- a/templates-updates.fif.json +++ b/templates-updates.fif.json @@ -88,16 +88,19 @@ }, "ProductDefaults": { "distri": "fedora", + "group_name": "Fedora Updates", "version": "*" }, "Products": { "fedora-updates-container-aarch64-*": { "arch": "aarch64", - "flavor": "updates-container" + "flavor": "updates-container", + "group_name": "Fedora AArch64 Updates" }, "fedora-updates-container-ppc64le-*": { "arch": "ppc64le", - "flavor": "updates-container" + "flavor": "updates-container", + "group_name": "Fedora PowerPC Updates" }, "fedora-updates-container-x86_64-*": { "arch": "x86_64", @@ -116,15 +119,18 @@ }, "fedora-updates-server-aarch64-*": { "arch": "aarch64", - "flavor": "updates-server" + "flavor": "updates-server", + "group_name": "Fedora AArch64 Updates" }, "fedora-updates-server-ppc64le-*": { "arch": "ppc64le", - "flavor": "updates-server" + "flavor": "updates-server", + "group_name": "Fedora PowerPC Updates" }, "fedora-updates-server-upgrade-ppc64le-*": { "arch": "ppc64le", - "flavor": "updates-server-upgrade" + "flavor": "updates-server-upgrade", + "group_name": "Fedora PowerPC Updates" }, "fedora-updates-server-upgrade-x86_64-*": { "arch": "x86_64", diff --git a/templates.fif.json b/templates.fif.json index 4f42e3f3..5f2b1726 100644 --- a/templates.fif.json +++ b/templates.fif.json @@ -230,6 +230,7 @@ }, "ProductDefaults": { "distri": "fedora", + "group_name": "fedora", "version": "*" }, "Products": { @@ -243,11 +244,13 @@ }, "fedora-Cloud_Base-qcow2-qcow2-aarch64-*": { "arch": "aarch64", - "flavor": "Cloud_Base-qcow2-qcow2" + "flavor": "Cloud_Base-qcow2-qcow2", + "group_name": "Fedora AArch64" }, "fedora-Cloud_Base-qcow2-qcow2-ppc64le-*": { "arch": "ppc64le", - "flavor": "Cloud_Base-qcow2-qcow2" + "flavor": "Cloud_Base-qcow2-qcow2", + "group_name": "Fedora PowerPC" }, "fedora-Cloud_Base-qcow2-qcow2-x86_64-*": { "arch": "x86_64", @@ -259,7 +262,8 @@ }, "fedora-Everything-boot-iso-ppc64le-*": { "arch": "ppc64le", - "flavor": "Everything-boot-iso" + "flavor": "Everything-boot-iso", + "group_name": "Fedora PowerPC" }, "fedora-Everything-boot-iso-x86_64-*": { "arch": "x86_64", @@ -270,7 +274,8 @@ }, "fedora-IoT-dvd_ostree-iso-aarch64-*": { "arch": "aarch64", - "flavor": "IoT-dvd_ostree-iso" + "flavor": "IoT-dvd_ostree-iso", + "group_name": "Fedora AArch64" }, "fedora-IoT-dvd_ostree-iso-x86_64-*": { "arch": "x86_64", @@ -286,15 +291,18 @@ }, "fedora-Minimal-raw_xz-raw.xz-aarch64-*": { "arch": "aarch64", - "flavor": "Minimal-raw_xz-raw.xz" + "flavor": "Minimal-raw_xz-raw.xz", + "group_name": "Fedora AArch64" }, "fedora-Server-boot-iso-aarch64-*": { "arch": "aarch64", - "flavor": "Server-boot-iso" + "flavor": "Server-boot-iso", + "group_name": "Fedora AArch64" }, "fedora-Server-boot-iso-ppc64le-*": { "arch": "ppc64le", - "flavor": "Server-boot-iso" + "flavor": "Server-boot-iso", + "group_name": "Fedora PowerPC" }, "fedora-Server-boot-iso-x86_64-*": { "arch": "x86_64", @@ -305,11 +313,13 @@ }, "fedora-Server-dvd-iso-aarch64-*": { "arch": "aarch64", - "flavor": "Server-dvd-iso" + "flavor": "Server-dvd-iso", + "group_name": "Fedora AArch64" }, "fedora-Server-dvd-iso-ppc64le-*": { "arch": "ppc64le", - "flavor": "Server-dvd-iso" + "flavor": "Server-dvd-iso", + "group_name": "Fedora PowerPC" }, "fedora-Server-dvd-iso-x86_64-*": { "arch": "x86_64", @@ -317,11 +327,13 @@ }, "fedora-Server-raw_xz-raw.xz-aarch64-*": { "arch": "aarch64", - "flavor": "Server-raw_xz-raw.xz" + "flavor": "Server-raw_xz-raw.xz", + "group_name": "Fedora AArch64" }, "fedora-Silverblue-dvd_ostree-iso-ppc64le-*": { "arch": "ppc64le", - "flavor": "Silverblue-dvd_ostree-iso" + "flavor": "Silverblue-dvd_ostree-iso", + "group_name": "Fedora PowerPC" }, "fedora-Silverblue-dvd_ostree-iso-x86_64-*": { "arch": "x86_64", @@ -329,7 +341,8 @@ }, "fedora-Workstation-live-iso-ppc64le-*": { "arch": "ppc64le", - "flavor": "Workstation-live-iso" + "flavor": "Workstation-live-iso", + "group_name": "Fedora PowerPC" }, "fedora-Workstation-live-iso-x86_64-*": { "arch": "x86_64", @@ -348,19 +361,23 @@ }, "fedora-Workstation-raw_xz-raw.xz-aarch64-*": { "arch": "aarch64", - "flavor": "Workstation-raw_xz-raw.xz" + "flavor": "Workstation-raw_xz-raw.xz", + "group_name": "Fedora AArch64" }, "fedora-Workstation-upgrade-aarch64-*": { "arch": "aarch64", - "flavor": "Workstation-upgrade" + "flavor": "Workstation-upgrade", + "group_name": "Fedora AArch64" }, "fedora-universal-aarch64-*": { "arch": "aarch64", - "flavor": "universal" + "flavor": "universal", + "group_name": "Fedora AArch64" }, "fedora-universal-ppc64le-*": { "arch": "ppc64le", - "flavor": "universal" + "flavor": "universal", + "group_name": "Fedora PowerPC" }, "fedora-universal-x86_64-*": { "arch": "x86_64", @@ -368,11 +385,13 @@ }, "fedora-seasonal-aarch64-*": { "arch": "aarch64", - "flavor": "seasonal" + "flavor": "seasonal", + "group_name": "Fedora AArch64" }, "fedora-seasonal-ppc64le-*": { "arch": "ppc64le", - "flavor": "seasonal" + "flavor": "seasonal", + "group_name": "Fedora PowerPC" }, "fedora-seasonal-x86_64-*": { "arch": "x86_64", diff --git a/unittests/data/templates-updates.fif.json b/unittests/data/templates-updates.fif.json index dc4d01c5..7f3a33ee 100644 --- a/unittests/data/templates-updates.fif.json +++ b/unittests/data/templates-updates.fif.json @@ -4,6 +4,7 @@ "arch": "ppc64le", "distri": "fedora", "flavor": "updates-server", + "group_name": "Fedora PowerPC Updates", "settings": {}, "version": "*" }, @@ -11,6 +12,7 @@ "arch": "x86_64", "distri": "fedora", "flavor": "updates-server", + "group_name": "Fedora Updates", "settings": {}, "version": "*" } diff --git a/unittests/data/templates.complete.fif.json b/unittests/data/templates.complete.fif.json index 4a056ec6..b366e2d3 100644 --- a/unittests/data/templates.complete.fif.json +++ b/unittests/data/templates.complete.fif.json @@ -33,12 +33,14 @@ "distri": "fedora", "arch": "ppc64le", "flavor": "Server-dvd-iso", + "group_name": "Fedora PowerPC", "version": "*" }, "fedora-Server-dvd-iso-x86_64-*": { "distri": "fedora", "arch": "x86_64", "flavor": "Server-dvd-iso", + "group_name": "fedora", "settings": { "TEST_TARGET": "COMPOSE", "QEMURAM": "3072" diff --git a/unittests/data/templates.fif.json b/unittests/data/templates.fif.json index db9e5090..335aa906 100644 --- a/unittests/data/templates.fif.json +++ b/unittests/data/templates.fif.json @@ -43,11 +43,13 @@ "Products": { "fedora-Server-dvd-iso-ppc64le-*": { "arch": "ppc64le", - "flavor": "Server-dvd-iso" + "flavor": "Server-dvd-iso", + "group_name": "Fedora PowerPC" }, "fedora-Server-dvd-iso-x86_64-*": { "arch": "x86_64", "flavor": "Server-dvd-iso", + "group_name": "fedora", "settings": { "TEST_TARGET": "COMPOSE", "QEMURAM": "3072"