List/Delete HTTP triggers by function (#1327)

Previously, a user has to delete HTTP triggers point to
the same function one by one. This PR adds new flag --function
to list & delete commands. So that user can delete or list all
triggers with the same function. However, this feature is not
working for triggers with canary deployment setup.
This commit is contained in:
Ta-Ching Chen
2019-09-27 17:21:11 +08:00
committed by GitHub
parent b5341edec0
commit f8af8b91f5
2 changed files with 50 additions and 13 deletions
+46 -10
View File
@@ -23,6 +23,7 @@ import (
"strings"
"text/tabwriter"
"github.com/hashicorp/go-multierror"
"github.com/satori/go.uuid"
"github.com/urfave/cli"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
@@ -289,25 +290,56 @@ func htUpdate(c *cli.Context) error {
func htDelete(c *cli.Context) error {
client := util.GetApiClient(c.GlobalString("server"))
htName := c.String("name")
if len(htName) == 0 {
log.Fatal("Need name of trigger to delete, use --name")
fnName := c.String("function")
if len(htName) == 0 && len(fnName) == 0 {
log.Fatal("Need --name or --function")
} else if len(htName) > 0 && len(fnName) > 0 {
log.Fatal("Need either of --name or --function and not both arguments")
}
triggerNamespace := c.String("triggerNamespace")
err := client.HTTPTriggerDelete(&metav1.ObjectMeta{
Name: htName,
Namespace: triggerNamespace,
})
util.CheckErr(err, "delete trigger")
triggers, err := client.HTTPTriggerList(triggerNamespace)
util.CheckErr(err, "get HTTP trigger list")
var triggersToDelete []string
if len(fnName) > 0 {
for _, trigger := range triggers {
// TODO: delete canary http triggers as well.
if trigger.Spec.FunctionReference.Name == fnName {
triggersToDelete = append(triggersToDelete, trigger.Metadata.Name)
}
}
} else {
triggersToDelete = []string{htName}
}
errs := &multierror.Error{}
for _, name := range triggersToDelete {
err := client.HTTPTriggerDelete(&metav1.ObjectMeta{
Name: name,
Namespace: triggerNamespace,
})
if err != nil {
errs = multierror.Append(errs, err)
} else {
fmt.Printf("trigger '%v' deleted\n", name)
}
}
util.CheckErr(errs.ErrorOrNil(), "delete trigger(s)")
fmt.Printf("trigger '%v' deleted\n", htName)
return nil
}
func htList(c *cli.Context) error {
client := util.GetApiClient(c.GlobalString("server"))
triggerNamespace := c.String("triggerNamespace")
fnName := c.String("function")
hts, err := client.HTTPTriggerList(triggerNamespace)
util.CheckErr(err, "list HTTP triggers")
@@ -315,9 +347,13 @@ func htList(c *cli.Context) error {
w := tabwriter.NewWriter(os.Stdout, 0, 0, 1, ' ', 0)
fmt.Fprintf(w, "%v\t%v\t%v\t%v\t%v\t%v\n", "NAME", "METHOD", "HOST", "URL", "INGRESS", "FUNCTION_NAME")
for _, ht := range hts {
fmt.Fprintf(w, "%v\t%v\t%v\t%v\t%v\t%v\n",
ht.Metadata.Name, ht.Spec.Method, ht.Spec.Host, ht.Spec.RelativeURL, ht.Spec.CreateIngress, ht.Spec.FunctionReference.Name)
// TODO: list canary http triggers as well.
if len(fnName) == 0 || (len(fnName) > 0 && fnName == ht.Spec.FunctionReference.Name) {
fmt.Fprintf(w, "%v\t%v\t%v\t%v\t%v\t%v\n",
ht.Metadata.Name, ht.Spec.Method, ht.Spec.Host, ht.Spec.RelativeURL, ht.Spec.CreateIngress, ht.Spec.FunctionReference.Name)
}
}
w.Flush()