You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by as...@apache.org on 2021/01/25 16:00:17 UTC

[camel-k] 01/03: fix(cli): Improve CLI / operator versions compatibility check

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

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

commit 02cd0881577b18a1e258552ae0a09d65bae38b6b
Author: Antonin Stefanutti <an...@stefanutti.fr>
AuthorDate: Mon Jan 25 10:43:25 2021 +0100

    fix(cli): Improve CLI / operator versions compatibility check
---
 pkg/cmd/root.go | 23 ++++++++++++++---------
 1 file changed, 14 insertions(+), 9 deletions(-)

diff --git a/pkg/cmd/root.go b/pkg/cmd/root.go
index 85b7607..3328c60 100644
--- a/pkg/cmd/root.go
+++ b/pkg/cmd/root.go
@@ -27,6 +27,8 @@ import (
 	"github.com/spf13/cobra"
 	"github.com/spf13/viper"
 
+	k8serrors "k8s.io/apimachinery/pkg/api/errors"
+
 	"github.com/apache/camel-k/pkg/client"
 	camelv1 "github.com/apache/camel-k/pkg/client/camel/clientset/versioned/typed/camel/v1"
 	"github.com/apache/camel-k/pkg/util/defaults"
@@ -73,7 +75,6 @@ func NewKamelCommand(ctx context.Context) (*cobra.Command, error) {
 }
 
 func kamelPreAddCommandInit(options *RootCmdOptions) *cobra.Command {
-
 	var cmd = cobra.Command{
 		BashCompletionFunction: bashCompletionFunction,
 		PersistentPreRunE:      options.preRun,
@@ -171,12 +172,12 @@ func addHelpSubCommands(cmd *cobra.Command, options *RootCmdOptions) error {
 
 func (command *RootCmdOptions) preRun(cmd *cobra.Command, _ []string) error {
 	if !isOfflineCommand(cmd) {
-		client, err := command.GetCmdClient()
+		c, err := command.GetCmdClient()
 		if err != nil {
 			return errors.Wrap(err, "cannot get command client")
 		}
 		if command.Namespace == "" {
-			current, err := client.GetCurrentNamespace(command.KubeConfig)
+			current, err := c.GetCurrentNamespace(command.KubeConfig)
 			if err != nil {
 				return errors.Wrap(err, "cannot get current namespace")
 			}
@@ -185,19 +186,23 @@ func (command *RootCmdOptions) preRun(cmd *cobra.Command, _ []string) error {
 				return err
 			}
 		}
-		checkAndShowCompatibilityWarning(command.Context, client, command.Namespace)
+		checkAndShowCompatibilityWarning(command.Context, c, command.Namespace)
 	}
 
 	return nil
 }
 
-func checkAndShowCompatibilityWarning(ctx context.Context, cli client.Client, namespace string) {
-	operatorVersion, err := operatorVersion(ctx, cli, namespace)
+func checkAndShowCompatibilityWarning(ctx context.Context, c client.Client, namespace string) {
+	operatorVersion, err := operatorVersion(ctx, c, namespace)
 	if err != nil {
-		fmt.Printf("No Integration Platform available in %s namespace\n", namespace)
+		if k8serrors.IsNotFound(err) {
+			fmt.Printf("No IntegrationPlatform resource in %s namespace\n", namespace)
+		} else {
+			fmt.Printf("Unable to retrieve the operator version: %s", err.Error())
+		}
 	} else {
-		if !compatibleVersions(operatorVersion, defaults.Version) {
-			fmt.Printf("Warning: you're using Camel K %s client against a %s cluster operator\n\n", defaults.Version, operatorVersion)
+		if operatorVersion != "" && !compatibleVersions(operatorVersion, defaults.Version) {
+			fmt.Printf("You're using Camel K %s client with a %s cluster operator, it's recommended to use the same version to improve compatibility.\n\n", defaults.Version, operatorVersion)
 		}
 	}
 }