Hide details of delegated agents for PR and LB, to disable docker for LB (#872)

* Move delegated agent creation within NewLBAgent so we can hide the fact we disable docker
* Move delegated agent creation within NewPureRunner for better encapsulation
This commit is contained in:
Dario Domizioli
2018-03-20 13:45:45 +00:00
committed by GitHub
parent 38eebf69cd
commit 27ffb561e8
5 changed files with 23 additions and 20 deletions

View File

@@ -9,6 +9,7 @@ import (
"github.com/fnproject/fn/api/agent/drivers"
"github.com/fnproject/fn/api/agent/drivers/docker"
"github.com/fnproject/fn/api/agent/drivers/mock"
"github.com/fnproject/fn/api/agent/protocol"
"github.com/fnproject/fn/api/common"
"github.com/fnproject/fn/api/id"
@@ -111,14 +112,13 @@ type agent struct {
}
func New(da DataAccess) Agent {
a := NewSyncOnly(da).(*agent)
a := createAgent(da, true).(*agent)
a.wg.Add(1)
go a.asyncDequeue() // safe shutdown can nanny this fine
return a
}
func NewSyncOnly(da DataAccess) Agent {
func createAgent(da DataAccess, withDocker bool) Agent {
cfg, err := NewAgentConfig()
if err != nil {
logrus.WithError(err).Fatalf("error in agent config cfg=%+v", cfg)
@@ -126,9 +126,14 @@ func NewSyncOnly(da DataAccess) Agent {
logrus.Infof("agent starting cfg=%+v", cfg)
// TODO: Create drivers.New(runnerConfig)
driver := docker.NewDocker(drivers.Config{
ServerVersion: cfg.MinDockerVersion,
})
var driver drivers.Driver
if withDocker {
driver = docker.NewDocker(drivers.Config{
ServerVersion: cfg.MinDockerVersion,
})
} else {
driver = mock.New()
}
a := &agent{
cfg: *cfg,

View File

@@ -102,7 +102,8 @@ type lbAgent struct {
shutdown chan struct{}
}
func NewLBAgent(agent Agent, rp pool.RunnerPool, p pool.Placer) (Agent, error) {
func NewLBAgent(da DataAccess, rp pool.RunnerPool, p pool.Placer) (Agent, error) {
agent := createAgent(da, false)
a := &lbAgent{
delegatedAgent: agent,
rp: rp,

View File

@@ -546,15 +546,16 @@ func (pr *pureRunner) Start() error {
return err
}
func UnsecuredPureRunner(cancel context.CancelFunc, addr string, a Agent) (*pureRunner, error) {
return NewPureRunner(cancel, addr, a, "", "", "", nil)
func UnsecuredPureRunner(cancel context.CancelFunc, addr string, da DataAccess) (*pureRunner, error) {
return NewPureRunner(cancel, addr, da, "", "", "", nil)
}
func DefaultPureRunner(cancel context.CancelFunc, addr string, a Agent, cert string, key string, ca string) (*pureRunner, error) {
return NewPureRunner(cancel, addr, a, cert, key, ca, nil)
func DefaultPureRunner(cancel context.CancelFunc, addr string, da DataAccess, cert string, key string, ca string) (*pureRunner, error) {
return NewPureRunner(cancel, addr, da, cert, key, ca, nil)
}
func NewPureRunner(cancel context.CancelFunc, addr string, a Agent, cert string, key string, ca string, gate CapacityGate) (*pureRunner, error) {
func NewPureRunner(cancel context.CancelFunc, addr string, da DataAccess, cert string, key string, ca string, gate CapacityGate) (*pureRunner, error) {
a := createAgent(da, true)
var pr *pureRunner
var err error
if cert != "" && key != "" && ca != "" {