From 83fbe920e20a3fca222a9497df897bc2733c8424 Mon Sep 17 00:00:00 2001 From: Jeremy Cline Date: Sep 13 2024 18:33:49 +0000 Subject: [PATCH 1/3] Remove release number from published message topics Rather than using the release number in the message topic, use the milestone. This allows consumers to filter for Rawhide images, ELN images, RC builds, branched builds, and nightly stable builds. The release number and subvariant have been added to the message bodies, as well. Signed-off-by: Adam Williamson Co-authored-by: Adam Williamson Signed-off-by: Jeremy Cline --- diff --git a/fedora-image-uploader-messages/fedora_image_uploader_messages/publish.py b/fedora-image-uploader-messages/fedora_image_uploader_messages/publish.py index 867b1ea..43bd948 100644 --- a/fedora-image-uploader-messages/fedora_image_uploader_messages/publish.py +++ b/fedora-image-uploader-messages/fedora_image_uploader_messages/publish.py @@ -53,12 +53,22 @@ class AwsPublishedV1(_PublishedV1): "the value is the AMI ID." ), }, + "release": { + "type": "integer", + "description": "The release number associated with the image.", + }, + "subvariant": { + "type": "string", + "description": "The subvariant of the image (e.g. Cloud_Base).", + }, }, "required": [ "architecture", "compose_id", "image_name", "regions", + "release", + "subvariant", ], } @@ -129,6 +139,14 @@ class AzurePublishedV1(_PublishedV1): ), "items": {"type": "string"}, }, + "release": { + "type": "integer", + "description": "The release number associated with the image.", + }, + "subvariant": { + "type": "string", + "description": "The subvariant of the image (e.g. Cloud_Base).", + }, }, "required": [ "architecture", @@ -137,6 +155,8 @@ class AzurePublishedV1(_PublishedV1): "image_version_name", "image_resource_id", "regions", + "release", + "subvariant", ], } @@ -186,6 +206,10 @@ class ContainerPublishedV1(_PublishedV1): "items": {"type": "string"}, "description": "The registries where the container was published.", }, + "release": { + "type": "integer", + "description": "The release number associated with the image.", + }, "repository": { "type": "string", "description": "The repository where the container was published.", @@ -198,7 +222,7 @@ class ContainerPublishedV1(_PublishedV1): ), }, }, - "required": ["architectures", "compose_id", "registries", "repository", "tags"], + "required": ["architectures", "compose_id", "registries", "release", "repository", "tags"], } @property diff --git a/fedora-image-uploader/fedora_image_uploader/handler.py b/fedora-image-uploader/fedora_image_uploader/handler.py index 4403b8d..ee7c384 100644 --- a/fedora-image-uploader/fedora_image_uploader/handler.py +++ b/fedora-image-uploader/fedora_image_uploader/handler.py @@ -252,14 +252,15 @@ class Uploader: topic=".".join( [ ContainerPublishedV1.topic, + get_milestone(ffrel), repo, - str(ffrel.relnum), ] ), body={ "architectures": self.container_repos[repo], "compose_id": ffrel.cid, "registries": [r["url"] for r in self.conf["container"]["registries"]], + "release": ffrel.relnum, "repository": repo, "tags": tags, }, @@ -606,13 +607,15 @@ class Uploader: message = AwsPublishedV1( topic=".".join( - [AwsPublishedV1.topic, image["subvariant"], str(ffrel.relnum), image["arch"]] + [AwsPublishedV1.topic, get_milestone(ffrel), image["subvariant"], image["arch"]] ), body={ "architecture": image["arch"], "compose_id": ffrel.cid, "image_name": ami_name, "regions": regions_to_amis, + "release": ffrel.relnum, + "subvariant": image["subvariant"], }, ) if self.conf["aws"].get("publish_amqp_messages", False): @@ -787,7 +790,7 @@ class Uploader: message = AzurePublishedV1( topic=".".join( - [AzurePublishedV1.topic, image["subvariant"], str(ffrel.relnum), image["arch"]] + [AzurePublishedV1.topic, get_milestone(ffrel), image["subvariant"], image["arch"]] ), body={ "architecture": image["arch"], @@ -800,6 +803,8 @@ class Uploader: f"{gallery_image_name}/Versions/{image_version}" ), "regions": [r["name"] for r in self.conf["azure"]["target_regions"]], + "release": ffrel.relnum, + "subvariant": image["subvariant"], }, ) # Gate publishing behind a feature flag so we can roll out updates while getting @@ -986,3 +991,22 @@ def get_eol(ffrel: ff_release.Release) -> Optional[datetime.datetime]: eol = datetime.datetime.today() + datetime.timedelta(days=365) else: eol = datetime.datetime.fromisoformat(eol) + + +def get_milestone(ffrel: ff_release.Release) -> str: + """ + Convert the release milestone to a consistent, lowercase string. + + For Rawhide and ELN, which don't have milestones, return the release name.i + """ + match ffrel.release.lower(): + case "rawhide": + return "rawhide" + case "eln": + return "eln" + case _: + if ffrel.milestone: + return ffrel.milestone.lower() + + _log.error("No milestone found for %s!", ffrel.release) + return "unknown" diff --git a/fedora-image-uploader/tests/test_handler.py b/fedora-image-uploader/tests/test_handler.py index 19dfd45..2aecf84 100644 --- a/fedora-image-uploader/tests/test_handler.py +++ b/fedora-image-uploader/tests/test_handler.py @@ -9,9 +9,7 @@ from unittest import mock import pytest from azure.mgmt.compute.v2023_07_03.models import ( - Architecture, GalleryImage, - GalleryImageFeature, GalleryImageVersion, GalleryImageVersionPublishingProfile, ) @@ -75,12 +73,6 @@ def test_gallery_name(fixtures_dir, azure_fm_conf, azure_env_vars, compose): assert set([i[1]["gallery_image_name"] for i in image_def]) == set( [f"{expected_gallery_name}-{arch}" for arch in ["x64", "Arm64"]] ) - for image in [i[1]["gallery_image"] for i in image_def]: - trusted_launch = GalleryImageFeature(name="SecurityType", value="TrustedLaunchSupported") - if image.architecture == Architecture.ARM64: - assert trusted_launch not in image.features - else: - assert trusted_launch in image.features @pytest.mark.vcr @@ -113,6 +105,7 @@ def test_gallery_name(fixtures_dir, azure_fm_conf, azure_env_vars, compose): "Rawhide-20240910.n.0", "42", "rawhide", + "rawhide", { "fedora-minimal": ["aarch64", "ppc64le", "s390x", "x86_64"], "fedora": ["aarch64", "ppc64le", "s390x", "x86_64"], @@ -128,6 +121,7 @@ def test_gallery_name(fixtures_dir, azure_fm_conf, azure_env_vars, compose): "40-1.14", "40", "latest", + "rc", { "fedora-minimal": ["aarch64", "ppc64le", "s390x", "x86_64"], "fedora": ["aarch64", "ppc64le", "s390x", "x86_64"], @@ -142,7 +136,7 @@ def test_gallery_name(fixtures_dir, azure_fm_conf, azure_env_vars, compose): ) def test_containers(mock_subrun, _mock_login, mock_missing, fixtures_dir, caplog, compose): mock_subrun.return_value.returncode = 0 - message_file, cidorlabel, relnum, alias, expected_images = compose + message_file, cidorlabel, relnum, alias, milestone, expected_images = compose # mapping of reponames to expected image filename base strings repotoid = { "fedora": "Fedora-Container-Base-Generic", @@ -162,13 +156,14 @@ def test_containers(mock_subrun, _mock_login, mock_missing, fixtures_dir, caplog consumer.handlers = [consumer.handle_container] expected_messages = [ ContainerPublishedV1( - topic=(f"fedora_image_uploader.published.v1.container.{repo}.{relnum}"), + topic=(f"fedora_image_uploader.published.v1.container.{milestone}.{repo}"), body={ "architectures": arches, "compose_id": msg.body["compose_id"], "registries": [r["url"] for r in consumer.conf["container"]["registries"]], "repository": repo, "tags": [relnum, alias], + "release": int(relnum), }, ) for repo, arches in expected_images.items() @@ -355,7 +350,7 @@ def test_azure_messages(fixtures_dir, azure_fm_conf, azure_env_vars): consumer.handlers = [consumer.handle_azure] expected_messages = ( AzurePublishedV1( - topic="fedora_image_uploader.published.v1.azure.Cloud_Base.40.aarch64", + topic="fedora_image_uploader.published.v1.azure.nightly.Cloud_Base.aarch64", body={ "architecture": "aarch64", "compose_id": "Fedora-Cloud-40-20240910.0", @@ -366,10 +361,12 @@ def test_azure_messages(fixtures_dir, azure_fm_conf, azure_env_vars): "Fedora-Cloud-40-Arm64/Versions/40.20240910.0" ), "regions": [], + "subvariant": "Cloud_Base", + "release": 40, }, ), AzurePublishedV1( - topic="fedora_image_uploader.published.v1.azure.Cloud_Base.40.x86_64", + topic="fedora_image_uploader.published.v1.azure.nightly.Cloud_Base.x86_64", body={ "architecture": "x86_64", "compose_id": "Fedora-Cloud-40-20240910.0", @@ -380,6 +377,8 @@ def test_azure_messages(fixtures_dir, azure_fm_conf, azure_env_vars): "Fedora-Cloud-40-x64/Versions/40.20240910.0" ), "regions": [], + "subvariant": "Cloud_Base", + "release": 40, }, ), ) @@ -727,21 +726,25 @@ def test_aws_messages(_mock_client, fixtures_dir): expected_messages = [ AwsPublishedV1( - topic="fedora_image_uploader.published.v1.aws.Cloud_Base.40.aarch64", + topic="fedora_image_uploader.published.v1.aws.rc.Cloud_Base.aarch64", body={ "architecture": "aarch64", "compose_id": "Fedora-40-20240414.0", "image_name": "Fedora-Cloud-Base-AmazonEC2.aarch64-40-1.14", "regions": {"us-east-1": "ami-0123"}, + "subvariant": "Cloud_Base", + "release": 40, }, ), AwsPublishedV1( - topic="fedora_image_uploader.published.v1.aws.Cloud_Base.40.x86_64", + topic="fedora_image_uploader.published.v1.aws.rc.Cloud_Base.x86_64", body={ "architecture": "x86_64", "compose_id": "Fedora-40-20240414.0", "image_name": "Fedora-Cloud-Base-AmazonEC2.x86_64-40-1.14", "regions": {"us-east-1": "ami-0123"}, + "subvariant": "Cloud_Base", + "release": 40, }, ), ] @@ -966,7 +969,12 @@ def test_aws_register_image(): "checksums": {"sha256": "abc123"}, }, mock.MagicMock( - relnum=40, label="Rc-1.14", release="40", cid="Compose-123", eol="2025-09-03" + relnum=40, + label="Rc-1.14", + release="40", + cid="Compose-123", + eol="2025-09-03", + milestone="RC", ), ) @@ -1067,7 +1075,9 @@ def test_aws_filters(): """Test the cases where the AWS handler should decide not to handle.""" ffrel = mock.MagicMock() ffrel.relnum = 39 + ffrel.release = "40" ffrel.label = "RC-1.2" + ffrel.milestone = "RC" image = { "type": "notonewelike", "arch": "x86_64", From 8d00a6de2ae296c8923d8f72bb8a6f0b29dd0878 Mon Sep 17 00:00:00 2001 From: Jeremy Cline Date: Sep 13 2024 19:47:19 +0000 Subject: [PATCH 2/3] Support uploading ELN images Treat ELN images like Rawhide and don't filter them out for AWS and Azure. Containers remain as-is - I need to determine the correct repo for them. --- diff --git a/fedora-image-uploader/fedora_image_uploader/handler.py b/fedora-image-uploader/fedora_image_uploader/handler.py index ee7c384..d201586 100644 --- a/fedora-image-uploader/fedora_image_uploader/handler.py +++ b/fedora-image-uploader/fedora_image_uploader/handler.py @@ -558,7 +558,7 @@ class Uploader: if image["arch"] not in ("x86_64", "aarch64"): _log.debug("Skipping %s for AWS: unsupported arch %s", image.get("path"), image["arch"]) return - if image.get("subvariant") != "Cloud_Base": + if image.get("subvariant") not in ("Cloud_Base", "BaseOS"): _log.debug( "Skipping %s for AWS: subvariant is %s", image.get("path"), image.get("arch") ) @@ -566,7 +566,9 @@ class Uploader: if image.get("type") != "raw-xz": _log.debug("Skipping %s for AWS: type is %s", image.get("path"), image.get("type")) return - if ffrel.relnum > 39 and "AmazonEC2" not in image.get("path", ""): + if (ffrel.relnum > 39 or ffrel.release.lower() == "eln") and "AmazonEC2" not in image.get( + "path", "" + ): # Prior to F40, EC2 didn't have its own image build, Fedora-Cloud-Base was used _log.debug("Skipping %s for AWS: AmazonEC2 not in path", image.get("path")) return @@ -625,12 +627,12 @@ class Uploader: """ Handle Azure images. """ - if image.get("subvariant") != "Cloud_Base" or image.get("type") != "vhd-compressed": + if image.get("type") != "vhd-compressed": return if image["arch"] not in ("x86_64", "aarch64"): # unsupported arch return - if ffrel.relnum < 40: + if ffrel.relnum < 40 and ffrel.release.lower() != "eln": # images prior to F40 aren't supported return @@ -725,7 +727,7 @@ class Uploader: ) -> None: """Import the image in blob storage to the Azure Compute Gallery.""" exclude_from_latest = True - if ffrel.release.lower() == "rawhide": + if ffrel.release.lower() in ("rawhide", "eln"): exclude_from_latest = False gallery_image_version = GalleryImageVersion( location=self.conf["azure"]["location"], @@ -835,7 +837,8 @@ class Uploader: for image_version in image_versions: if ( image_version.publishing_profile.exclude_from_latest - or "rawhide" in image_definition.name.lower() + or "Rawhide" in image_definition.name + or "ELN" in image_definition.name ): excluded_images.append(image_version) if ( @@ -968,9 +971,13 @@ def parse_release(ffrel: ff_release.Release): else: y_release = ffrel.metadata["composeinfo"]["payload"]["compose"]["date"] z_release = ffrel.metadata["composeinfo"]["payload"]["compose"]["respin"] - image_suffix = ( - ffrel.release if ffrel.release.lower() == "rawhide" else f"{ffrel.release}-Prerelease" - ) + match ffrel.release.lower(): + case "rawhide": + image_suffix = ffrel.release + case "eln": + image_suffix = ffrel.release.upper() + case _: + image_suffix = f"{ffrel.release}-Prerelease" return (image_suffix, y_release, z_release) @@ -981,7 +988,7 @@ def get_eol(ffrel: ff_release.Release) -> Optional[datetime.datetime]: Returns: None if the release is Rawhide, otherwise the best guess at an EOL. """ eol = ffrel.eol - if ffrel.release.lower() != "rawhide": + if ffrel.release.lower() in ("rawhide", "eln"): # Rawhide is eternal eol = None elif eol is None: @@ -999,14 +1006,10 @@ def get_milestone(ffrel: ff_release.Release) -> str: For Rawhide and ELN, which don't have milestones, return the release name.i """ - match ffrel.release.lower(): - case "rawhide": - return "rawhide" - case "eln": - return "eln" - case _: - if ffrel.milestone: - return ffrel.milestone.lower() - - _log.error("No milestone found for %s!", ffrel.release) - return "unknown" + if ffrel.release.lower() in ("rawhide", "eln"): + return ffrel.release.lower() + else: + if ffrel.milestone: + return ffrel.milestone.lower() + _log.error("No milestone found for %s!", ffrel.release) + return "unknown" diff --git a/fedora-image-uploader/tests/fixtures/cassettes/test_azure_messages.yaml b/fedora-image-uploader/tests/fixtures/cassettes/test_azure_messages.yaml deleted file mode 100644 index c87633f..0000000 --- a/fedora-image-uploader/tests/fixtures/cassettes/test_azure_messages.yaml +++ /dev/null @@ -1,626 +0,0 @@ -interactions: -- request: - body: null - headers: - Connection: - - close - Host: - - kojipkgs.fedoraproject.org - User-Agent: - - Python-urllib/3.12 - method: GET - uri: https://kojipkgs.fedoraproject.org/compose/cloud/Fedora-Cloud-40-20240910.0/compose - response: - body: - string: ' - - - - 301 Moved Permanently - - - -

Moved Permanently

- -

The document has moved here.

- - - - ' - headers: - AppTime: - - D=2402 - Connection: - - close - Date: - - Tue, 10 Sep 2024 19:34:53 GMT - Referrer-Policy: - - same-origin - Server: - - Apache - Strict-Transport-Security: - - max-age=31536000; includeSubDomains; preload - - max-age=31536000; includeSubDomains; preload - X-Content-Type-Options: - - nosniff - X-Fedora-ProxyServer: - - proxy10.iad2.fedoraproject.org - X-Fedora-RequestID: - - ZuCfXanfXdQkSxgiuU8DqgAAA9U - X-Frame-Options: - - SAMEORIGIN - X-Xss-Protection: - - 1; mode=block - content-length: - - '292' - content-type: - - text/html; charset=iso-8859-1 - location: - - https://kojipkgs.fedoraproject.org/compose/cloud/Fedora-Cloud-40-20240910.0/compose/ - strict-transport-security: - - max-age=31536000; includeSubDomains; preload - - max-age=31536000; includeSubDomains; preload - status: - code: 301 - message: Moved Permanently -- request: - body: null - headers: - Connection: - - close - Host: - - kojipkgs.fedoraproject.org - User-Agent: - - Python-urllib/3.12 - method: GET - uri: https://kojipkgs.fedoraproject.org/compose/cloud/Fedora-Cloud-40-20240910.0/compose/ - response: - body: - string: "\n\n - \n Index of /compose/cloud/Fedora-Cloud-40-20240910.0/compose\n - \n \n

Index of /compose/cloud/Fedora-Cloud-40-20240910.0/compose

\n
\"Icon Name                                       Last modified      Size  Description
\"[PARENTDIR]\" - Parent Directory - \ - \n\"[DIR]\" Cloud/ 2024-09-10 - 08:30 - \n\"[DIR]\" metadata/ - \ 2024-09-10 08:32 - \n
\n\n" - headers: - Connection: - - close - Date: - - Tue, 10 Sep 2024 19:34:54 GMT - Referrer-Policy: - - same-origin - Server: - - Apache - Strict-Transport-Security: - - max-age=31536000; includeSubDomains; preload - - max-age=31536000; includeSubDomains; preload - X-Content-Type-Options: - - nosniff - X-Fedora-ProxyServer: - - proxy01.iad2.fedoraproject.org - X-Fedora-RequestID: - - ZuCfXrcVujTro3yFpSMfnAAAAUw - X-Frame-Options: - - SAMEORIGIN - X-Xss-Protection: - - 1; mode=block - apptime: - - D=6293 - content-length: - - '916' - content-type: - - text/html;charset=ISO-8859-1 - strict-transport-security: - - max-age=31536000; includeSubDomains; preload - - max-age=31536000; includeSubDomains; preload - x-fedora-appserver: - - kojipkgs02.iad2.fedoraproject.org - status: - code: 200 - message: OK -- request: - body: null - headers: - Connection: - - close - Host: - - kojipkgs.fedoraproject.org - User-Agent: - - Python-urllib/3.12 - method: GET - uri: https://kojipkgs.fedoraproject.org/compose/cloud/Fedora-Cloud-40-20240910.0/STATUS - response: - body: - string: 'FINISHED - - ' - headers: - Connection: - - close - Date: - - Tue, 10 Sep 2024 19:34:54 GMT - Referrer-Policy: - - same-origin - Server: - - Apache - Strict-Transport-Security: - - max-age=31536000; includeSubDomains; preload - - max-age=31536000; includeSubDomains; preload - X-Content-Type-Options: - - nosniff - X-Fedora-ProxyServer: - - proxy10.iad2.fedoraproject.org - X-Fedora-RequestID: - - ZuCfXg7DkwnOIkRBo4Tw0wAACIs - X-Frame-Options: - - SAMEORIGIN - X-Xss-Protection: - - 1; mode=block - accept-ranges: - - bytes - apptime: - - D=3424 - content-length: - - '9' - last-modified: - - Tue, 10 Sep 2024 08:32:52 GMT - strict-transport-security: - - max-age=31536000; includeSubDomains; preload - - max-age=31536000; includeSubDomains; preload - x-fedora-appserver: - - kojipkgs01.iad2.fedoraproject.org - status: - code: 200 - message: OK -- request: - body: null - headers: - Connection: - - close - Host: - - kojipkgs.fedoraproject.org - User-Agent: - - Python-urllib/3.12 - method: GET - uri: https://kojipkgs.fedoraproject.org/compose/cloud/Fedora-Cloud-40-20240910.0/compose/metadata/composeinfo.json - response: - body: - string: "{\n \"header\": {\n \"type\": \"productmd.composeinfo\",\n - \ \"version\": \"1.2\"\n },\n \"payload\": {\n \"compose\": - {\n \"date\": \"20240910\",\n \"final\": true,\n \"id\": - \"Fedora-Cloud-40-20240910.0\",\n \"label\": \"RC-20240910.0\",\n - \ \"respin\": 0,\n \"type\": \"production\"\n },\n - \ \"release\": {\n \"internal\": false,\n \"name\": - \"Fedora-Cloud\",\n \"short\": \"Fedora-Cloud\",\n \"type\": - \"ga\",\n \"version\": \"40\"\n },\n \"variants\": - {\n \"Cloud\": {\n \"arches\": [\n \"aarch64\",\n - \ \"ppc64le\",\n \"s390x\",\n \"x86_64\"\n - \ ],\n \"id\": \"Cloud\",\n \"name\": - \"Cloud\",\n \"paths\": {\n \"images\": - {\n \"aarch64\": \"Cloud/aarch64/images\",\n \"ppc64le\": - \"Cloud/ppc64le/images\",\n \"s390x\": \"Cloud/s390x/images\",\n - \ \"x86_64\": \"Cloud/x86_64/images\"\n }\n - \ },\n \"type\": \"variant\",\n \"uid\": - \"Cloud\"\n }\n }\n }\n}" - headers: - Connection: - - close - Date: - - Tue, 10 Sep 2024 19:34:54 GMT - Referrer-Policy: - - same-origin - Server: - - Apache - Strict-Transport-Security: - - max-age=31536000; includeSubDomains; preload - - max-age=31536000; includeSubDomains; preload - X-Content-Type-Options: - - nosniff - X-Fedora-ProxyServer: - - proxy01.iad2.fedoraproject.org - X-Fedora-RequestID: - - ZuCfXpI4K-bwbiVqO46WsQAAAEo - X-Frame-Options: - - SAMEORIGIN - X-Xss-Protection: - - 1; mode=block - accept-ranges: - - bytes - apptime: - - D=3060 - content-length: - - '1235' - content-type: - - application/json - last-modified: - - Tue, 10 Sep 2024 08:32:51 GMT - strict-transport-security: - - max-age=31536000; includeSubDomains; preload - - max-age=31536000; includeSubDomains; preload - x-fedora-appserver: - - kojipkgs02.iad2.fedoraproject.org - status: - code: 200 - message: OK -- request: - body: null - headers: - Connection: - - close - Host: - - kojipkgs.fedoraproject.org - User-Agent: - - Python-urllib/3.12 - method: GET - uri: https://kojipkgs.fedoraproject.org/compose/cloud/Fedora-Cloud-40-20240910.0/compose/metadata/images.json - response: - body: - string: "{\n \"header\": {\n \"type\": \"productmd.images\",\n \"version\": - \"1.2\"\n },\n \"payload\": {\n \"compose\": {\n \"date\": - \"20240910\",\n \"id\": \"Fedora-Cloud-40-20240910.0\",\n \"respin\": - 0,\n \"type\": \"production\"\n },\n \"images\": - {\n \"Cloud\": {\n \"aarch64\": [\n {\n - \ \"arch\": \"aarch64\",\n \"bootable\": - false,\n \"checksums\": {\n \"sha256\": - \"980823b117428079a2688f67ad8b469c51bb61245d038c106371be08ce38ae57\"\n },\n - \ \"disc_count\": 1,\n \"disc_number\": - 1,\n \"format\": \"raw.xz\",\n \"implant_md5\": - null,\n \"mtime\": 1725956876,\n \"path\": - \"Cloud/aarch64/images/Fedora-Cloud-Base-AmazonEC2.aarch64-40-20240910.0.raw.xz\",\n - \ \"size\": 380583740,\n \"subvariant\": - \"Cloud_Base\",\n \"type\": \"raw-xz\",\n \"volume_id\": - null\n },\n {\n \"arch\": - \"aarch64\",\n \"bootable\": false,\n \"checksums\": - {\n \"sha256\": \"d3aa036c9a70a3c26bde561ee260bab645291969dfdbdea8182650a0873d7896\"\n - \ },\n \"disc_count\": 1,\n \"disc_number\": - 1,\n \"format\": \"vhd.xz\",\n \"implant_md5\": - null,\n \"mtime\": 1725956979,\n \"path\": - \"Cloud/aarch64/images/Fedora-Cloud-Base-Azure.aarch64-40-20240910.0.vhdfixed.xz\",\n - \ \"size\": 446908836,\n \"subvariant\": - \"Cloud_Base\",\n \"type\": \"vhd-compressed\",\n \"volume_id\": - null\n },\n {\n \"arch\": - \"aarch64\",\n \"bootable\": false,\n \"checksums\": - {\n \"sha256\": \"3cb91c1173a3524423bd08755e818568cbb564b74fb479e0f8726d4909080bbf\"\n - \ },\n \"disc_count\": 1,\n \"disc_number\": - 1,\n \"format\": \"tar.gz\",\n \"implant_md5\": - null,\n \"mtime\": 1725956723,\n \"path\": - \"Cloud/aarch64/images/Fedora-Cloud-Base-GCE.aarch64-40-20240910.0.tar.gz\",\n - \ \"size\": 420395786,\n \"subvariant\": - \"Cloud_Base\",\n \"type\": \"docker\",\n \"volume_id\": - null\n },\n {\n \"arch\": - \"aarch64\",\n \"bootable\": false,\n \"checksums\": - {\n \"sha256\": \"a6668e46697d4f5ed992ef5fab089d84cb7bb4927dbcd08896949f33290d4dfd\"\n - \ },\n \"disc_count\": 1,\n \"disc_number\": - 1,\n \"format\": \"qcow2\",\n \"implant_md5\": - null,\n \"mtime\": 1725956717,\n \"path\": - \"Cloud/aarch64/images/Fedora-Cloud-Base-Generic.aarch64-40-20240910.0.qcow2\",\n - \ \"size\": 424148992,\n \"subvariant\": - \"Cloud_Base\",\n \"type\": \"qcow2\",\n \"volume_id\": - null\n },\n {\n \"arch\": - \"aarch64\",\n \"bootable\": false,\n \"checksums\": - {\n \"sha256\": \"1e904e9780285f202b6c0ba53713244205819cc033ede9fa82204eaf3ce920f4\"\n - \ },\n \"disc_count\": 1,\n \"disc_number\": - 1,\n \"format\": \"qcow2\",\n \"implant_md5\": - null,\n \"mtime\": 1725956817,\n \"path\": - \"Cloud/aarch64/images/Fedora-Cloud-Base-UEFI-UKI.aarch64-40-20240910.0.qcow2\",\n - \ \"size\": 434044928,\n \"subvariant\": - \"Cloud_Base_UKI\",\n \"type\": \"qcow2\",\n \"volume_id\": - null\n },\n {\n \"arch\": - \"aarch64\",\n \"bootable\": false,\n \"checksums\": - {\n \"sha256\": \"363b9069771409c96b74ca966dc8018fe796b11ff3584ba0a7f6141eabb34f9e\"\n - \ },\n \"disc_count\": 1,\n \"disc_number\": - 1,\n \"format\": \"vagrant-libvirt.box\",\n \"implant_md5\": - null,\n \"mtime\": 1725957066,\n \"path\": - \"Cloud/aarch64/images/Fedora-Cloud-Base-Vagrant-libvirt.aarch64-40-20240910.0.vagrant.libvirt.box\",\n - \ \"size\": 586270052,\n \"subvariant\": - \"Cloud_Base\",\n \"type\": \"vagrant-libvirt\",\n - \ \"volume_id\": null\n }\n ],\n - \ \"ppc64le\": [\n {\n \"arch\": - \"ppc64le\",\n \"bootable\": false,\n \"checksums\": - {\n \"sha256\": \"aaec0efc1d21cca983837401a6c7d5db7ae12104e77d6cbb4606092d3c5ff840\"\n - \ },\n \"disc_count\": 1,\n \"disc_number\": - 1,\n \"format\": \"qcow2\",\n \"implant_md5\": - null,\n \"mtime\": 1725956930,\n \"path\": - \"Cloud/ppc64le/images/Fedora-Cloud-Base-Generic.ppc64le-40-20240910.0.qcow2\",\n - \ \"size\": 412614656,\n \"subvariant\": - \"Cloud_Base\",\n \"type\": \"qcow2\",\n \"volume_id\": - null\n }\n ],\n \"s390x\": - [\n {\n \"arch\": \"s390x\",\n \"bootable\": - false,\n \"checksums\": {\n \"sha256\": - \"c60e0c4d3c606c0525db8c20ae192d59e020edf7efd67b705ab97d216ec62a5c\"\n },\n - \ \"disc_count\": 1,\n \"disc_number\": - 1,\n \"format\": \"qcow2\",\n \"implant_md5\": - null,\n \"mtime\": 1725956641,\n \"path\": - \"Cloud/s390x/images/Fedora-Cloud-Base-Generic.s390x-40-20240910.0.qcow2\",\n - \ \"size\": 380882432,\n \"subvariant\": - \"Cloud_Base\",\n \"type\": \"qcow2\",\n \"volume_id\": - null\n }\n ],\n \"x86_64\": - [\n {\n \"arch\": \"x86_64\",\n - \ \"bootable\": false,\n \"checksums\": - {\n \"sha256\": \"ca0159484ecfde670fb007d56c611fbe4bffa56aa46acba2bdd1fe6ef5d121bf\"\n - \ },\n \"disc_count\": 1,\n \"disc_number\": - 1,\n \"format\": \"raw.xz\",\n \"implant_md5\": - null,\n \"mtime\": 1725956700,\n \"path\": - \"Cloud/x86_64/images/Fedora-Cloud-Base-AmazonEC2.x86_64-40-20240910.0.raw.xz\",\n - \ \"size\": 384054484,\n \"subvariant\": - \"Cloud_Base\",\n \"type\": \"raw-xz\",\n \"volume_id\": - null\n },\n {\n \"arch\": - \"x86_64\",\n \"bootable\": false,\n \"checksums\": - {\n \"sha256\": \"f4481bb54ed600581005b7b906843b136c4c9fb91d2aa6bec1011ae188b2f2a6\"\n - \ },\n \"disc_count\": 1,\n \"disc_number\": - 1,\n \"format\": \"vhd.xz\",\n \"implant_md5\": - null,\n \"mtime\": 1725956837,\n \"path\": - \"Cloud/x86_64/images/Fedora-Cloud-Base-Azure.x86_64-40-20240910.0.vhdfixed.xz\",\n - \ \"size\": 460910012,\n \"subvariant\": - \"Cloud_Base\",\n \"type\": \"vhd-compressed\",\n \"volume_id\": - null\n },\n {\n \"arch\": - \"x86_64\",\n \"bootable\": false,\n \"checksums\": - {\n \"sha256\": \"debb870d1bea955b0b9f1c9ca6596835f4f671a1f4b1b08682d7a211cc285abf\"\n - \ },\n \"disc_count\": 1,\n \"disc_number\": - 1,\n \"format\": \"tar.gz\",\n \"implant_md5\": - null,\n \"mtime\": 1725956739,\n \"path\": - \"Cloud/x86_64/images/Fedora-Cloud-Base-GCE.x86_64-40-20240910.0.tar.gz\",\n - \ \"size\": 415361202,\n \"subvariant\": - \"Cloud_Base\",\n \"type\": \"docker\",\n \"volume_id\": - null\n },\n {\n \"arch\": - \"x86_64\",\n \"bootable\": false,\n \"checksums\": - {\n \"sha256\": \"edae1052cdda0068e9cd168b61a10b089e56367581585215689c292c152d66a4\"\n - \ },\n \"disc_count\": 1,\n \"disc_number\": - 1,\n \"format\": \"qcow2\",\n \"implant_md5\": - null,\n \"mtime\": 1725956721,\n \"path\": - \"Cloud/x86_64/images/Fedora-Cloud-Base-Generic.x86_64-40-20240910.0.qcow2\",\n - \ \"size\": 415432704,\n \"subvariant\": - \"Cloud_Base\",\n \"type\": \"qcow2\",\n \"volume_id\": - null\n },\n {\n \"arch\": - \"x86_64\",\n \"bootable\": false,\n \"checksums\": - {\n \"sha256\": \"7b6578e15b725e5ea5feb8f45312ce293c52c5e391e77869f49c5d941924961d\"\n - \ },\n \"disc_count\": 1,\n \"disc_number\": - 1,\n \"format\": \"qcow2\",\n \"implant_md5\": - null,\n \"mtime\": 1725956678,\n \"path\": - \"Cloud/x86_64/images/Fedora-Cloud-Base-UEFI-UKI.x86_64-40-20240910.0.qcow2\",\n - \ \"size\": 446038016,\n \"subvariant\": - \"Cloud_Base_UKI\",\n \"type\": \"qcow2\",\n \"volume_id\": - null\n },\n {\n \"arch\": - \"x86_64\",\n \"bootable\": false,\n \"checksums\": - {\n \"sha256\": \"490ff3577414e1d2b14430f72bd4c2ccdb68bd98590d9e6a966e590525c318a8\"\n - \ },\n \"disc_count\": 1,\n \"disc_number\": - 1,\n \"format\": \"vagrant-virtualbox.box\",\n \"implant_md5\": - null,\n \"mtime\": 1725956889,\n \"path\": - \"Cloud/x86_64/images/Fedora-Cloud-Base-Vagrant-VirtualBox.x86_64-40-20240910.0.vagrant.virtualbox.box\",\n - \ \"size\": 582623573,\n \"subvariant\": - \"Cloud_Base\",\n \"type\": \"vagrant-virtualbox\",\n - \ \"volume_id\": null\n },\n {\n - \ \"arch\": \"x86_64\",\n \"bootable\": - false,\n \"checksums\": {\n \"sha256\": - \"bdfefed9a133beb0fbea3e5cc1f58d4506d7abda19c5f3dd9e6676e270a6ac3d\"\n },\n - \ \"disc_count\": 1,\n \"disc_number\": - 1,\n \"format\": \"vagrant-libvirt.box\",\n \"implant_md5\": - null,\n \"mtime\": 1725956912,\n \"path\": - \"Cloud/x86_64/images/Fedora-Cloud-Base-Vagrant-libvirt.x86_64-40-20240910.0.vagrant.libvirt.box\",\n - \ \"size\": 592792221,\n \"subvariant\": - \"Cloud_Base\",\n \"type\": \"vagrant-libvirt\",\n - \ \"volume_id\": null\n }\n ]\n - \ }\n }\n }\n}" - headers: - Connection: - - close - Date: - - Tue, 10 Sep 2024 19:34:54 GMT - Referrer-Policy: - - same-origin - Server: - - Apache - Strict-Transport-Security: - - max-age=31536000; includeSubDomains; preload - - max-age=31536000; includeSubDomains; preload - X-Content-Type-Options: - - nosniff - X-Fedora-ProxyServer: - - proxy01.iad2.fedoraproject.org - X-Fedora-RequestID: - - ZuCfXiLTTUnFjEFEFb0dzQAABAQ - X-Frame-Options: - - SAMEORIGIN - X-Xss-Protection: - - 1; mode=block - accept-ranges: - - bytes - apptime: - - D=2136 - content-length: - - '12790' - content-type: - - application/json - last-modified: - - Tue, 10 Sep 2024 08:32:51 GMT - strict-transport-security: - - max-age=31536000; includeSubDomains; preload - - max-age=31536000; includeSubDomains; preload - x-fedora-appserver: - - kojipkgs02.iad2.fedoraproject.org - status: - code: 200 - message: OK -- request: - body: null - headers: - Connection: - - close - Host: - - bodhi.fedoraproject.org - User-Agent: - - Python-urllib/3.12 - method: GET - uri: https://bodhi.fedoraproject.org/releases/F40 - response: - body: - string: '{"name": "F40", "long_name": "Fedora 40", "version": "40", "id_prefix": - "FEDORA", "branch": "f40", "dist_tag": "f40", "stable_tag": "f40-updates", - "testing_tag": "f40-updates-testing", "candidate_tag": "f40-updates-candidate", - "pending_signing_tag": "f40-signing-pending", "pending_testing_tag": "f40-updates-testing-pending", - "pending_stable_tag": "f40-updates-pending", "override_tag": "f40-override", - "mail_template": "fedora_errata_template", "state": "current", "composed_by_bodhi": - true, "create_automatic_updates": false, "package_manager": "dnf", "testing_repository": - "updates-testing", "released_on": null, "eol": "2025-05-13", "setting_status": - null}' - headers: - AppTime: - - D=290915 - Connection: - - close - Date: - - Tue, 10 Sep 2024 19:34:55 GMT - Referrer-Policy: - - same-origin - Server: - - gunicorn - Strict-Transport-Security: - - max-age=31536000; includeSubDomains; preload - X-Content-Type-Options: - - nosniff - - nosniff - X-Fedora-ProxyServer: - - proxy09.fedoraproject.org - X-Fedora-RequestID: - - ZuCfXu4qkRn32bAOnywILgAAAk4 - X-Frame-Options: - - SAMEORIGIN - X-Xss-Protection: - - 1; mode=block - content-length: - - '661' - content-type: - - application/json - set-cookie: - - 1caa5c4232b1a1f24f8c4f6e0f496284=32b7e419f6c5bfdcc92e79bc8e31263e; path=/; - HttpOnly; Secure; SameSite=None - x-content-type-options: - - nosniff - - nosniff - status: - code: 200 - message: OK -- request: - body: null - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - Connection: - - keep-alive - User-Agent: - - azsdk-python-identity/1.17.1 Python/3.12.5 (Linux-5.15.153.1-microsoft-standard-WSL2-x86_64-with-glibc2.39) - method: GET - uri: https://login.microsoftonline.com/tenant-id/v2.0/.well-known/openid-configuration - response: - body: - string: '{"error":"invalid_tenant","error_description":"AADSTS90002: Tenant - ''tenant-id'' not found. Check to make sure you have the correct tenant ID - and are signing into the correct cloud. Check with your subscription administrator, - this may happen if there are no active subscriptions for the tenant. Trace - ID: 3b19e5ad-a1af-4f45-8e7e-4364efe4a400 Correlation ID: eddb908b-22dc-4eb8-891b-d4ebcb7b1d73 - Timestamp: 2024-09-10 19:34:55Z","error_codes":[90002],"timestamp":"2024-09-10 - 19:34:55Z","trace_id":"3b19e5ad-a1af-4f45-8e7e-4364efe4a400","correlation_id":"eddb908b-22dc-4eb8-891b-d4ebcb7b1d73","error_uri":"https://login.microsoftonline.com/error?code=90002"}' - headers: - Access-Control-Allow-Methods: - - GET, OPTIONS - Access-Control-Allow-Origin: - - '*' - Cache-Control: - - private - Content-Length: - - '654' - Content-Type: - - application/json; charset=utf-8 - Date: - - Tue, 10 Sep 2024 19:34:55 GMT - P3P: - - CP="DSP CUR OTPi IND OTRi ONL FIN" - Set-Cookie: - - fpc=AgEGNLribC9IqaJVfHidc7c; expires=Thu, 10-Oct-2024 19:34:55 GMT; path=/; - secure; HttpOnly; SameSite=None - - esctx=PAQABBwEAAAApTwJmzXqdR4BN2miheQMY2unbtkUrwKcpP_5TxWKDrAVBeV7VRFWIBp6gw1Umh_QJNH5FO15U9susdarCtOEK3klwQaG0e0R-I1Ndj2DqGpR2aZlkFPnhMa2wudcq8b7ConQQMejM1-wG5phROvhwTBUdWK22mRSASpXuIHsVF0L6MzZIlEqGdl1iBGu9s4YgAA; - domain=.login.microsoftonline.com; path=/; secure; HttpOnly; SameSite=None - - x-ms-gateway-slice=estsfd; path=/; secure; samesite=none; httponly - - stsservicecookie=estsfd; path=/; secure; samesite=none; httponly - Strict-Transport-Security: - - max-age=31536000; includeSubDomains - X-Content-Type-Options: - - nosniff - X-XSS-Protection: - - '0' - x-ms-ests-server: - - 2.1.18841.2 - SCUS ProdSlices - x-ms-request-id: - - 3b19e5ad-a1af-4f45-8e7e-4364efe4a400 - x-ms-srs: - - 1.P - status: - code: 400 - message: Bad Request -- request: - body: null - headers: - Accept: - - '*/*' - Accept-Encoding: - - gzip, deflate - Connection: - - keep-alive - User-Agent: - - azsdk-python-identity/1.17.1 Python/3.12.5 (Linux-5.15.153.1-microsoft-standard-WSL2-x86_64-with-glibc2.39) - method: GET - uri: https://login.microsoftonline.com/tenant-id/v2.0/.well-known/openid-configuration - response: - body: - string: '{"error":"invalid_tenant","error_description":"AADSTS90002: Tenant - ''tenant-id'' not found. Check to make sure you have the correct tenant ID - and are signing into the correct cloud. Check with your subscription administrator, - this may happen if there are no active subscriptions for the tenant. Trace - ID: 76ada4aa-4c6b-4e68-9915-3c53b8699600 Correlation ID: c2eb03d7-b3c7-413e-a645-7bb1c43f2d94 - Timestamp: 2024-09-10 19:34:56Z","error_codes":[90002],"timestamp":"2024-09-10 - 19:34:56Z","trace_id":"76ada4aa-4c6b-4e68-9915-3c53b8699600","correlation_id":"c2eb03d7-b3c7-413e-a645-7bb1c43f2d94","error_uri":"https://login.microsoftonline.com/error?code=90002"}' - headers: - Access-Control-Allow-Methods: - - GET, OPTIONS - Access-Control-Allow-Origin: - - '*' - Cache-Control: - - private - Content-Length: - - '654' - Content-Type: - - application/json; charset=utf-8 - Date: - - Tue, 10 Sep 2024 19:34:56 GMT - P3P: - - CP="DSP CUR OTPi IND OTRi ONL FIN" - Set-Cookie: - - fpc=AmkBgm3iQg1EqCaesXl4-mg; expires=Thu, 10-Oct-2024 19:34:56 GMT; path=/; - secure; HttpOnly; SameSite=None - - esctx=PAQABBwEAAAApTwJmzXqdR4BN2miheQMYB4FVzQ-EhTl1p9k97qDpsZGrsCP-Y1MUuTni5inA1sGUT0LEtXPMKDeNSyBcjzFpsIJrzZHiawlulsTmXdfbUvqi-LQKenWPoEokxxesa878Dym0VlTAqvUdd0qHyNUEbbvLOjlf7ZnKmgA3ddObmCvLFP0zHNfe1qQsWfWksw8gAA; - domain=.login.microsoftonline.com; path=/; secure; HttpOnly; SameSite=None - - x-ms-gateway-slice=estsfd; path=/; secure; samesite=none; httponly - - stsservicecookie=estsfd; path=/; secure; samesite=none; httponly - Strict-Transport-Security: - - max-age=31536000; includeSubDomains - X-Content-Type-Options: - - nosniff - X-XSS-Protection: - - '0' - x-ms-ests-server: - - 2.1.18841.2 - EUS ProdSlices - x-ms-request-id: - - 76ada4aa-4c6b-4e68-9915-3c53b8699600 - x-ms-srs: - - 1.P - status: - code: 400 - message: Bad Request -version: 1 diff --git a/fedora-image-uploader/tests/fixtures/cassettes/test_azure_messages[expected_messages0].yaml b/fedora-image-uploader/tests/fixtures/cassettes/test_azure_messages[expected_messages0].yaml new file mode 100644 index 0000000..723391f --- /dev/null +++ b/fedora-image-uploader/tests/fixtures/cassettes/test_azure_messages[expected_messages0].yaml @@ -0,0 +1,508 @@ +interactions: +- request: + body: null + headers: + Connection: + - close + Host: + - kojipkgs.fedoraproject.org + User-Agent: + - Python-urllib/3.12 + method: GET + uri: https://kojipkgs.fedoraproject.org/compose/cloud/Fedora-Cloud-40-20240910.0/compose + response: + body: + string: ' + + + + 301 Moved Permanently + + + +

Moved Permanently

+ +

The document has moved here.

+ + + + ' + headers: + AppTime: + - D=16120 + Connection: + - close + Date: + - Fri, 13 Sep 2024 18:41:08 GMT + Referrer-Policy: + - same-origin + Server: + - Apache + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload + - max-age=31536000; includeSubDomains; preload + X-Content-Type-Options: + - nosniff + X-Fedora-ProxyServer: + - proxy01.iad2.fedoraproject.org + X-Fedora-RequestID: + - ZuSHROIvk-nBx3Iy98p9YgAABsM + X-Frame-Options: + - SAMEORIGIN + X-Xss-Protection: + - 1; mode=block + content-length: + - '292' + content-type: + - text/html; charset=iso-8859-1 + location: + - https://kojipkgs.fedoraproject.org/compose/cloud/Fedora-Cloud-40-20240910.0/compose/ + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + - max-age=31536000; includeSubDomains; preload + status: + code: 301 + message: Moved Permanently +- request: + body: null + headers: + Connection: + - close + Host: + - kojipkgs.fedoraproject.org + User-Agent: + - Python-urllib/3.12 + method: GET + uri: https://kojipkgs.fedoraproject.org/compose/cloud/Fedora-Cloud-40-20240910.0/compose/ + response: + body: + string: "\n\n + \n Index of /compose/cloud/Fedora-Cloud-40-20240910.0/compose\n + \n \n

Index of /compose/cloud/Fedora-Cloud-40-20240910.0/compose

\n
\"Icon Name                                       Last modified      Size  Description
\"[PARENTDIR]\" + Parent Directory + \ - \n\"[DIR]\" Cloud/ 2024-09-10 + 08:30 - \n\"[DIR]\" metadata/ + \ 2024-09-10 08:32 - \n
\n\n" + headers: + Connection: + - close + Date: + - Fri, 13 Sep 2024 18:41:08 GMT + Referrer-Policy: + - same-origin + Server: + - Apache + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload + - max-age=31536000; includeSubDomains; preload + X-Content-Type-Options: + - nosniff + X-Fedora-ProxyServer: + - proxy01.iad2.fedoraproject.org + X-Fedora-RequestID: + - ZuSHRNQ84DmZyklMUrDHbQAAA1U + X-Frame-Options: + - SAMEORIGIN + X-Xss-Protection: + - 1; mode=block + apptime: + - D=76803 + content-length: + - '916' + content-type: + - text/html;charset=ISO-8859-1 + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + - max-age=31536000; includeSubDomains; preload + x-fedora-appserver: + - kojipkgs02.iad2.fedoraproject.org + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - kojipkgs.fedoraproject.org + User-Agent: + - Python-urllib/3.12 + method: GET + uri: https://kojipkgs.fedoraproject.org/compose/cloud/Fedora-Cloud-40-20240910.0/STATUS + response: + body: + string: 'FINISHED + + ' + headers: + Connection: + - close + Date: + - Fri, 13 Sep 2024 18:41:09 GMT + Referrer-Policy: + - same-origin + Server: + - Apache + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload + - max-age=31536000; includeSubDomains; preload + X-Content-Type-Options: + - nosniff + X-Fedora-ProxyServer: + - proxy10.iad2.fedoraproject.org + X-Fedora-RequestID: + - ZuSHRVXJmki1h1si2ZnxcAAABA0 + X-Frame-Options: + - SAMEORIGIN + X-Xss-Protection: + - 1; mode=block + accept-ranges: + - bytes + apptime: + - D=8821 + content-length: + - '9' + last-modified: + - Tue, 10 Sep 2024 08:32:52 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + - max-age=31536000; includeSubDomains; preload + x-fedora-appserver: + - kojipkgs01.iad2.fedoraproject.org + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - kojipkgs.fedoraproject.org + User-Agent: + - Python-urllib/3.12 + method: GET + uri: https://kojipkgs.fedoraproject.org/compose/cloud/Fedora-Cloud-40-20240910.0/compose/metadata/composeinfo.json + response: + body: + string: "{\n \"header\": {\n \"type\": \"productmd.composeinfo\",\n + \ \"version\": \"1.2\"\n },\n \"payload\": {\n \"compose\": + {\n \"date\": \"20240910\",\n \"final\": true,\n \"id\": + \"Fedora-Cloud-40-20240910.0\",\n \"label\": \"RC-20240910.0\",\n + \ \"respin\": 0,\n \"type\": \"production\"\n },\n + \ \"release\": {\n \"internal\": false,\n \"name\": + \"Fedora-Cloud\",\n \"short\": \"Fedora-Cloud\",\n \"type\": + \"ga\",\n \"version\": \"40\"\n },\n \"variants\": + {\n \"Cloud\": {\n \"arches\": [\n \"aarch64\",\n + \ \"ppc64le\",\n \"s390x\",\n \"x86_64\"\n + \ ],\n \"id\": \"Cloud\",\n \"name\": + \"Cloud\",\n \"paths\": {\n \"images\": + {\n \"aarch64\": \"Cloud/aarch64/images\",\n \"ppc64le\": + \"Cloud/ppc64le/images\",\n \"s390x\": \"Cloud/s390x/images\",\n + \ \"x86_64\": \"Cloud/x86_64/images\"\n }\n + \ },\n \"type\": \"variant\",\n \"uid\": + \"Cloud\"\n }\n }\n }\n}" + headers: + Connection: + - close + Date: + - Fri, 13 Sep 2024 18:41:09 GMT + Referrer-Policy: + - same-origin + Server: + - Apache + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload + - max-age=31536000; includeSubDomains; preload + X-Content-Type-Options: + - nosniff + X-Fedora-ProxyServer: + - proxy10.iad2.fedoraproject.org + X-Fedora-RequestID: + - ZuSHRa-1GwYJzxgODHVdIgAACIo + X-Frame-Options: + - SAMEORIGIN + X-Xss-Protection: + - 1; mode=block + accept-ranges: + - bytes + apptime: + - D=3548 + content-length: + - '1235' + content-type: + - application/json + last-modified: + - Tue, 10 Sep 2024 08:32:51 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + - max-age=31536000; includeSubDomains; preload + x-fedora-appserver: + - kojipkgs02.iad2.fedoraproject.org + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - kojipkgs.fedoraproject.org + User-Agent: + - Python-urllib/3.12 + method: GET + uri: https://kojipkgs.fedoraproject.org/compose/cloud/Fedora-Cloud-40-20240910.0/compose/metadata/images.json + response: + body: + string: "{\n \"header\": {\n \"type\": \"productmd.images\",\n \"version\": + \"1.2\"\n },\n \"payload\": {\n \"compose\": {\n \"date\": + \"20240910\",\n \"id\": \"Fedora-Cloud-40-20240910.0\",\n \"respin\": + 0,\n \"type\": \"production\"\n },\n \"images\": + {\n \"Cloud\": {\n \"aarch64\": [\n {\n + \ \"arch\": \"aarch64\",\n \"bootable\": + false,\n \"checksums\": {\n \"sha256\": + \"980823b117428079a2688f67ad8b469c51bb61245d038c106371be08ce38ae57\"\n },\n + \ \"disc_count\": 1,\n \"disc_number\": + 1,\n \"format\": \"raw.xz\",\n \"implant_md5\": + null,\n \"mtime\": 1725956876,\n \"path\": + \"Cloud/aarch64/images/Fedora-Cloud-Base-AmazonEC2.aarch64-40-20240910.0.raw.xz\",\n + \ \"size\": 380583740,\n \"subvariant\": + \"Cloud_Base\",\n \"type\": \"raw-xz\",\n \"volume_id\": + null\n },\n {\n \"arch\": + \"aarch64\",\n \"bootable\": false,\n \"checksums\": + {\n \"sha256\": \"d3aa036c9a70a3c26bde561ee260bab645291969dfdbdea8182650a0873d7896\"\n + \ },\n \"disc_count\": 1,\n \"disc_number\": + 1,\n \"format\": \"vhd.xz\",\n \"implant_md5\": + null,\n \"mtime\": 1725956979,\n \"path\": + \"Cloud/aarch64/images/Fedora-Cloud-Base-Azure.aarch64-40-20240910.0.vhdfixed.xz\",\n + \ \"size\": 446908836,\n \"subvariant\": + \"Cloud_Base\",\n \"type\": \"vhd-compressed\",\n \"volume_id\": + null\n },\n {\n \"arch\": + \"aarch64\",\n \"bootable\": false,\n \"checksums\": + {\n \"sha256\": \"3cb91c1173a3524423bd08755e818568cbb564b74fb479e0f8726d4909080bbf\"\n + \ },\n \"disc_count\": 1,\n \"disc_number\": + 1,\n \"format\": \"tar.gz\",\n \"implant_md5\": + null,\n \"mtime\": 1725956723,\n \"path\": + \"Cloud/aarch64/images/Fedora-Cloud-Base-GCE.aarch64-40-20240910.0.tar.gz\",\n + \ \"size\": 420395786,\n \"subvariant\": + \"Cloud_Base\",\n \"type\": \"docker\",\n \"volume_id\": + null\n },\n {\n \"arch\": + \"aarch64\",\n \"bootable\": false,\n \"checksums\": + {\n \"sha256\": \"a6668e46697d4f5ed992ef5fab089d84cb7bb4927dbcd08896949f33290d4dfd\"\n + \ },\n \"disc_count\": 1,\n \"disc_number\": + 1,\n \"format\": \"qcow2\",\n \"implant_md5\": + null,\n \"mtime\": 1725956717,\n \"path\": + \"Cloud/aarch64/images/Fedora-Cloud-Base-Generic.aarch64-40-20240910.0.qcow2\",\n + \ \"size\": 424148992,\n \"subvariant\": + \"Cloud_Base\",\n \"type\": \"qcow2\",\n \"volume_id\": + null\n },\n {\n \"arch\": + \"aarch64\",\n \"bootable\": false,\n \"checksums\": + {\n \"sha256\": \"1e904e9780285f202b6c0ba53713244205819cc033ede9fa82204eaf3ce920f4\"\n + \ },\n \"disc_count\": 1,\n \"disc_number\": + 1,\n \"format\": \"qcow2\",\n \"implant_md5\": + null,\n \"mtime\": 1725956817,\n \"path\": + \"Cloud/aarch64/images/Fedora-Cloud-Base-UEFI-UKI.aarch64-40-20240910.0.qcow2\",\n + \ \"size\": 434044928,\n \"subvariant\": + \"Cloud_Base_UKI\",\n \"type\": \"qcow2\",\n \"volume_id\": + null\n },\n {\n \"arch\": + \"aarch64\",\n \"bootable\": false,\n \"checksums\": + {\n \"sha256\": \"363b9069771409c96b74ca966dc8018fe796b11ff3584ba0a7f6141eabb34f9e\"\n + \ },\n \"disc_count\": 1,\n \"disc_number\": + 1,\n \"format\": \"vagrant-libvirt.box\",\n \"implant_md5\": + null,\n \"mtime\": 1725957066,\n \"path\": + \"Cloud/aarch64/images/Fedora-Cloud-Base-Vagrant-libvirt.aarch64-40-20240910.0.vagrant.libvirt.box\",\n + \ \"size\": 586270052,\n \"subvariant\": + \"Cloud_Base\",\n \"type\": \"vagrant-libvirt\",\n + \ \"volume_id\": null\n }\n ],\n + \ \"ppc64le\": [\n {\n \"arch\": + \"ppc64le\",\n \"bootable\": false,\n \"checksums\": + {\n \"sha256\": \"aaec0efc1d21cca983837401a6c7d5db7ae12104e77d6cbb4606092d3c5ff840\"\n + \ },\n \"disc_count\": 1,\n \"disc_number\": + 1,\n \"format\": \"qcow2\",\n \"implant_md5\": + null,\n \"mtime\": 1725956930,\n \"path\": + \"Cloud/ppc64le/images/Fedora-Cloud-Base-Generic.ppc64le-40-20240910.0.qcow2\",\n + \ \"size\": 412614656,\n \"subvariant\": + \"Cloud_Base\",\n \"type\": \"qcow2\",\n \"volume_id\": + null\n }\n ],\n \"s390x\": + [\n {\n \"arch\": \"s390x\",\n \"bootable\": + false,\n \"checksums\": {\n \"sha256\": + \"c60e0c4d3c606c0525db8c20ae192d59e020edf7efd67b705ab97d216ec62a5c\"\n },\n + \ \"disc_count\": 1,\n \"disc_number\": + 1,\n \"format\": \"qcow2\",\n \"implant_md5\": + null,\n \"mtime\": 1725956641,\n \"path\": + \"Cloud/s390x/images/Fedora-Cloud-Base-Generic.s390x-40-20240910.0.qcow2\",\n + \ \"size\": 380882432,\n \"subvariant\": + \"Cloud_Base\",\n \"type\": \"qcow2\",\n \"volume_id\": + null\n }\n ],\n \"x86_64\": + [\n {\n \"arch\": \"x86_64\",\n + \ \"bootable\": false,\n \"checksums\": + {\n \"sha256\": \"ca0159484ecfde670fb007d56c611fbe4bffa56aa46acba2bdd1fe6ef5d121bf\"\n + \ },\n \"disc_count\": 1,\n \"disc_number\": + 1,\n \"format\": \"raw.xz\",\n \"implant_md5\": + null,\n \"mtime\": 1725956700,\n \"path\": + \"Cloud/x86_64/images/Fedora-Cloud-Base-AmazonEC2.x86_64-40-20240910.0.raw.xz\",\n + \ \"size\": 384054484,\n \"subvariant\": + \"Cloud_Base\",\n \"type\": \"raw-xz\",\n \"volume_id\": + null\n },\n {\n \"arch\": + \"x86_64\",\n \"bootable\": false,\n \"checksums\": + {\n \"sha256\": \"f4481bb54ed600581005b7b906843b136c4c9fb91d2aa6bec1011ae188b2f2a6\"\n + \ },\n \"disc_count\": 1,\n \"disc_number\": + 1,\n \"format\": \"vhd.xz\",\n \"implant_md5\": + null,\n \"mtime\": 1725956837,\n \"path\": + \"Cloud/x86_64/images/Fedora-Cloud-Base-Azure.x86_64-40-20240910.0.vhdfixed.xz\",\n + \ \"size\": 460910012,\n \"subvariant\": + \"Cloud_Base\",\n \"type\": \"vhd-compressed\",\n \"volume_id\": + null\n },\n {\n \"arch\": + \"x86_64\",\n \"bootable\": false,\n \"checksums\": + {\n \"sha256\": \"debb870d1bea955b0b9f1c9ca6596835f4f671a1f4b1b08682d7a211cc285abf\"\n + \ },\n \"disc_count\": 1,\n \"disc_number\": + 1,\n \"format\": \"tar.gz\",\n \"implant_md5\": + null,\n \"mtime\": 1725956739,\n \"path\": + \"Cloud/x86_64/images/Fedora-Cloud-Base-GCE.x86_64-40-20240910.0.tar.gz\",\n + \ \"size\": 415361202,\n \"subvariant\": + \"Cloud_Base\",\n \"type\": \"docker\",\n \"volume_id\": + null\n },\n {\n \"arch\": + \"x86_64\",\n \"bootable\": false,\n \"checksums\": + {\n \"sha256\": \"edae1052cdda0068e9cd168b61a10b089e56367581585215689c292c152d66a4\"\n + \ },\n \"disc_count\": 1,\n \"disc_number\": + 1,\n \"format\": \"qcow2\",\n \"implant_md5\": + null,\n \"mtime\": 1725956721,\n \"path\": + \"Cloud/x86_64/images/Fedora-Cloud-Base-Generic.x86_64-40-20240910.0.qcow2\",\n + \ \"size\": 415432704,\n \"subvariant\": + \"Cloud_Base\",\n \"type\": \"qcow2\",\n \"volume_id\": + null\n },\n {\n \"arch\": + \"x86_64\",\n \"bootable\": false,\n \"checksums\": + {\n \"sha256\": \"7b6578e15b725e5ea5feb8f45312ce293c52c5e391e77869f49c5d941924961d\"\n + \ },\n \"disc_count\": 1,\n \"disc_number\": + 1,\n \"format\": \"qcow2\",\n \"implant_md5\": + null,\n \"mtime\": 1725956678,\n \"path\": + \"Cloud/x86_64/images/Fedora-Cloud-Base-UEFI-UKI.x86_64-40-20240910.0.qcow2\",\n + \ \"size\": 446038016,\n \"subvariant\": + \"Cloud_Base_UKI\",\n \"type\": \"qcow2\",\n \"volume_id\": + null\n },\n {\n \"arch\": + \"x86_64\",\n \"bootable\": false,\n \"checksums\": + {\n \"sha256\": \"490ff3577414e1d2b14430f72bd4c2ccdb68bd98590d9e6a966e590525c318a8\"\n + \ },\n \"disc_count\": 1,\n \"disc_number\": + 1,\n \"format\": \"vagrant-virtualbox.box\",\n \"implant_md5\": + null,\n \"mtime\": 1725956889,\n \"path\": + \"Cloud/x86_64/images/Fedora-Cloud-Base-Vagrant-VirtualBox.x86_64-40-20240910.0.vagrant.virtualbox.box\",\n + \ \"size\": 582623573,\n \"subvariant\": + \"Cloud_Base\",\n \"type\": \"vagrant-virtualbox\",\n + \ \"volume_id\": null\n },\n {\n + \ \"arch\": \"x86_64\",\n \"bootable\": + false,\n \"checksums\": {\n \"sha256\": + \"bdfefed9a133beb0fbea3e5cc1f58d4506d7abda19c5f3dd9e6676e270a6ac3d\"\n },\n + \ \"disc_count\": 1,\n \"disc_number\": + 1,\n \"format\": \"vagrant-libvirt.box\",\n \"implant_md5\": + null,\n \"mtime\": 1725956912,\n \"path\": + \"Cloud/x86_64/images/Fedora-Cloud-Base-Vagrant-libvirt.x86_64-40-20240910.0.vagrant.libvirt.box\",\n + \ \"size\": 592792221,\n \"subvariant\": + \"Cloud_Base\",\n \"type\": \"vagrant-libvirt\",\n + \ \"volume_id\": null\n }\n ]\n + \ }\n }\n }\n}" + headers: + Connection: + - close + Date: + - Fri, 13 Sep 2024 18:41:09 GMT + Referrer-Policy: + - same-origin + Server: + - Apache + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload + - max-age=31536000; includeSubDomains; preload + X-Content-Type-Options: + - nosniff + X-Fedora-ProxyServer: + - proxy01.iad2.fedoraproject.org + X-Fedora-RequestID: + - ZuSHRci8pupHs7cY58xP-wAABYY + X-Frame-Options: + - SAMEORIGIN + X-Xss-Protection: + - 1; mode=block + accept-ranges: + - bytes + apptime: + - D=9083 + content-length: + - '12790' + content-type: + - application/json + last-modified: + - Tue, 10 Sep 2024 08:32:51 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + - max-age=31536000; includeSubDomains; preload + x-fedora-appserver: + - kojipkgs02.iad2.fedoraproject.org + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - bodhi.fedoraproject.org + User-Agent: + - Python-urllib/3.12 + method: GET + uri: https://bodhi.fedoraproject.org/releases/F40 + response: + body: + string: '{"name": "F40", "long_name": "Fedora 40", "version": "40", "id_prefix": + "FEDORA", "branch": "f40", "dist_tag": "f40", "stable_tag": "f40-updates", + "testing_tag": "f40-updates-testing", "candidate_tag": "f40-updates-candidate", + "pending_signing_tag": "f40-signing-pending", "pending_testing_tag": "f40-updates-testing-pending", + "pending_stable_tag": "f40-updates-pending", "override_tag": "f40-override", + "mail_template": "fedora_errata_template", "state": "current", "composed_by_bodhi": + true, "create_automatic_updates": false, "package_manager": "dnf", "testing_repository": + "updates-testing", "released_on": null, "eol": "2025-05-13", "setting_status": + null}' + headers: + AppTime: + - D=11705 + Connection: + - close + Date: + - Fri, 13 Sep 2024 18:41:09 GMT + Referrer-Policy: + - same-origin + Server: + - gunicorn + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload + X-Content-Type-Options: + - nosniff + - nosniff + X-Fedora-ProxyServer: + - proxy14.fedoraproject.org + X-Fedora-RequestID: + - ZuSHRYJglmpFuVbu4sCKPgAABtg + X-Frame-Options: + - SAMEORIGIN + X-Xss-Protection: + - 1; mode=block + content-length: + - '661' + content-type: + - application/json + set-cookie: + - 1caa5c4232b1a1f24f8c4f6e0f496284=32b7e419f6c5bfdcc92e79bc8e31263e; path=/; + HttpOnly; Secure; SameSite=None + x-content-type-options: + - nosniff + - nosniff + status: + code: 200 + message: OK +version: 1 diff --git a/fedora-image-uploader/tests/fixtures/cassettes/test_azure_messages[expected_messages1].yaml b/fedora-image-uploader/tests/fixtures/cassettes/test_azure_messages[expected_messages1].yaml new file mode 100644 index 0000000..ece88f9 --- /dev/null +++ b/fedora-image-uploader/tests/fixtures/cassettes/test_azure_messages[expected_messages1].yaml @@ -0,0 +1,1251 @@ +interactions: +- request: + body: null + headers: + Connection: + - close + Host: + - kojipkgs.fedoraproject.org + User-Agent: + - Python-urllib/3.12 + method: GET + uri: https://kojipkgs.fedoraproject.org/compose/eln/Fedora-eln-20240912.n.0/compose + response: + body: + string: ' + + + + 301 Moved Permanently + + + +

Moved Permanently

+ +

The document has moved here.

+ + + + ' + headers: + AppTime: + - D=3772 + Connection: + - close + Date: + - Fri, 13 Sep 2024 18:43:19 GMT + Referrer-Policy: + - same-origin + Server: + - Apache + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload + - max-age=31536000; includeSubDomains; preload + X-Content-Type-Options: + - nosniff + X-Fedora-ProxyServer: + - proxy10.iad2.fedoraproject.org + X-Fedora-RequestID: + - ZuSHx83fSKe04Bnocr11-wAABdM + X-Frame-Options: + - SAMEORIGIN + X-Xss-Protection: + - 1; mode=block + content-length: + - '287' + content-type: + - text/html; charset=iso-8859-1 + location: + - https://kojipkgs.fedoraproject.org/compose/eln/Fedora-eln-20240912.n.0/compose/ + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + - max-age=31536000; includeSubDomains; preload + status: + code: 301 + message: Moved Permanently +- request: + body: null + headers: + Connection: + - close + Host: + - kojipkgs.fedoraproject.org + User-Agent: + - Python-urllib/3.12 + method: GET + uri: https://kojipkgs.fedoraproject.org/compose/eln/Fedora-eln-20240912.n.0/compose/ + response: + body: + string: "\n\n + \n Index of /compose/eln/Fedora-eln-20240912.n.0/compose\n + \n \n

Index of /compose/eln/Fedora-eln-20240912.n.0/compose

\n
\"Icon Name                                  Last modified      Size  Description
\"[PARENTDIR]\" + Parent Directory - + \ \n\"[DIR]\" AppStream/ + \ 2024-09-12 03:08 - \n\"[DIR]\" BaseOS/ 2024-09-12 + 03:07 - \n\"[DIR]\" CRB/ + \ 2024-09-12 03:08 - \n\"[DIR]\" Extras/ 2024-09-12 + 03:08 - \n\"[DIR]\" HighAvailability/ + \ 2024-09-12 03:09 - \n\"[DIR]\" NFV/ 2024-09-12 + 03:08 - \n\"[DIR]\" RT/ + \ 2024-09-12 03:08 - \n\"[DIR]\" ResilientStorage/ 2024-09-12 + 03:08 - \n\"[DIR]\" SAP/ + \ 2024-09-12 03:09 - \n\"[DIR]\" SAPHANA/ 2024-09-12 + 03:09 - \n\"[DIR]\" metadata/ + \ 2024-09-12 04:04 - \n
\n\n" + headers: + Connection: + - close + Date: + - Fri, 13 Sep 2024 18:43:19 GMT + Referrer-Policy: + - same-origin + Server: + - Apache + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload + - max-age=31536000; includeSubDomains; preload + X-Content-Type-Options: + - nosniff + X-Fedora-ProxyServer: + - proxy01.iad2.fedoraproject.org + X-Fedora-RequestID: + - ZuSHx1GWLCQsSdR47F8kfwAABhg + X-Frame-Options: + - SAMEORIGIN + X-Xss-Protection: + - 1; mode=block + apptime: + - D=197651 + content-length: + - '2036' + content-type: + - text/html;charset=ISO-8859-1 + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + - max-age=31536000; includeSubDomains; preload + x-fedora-appserver: + - kojipkgs01.iad2.fedoraproject.org + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - kojipkgs.fedoraproject.org + User-Agent: + - Python-urllib/3.12 + method: GET + uri: https://kojipkgs.fedoraproject.org/compose/eln/Fedora-eln-20240912.n.0/STATUS + response: + body: + string: 'FINISHED + + ' + headers: + Connection: + - close + Date: + - Fri, 13 Sep 2024 18:43:19 GMT + Referrer-Policy: + - same-origin + Server: + - Apache + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload + - max-age=31536000; includeSubDomains; preload + X-Content-Type-Options: + - nosniff + X-Fedora-ProxyServer: + - proxy10.iad2.fedoraproject.org + X-Fedora-RequestID: + - ZuSHxxdl9M7J7UU5ijKmXwAACcQ + X-Frame-Options: + - SAMEORIGIN + X-Xss-Protection: + - 1; mode=block + accept-ranges: + - bytes + apptime: + - D=3446 + content-length: + - '9' + last-modified: + - Thu, 12 Sep 2024 04:04:36 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + - max-age=31536000; includeSubDomains; preload + x-fedora-appserver: + - kojipkgs02.iad2.fedoraproject.org + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - kojipkgs.fedoraproject.org + User-Agent: + - Python-urllib/3.12 + method: GET + uri: https://kojipkgs.fedoraproject.org/compose/eln/Fedora-eln-20240912.n.0/compose/metadata/composeinfo.json + response: + body: + string: "{\n \"header\": {\n \"type\": \"productmd.composeinfo\",\n + \ \"version\": \"1.2\"\n },\n \"payload\": {\n \"compose\": + {\n \"date\": \"20240912\",\n \"id\": \"Fedora-eln-20240912.n.0\",\n + \ \"respin\": 0,\n \"type\": \"nightly\"\n },\n + \ \"release\": {\n \"internal\": false,\n \"name\": + \"Fedora\",\n \"short\": \"Fedora\",\n \"type\": \"ga\",\n + \ \"version\": \"eln\"\n },\n \"variants\": {\n \"AppStream\": + {\n \"arches\": [\n \"aarch64\",\n \"ppc64le\",\n + \ \"s390x\",\n \"x86_64\"\n ],\n + \ \"id\": \"AppStream\",\n \"name\": \"AppStream\",\n + \ \"paths\": {\n \"debug_packages\": {\n + \ \"aarch64\": \"AppStream/aarch64/debug/tree/Packages\",\n + \ \"ppc64le\": \"AppStream/ppc64le/debug/tree/Packages\",\n + \ \"s390x\": \"AppStream/s390x/debug/tree/Packages\",\n + \ \"x86_64\": \"AppStream/x86_64/debug/tree/Packages\"\n + \ },\n \"debug_repository\": {\n \"aarch64\": + \"AppStream/aarch64/debug/tree\",\n \"ppc64le\": \"AppStream/ppc64le/debug/tree\",\n + \ \"s390x\": \"AppStream/s390x/debug/tree\",\n \"x86_64\": + \"AppStream/x86_64/debug/tree\"\n },\n \"debug_tree\": + {\n \"aarch64\": \"AppStream/aarch64/debug/tree\",\n + \ \"ppc64le\": \"AppStream/ppc64le/debug/tree\",\n \"s390x\": + \"AppStream/s390x/debug/tree\",\n \"x86_64\": \"AppStream/x86_64/debug/tree\"\n + \ },\n \"isos\": {\n \"aarch64\": + \"AppStream/aarch64/iso\",\n \"ppc64le\": \"AppStream/ppc64le/iso\",\n + \ \"s390x\": \"AppStream/s390x/iso\",\n \"x86_64\": + \"AppStream/x86_64/iso\"\n },\n \"os_tree\": + {\n \"aarch64\": \"AppStream/aarch64/os\",\n \"ppc64le\": + \"AppStream/ppc64le/os\",\n \"s390x\": \"AppStream/s390x/os\",\n + \ \"x86_64\": \"AppStream/x86_64/os\"\n },\n + \ \"packages\": {\n \"aarch64\": + \"AppStream/aarch64/os/Packages\",\n \"ppc64le\": \"AppStream/ppc64le/os/Packages\",\n + \ \"s390x\": \"AppStream/s390x/os/Packages\",\n \"x86_64\": + \"AppStream/x86_64/os/Packages\"\n },\n \"repository\": + {\n \"aarch64\": \"AppStream/aarch64/os\",\n \"ppc64le\": + \"AppStream/ppc64le/os\",\n \"s390x\": \"AppStream/s390x/os\",\n + \ \"x86_64\": \"AppStream/x86_64/os\"\n },\n + \ \"source_packages\": {\n \"aarch64\": + \"AppStream/source/tree/Packages\",\n \"ppc64le\": + \"AppStream/source/tree/Packages\",\n \"s390x\": \"AppStream/source/tree/Packages\",\n + \ \"x86_64\": \"AppStream/source/tree/Packages\"\n },\n + \ \"source_repository\": {\n \"aarch64\": + \"AppStream/source/tree\",\n \"ppc64le\": \"AppStream/source/tree\",\n + \ \"s390x\": \"AppStream/source/tree\",\n \"x86_64\": + \"AppStream/source/tree\"\n },\n \"source_tree\": + {\n \"aarch64\": \"AppStream/source/tree\",\n \"ppc64le\": + \"AppStream/source/tree\",\n \"s390x\": \"AppStream/source/tree\",\n + \ \"x86_64\": \"AppStream/source/tree\"\n }\n + \ },\n \"type\": \"variant\",\n \"uid\": + \"AppStream\"\n },\n \"BaseOS\": {\n \"arches\": + [\n \"aarch64\",\n \"ppc64le\",\n \"s390x\",\n + \ \"x86_64\"\n ],\n \"id\": + \"BaseOS\",\n \"name\": \"BaseOS\",\n \"paths\": + {\n \"debug_packages\": {\n \"aarch64\": + \"BaseOS/aarch64/debug/tree/Packages\",\n \"ppc64le\": + \"BaseOS/ppc64le/debug/tree/Packages\",\n \"s390x\": + \"BaseOS/s390x/debug/tree/Packages\",\n \"x86_64\": + \"BaseOS/x86_64/debug/tree/Packages\"\n },\n \"debug_repository\": + {\n \"aarch64\": \"BaseOS/aarch64/debug/tree\",\n \"ppc64le\": + \"BaseOS/ppc64le/debug/tree\",\n \"s390x\": \"BaseOS/s390x/debug/tree\",\n + \ \"x86_64\": \"BaseOS/x86_64/debug/tree\"\n },\n + \ \"debug_tree\": {\n \"aarch64\": + \"BaseOS/aarch64/debug/tree\",\n \"ppc64le\": \"BaseOS/ppc64le/debug/tree\",\n + \ \"s390x\": \"BaseOS/s390x/debug/tree\",\n \"x86_64\": + \"BaseOS/x86_64/debug/tree\"\n },\n \"images\": + {\n \"aarch64\": \"BaseOS/aarch64/images\",\n \"ppc64le\": + \"BaseOS/ppc64le/images\",\n \"s390x\": \"BaseOS/s390x/images\",\n + \ \"x86_64\": \"BaseOS/x86_64/images\"\n },\n + \ \"isos\": {\n \"aarch64\": \"BaseOS/aarch64/iso\",\n + \ \"ppc64le\": \"BaseOS/ppc64le/iso\",\n \"s390x\": + \"BaseOS/s390x/iso\",\n \"x86_64\": \"BaseOS/x86_64/iso\"\n + \ },\n \"os_tree\": {\n \"aarch64\": + \"BaseOS/aarch64/os\",\n \"ppc64le\": \"BaseOS/ppc64le/os\",\n + \ \"s390x\": \"BaseOS/s390x/os\",\n \"x86_64\": + \"BaseOS/x86_64/os\"\n },\n \"packages\": + {\n \"aarch64\": \"BaseOS/aarch64/os/Packages\",\n + \ \"ppc64le\": \"BaseOS/ppc64le/os/Packages\",\n \"s390x\": + \"BaseOS/s390x/os/Packages\",\n \"x86_64\": \"BaseOS/x86_64/os/Packages\"\n + \ },\n \"repository\": {\n \"aarch64\": + \"BaseOS/aarch64/os\",\n \"ppc64le\": \"BaseOS/ppc64le/os\",\n + \ \"s390x\": \"BaseOS/s390x/os\",\n \"x86_64\": + \"BaseOS/x86_64/os\"\n },\n \"source_isos\": + {\n \"aarch64\": \"BaseOS/source/iso\",\n \"ppc64le\": + \"BaseOS/source/iso\",\n \"s390x\": \"BaseOS/source/iso\",\n + \ \"x86_64\": \"BaseOS/source/iso\"\n },\n + \ \"source_packages\": {\n \"aarch64\": + \"BaseOS/source/tree/Packages\",\n \"ppc64le\": \"BaseOS/source/tree/Packages\",\n + \ \"s390x\": \"BaseOS/source/tree/Packages\",\n \"x86_64\": + \"BaseOS/source/tree/Packages\"\n },\n \"source_repository\": + {\n \"aarch64\": \"BaseOS/source/tree\",\n \"ppc64le\": + \"BaseOS/source/tree\",\n \"s390x\": \"BaseOS/source/tree\",\n + \ \"x86_64\": \"BaseOS/source/tree\"\n },\n + \ \"source_tree\": {\n \"aarch64\": + \"BaseOS/source/tree\",\n \"ppc64le\": \"BaseOS/source/tree\",\n + \ \"s390x\": \"BaseOS/source/tree\",\n \"x86_64\": + \"BaseOS/source/tree\"\n }\n },\n \"type\": + \"variant\",\n \"uid\": \"BaseOS\"\n },\n \"CRB\": + {\n \"arches\": [\n \"aarch64\",\n \"ppc64le\",\n + \ \"s390x\",\n \"x86_64\"\n ],\n + \ \"id\": \"CRB\",\n \"name\": \"CodeReady Builder\",\n + \ \"paths\": {\n \"debug_packages\": {\n + \ \"aarch64\": \"CRB/aarch64/debug/tree/Packages\",\n + \ \"ppc64le\": \"CRB/ppc64le/debug/tree/Packages\",\n + \ \"s390x\": \"CRB/s390x/debug/tree/Packages\",\n \"x86_64\": + \"CRB/x86_64/debug/tree/Packages\"\n },\n \"debug_repository\": + {\n \"aarch64\": \"CRB/aarch64/debug/tree\",\n \"ppc64le\": + \"CRB/ppc64le/debug/tree\",\n \"s390x\": \"CRB/s390x/debug/tree\",\n + \ \"x86_64\": \"CRB/x86_64/debug/tree\"\n },\n + \ \"debug_tree\": {\n \"aarch64\": + \"CRB/aarch64/debug/tree\",\n \"ppc64le\": \"CRB/ppc64le/debug/tree\",\n + \ \"s390x\": \"CRB/s390x/debug/tree\",\n \"x86_64\": + \"CRB/x86_64/debug/tree\"\n },\n \"isos\": + {\n \"aarch64\": \"CRB/aarch64/iso\",\n \"ppc64le\": + \"CRB/ppc64le/iso\",\n \"s390x\": \"CRB/s390x/iso\",\n + \ \"x86_64\": \"CRB/x86_64/iso\"\n },\n + \ \"os_tree\": {\n \"aarch64\": \"CRB/aarch64/os\",\n + \ \"ppc64le\": \"CRB/ppc64le/os\",\n \"s390x\": + \"CRB/s390x/os\",\n \"x86_64\": \"CRB/x86_64/os\"\n + \ },\n \"packages\": {\n \"aarch64\": + \"CRB/aarch64/os/Packages\",\n \"ppc64le\": \"CRB/ppc64le/os/Packages\",\n + \ \"s390x\": \"CRB/s390x/os/Packages\",\n \"x86_64\": + \"CRB/x86_64/os/Packages\"\n },\n \"repository\": + {\n \"aarch64\": \"CRB/aarch64/os\",\n \"ppc64le\": + \"CRB/ppc64le/os\",\n \"s390x\": \"CRB/s390x/os\",\n + \ \"x86_64\": \"CRB/x86_64/os\"\n },\n + \ \"source_packages\": {\n \"aarch64\": + \"CRB/source/tree/Packages\",\n \"ppc64le\": \"CRB/source/tree/Packages\",\n + \ \"s390x\": \"CRB/source/tree/Packages\",\n \"x86_64\": + \"CRB/source/tree/Packages\"\n },\n \"source_repository\": + {\n \"aarch64\": \"CRB/source/tree\",\n \"ppc64le\": + \"CRB/source/tree\",\n \"s390x\": \"CRB/source/tree\",\n + \ \"x86_64\": \"CRB/source/tree\"\n },\n + \ \"source_tree\": {\n \"aarch64\": + \"CRB/source/tree\",\n \"ppc64le\": \"CRB/source/tree\",\n + \ \"s390x\": \"CRB/source/tree\",\n \"x86_64\": + \"CRB/source/tree\"\n }\n },\n \"type\": + \"variant\",\n \"uid\": \"CRB\"\n },\n \"Extras\": + {\n \"arches\": [\n \"aarch64\",\n \"ppc64le\",\n + \ \"s390x\",\n \"x86_64\"\n ],\n + \ \"id\": \"Extras\",\n \"name\": \"Extras\",\n + \ \"paths\": {\n \"debug_packages\": {\n + \ \"aarch64\": \"Extras/aarch64/debug/tree/Packages\",\n + \ \"ppc64le\": \"Extras/ppc64le/debug/tree/Packages\",\n + \ \"s390x\": \"Extras/s390x/debug/tree/Packages\",\n + \ \"x86_64\": \"Extras/x86_64/debug/tree/Packages\"\n + \ },\n \"debug_repository\": {\n \"aarch64\": + \"Extras/aarch64/debug/tree\",\n \"ppc64le\": \"Extras/ppc64le/debug/tree\",\n + \ \"s390x\": \"Extras/s390x/debug/tree\",\n \"x86_64\": + \"Extras/x86_64/debug/tree\"\n },\n \"debug_tree\": + {\n \"aarch64\": \"Extras/aarch64/debug/tree\",\n \"ppc64le\": + \"Extras/ppc64le/debug/tree\",\n \"s390x\": \"Extras/s390x/debug/tree\",\n + \ \"x86_64\": \"Extras/x86_64/debug/tree\"\n },\n + \ \"isos\": {\n \"aarch64\": \"Extras/aarch64/iso\",\n + \ \"ppc64le\": \"Extras/ppc64le/iso\",\n \"s390x\": + \"Extras/s390x/iso\",\n \"x86_64\": \"Extras/x86_64/iso\"\n + \ },\n \"os_tree\": {\n \"aarch64\": + \"Extras/aarch64/os\",\n \"ppc64le\": \"Extras/ppc64le/os\",\n + \ \"s390x\": \"Extras/s390x/os\",\n \"x86_64\": + \"Extras/x86_64/os\"\n },\n \"packages\": + {\n \"aarch64\": \"Extras/aarch64/os/Packages\",\n + \ \"ppc64le\": \"Extras/ppc64le/os/Packages\",\n \"s390x\": + \"Extras/s390x/os/Packages\",\n \"x86_64\": \"Extras/x86_64/os/Packages\"\n + \ },\n \"repository\": {\n \"aarch64\": + \"Extras/aarch64/os\",\n \"ppc64le\": \"Extras/ppc64le/os\",\n + \ \"s390x\": \"Extras/s390x/os\",\n \"x86_64\": + \"Extras/x86_64/os\"\n },\n \"source_packages\": + {\n \"aarch64\": \"Extras/source/tree/Packages\",\n + \ \"ppc64le\": \"Extras/source/tree/Packages\",\n \"s390x\": + \"Extras/source/tree/Packages\",\n \"x86_64\": \"Extras/source/tree/Packages\"\n + \ },\n \"source_repository\": {\n \"aarch64\": + \"Extras/source/tree\",\n \"ppc64le\": \"Extras/source/tree\",\n + \ \"s390x\": \"Extras/source/tree\",\n \"x86_64\": + \"Extras/source/tree\"\n },\n \"source_tree\": + {\n \"aarch64\": \"Extras/source/tree\",\n \"ppc64le\": + \"Extras/source/tree\",\n \"s390x\": \"Extras/source/tree\",\n + \ \"x86_64\": \"Extras/source/tree\"\n }\n + \ },\n \"type\": \"variant\",\n \"uid\": + \"Extras\"\n },\n \"HighAvailability\": {\n \"arches\": + [\n \"aarch64\",\n \"ppc64le\",\n \"s390x\",\n + \ \"x86_64\"\n ],\n \"id\": + \"HighAvailability\",\n \"name\": \"High Availability\",\n + \ \"paths\": {\n \"debug_packages\": {\n + \ \"aarch64\": \"HighAvailability/aarch64/debug/tree/Packages\",\n + \ \"ppc64le\": \"HighAvailability/ppc64le/debug/tree/Packages\",\n + \ \"s390x\": \"HighAvailability/s390x/debug/tree/Packages\",\n + \ \"x86_64\": \"HighAvailability/x86_64/debug/tree/Packages\"\n + \ },\n \"debug_repository\": {\n \"aarch64\": + \"HighAvailability/aarch64/debug/tree\",\n \"ppc64le\": + \"HighAvailability/ppc64le/debug/tree\",\n \"s390x\": + \"HighAvailability/s390x/debug/tree\",\n \"x86_64\": + \"HighAvailability/x86_64/debug/tree\"\n },\n \"debug_tree\": + {\n \"aarch64\": \"HighAvailability/aarch64/debug/tree\",\n + \ \"ppc64le\": \"HighAvailability/ppc64le/debug/tree\",\n + \ \"s390x\": \"HighAvailability/s390x/debug/tree\",\n + \ \"x86_64\": \"HighAvailability/x86_64/debug/tree\"\n + \ },\n \"isos\": {\n \"aarch64\": + \"HighAvailability/aarch64/iso\",\n \"ppc64le\": \"HighAvailability/ppc64le/iso\",\n + \ \"s390x\": \"HighAvailability/s390x/iso\",\n \"x86_64\": + \"HighAvailability/x86_64/iso\"\n },\n \"os_tree\": + {\n \"aarch64\": \"HighAvailability/aarch64/os\",\n + \ \"ppc64le\": \"HighAvailability/ppc64le/os\",\n \"s390x\": + \"HighAvailability/s390x/os\",\n \"x86_64\": \"HighAvailability/x86_64/os\"\n + \ },\n \"packages\": {\n \"aarch64\": + \"HighAvailability/aarch64/os/Packages\",\n \"ppc64le\": + \"HighAvailability/ppc64le/os/Packages\",\n \"s390x\": + \"HighAvailability/s390x/os/Packages\",\n \"x86_64\": + \"HighAvailability/x86_64/os/Packages\"\n },\n \"repository\": + {\n \"aarch64\": \"HighAvailability/aarch64/os\",\n + \ \"ppc64le\": \"HighAvailability/ppc64le/os\",\n \"s390x\": + \"HighAvailability/s390x/os\",\n \"x86_64\": \"HighAvailability/x86_64/os\"\n + \ },\n \"source_packages\": {\n \"aarch64\": + \"HighAvailability/source/tree/Packages\",\n \"ppc64le\": + \"HighAvailability/source/tree/Packages\",\n \"s390x\": + \"HighAvailability/source/tree/Packages\",\n \"x86_64\": + \"HighAvailability/source/tree/Packages\"\n },\n \"source_repository\": + {\n \"aarch64\": \"HighAvailability/source/tree\",\n + \ \"ppc64le\": \"HighAvailability/source/tree\",\n \"s390x\": + \"HighAvailability/source/tree\",\n \"x86_64\": \"HighAvailability/source/tree\"\n + \ },\n \"source_tree\": {\n \"aarch64\": + \"HighAvailability/source/tree\",\n \"ppc64le\": \"HighAvailability/source/tree\",\n + \ \"s390x\": \"HighAvailability/source/tree\",\n \"x86_64\": + \"HighAvailability/source/tree\"\n }\n },\n + \ \"type\": \"variant\",\n \"uid\": \"HighAvailability\"\n + \ },\n \"NFV\": {\n \"arches\": [\n \"x86_64\"\n + \ ],\n \"id\": \"NFV\",\n \"name\": + \"NFV\",\n \"paths\": {\n \"debug_packages\": + {\n \"x86_64\": \"NFV/x86_64/debug/tree/Packages\"\n + \ },\n \"debug_repository\": {\n \"x86_64\": + \"NFV/x86_64/debug/tree\"\n },\n \"debug_tree\": + {\n \"x86_64\": \"NFV/x86_64/debug/tree\"\n },\n + \ \"isos\": {\n \"x86_64\": \"NFV/x86_64/iso\"\n + \ },\n \"os_tree\": {\n \"x86_64\": + \"NFV/x86_64/os\"\n },\n \"packages\": + {\n \"x86_64\": \"NFV/x86_64/os/Packages\"\n },\n + \ \"repository\": {\n \"x86_64\": + \"NFV/x86_64/os\"\n },\n \"source_packages\": + {\n \"x86_64\": \"NFV/source/tree/Packages\"\n },\n + \ \"source_repository\": {\n \"x86_64\": + \"NFV/source/tree\"\n },\n \"source_tree\": + {\n \"x86_64\": \"NFV/source/tree\"\n }\n + \ },\n \"type\": \"variant\",\n \"uid\": + \"NFV\"\n },\n \"RT\": {\n \"arches\": + [\n \"x86_64\"\n ],\n \"id\": + \"RT\",\n \"name\": \"RT\",\n \"paths\": {\n + \ \"debug_packages\": {\n \"x86_64\": + \"RT/x86_64/debug/tree/Packages\"\n },\n \"debug_repository\": + {\n \"x86_64\": \"RT/x86_64/debug/tree\"\n },\n + \ \"debug_tree\": {\n \"x86_64\": + \"RT/x86_64/debug/tree\"\n },\n \"isos\": + {\n \"x86_64\": \"RT/x86_64/iso\"\n },\n + \ \"os_tree\": {\n \"x86_64\": \"RT/x86_64/os\"\n + \ },\n \"packages\": {\n \"x86_64\": + \"RT/x86_64/os/Packages\"\n },\n \"repository\": + {\n \"x86_64\": \"RT/x86_64/os\"\n },\n + \ \"source_packages\": {\n \"x86_64\": + \"RT/source/tree/Packages\"\n },\n \"source_repository\": + {\n \"x86_64\": \"RT/source/tree\"\n },\n + \ \"source_tree\": {\n \"x86_64\": + \"RT/source/tree\"\n }\n },\n \"type\": + \"variant\",\n \"uid\": \"RT\"\n },\n \"ResilientStorage\": + {\n \"arches\": [\n \"ppc64le\",\n \"s390x\",\n + \ \"x86_64\"\n ],\n \"id\": + \"ResilientStorage\",\n \"name\": \"Resilient Storage\",\n + \ \"paths\": {\n \"debug_packages\": {\n + \ \"ppc64le\": \"ResilientStorage/ppc64le/debug/tree/Packages\",\n + \ \"s390x\": \"ResilientStorage/s390x/debug/tree/Packages\",\n + \ \"x86_64\": \"ResilientStorage/x86_64/debug/tree/Packages\"\n + \ },\n \"debug_repository\": {\n \"ppc64le\": + \"ResilientStorage/ppc64le/debug/tree\",\n \"s390x\": + \"ResilientStorage/s390x/debug/tree\",\n \"x86_64\": + \"ResilientStorage/x86_64/debug/tree\"\n },\n \"debug_tree\": + {\n \"ppc64le\": \"ResilientStorage/ppc64le/debug/tree\",\n + \ \"s390x\": \"ResilientStorage/s390x/debug/tree\",\n + \ \"x86_64\": \"ResilientStorage/x86_64/debug/tree\"\n + \ },\n \"isos\": {\n \"ppc64le\": + \"ResilientStorage/ppc64le/iso\",\n \"s390x\": \"ResilientStorage/s390x/iso\",\n + \ \"x86_64\": \"ResilientStorage/x86_64/iso\"\n },\n + \ \"os_tree\": {\n \"ppc64le\": \"ResilientStorage/ppc64le/os\",\n + \ \"s390x\": \"ResilientStorage/s390x/os\",\n \"x86_64\": + \"ResilientStorage/x86_64/os\"\n },\n \"packages\": + {\n \"ppc64le\": \"ResilientStorage/ppc64le/os/Packages\",\n + \ \"s390x\": \"ResilientStorage/s390x/os/Packages\",\n + \ \"x86_64\": \"ResilientStorage/x86_64/os/Packages\"\n + \ },\n \"repository\": {\n \"ppc64le\": + \"ResilientStorage/ppc64le/os\",\n \"s390x\": \"ResilientStorage/s390x/os\",\n + \ \"x86_64\": \"ResilientStorage/x86_64/os\"\n },\n + \ \"source_packages\": {\n \"ppc64le\": + \"ResilientStorage/source/tree/Packages\",\n \"s390x\": + \"ResilientStorage/source/tree/Packages\",\n \"x86_64\": + \"ResilientStorage/source/tree/Packages\"\n },\n \"source_repository\": + {\n \"ppc64le\": \"ResilientStorage/source/tree\",\n + \ \"s390x\": \"ResilientStorage/source/tree\",\n \"x86_64\": + \"ResilientStorage/source/tree\"\n },\n \"source_tree\": + {\n \"ppc64le\": \"ResilientStorage/source/tree\",\n + \ \"s390x\": \"ResilientStorage/source/tree\",\n \"x86_64\": + \"ResilientStorage/source/tree\"\n }\n },\n + \ \"type\": \"variant\",\n \"uid\": \"ResilientStorage\"\n + \ },\n \"SAP\": {\n \"arches\": [\n \"ppc64le\",\n + \ \"s390x\",\n \"x86_64\"\n ],\n + \ \"id\": \"SAP\",\n \"name\": \"SAP\",\n \"paths\": + {\n \"debug_packages\": {\n \"ppc64le\": + \"SAP/ppc64le/debug/tree/Packages\",\n \"s390x\": \"SAP/s390x/debug/tree/Packages\",\n + \ \"x86_64\": \"SAP/x86_64/debug/tree/Packages\"\n },\n + \ \"debug_repository\": {\n \"ppc64le\": + \"SAP/ppc64le/debug/tree\",\n \"s390x\": \"SAP/s390x/debug/tree\",\n + \ \"x86_64\": \"SAP/x86_64/debug/tree\"\n },\n + \ \"debug_tree\": {\n \"ppc64le\": + \"SAP/ppc64le/debug/tree\",\n \"s390x\": \"SAP/s390x/debug/tree\",\n + \ \"x86_64\": \"SAP/x86_64/debug/tree\"\n },\n + \ \"isos\": {\n \"ppc64le\": \"SAP/ppc64le/iso\",\n + \ \"s390x\": \"SAP/s390x/iso\",\n \"x86_64\": + \"SAP/x86_64/iso\"\n },\n \"os_tree\": + {\n \"ppc64le\": \"SAP/ppc64le/os\",\n \"s390x\": + \"SAP/s390x/os\",\n \"x86_64\": \"SAP/x86_64/os\"\n + \ },\n \"packages\": {\n \"ppc64le\": + \"SAP/ppc64le/os/Packages\",\n \"s390x\": \"SAP/s390x/os/Packages\",\n + \ \"x86_64\": \"SAP/x86_64/os/Packages\"\n },\n + \ \"repository\": {\n \"ppc64le\": + \"SAP/ppc64le/os\",\n \"s390x\": \"SAP/s390x/os\",\n + \ \"x86_64\": \"SAP/x86_64/os\"\n },\n + \ \"source_packages\": {\n \"ppc64le\": + \"SAP/source/tree/Packages\",\n \"s390x\": \"SAP/source/tree/Packages\",\n + \ \"x86_64\": \"SAP/source/tree/Packages\"\n },\n + \ \"source_repository\": {\n \"ppc64le\": + \"SAP/source/tree\",\n \"s390x\": \"SAP/source/tree\",\n + \ \"x86_64\": \"SAP/source/tree\"\n },\n + \ \"source_tree\": {\n \"ppc64le\": + \"SAP/source/tree\",\n \"s390x\": \"SAP/source/tree\",\n + \ \"x86_64\": \"SAP/source/tree\"\n }\n + \ },\n \"type\": \"variant\",\n \"uid\": + \"SAP\"\n },\n \"SAPHANA\": {\n \"arches\": + [\n \"ppc64le\",\n \"x86_64\"\n ],\n + \ \"id\": \"SAPHANA\",\n \"name\": \"SAP HANA\",\n + \ \"paths\": {\n \"debug_packages\": {\n + \ \"ppc64le\": \"SAPHANA/ppc64le/debug/tree/Packages\",\n + \ \"x86_64\": \"SAPHANA/x86_64/debug/tree/Packages\"\n + \ },\n \"debug_repository\": {\n \"ppc64le\": + \"SAPHANA/ppc64le/debug/tree\",\n \"x86_64\": \"SAPHANA/x86_64/debug/tree\"\n + \ },\n \"debug_tree\": {\n \"ppc64le\": + \"SAPHANA/ppc64le/debug/tree\",\n \"x86_64\": \"SAPHANA/x86_64/debug/tree\"\n + \ },\n \"isos\": {\n \"ppc64le\": + \"SAPHANA/ppc64le/iso\",\n \"x86_64\": \"SAPHANA/x86_64/iso\"\n + \ },\n \"os_tree\": {\n \"ppc64le\": + \"SAPHANA/ppc64le/os\",\n \"x86_64\": \"SAPHANA/x86_64/os\"\n + \ },\n \"packages\": {\n \"ppc64le\": + \"SAPHANA/ppc64le/os/Packages\",\n \"x86_64\": \"SAPHANA/x86_64/os/Packages\"\n + \ },\n \"repository\": {\n \"ppc64le\": + \"SAPHANA/ppc64le/os\",\n \"x86_64\": \"SAPHANA/x86_64/os\"\n + \ },\n \"source_packages\": {\n \"ppc64le\": + \"SAPHANA/source/tree/Packages\",\n \"x86_64\": \"SAPHANA/source/tree/Packages\"\n + \ },\n \"source_repository\": {\n \"ppc64le\": + \"SAPHANA/source/tree\",\n \"x86_64\": \"SAPHANA/source/tree\"\n + \ },\n \"source_tree\": {\n \"ppc64le\": + \"SAPHANA/source/tree\",\n \"x86_64\": \"SAPHANA/source/tree\"\n + \ }\n },\n \"type\": \"variant\",\n + \ \"uid\": \"SAPHANA\"\n }\n }\n }\n}" + headers: + Connection: + - close + Date: + - Fri, 13 Sep 2024 18:43:20 GMT + Referrer-Policy: + - same-origin + Server: + - Apache + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload + - max-age=31536000; includeSubDomains; preload + X-Content-Type-Options: + - nosniff + X-Fedora-ProxyServer: + - proxy01.iad2.fedoraproject.org + X-Fedora-RequestID: + - ZuSHyAGt1qVhbjhb6QqMUAAAB0I + X-Frame-Options: + - SAMEORIGIN + X-Xss-Protection: + - 1; mode=block + accept-ranges: + - bytes + apptime: + - D=2524 + content-length: + - '29176' + content-type: + - application/json + last-modified: + - Thu, 12 Sep 2024 04:04:33 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + - max-age=31536000; includeSubDomains; preload + x-fedora-appserver: + - kojipkgs01.iad2.fedoraproject.org + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - kojipkgs.fedoraproject.org + User-Agent: + - Python-urllib/3.12 + method: GET + uri: https://kojipkgs.fedoraproject.org/compose/eln/Fedora-eln-20240912.n.0/compose/metadata/images.json + response: + body: + string: "{\n \"header\": {\n \"type\": \"productmd.images\",\n \"version\": + \"1.2\"\n },\n \"payload\": {\n \"compose\": {\n \"date\": + \"20240912\",\n \"id\": \"Fedora-eln-20240912.n.0\",\n \"respin\": + 0,\n \"type\": \"nightly\"\n },\n \"images\": {\n + \ \"AppStream\": {\n \"aarch64\": [\n {\n + \ \"arch\": \"aarch64\",\n \"bootable\": + true,\n \"checksums\": {\n \"md5\": + \"168981c8c077a40081fc0322d4828a2c\",\n \"sha1\": + \"87840fb3734bf521a980cece0ba34cfc744674b0\",\n \"sha256\": + \"0ad3030a8edb963aa86010df646d1f7a7fbda409927002174a798a115d56e48d\"\n },\n + \ \"disc_count\": 1,\n \"disc_number\": + 1,\n \"format\": \"iso\",\n \"implant_md5\": + \"7e5f8cf9dbf0517798b2ca69753a8807\",\n \"mtime\": + 1726110734,\n \"path\": \"AppStream/aarch64/iso/Fedora-eln-20240912.n.0-AppStream-aarch64-boot.iso\",\n + \ \"size\": 817391616,\n \"subvariant\": + \"AppStream\",\n \"type\": \"boot\",\n \"volume_id\": + \"Fedora-eln-AppStream-aarch64\"\n }\n ],\n + \ \"ppc64le\": [\n {\n \"arch\": + \"ppc64le\",\n \"bootable\": true,\n \"checksums\": + {\n \"md5\": \"33d81bd97012683a61c21968aa9dbff0\",\n + \ \"sha1\": \"278ae054a993692a150b1d46b8c4072adf6451b3\",\n + \ \"sha256\": \"a833f4b504b23d4711366d57ac91baf735834accc7343c0936f47e3368419309\"\n + \ },\n \"disc_count\": 1,\n \"disc_number\": + 1,\n \"format\": \"iso\",\n \"implant_md5\": + \"c140119b175d8c32b92fba3a165f822b\",\n \"mtime\": + 1726111113,\n \"path\": \"AppStream/ppc64le/iso/Fedora-eln-20240912.n.0-AppStream-ppc64le-boot.iso\",\n + \ \"size\": 815792128,\n \"subvariant\": + \"AppStream\",\n \"type\": \"boot\",\n \"volume_id\": + \"Fedora-eln-AppStream-ppc64le\"\n }\n ],\n + \ \"s390x\": [\n {\n \"arch\": + \"s390x\",\n \"bootable\": true,\n \"checksums\": + {\n \"md5\": \"cad4596ea26ea4ef365313e8e3d088fe\",\n + \ \"sha1\": \"2e6de335b6cffbf1158645bf7aad42e7a9154e8e\",\n + \ \"sha256\": \"94a7c1142746c5a22cf1e0b0ade94514fec47673606874efa36d9f76b118c337\"\n + \ },\n \"disc_count\": 1,\n \"disc_number\": + 1,\n \"format\": \"iso\",\n \"implant_md5\": + \"d493343e7a687dc32c61a5d2c530e5c3\",\n \"mtime\": + 1726110884,\n \"path\": \"AppStream/s390x/iso/Fedora-eln-20240912.n.0-AppStream-s390x-boot.iso\",\n + \ \"size\": 505524224,\n \"subvariant\": + \"AppStream\",\n \"type\": \"boot\",\n \"volume_id\": + \"Fedora-eln-AppStream-s390x\"\n }\n ],\n + \ \"x86_64\": [\n {\n \"arch\": + \"x86_64\",\n \"bootable\": true,\n \"checksums\": + {\n \"md5\": \"7607a712bb7e07fdae2036847e7a0a56\",\n + \ \"sha1\": \"9d4ca4ba688c468ce7a9b1d333e51713567466f7\",\n + \ \"sha256\": \"e8a02ade977293330f00b86f39bf17ba97b66f9549bff4c4a895497b06e284b1\"\n + \ },\n \"disc_count\": 1,\n \"disc_number\": + 1,\n \"format\": \"iso\",\n \"implant_md5\": + \"1e6fb0a78e27290bb468eb5488d77fba\",\n \"mtime\": + 1726111336,\n \"path\": \"AppStream/x86_64/iso/Fedora-eln-20240912.n.0-AppStream-x86_64-boot.iso\",\n + \ \"size\": 844115968,\n \"subvariant\": + \"AppStream\",\n \"type\": \"boot\",\n \"volume_id\": + \"Fedora-eln-AppStream-x86_64\"\n }\n ]\n + \ },\n \"BaseOS\": {\n \"aarch64\": [\n + \ {\n \"arch\": \"aarch64\",\n \"bootable\": + false,\n \"checksums\": {\n \"md5\": + \"866843bc3992b60df18d91e3d23b73f5\",\n \"sha1\": + \"db4a2646acbe84ba81ddfa698b4b0d63665d9e6a\",\n \"sha256\": + \"1b186e1b6b1464db96f17f8f9ba27ce037530c0d2c76178b673252c296d41d54\"\n },\n + \ \"disc_count\": 1,\n \"disc_number\": + 1,\n \"format\": \"raw.xz\",\n \"implant_md5\": + null,\n \"mtime\": 1726113221,\n \"path\": + \"BaseOS/aarch64/images/Fedora-ELN-Cloud-Base-AmazonEC2-11-20240912.n.0.aarch64.raw.xz\",\n + \ \"size\": 230681976,\n \"subvariant\": + \"BaseOS\",\n \"type\": \"raw-xz\",\n \"volume_id\": + null\n },\n {\n \"arch\": + \"aarch64\",\n \"bootable\": false,\n \"checksums\": + {\n \"md5\": \"fe267630947cf539e2859be5b89348b5\",\n + \ \"sha1\": \"97524f6247f6f41c8ccde65969ccd90d58e473d9\",\n + \ \"sha256\": \"ff0bd3f429d908ffcacc20240bee38725b83f46ac0476ec373abd673999f8bfb\"\n + \ },\n \"disc_count\": 1,\n \"disc_number\": + 1,\n \"format\": \"vhd.xz\",\n \"implant_md5\": + null,\n \"mtime\": 1726113504,\n \"path\": + \"BaseOS/aarch64/images/Fedora-ELN-Cloud-Base-Azure-11-20240912.n.0.aarch64.vhdfixed.xz\",\n + \ \"size\": 265736772,\n \"subvariant\": + \"BaseOS\",\n \"type\": \"vhd-compressed\",\n \"volume_id\": + null\n },\n {\n \"arch\": + \"aarch64\",\n \"bootable\": false,\n \"checksums\": + {\n \"md5\": \"8e06f586a3e331f4a5dacb329aa14304\",\n + \ \"sha1\": \"da8c6a603d1b2bf6a4386d74de5979608184e1f1\",\n + \ \"sha256\": \"5e8374cac65ae4a8c8441ef520928320a97fd9f678de59b4d24c8c9d3b3f09d9\"\n + \ },\n \"disc_count\": 1,\n \"disc_number\": + 1,\n \"format\": \"tar.gz\",\n \"implant_md5\": + null,\n \"mtime\": 1726113357,\n \"path\": + \"BaseOS/aarch64/images/Fedora-ELN-Cloud-Base-GCE-11-20240912.n.0.aarch64.tar.gz\",\n + \ \"size\": 273706130,\n \"subvariant\": + \"BaseOS\",\n \"type\": \"docker\",\n \"volume_id\": + null\n },\n {\n \"arch\": + \"aarch64\",\n \"bootable\": false,\n \"checksums\": + {\n \"md5\": \"e327211dc042c26f5a392e427801ac59\",\n + \ \"sha1\": \"26712536cef032fa7269a1c45fc41f9e946ad61c\",\n + \ \"sha256\": \"de2a7e0ee42cbb43227b90598ac3667b00b4c0e821f7a19b5615aa306c8d2bc5\"\n + \ },\n \"disc_count\": 1,\n \"disc_number\": + 1,\n \"format\": \"qcow2\",\n \"implant_md5\": + null,\n \"mtime\": 1726113359,\n \"path\": + \"BaseOS/aarch64/images/Fedora-ELN-Cloud-Base-Generic-11-20240912.n.0.aarch64.qcow2\",\n + \ \"size\": 297467904,\n \"subvariant\": + \"BaseOS\",\n \"type\": \"qcow2\",\n \"volume_id\": + null\n },\n {\n \"arch\": + \"aarch64\",\n \"bootable\": false,\n \"checksums\": + {\n \"md5\": \"991c3730dcf1958e65c9864ac3f4964a\",\n + \ \"sha1\": \"3d29b11ffac9ad3835b55059334fc730649a708f\",\n + \ \"sha256\": \"91757b8f2c915720eaecef604524e879e8f83262614deed3e6173eb06823e10e\"\n + \ },\n \"disc_count\": 1,\n \"disc_number\": + 1,\n \"format\": \"tar.xz\",\n \"implant_md5\": + null,\n \"mtime\": 1726113070,\n \"path\": + \"BaseOS/aarch64/images/Fedora-ELN-Container-Base-Generic-%s-20240912.n.0.aarch64.oci.tar.xz\",\n + \ \"size\": 56972368,\n \"subvariant\": + \"BaseOS\",\n \"type\": \"docker\",\n \"volume_id\": + null\n },\n {\n \"arch\": + \"aarch64\",\n \"bootable\": true,\n \"checksums\": + {\n \"md5\": \"bf9a33ddf855f521e3ac7e1af2821533\",\n + \ \"sha1\": \"f82b33c1e9046d4ea353e84b1be4a6e39fe413ff\",\n + \ \"sha256\": \"e7c3e2cf1d6ce81d40ea6ee5356d0e0e58cfd15ffaf90e3f92102a81c399d47d\"\n + \ },\n \"disc_count\": 1,\n \"disc_number\": + 1,\n \"format\": \"iso\",\n \"implant_md5\": + \"0b6db82c38fd1ff3cb0627d40c51b52a\",\n \"mtime\": + 1726110706,\n \"path\": \"BaseOS/aarch64/iso/Fedora-eln-20240912.n.0-aarch64-boot.iso\",\n + \ \"size\": 817391616,\n \"subvariant\": + \"BaseOS\",\n \"type\": \"boot\",\n \"volume_id\": + \"Fedora-eln-BaseOS-aarch64\"\n },\n {\n + \ \"additional_variants\": [\n \"AppStream\"\n + \ ],\n \"arch\": \"src\",\n \"bootable\": + false,\n \"checksums\": {\n \"md5\": + \"e39cfd666d720c553433a387e51e34d8\",\n \"sha1\": + \"be5f8b59d500571ae342d673acb59579ae481494\",\n \"sha256\": + \"07aa4ec415fab8a86477dfcd461d953c0dffe601b7cdee2eac4eda0da061f46a\"\n },\n + \ \"disc_count\": 1,\n \"disc_number\": + 1,\n \"format\": \"iso\",\n \"implant_md5\": + \"909c3d961755102aa5b9b67bad18d45a\",\n \"mtime\": + 1726113109,\n \"path\": \"BaseOS/source/iso/Fedora-eln-20240912.n.0-src-dvd1.iso\",\n + \ \"size\": 12592549888,\n \"subvariant\": + \"BaseOS\",\n \"type\": \"dvd\",\n \"unified\": + true,\n \"volume_id\": \"Fedora-eln-BaseOS-src\"\n + \ }\n ],\n \"ppc64le\": [\n + \ {\n \"arch\": \"ppc64le\",\n \"bootable\": + false,\n \"checksums\": {\n \"md5\": + \"1c5d8a2cc7c3319dde26fd2a2128319a\",\n \"sha1\": + \"6083277e5ec4c8cd0cd0828a469472896267571d\",\n \"sha256\": + \"65696d6a6ba55d520c23c05ef208c3d6ad9fdfba337b0ae5676710b4ea60594f\"\n },\n + \ \"disc_count\": 1,\n \"disc_number\": + 1,\n \"format\": \"qcow2\",\n \"implant_md5\": + null,\n \"mtime\": 1726113547,\n \"path\": + \"BaseOS/ppc64le/images/Fedora-ELN-Cloud-Base-Generic-11-20240912.n.0.ppc64le.qcow2\",\n + \ \"size\": 294256640,\n \"subvariant\": + \"BaseOS\",\n \"type\": \"qcow2\",\n \"volume_id\": + null\n },\n {\n \"arch\": + \"ppc64le\",\n \"bootable\": false,\n \"checksums\": + {\n \"md5\": \"d8e5018b3fd7e855e571be77dd9d2c85\",\n + \ \"sha1\": \"0a219465a5d146da6289ea7b653e73e6bc670368\",\n + \ \"sha256\": \"5f1dd8b98d88a02bcb9b0b2c59aaeb720381a46344a38edd2f60c119cb45a100\"\n + \ },\n \"disc_count\": 1,\n \"disc_number\": + 1,\n \"format\": \"tar.xz\",\n \"implant_md5\": + null,\n \"mtime\": 1726113210,\n \"path\": + \"BaseOS/ppc64le/images/Fedora-ELN-Container-Base-Generic-%s-20240912.n.0.ppc64le.oci.tar.xz\",\n + \ \"size\": 63125704,\n \"subvariant\": + \"BaseOS\",\n \"type\": \"docker\",\n \"volume_id\": + null\n },\n {\n \"arch\": + \"ppc64le\",\n \"bootable\": true,\n \"checksums\": + {\n \"md5\": \"d4bc98355a3156127546e661b6e57ead\",\n + \ \"sha1\": \"9382ce8ab74b7fd71043c034e96c935903e750b9\",\n + \ \"sha256\": \"8c075694c26ead9eda749096a2d0267f853c9fddab01577fb2fc51051cff36db\"\n + \ },\n \"disc_count\": 1,\n \"disc_number\": + 1,\n \"format\": \"iso\",\n \"implant_md5\": + \"19f0a1355f21257d79187f56bc3118b1\",\n \"mtime\": + 1726111600,\n \"path\": \"BaseOS/ppc64le/iso/Fedora-eln-20240912.n.0-ppc64le-boot.iso\",\n + \ \"size\": 815792128,\n \"subvariant\": + \"BaseOS\",\n \"type\": \"boot\",\n \"volume_id\": + \"Fedora-eln-BaseOS-ppc64le\"\n },\n {\n + \ \"additional_variants\": [\n \"AppStream\"\n + \ ],\n \"arch\": \"src\",\n \"bootable\": + false,\n \"checksums\": {\n \"md5\": + \"e39cfd666d720c553433a387e51e34d8\",\n \"sha1\": + \"be5f8b59d500571ae342d673acb59579ae481494\",\n \"sha256\": + \"07aa4ec415fab8a86477dfcd461d953c0dffe601b7cdee2eac4eda0da061f46a\"\n },\n + \ \"disc_count\": 1,\n \"disc_number\": + 1,\n \"format\": \"iso\",\n \"implant_md5\": + \"909c3d961755102aa5b9b67bad18d45a\",\n \"mtime\": + 1726113109,\n \"path\": \"BaseOS/source/iso/Fedora-eln-20240912.n.0-src-dvd1.iso\",\n + \ \"size\": 12592549888,\n \"subvariant\": + \"BaseOS\",\n \"type\": \"dvd\",\n \"unified\": + true,\n \"volume_id\": \"Fedora-eln-BaseOS-src\"\n + \ }\n ],\n \"s390x\": [\n + \ {\n \"arch\": \"s390x\",\n \"bootable\": + false,\n \"checksums\": {\n \"md5\": + \"107ee5e4bb1b5d651c763a65a4c11be5\",\n \"sha1\": + \"e78292301542c3f9e144679b3ea967afe36b5ef2\",\n \"sha256\": + \"cb36119606d6bfd38f969680f1ec323c9fe661e84d807a4f314cbf143c57e240\"\n },\n + \ \"disc_count\": 1,\n \"disc_number\": + 1,\n \"format\": \"qcow2\",\n \"implant_md5\": + null,\n \"mtime\": 1726113126,\n \"path\": + \"BaseOS/s390x/images/Fedora-ELN-Cloud-Base-Generic-11-20240912.n.0.s390x.qcow2\",\n + \ \"size\": 321505792,\n \"subvariant\": + \"BaseOS\",\n \"type\": \"qcow2\",\n \"volume_id\": + null\n },\n {\n \"arch\": + \"s390x\",\n \"bootable\": false,\n \"checksums\": + {\n \"md5\": \"625a5a6d34ea1103546faafa3b9c5234\",\n + \ \"sha1\": \"fb477995a4058b09b9c3dbad3534d4c0d9181e73\",\n + \ \"sha256\": \"15a20df57fd33ffd36ed3c24528dd9ea603c1338752de6cda577147829e0cf38\"\n + \ },\n \"disc_count\": 1,\n \"disc_number\": + 1,\n \"format\": \"tar.xz\",\n \"implant_md5\": + null,\n \"mtime\": 1726113070,\n \"path\": + \"BaseOS/s390x/images/Fedora-ELN-Container-Base-Generic-%s-20240912.n.0.s390x.oci.tar.xz\",\n + \ \"size\": 58988332,\n \"subvariant\": + \"BaseOS\",\n \"type\": \"docker\",\n \"volume_id\": + null\n },\n {\n \"arch\": + \"s390x\",\n \"bootable\": true,\n \"checksums\": + {\n \"md5\": \"c9150c298da2ceb34c156ddc9dde9acc\",\n + \ \"sha1\": \"4bf999122774594f8386878165b75ada516d5979\",\n + \ \"sha256\": \"6735a5ef07b1c847ee0ac9399d6e16e120bae0432a80a61fa93a3a0f4c78f6fc\"\n + \ },\n \"disc_count\": 1,\n \"disc_number\": + 1,\n \"format\": \"iso\",\n \"implant_md5\": + \"65989f048f9dbbd1e883ae46c4852bd5\",\n \"mtime\": + 1726110884,\n \"path\": \"BaseOS/s390x/iso/Fedora-eln-20240912.n.0-s390x-boot.iso\",\n + \ \"size\": 505544704,\n \"subvariant\": + \"BaseOS\",\n \"type\": \"boot\",\n \"volume_id\": + \"Fedora-eln-BaseOS-s390x\"\n },\n {\n + \ \"additional_variants\": [\n \"AppStream\"\n + \ ],\n \"arch\": \"src\",\n \"bootable\": + false,\n \"checksums\": {\n \"md5\": + \"e39cfd666d720c553433a387e51e34d8\",\n \"sha1\": + \"be5f8b59d500571ae342d673acb59579ae481494\",\n \"sha256\": + \"07aa4ec415fab8a86477dfcd461d953c0dffe601b7cdee2eac4eda0da061f46a\"\n },\n + \ \"disc_count\": 1,\n \"disc_number\": + 1,\n \"format\": \"iso\",\n \"implant_md5\": + \"909c3d961755102aa5b9b67bad18d45a\",\n \"mtime\": + 1726113109,\n \"path\": \"BaseOS/source/iso/Fedora-eln-20240912.n.0-src-dvd1.iso\",\n + \ \"size\": 12592549888,\n \"subvariant\": + \"BaseOS\",\n \"type\": \"dvd\",\n \"unified\": + true,\n \"volume_id\": \"Fedora-eln-BaseOS-src\"\n + \ }\n ],\n \"x86_64\": [\n + \ {\n \"additional_variants\": [\n + \ \"AppStream\"\n ],\n \"arch\": + \"src\",\n \"bootable\": false,\n \"checksums\": + {\n \"md5\": \"e39cfd666d720c553433a387e51e34d8\",\n + \ \"sha1\": \"be5f8b59d500571ae342d673acb59579ae481494\",\n + \ \"sha256\": \"07aa4ec415fab8a86477dfcd461d953c0dffe601b7cdee2eac4eda0da061f46a\"\n + \ },\n \"disc_count\": 1,\n \"disc_number\": + 1,\n \"format\": \"iso\",\n \"implant_md5\": + \"909c3d961755102aa5b9b67bad18d45a\",\n \"mtime\": + 1726113109,\n \"path\": \"BaseOS/source/iso/Fedora-eln-20240912.n.0-src-dvd1.iso\",\n + \ \"size\": 12592549888,\n \"subvariant\": + \"BaseOS\",\n \"type\": \"dvd\",\n \"unified\": + true,\n \"volume_id\": \"Fedora-eln-BaseOS-src\"\n + \ },\n {\n \"arch\": + \"x86_64\",\n \"bootable\": false,\n \"checksums\": + {\n \"md5\": \"98f96f10c32814f6870dc44ef9cd7720\",\n + \ \"sha1\": \"25295eb204a2f6505f234eb7ca2daa6a950b581c\",\n + \ \"sha256\": \"4f0d2f6ddab8606dbdf1ca802f7facf8ceb0f41713a93b15893e5db5fcf4af19\"\n + \ },\n \"disc_count\": 1,\n \"disc_number\": + 1,\n \"format\": \"raw.xz\",\n \"implant_md5\": + null,\n \"mtime\": 1726113352,\n \"path\": + \"BaseOS/x86_64/images/Fedora-ELN-Cloud-Base-AmazonEC2-11-20240912.n.0.x86_64.raw.xz\",\n + \ \"size\": 247497644,\n \"subvariant\": + \"BaseOS\",\n \"type\": \"raw-xz\",\n \"volume_id\": + null\n },\n {\n \"arch\": + \"x86_64\",\n \"bootable\": false,\n \"checksums\": + {\n \"md5\": \"4fa14c11118c274e03e2528f07df1c71\",\n + \ \"sha1\": \"80c42eff58b2eb7c9ffd55e5ac705d8da1343584\",\n + \ \"sha256\": \"4aaf89f7d4e0867a38fab4c9596d12a798e46f0d4eb2b23855b50c03d0bd9db6\"\n + \ },\n \"disc_count\": 1,\n \"disc_number\": + 1,\n \"format\": \"vhd.xz\",\n \"implant_md5\": + null,\n \"mtime\": 1726113359,\n \"path\": + \"BaseOS/x86_64/images/Fedora-ELN-Cloud-Base-Azure-11-20240912.n.0.x86_64.vhdfixed.xz\",\n + \ \"size\": 313150888,\n \"subvariant\": + \"BaseOS\",\n \"type\": \"vhd-compressed\",\n \"volume_id\": + null\n },\n {\n \"arch\": + \"x86_64\",\n \"bootable\": false,\n \"checksums\": + {\n \"md5\": \"49ba87b60f9a1ffb4848e73d8dacf23a\",\n + \ \"sha1\": \"f03797c7b9948bf2856aaa07fabd934b1e13c98b\",\n + \ \"sha256\": \"c7938dacc2a63db262e0fa58bbe18b4c981b60d1214aca0296b8dc05c0bd39da\"\n + \ },\n \"disc_count\": 1,\n \"disc_number\": + 1,\n \"format\": \"tar.gz\",\n \"implant_md5\": + null,\n \"mtime\": 1726113265,\n \"path\": + \"BaseOS/x86_64/images/Fedora-ELN-Cloud-Base-GCE-11-20240912.n.0.x86_64.tar.gz\",\n + \ \"size\": 353025193,\n \"subvariant\": + \"BaseOS\",\n \"type\": \"docker\",\n \"volume_id\": + null\n },\n {\n \"arch\": + \"x86_64\",\n \"bootable\": false,\n \"checksums\": + {\n \"md5\": \"a48af6cd13d2b6d473c4b377e60c7fb7\",\n + \ \"sha1\": \"5b62acb45b63e4ad54bc7172cd40b906efbd329a\",\n + \ \"sha256\": \"d25de17c239f8d3f1f3d1cf50ba9b26cd6b18c163dd75d768119dc01befd5fca\"\n + \ },\n \"disc_count\": 1,\n \"disc_number\": + 1,\n \"format\": \"qcow2\",\n \"implant_md5\": + null,\n \"mtime\": 1726113242,\n \"path\": + \"BaseOS/x86_64/images/Fedora-ELN-Cloud-Base-Generic-11-20240912.n.0.x86_64.qcow2\",\n + \ \"size\": 387252224,\n \"subvariant\": + \"BaseOS\",\n \"type\": \"qcow2\",\n \"volume_id\": + null\n },\n {\n \"arch\": + \"x86_64\",\n \"bootable\": false,\n \"checksums\": + {\n \"md5\": \"02d8376ad0b39ebb724e181fcc4588e0\",\n + \ \"sha1\": \"748484cfca76e99dcd7c4b6c5469be1662be492a\",\n + \ \"sha256\": \"9ad7de3dbe3480b487b9b19ced675104bea4952ec91e46502f98eb41f41f37c6\"\n + \ },\n \"disc_count\": 1,\n \"disc_number\": + 1,\n \"format\": \"tar.xz\",\n \"implant_md5\": + null,\n \"mtime\": 1726113070,\n \"path\": + \"BaseOS/x86_64/images/Fedora-ELN-Container-Base-Generic-%s-20240912.n.0.x86_64.oci.tar.xz\",\n + \ \"size\": 58755380,\n \"subvariant\": + \"BaseOS\",\n \"type\": \"docker\",\n \"volume_id\": + null\n },\n {\n \"arch\": + \"x86_64\",\n \"bootable\": true,\n \"checksums\": + {\n \"md5\": \"b76127112fef79c3d863d1c6dd655612\",\n + \ \"sha1\": \"1b503793236614bcc7f186c78acd2a3237875a1e\",\n + \ \"sha256\": \"8a3bf78a6e43b6f55a1b268e38cc79538b31ec3fd29f8b3fa9bb1a91297cd062\"\n + \ },\n \"disc_count\": 1,\n \"disc_number\": + 1,\n \"format\": \"iso\",\n \"implant_md5\": + \"8317d61000cf867868526112644585ed\",\n \"mtime\": + 1726111299,\n \"path\": \"BaseOS/x86_64/iso/Fedora-eln-20240912.n.0-x86_64-boot.iso\",\n + \ \"size\": 844109824,\n \"subvariant\": + \"BaseOS\",\n \"type\": \"boot\",\n \"volume_id\": + \"Fedora-eln-BaseOS-x86_64\"\n },\n {\n + \ \"additional_variants\": [\n \"AppStream\"\n + \ ],\n \"arch\": \"x86_64\",\n + \ \"bootable\": true,\n \"checksums\": + {\n \"md5\": \"841de0a95aea839208145134564ef954\",\n + \ \"sha1\": \"704d28476a1212dd0f41f9e4561d848ff51e8738\",\n + \ \"sha256\": \"f97baffd1bc5504392ccc7a31c5288e450c20df6dfb1cf05b476105044d111ea\"\n + \ },\n \"disc_count\": 1,\n \"disc_number\": + 1,\n \"format\": \"iso\",\n \"implant_md5\": + \"9b19eab034c677361247cb05852bb822\",\n \"mtime\": + 1726113190,\n \"path\": \"BaseOS/x86_64/iso/Fedora-eln-20240912.n.0-x86_64-dvd1.iso\",\n + \ \"size\": 6755581952,\n \"subvariant\": + \"BaseOS\",\n \"type\": \"dvd\",\n \"unified\": + true,\n \"volume_id\": \"Fedora-eln-BaseOS-x86_64\"\n + \ }\n ]\n },\n \"CRB\": + {\n \"aarch64\": [\n {\n \"arch\": + \"aarch64\",\n \"bootable\": true,\n \"checksums\": + {\n \"md5\": \"755d68015c1e8074994edfadba6a206a\",\n + \ \"sha1\": \"a611af375aa3f8fa1ed633e241b96c7ab6acb379\",\n + \ \"sha256\": \"22e19892b7b8677461c210b98fcdd7213a4b205984a68d8e6824c2ae1ac7663c\"\n + \ },\n \"disc_count\": 1,\n \"disc_number\": + 1,\n \"format\": \"iso\",\n \"implant_md5\": + \"a586115226050b22b03a2b7ae3ec0fbd\",\n \"mtime\": + 1726110681,\n \"path\": \"CRB/aarch64/iso/Fedora-eln-20240912.n.0-CRB-aarch64-boot.iso\",\n + \ \"size\": 817391616,\n \"subvariant\": + \"CRB\",\n \"type\": \"boot\",\n \"volume_id\": + \"Fedora-eln-CRB-aarch64\"\n }\n ],\n \"ppc64le\": + [\n {\n \"arch\": \"ppc64le\",\n + \ \"bootable\": true,\n \"checksums\": + {\n \"md5\": \"b96213f3f7fb425b6f97e49085bad185\",\n + \ \"sha1\": \"2f5132b65d50a371d40c3df9a264141efcd27311\",\n + \ \"sha256\": \"37c7ba32c721c45ae6f7482bda9dc86ad2322d1ad19e7899eeee52b8e4842188\"\n + \ },\n \"disc_count\": 1,\n \"disc_number\": + 1,\n \"format\": \"iso\",\n \"implant_md5\": + \"9fd18aced1ffc4eab7ea37b8d5be0f00\",\n \"mtime\": + 1726111295,\n \"path\": \"CRB/ppc64le/iso/Fedora-eln-20240912.n.0-CRB-ppc64le-boot.iso\",\n + \ \"size\": 815792128,\n \"subvariant\": + \"CRB\",\n \"type\": \"boot\",\n \"volume_id\": + \"Fedora-eln-CRB-ppc64le\"\n }\n ],\n \"s390x\": + [\n {\n \"arch\": \"s390x\",\n \"bootable\": + true,\n \"checksums\": {\n \"md5\": + \"e45cf9a0563b61811fa376fcce87fa7f\",\n \"sha1\": + \"3bcbefd2cdb7d93f46d2cc4f759a0aa5b1f025be\",\n \"sha256\": + \"576ea59913ec7fcd465922b141dc9ab7f1637100a29fb744ba91c0d5be524936\"\n },\n + \ \"disc_count\": 1,\n \"disc_number\": + 1,\n \"format\": \"iso\",\n \"implant_md5\": + \"dd376c3d4060cfe3965da0987426df2a\",\n \"mtime\": + 1726110882,\n \"path\": \"CRB/s390x/iso/Fedora-eln-20240912.n.0-CRB-s390x-boot.iso\",\n + \ \"size\": 505540608,\n \"subvariant\": + \"CRB\",\n \"type\": \"boot\",\n \"volume_id\": + \"Fedora-eln-CRB-s390x\"\n }\n ],\n \"x86_64\": + [\n {\n \"arch\": \"x86_64\",\n + \ \"bootable\": true,\n \"checksums\": + {\n \"md5\": \"2d8e2bd1998f21f87d6d6718ff582f4e\",\n + \ \"sha1\": \"4ae41e07394ff91997a2eb2d4f533f60a4c495b9\",\n + \ \"sha256\": \"03781b0b0de4bfd9421273ae90d9a60da44da68ac57de411a5918f9770c7802d\"\n + \ },\n \"disc_count\": 1,\n \"disc_number\": + 1,\n \"format\": \"iso\",\n \"implant_md5\": + \"8a4ccd078aa32e1a975c5f03e87d9407\",\n \"mtime\": + 1726111327,\n \"path\": \"CRB/x86_64/iso/Fedora-eln-20240912.n.0-CRB-x86_64-boot.iso\",\n + \ \"size\": 844109824,\n \"subvariant\": + \"CRB\",\n \"type\": \"boot\",\n \"volume_id\": + \"Fedora-eln-CRB-x86_64\"\n }\n ]\n },\n + \ \"Extras\": {\n \"aarch64\": [\n {\n + \ \"arch\": \"aarch64\",\n \"bootable\": + true,\n \"checksums\": {\n \"md5\": + \"471004fa6f3f7d60050d75ca74c16dc2\",\n \"sha1\": + \"fadd2ad06f3ac96dbbe4da57dd6f04e719dc9e40\",\n \"sha256\": + \"35c8d5b086fe1b109e85ea1f79a2112ad325d7280a683790f8bb9c73b25dc485\"\n },\n + \ \"disc_count\": 1,\n \"disc_number\": + 1,\n \"format\": \"iso\",\n \"implant_md5\": + \"82295a8c0d6b552adeaa20dcd611fb74\",\n \"mtime\": + 1726110733,\n \"path\": \"Extras/aarch64/iso/Fedora-eln-20240912.n.0-Extras-aarch64-boot.iso\",\n + \ \"size\": 817391616,\n \"subvariant\": + \"Extras\",\n \"type\": \"boot\",\n \"volume_id\": + \"Fedora-eln-Extras-aarch64\"\n }\n ],\n + \ \"ppc64le\": [\n {\n \"arch\": + \"ppc64le\",\n \"bootable\": true,\n \"checksums\": + {\n \"md5\": \"8445ff6c625bbf5c3272c6c5434facc2\",\n + \ \"sha1\": \"4c01255940c38df116713d7192227552d783e9b5\",\n + \ \"sha256\": \"d91cdd79a3baea735a06af46099fe0d5eda22f3808d4b9b6067bf4eaf0f48fa2\"\n + \ },\n \"disc_count\": 1,\n \"disc_number\": + 1,\n \"format\": \"iso\",\n \"implant_md5\": + \"52c9d8ffb11ed5eae9e0641d7f7d6fba\",\n \"mtime\": + 1726111058,\n \"path\": \"Extras/ppc64le/iso/Fedora-eln-20240912.n.0-Extras-ppc64le-boot.iso\",\n + \ \"size\": 815792128,\n \"subvariant\": + \"Extras\",\n \"type\": \"boot\",\n \"volume_id\": + \"Fedora-eln-Extras-ppc64le\"\n }\n ],\n + \ \"s390x\": [\n {\n \"arch\": + \"s390x\",\n \"bootable\": true,\n \"checksums\": + {\n \"md5\": \"1b7becf3b2f8686cfd47d5f72a2dced7\",\n + \ \"sha1\": \"5a0085abcbeb35aa0b24dce907971f217b3ee386\",\n + \ \"sha256\": \"1e88bfcbc31e50f225af0b765984369b8fb6ecb09aa75cec7e6806df2bc71351\"\n + \ },\n \"disc_count\": 1,\n \"disc_number\": + 1,\n \"format\": \"iso\",\n \"implant_md5\": + \"f51203f3138f1f0032c4a79a7f049b5e\",\n \"mtime\": + 1726111473,\n \"path\": \"Extras/s390x/iso/Fedora-eln-20240912.n.0-Extras-s390x-boot.iso\",\n + \ \"size\": 505544704,\n \"subvariant\": + \"Extras\",\n \"type\": \"boot\",\n \"volume_id\": + \"Fedora-eln-Extras-s390x\"\n }\n ],\n \"x86_64\": + [\n {\n \"arch\": \"x86_64\",\n + \ \"bootable\": true,\n \"checksums\": + {\n \"md5\": \"8370858dc68dc6871e8629c62f2b1fec\",\n + \ \"sha1\": \"14311095689a864d267c48ab47ab39aa4713bd98\",\n + \ \"sha256\": \"523a4ccecf7cc09184f6856803fa02d10460f1a7ee6a2bbf50fed283577879d0\"\n + \ },\n \"disc_count\": 1,\n \"disc_number\": + 1,\n \"format\": \"iso\",\n \"implant_md5\": + \"9299c30d5d000843fafc3cc2a476118e\",\n \"mtime\": + 1726111293,\n \"path\": \"Extras/x86_64/iso/Fedora-eln-20240912.n.0-Extras-x86_64-boot.iso\",\n + \ \"size\": 844109824,\n \"subvariant\": + \"Extras\",\n \"type\": \"boot\",\n \"volume_id\": + \"Fedora-eln-Extras-x86_64\"\n }\n ]\n },\n + \ \"HighAvailability\": {\n \"aarch64\": [\n {\n + \ \"arch\": \"aarch64\",\n \"bootable\": + true,\n \"checksums\": {\n \"md5\": + \"d382c0af4419ed43580474b068a9be63\",\n \"sha1\": + \"967297776c140f53474060634bf46eae906b0971\",\n \"sha256\": + \"4f2c6b93184df03bfe324cbfaff519c73cfd5066ec4a58ab90fe177628c73e19\"\n },\n + \ \"disc_count\": 1,\n \"disc_number\": + 1,\n \"format\": \"iso\",\n \"implant_md5\": + \"fbae2ee738641ba37ed4ad5751808ca4\",\n \"mtime\": + 1726110723,\n \"path\": \"HighAvailability/aarch64/iso/Fedora-eln-20240912.n.0-HighAvailability-aarch64-boot.iso\",\n + \ \"size\": 817391616,\n \"subvariant\": + \"HighAvailability\",\n \"type\": \"boot\",\n \"volume_id\": + \"Fedora-eln-aarch64\"\n }\n ],\n \"ppc64le\": + [\n {\n \"arch\": \"ppc64le\",\n + \ \"bootable\": true,\n \"checksums\": + {\n \"md5\": \"c40cdb61a960cf7b5b8e304e0f797a01\",\n + \ \"sha1\": \"3ca14a94f5001a5f7b3454cc6d76297c485f5b94\",\n + \ \"sha256\": \"cfaa709ca721567e01349f7a3c669c4c787a04c8b9beb5979a730ba45d8fc71a\"\n + \ },\n \"disc_count\": 1,\n \"disc_number\": + 1,\n \"format\": \"iso\",\n \"implant_md5\": + \"9f1aa0b3ce1e8a54efdcfa36a3a1a487\",\n \"mtime\": + 1726111863,\n \"path\": \"HighAvailability/ppc64le/iso/Fedora-eln-20240912.n.0-HighAvailability-ppc64le-boot.iso\",\n + \ \"size\": 815785984,\n \"subvariant\": + \"HighAvailability\",\n \"type\": \"boot\",\n \"volume_id\": + \"Fedora-eln-ppc64le\"\n }\n ],\n \"s390x\": + [\n {\n \"arch\": \"s390x\",\n \"bootable\": + true,\n \"checksums\": {\n \"md5\": + \"dc43a8eda9debf5f4c02486ba59d9ff8\",\n \"sha1\": + \"12e5323d60f90be272842851f503b4995483cdea\",\n \"sha256\": + \"532f463214df6e9b4f49e1860e0b472ef6b72542664b2eb4155f738ffba07621\"\n },\n + \ \"disc_count\": 1,\n \"disc_number\": + 1,\n \"format\": \"iso\",\n \"implant_md5\": + \"2823b7ca1dc9e84caaa4e1f0da55f7bb\",\n \"mtime\": + 1726111472,\n \"path\": \"HighAvailability/s390x/iso/Fedora-eln-20240912.n.0-HighAvailability-s390x-boot.iso\",\n + \ \"size\": 505536512,\n \"subvariant\": + \"HighAvailability\",\n \"type\": \"boot\",\n \"volume_id\": + \"Fedora-eln-s390x\"\n }\n ],\n \"x86_64\": + [\n {\n \"arch\": \"x86_64\",\n + \ \"bootable\": true,\n \"checksums\": + {\n \"md5\": \"57e54d7209bffbeae9f9249c783c4ebf\",\n + \ \"sha1\": \"6950f50af485c22175fae9c85b37135d090825ec\",\n + \ \"sha256\": \"4bd6b7e9a646119326c213b4a821916f85754a6fd858ed49cc13f5bc5c253145\"\n + \ },\n \"disc_count\": 1,\n \"disc_number\": + 1,\n \"format\": \"iso\",\n \"implant_md5\": + \"acaaf2fa3aab4a3502298ceb775487a2\",\n \"mtime\": + 1726111300,\n \"path\": \"HighAvailability/x86_64/iso/Fedora-eln-20240912.n.0-HighAvailability-x86_64-boot.iso\",\n + \ \"size\": 844111872,\n \"subvariant\": + \"HighAvailability\",\n \"type\": \"boot\",\n \"volume_id\": + \"Fedora-eln-x86_64\"\n }\n ]\n },\n + \ \"NFV\": {\n \"x86_64\": [\n {\n + \ \"arch\": \"x86_64\",\n \"bootable\": + true,\n \"checksums\": {\n \"md5\": + \"1bcfd3315b554b86226a6ac145fd7255\",\n \"sha1\": + \"373ce66c4b5fe53e8dcea8df600329f6ef50c559\",\n \"sha256\": + \"fba2e126db315cd7f75c91f17d1bbe5d716b9dd037de8ec2cc0784b957e11808\"\n },\n + \ \"disc_count\": 1,\n \"disc_number\": + 1,\n \"format\": \"iso\",\n \"implant_md5\": + \"f98e23a1c1a0b23c5bb56d42adb0013b\",\n \"mtime\": + 1726111348,\n \"path\": \"NFV/x86_64/iso/Fedora-eln-20240912.n.0-NFV-x86_64-boot.iso\",\n + \ \"size\": 844109824,\n \"subvariant\": + \"NFV\",\n \"type\": \"boot\",\n \"volume_id\": + \"Fedora-eln-NFV-x86_64\"\n }\n ]\n },\n + \ \"RT\": {\n \"x86_64\": [\n {\n + \ \"arch\": \"x86_64\",\n \"bootable\": + true,\n \"checksums\": {\n \"md5\": + \"b1950ef3c44bad66904489b359cd774d\",\n \"sha1\": + \"8e13906546d0c6307bdcd061ba26059f6a84210b\",\n \"sha256\": + \"af481b965e8d4a2f389170e325ea69961abed0a179ce28aed643d8ead8b4d5ce\"\n },\n + \ \"disc_count\": 1,\n \"disc_number\": + 1,\n \"format\": \"iso\",\n \"implant_md5\": + \"788e30d516f153162f7b645dced60e4c\",\n \"mtime\": + 1726112144,\n \"path\": \"RT/x86_64/iso/Fedora-eln-20240912.n.0-RT-x86_64-boot.iso\",\n + \ \"size\": 844109824,\n \"subvariant\": + \"RT\",\n \"type\": \"boot\",\n \"volume_id\": + \"Fedora-eln-RT-x86_64\"\n }\n ]\n },\n + \ \"ResilientStorage\": {\n \"ppc64le\": [\n {\n + \ \"arch\": \"ppc64le\",\n \"bootable\": + true,\n \"checksums\": {\n \"md5\": + \"a36894a0578ba90bec2edec637404f15\",\n \"sha1\": + \"f507ee1927d0bdc5817d1b66f83de7392446ef0f\",\n \"sha256\": + \"0bb0a9d3932e9af60705b55a641e641525a290ae52448725168d6ae4f4d35ae7\"\n },\n + \ \"disc_count\": 1,\n \"disc_number\": + 1,\n \"format\": \"iso\",\n \"implant_md5\": + \"bd1aeca12fe7688ae8726385ec22a3ad\",\n \"mtime\": + 1726111107,\n \"path\": \"ResilientStorage/ppc64le/iso/Fedora-eln-20240912.n.0-ResilientStorage-ppc64le-boot.iso\",\n + \ \"size\": 815783936,\n \"subvariant\": + \"ResilientStorage\",\n \"type\": \"boot\",\n \"volume_id\": + \"Fedora-eln-ppc64le\"\n }\n ],\n \"s390x\": + [\n {\n \"arch\": \"s390x\",\n \"bootable\": + true,\n \"checksums\": {\n \"md5\": + \"70134ae8ff38f6e6682d0bb632c44c34\",\n \"sha1\": + \"9f0636e551e7ce14b9357167b625c17937607dc1\",\n \"sha256\": + \"b6f00a81a5cc2209c29816faa16faf352504246bb205463c0f6bb55ef44ae0fe\"\n },\n + \ \"disc_count\": 1,\n \"disc_number\": + 1,\n \"format\": \"iso\",\n \"implant_md5\": + \"ed9203bc713e30c9ba23a252767fd942\",\n \"mtime\": + 1726111469,\n \"path\": \"ResilientStorage/s390x/iso/Fedora-eln-20240912.n.0-ResilientStorage-s390x-boot.iso\",\n + \ \"size\": 505536512,\n \"subvariant\": + \"ResilientStorage\",\n \"type\": \"boot\",\n \"volume_id\": + \"Fedora-eln-s390x\"\n }\n ],\n \"x86_64\": + [\n {\n \"arch\": \"x86_64\",\n + \ \"bootable\": true,\n \"checksums\": + {\n \"md5\": \"b21e3cf7e35c42e901574d5b170cdcb6\",\n + \ \"sha1\": \"6b25b86d31d44c9ca77945ec332db793b8f1d66a\",\n + \ \"sha256\": \"2ca3d010ae4e9003aafc30bfdb9dd1cb1178010c3a02356f9d7dd9f1cd53c987\"\n + \ },\n \"disc_count\": 1,\n \"disc_number\": + 1,\n \"format\": \"iso\",\n \"implant_md5\": + \"7c3a47b68e450406b83afa8022bd1d40\",\n \"mtime\": + 1726112115,\n \"path\": \"ResilientStorage/x86_64/iso/Fedora-eln-20240912.n.0-ResilientStorage-x86_64-boot.iso\",\n + \ \"size\": 844111872,\n \"subvariant\": + \"ResilientStorage\",\n \"type\": \"boot\",\n \"volume_id\": + \"Fedora-eln-x86_64\"\n }\n ]\n },\n + \ \"SAP\": {\n \"ppc64le\": [\n {\n + \ \"arch\": \"ppc64le\",\n \"bootable\": + true,\n \"checksums\": {\n \"md5\": + \"06578b93abc8a6a10035c3f080300cae\",\n \"sha1\": + \"1ce281eb94e13e14498ac7d9ee96ac4cd83c1f1f\",\n \"sha256\": + \"ae0ce1e2f48543a779f933116fccc02355d8e35a695ab763ec00ef0c732627d4\"\n },\n + \ \"disc_count\": 1,\n \"disc_number\": + 1,\n \"format\": \"iso\",\n \"implant_md5\": + \"ce16a4ab5a7933dee0a165fc754c5427\",\n \"mtime\": + 1726111601,\n \"path\": \"SAP/ppc64le/iso/Fedora-eln-20240912.n.0-SAP-ppc64le-boot.iso\",\n + \ \"size\": 815792128,\n \"subvariant\": + \"SAP\",\n \"type\": \"boot\",\n \"volume_id\": + \"Fedora-eln-SAP-ppc64le\"\n }\n ],\n \"s390x\": + [\n {\n \"arch\": \"s390x\",\n \"bootable\": + true,\n \"checksums\": {\n \"md5\": + \"b8ddc86251a0bd6e29f1e69563ff7876\",\n \"sha1\": + \"81dcd9167f5641fd21f23408da38c6f669da9c9f\",\n \"sha256\": + \"82675686973925144c0444c54650b1aad9a0f731f8187a4680b298fecec70fd0\"\n },\n + \ \"disc_count\": 1,\n \"disc_number\": + 1,\n \"format\": \"iso\",\n \"implant_md5\": + \"dcdd9e75300f8b680958cc3afd16b367\",\n \"mtime\": + 1726112082,\n \"path\": \"SAP/s390x/iso/Fedora-eln-20240912.n.0-SAP-s390x-boot.iso\",\n + \ \"size\": 505544704,\n \"subvariant\": + \"SAP\",\n \"type\": \"boot\",\n \"volume_id\": + \"Fedora-eln-SAP-s390x\"\n }\n ],\n \"x86_64\": + [\n {\n \"arch\": \"x86_64\",\n + \ \"bootable\": true,\n \"checksums\": + {\n \"md5\": \"b8977070ef5b9254c39acde3c82df205\",\n + \ \"sha1\": \"7d390e73f85f4b2cad72952f066c06268fa7546e\",\n + \ \"sha256\": \"69c3568f92666bfebe1fc365a71c2e1c1b7471099c7e3ef159a71ab35f4b766c\"\n + \ },\n \"disc_count\": 1,\n \"disc_number\": + 1,\n \"format\": \"iso\",\n \"implant_md5\": + \"18de2e66f95077cf3648ed094e1884a7\",\n \"mtime\": + 1726112143,\n \"path\": \"SAP/x86_64/iso/Fedora-eln-20240912.n.0-SAP-x86_64-boot.iso\",\n + \ \"size\": 844109824,\n \"subvariant\": + \"SAP\",\n \"type\": \"boot\",\n \"volume_id\": + \"Fedora-eln-SAP-x86_64\"\n }\n ]\n },\n + \ \"SAPHANA\": {\n \"ppc64le\": [\n {\n + \ \"arch\": \"ppc64le\",\n \"bootable\": + true,\n \"checksums\": {\n \"md5\": + \"f502331eeae9aa7bdf92f8b4a2a5f096\",\n \"sha1\": + \"3bdbcf2de297ac06d7caf7cca1e3ea72bc12429a\",\n \"sha256\": + \"490e14acf5483bfec6b1e0d156f085c38f10b5c5dcb884f79b70b29bcf717363\"\n },\n + \ \"disc_count\": 1,\n \"disc_number\": + 1,\n \"format\": \"iso\",\n \"implant_md5\": + \"51d25f2b8922b17bb56973386b0d4fd1\",\n \"mtime\": + 1726111294,\n \"path\": \"SAPHANA/ppc64le/iso/Fedora-eln-20240912.n.0-SAPHANA-ppc64le-boot.iso\",\n + \ \"size\": 815792128,\n \"subvariant\": + \"SAPHANA\",\n \"type\": \"boot\",\n \"volume_id\": + \"Fedora-eln-SAPHANA-ppc64le\"\n }\n ],\n + \ \"x86_64\": [\n {\n \"arch\": + \"x86_64\",\n \"bootable\": true,\n \"checksums\": + {\n \"md5\": \"3c6dfd3dcb9902148e8b4e7ce46c1a06\",\n + \ \"sha1\": \"fae553f7b0c6c75becb655b463fdacdf5eb9dbbd\",\n + \ \"sha256\": \"9f8169a631e7f11079e100d8d242871626f8c26ef4e64a817fed57304c26c322\"\n + \ },\n \"disc_count\": 1,\n \"disc_number\": + 1,\n \"format\": \"iso\",\n \"implant_md5\": + \"0c0fa43ef5ddd04d06f939c57f035476\",\n \"mtime\": + 1726112115,\n \"path\": \"SAPHANA/x86_64/iso/Fedora-eln-20240912.n.0-SAPHANA-x86_64-boot.iso\",\n + \ \"size\": 844115968,\n \"subvariant\": + \"SAPHANA\",\n \"type\": \"boot\",\n \"volume_id\": + \"Fedora-eln-SAPHANA-x86_64\"\n }\n ]\n + \ }\n }\n }\n}" + headers: + Connection: + - close + Date: + - Fri, 13 Sep 2024 18:43:20 GMT + Referrer-Policy: + - same-origin + Server: + - Apache + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload + - max-age=31536000; includeSubDomains; preload + X-Content-Type-Options: + - nosniff + X-Fedora-ProxyServer: + - proxy01.iad2.fedoraproject.org + X-Fedora-RequestID: + - ZuSHyAGt1qVhbjhb6QqMVwAAB00 + X-Frame-Options: + - SAMEORIGIN + X-Xss-Protection: + - 1; mode=block + accept-ranges: + - bytes + apptime: + - D=2851 + content-length: + - '51042' + content-type: + - application/json + last-modified: + - Thu, 12 Sep 2024 04:04:33 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + - max-age=31536000; includeSubDomains; preload + x-fedora-appserver: + - kojipkgs01.iad2.fedoraproject.org + status: + code: 200 + message: OK +version: 1 diff --git a/fedora-image-uploader/tests/fixtures/cassettes/test_gallery_name[compose4].yaml b/fedora-image-uploader/tests/fixtures/cassettes/test_gallery_name[compose4].yaml new file mode 100644 index 0000000..72524fb --- /dev/null +++ b/fedora-image-uploader/tests/fixtures/cassettes/test_gallery_name[compose4].yaml @@ -0,0 +1,1251 @@ +interactions: +- request: + body: null + headers: + Connection: + - close + Host: + - kojipkgs.fedoraproject.org + User-Agent: + - Python-urllib/3.12 + method: GET + uri: https://kojipkgs.fedoraproject.org/compose/eln/Fedora-eln-20240912.n.0/compose + response: + body: + string: ' + + + + 301 Moved Permanently + + + +

Moved Permanently

+ +

The document has moved here.

+ + + + ' + headers: + AppTime: + - D=3001 + Connection: + - close + Date: + - Fri, 13 Sep 2024 16:26:29 GMT + Referrer-Policy: + - same-origin + Server: + - Apache + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload + - max-age=31536000; includeSubDomains; preload + X-Content-Type-Options: + - nosniff + X-Fedora-ProxyServer: + - proxy10.iad2.fedoraproject.org + X-Fedora-RequestID: + - ZuRntckvYySukl-3afFcCgAAA4o + X-Frame-Options: + - SAMEORIGIN + X-Xss-Protection: + - 1; mode=block + content-length: + - '287' + content-type: + - text/html; charset=iso-8859-1 + location: + - https://kojipkgs.fedoraproject.org/compose/eln/Fedora-eln-20240912.n.0/compose/ + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + - max-age=31536000; includeSubDomains; preload + status: + code: 301 + message: Moved Permanently +- request: + body: null + headers: + Connection: + - close + Host: + - kojipkgs.fedoraproject.org + User-Agent: + - Python-urllib/3.12 + method: GET + uri: https://kojipkgs.fedoraproject.org/compose/eln/Fedora-eln-20240912.n.0/compose/ + response: + body: + string: "\n\n + \n Index of /compose/eln/Fedora-eln-20240912.n.0/compose\n + \n \n

Index of /compose/eln/Fedora-eln-20240912.n.0/compose

\n
\"Icon Name                                  Last modified      Size  Description
\"[PARENTDIR]\" + Parent Directory - + \ \n\"[DIR]\" AppStream/ + \ 2024-09-12 03:08 - \n\"[DIR]\" BaseOS/ 2024-09-12 + 03:07 - \n\"[DIR]\" CRB/ + \ 2024-09-12 03:08 - \n\"[DIR]\" Extras/ 2024-09-12 + 03:08 - \n\"[DIR]\" HighAvailability/ + \ 2024-09-12 03:09 - \n\"[DIR]\" NFV/ 2024-09-12 + 03:08 - \n\"[DIR]\" RT/ + \ 2024-09-12 03:08 - \n\"[DIR]\" ResilientStorage/ 2024-09-12 + 03:08 - \n\"[DIR]\" SAP/ + \ 2024-09-12 03:09 - \n\"[DIR]\" SAPHANA/ 2024-09-12 + 03:09 - \n\"[DIR]\" metadata/ + \ 2024-09-12 04:04 - \n
\n\n" + headers: + Connection: + - close + Date: + - Fri, 13 Sep 2024 16:26:29 GMT + Referrer-Policy: + - same-origin + Server: + - Apache + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload + - max-age=31536000; includeSubDomains; preload + X-Content-Type-Options: + - nosniff + X-Fedora-ProxyServer: + - proxy01.iad2.fedoraproject.org + X-Fedora-RequestID: + - ZuRnteNgvhPbBMEEnl4n0gAAApU + X-Frame-Options: + - SAMEORIGIN + X-Xss-Protection: + - 1; mode=block + apptime: + - D=61308 + content-length: + - '2036' + content-type: + - text/html;charset=ISO-8859-1 + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + - max-age=31536000; includeSubDomains; preload + x-fedora-appserver: + - kojipkgs01.iad2.fedoraproject.org + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - kojipkgs.fedoraproject.org + User-Agent: + - Python-urllib/3.12 + method: GET + uri: https://kojipkgs.fedoraproject.org/compose/eln/Fedora-eln-20240912.n.0/STATUS + response: + body: + string: 'FINISHED + + ' + headers: + Connection: + - close + Date: + - Fri, 13 Sep 2024 16:26:29 GMT + Referrer-Policy: + - same-origin + Server: + - Apache + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload + - max-age=31536000; includeSubDomains; preload + X-Content-Type-Options: + - nosniff + X-Fedora-ProxyServer: + - proxy10.iad2.fedoraproject.org + X-Fedora-RequestID: + - ZuRntTPcEfULz9107YW-7gAAAQM + X-Frame-Options: + - SAMEORIGIN + X-Xss-Protection: + - 1; mode=block + accept-ranges: + - bytes + apptime: + - D=2244 + content-length: + - '9' + last-modified: + - Thu, 12 Sep 2024 04:04:36 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + - max-age=31536000; includeSubDomains; preload + x-fedora-appserver: + - kojipkgs02.iad2.fedoraproject.org + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - kojipkgs.fedoraproject.org + User-Agent: + - Python-urllib/3.12 + method: GET + uri: https://kojipkgs.fedoraproject.org/compose/eln/Fedora-eln-20240912.n.0/compose/metadata/composeinfo.json + response: + body: + string: "{\n \"header\": {\n \"type\": \"productmd.composeinfo\",\n + \ \"version\": \"1.2\"\n },\n \"payload\": {\n \"compose\": + {\n \"date\": \"20240912\",\n \"id\": \"Fedora-eln-20240912.n.0\",\n + \ \"respin\": 0,\n \"type\": \"nightly\"\n },\n + \ \"release\": {\n \"internal\": false,\n \"name\": + \"Fedora\",\n \"short\": \"Fedora\",\n \"type\": \"ga\",\n + \ \"version\": \"eln\"\n },\n \"variants\": {\n \"AppStream\": + {\n \"arches\": [\n \"aarch64\",\n \"ppc64le\",\n + \ \"s390x\",\n \"x86_64\"\n ],\n + \ \"id\": \"AppStream\",\n \"name\": \"AppStream\",\n + \ \"paths\": {\n \"debug_packages\": {\n + \ \"aarch64\": \"AppStream/aarch64/debug/tree/Packages\",\n + \ \"ppc64le\": \"AppStream/ppc64le/debug/tree/Packages\",\n + \ \"s390x\": \"AppStream/s390x/debug/tree/Packages\",\n + \ \"x86_64\": \"AppStream/x86_64/debug/tree/Packages\"\n + \ },\n \"debug_repository\": {\n \"aarch64\": + \"AppStream/aarch64/debug/tree\",\n \"ppc64le\": \"AppStream/ppc64le/debug/tree\",\n + \ \"s390x\": \"AppStream/s390x/debug/tree\",\n \"x86_64\": + \"AppStream/x86_64/debug/tree\"\n },\n \"debug_tree\": + {\n \"aarch64\": \"AppStream/aarch64/debug/tree\",\n + \ \"ppc64le\": \"AppStream/ppc64le/debug/tree\",\n \"s390x\": + \"AppStream/s390x/debug/tree\",\n \"x86_64\": \"AppStream/x86_64/debug/tree\"\n + \ },\n \"isos\": {\n \"aarch64\": + \"AppStream/aarch64/iso\",\n \"ppc64le\": \"AppStream/ppc64le/iso\",\n + \ \"s390x\": \"AppStream/s390x/iso\",\n \"x86_64\": + \"AppStream/x86_64/iso\"\n },\n \"os_tree\": + {\n \"aarch64\": \"AppStream/aarch64/os\",\n \"ppc64le\": + \"AppStream/ppc64le/os\",\n \"s390x\": \"AppStream/s390x/os\",\n + \ \"x86_64\": \"AppStream/x86_64/os\"\n },\n + \ \"packages\": {\n \"aarch64\": + \"AppStream/aarch64/os/Packages\",\n \"ppc64le\": \"AppStream/ppc64le/os/Packages\",\n + \ \"s390x\": \"AppStream/s390x/os/Packages\",\n \"x86_64\": + \"AppStream/x86_64/os/Packages\"\n },\n \"repository\": + {\n \"aarch64\": \"AppStream/aarch64/os\",\n \"ppc64le\": + \"AppStream/ppc64le/os\",\n \"s390x\": \"AppStream/s390x/os\",\n + \ \"x86_64\": \"AppStream/x86_64/os\"\n },\n + \ \"source_packages\": {\n \"aarch64\": + \"AppStream/source/tree/Packages\",\n \"ppc64le\": + \"AppStream/source/tree/Packages\",\n \"s390x\": \"AppStream/source/tree/Packages\",\n + \ \"x86_64\": \"AppStream/source/tree/Packages\"\n },\n + \ \"source_repository\": {\n \"aarch64\": + \"AppStream/source/tree\",\n \"ppc64le\": \"AppStream/source/tree\",\n + \ \"s390x\": \"AppStream/source/tree\",\n \"x86_64\": + \"AppStream/source/tree\"\n },\n \"source_tree\": + {\n \"aarch64\": \"AppStream/source/tree\",\n \"ppc64le\": + \"AppStream/source/tree\",\n \"s390x\": \"AppStream/source/tree\",\n + \ \"x86_64\": \"AppStream/source/tree\"\n }\n + \ },\n \"type\": \"variant\",\n \"uid\": + \"AppStream\"\n },\n \"BaseOS\": {\n \"arches\": + [\n \"aarch64\",\n \"ppc64le\",\n \"s390x\",\n + \ \"x86_64\"\n ],\n \"id\": + \"BaseOS\",\n \"name\": \"BaseOS\",\n \"paths\": + {\n \"debug_packages\": {\n \"aarch64\": + \"BaseOS/aarch64/debug/tree/Packages\",\n \"ppc64le\": + \"BaseOS/ppc64le/debug/tree/Packages\",\n \"s390x\": + \"BaseOS/s390x/debug/tree/Packages\",\n \"x86_64\": + \"BaseOS/x86_64/debug/tree/Packages\"\n },\n \"debug_repository\": + {\n \"aarch64\": \"BaseOS/aarch64/debug/tree\",\n \"ppc64le\": + \"BaseOS/ppc64le/debug/tree\",\n \"s390x\": \"BaseOS/s390x/debug/tree\",\n + \ \"x86_64\": \"BaseOS/x86_64/debug/tree\"\n },\n + \ \"debug_tree\": {\n \"aarch64\": + \"BaseOS/aarch64/debug/tree\",\n \"ppc64le\": \"BaseOS/ppc64le/debug/tree\",\n + \ \"s390x\": \"BaseOS/s390x/debug/tree\",\n \"x86_64\": + \"BaseOS/x86_64/debug/tree\"\n },\n \"images\": + {\n \"aarch64\": \"BaseOS/aarch64/images\",\n \"ppc64le\": + \"BaseOS/ppc64le/images\",\n \"s390x\": \"BaseOS/s390x/images\",\n + \ \"x86_64\": \"BaseOS/x86_64/images\"\n },\n + \ \"isos\": {\n \"aarch64\": \"BaseOS/aarch64/iso\",\n + \ \"ppc64le\": \"BaseOS/ppc64le/iso\",\n \"s390x\": + \"BaseOS/s390x/iso\",\n \"x86_64\": \"BaseOS/x86_64/iso\"\n + \ },\n \"os_tree\": {\n \"aarch64\": + \"BaseOS/aarch64/os\",\n \"ppc64le\": \"BaseOS/ppc64le/os\",\n + \ \"s390x\": \"BaseOS/s390x/os\",\n \"x86_64\": + \"BaseOS/x86_64/os\"\n },\n \"packages\": + {\n \"aarch64\": \"BaseOS/aarch64/os/Packages\",\n + \ \"ppc64le\": \"BaseOS/ppc64le/os/Packages\",\n \"s390x\": + \"BaseOS/s390x/os/Packages\",\n \"x86_64\": \"BaseOS/x86_64/os/Packages\"\n + \ },\n \"repository\": {\n \"aarch64\": + \"BaseOS/aarch64/os\",\n \"ppc64le\": \"BaseOS/ppc64le/os\",\n + \ \"s390x\": \"BaseOS/s390x/os\",\n \"x86_64\": + \"BaseOS/x86_64/os\"\n },\n \"source_isos\": + {\n \"aarch64\": \"BaseOS/source/iso\",\n \"ppc64le\": + \"BaseOS/source/iso\",\n \"s390x\": \"BaseOS/source/iso\",\n + \ \"x86_64\": \"BaseOS/source/iso\"\n },\n + \ \"source_packages\": {\n \"aarch64\": + \"BaseOS/source/tree/Packages\",\n \"ppc64le\": \"BaseOS/source/tree/Packages\",\n + \ \"s390x\": \"BaseOS/source/tree/Packages\",\n \"x86_64\": + \"BaseOS/source/tree/Packages\"\n },\n \"source_repository\": + {\n \"aarch64\": \"BaseOS/source/tree\",\n \"ppc64le\": + \"BaseOS/source/tree\",\n \"s390x\": \"BaseOS/source/tree\",\n + \ \"x86_64\": \"BaseOS/source/tree\"\n },\n + \ \"source_tree\": {\n \"aarch64\": + \"BaseOS/source/tree\",\n \"ppc64le\": \"BaseOS/source/tree\",\n + \ \"s390x\": \"BaseOS/source/tree\",\n \"x86_64\": + \"BaseOS/source/tree\"\n }\n },\n \"type\": + \"variant\",\n \"uid\": \"BaseOS\"\n },\n \"CRB\": + {\n \"arches\": [\n \"aarch64\",\n \"ppc64le\",\n + \ \"s390x\",\n \"x86_64\"\n ],\n + \ \"id\": \"CRB\",\n \"name\": \"CodeReady Builder\",\n + \ \"paths\": {\n \"debug_packages\": {\n + \ \"aarch64\": \"CRB/aarch64/debug/tree/Packages\",\n + \ \"ppc64le\": \"CRB/ppc64le/debug/tree/Packages\",\n + \ \"s390x\": \"CRB/s390x/debug/tree/Packages\",\n \"x86_64\": + \"CRB/x86_64/debug/tree/Packages\"\n },\n \"debug_repository\": + {\n \"aarch64\": \"CRB/aarch64/debug/tree\",\n \"ppc64le\": + \"CRB/ppc64le/debug/tree\",\n \"s390x\": \"CRB/s390x/debug/tree\",\n + \ \"x86_64\": \"CRB/x86_64/debug/tree\"\n },\n + \ \"debug_tree\": {\n \"aarch64\": + \"CRB/aarch64/debug/tree\",\n \"ppc64le\": \"CRB/ppc64le/debug/tree\",\n + \ \"s390x\": \"CRB/s390x/debug/tree\",\n \"x86_64\": + \"CRB/x86_64/debug/tree\"\n },\n \"isos\": + {\n \"aarch64\": \"CRB/aarch64/iso\",\n \"ppc64le\": + \"CRB/ppc64le/iso\",\n \"s390x\": \"CRB/s390x/iso\",\n + \ \"x86_64\": \"CRB/x86_64/iso\"\n },\n + \ \"os_tree\": {\n \"aarch64\": \"CRB/aarch64/os\",\n + \ \"ppc64le\": \"CRB/ppc64le/os\",\n \"s390x\": + \"CRB/s390x/os\",\n \"x86_64\": \"CRB/x86_64/os\"\n + \ },\n \"packages\": {\n \"aarch64\": + \"CRB/aarch64/os/Packages\",\n \"ppc64le\": \"CRB/ppc64le/os/Packages\",\n + \ \"s390x\": \"CRB/s390x/os/Packages\",\n \"x86_64\": + \"CRB/x86_64/os/Packages\"\n },\n \"repository\": + {\n \"aarch64\": \"CRB/aarch64/os\",\n \"ppc64le\": + \"CRB/ppc64le/os\",\n \"s390x\": \"CRB/s390x/os\",\n + \ \"x86_64\": \"CRB/x86_64/os\"\n },\n + \ \"source_packages\": {\n \"aarch64\": + \"CRB/source/tree/Packages\",\n \"ppc64le\": \"CRB/source/tree/Packages\",\n + \ \"s390x\": \"CRB/source/tree/Packages\",\n \"x86_64\": + \"CRB/source/tree/Packages\"\n },\n \"source_repository\": + {\n \"aarch64\": \"CRB/source/tree\",\n \"ppc64le\": + \"CRB/source/tree\",\n \"s390x\": \"CRB/source/tree\",\n + \ \"x86_64\": \"CRB/source/tree\"\n },\n + \ \"source_tree\": {\n \"aarch64\": + \"CRB/source/tree\",\n \"ppc64le\": \"CRB/source/tree\",\n + \ \"s390x\": \"CRB/source/tree\",\n \"x86_64\": + \"CRB/source/tree\"\n }\n },\n \"type\": + \"variant\",\n \"uid\": \"CRB\"\n },\n \"Extras\": + {\n \"arches\": [\n \"aarch64\",\n \"ppc64le\",\n + \ \"s390x\",\n \"x86_64\"\n ],\n + \ \"id\": \"Extras\",\n \"name\": \"Extras\",\n + \ \"paths\": {\n \"debug_packages\": {\n + \ \"aarch64\": \"Extras/aarch64/debug/tree/Packages\",\n + \ \"ppc64le\": \"Extras/ppc64le/debug/tree/Packages\",\n + \ \"s390x\": \"Extras/s390x/debug/tree/Packages\",\n + \ \"x86_64\": \"Extras/x86_64/debug/tree/Packages\"\n + \ },\n \"debug_repository\": {\n \"aarch64\": + \"Extras/aarch64/debug/tree\",\n \"ppc64le\": \"Extras/ppc64le/debug/tree\",\n + \ \"s390x\": \"Extras/s390x/debug/tree\",\n \"x86_64\": + \"Extras/x86_64/debug/tree\"\n },\n \"debug_tree\": + {\n \"aarch64\": \"Extras/aarch64/debug/tree\",\n \"ppc64le\": + \"Extras/ppc64le/debug/tree\",\n \"s390x\": \"Extras/s390x/debug/tree\",\n + \ \"x86_64\": \"Extras/x86_64/debug/tree\"\n },\n + \ \"isos\": {\n \"aarch64\": \"Extras/aarch64/iso\",\n + \ \"ppc64le\": \"Extras/ppc64le/iso\",\n \"s390x\": + \"Extras/s390x/iso\",\n \"x86_64\": \"Extras/x86_64/iso\"\n + \ },\n \"os_tree\": {\n \"aarch64\": + \"Extras/aarch64/os\",\n \"ppc64le\": \"Extras/ppc64le/os\",\n + \ \"s390x\": \"Extras/s390x/os\",\n \"x86_64\": + \"Extras/x86_64/os\"\n },\n \"packages\": + {\n \"aarch64\": \"Extras/aarch64/os/Packages\",\n + \ \"ppc64le\": \"Extras/ppc64le/os/Packages\",\n \"s390x\": + \"Extras/s390x/os/Packages\",\n \"x86_64\": \"Extras/x86_64/os/Packages\"\n + \ },\n \"repository\": {\n \"aarch64\": + \"Extras/aarch64/os\",\n \"ppc64le\": \"Extras/ppc64le/os\",\n + \ \"s390x\": \"Extras/s390x/os\",\n \"x86_64\": + \"Extras/x86_64/os\"\n },\n \"source_packages\": + {\n \"aarch64\": \"Extras/source/tree/Packages\",\n + \ \"ppc64le\": \"Extras/source/tree/Packages\",\n \"s390x\": + \"Extras/source/tree/Packages\",\n \"x86_64\": \"Extras/source/tree/Packages\"\n + \ },\n \"source_repository\": {\n \"aarch64\": + \"Extras/source/tree\",\n \"ppc64le\": \"Extras/source/tree\",\n + \ \"s390x\": \"Extras/source/tree\",\n \"x86_64\": + \"Extras/source/tree\"\n },\n \"source_tree\": + {\n \"aarch64\": \"Extras/source/tree\",\n \"ppc64le\": + \"Extras/source/tree\",\n \"s390x\": \"Extras/source/tree\",\n + \ \"x86_64\": \"Extras/source/tree\"\n }\n + \ },\n \"type\": \"variant\",\n \"uid\": + \"Extras\"\n },\n \"HighAvailability\": {\n \"arches\": + [\n \"aarch64\",\n \"ppc64le\",\n \"s390x\",\n + \ \"x86_64\"\n ],\n \"id\": + \"HighAvailability\",\n \"name\": \"High Availability\",\n + \ \"paths\": {\n \"debug_packages\": {\n + \ \"aarch64\": \"HighAvailability/aarch64/debug/tree/Packages\",\n + \ \"ppc64le\": \"HighAvailability/ppc64le/debug/tree/Packages\",\n + \ \"s390x\": \"HighAvailability/s390x/debug/tree/Packages\",\n + \ \"x86_64\": \"HighAvailability/x86_64/debug/tree/Packages\"\n + \ },\n \"debug_repository\": {\n \"aarch64\": + \"HighAvailability/aarch64/debug/tree\",\n \"ppc64le\": + \"HighAvailability/ppc64le/debug/tree\",\n \"s390x\": + \"HighAvailability/s390x/debug/tree\",\n \"x86_64\": + \"HighAvailability/x86_64/debug/tree\"\n },\n \"debug_tree\": + {\n \"aarch64\": \"HighAvailability/aarch64/debug/tree\",\n + \ \"ppc64le\": \"HighAvailability/ppc64le/debug/tree\",\n + \ \"s390x\": \"HighAvailability/s390x/debug/tree\",\n + \ \"x86_64\": \"HighAvailability/x86_64/debug/tree\"\n + \ },\n \"isos\": {\n \"aarch64\": + \"HighAvailability/aarch64/iso\",\n \"ppc64le\": \"HighAvailability/ppc64le/iso\",\n + \ \"s390x\": \"HighAvailability/s390x/iso\",\n \"x86_64\": + \"HighAvailability/x86_64/iso\"\n },\n \"os_tree\": + {\n \"aarch64\": \"HighAvailability/aarch64/os\",\n + \ \"ppc64le\": \"HighAvailability/ppc64le/os\",\n \"s390x\": + \"HighAvailability/s390x/os\",\n \"x86_64\": \"HighAvailability/x86_64/os\"\n + \ },\n \"packages\": {\n \"aarch64\": + \"HighAvailability/aarch64/os/Packages\",\n \"ppc64le\": + \"HighAvailability/ppc64le/os/Packages\",\n \"s390x\": + \"HighAvailability/s390x/os/Packages\",\n \"x86_64\": + \"HighAvailability/x86_64/os/Packages\"\n },\n \"repository\": + {\n \"aarch64\": \"HighAvailability/aarch64/os\",\n + \ \"ppc64le\": \"HighAvailability/ppc64le/os\",\n \"s390x\": + \"HighAvailability/s390x/os\",\n \"x86_64\": \"HighAvailability/x86_64/os\"\n + \ },\n \"source_packages\": {\n \"aarch64\": + \"HighAvailability/source/tree/Packages\",\n \"ppc64le\": + \"HighAvailability/source/tree/Packages\",\n \"s390x\": + \"HighAvailability/source/tree/Packages\",\n \"x86_64\": + \"HighAvailability/source/tree/Packages\"\n },\n \"source_repository\": + {\n \"aarch64\": \"HighAvailability/source/tree\",\n + \ \"ppc64le\": \"HighAvailability/source/tree\",\n \"s390x\": + \"HighAvailability/source/tree\",\n \"x86_64\": \"HighAvailability/source/tree\"\n + \ },\n \"source_tree\": {\n \"aarch64\": + \"HighAvailability/source/tree\",\n \"ppc64le\": \"HighAvailability/source/tree\",\n + \ \"s390x\": \"HighAvailability/source/tree\",\n \"x86_64\": + \"HighAvailability/source/tree\"\n }\n },\n + \ \"type\": \"variant\",\n \"uid\": \"HighAvailability\"\n + \ },\n \"NFV\": {\n \"arches\": [\n \"x86_64\"\n + \ ],\n \"id\": \"NFV\",\n \"name\": + \"NFV\",\n \"paths\": {\n \"debug_packages\": + {\n \"x86_64\": \"NFV/x86_64/debug/tree/Packages\"\n + \ },\n \"debug_repository\": {\n \"x86_64\": + \"NFV/x86_64/debug/tree\"\n },\n \"debug_tree\": + {\n \"x86_64\": \"NFV/x86_64/debug/tree\"\n },\n + \ \"isos\": {\n \"x86_64\": \"NFV/x86_64/iso\"\n + \ },\n \"os_tree\": {\n \"x86_64\": + \"NFV/x86_64/os\"\n },\n \"packages\": + {\n \"x86_64\": \"NFV/x86_64/os/Packages\"\n },\n + \ \"repository\": {\n \"x86_64\": + \"NFV/x86_64/os\"\n },\n \"source_packages\": + {\n \"x86_64\": \"NFV/source/tree/Packages\"\n },\n + \ \"source_repository\": {\n \"x86_64\": + \"NFV/source/tree\"\n },\n \"source_tree\": + {\n \"x86_64\": \"NFV/source/tree\"\n }\n + \ },\n \"type\": \"variant\",\n \"uid\": + \"NFV\"\n },\n \"RT\": {\n \"arches\": + [\n \"x86_64\"\n ],\n \"id\": + \"RT\",\n \"name\": \"RT\",\n \"paths\": {\n + \ \"debug_packages\": {\n \"x86_64\": + \"RT/x86_64/debug/tree/Packages\"\n },\n \"debug_repository\": + {\n \"x86_64\": \"RT/x86_64/debug/tree\"\n },\n + \ \"debug_tree\": {\n \"x86_64\": + \"RT/x86_64/debug/tree\"\n },\n \"isos\": + {\n \"x86_64\": \"RT/x86_64/iso\"\n },\n + \ \"os_tree\": {\n \"x86_64\": \"RT/x86_64/os\"\n + \ },\n \"packages\": {\n \"x86_64\": + \"RT/x86_64/os/Packages\"\n },\n \"repository\": + {\n \"x86_64\": \"RT/x86_64/os\"\n },\n + \ \"source_packages\": {\n \"x86_64\": + \"RT/source/tree/Packages\"\n },\n \"source_repository\": + {\n \"x86_64\": \"RT/source/tree\"\n },\n + \ \"source_tree\": {\n \"x86_64\": + \"RT/source/tree\"\n }\n },\n \"type\": + \"variant\",\n \"uid\": \"RT\"\n },\n \"ResilientStorage\": + {\n \"arches\": [\n \"ppc64le\",\n \"s390x\",\n + \ \"x86_64\"\n ],\n \"id\": + \"ResilientStorage\",\n \"name\": \"Resilient Storage\",\n + \ \"paths\": {\n \"debug_packages\": {\n + \ \"ppc64le\": \"ResilientStorage/ppc64le/debug/tree/Packages\",\n + \ \"s390x\": \"ResilientStorage/s390x/debug/tree/Packages\",\n + \ \"x86_64\": \"ResilientStorage/x86_64/debug/tree/Packages\"\n + \ },\n \"debug_repository\": {\n \"ppc64le\": + \"ResilientStorage/ppc64le/debug/tree\",\n \"s390x\": + \"ResilientStorage/s390x/debug/tree\",\n \"x86_64\": + \"ResilientStorage/x86_64/debug/tree\"\n },\n \"debug_tree\": + {\n \"ppc64le\": \"ResilientStorage/ppc64le/debug/tree\",\n + \ \"s390x\": \"ResilientStorage/s390x/debug/tree\",\n + \ \"x86_64\": \"ResilientStorage/x86_64/debug/tree\"\n + \ },\n \"isos\": {\n \"ppc64le\": + \"ResilientStorage/ppc64le/iso\",\n \"s390x\": \"ResilientStorage/s390x/iso\",\n + \ \"x86_64\": \"ResilientStorage/x86_64/iso\"\n },\n + \ \"os_tree\": {\n \"ppc64le\": \"ResilientStorage/ppc64le/os\",\n + \ \"s390x\": \"ResilientStorage/s390x/os\",\n \"x86_64\": + \"ResilientStorage/x86_64/os\"\n },\n \"packages\": + {\n \"ppc64le\": \"ResilientStorage/ppc64le/os/Packages\",\n + \ \"s390x\": \"ResilientStorage/s390x/os/Packages\",\n + \ \"x86_64\": \"ResilientStorage/x86_64/os/Packages\"\n + \ },\n \"repository\": {\n \"ppc64le\": + \"ResilientStorage/ppc64le/os\",\n \"s390x\": \"ResilientStorage/s390x/os\",\n + \ \"x86_64\": \"ResilientStorage/x86_64/os\"\n },\n + \ \"source_packages\": {\n \"ppc64le\": + \"ResilientStorage/source/tree/Packages\",\n \"s390x\": + \"ResilientStorage/source/tree/Packages\",\n \"x86_64\": + \"ResilientStorage/source/tree/Packages\"\n },\n \"source_repository\": + {\n \"ppc64le\": \"ResilientStorage/source/tree\",\n + \ \"s390x\": \"ResilientStorage/source/tree\",\n \"x86_64\": + \"ResilientStorage/source/tree\"\n },\n \"source_tree\": + {\n \"ppc64le\": \"ResilientStorage/source/tree\",\n + \ \"s390x\": \"ResilientStorage/source/tree\",\n \"x86_64\": + \"ResilientStorage/source/tree\"\n }\n },\n + \ \"type\": \"variant\",\n \"uid\": \"ResilientStorage\"\n + \ },\n \"SAP\": {\n \"arches\": [\n \"ppc64le\",\n + \ \"s390x\",\n \"x86_64\"\n ],\n + \ \"id\": \"SAP\",\n \"name\": \"SAP\",\n \"paths\": + {\n \"debug_packages\": {\n \"ppc64le\": + \"SAP/ppc64le/debug/tree/Packages\",\n \"s390x\": \"SAP/s390x/debug/tree/Packages\",\n + \ \"x86_64\": \"SAP/x86_64/debug/tree/Packages\"\n },\n + \ \"debug_repository\": {\n \"ppc64le\": + \"SAP/ppc64le/debug/tree\",\n \"s390x\": \"SAP/s390x/debug/tree\",\n + \ \"x86_64\": \"SAP/x86_64/debug/tree\"\n },\n + \ \"debug_tree\": {\n \"ppc64le\": + \"SAP/ppc64le/debug/tree\",\n \"s390x\": \"SAP/s390x/debug/tree\",\n + \ \"x86_64\": \"SAP/x86_64/debug/tree\"\n },\n + \ \"isos\": {\n \"ppc64le\": \"SAP/ppc64le/iso\",\n + \ \"s390x\": \"SAP/s390x/iso\",\n \"x86_64\": + \"SAP/x86_64/iso\"\n },\n \"os_tree\": + {\n \"ppc64le\": \"SAP/ppc64le/os\",\n \"s390x\": + \"SAP/s390x/os\",\n \"x86_64\": \"SAP/x86_64/os\"\n + \ },\n \"packages\": {\n \"ppc64le\": + \"SAP/ppc64le/os/Packages\",\n \"s390x\": \"SAP/s390x/os/Packages\",\n + \ \"x86_64\": \"SAP/x86_64/os/Packages\"\n },\n + \ \"repository\": {\n \"ppc64le\": + \"SAP/ppc64le/os\",\n \"s390x\": \"SAP/s390x/os\",\n + \ \"x86_64\": \"SAP/x86_64/os\"\n },\n + \ \"source_packages\": {\n \"ppc64le\": + \"SAP/source/tree/Packages\",\n \"s390x\": \"SAP/source/tree/Packages\",\n + \ \"x86_64\": \"SAP/source/tree/Packages\"\n },\n + \ \"source_repository\": {\n \"ppc64le\": + \"SAP/source/tree\",\n \"s390x\": \"SAP/source/tree\",\n + \ \"x86_64\": \"SAP/source/tree\"\n },\n + \ \"source_tree\": {\n \"ppc64le\": + \"SAP/source/tree\",\n \"s390x\": \"SAP/source/tree\",\n + \ \"x86_64\": \"SAP/source/tree\"\n }\n + \ },\n \"type\": \"variant\",\n \"uid\": + \"SAP\"\n },\n \"SAPHANA\": {\n \"arches\": + [\n \"ppc64le\",\n \"x86_64\"\n ],\n + \ \"id\": \"SAPHANA\",\n \"name\": \"SAP HANA\",\n + \ \"paths\": {\n \"debug_packages\": {\n + \ \"ppc64le\": \"SAPHANA/ppc64le/debug/tree/Packages\",\n + \ \"x86_64\": \"SAPHANA/x86_64/debug/tree/Packages\"\n + \ },\n \"debug_repository\": {\n \"ppc64le\": + \"SAPHANA/ppc64le/debug/tree\",\n \"x86_64\": \"SAPHANA/x86_64/debug/tree\"\n + \ },\n \"debug_tree\": {\n \"ppc64le\": + \"SAPHANA/ppc64le/debug/tree\",\n \"x86_64\": \"SAPHANA/x86_64/debug/tree\"\n + \ },\n \"isos\": {\n \"ppc64le\": + \"SAPHANA/ppc64le/iso\",\n \"x86_64\": \"SAPHANA/x86_64/iso\"\n + \ },\n \"os_tree\": {\n \"ppc64le\": + \"SAPHANA/ppc64le/os\",\n \"x86_64\": \"SAPHANA/x86_64/os\"\n + \ },\n \"packages\": {\n \"ppc64le\": + \"SAPHANA/ppc64le/os/Packages\",\n \"x86_64\": \"SAPHANA/x86_64/os/Packages\"\n + \ },\n \"repository\": {\n \"ppc64le\": + \"SAPHANA/ppc64le/os\",\n \"x86_64\": \"SAPHANA/x86_64/os\"\n + \ },\n \"source_packages\": {\n \"ppc64le\": + \"SAPHANA/source/tree/Packages\",\n \"x86_64\": \"SAPHANA/source/tree/Packages\"\n + \ },\n \"source_repository\": {\n \"ppc64le\": + \"SAPHANA/source/tree\",\n \"x86_64\": \"SAPHANA/source/tree\"\n + \ },\n \"source_tree\": {\n \"ppc64le\": + \"SAPHANA/source/tree\",\n \"x86_64\": \"SAPHANA/source/tree\"\n + \ }\n },\n \"type\": \"variant\",\n + \ \"uid\": \"SAPHANA\"\n }\n }\n }\n}" + headers: + Connection: + - close + Date: + - Fri, 13 Sep 2024 16:26:29 GMT + Referrer-Policy: + - same-origin + Server: + - Apache + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload + - max-age=31536000; includeSubDomains; preload + X-Content-Type-Options: + - nosniff + X-Fedora-ProxyServer: + - proxy01.iad2.fedoraproject.org + X-Fedora-RequestID: + - ZuRntWeShfaQOVBFfXYxAAAAAQo + X-Frame-Options: + - SAMEORIGIN + X-Xss-Protection: + - 1; mode=block + accept-ranges: + - bytes + apptime: + - D=2858 + content-length: + - '29176' + content-type: + - application/json + last-modified: + - Thu, 12 Sep 2024 04:04:33 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + - max-age=31536000; includeSubDomains; preload + x-fedora-appserver: + - kojipkgs01.iad2.fedoraproject.org + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - kojipkgs.fedoraproject.org + User-Agent: + - Python-urllib/3.12 + method: GET + uri: https://kojipkgs.fedoraproject.org/compose/eln/Fedora-eln-20240912.n.0/compose/metadata/images.json + response: + body: + string: "{\n \"header\": {\n \"type\": \"productmd.images\",\n \"version\": + \"1.2\"\n },\n \"payload\": {\n \"compose\": {\n \"date\": + \"20240912\",\n \"id\": \"Fedora-eln-20240912.n.0\",\n \"respin\": + 0,\n \"type\": \"nightly\"\n },\n \"images\": {\n + \ \"AppStream\": {\n \"aarch64\": [\n {\n + \ \"arch\": \"aarch64\",\n \"bootable\": + true,\n \"checksums\": {\n \"md5\": + \"168981c8c077a40081fc0322d4828a2c\",\n \"sha1\": + \"87840fb3734bf521a980cece0ba34cfc744674b0\",\n \"sha256\": + \"0ad3030a8edb963aa86010df646d1f7a7fbda409927002174a798a115d56e48d\"\n },\n + \ \"disc_count\": 1,\n \"disc_number\": + 1,\n \"format\": \"iso\",\n \"implant_md5\": + \"7e5f8cf9dbf0517798b2ca69753a8807\",\n \"mtime\": + 1726110734,\n \"path\": \"AppStream/aarch64/iso/Fedora-eln-20240912.n.0-AppStream-aarch64-boot.iso\",\n + \ \"size\": 817391616,\n \"subvariant\": + \"AppStream\",\n \"type\": \"boot\",\n \"volume_id\": + \"Fedora-eln-AppStream-aarch64\"\n }\n ],\n + \ \"ppc64le\": [\n {\n \"arch\": + \"ppc64le\",\n \"bootable\": true,\n \"checksums\": + {\n \"md5\": \"33d81bd97012683a61c21968aa9dbff0\",\n + \ \"sha1\": \"278ae054a993692a150b1d46b8c4072adf6451b3\",\n + \ \"sha256\": \"a833f4b504b23d4711366d57ac91baf735834accc7343c0936f47e3368419309\"\n + \ },\n \"disc_count\": 1,\n \"disc_number\": + 1,\n \"format\": \"iso\",\n \"implant_md5\": + \"c140119b175d8c32b92fba3a165f822b\",\n \"mtime\": + 1726111113,\n \"path\": \"AppStream/ppc64le/iso/Fedora-eln-20240912.n.0-AppStream-ppc64le-boot.iso\",\n + \ \"size\": 815792128,\n \"subvariant\": + \"AppStream\",\n \"type\": \"boot\",\n \"volume_id\": + \"Fedora-eln-AppStream-ppc64le\"\n }\n ],\n + \ \"s390x\": [\n {\n \"arch\": + \"s390x\",\n \"bootable\": true,\n \"checksums\": + {\n \"md5\": \"cad4596ea26ea4ef365313e8e3d088fe\",\n + \ \"sha1\": \"2e6de335b6cffbf1158645bf7aad42e7a9154e8e\",\n + \ \"sha256\": \"94a7c1142746c5a22cf1e0b0ade94514fec47673606874efa36d9f76b118c337\"\n + \ },\n \"disc_count\": 1,\n \"disc_number\": + 1,\n \"format\": \"iso\",\n \"implant_md5\": + \"d493343e7a687dc32c61a5d2c530e5c3\",\n \"mtime\": + 1726110884,\n \"path\": \"AppStream/s390x/iso/Fedora-eln-20240912.n.0-AppStream-s390x-boot.iso\",\n + \ \"size\": 505524224,\n \"subvariant\": + \"AppStream\",\n \"type\": \"boot\",\n \"volume_id\": + \"Fedora-eln-AppStream-s390x\"\n }\n ],\n + \ \"x86_64\": [\n {\n \"arch\": + \"x86_64\",\n \"bootable\": true,\n \"checksums\": + {\n \"md5\": \"7607a712bb7e07fdae2036847e7a0a56\",\n + \ \"sha1\": \"9d4ca4ba688c468ce7a9b1d333e51713567466f7\",\n + \ \"sha256\": \"e8a02ade977293330f00b86f39bf17ba97b66f9549bff4c4a895497b06e284b1\"\n + \ },\n \"disc_count\": 1,\n \"disc_number\": + 1,\n \"format\": \"iso\",\n \"implant_md5\": + \"1e6fb0a78e27290bb468eb5488d77fba\",\n \"mtime\": + 1726111336,\n \"path\": \"AppStream/x86_64/iso/Fedora-eln-20240912.n.0-AppStream-x86_64-boot.iso\",\n + \ \"size\": 844115968,\n \"subvariant\": + \"AppStream\",\n \"type\": \"boot\",\n \"volume_id\": + \"Fedora-eln-AppStream-x86_64\"\n }\n ]\n + \ },\n \"BaseOS\": {\n \"aarch64\": [\n + \ {\n \"arch\": \"aarch64\",\n \"bootable\": + false,\n \"checksums\": {\n \"md5\": + \"866843bc3992b60df18d91e3d23b73f5\",\n \"sha1\": + \"db4a2646acbe84ba81ddfa698b4b0d63665d9e6a\",\n \"sha256\": + \"1b186e1b6b1464db96f17f8f9ba27ce037530c0d2c76178b673252c296d41d54\"\n },\n + \ \"disc_count\": 1,\n \"disc_number\": + 1,\n \"format\": \"raw.xz\",\n \"implant_md5\": + null,\n \"mtime\": 1726113221,\n \"path\": + \"BaseOS/aarch64/images/Fedora-ELN-Cloud-Base-AmazonEC2-11-20240912.n.0.aarch64.raw.xz\",\n + \ \"size\": 230681976,\n \"subvariant\": + \"BaseOS\",\n \"type\": \"raw-xz\",\n \"volume_id\": + null\n },\n {\n \"arch\": + \"aarch64\",\n \"bootable\": false,\n \"checksums\": + {\n \"md5\": \"fe267630947cf539e2859be5b89348b5\",\n + \ \"sha1\": \"97524f6247f6f41c8ccde65969ccd90d58e473d9\",\n + \ \"sha256\": \"ff0bd3f429d908ffcacc20240bee38725b83f46ac0476ec373abd673999f8bfb\"\n + \ },\n \"disc_count\": 1,\n \"disc_number\": + 1,\n \"format\": \"vhd.xz\",\n \"implant_md5\": + null,\n \"mtime\": 1726113504,\n \"path\": + \"BaseOS/aarch64/images/Fedora-ELN-Cloud-Base-Azure-11-20240912.n.0.aarch64.vhdfixed.xz\",\n + \ \"size\": 265736772,\n \"subvariant\": + \"BaseOS\",\n \"type\": \"vhd-compressed\",\n \"volume_id\": + null\n },\n {\n \"arch\": + \"aarch64\",\n \"bootable\": false,\n \"checksums\": + {\n \"md5\": \"8e06f586a3e331f4a5dacb329aa14304\",\n + \ \"sha1\": \"da8c6a603d1b2bf6a4386d74de5979608184e1f1\",\n + \ \"sha256\": \"5e8374cac65ae4a8c8441ef520928320a97fd9f678de59b4d24c8c9d3b3f09d9\"\n + \ },\n \"disc_count\": 1,\n \"disc_number\": + 1,\n \"format\": \"tar.gz\",\n \"implant_md5\": + null,\n \"mtime\": 1726113357,\n \"path\": + \"BaseOS/aarch64/images/Fedora-ELN-Cloud-Base-GCE-11-20240912.n.0.aarch64.tar.gz\",\n + \ \"size\": 273706130,\n \"subvariant\": + \"BaseOS\",\n \"type\": \"docker\",\n \"volume_id\": + null\n },\n {\n \"arch\": + \"aarch64\",\n \"bootable\": false,\n \"checksums\": + {\n \"md5\": \"e327211dc042c26f5a392e427801ac59\",\n + \ \"sha1\": \"26712536cef032fa7269a1c45fc41f9e946ad61c\",\n + \ \"sha256\": \"de2a7e0ee42cbb43227b90598ac3667b00b4c0e821f7a19b5615aa306c8d2bc5\"\n + \ },\n \"disc_count\": 1,\n \"disc_number\": + 1,\n \"format\": \"qcow2\",\n \"implant_md5\": + null,\n \"mtime\": 1726113359,\n \"path\": + \"BaseOS/aarch64/images/Fedora-ELN-Cloud-Base-Generic-11-20240912.n.0.aarch64.qcow2\",\n + \ \"size\": 297467904,\n \"subvariant\": + \"BaseOS\",\n \"type\": \"qcow2\",\n \"volume_id\": + null\n },\n {\n \"arch\": + \"aarch64\",\n \"bootable\": false,\n \"checksums\": + {\n \"md5\": \"991c3730dcf1958e65c9864ac3f4964a\",\n + \ \"sha1\": \"3d29b11ffac9ad3835b55059334fc730649a708f\",\n + \ \"sha256\": \"91757b8f2c915720eaecef604524e879e8f83262614deed3e6173eb06823e10e\"\n + \ },\n \"disc_count\": 1,\n \"disc_number\": + 1,\n \"format\": \"tar.xz\",\n \"implant_md5\": + null,\n \"mtime\": 1726113070,\n \"path\": + \"BaseOS/aarch64/images/Fedora-ELN-Container-Base-Generic-%s-20240912.n.0.aarch64.oci.tar.xz\",\n + \ \"size\": 56972368,\n \"subvariant\": + \"BaseOS\",\n \"type\": \"docker\",\n \"volume_id\": + null\n },\n {\n \"arch\": + \"aarch64\",\n \"bootable\": true,\n \"checksums\": + {\n \"md5\": \"bf9a33ddf855f521e3ac7e1af2821533\",\n + \ \"sha1\": \"f82b33c1e9046d4ea353e84b1be4a6e39fe413ff\",\n + \ \"sha256\": \"e7c3e2cf1d6ce81d40ea6ee5356d0e0e58cfd15ffaf90e3f92102a81c399d47d\"\n + \ },\n \"disc_count\": 1,\n \"disc_number\": + 1,\n \"format\": \"iso\",\n \"implant_md5\": + \"0b6db82c38fd1ff3cb0627d40c51b52a\",\n \"mtime\": + 1726110706,\n \"path\": \"BaseOS/aarch64/iso/Fedora-eln-20240912.n.0-aarch64-boot.iso\",\n + \ \"size\": 817391616,\n \"subvariant\": + \"BaseOS\",\n \"type\": \"boot\",\n \"volume_id\": + \"Fedora-eln-BaseOS-aarch64\"\n },\n {\n + \ \"additional_variants\": [\n \"AppStream\"\n + \ ],\n \"arch\": \"src\",\n \"bootable\": + false,\n \"checksums\": {\n \"md5\": + \"e39cfd666d720c553433a387e51e34d8\",\n \"sha1\": + \"be5f8b59d500571ae342d673acb59579ae481494\",\n \"sha256\": + \"07aa4ec415fab8a86477dfcd461d953c0dffe601b7cdee2eac4eda0da061f46a\"\n },\n + \ \"disc_count\": 1,\n \"disc_number\": + 1,\n \"format\": \"iso\",\n \"implant_md5\": + \"909c3d961755102aa5b9b67bad18d45a\",\n \"mtime\": + 1726113109,\n \"path\": \"BaseOS/source/iso/Fedora-eln-20240912.n.0-src-dvd1.iso\",\n + \ \"size\": 12592549888,\n \"subvariant\": + \"BaseOS\",\n \"type\": \"dvd\",\n \"unified\": + true,\n \"volume_id\": \"Fedora-eln-BaseOS-src\"\n + \ }\n ],\n \"ppc64le\": [\n + \ {\n \"arch\": \"ppc64le\",\n \"bootable\": + false,\n \"checksums\": {\n \"md5\": + \"1c5d8a2cc7c3319dde26fd2a2128319a\",\n \"sha1\": + \"6083277e5ec4c8cd0cd0828a469472896267571d\",\n \"sha256\": + \"65696d6a6ba55d520c23c05ef208c3d6ad9fdfba337b0ae5676710b4ea60594f\"\n },\n + \ \"disc_count\": 1,\n \"disc_number\": + 1,\n \"format\": \"qcow2\",\n \"implant_md5\": + null,\n \"mtime\": 1726113547,\n \"path\": + \"BaseOS/ppc64le/images/Fedora-ELN-Cloud-Base-Generic-11-20240912.n.0.ppc64le.qcow2\",\n + \ \"size\": 294256640,\n \"subvariant\": + \"BaseOS\",\n \"type\": \"qcow2\",\n \"volume_id\": + null\n },\n {\n \"arch\": + \"ppc64le\",\n \"bootable\": false,\n \"checksums\": + {\n \"md5\": \"d8e5018b3fd7e855e571be77dd9d2c85\",\n + \ \"sha1\": \"0a219465a5d146da6289ea7b653e73e6bc670368\",\n + \ \"sha256\": \"5f1dd8b98d88a02bcb9b0b2c59aaeb720381a46344a38edd2f60c119cb45a100\"\n + \ },\n \"disc_count\": 1,\n \"disc_number\": + 1,\n \"format\": \"tar.xz\",\n \"implant_md5\": + null,\n \"mtime\": 1726113210,\n \"path\": + \"BaseOS/ppc64le/images/Fedora-ELN-Container-Base-Generic-%s-20240912.n.0.ppc64le.oci.tar.xz\",\n + \ \"size\": 63125704,\n \"subvariant\": + \"BaseOS\",\n \"type\": \"docker\",\n \"volume_id\": + null\n },\n {\n \"arch\": + \"ppc64le\",\n \"bootable\": true,\n \"checksums\": + {\n \"md5\": \"d4bc98355a3156127546e661b6e57ead\",\n + \ \"sha1\": \"9382ce8ab74b7fd71043c034e96c935903e750b9\",\n + \ \"sha256\": \"8c075694c26ead9eda749096a2d0267f853c9fddab01577fb2fc51051cff36db\"\n + \ },\n \"disc_count\": 1,\n \"disc_number\": + 1,\n \"format\": \"iso\",\n \"implant_md5\": + \"19f0a1355f21257d79187f56bc3118b1\",\n \"mtime\": + 1726111600,\n \"path\": \"BaseOS/ppc64le/iso/Fedora-eln-20240912.n.0-ppc64le-boot.iso\",\n + \ \"size\": 815792128,\n \"subvariant\": + \"BaseOS\",\n \"type\": \"boot\",\n \"volume_id\": + \"Fedora-eln-BaseOS-ppc64le\"\n },\n {\n + \ \"additional_variants\": [\n \"AppStream\"\n + \ ],\n \"arch\": \"src\",\n \"bootable\": + false,\n \"checksums\": {\n \"md5\": + \"e39cfd666d720c553433a387e51e34d8\",\n \"sha1\": + \"be5f8b59d500571ae342d673acb59579ae481494\",\n \"sha256\": + \"07aa4ec415fab8a86477dfcd461d953c0dffe601b7cdee2eac4eda0da061f46a\"\n },\n + \ \"disc_count\": 1,\n \"disc_number\": + 1,\n \"format\": \"iso\",\n \"implant_md5\": + \"909c3d961755102aa5b9b67bad18d45a\",\n \"mtime\": + 1726113109,\n \"path\": \"BaseOS/source/iso/Fedora-eln-20240912.n.0-src-dvd1.iso\",\n + \ \"size\": 12592549888,\n \"subvariant\": + \"BaseOS\",\n \"type\": \"dvd\",\n \"unified\": + true,\n \"volume_id\": \"Fedora-eln-BaseOS-src\"\n + \ }\n ],\n \"s390x\": [\n + \ {\n \"arch\": \"s390x\",\n \"bootable\": + false,\n \"checksums\": {\n \"md5\": + \"107ee5e4bb1b5d651c763a65a4c11be5\",\n \"sha1\": + \"e78292301542c3f9e144679b3ea967afe36b5ef2\",\n \"sha256\": + \"cb36119606d6bfd38f969680f1ec323c9fe661e84d807a4f314cbf143c57e240\"\n },\n + \ \"disc_count\": 1,\n \"disc_number\": + 1,\n \"format\": \"qcow2\",\n \"implant_md5\": + null,\n \"mtime\": 1726113126,\n \"path\": + \"BaseOS/s390x/images/Fedora-ELN-Cloud-Base-Generic-11-20240912.n.0.s390x.qcow2\",\n + \ \"size\": 321505792,\n \"subvariant\": + \"BaseOS\",\n \"type\": \"qcow2\",\n \"volume_id\": + null\n },\n {\n \"arch\": + \"s390x\",\n \"bootable\": false,\n \"checksums\": + {\n \"md5\": \"625a5a6d34ea1103546faafa3b9c5234\",\n + \ \"sha1\": \"fb477995a4058b09b9c3dbad3534d4c0d9181e73\",\n + \ \"sha256\": \"15a20df57fd33ffd36ed3c24528dd9ea603c1338752de6cda577147829e0cf38\"\n + \ },\n \"disc_count\": 1,\n \"disc_number\": + 1,\n \"format\": \"tar.xz\",\n \"implant_md5\": + null,\n \"mtime\": 1726113070,\n \"path\": + \"BaseOS/s390x/images/Fedora-ELN-Container-Base-Generic-%s-20240912.n.0.s390x.oci.tar.xz\",\n + \ \"size\": 58988332,\n \"subvariant\": + \"BaseOS\",\n \"type\": \"docker\",\n \"volume_id\": + null\n },\n {\n \"arch\": + \"s390x\",\n \"bootable\": true,\n \"checksums\": + {\n \"md5\": \"c9150c298da2ceb34c156ddc9dde9acc\",\n + \ \"sha1\": \"4bf999122774594f8386878165b75ada516d5979\",\n + \ \"sha256\": \"6735a5ef07b1c847ee0ac9399d6e16e120bae0432a80a61fa93a3a0f4c78f6fc\"\n + \ },\n \"disc_count\": 1,\n \"disc_number\": + 1,\n \"format\": \"iso\",\n \"implant_md5\": + \"65989f048f9dbbd1e883ae46c4852bd5\",\n \"mtime\": + 1726110884,\n \"path\": \"BaseOS/s390x/iso/Fedora-eln-20240912.n.0-s390x-boot.iso\",\n + \ \"size\": 505544704,\n \"subvariant\": + \"BaseOS\",\n \"type\": \"boot\",\n \"volume_id\": + \"Fedora-eln-BaseOS-s390x\"\n },\n {\n + \ \"additional_variants\": [\n \"AppStream\"\n + \ ],\n \"arch\": \"src\",\n \"bootable\": + false,\n \"checksums\": {\n \"md5\": + \"e39cfd666d720c553433a387e51e34d8\",\n \"sha1\": + \"be5f8b59d500571ae342d673acb59579ae481494\",\n \"sha256\": + \"07aa4ec415fab8a86477dfcd461d953c0dffe601b7cdee2eac4eda0da061f46a\"\n },\n + \ \"disc_count\": 1,\n \"disc_number\": + 1,\n \"format\": \"iso\",\n \"implant_md5\": + \"909c3d961755102aa5b9b67bad18d45a\",\n \"mtime\": + 1726113109,\n \"path\": \"BaseOS/source/iso/Fedora-eln-20240912.n.0-src-dvd1.iso\",\n + \ \"size\": 12592549888,\n \"subvariant\": + \"BaseOS\",\n \"type\": \"dvd\",\n \"unified\": + true,\n \"volume_id\": \"Fedora-eln-BaseOS-src\"\n + \ }\n ],\n \"x86_64\": [\n + \ {\n \"additional_variants\": [\n + \ \"AppStream\"\n ],\n \"arch\": + \"src\",\n \"bootable\": false,\n \"checksums\": + {\n \"md5\": \"e39cfd666d720c553433a387e51e34d8\",\n + \ \"sha1\": \"be5f8b59d500571ae342d673acb59579ae481494\",\n + \ \"sha256\": \"07aa4ec415fab8a86477dfcd461d953c0dffe601b7cdee2eac4eda0da061f46a\"\n + \ },\n \"disc_count\": 1,\n \"disc_number\": + 1,\n \"format\": \"iso\",\n \"implant_md5\": + \"909c3d961755102aa5b9b67bad18d45a\",\n \"mtime\": + 1726113109,\n \"path\": \"BaseOS/source/iso/Fedora-eln-20240912.n.0-src-dvd1.iso\",\n + \ \"size\": 12592549888,\n \"subvariant\": + \"BaseOS\",\n \"type\": \"dvd\",\n \"unified\": + true,\n \"volume_id\": \"Fedora-eln-BaseOS-src\"\n + \ },\n {\n \"arch\": + \"x86_64\",\n \"bootable\": false,\n \"checksums\": + {\n \"md5\": \"98f96f10c32814f6870dc44ef9cd7720\",\n + \ \"sha1\": \"25295eb204a2f6505f234eb7ca2daa6a950b581c\",\n + \ \"sha256\": \"4f0d2f6ddab8606dbdf1ca802f7facf8ceb0f41713a93b15893e5db5fcf4af19\"\n + \ },\n \"disc_count\": 1,\n \"disc_number\": + 1,\n \"format\": \"raw.xz\",\n \"implant_md5\": + null,\n \"mtime\": 1726113352,\n \"path\": + \"BaseOS/x86_64/images/Fedora-ELN-Cloud-Base-AmazonEC2-11-20240912.n.0.x86_64.raw.xz\",\n + \ \"size\": 247497644,\n \"subvariant\": + \"BaseOS\",\n \"type\": \"raw-xz\",\n \"volume_id\": + null\n },\n {\n \"arch\": + \"x86_64\",\n \"bootable\": false,\n \"checksums\": + {\n \"md5\": \"4fa14c11118c274e03e2528f07df1c71\",\n + \ \"sha1\": \"80c42eff58b2eb7c9ffd55e5ac705d8da1343584\",\n + \ \"sha256\": \"4aaf89f7d4e0867a38fab4c9596d12a798e46f0d4eb2b23855b50c03d0bd9db6\"\n + \ },\n \"disc_count\": 1,\n \"disc_number\": + 1,\n \"format\": \"vhd.xz\",\n \"implant_md5\": + null,\n \"mtime\": 1726113359,\n \"path\": + \"BaseOS/x86_64/images/Fedora-ELN-Cloud-Base-Azure-11-20240912.n.0.x86_64.vhdfixed.xz\",\n + \ \"size\": 313150888,\n \"subvariant\": + \"BaseOS\",\n \"type\": \"vhd-compressed\",\n \"volume_id\": + null\n },\n {\n \"arch\": + \"x86_64\",\n \"bootable\": false,\n \"checksums\": + {\n \"md5\": \"49ba87b60f9a1ffb4848e73d8dacf23a\",\n + \ \"sha1\": \"f03797c7b9948bf2856aaa07fabd934b1e13c98b\",\n + \ \"sha256\": \"c7938dacc2a63db262e0fa58bbe18b4c981b60d1214aca0296b8dc05c0bd39da\"\n + \ },\n \"disc_count\": 1,\n \"disc_number\": + 1,\n \"format\": \"tar.gz\",\n \"implant_md5\": + null,\n \"mtime\": 1726113265,\n \"path\": + \"BaseOS/x86_64/images/Fedora-ELN-Cloud-Base-GCE-11-20240912.n.0.x86_64.tar.gz\",\n + \ \"size\": 353025193,\n \"subvariant\": + \"BaseOS\",\n \"type\": \"docker\",\n \"volume_id\": + null\n },\n {\n \"arch\": + \"x86_64\",\n \"bootable\": false,\n \"checksums\": + {\n \"md5\": \"a48af6cd13d2b6d473c4b377e60c7fb7\",\n + \ \"sha1\": \"5b62acb45b63e4ad54bc7172cd40b906efbd329a\",\n + \ \"sha256\": \"d25de17c239f8d3f1f3d1cf50ba9b26cd6b18c163dd75d768119dc01befd5fca\"\n + \ },\n \"disc_count\": 1,\n \"disc_number\": + 1,\n \"format\": \"qcow2\",\n \"implant_md5\": + null,\n \"mtime\": 1726113242,\n \"path\": + \"BaseOS/x86_64/images/Fedora-ELN-Cloud-Base-Generic-11-20240912.n.0.x86_64.qcow2\",\n + \ \"size\": 387252224,\n \"subvariant\": + \"BaseOS\",\n \"type\": \"qcow2\",\n \"volume_id\": + null\n },\n {\n \"arch\": + \"x86_64\",\n \"bootable\": false,\n \"checksums\": + {\n \"md5\": \"02d8376ad0b39ebb724e181fcc4588e0\",\n + \ \"sha1\": \"748484cfca76e99dcd7c4b6c5469be1662be492a\",\n + \ \"sha256\": \"9ad7de3dbe3480b487b9b19ced675104bea4952ec91e46502f98eb41f41f37c6\"\n + \ },\n \"disc_count\": 1,\n \"disc_number\": + 1,\n \"format\": \"tar.xz\",\n \"implant_md5\": + null,\n \"mtime\": 1726113070,\n \"path\": + \"BaseOS/x86_64/images/Fedora-ELN-Container-Base-Generic-%s-20240912.n.0.x86_64.oci.tar.xz\",\n + \ \"size\": 58755380,\n \"subvariant\": + \"BaseOS\",\n \"type\": \"docker\",\n \"volume_id\": + null\n },\n {\n \"arch\": + \"x86_64\",\n \"bootable\": true,\n \"checksums\": + {\n \"md5\": \"b76127112fef79c3d863d1c6dd655612\",\n + \ \"sha1\": \"1b503793236614bcc7f186c78acd2a3237875a1e\",\n + \ \"sha256\": \"8a3bf78a6e43b6f55a1b268e38cc79538b31ec3fd29f8b3fa9bb1a91297cd062\"\n + \ },\n \"disc_count\": 1,\n \"disc_number\": + 1,\n \"format\": \"iso\",\n \"implant_md5\": + \"8317d61000cf867868526112644585ed\",\n \"mtime\": + 1726111299,\n \"path\": \"BaseOS/x86_64/iso/Fedora-eln-20240912.n.0-x86_64-boot.iso\",\n + \ \"size\": 844109824,\n \"subvariant\": + \"BaseOS\",\n \"type\": \"boot\",\n \"volume_id\": + \"Fedora-eln-BaseOS-x86_64\"\n },\n {\n + \ \"additional_variants\": [\n \"AppStream\"\n + \ ],\n \"arch\": \"x86_64\",\n + \ \"bootable\": true,\n \"checksums\": + {\n \"md5\": \"841de0a95aea839208145134564ef954\",\n + \ \"sha1\": \"704d28476a1212dd0f41f9e4561d848ff51e8738\",\n + \ \"sha256\": \"f97baffd1bc5504392ccc7a31c5288e450c20df6dfb1cf05b476105044d111ea\"\n + \ },\n \"disc_count\": 1,\n \"disc_number\": + 1,\n \"format\": \"iso\",\n \"implant_md5\": + \"9b19eab034c677361247cb05852bb822\",\n \"mtime\": + 1726113190,\n \"path\": \"BaseOS/x86_64/iso/Fedora-eln-20240912.n.0-x86_64-dvd1.iso\",\n + \ \"size\": 6755581952,\n \"subvariant\": + \"BaseOS\",\n \"type\": \"dvd\",\n \"unified\": + true,\n \"volume_id\": \"Fedora-eln-BaseOS-x86_64\"\n + \ }\n ]\n },\n \"CRB\": + {\n \"aarch64\": [\n {\n \"arch\": + \"aarch64\",\n \"bootable\": true,\n \"checksums\": + {\n \"md5\": \"755d68015c1e8074994edfadba6a206a\",\n + \ \"sha1\": \"a611af375aa3f8fa1ed633e241b96c7ab6acb379\",\n + \ \"sha256\": \"22e19892b7b8677461c210b98fcdd7213a4b205984a68d8e6824c2ae1ac7663c\"\n + \ },\n \"disc_count\": 1,\n \"disc_number\": + 1,\n \"format\": \"iso\",\n \"implant_md5\": + \"a586115226050b22b03a2b7ae3ec0fbd\",\n \"mtime\": + 1726110681,\n \"path\": \"CRB/aarch64/iso/Fedora-eln-20240912.n.0-CRB-aarch64-boot.iso\",\n + \ \"size\": 817391616,\n \"subvariant\": + \"CRB\",\n \"type\": \"boot\",\n \"volume_id\": + \"Fedora-eln-CRB-aarch64\"\n }\n ],\n \"ppc64le\": + [\n {\n \"arch\": \"ppc64le\",\n + \ \"bootable\": true,\n \"checksums\": + {\n \"md5\": \"b96213f3f7fb425b6f97e49085bad185\",\n + \ \"sha1\": \"2f5132b65d50a371d40c3df9a264141efcd27311\",\n + \ \"sha256\": \"37c7ba32c721c45ae6f7482bda9dc86ad2322d1ad19e7899eeee52b8e4842188\"\n + \ },\n \"disc_count\": 1,\n \"disc_number\": + 1,\n \"format\": \"iso\",\n \"implant_md5\": + \"9fd18aced1ffc4eab7ea37b8d5be0f00\",\n \"mtime\": + 1726111295,\n \"path\": \"CRB/ppc64le/iso/Fedora-eln-20240912.n.0-CRB-ppc64le-boot.iso\",\n + \ \"size\": 815792128,\n \"subvariant\": + \"CRB\",\n \"type\": \"boot\",\n \"volume_id\": + \"Fedora-eln-CRB-ppc64le\"\n }\n ],\n \"s390x\": + [\n {\n \"arch\": \"s390x\",\n \"bootable\": + true,\n \"checksums\": {\n \"md5\": + \"e45cf9a0563b61811fa376fcce87fa7f\",\n \"sha1\": + \"3bcbefd2cdb7d93f46d2cc4f759a0aa5b1f025be\",\n \"sha256\": + \"576ea59913ec7fcd465922b141dc9ab7f1637100a29fb744ba91c0d5be524936\"\n },\n + \ \"disc_count\": 1,\n \"disc_number\": + 1,\n \"format\": \"iso\",\n \"implant_md5\": + \"dd376c3d4060cfe3965da0987426df2a\",\n \"mtime\": + 1726110882,\n \"path\": \"CRB/s390x/iso/Fedora-eln-20240912.n.0-CRB-s390x-boot.iso\",\n + \ \"size\": 505540608,\n \"subvariant\": + \"CRB\",\n \"type\": \"boot\",\n \"volume_id\": + \"Fedora-eln-CRB-s390x\"\n }\n ],\n \"x86_64\": + [\n {\n \"arch\": \"x86_64\",\n + \ \"bootable\": true,\n \"checksums\": + {\n \"md5\": \"2d8e2bd1998f21f87d6d6718ff582f4e\",\n + \ \"sha1\": \"4ae41e07394ff91997a2eb2d4f533f60a4c495b9\",\n + \ \"sha256\": \"03781b0b0de4bfd9421273ae90d9a60da44da68ac57de411a5918f9770c7802d\"\n + \ },\n \"disc_count\": 1,\n \"disc_number\": + 1,\n \"format\": \"iso\",\n \"implant_md5\": + \"8a4ccd078aa32e1a975c5f03e87d9407\",\n \"mtime\": + 1726111327,\n \"path\": \"CRB/x86_64/iso/Fedora-eln-20240912.n.0-CRB-x86_64-boot.iso\",\n + \ \"size\": 844109824,\n \"subvariant\": + \"CRB\",\n \"type\": \"boot\",\n \"volume_id\": + \"Fedora-eln-CRB-x86_64\"\n }\n ]\n },\n + \ \"Extras\": {\n \"aarch64\": [\n {\n + \ \"arch\": \"aarch64\",\n \"bootable\": + true,\n \"checksums\": {\n \"md5\": + \"471004fa6f3f7d60050d75ca74c16dc2\",\n \"sha1\": + \"fadd2ad06f3ac96dbbe4da57dd6f04e719dc9e40\",\n \"sha256\": + \"35c8d5b086fe1b109e85ea1f79a2112ad325d7280a683790f8bb9c73b25dc485\"\n },\n + \ \"disc_count\": 1,\n \"disc_number\": + 1,\n \"format\": \"iso\",\n \"implant_md5\": + \"82295a8c0d6b552adeaa20dcd611fb74\",\n \"mtime\": + 1726110733,\n \"path\": \"Extras/aarch64/iso/Fedora-eln-20240912.n.0-Extras-aarch64-boot.iso\",\n + \ \"size\": 817391616,\n \"subvariant\": + \"Extras\",\n \"type\": \"boot\",\n \"volume_id\": + \"Fedora-eln-Extras-aarch64\"\n }\n ],\n + \ \"ppc64le\": [\n {\n \"arch\": + \"ppc64le\",\n \"bootable\": true,\n \"checksums\": + {\n \"md5\": \"8445ff6c625bbf5c3272c6c5434facc2\",\n + \ \"sha1\": \"4c01255940c38df116713d7192227552d783e9b5\",\n + \ \"sha256\": \"d91cdd79a3baea735a06af46099fe0d5eda22f3808d4b9b6067bf4eaf0f48fa2\"\n + \ },\n \"disc_count\": 1,\n \"disc_number\": + 1,\n \"format\": \"iso\",\n \"implant_md5\": + \"52c9d8ffb11ed5eae9e0641d7f7d6fba\",\n \"mtime\": + 1726111058,\n \"path\": \"Extras/ppc64le/iso/Fedora-eln-20240912.n.0-Extras-ppc64le-boot.iso\",\n + \ \"size\": 815792128,\n \"subvariant\": + \"Extras\",\n \"type\": \"boot\",\n \"volume_id\": + \"Fedora-eln-Extras-ppc64le\"\n }\n ],\n + \ \"s390x\": [\n {\n \"arch\": + \"s390x\",\n \"bootable\": true,\n \"checksums\": + {\n \"md5\": \"1b7becf3b2f8686cfd47d5f72a2dced7\",\n + \ \"sha1\": \"5a0085abcbeb35aa0b24dce907971f217b3ee386\",\n + \ \"sha256\": \"1e88bfcbc31e50f225af0b765984369b8fb6ecb09aa75cec7e6806df2bc71351\"\n + \ },\n \"disc_count\": 1,\n \"disc_number\": + 1,\n \"format\": \"iso\",\n \"implant_md5\": + \"f51203f3138f1f0032c4a79a7f049b5e\",\n \"mtime\": + 1726111473,\n \"path\": \"Extras/s390x/iso/Fedora-eln-20240912.n.0-Extras-s390x-boot.iso\",\n + \ \"size\": 505544704,\n \"subvariant\": + \"Extras\",\n \"type\": \"boot\",\n \"volume_id\": + \"Fedora-eln-Extras-s390x\"\n }\n ],\n \"x86_64\": + [\n {\n \"arch\": \"x86_64\",\n + \ \"bootable\": true,\n \"checksums\": + {\n \"md5\": \"8370858dc68dc6871e8629c62f2b1fec\",\n + \ \"sha1\": \"14311095689a864d267c48ab47ab39aa4713bd98\",\n + \ \"sha256\": \"523a4ccecf7cc09184f6856803fa02d10460f1a7ee6a2bbf50fed283577879d0\"\n + \ },\n \"disc_count\": 1,\n \"disc_number\": + 1,\n \"format\": \"iso\",\n \"implant_md5\": + \"9299c30d5d000843fafc3cc2a476118e\",\n \"mtime\": + 1726111293,\n \"path\": \"Extras/x86_64/iso/Fedora-eln-20240912.n.0-Extras-x86_64-boot.iso\",\n + \ \"size\": 844109824,\n \"subvariant\": + \"Extras\",\n \"type\": \"boot\",\n \"volume_id\": + \"Fedora-eln-Extras-x86_64\"\n }\n ]\n },\n + \ \"HighAvailability\": {\n \"aarch64\": [\n {\n + \ \"arch\": \"aarch64\",\n \"bootable\": + true,\n \"checksums\": {\n \"md5\": + \"d382c0af4419ed43580474b068a9be63\",\n \"sha1\": + \"967297776c140f53474060634bf46eae906b0971\",\n \"sha256\": + \"4f2c6b93184df03bfe324cbfaff519c73cfd5066ec4a58ab90fe177628c73e19\"\n },\n + \ \"disc_count\": 1,\n \"disc_number\": + 1,\n \"format\": \"iso\",\n \"implant_md5\": + \"fbae2ee738641ba37ed4ad5751808ca4\",\n \"mtime\": + 1726110723,\n \"path\": \"HighAvailability/aarch64/iso/Fedora-eln-20240912.n.0-HighAvailability-aarch64-boot.iso\",\n + \ \"size\": 817391616,\n \"subvariant\": + \"HighAvailability\",\n \"type\": \"boot\",\n \"volume_id\": + \"Fedora-eln-aarch64\"\n }\n ],\n \"ppc64le\": + [\n {\n \"arch\": \"ppc64le\",\n + \ \"bootable\": true,\n \"checksums\": + {\n \"md5\": \"c40cdb61a960cf7b5b8e304e0f797a01\",\n + \ \"sha1\": \"3ca14a94f5001a5f7b3454cc6d76297c485f5b94\",\n + \ \"sha256\": \"cfaa709ca721567e01349f7a3c669c4c787a04c8b9beb5979a730ba45d8fc71a\"\n + \ },\n \"disc_count\": 1,\n \"disc_number\": + 1,\n \"format\": \"iso\",\n \"implant_md5\": + \"9f1aa0b3ce1e8a54efdcfa36a3a1a487\",\n \"mtime\": + 1726111863,\n \"path\": \"HighAvailability/ppc64le/iso/Fedora-eln-20240912.n.0-HighAvailability-ppc64le-boot.iso\",\n + \ \"size\": 815785984,\n \"subvariant\": + \"HighAvailability\",\n \"type\": \"boot\",\n \"volume_id\": + \"Fedora-eln-ppc64le\"\n }\n ],\n \"s390x\": + [\n {\n \"arch\": \"s390x\",\n \"bootable\": + true,\n \"checksums\": {\n \"md5\": + \"dc43a8eda9debf5f4c02486ba59d9ff8\",\n \"sha1\": + \"12e5323d60f90be272842851f503b4995483cdea\",\n \"sha256\": + \"532f463214df6e9b4f49e1860e0b472ef6b72542664b2eb4155f738ffba07621\"\n },\n + \ \"disc_count\": 1,\n \"disc_number\": + 1,\n \"format\": \"iso\",\n \"implant_md5\": + \"2823b7ca1dc9e84caaa4e1f0da55f7bb\",\n \"mtime\": + 1726111472,\n \"path\": \"HighAvailability/s390x/iso/Fedora-eln-20240912.n.0-HighAvailability-s390x-boot.iso\",\n + \ \"size\": 505536512,\n \"subvariant\": + \"HighAvailability\",\n \"type\": \"boot\",\n \"volume_id\": + \"Fedora-eln-s390x\"\n }\n ],\n \"x86_64\": + [\n {\n \"arch\": \"x86_64\",\n + \ \"bootable\": true,\n \"checksums\": + {\n \"md5\": \"57e54d7209bffbeae9f9249c783c4ebf\",\n + \ \"sha1\": \"6950f50af485c22175fae9c85b37135d090825ec\",\n + \ \"sha256\": \"4bd6b7e9a646119326c213b4a821916f85754a6fd858ed49cc13f5bc5c253145\"\n + \ },\n \"disc_count\": 1,\n \"disc_number\": + 1,\n \"format\": \"iso\",\n \"implant_md5\": + \"acaaf2fa3aab4a3502298ceb775487a2\",\n \"mtime\": + 1726111300,\n \"path\": \"HighAvailability/x86_64/iso/Fedora-eln-20240912.n.0-HighAvailability-x86_64-boot.iso\",\n + \ \"size\": 844111872,\n \"subvariant\": + \"HighAvailability\",\n \"type\": \"boot\",\n \"volume_id\": + \"Fedora-eln-x86_64\"\n }\n ]\n },\n + \ \"NFV\": {\n \"x86_64\": [\n {\n + \ \"arch\": \"x86_64\",\n \"bootable\": + true,\n \"checksums\": {\n \"md5\": + \"1bcfd3315b554b86226a6ac145fd7255\",\n \"sha1\": + \"373ce66c4b5fe53e8dcea8df600329f6ef50c559\",\n \"sha256\": + \"fba2e126db315cd7f75c91f17d1bbe5d716b9dd037de8ec2cc0784b957e11808\"\n },\n + \ \"disc_count\": 1,\n \"disc_number\": + 1,\n \"format\": \"iso\",\n \"implant_md5\": + \"f98e23a1c1a0b23c5bb56d42adb0013b\",\n \"mtime\": + 1726111348,\n \"path\": \"NFV/x86_64/iso/Fedora-eln-20240912.n.0-NFV-x86_64-boot.iso\",\n + \ \"size\": 844109824,\n \"subvariant\": + \"NFV\",\n \"type\": \"boot\",\n \"volume_id\": + \"Fedora-eln-NFV-x86_64\"\n }\n ]\n },\n + \ \"RT\": {\n \"x86_64\": [\n {\n + \ \"arch\": \"x86_64\",\n \"bootable\": + true,\n \"checksums\": {\n \"md5\": + \"b1950ef3c44bad66904489b359cd774d\",\n \"sha1\": + \"8e13906546d0c6307bdcd061ba26059f6a84210b\",\n \"sha256\": + \"af481b965e8d4a2f389170e325ea69961abed0a179ce28aed643d8ead8b4d5ce\"\n },\n + \ \"disc_count\": 1,\n \"disc_number\": + 1,\n \"format\": \"iso\",\n \"implant_md5\": + \"788e30d516f153162f7b645dced60e4c\",\n \"mtime\": + 1726112144,\n \"path\": \"RT/x86_64/iso/Fedora-eln-20240912.n.0-RT-x86_64-boot.iso\",\n + \ \"size\": 844109824,\n \"subvariant\": + \"RT\",\n \"type\": \"boot\",\n \"volume_id\": + \"Fedora-eln-RT-x86_64\"\n }\n ]\n },\n + \ \"ResilientStorage\": {\n \"ppc64le\": [\n {\n + \ \"arch\": \"ppc64le\",\n \"bootable\": + true,\n \"checksums\": {\n \"md5\": + \"a36894a0578ba90bec2edec637404f15\",\n \"sha1\": + \"f507ee1927d0bdc5817d1b66f83de7392446ef0f\",\n \"sha256\": + \"0bb0a9d3932e9af60705b55a641e641525a290ae52448725168d6ae4f4d35ae7\"\n },\n + \ \"disc_count\": 1,\n \"disc_number\": + 1,\n \"format\": \"iso\",\n \"implant_md5\": + \"bd1aeca12fe7688ae8726385ec22a3ad\",\n \"mtime\": + 1726111107,\n \"path\": \"ResilientStorage/ppc64le/iso/Fedora-eln-20240912.n.0-ResilientStorage-ppc64le-boot.iso\",\n + \ \"size\": 815783936,\n \"subvariant\": + \"ResilientStorage\",\n \"type\": \"boot\",\n \"volume_id\": + \"Fedora-eln-ppc64le\"\n }\n ],\n \"s390x\": + [\n {\n \"arch\": \"s390x\",\n \"bootable\": + true,\n \"checksums\": {\n \"md5\": + \"70134ae8ff38f6e6682d0bb632c44c34\",\n \"sha1\": + \"9f0636e551e7ce14b9357167b625c17937607dc1\",\n \"sha256\": + \"b6f00a81a5cc2209c29816faa16faf352504246bb205463c0f6bb55ef44ae0fe\"\n },\n + \ \"disc_count\": 1,\n \"disc_number\": + 1,\n \"format\": \"iso\",\n \"implant_md5\": + \"ed9203bc713e30c9ba23a252767fd942\",\n \"mtime\": + 1726111469,\n \"path\": \"ResilientStorage/s390x/iso/Fedora-eln-20240912.n.0-ResilientStorage-s390x-boot.iso\",\n + \ \"size\": 505536512,\n \"subvariant\": + \"ResilientStorage\",\n \"type\": \"boot\",\n \"volume_id\": + \"Fedora-eln-s390x\"\n }\n ],\n \"x86_64\": + [\n {\n \"arch\": \"x86_64\",\n + \ \"bootable\": true,\n \"checksums\": + {\n \"md5\": \"b21e3cf7e35c42e901574d5b170cdcb6\",\n + \ \"sha1\": \"6b25b86d31d44c9ca77945ec332db793b8f1d66a\",\n + \ \"sha256\": \"2ca3d010ae4e9003aafc30bfdb9dd1cb1178010c3a02356f9d7dd9f1cd53c987\"\n + \ },\n \"disc_count\": 1,\n \"disc_number\": + 1,\n \"format\": \"iso\",\n \"implant_md5\": + \"7c3a47b68e450406b83afa8022bd1d40\",\n \"mtime\": + 1726112115,\n \"path\": \"ResilientStorage/x86_64/iso/Fedora-eln-20240912.n.0-ResilientStorage-x86_64-boot.iso\",\n + \ \"size\": 844111872,\n \"subvariant\": + \"ResilientStorage\",\n \"type\": \"boot\",\n \"volume_id\": + \"Fedora-eln-x86_64\"\n }\n ]\n },\n + \ \"SAP\": {\n \"ppc64le\": [\n {\n + \ \"arch\": \"ppc64le\",\n \"bootable\": + true,\n \"checksums\": {\n \"md5\": + \"06578b93abc8a6a10035c3f080300cae\",\n \"sha1\": + \"1ce281eb94e13e14498ac7d9ee96ac4cd83c1f1f\",\n \"sha256\": + \"ae0ce1e2f48543a779f933116fccc02355d8e35a695ab763ec00ef0c732627d4\"\n },\n + \ \"disc_count\": 1,\n \"disc_number\": + 1,\n \"format\": \"iso\",\n \"implant_md5\": + \"ce16a4ab5a7933dee0a165fc754c5427\",\n \"mtime\": + 1726111601,\n \"path\": \"SAP/ppc64le/iso/Fedora-eln-20240912.n.0-SAP-ppc64le-boot.iso\",\n + \ \"size\": 815792128,\n \"subvariant\": + \"SAP\",\n \"type\": \"boot\",\n \"volume_id\": + \"Fedora-eln-SAP-ppc64le\"\n }\n ],\n \"s390x\": + [\n {\n \"arch\": \"s390x\",\n \"bootable\": + true,\n \"checksums\": {\n \"md5\": + \"b8ddc86251a0bd6e29f1e69563ff7876\",\n \"sha1\": + \"81dcd9167f5641fd21f23408da38c6f669da9c9f\",\n \"sha256\": + \"82675686973925144c0444c54650b1aad9a0f731f8187a4680b298fecec70fd0\"\n },\n + \ \"disc_count\": 1,\n \"disc_number\": + 1,\n \"format\": \"iso\",\n \"implant_md5\": + \"dcdd9e75300f8b680958cc3afd16b367\",\n \"mtime\": + 1726112082,\n \"path\": \"SAP/s390x/iso/Fedora-eln-20240912.n.0-SAP-s390x-boot.iso\",\n + \ \"size\": 505544704,\n \"subvariant\": + \"SAP\",\n \"type\": \"boot\",\n \"volume_id\": + \"Fedora-eln-SAP-s390x\"\n }\n ],\n \"x86_64\": + [\n {\n \"arch\": \"x86_64\",\n + \ \"bootable\": true,\n \"checksums\": + {\n \"md5\": \"b8977070ef5b9254c39acde3c82df205\",\n + \ \"sha1\": \"7d390e73f85f4b2cad72952f066c06268fa7546e\",\n + \ \"sha256\": \"69c3568f92666bfebe1fc365a71c2e1c1b7471099c7e3ef159a71ab35f4b766c\"\n + \ },\n \"disc_count\": 1,\n \"disc_number\": + 1,\n \"format\": \"iso\",\n \"implant_md5\": + \"18de2e66f95077cf3648ed094e1884a7\",\n \"mtime\": + 1726112143,\n \"path\": \"SAP/x86_64/iso/Fedora-eln-20240912.n.0-SAP-x86_64-boot.iso\",\n + \ \"size\": 844109824,\n \"subvariant\": + \"SAP\",\n \"type\": \"boot\",\n \"volume_id\": + \"Fedora-eln-SAP-x86_64\"\n }\n ]\n },\n + \ \"SAPHANA\": {\n \"ppc64le\": [\n {\n + \ \"arch\": \"ppc64le\",\n \"bootable\": + true,\n \"checksums\": {\n \"md5\": + \"f502331eeae9aa7bdf92f8b4a2a5f096\",\n \"sha1\": + \"3bdbcf2de297ac06d7caf7cca1e3ea72bc12429a\",\n \"sha256\": + \"490e14acf5483bfec6b1e0d156f085c38f10b5c5dcb884f79b70b29bcf717363\"\n },\n + \ \"disc_count\": 1,\n \"disc_number\": + 1,\n \"format\": \"iso\",\n \"implant_md5\": + \"51d25f2b8922b17bb56973386b0d4fd1\",\n \"mtime\": + 1726111294,\n \"path\": \"SAPHANA/ppc64le/iso/Fedora-eln-20240912.n.0-SAPHANA-ppc64le-boot.iso\",\n + \ \"size\": 815792128,\n \"subvariant\": + \"SAPHANA\",\n \"type\": \"boot\",\n \"volume_id\": + \"Fedora-eln-SAPHANA-ppc64le\"\n }\n ],\n + \ \"x86_64\": [\n {\n \"arch\": + \"x86_64\",\n \"bootable\": true,\n \"checksums\": + {\n \"md5\": \"3c6dfd3dcb9902148e8b4e7ce46c1a06\",\n + \ \"sha1\": \"fae553f7b0c6c75becb655b463fdacdf5eb9dbbd\",\n + \ \"sha256\": \"9f8169a631e7f11079e100d8d242871626f8c26ef4e64a817fed57304c26c322\"\n + \ },\n \"disc_count\": 1,\n \"disc_number\": + 1,\n \"format\": \"iso\",\n \"implant_md5\": + \"0c0fa43ef5ddd04d06f939c57f035476\",\n \"mtime\": + 1726112115,\n \"path\": \"SAPHANA/x86_64/iso/Fedora-eln-20240912.n.0-SAPHANA-x86_64-boot.iso\",\n + \ \"size\": 844115968,\n \"subvariant\": + \"SAPHANA\",\n \"type\": \"boot\",\n \"volume_id\": + \"Fedora-eln-SAPHANA-x86_64\"\n }\n ]\n + \ }\n }\n }\n}" + headers: + Connection: + - close + Date: + - Fri, 13 Sep 2024 16:26:29 GMT + Referrer-Policy: + - same-origin + Server: + - Apache + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload + - max-age=31536000; includeSubDomains; preload + X-Content-Type-Options: + - nosniff + X-Fedora-ProxyServer: + - proxy01.iad2.fedoraproject.org + X-Fedora-RequestID: + - ZuRntd1Q6V_wFvpENSyk2wAABJM + X-Frame-Options: + - SAMEORIGIN + X-Xss-Protection: + - 1; mode=block + accept-ranges: + - bytes + apptime: + - D=2444 + content-length: + - '51042' + content-type: + - application/json + last-modified: + - Thu, 12 Sep 2024 04:04:33 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + - max-age=31536000; includeSubDomains; preload + x-fedora-appserver: + - kojipkgs01.iad2.fedoraproject.org + status: + code: 200 + message: OK +version: 1 diff --git a/fedora-image-uploader/tests/fixtures/messages/eln_compose.json b/fedora-image-uploader/tests/fixtures/messages/eln_compose.json new file mode 100644 index 0000000..a135b6d --- /dev/null +++ b/fedora-image-uploader/tests/fixtures/messages/eln_compose.json @@ -0,0 +1,26 @@ +{ + "body": { + "compose_date": "20240912", + "compose_id": "Fedora-ELN-20240912.n.0", + "compose_label": null, + "compose_path": "/mnt/koji/compose/rawhide/Fedora-ELN-20240912.n.0", + "compose_respin": 0, + "compose_type": "nightly", + "location": "https://kojipkgs.fedoraproject.org/compose/eln/Fedora-ELN-20240912.n.0/compose", + "release_is_layered": false, + "release_name": "Fedora", + "release_short": "Fedora", + "release_type": "ga", + "release_version": "ELN", + "status": "FINISHED_INCOMPLETE" + }, + "headers": { + "fedora_messaging_schema": "base.message", + "fedora_messaging_severity": 20, + "priority": 0, + "sent-at": "2024-09-12T09:28:30+00:00" + }, + "id": "b3a00e86-2222-1111-0000-614074ac54f2", + "queue": null, + "topic": "org.fedoraproject.prod.pungi.compose.status.change" +} diff --git a/fedora-image-uploader/tests/test_handler.py b/fedora-image-uploader/tests/test_handler.py index 2aecf84..596f62e 100644 --- a/fedora-image-uploader/tests/test_handler.py +++ b/fedora-image-uploader/tests/test_handler.py @@ -51,6 +51,7 @@ def _mock_download_image(self, image: dict, dest_dir: str, decompress=False) -> ("messages/branched_compose.json", "Fedora-Cloud-41-Prerelease"), ("messages/stable_nightly_compose.json", "Fedora-Cloud-40"), ("messages/rc_compose.json", "Fedora-Cloud-40"), + ("messages/eln_compose.json", "Fedora-Cloud-ELN"), ], ) def test_gallery_name(fixtures_dir, azure_fm_conf, azure_env_vars, compose): @@ -337,10 +338,90 @@ def test_containers_registries_not_configured(mock_dl, mock_run, fixtures_dir): assert mock_run.call_count == 0 +@pytest.mark.parametrize( + "expected_messages", + [ + ( + "messages/stable_nightly_compose.json", + ( + AzurePublishedV1( + topic="fedora_image_uploader.published.v1.azure.nightly.Cloud_Base.aarch64", + body={ + "architecture": "aarch64", + "compose_id": "Fedora-Cloud-40-20240910.0", + "image_definition_name": "Fedora-Cloud-40-Arm64", + "image_version_name": "40.20240910.0", + "image_resource_id": ( + "/CommunityGalleries/Fedora-5e266ba4-2250-406d-adad-5d73860d958f/" + "Images/Fedora-Cloud-40-Arm64/Versions/40.20240910.0" + ), + "regions": [], + "subvariant": "Cloud_Base", + "release": 40, + }, + ), + AzurePublishedV1( + topic="fedora_image_uploader.published.v1.azure.nightly.Cloud_Base.x86_64", + body={ + "architecture": "x86_64", + "compose_id": "Fedora-Cloud-40-20240910.0", + "image_definition_name": "Fedora-Cloud-40-x64", + "image_version_name": "40.20240910.0", + "image_resource_id": ( + "/CommunityGalleries/Fedora-5e266ba4-2250-406d-adad-5d73860d958f/" + "Images/Fedora-Cloud-40-x64/Versions/40.20240910.0" + ), + "regions": [], + "subvariant": "Cloud_Base", + "release": 40, + }, + ), + ), + ), + ( + "messages/eln_compose.json", + ( + AzurePublishedV1( + topic="fedora_image_uploader.published.v1.azure.eln.BaseOS.aarch64", + body={ + "architecture": "aarch64", + "compose_id": "Fedora-ELN-20240912.n.0", + "image_definition_name": "Fedora-Cloud-ELN-Arm64", + "image_version_name": "11.20240912.0", + "image_resource_id": ( + "/CommunityGalleries/Fedora-5e266ba4-2250-406d-adad-5d73860d958f/" + "Images/Fedora-Cloud-ELN-Arm64/Versions/11.20240912.0" + ), + "regions": [], + "subvariant": "BaseOS", + "release": 11, + }, + ), + AzurePublishedV1( + topic="fedora_image_uploader.published.v1.azure.eln.BaseOS.x86_64", + body={ + "architecture": "x86_64", + "compose_id": "Fedora-ELN-20240912.n.0", + "image_definition_name": "Fedora-Cloud-ELN-x64", + "image_version_name": "11.20240912.0", + "image_resource_id": ( + "/CommunityGalleries/Fedora-5e266ba4-2250-406d-adad-5d73860d958f/" + "Images/Fedora-Cloud-ELN-x64/Versions/11.20240912.0" + ), + "regions": [], + "subvariant": "BaseOS", + "release": 11, + }, + ), + ), + ), + ], +) @pytest.mark.vcr -def test_azure_messages(fixtures_dir, azure_fm_conf, azure_env_vars): +def test_azure_messages(fixtures_dir, azure_fm_conf, azure_env_vars, expected_messages): """Assert messages are published when new Azure images are uploaded""" - with open(os.path.join(fixtures_dir, "messages/stable_nightly_compose.json")) as fd: + message_file, expected_messages = expected_messages + with open(os.path.join(fixtures_dir, message_file)) as fd: msg = message.load_message(json.load(fd)) consumer = Uploader() @@ -348,40 +429,6 @@ def test_azure_messages(fixtures_dir, azure_fm_conf, azure_env_vars): consumer.azure_blob_client = mock.Mock() consumer.azure_blob_client.get_blob_client.return_value.exists.return_value = True consumer.handlers = [consumer.handle_azure] - expected_messages = ( - AzurePublishedV1( - topic="fedora_image_uploader.published.v1.azure.nightly.Cloud_Base.aarch64", - body={ - "architecture": "aarch64", - "compose_id": "Fedora-Cloud-40-20240910.0", - "image_definition_name": "Fedora-Cloud-40-Arm64", - "image_version_name": "40.20240910.0", - "image_resource_id": ( - "/CommunityGalleries/Fedora-5e266ba4-2250-406d-adad-5d73860d958f/Images/" - "Fedora-Cloud-40-Arm64/Versions/40.20240910.0" - ), - "regions": [], - "subvariant": "Cloud_Base", - "release": 40, - }, - ), - AzurePublishedV1( - topic="fedora_image_uploader.published.v1.azure.nightly.Cloud_Base.x86_64", - body={ - "architecture": "x86_64", - "compose_id": "Fedora-Cloud-40-20240910.0", - "image_definition_name": "Fedora-Cloud-40-x64", - "image_version_name": "40.20240910.0", - "image_resource_id": ( - "/CommunityGalleries/Fedora-5e266ba4-2250-406d-adad-5d73860d958f/Images/" - "Fedora-Cloud-40-x64/Versions/40.20240910.0" - ), - "regions": [], - "subvariant": "Cloud_Base", - "release": 40, - }, - ), - ) with fm_testing.mock_sends(*expected_messages): consumer(msg) @@ -641,16 +688,17 @@ def test_azure_old_included_images(azure_env_vars, azure_fm_conf): assert consumer.azure_compute_client.gallery_image_versions.begin_delete.call_count == 0 -def test_azure_rawhide_images(azure_env_vars, azure_fm_conf): +@pytest.mark.parametrize("rolling_image", ["Rawhide", "ELN"]) +def test_azure_rolling_images(azure_env_vars, azure_fm_conf, rolling_image): """ - Test the image cleanup policy keeps only 7 rawhide images even if included in latest + Test the image cleanup policy keeps only 7 rawhide/eln images even if included in latest """ consumer = Uploader() consumer.azure_compute_client = mock.Mock() consumer.azure_blob_client = mock.Mock() image_definition = GalleryImage(location="eastus") - image_definition.name = "Fedora-Rawhide" + image_definition.name = f"Fedora-{rolling_image}" now = datetime.datetime.now(datetime.UTC) image_versions = [] for v in random.sample(range(14), 14): @@ -668,7 +716,8 @@ def test_azure_rawhide_images(azure_env_vars, azure_fm_conf): consumer.azure_cleanup_images() expected_calls = [ - mock.call("fedora-cloud", "Fedora", "Fedora-Rawhide", f"41.1.{v}") for v in range(7) + mock.call("fedora-cloud", "Fedora", f"Fedora-{rolling_image}", f"41.1.{v}") + for v in range(7) ] expected_calls.reverse() actual_calls = [ @@ -1073,11 +1122,7 @@ def test_aws_nacks_boto_exceptions(mock_sleep, mock_client, fixtures_dir): @mock.patch.dict(config.conf["consumer_config"], {"aws": {"base_region": "us-east-1"}}) def test_aws_filters(): """Test the cases where the AWS handler should decide not to handle.""" - ffrel = mock.MagicMock() - ffrel.relnum = 39 - ffrel.release = "40" - ffrel.label = "RC-1.2" - ffrel.milestone = "RC" + ffrel = mock.MagicMock(relnum=39, release="39", label="RC-1.2", milestone="RC") image = { "type": "notonewelike", "arch": "x86_64", @@ -1113,3 +1158,17 @@ def test_aws_filters(): image["path"] = "Cloud/x86_64/images/Fedora-Cloud-Base-AmazonEC2.x86_64.raw.xz" consumer.handle_aws(image, ffrel) assert consumer.aws_register_image.call_count == 2 + + # ELN + metadata = {"composeinfo": {"payload": {"compose": {"date": "20240912", "respin": "2"}}}} + ffrel = mock.MagicMock(relnum=11, release="eln", label="", milestone="", metadata=metadata) + image["path"] = ( + "BaseOS/x86_64/images/Fedora-ELN-Cloud-Base-AmazonEC2-11-20240912.n.0.x86_64.raw.xz" + ) + image["subvariant"] = "BaseOS" + consumer.handle_aws(image, ffrel) + assert consumer.aws_register_image.call_count == 3 + assert ( + consumer.aws_register_image.call_args_list[2][0][3] + == "Fedora-Cloud-Base-AmazonEC2.x86_64-ELN-20240912.2" + ) From 3bcb351c487d2423b782a975eb90fc7381527e3f Mon Sep 17 00:00:00 2001 From: Jeremy Cline Date: Sep 16 2024 14:42:34 +0000 Subject: [PATCH 3/3] Bump fedora-image-uploader-messages to v1.1.0 Update tests for AWS and add new required fields to tests --- diff --git a/fedora-image-uploader-messages/fedora_image_uploader_messages/__init__.py b/fedora-image-uploader-messages/fedora_image_uploader_messages/__init__.py index 61add0b..99a5ffd 100644 --- a/fedora-image-uploader-messages/fedora_image_uploader_messages/__init__.py +++ b/fedora-image-uploader-messages/fedora_image_uploader_messages/__init__.py @@ -1,4 +1,4 @@ -__version__ = "1.0.0" +__version__ = "1.1.0" from .publish import ( # noqa: F401 AwsPublishedV1, diff --git a/fedora-image-uploader-messages/fedora_image_uploader_messages/publish.py b/fedora-image-uploader-messages/fedora_image_uploader_messages/publish.py index 43bd948..2427158 100644 --- a/fedora-image-uploader-messages/fedora_image_uploader_messages/publish.py +++ b/fedora-image-uploader-messages/fedora_image_uploader_messages/publish.py @@ -75,8 +75,8 @@ class AwsPublishedV1(_PublishedV1): @property def summary(self): return ( - f"{self.app_name} published an AWS image from compose {self.body['compose_id']} as " - f"{self.body['image_name']}" + f"{self.app_name} published AWS images from compose {self.body['compose_id']} as " + f"{self.body['image_name']} in {len(self.body['regions'])} regions" ) def __str__(self): diff --git a/fedora-image-uploader-messages/tests/test_publish.py b/fedora-image-uploader-messages/tests/test_publish.py index 3bba419..6052452 100644 --- a/fedora-image-uploader-messages/tests/test_publish.py +++ b/fedora-image-uploader-messages/tests/test_publish.py @@ -7,7 +7,82 @@ import pytest from jsonschema import ValidationError -from fedora_image_uploader_messages import AzurePublishedV1, ContainerPublishedV1 +from fedora_image_uploader_messages import ( + AwsPublishedV1, + AzurePublishedV1, + ContainerPublishedV1, +) + + +def test_aws_schema(): + """ + Assert the message schema validates a message with the required fields. + """ + body = { + "architecture": "x86_64", + "compose_id": "Fedora-40-20240501.n.0", + "image_name": "Fedora-Cloud-AmazonEC2", + "regions": { + "us-east-2": "ami-123", + "us-west-1": "ami-321", + }, + "release": 40, + "subvariant": "Cloud_Base", + } + message = AwsPublishedV1(body=body) + message.validate() + + +def test_aws_missing_fields(): + """Assert an exception is actually raised on validation failure.""" + body = { + "architecture": "x86_64", + "compose_id": "Fedora-40-20240501.n.0", + "image_name": "Fedora-Cloud-AmazonEC2", + "regions": { + "us-east-2": "ami-123", + "us-west-1": "ami-321", + }, + "release": 40, + "subvariant": "Cloud_Base", + } + for key in body: + missing_body = body.copy() + del missing_body[key] + message = AwsPublishedV1(body=missing_body) + with pytest.raises(ValidationError): + message.validate() + + +def test_aws_display(): + """Assert the human-readable version is as expected.""" + body = { + "architecture": "x86_64", + "compose_id": "Fedora-40-20240501.n.0", + "image_name": "Fedora-Cloud-AmazonEC2", + "regions": { + "us-east-2": "ami-123", + "us-west-1": "ami-321", + }, + "release": 40, + "subvariant": "Cloud_Base", + } + message = AwsPublishedV1(body=body) + message.validate() + + assert message.summary == ( + "fedora-image-uploader published AWS images from compose Fedora-40-20240501.n.0" + " as Fedora-Cloud-AmazonEC2 in 2 regions" + ) + assert str(message) == ( + """A new image has been published to Amazon Web Services: + +\tArchitecture: x86_64 +\tCompose ID: Fedora-40-20240501.n.0 +\tImage Name: Fedora-Cloud-AmazonEC2 +\tRegions: us-east-2 as ami-123, us-west-1 as ami-321 +""" + ) def test_azure_schema(): @@ -24,10 +99,10 @@ def test_azure_schema(): "/Fedora-Cloud-40-x64/Versions/40.20240501.0" ), "regions": ["eastus", "eastus2", "centralus"], + "release": 40, + "subvariant": "Cloud_Base", } - message = AzurePublishedV1( - body=body, topic=".".join([AzurePublishedV1.topic, body["image_definition_name"]]) - ) + message = AzurePublishedV1(body=body) message.validate() @@ -43,6 +118,8 @@ def test_azure_missing_fields(): "/Fedora-Cloud-40-x64/Versions/40.20240501.0" ), "regions": ["eastus", "eastus2", "centralus"], + "release": 40, + "subvariant": "Cloud_Base", } for key in body: missing_body = body.copy() @@ -64,6 +141,8 @@ def test_azure_str(): "/Fedora-Cloud-40-x64/Versions/40.20240501.0" ), "regions": ["eastus", "eastus2", "centralus"], + "release": 40, + "subvariant": "Cloud_Base", } expected_summary = (