From da33bf35cb0c9a2eb63e149261d459bad2b9c2dd Mon Sep 17 00:00:00 2001 From: Jeremy Cline Date: Apr 16 2025 16:58:16 +0000 Subject: gcp: make image families arch-dependent It seems families should only have images of a single architecture in them, rather than being a container for multiple architectures of the same release. Swap the arch suffix from the image name to the image family. See also: https://pagure.io/cloud-sig/issue/438 --- diff --git a/fedora-image-uploader/fedora_image_uploader/gcp.py b/fedora-image-uploader/fedora_image_uploader/gcp.py index 21ab806..b6c6f9e 100644 --- a/fedora-image-uploader/fedora_image_uploader/gcp.py +++ b/fedora-image-uploader/fedora_image_uploader/gcp.py @@ -117,9 +117,10 @@ class Gcp: image_suffix, y_release, z_release = parse_release(ffrel) image_version = f"{ffrel.relnum}.{y_release}.{z_release}" type_ = "eln" if ffrel.release.lower() == "eln" else "cloud" - image_name = f"fedora-{type_}-{ffrel.relnum}-{y_release}-{z_release}-{image['arch']}" + image_name = f"fedora-{type_}-{ffrel.relnum}-{y_release}-{z_release}" image_name = image_name.lower().replace("_", "-") - family = f"fedora-cloud-{image_suffix.lower()}" + family = f"fedora-cloud-{image_suffix}-{image['arch']}" + family = family.lower().replace("_", "-") architecture = self.SUPPORTED_ARCHES[image["arch"]] eol = get_eol(ffrel) if eol: diff --git a/fedora-image-uploader/tests/test_gcp.py b/fedora-image-uploader/tests/test_gcp.py index 270cce7..b500dbb 100644 --- a/fedora-image-uploader/tests/test_gcp.py +++ b/fedora-image-uploader/tests/test_gcp.py @@ -75,18 +75,18 @@ def test_messages(fixtures_dir): msg = message.load_message(json.load(fd)) fake_images = [ mock.Mock( - family="fedora-cloud-40", - name="fedora-cloud-40-1-14-aarch64", + family="fedora-cloud-40-aarch64", + name="fedora-cloud-40-1-14", self_link="http://example.com/link", ), mock.Mock( - family="fedora-cloud-40", - name="fedora-cloud-40-1-14-x86-64", + family="fedora-cloud-40-x86-64", + name="fedora-cloud-40-1-14", self_link="http://example.com/link", ), ] - fake_images[0].name = "fedora-cloud-40-1-14-aarch64" - fake_images[1].name = "fedora-cloud-40-1-14-x86-64" + fake_images[0].name = "fedora-cloud-40-1-14" + fake_images[1].name = "fedora-cloud-40-1-14" consumer = Uploader() handler = consumer.handlers["gcp"] handler.upload_disk_image = mock.Mock() @@ -102,8 +102,8 @@ def test_messages(fixtures_dir): "compose_id": "Fedora-40-20240414.0", "release": 40, "subvariant": "Cloud_Base", - "family": "fedora-cloud-40", - "image_name": "fedora-cloud-40-1-14-aarch64", + "family": "fedora-cloud-40-aarch64", + "image_name": "fedora-cloud-40-1-14", "image_url": "http://example.com/link", "storage_locations": [ "us", @@ -117,8 +117,8 @@ def test_messages(fixtures_dir): "compose_id": "Fedora-40-20240414.0", "release": 40, "subvariant": "Cloud_Base", - "family": "fedora-cloud-40", - "image_name": "fedora-cloud-40-1-14-x86-64", + "family": "fedora-cloud-40-x86-64", + "image_name": "fedora-cloud-40-1-14", "image_url": "http://example.com/link", "storage_locations": [ "us", @@ -161,7 +161,7 @@ def test_import_image(fixtures_dir): project="fedora-cloud-devel", image_resource=compute_v1.Image( architecture="ARM64", - family="fedora-cloud-40", + family="fedora-cloud-40-aarch64", description="Fedora Cloud base image version 40.1.14", deprecated=compute_v1.DeprecationStatus(state="ACTIVE"), guest_os_features=[ @@ -182,7 +182,7 @@ def test_import_image(fixtures_dir): "end-of-life": "2025-05-13", "fedora-image-uploader-managed": "true", }, - name="fedora-cloud-40-1-14-aarch64", + name="fedora-cloud-40-1-14", raw_disk=compute_v1.RawDisk( source=handler.upload_disk_image.return_value.self_link ), @@ -200,7 +200,7 @@ def test_import_image(fixtures_dir): project="fedora-cloud-devel", image_resource=compute_v1.Image( architecture="X86_64", - family="fedora-cloud-40", + family="fedora-cloud-40-x86-64", description="Fedora Cloud base image version 40.1.14", deprecated=compute_v1.DeprecationStatus(state="ACTIVE"), guest_os_features=[ @@ -224,7 +224,7 @@ def test_import_image(fixtures_dir): "end-of-life": "2025-05-13", "fedora-image-uploader-managed": "true", }, - name="fedora-cloud-40-1-14-x86-64", + name="fedora-cloud-40-1-14", raw_disk=compute_v1.RawDisk( source=handler.upload_disk_image.return_value.self_link ), @@ -266,13 +266,13 @@ def test_promote_image_eln_rawhide(): handler.promote_image( compute_v1.Image( architecture="X86_64", - family="fedora-40", + family="fedora-40-x86-64", description="Fedora Cloud base image version", labels={ "fedora-release": "rawhide", "fedora-image-uploader-managed": "true", }, - name="fedora-40-1-14-x86-64", + name="fedora-40-1-14", raw_disk=compute_v1.RawDisk(source="http://example.com/link"), creation_timestamp="2024-10-01T00:00:00Z", ) @@ -283,13 +283,13 @@ def test_promote_image_eln_rawhide(): handler.promote_image( compute_v1.Image( architecture="X86_64", - family="fedora-40", + family="fedora-40-x86-64", description="Fedora Cloud base image version", labels={ "fedora-release": "eln", "fedora-image-uploader-managed": "true", }, - name="fedora-40-1-14-x86-64", + name="fedora-40-1-14", raw_disk=compute_v1.RawDisk(source="http://example.com/link"), creation_timestamp="2024-10-01T00:00:00Z", ) @@ -334,7 +334,7 @@ def test_needs_promotion(): handler.promote_image( compute_v1.Image( architecture="X86_64", - family="fedora-40", + family="fedora-40-x86-64", description="Fedora Cloud base image version", labels={ "fedora-release": "40", @@ -377,7 +377,7 @@ def test_no_promotion(): [ compute_v1.Image( architecture="X86_64", - family="fedora-40", + family="fedora-40-x86-64", description="Fedora Cloud base image version", labels={ "fedora-release": "40", @@ -395,7 +395,7 @@ def test_no_promotion(): handler.promote_image( compute_v1.Image( architecture="X86_64", - family="fedora-40", + family="fedora-40-x86-64", description="Fedora Cloud base image version", labels={ "fedora-release": "40", @@ -428,9 +428,9 @@ def test_cleanup_skips_unmanaged_images(): handler.images_client.list.return_value = [ compute_v1.Image( architecture="X86_64", - family="fedora-40", + family="fedora-40-aarch64", description="Fedora Cloud base image version", - name="fedora-40-1-14-aarch64", + name="fedora-40-1-14", raw_disk=compute_v1.RawDisk(source="http://example.com/link"), ) ] @@ -459,7 +459,7 @@ def test_cleanup_rawhide(): [ compute_v1.Image( architecture="X86_64", - family="fedora-40", + family="fedora-40-x86-64", description="Fedora Cloud base image version", labels={ "fedora-release": "rawhide", @@ -471,7 +471,7 @@ def test_cleanup_rawhide(): ), compute_v1.Image( architecture="X86_64", - family="fedora-40", + family="fedora-40-x86-64", description="Fedora Cloud base image version", labels={ "fedora-release": "rawhide", @@ -520,7 +520,7 @@ def test_cleanup_eol(): [ compute_v1.Image( architecture="X86_64", - family="fedora-40", + family="fedora-40-x86-64", description="Fedora Cloud base image version", labels={ "fedora-release": "40", @@ -533,7 +533,7 @@ def test_cleanup_eol(): ), compute_v1.Image( architecture="X86_64", - family="fedora-40", + family="fedora-40-x86-64", description="Fedora Cloud base image version", labels={ "fedora-release": "40",