diff --git a/src/gardenlinux/constants.py b/src/gardenlinux/constants.py index 71993cf1..d73c29fc 100644 --- a/src/gardenlinux/constants.py +++ b/src/gardenlinux/constants.py @@ -79,6 +79,7 @@ "pxe.tar.gz.log", "root.squashfs", "manifest.log", + "requirements", "squashfs.log", "release.log", "vmlinuz.log", @@ -123,6 +124,7 @@ "gcpimage.tar.gz": "application/io.gardenlinux.image.format.gcpimage.tar.gz", "vmdk": "application/io.gardenlinux.image.format.vmdk", "ova": "application/io.gardenlinux.image.format.ova", + "requirements": "application/io.gardenlinux.image.requirements", "efi": "application/io.gardenlinux.efi", "uki": "application/io.gardenlinux.uki", "uki.log": "application/io.gardenlinux.log", diff --git a/src/gardenlinux/s3/s3_artifacts.py b/src/gardenlinux/s3/s3_artifacts.py index a37ca7ba..0bccf557 100644 --- a/src/gardenlinux/s3/s3_artifacts.py +++ b/src/gardenlinux/s3/s3_artifacts.py @@ -140,6 +140,28 @@ def upload_from_directory( feature_set = release_config.get(UNNAMED_SECTION, "GARDENLINUX_FEATURES") feature_list = feature_set.split(",") + requirements_file = artifacts_dir.joinpath(f"{cname}.requirements") + require_uefi = None + secureboot = None + + if requirements_file.exists(): + requirements_config = ConfigParser(allow_unnamed_section=True) + requirements_config.read(requirements_file) + + if requirements_config.has_option(UNNAMED_SECTION, "uefi"): + require_uefi = requirements_config.getboolean(UNNAMED_SECTION, "uefi") + + if requirements_config.has_option(UNNAMED_SECTION, "secureboot"): + secureboot = requirements_config.getboolean( + UNNAMED_SECTION, "secureboot" + ) + + if require_uefi is None: + require_uefi = "_usi" in feature_list + + if secureboot is None: + secureboot = "_trustedboot" in feature_list + metadata = { "platform": cname_object.platform, "architecture": cname_object.arch, @@ -149,8 +171,8 @@ def upload_from_directory( "gardenlinux_epoch": int(cname_object.version.split(".", 1)[0]), "logs": None, "modifiers": feature_list, - "require_uefi": "_usi" in feature_list, - "secureboot": "_trustedboot" in feature_list, + "require_uefi": require_uefi, + "secureboot": secureboot, "published_image_metadata": None, "s3_bucket": self._bucket.name, "s3_key": f"meta/singles/{cname}",