diff --git a/controller/httpTriggerApi.go b/controller/httpTriggerApi.go index a6b1c3b3..111e7a1b 100644 --- a/controller/httpTriggerApi.go +++ b/controller/httpTriggerApi.go @@ -51,9 +51,9 @@ func (a *API) checkHTTPTriggerDuplicates(t *crd.HTTPTrigger) error { return err } for _, ht := range triggers.Items { - if ht.Spec.RelativeURL == t.Spec.RelativeURL && ht.Spec.Method == t.Spec.Method { + if ht.Spec.RelativeURL == t.Spec.RelativeURL && ht.Spec.Method == t.Spec.Method && ht.Spec.Host == t.Spec.Host { return fission.MakeError(fission.ErrorNameExists, - fmt.Sprintf("HTTPTrigger with same URL & method already exists (%v)", + fmt.Sprintf("HTTPTrigger with same Host, URL & method already exists (%v)", ht.Metadata.Name)) } } diff --git a/fission/httptrigger.go b/fission/httptrigger.go index d83f7ca3..ec155630 100644 --- a/fission/httptrigger.go +++ b/fission/httptrigger.go @@ -157,10 +157,10 @@ 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\n", "NAME", "METHOD", "URL", "FUNCTION_NAME") + fmt.Fprintf(w, "%v\t%v\t%v\t%v\t%v\n", "NAME", "METHOD", "HOST", "URL", "FUNCTION_NAME") for _, ht := range hts { - fmt.Fprintf(w, "%v\t%v\t%v\t%v\n", - ht.Metadata.Name, ht.Spec.Method, ht.Spec.RelativeURL, ht.Spec.FunctionReference.Name) + fmt.Fprintf(w, "%v\t%v\t%v\t%v\t%v\n", + ht.Metadata.Name, ht.Spec.Method, ht.Spec.Host, ht.Spec.RelativeURL, ht.Spec.FunctionReference.Name) } w.Flush() diff --git a/router/httpTriggers.go b/router/httpTriggers.go index 59ca1fdb..5d6b43a7 100644 --- a/router/httpTriggers.go +++ b/router/httpTriggers.go @@ -116,7 +116,12 @@ func (ts *HTTPTriggerSet) getRouter() *mux.Router { function: rr.functionMetadata, executor: ts.executor, } - muxRouter.HandleFunc(trigger.Spec.RelativeURL, fh.handler).Methods(trigger.Spec.Method) + + ht := muxRouter.HandleFunc(trigger.Spec.RelativeURL, fh.handler) + ht.Methods(trigger.Spec.Method) + if trigger.Spec.Host != "" { + ht.Host(trigger.Spec.Host) + } if trigger.Spec.RelativeURL == "/" && trigger.Spec.Method == "GET" { homeHandled = true }