Added ignorenotfound flag for all resources' deletion (#2293)
Treat \"resource not found\" as a successful delete if ignorenotfound flag passed while deletion of Fission resource.
This commit is contained in:
@@ -65,7 +65,7 @@ func Commands() *cobra.Command {
|
|||||||
}
|
}
|
||||||
wrapper.SetFlags(deleteCmd, flag.FlagSet{
|
wrapper.SetFlags(deleteCmd, flag.FlagSet{
|
||||||
Required: []flag.Flag{flag.CanaryName},
|
Required: []flag.Flag{flag.CanaryName},
|
||||||
Optional: []flag.Flag{flag.NamespaceCanary},
|
Optional: []flag.Flag{flag.NamespaceCanary, flag.IgnoreNotFound},
|
||||||
})
|
})
|
||||||
|
|
||||||
listCmd := &cobra.Command{
|
listCmd := &cobra.Command{
|
||||||
|
|||||||
@@ -25,6 +25,7 @@ import (
|
|||||||
"github.com/fission/fission/pkg/fission-cli/cliwrapper/cli"
|
"github.com/fission/fission/pkg/fission-cli/cliwrapper/cli"
|
||||||
"github.com/fission/fission/pkg/fission-cli/cmd"
|
"github.com/fission/fission/pkg/fission-cli/cmd"
|
||||||
flagkey "github.com/fission/fission/pkg/fission-cli/flag/key"
|
flagkey "github.com/fission/fission/pkg/fission-cli/flag/key"
|
||||||
|
"github.com/fission/fission/pkg/fission-cli/util"
|
||||||
)
|
)
|
||||||
|
|
||||||
type DeleteSubCommand struct {
|
type DeleteSubCommand struct {
|
||||||
@@ -43,6 +44,9 @@ func (opts *DeleteSubCommand) run(input cli.Input) error {
|
|||||||
|
|
||||||
err := opts.Client().V1().CanaryConfig().Delete(m)
|
err := opts.Client().V1().CanaryConfig().Delete(m)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
if input.Bool(flagkey.IgnoreNotFound) && util.IsNotFound(err) {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
return errors.Wrap(err, "error deleting canary config")
|
return errors.Wrap(err, "error deleting canary config")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -72,7 +72,7 @@ func Commands() *cobra.Command {
|
|||||||
}
|
}
|
||||||
wrapper.SetFlags(deleteCmd, flag.FlagSet{
|
wrapper.SetFlags(deleteCmd, flag.FlagSet{
|
||||||
Required: []flag.Flag{flag.EnvName},
|
Required: []flag.Flag{flag.EnvName},
|
||||||
Optional: []flag.Flag{flag.NamespaceEnvironment},
|
Optional: []flag.Flag{flag.NamespaceEnvironment, flag.IgnoreNotFound},
|
||||||
})
|
})
|
||||||
|
|
||||||
listCmd := &cobra.Command{
|
listCmd := &cobra.Command{
|
||||||
|
|||||||
@@ -25,6 +25,7 @@ import (
|
|||||||
"github.com/fission/fission/pkg/fission-cli/cliwrapper/cli"
|
"github.com/fission/fission/pkg/fission-cli/cliwrapper/cli"
|
||||||
"github.com/fission/fission/pkg/fission-cli/cmd"
|
"github.com/fission/fission/pkg/fission-cli/cmd"
|
||||||
flagkey "github.com/fission/fission/pkg/fission-cli/flag/key"
|
flagkey "github.com/fission/fission/pkg/fission-cli/flag/key"
|
||||||
|
"github.com/fission/fission/pkg/fission-cli/util"
|
||||||
)
|
)
|
||||||
|
|
||||||
type DeleteSubCommand struct {
|
type DeleteSubCommand struct {
|
||||||
@@ -43,6 +44,9 @@ func (opts *DeleteSubCommand) do(input cli.Input) error {
|
|||||||
|
|
||||||
err := opts.Client().V1().Environment().Delete(m)
|
err := opts.Client().V1().Environment().Delete(m)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
if input.Bool(flagkey.IgnoreNotFound) && util.IsNotFound(err) {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
return errors.Wrap(err, "error deleting environment")
|
return errors.Wrap(err, "error deleting environment")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -110,7 +110,7 @@ func Commands() *cobra.Command {
|
|||||||
}
|
}
|
||||||
wrapper.SetFlags(deleteCmd, flag.FlagSet{
|
wrapper.SetFlags(deleteCmd, flag.FlagSet{
|
||||||
Required: []flag.Flag{flag.FnName},
|
Required: []flag.Flag{flag.FnName},
|
||||||
Optional: []flag.Flag{flag.NamespaceFunction},
|
Optional: []flag.Flag{flag.NamespaceFunction, flag.IgnoreNotFound},
|
||||||
})
|
})
|
||||||
|
|
||||||
listCmd := &cobra.Command{
|
listCmd := &cobra.Command{
|
||||||
|
|||||||
@@ -25,6 +25,7 @@ import (
|
|||||||
"github.com/fission/fission/pkg/fission-cli/cliwrapper/cli"
|
"github.com/fission/fission/pkg/fission-cli/cliwrapper/cli"
|
||||||
"github.com/fission/fission/pkg/fission-cli/cmd"
|
"github.com/fission/fission/pkg/fission-cli/cmd"
|
||||||
flagkey "github.com/fission/fission/pkg/fission-cli/flag/key"
|
flagkey "github.com/fission/fission/pkg/fission-cli/flag/key"
|
||||||
|
"github.com/fission/fission/pkg/fission-cli/util"
|
||||||
)
|
)
|
||||||
|
|
||||||
type DeleteSubCommand struct {
|
type DeleteSubCommand struct {
|
||||||
@@ -43,6 +44,9 @@ func (opts *DeleteSubCommand) do(input cli.Input) error {
|
|||||||
|
|
||||||
err := opts.Client().V1().Function().Delete(m)
|
err := opts.Client().V1().Function().Delete(m)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
if input.Bool(flagkey.IgnoreNotFound) && util.IsNotFound(err) {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
return errors.Wrap(err, fmt.Sprintf("delete function '%v'", m.Name))
|
return errors.Wrap(err, fmt.Sprintf("delete function '%v'", m.Name))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -68,7 +68,7 @@ func Commands() *cobra.Command {
|
|||||||
RunE: wrapper.Wrapper(Delete),
|
RunE: wrapper.Wrapper(Delete),
|
||||||
}
|
}
|
||||||
wrapper.SetFlags(deleteCmd, flag.FlagSet{
|
wrapper.SetFlags(deleteCmd, flag.FlagSet{
|
||||||
Optional: []flag.Flag{flag.HtName, flag.HtFnFilter, flag.NamespaceTrigger},
|
Optional: []flag.Flag{flag.HtName, flag.HtFnFilter, flag.NamespaceTrigger, flag.IgnoreNotFound},
|
||||||
})
|
})
|
||||||
|
|
||||||
listCmd := &cobra.Command{
|
listCmd := &cobra.Command{
|
||||||
|
|||||||
@@ -26,6 +26,7 @@ import (
|
|||||||
"github.com/fission/fission/pkg/fission-cli/cliwrapper/cli"
|
"github.com/fission/fission/pkg/fission-cli/cliwrapper/cli"
|
||||||
"github.com/fission/fission/pkg/fission-cli/cmd"
|
"github.com/fission/fission/pkg/fission-cli/cmd"
|
||||||
flagkey "github.com/fission/fission/pkg/fission-cli/flag/key"
|
flagkey "github.com/fission/fission/pkg/fission-cli/flag/key"
|
||||||
|
"github.com/fission/fission/pkg/fission-cli/util"
|
||||||
"github.com/fission/fission/pkg/utils"
|
"github.com/fission/fission/pkg/utils"
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -94,6 +95,9 @@ func (opts *DeleteSubCommand) run(input cli.Input) error {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if errs.ErrorOrNil() != nil {
|
if errs.ErrorOrNil() != nil {
|
||||||
|
if input.Bool(flagkey.IgnoreNotFound) && util.IsNotFound(err) {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
return errors.Wrap(errs.ErrorOrNil(), "error deleting trigger(s)")
|
return errors.Wrap(errs.ErrorOrNil(), "error deleting trigger(s)")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -44,7 +44,7 @@ func Commands() *cobra.Command {
|
|||||||
}
|
}
|
||||||
wrapper.SetFlags(deleteCmd, flag.FlagSet{
|
wrapper.SetFlags(deleteCmd, flag.FlagSet{
|
||||||
Required: []flag.Flag{flag.KwFnName},
|
Required: []flag.Flag{flag.KwFnName},
|
||||||
Optional: []flag.Flag{flag.NamespaceTrigger},
|
Optional: []flag.Flag{flag.NamespaceTrigger, flag.IgnoreNotFound},
|
||||||
})
|
})
|
||||||
|
|
||||||
listCmd := &cobra.Command{
|
listCmd := &cobra.Command{
|
||||||
|
|||||||
@@ -25,6 +25,7 @@ import (
|
|||||||
"github.com/fission/fission/pkg/fission-cli/cliwrapper/cli"
|
"github.com/fission/fission/pkg/fission-cli/cliwrapper/cli"
|
||||||
"github.com/fission/fission/pkg/fission-cli/cmd"
|
"github.com/fission/fission/pkg/fission-cli/cmd"
|
||||||
flagkey "github.com/fission/fission/pkg/fission-cli/flag/key"
|
flagkey "github.com/fission/fission/pkg/fission-cli/flag/key"
|
||||||
|
"github.com/fission/fission/pkg/fission-cli/util"
|
||||||
)
|
)
|
||||||
|
|
||||||
type DeleteSubCommand struct {
|
type DeleteSubCommand struct {
|
||||||
@@ -57,6 +58,9 @@ func (opts *DeleteSubCommand) run(input cli.Input) error {
|
|||||||
Namespace: opts.namespace,
|
Namespace: opts.namespace,
|
||||||
})
|
})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
if input.Bool(flagkey.IgnoreNotFound) && util.IsNotFound(err) {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
return errors.Wrap(err, "error deleting kubewatch")
|
return errors.Wrap(err, "error deleting kubewatch")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -60,7 +60,7 @@ func Commands() *cobra.Command {
|
|||||||
}
|
}
|
||||||
wrapper.SetFlags(deleteCmd, flag.FlagSet{
|
wrapper.SetFlags(deleteCmd, flag.FlagSet{
|
||||||
Required: []flag.Flag{flag.MqtName},
|
Required: []flag.Flag{flag.MqtName},
|
||||||
Optional: []flag.Flag{flag.NamespaceTrigger},
|
Optional: []flag.Flag{flag.NamespaceTrigger, flag.IgnoreNotFound},
|
||||||
})
|
})
|
||||||
|
|
||||||
listCmd := &cobra.Command{
|
listCmd := &cobra.Command{
|
||||||
|
|||||||
@@ -25,6 +25,7 @@ import (
|
|||||||
"github.com/fission/fission/pkg/fission-cli/cliwrapper/cli"
|
"github.com/fission/fission/pkg/fission-cli/cliwrapper/cli"
|
||||||
"github.com/fission/fission/pkg/fission-cli/cmd"
|
"github.com/fission/fission/pkg/fission-cli/cmd"
|
||||||
flagkey "github.com/fission/fission/pkg/fission-cli/flag/key"
|
flagkey "github.com/fission/fission/pkg/fission-cli/flag/key"
|
||||||
|
"github.com/fission/fission/pkg/fission-cli/util"
|
||||||
)
|
)
|
||||||
|
|
||||||
type DeleteSubCommand struct {
|
type DeleteSubCommand struct {
|
||||||
@@ -55,6 +56,9 @@ func (opts *DeleteSubCommand) complete(input cli.Input) error {
|
|||||||
func (opts *DeleteSubCommand) run(input cli.Input) error {
|
func (opts *DeleteSubCommand) run(input cli.Input) error {
|
||||||
err := opts.Client().V1().MessageQueueTrigger().Delete(opts.metadata)
|
err := opts.Client().V1().MessageQueueTrigger().Delete(opts.metadata)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
if input.Bool(flagkey.IgnoreNotFound) && util.IsNotFound(err) {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
return errors.Wrap(err, "error deleting message queue trigger")
|
return errors.Wrap(err, "error deleting message queue trigger")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -74,7 +74,7 @@ func Commands() *cobra.Command {
|
|||||||
RunE: wrapper.Wrapper(Delete),
|
RunE: wrapper.Wrapper(Delete),
|
||||||
}
|
}
|
||||||
wrapper.SetFlags(deleteCmd, flag.FlagSet{
|
wrapper.SetFlags(deleteCmd, flag.FlagSet{
|
||||||
Optional: []flag.Flag{flag.PkgName, flag.PkgForce, flag.PkgOrphan, flag.NamespacePackage},
|
Optional: []flag.Flag{flag.PkgName, flag.PkgForce, flag.PkgOrphan, flag.NamespacePackage, flag.IgnoreNotFound},
|
||||||
})
|
})
|
||||||
|
|
||||||
listCmd := &cobra.Command{
|
listCmd := &cobra.Command{
|
||||||
|
|||||||
@@ -26,6 +26,7 @@ import (
|
|||||||
"github.com/fission/fission/pkg/fission-cli/cliwrapper/cli"
|
"github.com/fission/fission/pkg/fission-cli/cliwrapper/cli"
|
||||||
"github.com/fission/fission/pkg/fission-cli/cmd"
|
"github.com/fission/fission/pkg/fission-cli/cmd"
|
||||||
flagkey "github.com/fission/fission/pkg/fission-cli/flag/key"
|
flagkey "github.com/fission/fission/pkg/fission-cli/flag/key"
|
||||||
|
"github.com/fission/fission/pkg/fission-cli/util"
|
||||||
)
|
)
|
||||||
|
|
||||||
type DeleteSubCommand struct {
|
type DeleteSubCommand struct {
|
||||||
@@ -68,6 +69,9 @@ func (opts *DeleteSubCommand) run(input cli.Input) error {
|
|||||||
Name: opts.name,
|
Name: opts.name,
|
||||||
})
|
})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
if input.Bool(flagkey.IgnoreNotFound) && util.IsNotFound(err) {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
return errors.Wrap(err, "find package")
|
return errors.Wrap(err, "find package")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -53,7 +53,7 @@ func Commands() *cobra.Command {
|
|||||||
}
|
}
|
||||||
wrapper.SetFlags(deleteCmd, flag.FlagSet{
|
wrapper.SetFlags(deleteCmd, flag.FlagSet{
|
||||||
Required: []flag.Flag{flag.TtName},
|
Required: []flag.Flag{flag.TtName},
|
||||||
Optional: []flag.Flag{flag.NamespaceTrigger},
|
Optional: []flag.Flag{flag.NamespaceTrigger, flag.IgnoreNotFound},
|
||||||
})
|
})
|
||||||
|
|
||||||
listCmd := &cobra.Command{
|
listCmd := &cobra.Command{
|
||||||
|
|||||||
@@ -25,6 +25,7 @@ import (
|
|||||||
"github.com/fission/fission/pkg/fission-cli/cliwrapper/cli"
|
"github.com/fission/fission/pkg/fission-cli/cliwrapper/cli"
|
||||||
"github.com/fission/fission/pkg/fission-cli/cmd"
|
"github.com/fission/fission/pkg/fission-cli/cmd"
|
||||||
flagkey "github.com/fission/fission/pkg/fission-cli/flag/key"
|
flagkey "github.com/fission/fission/pkg/fission-cli/flag/key"
|
||||||
|
"github.com/fission/fission/pkg/fission-cli/util"
|
||||||
)
|
)
|
||||||
|
|
||||||
type DeleteSubCommand struct {
|
type DeleteSubCommand struct {
|
||||||
@@ -43,6 +44,9 @@ func (opts *DeleteSubCommand) do(input cli.Input) error {
|
|||||||
|
|
||||||
err := opts.Client().V1().TimeTrigger().Delete(m)
|
err := opts.Client().V1().TimeTrigger().Delete(m)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
if input.Bool(flagkey.IgnoreNotFound) && util.IsNotFound(err) {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
return errors.Wrap(err, "error deleting trigger")
|
return errors.Wrap(err, "error deleting trigger")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -76,6 +76,8 @@ var (
|
|||||||
|
|
||||||
KubeContext = Flag{Type: String, Name: flagkey.KubeContext, Usage: "Kubernetes context to be used for the execution of Fission commands", DefaultValue: ""}
|
KubeContext = Flag{Type: String, Name: flagkey.KubeContext, Usage: "Kubernetes context to be used for the execution of Fission commands", DefaultValue: ""}
|
||||||
|
|
||||||
|
IgnoreNotFound = Flag{Type: Bool, Name: flagkey.IgnoreNotFound, Usage: "Treat \"resource not found\" as a successful delete.", DefaultValue: false}
|
||||||
|
|
||||||
Labels = Flag{Type: String, Name: flagkey.Labels, Usage: "Comma separated labels to apply to the function. E.g. --labels=\"environment=dev,application=analytics\""}
|
Labels = Flag{Type: String, Name: flagkey.Labels, Usage: "Comma separated labels to apply to the function. E.g. --labels=\"environment=dev,application=analytics\""}
|
||||||
Annotation = Flag{Type: StringSlice, Name: flagkey.Annotation, Usage: "Annotation to apply to the function. To mention multiple annotations --annotation=\"abc.com/team=dev\" --annotation=\"foo=bar\""}
|
Annotation = Flag{Type: StringSlice, Name: flagkey.Annotation, Usage: "Annotation to apply to the function. To mention multiple annotations --annotation=\"abc.com/team=dev\" --annotation=\"foo=bar\""}
|
||||||
|
|
||||||
|
|||||||
@@ -29,6 +29,8 @@ const (
|
|||||||
Labels = "labels"
|
Labels = "labels"
|
||||||
Annotation = "annotation"
|
Annotation = "annotation"
|
||||||
|
|
||||||
|
IgnoreNotFound = "ignorenotfound"
|
||||||
|
|
||||||
NamespaceFunction = "fnNamespace"
|
NamespaceFunction = "fnNamespace"
|
||||||
NamespaceEnvironment = "envNamespace"
|
NamespaceEnvironment = "envNamespace"
|
||||||
NamespacePackage = "pkgNamespace"
|
NamespacePackage = "pkgNamespace"
|
||||||
|
|||||||
@@ -0,0 +1,25 @@
|
|||||||
|
/*
|
||||||
|
Copyright 2021 The Fission 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 util
|
||||||
|
|
||||||
|
import (
|
||||||
|
"strings"
|
||||||
|
)
|
||||||
|
|
||||||
|
func IsNotFound(err error) bool {
|
||||||
|
return strings.HasSuffix(strings.TrimSpace(err.Error()), "not found")
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user