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

nferraro pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/camel-k.git


The following commit(s) were added to refs/heads/main by this push:
     new a84667a  Fix #2237: add flag to disable installation of default 
kamelets
a84667a is described below

commit a84667ae86051ebfa757038ea8293ed6d0283962
Author: nicolaferraro <[email protected]>
AuthorDate: Tue May 18 11:22:24 2021 +0200

    Fix #2237: add flag to disable installation of default kamelets
---
 pkg/controller/integrationplatform/create.go |  9 ++++++---
 pkg/install/optional.go                      | 11 ++++++++---
 pkg/util/defaults/defaults.go                |  3 +++
 pkg/util/defaults/defaults_support.go        | 22 +++++++++++++++++++---
 pkg/util/defaults/defaults_test.go           | 13 +++++++++++++
 script/Makefile                              |  4 ++++
 6 files changed, 53 insertions(+), 9 deletions(-)

diff --git a/pkg/controller/integrationplatform/create.go 
b/pkg/controller/integrationplatform/create.go
index 059d88a..6835ee5 100644
--- a/pkg/controller/integrationplatform/create.go
+++ b/pkg/controller/integrationplatform/create.go
@@ -21,6 +21,7 @@ import (
        "context"
 
        "github.com/apache/camel-k/pkg/resources"
+       "github.com/apache/camel-k/pkg/util/defaults"
 
        v1 "github.com/apache/camel-k/pkg/apis/camel/v1"
        "github.com/apache/camel-k/pkg/install"
@@ -52,9 +53,11 @@ func (action *createAction) Handle(ctx context.Context, 
platform *v1.Integration
                }
        }
 
-       // Kamelet Catalog installed on platform reconciliation for cases where 
users install a global operator
-       if err := install.KameletCatalog(ctx, action.client, 
platform.Namespace); err != nil {
-               return nil, err
+       if defaults.InstallDefaultKamelets() {
+               // Kamelet Catalog installed on platform reconciliation for 
cases where users install a global operator
+               if err := install.KameletCatalog(ctx, action.client, 
platform.Namespace); err != nil {
+                       return nil, err
+               }
        }
 
        platform.Status.Phase = v1.IntegrationPlatformPhaseReady
diff --git a/pkg/install/optional.go b/pkg/install/optional.go
index 473a66f..e7f4b0a 100644
--- a/pkg/install/optional.go
+++ b/pkg/install/optional.go
@@ -21,6 +21,7 @@ import (
        "context"
        "strings"
 
+       "github.com/apache/camel-k/pkg/util/defaults"
        "github.com/go-logr/logr"
 
        "github.com/apache/camel-k/pkg/client"
@@ -46,9 +47,13 @@ func OperatorStartupOptionalTools(ctx context.Context, c 
client.Client, namespac
        }
 
        if kameletNamespace != "" {
-               if err := KameletCatalog(ctx, c, kameletNamespace); err != nil {
-                       log.Info("Cannot install bundled Kamelet Catalog: 
skipping.")
-                       log.V(8).Info("Error while installing bundled Kamelet 
Catalog", "error", err)
+               if defaults.InstallDefaultKamelets() {
+                       if err := KameletCatalog(ctx, c, kameletNamespace); err 
!= nil {
+                               log.Info("Cannot install bundled Kamelet 
Catalog: skipping.")
+                               log.V(8).Info("Error while installing bundled 
Kamelet Catalog", "error", err)
+                       }
+               } else {
+                       log.Info("Kamelet Catalog installation is disabled")
                }
 
                if globalOperator {
diff --git a/pkg/util/defaults/defaults.go b/pkg/util/defaults/defaults.go
index 096da9d..a7fbb3b 100644
--- a/pkg/util/defaults/defaults.go
+++ b/pkg/util/defaults/defaults.go
@@ -42,4 +42,7 @@ const (
 
        // ImageName --
        ImageName = "docker.io/apache/camel-k"
+
+       // installDefaultKamelets --
+       installDefaultKamelets = true
 )
diff --git a/pkg/util/defaults/defaults_support.go 
b/pkg/util/defaults/defaults_support.go
index ec2a397..6849c15 100644
--- a/pkg/util/defaults/defaults_support.go
+++ b/pkg/util/defaults/defaults_support.go
@@ -17,12 +17,28 @@ limitations under the License.
 
 package defaults
 
-import "os"
+import (
+       "os"
+       "strconv"
 
-var baseImageOverrideEnvs = []string{"BASE_IMAGE", "RELATED_IMAGE_BASE"}
+       "github.com/apache/camel-k/pkg/util/log"
+)
 
 func BaseImage() string {
-       return envOrDefault(baseImage, baseImageOverrideEnvs...)
+       return envOrDefault(baseImage, "KAMEL_BASE_IMAGE", "RELATED_IMAGE_BASE")
+}
+
+func InstallDefaultKamelets() bool {
+       return boolEnvOrDefault(installDefaultKamelets, 
"KAMEL_INSTALL_DEFAULT_KAMELETS")
+}
+
+func boolEnvOrDefault(def bool, envs ...string) bool {
+       strVal := envOrDefault(strconv.FormatBool(def), envs...)
+       res, err := strconv.ParseBool(strVal)
+       if err != nil {
+               log.Error(err, "cannot parse boolean property", "property", 
def, "value", strVal)
+       }
+       return res
 }
 
 func envOrDefault(def string, envs ...string) string {
diff --git a/pkg/util/defaults/defaults_test.go 
b/pkg/util/defaults/defaults_test.go
index 90dba55..e49611e 100644
--- a/pkg/util/defaults/defaults_test.go
+++ b/pkg/util/defaults/defaults_test.go
@@ -19,6 +19,7 @@ package defaults
 
 import (
        "os"
+       "strconv"
        "testing"
 
        "github.com/stretchr/testify/assert"
@@ -36,3 +37,15 @@ func TestOverriddenBaseImage(t *testing.T) {
        assert.Equal(t, overriddenImage, BaseImage())
        assert.NoError(t, os.Setenv(env, oldEnvVal))
 }
+
+func TestOverriddenInstallDefaultKamelets(t *testing.T) {
+       env := "KAMEL_INSTALL_DEFAULT_KAMELETS"
+       oldEnvVal := os.Getenv(env)
+       assert.NoError(t, os.Setenv(env, strconv.FormatBool(false)))
+       assert.False(t, InstallDefaultKamelets())
+       assert.NoError(t, os.Setenv(env, strconv.FormatBool(true)))
+       assert.True(t, InstallDefaultKamelets())
+       assert.NoError(t, os.Setenv(env, "wrongval"))
+       assert.False(t, InstallDefaultKamelets())
+       assert.NoError(t, os.Setenv(env, oldEnvVal))
+}
diff --git a/script/Makefile b/script/Makefile
index a776066..01a400b 100644
--- a/script/Makefile
+++ b/script/Makefile
@@ -20,6 +20,7 @@ LAST_RELEASED_VERSION := 1.4.0
 RUNTIME_VERSION := 1.7.0
 BUILDAH_VERSION := 1.14.0
 KANIKO_VERSION := 0.17.1
+INSTALL_DEFAULT_KAMELETS := true
 BASE_IMAGE := adoptopenjdk/openjdk11:slim
 LOCAL_REPOSITORY := /tmp/artifacts/m2
 IMAGE_NAME := docker.io/apache/camel-k
@@ -116,6 +117,9 @@ codegen:
        @echo "" >> $(VERSIONFILE)
        @echo "  // ImageName -- " >> $(VERSIONFILE)
        @echo "  ImageName = \"$(IMAGE_NAME)\"" >> $(VERSIONFILE)
+       @echo "" >> $(VERSIONFILE)
+       @echo "  // installDefaultKamelets -- " >> $(VERSIONFILE)
+       @echo "  installDefaultKamelets = $(INSTALL_DEFAULT_KAMELETS)" >> 
$(VERSIONFILE)
        @echo ")" >> $(VERSIONFILE)
        @echo "" >> $(VERSIONFILE)
        gofmt -w pkg/util/defaults/defaults.go

Reply via email to