You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by pc...@apache.org on 2022/04/18 09:18:08 UTC

[camel-k] 05/12: fix(e2e): fixes for upgrade testing on OCP

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

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

commit 20299a877a7a2edf587840f6e8ca4115784d2d1a
Author: phantomjinx <p....@phantomjinx.co.uk>
AuthorDate: Thu Mar 3 21:28:37 2022 +0000

    fix(e2e): fixes for upgrade testing on OCP
    
    * replaces attribute required in olm.channel syntax to ensure OLM knows
      to upgrade from the last release to the current.
    
    * incorrect regex for localhost replacement
    
    * Fixes integration stalling at "Building Kit" phase due to circular
      attempts to assign the rebuilt integrationkit
---
 .github/actions/kamel-build-bundle/build-index-image.sh |  3 ++-
 e2e/upgrade/cli_upgrade_test.go                         |  1 -
 e2e/upgrade/olm_upgrade_test.go                         |  1 +
 pkg/apis/camel/v1/integration_types_support.go          |  5 +++++
 pkg/controller/integration/build_kit.go                 | 10 +++++++++-
 pkg/trait/trait.go                                      |  4 ++++
 6 files changed, 21 insertions(+), 3 deletions(-)

diff --git a/.github/actions/kamel-build-bundle/build-index-image.sh b/.github/actions/kamel-build-bundle/build-index-image.sh
index 9cd3faf64..1fdd22f95 100755
--- a/.github/actions/kamel-build-bundle/build-index-image.sh
+++ b/.github/actions/kamel-build-bundle/build-index-image.sh
@@ -131,7 +131,7 @@ if [ "${PULL_REGISTRY}" != "${PUSH_REGISTRY}" ]; then
   #
   # Only add PULL_HOST if not already added (avoids repeated appended)
   #
-  sudo sed -i "/${PULL_HOST}/!s/localhost /&${PULL_HOST} /" /etc/hosts
+  sudo sed -i "/${PULL_HOST}/!s/localhost/& ${PULL_HOST} /" /etc/hosts
 
   #
   # Bring up the registry:2 instance if not already started
@@ -186,6 +186,7 @@ package: camel-k
 name: stable-$(make get-version | grep -Po "\d.\d")
 entries:
   - name: camel-k.v$(make get-version | grep -Po "\d.\d.\d")
+    replaces: $(make get-last-released-img-name).v$(make get-last-released-version | grep -Po "\d.\d.\d")
 EOF
 opm validate ${CATALOG_DIR}
 opm generate dockerfile ${CATALOG_DIR}
diff --git a/e2e/upgrade/cli_upgrade_test.go b/e2e/upgrade/cli_upgrade_test.go
index f8f3eeee6..b60dca606 100644
--- a/e2e/upgrade/cli_upgrade_test.go
+++ b/e2e/upgrade/cli_upgrade_test.go
@@ -75,7 +75,6 @@ func TestOperatorUpgrade(t *testing.T) {
 		Expect(os.Setenv("KAMEL_BIN", "")).To(Succeed())
 
 		// Upgrade the operator by installing the current version
-		Expect(Kamel("install", "--olm=false", "--cluster-setup", "--force").Execute()).To(Succeed())
 		Expect(Kamel("install", "-n", ns, "--olm=false", "--force", "--operator-image", image).Execute()).To(Succeed())
 
 		// Check the operator image is the current built one
diff --git a/e2e/upgrade/olm_upgrade_test.go b/e2e/upgrade/olm_upgrade_test.go
index fe0d25fe1..5a05a7008 100644
--- a/e2e/upgrade/olm_upgrade_test.go
+++ b/e2e/upgrade/olm_upgrade_test.go
@@ -28,6 +28,7 @@ import (
 	"testing"
 	"time"
 
+	. "github.com/apache/camel-k/e2e/support"
 	. "github.com/onsi/gomega"
 
 	corev1 "k8s.io/api/core/v1"
diff --git a/pkg/apis/camel/v1/integration_types_support.go b/pkg/apis/camel/v1/integration_types_support.go
index a35520be7..360c1df48 100644
--- a/pkg/apis/camel/v1/integration_types_support.go
+++ b/pkg/apis/camel/v1/integration_types_support.go
@@ -267,6 +267,11 @@ func (in *Integration) SetIntegrationPlatform(platform *IntegrationPlatform) {
 }
 
 func (in *Integration) SetIntegrationKit(kit *IntegrationKit) {
+	if kit == nil {
+		in.Status.IntegrationKit = nil
+		return
+	}
+
 	cs := corev1.ConditionTrue
 	message := kit.Name
 	if kit.Status.Phase != IntegrationKitPhaseReady {
diff --git a/pkg/controller/integration/build_kit.go b/pkg/controller/integration/build_kit.go
index 0feddc951..3acd1e0a6 100644
--- a/pkg/controller/integration/build_kit.go
+++ b/pkg/controller/integration/build_kit.go
@@ -59,7 +59,12 @@ func (action *buildKitAction) Handle(ctx context.Context, integration *v1.Integr
 		return integration, nil
 	}
 
+	//
+	// IntegrationKit may be nil if its being upgraded
+	//
 	if integration.Status.IntegrationKit != nil {
+
+		// IntegrationKit fully defined so find it
 		kit, err := kubernetes.GetIntegrationKit(ctx, action.client, integration.Status.IntegrationKit.Name, integration.Status.IntegrationKit.Namespace)
 		if err != nil {
 			return nil, errors.Wrapf(err, "unable to find integration kit %s/%s, %s", integration.Status.IntegrationKit.Namespace, integration.Status.IntegrationKit.Name, err)
@@ -73,7 +78,10 @@ func (action *buildKitAction) Handle(ctx context.Context, integration *v1.Integr
 				// We need to re-generate a kit, or search for a new one that
 				// matches the integration, so let's remove the association
 				// with the kit.
-				integration.SetIntegrationKit(&v1.IntegrationKit{})
+				//
+				// All tests & conditionals check for a nil assignment
+				//
+				integration.SetIntegrationKit(nil)
 				return integration, nil
 			}
 		}
diff --git a/pkg/trait/trait.go b/pkg/trait/trait.go
index e0a308e9a..ca5fa5050 100644
--- a/pkg/trait/trait.go
+++ b/pkg/trait/trait.go
@@ -84,6 +84,10 @@ func newEnvironment(ctx context.Context, c client.Client, integration *v1.Integr
 		}
 	}
 
+	//
+	// kit can still be nil if integration kit is yet
+	// to finish building and be assigned to the integration
+	//
 	env := Environment{
 		Ctx:                   ctx,
 		Platform:              pl,