From 0791d681981f2ec85a8f5e9ebab39d9bca424d99 Mon Sep 17 00:00:00 2001 From: "Philipp G." Date: Sat, 23 May 2026 23:06:15 +0200 Subject: [PATCH 1/2] feat: use matching distribution and pgMajor version for required extensions Signed-off-by: Philipp G. --- dagger/maintenance/image.go | 6 ++++-- dagger/maintenance/main.go | 16 +++++++++++++++- dagger/maintenance/testingvalues.go | 8 ++++++-- 3 files changed, 25 insertions(+), 5 deletions(-) diff --git a/dagger/maintenance/image.go b/dagger/maintenance/image.go index 6b1ddb40..6ffc9727 100644 --- a/dagger/maintenance/image.go +++ b/dagger/maintenance/image.go @@ -23,8 +23,10 @@ const ( ) const ( - AnnotationImageSQLVersion = "io.cloudnativepg.image.sql.version" - AnnotationImageBaseName = "io.cloudnativepg.image.base.name" + AnnotationImageSQLVersion = "io.cloudnativepg.image.sql.version" + AnnotationImageBaseName = "io.cloudnativepg.image.base.name" + AnnotationImageBasePgMajor = "io.cloudnativepg.image.base.pgmajor" + AnnotationImageBaseOS = "io.cloudnativepg.image.base.os" ) var SupportedDistributions = []string{ diff --git a/dagger/maintenance/main.go b/dagger/maintenance/main.go index ae1a2592..4175e9b2 100644 --- a/dagger/maintenance/main.go +++ b/dagger/maintenance/main.go @@ -186,7 +186,21 @@ func (m *Maintenance) GenerateTestingValues( targetExtensionImage, AnnotationImageSQLVersion) } - extensionInfos, err := generateTestingValuesExtensions(ctx, source, metadata, targetExtensionImage, version, registryUsername, registryPassword) + distribution := annotations[AnnotationImageBaseOS] + if distribution == "" { + return nil, fmt.Errorf( + "extension image %s doesn't have an %q annotation or its value is empty", + targetExtensionImage, AnnotationImageBaseOS) + } + + pgMajor, err := strconv.Atoi(annotations[AnnotationImageBasePgMajor]) + if err != nil { + return nil, fmt.Errorf( + "extension image %s doesn't have an %q annotation or its value is not a number", + targetExtensionImage, AnnotationImageBasePgMajor) + } + + extensionInfos, err := generateTestingValuesExtensions(ctx, source, metadata, targetExtensionImage, version, distribution, pgMajor, registryUsername, registryPassword) if err != nil { return nil, err } diff --git a/dagger/maintenance/testingvalues.go b/dagger/maintenance/testingvalues.go index 6662b059..befe68ac 100644 --- a/dagger/maintenance/testingvalues.go +++ b/dagger/maintenance/testingvalues.go @@ -38,7 +38,7 @@ type testingExtensionInfo struct { } func generateTestingValuesExtensions(ctx context.Context, source *dagger.Directory, metadata *extensionMetadata, - extensionImage string, version string, registryUsername string, registryPassword *dagger.Secret) ([]*testingExtensionInfo, error) { + extensionImage string, version string, distribution string, pgMajor int, registryUsername string, registryPassword *dagger.Secret) ([]*testingExtensionInfo, error) { var out []*testingExtensionInfo configuration, err := generateExtensionConfiguration(metadata, extensionImage) if err != nil { @@ -64,7 +64,11 @@ func generateTestingValuesExtensions(ctx context.Context, source *dagger.Directo if err != nil { return nil, fmt.Errorf("failed to parse dependency metadata %q: %w", dep, err) } - depConfiguration, err := generateExtensionConfiguration(depMetadata, "") + requiredExtensionImage, err := getExtensionImage(depMetadata, distribution, pgMajor) + if err != nil { + return nil, err + } + depConfiguration, err := generateExtensionConfiguration(depMetadata, requiredExtensionImage) if err != nil { return nil, err } From 6c293906facb5189357e176823ea88372cffeb09 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Niccol=C3=B2=20Fei?= Date: Mon, 1 Jun 2026 18:18:32 +0200 Subject: [PATCH 2/2] chore: refactor image-related fields into a new ImageLocator struct MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Niccolò Fei --- dagger/maintenance/main.go | 9 ++++++++- dagger/maintenance/testingvalues.go | 23 ++++++++++++++++++----- 2 files changed, 26 insertions(+), 6 deletions(-) diff --git a/dagger/maintenance/main.go b/dagger/maintenance/main.go index 4175e9b2..8c1d8798 100644 --- a/dagger/maintenance/main.go +++ b/dagger/maintenance/main.go @@ -200,7 +200,14 @@ func (m *Maintenance) GenerateTestingValues( targetExtensionImage, AnnotationImageBasePgMajor) } - extensionInfos, err := generateTestingValuesExtensions(ctx, source, metadata, targetExtensionImage, version, distribution, pgMajor, registryUsername, registryPassword) + imageLocator := ImageLocator{ + ExtensionImage: targetExtensionImage, + PgMajor: pgMajor, + SQLVersion: version, + Distribution: distribution, + } + extensionInfos, err := generateTestingValuesExtensions(ctx, source, metadata, imageLocator, + registryUsername, registryPassword) if err != nil { return nil, err } diff --git a/dagger/maintenance/testingvalues.go b/dagger/maintenance/testingvalues.go index befe68ac..8285e67d 100644 --- a/dagger/maintenance/testingvalues.go +++ b/dagger/maintenance/testingvalues.go @@ -37,17 +37,30 @@ type testingExtensionInfo struct { CreateExtension bool } -func generateTestingValuesExtensions(ctx context.Context, source *dagger.Directory, metadata *extensionMetadata, - extensionImage string, version string, distribution string, pgMajor int, registryUsername string, registryPassword *dagger.Secret) ([]*testingExtensionInfo, error) { +type ImageLocator struct { + ExtensionImage string + PgMajor int + SQLVersion string + Distribution string +} + +func generateTestingValuesExtensions( + ctx context.Context, + source *dagger.Directory, + metadata *extensionMetadata, + imageLocator ImageLocator, + registryUsername string, + registryPassword *dagger.Secret, +) ([]*testingExtensionInfo, error) { var out []*testingExtensionInfo - configuration, err := generateExtensionConfiguration(metadata, extensionImage) + configuration, err := generateExtensionConfiguration(metadata, imageLocator.ExtensionImage) if err != nil { return nil, err } out = append(out, &testingExtensionInfo{ Configuration: configuration, SQLName: metadata.SQLName, - Version: version, + Version: imageLocator.SQLVersion, CreateExtension: metadata.CreateExtension, }) @@ -64,7 +77,7 @@ func generateTestingValuesExtensions(ctx context.Context, source *dagger.Directo if err != nil { return nil, fmt.Errorf("failed to parse dependency metadata %q: %w", dep, err) } - requiredExtensionImage, err := getExtensionImage(depMetadata, distribution, pgMajor) + requiredExtensionImage, err := getExtensionImage(depMetadata, imageLocator.Distribution, imageLocator.PgMajor) if err != nil { return nil, err }