mirror of
https://github.com/openfaas/faas.git
synced 2025-06-29 10:13:26 +00:00
Scale functions with namespace option
Allows alerts to trigger functions to scale when they also have an optional namespace set. Tested e2e with Kubernetes 1.15 and a non-default namespace. Signed-off-by: Alex Ellis (OpenFaaS Ltd) <alexellis2@gmail.com>
This commit is contained in:
committed by
Alex Ellis
parent
238ce1be23
commit
df4126d8f5
@ -7,23 +7,33 @@ import (
|
||||
"fmt"
|
||||
"log"
|
||||
"net/http"
|
||||
"strings"
|
||||
|
||||
"github.com/openfaas/faas/gateway/scaling"
|
||||
)
|
||||
|
||||
func getNamespace(defaultNamespace, fullName string) (string, string) {
|
||||
if index := strings.LastIndex(fullName, "."); index > -1 {
|
||||
return fullName[:index], fullName[index+1:]
|
||||
}
|
||||
return fullName, defaultNamespace
|
||||
}
|
||||
|
||||
// MakeScalingHandler creates handler which can scale a function from
|
||||
// zero to N replica(s). After scaling the next http.HandlerFunc will
|
||||
// be called. If the function is not ready after the configured
|
||||
// amount of attempts / queries then next will not be invoked and a status
|
||||
// will be returned to the client.
|
||||
func MakeScalingHandler(next http.HandlerFunc, config scaling.ScalingConfig) http.HandlerFunc {
|
||||
func MakeScalingHandler(next http.HandlerFunc, config scaling.ScalingConfig, defaultNamespace string) http.HandlerFunc {
|
||||
|
||||
scaler := scaling.NewFunctionScaler(config)
|
||||
|
||||
return func(w http.ResponseWriter, r *http.Request) {
|
||||
|
||||
functionName := getServiceName(r.URL.String())
|
||||
res := scaler.Scale(functionName)
|
||||
_, namespace := getNamespace(defaultNamespace, functionName)
|
||||
|
||||
res := scaler.Scale(functionName, namespace)
|
||||
|
||||
if !res.Found {
|
||||
errStr := fmt.Sprintf("error finding function %s: %s", functionName, res.Error.Error())
|
||||
|
Reference in New Issue
Block a user