added client generator inteface (#2854)

* added client generator inteface
* start router service asynchronously

Signed-off-by: Vardhaman Surana <vardhaman.surana@infracloud.io>
This commit is contained in:
Vardhaman Surana
2023-10-18 18:59:28 +05:30
committed by GitHub
parent c6329ee3db
commit fc97b7609b
6 changed files with 46 additions and 45 deletions
+1 -2
View File
@@ -31,10 +31,9 @@ import (
)
// Start the buildermgr service.
func Start(ctx context.Context, logger *zap.Logger, storageSvcUrl string) error {
func Start(ctx context.Context, clientGen crd.ClientGeneratorInterface, logger *zap.Logger, storageSvcUrl string) error {
bmLogger := logger.Named("builder_manager")
clientGen := crd.NewClientGenerator()
fissionClient, err := clientGen.GetFissionClient()
if err != nil {
return errors.Wrap(err, "failed to get fission client")
+13 -3
View File
@@ -35,9 +35,19 @@ import (
"github.com/fission/fission/pkg/utils"
)
type ClientGenerator struct {
restConfig *rest.Config
}
type (
ClientGeneratorInterface interface {
GetFissionClient() (versioned.Interface, error)
GetKubernetesClient() (kubernetes.Interface, error)
GetApiExtensionsClient() (apiextensionsclient.Interface, error)
GetMetricsClient() (metricsclient.Interface, error)
GetDynamicClient() (dynamic.Interface, error)
}
ClientGenerator struct {
restConfig *rest.Config
}
)
func (cg *ClientGenerator) getRestConfig() (*rest.Config, error) {
if cg.restConfig != nil {
+2 -2
View File
@@ -249,8 +249,8 @@ func (executor *Executor) getFunctionServiceFromCache(ctx context.Context, fn *f
// StartExecutor Starts executor and the executor components such as Poolmgr,
// deploymgr and potential future executor types
func StartExecutor(ctx context.Context, logger *zap.Logger, port int) error {
clientGen := crd.NewClientGenerator()
func StartExecutor(ctx context.Context, clientGen crd.ClientGeneratorInterface, logger *zap.Logger, port int) error {
fissionClient, err := clientGen.GetFissionClient()
if err != nil {
return errors.Wrap(err, "error making the fission client")
+1 -1
View File
@@ -182,7 +182,7 @@ func TestExecutor(t *testing.T) {
// create poolmgr
port := 9999
err = StartExecutor(ctx, logger, port)
err = StartExecutor(ctx, crd.NewClientGenerator(), logger, port)
if err != nil {
log.Panicf("failed to start poolmgr: %v", err)
}
+14 -26
View File
@@ -47,6 +47,7 @@ import (
"time"
"github.com/gorilla/mux"
"github.com/pkg/errors"
"go.opentelemetry.io/otel"
"go.uber.org/zap"
@@ -87,22 +88,21 @@ func serve(ctx context.Context, logger *zap.Logger, port int,
}
// Start starts a router
func Start(ctx context.Context, logger *zap.Logger, port int, executorURL string) {
func Start(ctx context.Context, clientGen crd.ClientGeneratorInterface, logger *zap.Logger, port int, executorURL string) error {
fmap := makeFunctionServiceMap(logger, time.Minute)
clientGen := crd.NewClientGenerator()
fissionClient, err := clientGen.GetFissionClient()
if err != nil {
logger.Fatal("error making the fission client", zap.Error(err))
return errors.Wrap(err, "error making the fission client")
}
kubeClient, err := clientGen.GetKubernetesClient()
if err != nil {
logger.Fatal("error making the kube client", zap.Error(err))
return errors.Wrap(err, "error making the kube client")
}
err = crd.WaitForCRDs(ctx, logger, fissionClient)
if err != nil {
logger.Fatal("error waiting for CRDs", zap.Error(err))
return errors.Wrap(err, "error waiting for CRDs")
}
executor := executorClient.MakeClient(logger, executorURL)
@@ -110,50 +110,37 @@ func Start(ctx context.Context, logger *zap.Logger, port int, executorURL string
timeoutStr := os.Getenv("ROUTER_ROUND_TRIP_TIMEOUT")
timeout, err := time.ParseDuration(timeoutStr)
if err != nil {
logger.Fatal("failed to parse timeout duration from 'ROUTER_ROUND_TRIP_TIMEOUT'",
zap.Error(err),
zap.String("value", timeoutStr))
return errors.Wrap(err, fmt.Sprintf("failed to parse timeout duration value('%s') from 'ROUTER_ROUND_TRIP_TIMEOUT'", timeoutStr))
}
timeoutExponentStr := os.Getenv("ROUTER_ROUNDTRIP_TIMEOUT_EXPONENT")
timeoutExponent, err := strconv.Atoi(timeoutExponentStr)
if err != nil {
logger.Fatal("failed to parse timeout exponent from 'ROUTER_ROUNDTRIP_TIMEOUT_EXPONENT'",
zap.Error(err),
zap.String("value", timeoutExponentStr))
return errors.Wrap(err, fmt.Sprintf("failed to parse timeout exponent value('%s') from 'ROUTER_ROUNDTRIP_TIMEOUT_EXPONENT'", timeoutExponentStr))
}
keepAliveTimeStr := os.Getenv("ROUTER_ROUND_TRIP_KEEP_ALIVE_TIME")
keepAliveTime, err := time.ParseDuration(keepAliveTimeStr)
if err != nil {
logger.Fatal("failed to parse keep alive duration from 'ROUTER_ROUND_TRIP_KEEP_ALIVE_TIME'",
zap.Error(err),
zap.String("value", keepAliveTimeStr))
return errors.Wrap(err, fmt.Sprintf("failed to parse keep alive duration value('%s') from 'ROUTER_ROUND_TRIP_KEEP_ALIVE_TIME'", keepAliveTimeStr))
}
disableKeepAliveStr := os.Getenv("ROUTER_ROUND_TRIP_DISABLE_KEEP_ALIVE")
disableKeepAlive, err := strconv.ParseBool(disableKeepAliveStr)
if err != nil {
disableKeepAlive = true
logger.Fatal("failed to parse enable keep alive from 'ROUTER_ROUND_TRIP_DISABLE_KEEP_ALIVE'",
zap.Error(err),
zap.String("value", disableKeepAliveStr))
return errors.Wrap(err, fmt.Sprintf("failed to parse enable keep alive value('%s') from 'ROUTER_ROUND_TRIP_DISABLE_KEEP_ALIVE'", disableKeepAliveStr))
}
maxRetriesStr := os.Getenv("ROUTER_ROUND_TRIP_MAX_RETRIES")
maxRetries, err := strconv.Atoi(maxRetriesStr)
if err != nil {
logger.Fatal("failed to parse max retries from 'ROUTER_ROUND_TRIP_MAX_RETRIES'",
zap.Error(err),
zap.String("value", maxRetriesStr))
return errors.Wrap(err, fmt.Sprintf("failed to parse max retries value('%s') from 'ROUTER_ROUND_TRIP_MAX_RETRIES'", maxRetriesStr))
}
isDebugEnvStr := os.Getenv("DEBUG_ENV")
isDebugEnv, err := strconv.ParseBool(isDebugEnvStr)
if err != nil {
logger.Fatal("failed to parse debug env from 'DEBUG_ENV'",
zap.Error(err),
zap.String("value", isDebugEnvStr))
return errors.Wrap(err, fmt.Sprintf("failed to parse debug env value('%s') from 'DEBUG_ENV'", isDebugEnvStr))
}
// svcAddrRetryCount is the max times for RetryingRoundTripper to retry with a specific service address
@@ -209,7 +196,7 @@ func Start(ctx context.Context, logger *zap.Logger, port int, executorURL string
svcAddrRetryCount: svcAddrRetryCount,
}, isDebugEnv, unTapServiceTimeout, throttler.MakeThrottler(svcAddrUpdateTimeout))
if err != nil {
logger.Fatal("error making HTTP trigger set", zap.Error(err))
return errors.Wrap(err, "error making HTTP trigger set")
}
go metrics.ServeMetrics(ctx, logger)
@@ -219,5 +206,6 @@ func Start(ctx context.Context, logger *zap.Logger, port int, executorURL string
ctx, span := tracer.Start(ctx, "router/Start")
defer span.End()
serve(ctx, logger, port, triggers, displayAccessLog)
go serve(ctx, logger, port, triggers, displayAccessLog)
return nil
}