This is an automated email from the ASF dual-hosted git repository. nferraro pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/camel-k.git
commit ec48dc52876e5fff77338a8252399f00c4d25944 Author: Dmitry Volodin <[email protected]> AuthorDate: Wed Sep 19 17:06:16 2018 +0300 Improving code --- pkg/client/cmd/delete.go | 57 +++++++++++++++++++++++++++++------------------- 1 file changed, 35 insertions(+), 22 deletions(-) diff --git a/pkg/client/cmd/delete.go b/pkg/client/cmd/delete.go index 3b0f25a..78acfc8 100644 --- a/pkg/client/cmd/delete.go +++ b/pkg/client/cmd/delete.go @@ -21,10 +21,12 @@ import ( "errors" "fmt" "os" + "strconv" "github.com/apache/camel-k/pkg/apis/camel/v1alpha1" "github.com/operator-framework/operator-sdk/pkg/sdk" "github.com/spf13/cobra" + k8errors "k8s.io/apimachinery/pkg/api/errors" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" ) @@ -34,12 +36,10 @@ func newCmdDelete(rootCmdOptions *RootCmdOptions) *cobra.Command { RootCmdOptions: rootCmdOptions, } cmd := cobra.Command{ - Use: "delete", + Use: "delete [integration1] [integration2] ...", Short: "Delete integrations deployed on Kubernetes", RunE: options.run, } - - cmd.Flags().StringVar(&options.integrationName, "name", "", "The integration name") cmd.Flags().BoolVar(&options.deleteAll, "all", false, "Delete all integrations") cmd.ParseFlags(os.Args) @@ -48,8 +48,7 @@ func newCmdDelete(rootCmdOptions *RootCmdOptions) *cobra.Command { type deleteCmdOptions struct { *RootCmdOptions - integrationName string - deleteAll bool + deleteAll bool } func (o *deleteCmdOptions) run(cmd *cobra.Command, args []string) error { @@ -62,24 +61,32 @@ func (o *deleteCmdOptions) run(cmd *cobra.Command, args []string) error { }, } - integration := v1alpha1.Integration{ - TypeMeta: metav1.TypeMeta{ - Kind: v1alpha1.IntegrationKind, - APIVersion: v1alpha1.SchemeGroupVersion.String(), - }, - ObjectMeta: metav1.ObjectMeta{ - Namespace: namespace, - Name: o.integrationName, - }, - } + if len(args) != 0 && !o.deleteAll { + i := 0 + for i < len(args) { + integration := v1alpha1.Integration{ + TypeMeta: metav1.TypeMeta{ + Kind: v1alpha1.IntegrationKind, + APIVersion: v1alpha1.SchemeGroupVersion.String(), + }, + ObjectMeta: metav1.ObjectMeta{ + Namespace: namespace, + Name: args[i], + }, + } - if o.integrationName != "" && !o.deleteAll { - err := sdk.Delete(&integration) - if err != nil { - return err + err := sdk.Delete(&integration) + if err != nil { + if k8errors.IsNotFound(err) { + fmt.Println("Integration " + integration.GetName() + " not found. Skipped.") + } else { + return err + } + } else { + fmt.Println("Integration " + integration.GetName() + " deleted") + } + i++ } - - fmt.Println("Integration " + integration.GetName() + " deleted") } else if o.deleteAll { //Looks like Operator SDK doesn't support deletion of all objects with one command err := sdk.List(namespace, &integrationList) @@ -92,9 +99,15 @@ func (o *deleteCmdOptions) run(cmd *cobra.Command, args []string) error { return err } } + if len(integrationList.Items) == 0 { + fmt.Println("Nothing to delete") + } else { + fmt.Println(strconv.Itoa(len(integrationList.Items)) + " integration(s) deleted") + } } else { - err := errors.New("An integration name or --all option must be specified") + err := errors.New("The integration name(s) or --all option must be specified") return err + } return nil
