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 7a299a9c8a627bb5357e84a120d5bde5f3db6614 Author: Pasquale Congiusti <pasquale.congiu...@gmail.com> AuthorDate: Mon Apr 3 17:56:45 2023 +0200 Revert "fix(cmd): rebuild KameletBindings" This reverts commit c427f8d11efbabb4121e0efa8d097d5921b6a078. --- pkg/cmd/rebuild.go | 92 ++----------------------------------------------- pkg/cmd/rebuild_test.go | 82 +++++++------------------------------------ 2 files changed, 14 insertions(+), 160 deletions(-) diff --git a/pkg/cmd/rebuild.go b/pkg/cmd/rebuild.go index 60150ca00..8d30feb8d 100644 --- a/pkg/cmd/rebuild.go +++ b/pkg/cmd/rebuild.go @@ -22,15 +22,11 @@ import ( "github.com/pkg/errors" "github.com/spf13/cobra" - "k8s.io/apimachinery/pkg/labels" - "k8s.io/apimachinery/pkg/selection" k8sclient "sigs.k8s.io/controller-runtime/pkg/client" 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/kubernetes" ) func newCmdRebuild(rootCmdOptions *RootCmdOptions) (*cobra.Command, *rebuildCmdOptions) { @@ -72,80 +68,11 @@ func (o *rebuildCmdOptions) validate(args []string) error { } func (o *rebuildCmdOptions) run(cmd *cobra.Command, args []string) error { - errKlbs := o.rebuildKameletBindingType(cmd, args) - errIts := o.rebuildIntegrationType(cmd, args) - - if errIts != nil && errKlbs != nil { - return errors.Wrap(errIts, errKlbs.Error()) - } - - return nil -} - -func (o *rebuildCmdOptions) rebuildKameletBindingType(cmd *cobra.Command, args []string) error { c, err := o.GetCmdClient() if err != nil { return err } - var kameletBindings []v1alpha1.KameletBinding - if o.RebuildAll { - if kameletBindings, err = o.listAllKameletBindings(c); err != nil { - return err - } - } else if len(args) > 0 { - if kameletBindings, err = o.getKameletBindings(c, args); err != nil { - return err - } - } - - if err = o.rebuildKameletBindings(c, kameletBindings); err != nil { - return err - } - - fmt.Fprintln(cmd.OutOrStdout(), len(kameletBindings), "kamelet bindings have been rebuilt") - return nil -} - -func (o *rebuildCmdOptions) listAllKameletBindings(c client.Client) ([]v1alpha1.KameletBinding, error) { - list := v1alpha1.NewKameletBindingList() - if err := c.List(o.Context, &list, k8sclient.InNamespace(o.Namespace)); err != nil { - return nil, errors.Wrap(err, fmt.Sprintf("could not retrieve kamelet bindings from namespace %s", o.Namespace)) - } - return list.Items, nil -} -func (o *rebuildCmdOptions) getKameletBindings(c client.Client, names []string) ([]v1alpha1.KameletBinding, error) { - klbs := make([]v1alpha1.KameletBinding, 0, len(names)) - for _, n := range names { - klb := v1alpha1.NewKameletBinding(o.Namespace, n) - key := k8sclient.ObjectKey{ - Name: n, - Namespace: o.Namespace, - } - if err := c.Get(o.Context, key, &klb); err != nil { - return nil, errors.Wrap(err, fmt.Sprintf("could not find kamelet binding %s in namespace %s", klb.Name, o.Namespace)) - } - klbs = append(klbs, klb) - } - return klbs, nil -} - -func (o *rebuildCmdOptions) rebuildKameletBindings(c k8sclient.StatusClient, kameletbindings []v1alpha1.KameletBinding) error { - for _, i := range kameletbindings { - klb := i - klb.Status = v1alpha1.KameletBindingStatus{} - if err := c.Status().Update(o.Context, &klb); err != nil { - return errors.Wrap(err, fmt.Sprintf("could not rebuild kamelet binding %s in namespace %s", klb.Name, o.Namespace)) - } - } - return nil -} - -func (o *rebuildCmdOptions) rebuildIntegrationType(cmd *cobra.Command, args []string) error { - c, err := o.GetCmdClient() - if err != nil { - return err - } var integrations []v1.Integration if o.RebuildAll { if integrations, err = o.listAllIntegrations(c); err != nil { @@ -167,19 +94,7 @@ func (o *rebuildCmdOptions) rebuildIntegrationType(cmd *cobra.Command, args []st func (o *rebuildCmdOptions) listAllIntegrations(c client.Client) ([]v1.Integration, error) { list := v1.NewIntegrationList() - // Integrations controlled by KameletBindings are not included - excludeItsFromKlbs, err := labels.NewRequirement(kubernetes.CamelCreatorLabelKind, selection.NotEquals, []string{ - "KameletBinding", - }) - if err != nil { - return list.Items, err - } - if err := c.List(o.Context, &list, - k8sclient.InNamespace(o.Namespace), - k8sclient.MatchingLabelsSelector{ - Selector: labels.NewSelector().Add(*excludeItsFromKlbs), - }, - ); err != nil { + if err := c.List(o.Context, &list, k8sclient.InNamespace(o.Namespace)); err != nil { return nil, errors.Wrap(err, fmt.Sprintf("could not retrieve integrations from namespace %s", o.Namespace)) } return list.Items, nil @@ -196,10 +111,7 @@ func (o *rebuildCmdOptions) getIntegrations(c client.Client, names []string) ([] if err := c.Get(o.Context, key, &it); err != nil { return nil, errors.Wrap(err, fmt.Sprintf("could not find integration %s in namespace %s", it.Name, o.Namespace)) } - // Integrations controlled by KameletBindings are not included - if it.Labels[kubernetes.CamelCreatorLabelKind] != "KameletBinding" { - ints = append(ints, it) - } + ints = append(ints, it) } return ints, nil } diff --git a/pkg/cmd/rebuild_test.go b/pkg/cmd/rebuild_test.go index 936a5d2ad..021c1cf6b 100644 --- a/pkg/cmd/rebuild_test.go +++ b/pkg/cmd/rebuild_test.go @@ -20,22 +20,18 @@ package cmd import ( "testing" - "github.com/apache/camel-k/v2/pkg/util/kubernetes" "github.com/apache/camel-k/v2/pkg/util/test" "github.com/spf13/cobra" "github.com/stretchr/testify/assert" - "k8s.io/apimachinery/pkg/runtime" ) const cmdRebuild = "rebuild" // nolint: unparam -func initializeRebuildOptions(t *testing.T, initObjs ...runtime.Object) (*rebuildCmdOptions, *cobra.Command, RootCmdOptions) { +func initializeRebuildCmdOptions(t *testing.T) (*rebuildCmdOptions, *cobra.Command, RootCmdOptions) { t.Helper() - fakeClient, err := test.NewFakeClient(initObjs...) - assert.Nil(t, err) - options, rootCmd := kamelTestPreAddCommandInitWithClient(fakeClient) - options.Namespace = "default" + + options, rootCmd := kamelTestPreAddCommandInit() rebuildCmdOptions := addTestRebuildCmd(*options, rootCmd) kamelTestPostAddCommandInit(t, rootCmd) @@ -43,82 +39,28 @@ func initializeRebuildOptions(t *testing.T, initObjs ...runtime.Object) (*rebuil } func addTestRebuildCmd(options RootCmdOptions, rootCmd *cobra.Command) *rebuildCmdOptions { + // add a testing version of rebuild Command rebuildCmd, rebuildOptions := newCmdRebuild(&options) + rebuildCmd.RunE = func(c *cobra.Command, args []string) error { + return nil + } + rebuildCmd.PostRunE = func(c *cobra.Command, args []string) error { + return nil + } rebuildCmd.Args = test.ArbitraryArgs rootCmd.AddCommand(rebuildCmd) return rebuildOptions } func TestRebuildNonExistingFlag(t *testing.T) { - _, rootCmd, _ := initializeRebuildOptions(t) + _, rootCmd, _ := initializeRebuildCmdOptions(t) _, err := test.ExecuteCommand(rootCmd, cmdRebuild, "--nonExistingFlag") assert.NotNil(t, err) } func TestRebuildAllFlag(t *testing.T) { - rebuildCmdOptions, rootCmd, _ := initializeRebuildOptions(t) + rebuildCmdOptions, rootCmd, _ := initializeRebuildCmdOptions(t) _, err := test.ExecuteCommand(rootCmd, cmdRebuild, "--all") assert.Nil(t, err) assert.Equal(t, true, rebuildCmdOptions.RebuildAll) } - -func TestRebuildAllKameletBindingsAndIntegrations(t *testing.T) { - defaultIntegration := nominalIntegration("my-it-test") - defaultKB := nominalKameletBinding("my-kb-test") - itGeneratedByKlb := nominalIntegration("my-kb-test") - itGeneratedByKlb.Labels = map[string]string{ - kubernetes.CamelCreatorLabelKind: "KameletBinding", - } - - _, rebuildCmd, _ := initializeRebuildOptions(t, &defaultIntegration, &defaultKB, &itGeneratedByKlb) - output, err := test.ExecuteCommand(rebuildCmd, cmdRebuild, "--all") - assert.Nil(t, err) - assert.Contains(t, output, "1 kamelet bindings have been rebuilt") - assert.Contains(t, output, "1 integrations have been rebuilt") -} - -func TestRebuildNone(t *testing.T) { - defaultIntegration := nominalIntegration("my-it-test") - defaultKB := nominalKameletBinding("my-kb-test") - itGeneratedByKlb := nominalIntegration("my-kb-test") - itGeneratedByKlb.Labels = map[string]string{ - kubernetes.CamelCreatorLabelKind: "KameletBinding", - } - - _, rebuildCmd, _ := initializeRebuildOptions(t, &defaultIntegration, &defaultKB, &itGeneratedByKlb) - output, err := test.ExecuteCommand(rebuildCmd, cmdRebuild, "my-missing") - assert.NotNil(t, err) - assert.NotContains(t, output, "have been rebuilt") - assert.Contains(t, output, "could not find kamelet binding my-missing in namespace default") - assert.Contains(t, output, "could not find integration my-missing in namespace default") -} - -func TestRebuildKameletBindingOnly(t *testing.T) { - defaultIntegration := nominalIntegration("my-it-test") - defaultKB := nominalKameletBinding("my-kb-test") - itGeneratedByKlb := nominalIntegration("my-kb-test") - itGeneratedByKlb.Labels = map[string]string{ - kubernetes.CamelCreatorLabelKind: "KameletBinding", - } - - _, rebuildCmd, _ := initializeRebuildOptions(t, &defaultIntegration, &defaultKB, &itGeneratedByKlb) - output, err := test.ExecuteCommand(rebuildCmd, cmdRebuild, "my-kb-test") - assert.Nil(t, err) - assert.Contains(t, output, "1 kamelet bindings have been rebuilt") - assert.NotContains(t, output, "1 integrations have been rebuilt") -} - -func TestRebuildIntegrationOnly(t *testing.T) { - defaultIntegration := nominalIntegration("my-it-test") - defaultKB := nominalKameletBinding("my-kb-test") - itGeneratedByKlb := nominalIntegration("my-kb-test") - itGeneratedByKlb.Labels = map[string]string{ - kubernetes.CamelCreatorLabelKind: "KameletBinding", - } - - _, rebuildCmd, _ := initializeRebuildOptions(t, &defaultIntegration, &defaultKB, &itGeneratedByKlb) - output, err := test.ExecuteCommand(rebuildCmd, cmdRebuild, "my-it-test") - assert.Nil(t, err) - assert.NotContains(t, output, "1 kamelet bindings have been rebuilt") - assert.Contains(t, output, "1 integrations have been rebuilt") -}