Move ch ring placement back from old FnLB. (#930)

* fn: bring back CH ring placer into FN repo based on original FnLB
* fn: move placement code into runnerpool directory
This commit is contained in:
Tolga Ceylan
2018-04-10 17:26:24 -07:00
committed by GitHub
parent 95d7379a81
commit e7658db822
23 changed files with 2926 additions and 64 deletions

View File

@@ -63,6 +63,7 @@ const (
EnvCertAuth = "FN_NODE_CERT_AUTHORITY"
EnvProcessCollectorList = "FN_PROCESS_COLLECTOR_LIST"
EnvLBPlacementAlg = "FN_PLACER"
// Defaults
DefaultLogLevel = "info"
@@ -357,10 +358,6 @@ func (s *Server) defaultRunnerPool() (pool.RunnerPool, error) {
return agent.DefaultStaticRunnerPool(strings.Split(runnerAddresses, ",")), nil
}
func (s *Server) defaultPlacer() pool.Placer {
return agent.NewNaivePlacer()
}
func WithLogstoreFromDatastore() ServerOption {
return func(ctx context.Context, s *Server) error {
if s.datastore == nil {
@@ -446,7 +443,15 @@ func WithAgentFromEnv() ServerOption {
if err != nil {
return err
}
placer := s.defaultPlacer()
// Select the placement algorithm
var placer pool.Placer
switch getEnv(EnvLBPlacementAlg, "") {
case "ch":
placer = pool.NewCHPlacer()
default:
placer = pool.NewNaivePlacer()
}
s.agent, err = agent.NewLBAgent(agent.NewCachedDataAccess(cl), runnerPool, placer)
if err != nil {