From 9c21b8df249233b809cabe3afae646e948731f71 Mon Sep 17 00:00:00 2001 From: Navid Shaikh Date: Fri, 12 Apr 2019 05:23:58 +0530 Subject: [PATCH] Adds service delete command (#63) * Adds service delete command This chageset adds `service delete` command, able to delete a service at a time. Fixes #49 ``` kn service delete --help Delete a service Usage: kn service delete [flags] Aliases: delete, del, d Examples: # Delete a service 'svc1' in default namespace kn service delete svc1 # Delete a service 'svc2' in 'ns1' namespace kn service delete svc2 -n ns1 ``` * Removes aliases, PreRunE and addresses review comments --- pkg/kn/commands/service.go | 1 + pkg/kn/commands/service_delete.go | 57 +++++++++++++++++++++++++++++++ 2 files changed, 58 insertions(+) create mode 100644 pkg/kn/commands/service_delete.go diff --git a/pkg/kn/commands/service.go b/pkg/kn/commands/service.go index 34710f941f..1f0802c933 100644 --- a/pkg/kn/commands/service.go +++ b/pkg/kn/commands/service.go @@ -26,5 +26,6 @@ func NewServiceCommand(p *KnParams) *cobra.Command { serviceCmd.AddCommand(NewServiceListCommand(p)) serviceCmd.AddCommand(NewServiceDescribeCommand(p)) serviceCmd.AddCommand(NewServiceCreateCommand(p)) + serviceCmd.AddCommand(NewServiceDeleteCommand(p)) return serviceCmd } diff --git a/pkg/kn/commands/service_delete.go b/pkg/kn/commands/service_delete.go new file mode 100644 index 0000000000..f4fbacd709 --- /dev/null +++ b/pkg/kn/commands/service_delete.go @@ -0,0 +1,57 @@ +// Copyright © 2018 The Knative Authors +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package commands + +import ( + "errors" + "fmt" + "github.com/spf13/cobra" + v1 "k8s.io/apimachinery/pkg/apis/meta/v1" +) + +// NewServiceDeleteCommand represent 'service delete' command +func NewServiceDeleteCommand(p *KnParams) *cobra.Command { + serviceDeleteCommand := &cobra.Command{ + Use: "delete NAME", + Short: "Delete a service.", + Example: ` + # Delete a service 'svc1' in default namespace + kn service delete svc1 + + # Delete a service 'svc2' in 'ns1' namespace + kn service delete svc2 -n ns1`, + + RunE: func(cmd *cobra.Command, args []string) error { + if len(args) != 1 { + return errors.New("requires the service name.") + } + client, err := p.ServingFactory() + if err != nil { + return err + } + namespace := cmd.Flag("namespace").Value.String() + err = client.Services(namespace).Delete( + args[0], + &v1.DeleteOptions{}, + ) + if err != nil { + return err + } + fmt.Fprintf(cmd.OutOrStdout(), "Deleted %s in %s namespace.\n", args[0], namespace) + return nil + }, + } + return serviceDeleteCommand +}