This is an automated email from the ASF dual-hosted git repository.

wmedvedeo pushed a commit to branch main
in repository 
https://gitbox.apache.org/repos/asf/incubator-kie-kogito-serverless-operator.git


The following commit(s) were added to refs/heads/main by this push:
     new 2f3bc4b4 kie-kogito-serverless-operator-533: Builder image is not used 
according to the configuration semantic (#534)
2f3bc4b4 is described below

commit 2f3bc4b485d34fde41e62eccda0bbef349b71b0d
Author: Walter Medvedeo <[email protected]>
AuthorDate: Tue Sep 17 16:13:33 2024 +0200

    kie-kogito-serverless-operator-533: Builder image is not used according to 
the configuration semantic (#534)
---
 controllers/platform/platformutils.go      | 13 +++++++-
 controllers/platform/platformutils_test.go | 52 ++++++++++++++++++++++++++++++
 2 files changed, 64 insertions(+), 1 deletion(-)

diff --git a/controllers/platform/platformutils.go 
b/controllers/platform/platformutils.go
index 4daabc0c..8b68a5da 100644
--- a/controllers/platform/platformutils.go
+++ b/controllers/platform/platformutils.go
@@ -26,6 +26,8 @@ import (
        "strings"
        "time"
 
+       
"github.com/apache/incubator-kie-kogito-serverless-operator/controllers/cfg"
+
        "github.com/apache/incubator-kie-kogito-serverless-operator/utils"
        corev1 "k8s.io/api/core/v1"
        k8serrors "k8s.io/apimachinery/pkg/api/errors"
@@ -158,10 +160,19 @@ func GetRegistryAddress(ctx context.Context) (*string, 
error) {
        return nil, nil
 }
 
-// GetCustomizedBuilderDockerfile gets the Dockerfile as defined in the 
default platform ConfigMap, apply any custom requirements and return.
+// GetCustomizedBuilderDockerfile determines if the default Dockerfile 
provided by the
+// sonataflow-operator-builder-config_v1_configmap.yaml must be customized to 
use a different builder base image,
+// before building a workflow.
+// The following ordered criteria are applied:
+// 1) if the current platform has a configured 
platform.Spec.Build.Config.BaseImage, that base image must be used.
+// 2) if the current sonataflow-operator-controllers-config.yaml has a 
configured SonataFlowBaseBuilderImageTag, that
+// base image must be used.
+// 3) No customization apply.
 func GetCustomizedBuilderDockerfile(dockerfile string, platform 
operatorapi.SonataFlowPlatform) string {
        if len(platform.Spec.Build.Config.BaseImage) > 0 {
                dockerfile = strings.Replace(dockerfile, 
GetFromImageTagDockerfile(dockerfile), platform.Spec.Build.Config.BaseImage, 1)
+       } else if len(cfg.GetCfg().SonataFlowBaseBuilderImageTag) > 0 {
+               dockerfile = strings.Replace(dockerfile, 
GetFromImageTagDockerfile(dockerfile), 
cfg.GetCfg().SonataFlowBaseBuilderImageTag, 1)
        }
        return dockerfile
 }
diff --git a/controllers/platform/platformutils_test.go 
b/controllers/platform/platformutils_test.go
index d0bcf2cb..2a21f8e8 100644
--- a/controllers/platform/platformutils_test.go
+++ b/controllers/platform/platformutils_test.go
@@ -24,11 +24,17 @@ import (
        "regexp"
        "testing"
 
+       
"github.com/apache/incubator-kie-kogito-serverless-operator/api/v1alpha08"
+       
"github.com/apache/incubator-kie-kogito-serverless-operator/controllers/cfg"
+       metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
+
        "github.com/stretchr/testify/assert"
 
        "github.com/apache/incubator-kie-kogito-serverless-operator/test"
 )
 
+const dockerFile = "FROM 
docker.io/apache/default-test-kie-sonataflow-builder:main AS builder\n\n# ETC, 
\n\n# ETC, \n\n# ETC"
+
 func TestSonataFlowBuildController(t *testing.T) {
        platform := test.GetBasePlatform()
        dockerfileBytes, err := os.ReadFile("../../test/builder/Dockerfile")
@@ -49,3 +55,49 @@ func TestSonataFlowBuildController(t *testing.T) {
        assert.NoError(t, err)
        assert.True(t, foundProductized)
 }
+
+func TestGetCustomizedBuilderDockerfile_NoBaseImageCustomization(t *testing.T) 
{
+       sfp := v1alpha08.SonataFlowPlatform{
+               TypeMeta:   metav1.TypeMeta{},
+               ObjectMeta: metav1.ObjectMeta{},
+               Spec:       v1alpha08.SonataFlowPlatformSpec{},
+               Status:     v1alpha08.SonataFlowPlatformStatus{},
+       }
+       customizedDockerfile := GetCustomizedBuilderDockerfile(dockerFile, sfp)
+       assert.Equal(t, dockerFile, customizedDockerfile)
+}
+
+func TestGetCustomizedBuilderDockerfile_BaseImageCustomizationFromPlatform(t 
*testing.T) {
+       sfp := v1alpha08.SonataFlowPlatform{
+               TypeMeta:   metav1.TypeMeta{},
+               ObjectMeta: metav1.ObjectMeta{},
+               Spec: v1alpha08.SonataFlowPlatformSpec{
+                       Build: v1alpha08.BuildPlatformSpec{
+                               Template: v1alpha08.BuildTemplate{},
+                               Config: v1alpha08.BuildPlatformConfig{
+                                       BaseImage: 
"docker.io/apache/platfom-sonataflow-builder:main",
+                               },
+                       },
+               },
+               Status: v1alpha08.SonataFlowPlatformStatus{},
+       }
+
+       expectedDockerFile := "FROM 
docker.io/apache/platfom-sonataflow-builder:main AS builder\n\n# ETC, \n\n# 
ETC, \n\n# ETC"
+       customizedDockerfile := GetCustomizedBuilderDockerfile(dockerFile, sfp)
+       assert.Equal(t, expectedDockerFile, customizedDockerfile)
+}
+
+func 
TestGetCustomizedBuilderDockerfile_BaseImageCustomizationFromControllersConfig(t
 *testing.T) {
+       sfp := v1alpha08.SonataFlowPlatform{
+               TypeMeta:   metav1.TypeMeta{},
+               ObjectMeta: metav1.ObjectMeta{},
+               Spec:       v1alpha08.SonataFlowPlatformSpec{},
+               Status:     v1alpha08.SonataFlowPlatformStatus{},
+       }
+
+       _, err := 
cfg.InitializeControllersCfgAt("../cfg/testdata/controllers-cfg-test.yaml")
+       assert.NoError(t, err)
+       expectedDockerFile := "FROM local/sonataflow-builder:1.0.0 AS 
builder\n\n# ETC, \n\n# ETC, \n\n# ETC"
+       customizedDockerfile := GetCustomizedBuilderDockerfile(dockerFile, sfp)
+       assert.Equal(t, expectedDockerFile, customizedDockerfile)
+}


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to