Support for multiple HTTP verbs in routes/HTTPTrigger (#2064)

* Support for multiple HTTP verbs in routes/HTTPTrigger

Signed-off-by: Sanket Sudake <sanketsudake@gmail.com>

* Update pkg/apis/core/v1/types.go

Co-authored-by: Harsh Thakur <harshthakur9030@gmail.com>

* Fix fallbackurl for ingress

Signed-off-by: Sanket Sudake <sanketsudake@gmail.com>

Co-authored-by: Harsh Thakur <harshthakur9030@gmail.com>
This commit is contained in:
Sanket Sudake
2021-06-14 14:48:27 +05:30
committed by GitHub
co-authored by Harsh Thakur
parent 4038f0384b
commit 673ca25cf2
18 changed files with 166 additions and 39 deletions
+5
View File
@@ -658,10 +658,15 @@ type (
// +optional
Prefix *string `json:"prefix,omitempty"`
// Deprecated: Use Methods instead of Method.
// HTTP method to access a function.
// +optional
Method string `json:"method"`
// HTTP methods to access a function
// +optional
Methods []string `json:"methods,omitempty"`
// FunctionReference is a reference to the target function.
FunctionReference FunctionReference `json:"functionref"`
+16 -5
View File
@@ -400,12 +400,23 @@ func (spec EnvironmentSpec) Validate() error {
func (spec HTTPTriggerSpec) Validate() error {
result := &multierror.Error{}
checkMethod := func(method string, result *multierror.Error) *multierror.Error {
switch method {
case http.MethodGet, http.MethodHead, http.MethodPost, http.MethodPut, http.MethodPatch,
http.MethodDelete, http.MethodConnect, http.MethodOptions, http.MethodTrace: // no op
default:
result = multierror.Append(result, MakeValidationErr(ErrorUnsupportedType, "HTTPTriggerSpec.Method", spec.Method, "not a valid HTTP method"))
}
return result
}
if len(spec.Methods) > 0 {
for _, method := range spec.Methods {
result = checkMethod(method, result)
}
}
switch spec.Method {
case http.MethodGet, http.MethodHead, http.MethodPost, http.MethodPut, http.MethodPatch,
http.MethodDelete, http.MethodConnect, http.MethodOptions, http.MethodTrace: // no op
default:
result = multierror.Append(result, MakeValidationErr(ErrorUnsupportedType, "HTTPTriggerSpec.Method", spec.Method, "not a valid HTTP method"))
if len(spec.Method) > 0 {
result = checkMethod(spec.Method, result)
}
result = multierror.Append(result, spec.FunctionReference.Validate())
@@ -512,6 +512,11 @@ func (in *HTTPTriggerSpec) DeepCopyInto(out *HTTPTriggerSpec) {
*out = new(string)
**out = **in
}
if in.Methods != nil {
in, out := &in.Methods, &out.Methods
*out = make([]string, len(*in))
copy(*out, *in)
}
in.FunctionReference.DeepCopyInto(&out.FunctionReference)
in.IngressConfig.DeepCopyInto(&out.IngressConfig)
return