From c91974e27cba8ceaa2c549922d1676358cc00ff1 Mon Sep 17 00:00:00 2001 From: Jeff Heidel Date: Sat, 6 Jun 2026 17:16:38 -0700 Subject: [PATCH] build_library: fix Exoscale image format, size, and compression Exoscale requires Custom Templates to be at least 10GB, expects a .qcow2 extension, and Exoscale Custom Templates do not support compressed (.bz2) images. Currently, Flatcar releases an 8GB compressed .img file. This change ensures the output file uses the .qcow2 extension, applies a post-conversion resize to exactly 10G, and disables compression in the release pipeline to match platform requirements and UI prompts. Signed-off-by: Jeff Heidel --- build_library/vm_image_util.sh | 12 +++++++++++- ci-automation/vms.sh | 2 +- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/build_library/vm_image_util.sh b/build_library/vm_image_util.sh index 9c4a7b242be..21e4591d8b4 100644 --- a/build_library/vm_image_util.sh +++ b/build_library/vm_image_util.sh @@ -187,7 +187,8 @@ IMG_cloudstack_vhd_OEM_SYSEXT=cloudstack IMG_digitalocean_OEM_SYSEXT=digitalocean ## exoscale -IMG_exoscale_DISK_FORMAT=qcow2 +IMG_exoscale_DISK_FORMAT=exoscale +IMG_exoscale_DISK_EXTENSION=qcow2 IMG_exoscale_OEM_SYSEXT=exoscale ## azure @@ -477,6 +478,15 @@ _write_qcow2_disk() { assert_image_size "$2" qcow2 } +_write_exoscale_disk() { + qemu-img convert -f raw "$1" -O qcow2 -c -o compat=0.10 "$2" + # Exoscale images should be exactly 10G. This is the minimum for + # Custom Templates, and it also can't be any larger because it + # would prevent creation of an instance with the 10G disk size option. + qemu-img resize "$2" 10G + assert_image_size "$2" qcow2 +} + _write_vhd_disk() { qemu-img convert -f raw "$1" -O vpc -o force_size "$2" assert_image_size "$2" vpc diff --git a/ci-automation/vms.sh b/ci-automation/vms.sh index 55a872d6eba..3af954ff0c8 100644 --- a/ci-automation/vms.sh +++ b/ci-automation/vms.sh @@ -137,7 +137,7 @@ function _vm_build_impl() { COMPRESSION_FORMAT="bz2,none" elif [[ "${format}" =~ ^(hyperv|hyperv_vhdx)$ ]];then COMPRESSION_FORMAT="zip" - elif [[ "${format}" =~ ^(scaleway|kubevirt|proxmoxve|stackit)$ ]];then + elif [[ "${format}" =~ ^(scaleway|kubevirt|proxmoxve|stackit|exoscale)$ ]];then COMPRESSION_FORMAT="none" elif [[ "${format}" =~ ^(akamai)$ ]];then COMPRESSION_FORMAT="gz"