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
The following commit(s) were added to refs/heads/main by this push:
new f5ddcdfe9 fix(cli): Remove CamelCatalogs CR on kamel uninstall
f5ddcdfe9 is described below
commit f5ddcdfe9e7dfa35d0d87949d99ffeb570586771
Author: Gaelle Fournier <[email protected]>
AuthorDate: Fri Mar 24 12:09:40 2023 +0100
fix(cli): Remove CamelCatalogs CR on kamel uninstall
---
e2e/install/cli/uninstall_test.go | 15 +++++++++++++++
e2e/support/test_support.go | 10 ++++++++++
pkg/cmd/uninstall.go | 26 ++++++++++++++++++++++++++
3 files changed, 51 insertions(+)
diff --git a/e2e/install/cli/uninstall_test.go
b/e2e/install/cli/uninstall_test.go
index 3cc6f12d5..7afec9812 100644
--- a/e2e/install/cli/uninstall_test.go
+++ b/e2e/install/cli/uninstall_test.go
@@ -62,6 +62,7 @@ func TestBasicUninstall(t *testing.T) {
Eventually(Configmap(ns,
"camel-k-maven-settings")).Should(BeNil())
Eventually(OperatorPod(ns), TestTimeoutMedium).Should(BeNil())
Eventually(KameletList(ns), TestTimeoutMedium).Should(BeEmpty())
+ Eventually(CamelCatalogList(ns),
TestTimeoutMedium).Should(BeEmpty())
})
}
@@ -138,3 +139,17 @@ func TestUninstallSkipKamelets(t *testing.T) {
Eventually(KameletList(ns)).ShouldNot(BeEmpty())
})
}
+
+func TestUninstallSkipCamelCatalogs(t *testing.T) {
+ WithNewTestNamespace(t, func(ns string) {
+ // a successful new installation
+ operatorID := fmt.Sprintf("camel-k-%s", ns)
+ Expect(KamelInstallWithID(operatorID,
ns).Execute()).To(Succeed())
+ Eventually(OperatorPod(ns)).ShouldNot(BeNil())
+ Eventually(CamelCatalogList(ns)).ShouldNot(BeEmpty())
+ // on uninstall it should remove everything except camel
catalogs
+ Expect(Kamel("uninstall", "-n", ns, "--skip-crd",
"--skip-cluster-roles", "--skip-camel-catalogs").Execute()).To(Succeed())
+ Eventually(CamelCatalogList(ns)).ShouldNot(BeEmpty())
+
+ })
+}
diff --git a/e2e/support/test_support.go b/e2e/support/test_support.go
index fe30e81c3..877ca7f40 100644
--- a/e2e/support/test_support.go
+++ b/e2e/support/test_support.go
@@ -1700,6 +1700,16 @@ func CamelCatalogImage(ns, name string) func() string {
}
}
+func CamelCatalogList(ns string) func() []v1.CamelCatalog {
+ return func() []v1.CamelCatalog {
+ lst := v1.NewCamelCatalogList()
+ if err := TestClient().List(TestContext, &lst,
ctrl.InNamespace(ns)); err != nil {
+ failTest(err)
+ }
+ return lst.Items
+ }
+}
+
func DeletePlatform(ns string) func() bool {
return func() bool {
pl := Platform(ns)()
diff --git a/pkg/cmd/uninstall.go b/pkg/cmd/uninstall.go
index bf080b497..56157b9d7 100644
--- a/pkg/cmd/uninstall.go
+++ b/pkg/cmd/uninstall.go
@@ -33,6 +33,7 @@ import (
ctrl "sigs.k8s.io/controller-runtime/pkg/client"
"sigs.k8s.io/controller-runtime/pkg/client/apiutil"
+ v1 "github.com/apache/camel-k/v2/pkg/apis/camel/v1"
"github.com/apache/camel-k/v2/pkg/apis/camel/v1alpha1"
"github.com/apache/camel-k/v2/pkg/client"
"github.com/apache/camel-k/v2/pkg/util/olm"
@@ -62,6 +63,7 @@ func newCmdUninstall(rootCmdOptions *RootCmdOptions)
(*cobra.Command, *uninstall
cmd.Flags().Bool("skip-config-maps", false, "Do not uninstall the Camel
K Config Maps in the current namespace")
cmd.Flags().Bool("skip-registry-secret", false, "Do not uninstall the
Camel K Registry Secret in the current namespace")
cmd.Flags().Bool("skip-kamelets", false, "Do not uninstall the Kamelets
in the current namespace")
+ cmd.Flags().Bool("skip-camel-catalogs", false, "Do not uninstall the
Camel Catalogs in the current namespace")
cmd.Flags().Bool("global", false, "Indicates that a global installation
is going to be uninstalled (affects OLM)")
cmd.Flags().Bool("olm", true, "Try to uninstall via OLM (Operator
Lifecycle Manager) if available")
cmd.Flags().String("olm-operator-name", "", "Name of the Camel K
operator in the OLM source or marketplace")
@@ -86,6 +88,7 @@ type uninstallCmdOptions struct {
SkipConfigMaps bool `mapstructure:"skip-config-maps"`
SkipRegistrySecret bool `mapstructure:"skip-registry-secret"`
SkipKamelets bool `mapstructure:"skip-kamelets"`
+ SkipCamelCatalogs bool `mapstructure:"skip-camel-catalogs"`
Global bool `mapstructure:"global"`
OlmEnabled bool `mapstructure:"olm"`
UninstallAll bool `mapstructure:"all"`
@@ -277,6 +280,13 @@ func (o *uninstallCmdOptions)
uninstallNamespaceResources(ctx context.Context, c
fmt.Fprintln(cmd.OutOrStdout(), "Camel K Platform Kamelets
removed from namespace", o.Namespace)
}
+ if !o.SkipCamelCatalogs {
+ if err := o.uninstallCamelCatalogs(ctx, c); err != nil {
+ return err
+ }
+ fmt.Fprintln(cmd.OutOrStdout(), "Camel K Platform Camel
Catalogs removed from namespace", o.Namespace)
+ }
+
return nil
}
@@ -487,6 +497,22 @@ func (o *uninstallCmdOptions) uninstallKamelets(ctx
context.Context, c client.Cl
return nil
}
+func (o *uninstallCmdOptions) uninstallCamelCatalogs(ctx context.Context, c
client.Client) error {
+ camelCatalogList := v1.NewCamelCatalogList()
+ if err := c.List(ctx, &camelCatalogList,
ctrl.InNamespace(o.Namespace)); err != nil {
+ return err
+ }
+
+ for i := range camelCatalogList.Items {
+ err := c.Delete(ctx, &camelCatalogList.Items[i])
+ if err != nil {
+ return err
+ }
+ }
+
+ return nil
+}
+
func createActionNotAuthorizedError(cmd *cobra.Command) error {
fmt.Fprintln(cmd.ErrOrStderr(), "Current user is not authorized to
remove cluster-wide objects like custom resource definitions or cluster roles")
msg := `login as cluster-admin and execute "kamel uninstall" or use
flags "--skip-crd --skip-cluster-roles --skip-cluster-role-bindings"`