Making a struct to hold consul service config
This commit is contained in:
parent
d9fc07fb08
commit
c7c0748cea
|
@ -31,7 +31,7 @@ func testAllocRunner(restarts bool) (*MockAllocStateUpdater, *AllocRunner) {
|
|||
conf.AllocDir = os.TempDir()
|
||||
upd := &MockAllocStateUpdater{}
|
||||
alloc := mock.Alloc()
|
||||
consulClient, _ := NewConsulService(logger, "127.0.0.1:8500", "", "", false, false, &structs.Node{})
|
||||
consulClient, _ := NewConsulService(&consulServiceConfig{logger, "127.0.0.1:8500", "", "", false, false, &structs.Node{}})
|
||||
if !restarts {
|
||||
alloc.Job.Type = structs.JobTypeBatch
|
||||
*alloc.Job.LookupTaskGroup(alloc.TaskGroup).RestartPolicy = structs.RestartPolicy{Attempts: 0}
|
||||
|
@ -142,7 +142,7 @@ func TestAllocRunner_SaveRestoreState(t *testing.T) {
|
|||
}
|
||||
|
||||
// Create a new alloc runner
|
||||
consulClient, err := NewConsulService(ar.logger, "127.0.0.1:8500", "", "", false, false, &structs.Node{})
|
||||
consulClient, err := NewConsulService(&consulServiceConfig{ar.logger, "127.0.0.1:8500", "", "", false, false, &structs.Node{}})
|
||||
ar2 := NewAllocRunner(ar.logger, ar.config, upd.Update,
|
||||
&structs.Allocation{ID: ar.alloc.ID}, consulClient)
|
||||
err = ar2.RestoreState()
|
||||
|
|
|
@ -157,7 +157,16 @@ func (c *Client) setupConsulService() error {
|
|||
auth := c.config.Read("consul.auth")
|
||||
enableSSL := c.config.ReadBoolDefault("consul.ssl", false)
|
||||
verifySSL := c.config.ReadBoolDefault("consul.verifyssl", true)
|
||||
if consulService, err = NewConsulService(c.logger, addr, token, auth, enableSSL, verifySSL, c.config.Node); err != nil {
|
||||
consulServiceCfg := &consulServiceConfig{
|
||||
logger: c.logger,
|
||||
consulAddr: addr,
|
||||
token: token,
|
||||
auth: auth,
|
||||
enableSSL: enableSSL,
|
||||
verifySSL: verifySSL,
|
||||
node: c.config.Node,
|
||||
}
|
||||
if consulService, err = NewConsulService(consulServiceCfg); err != nil {
|
||||
return err
|
||||
}
|
||||
c.consulService = consulService
|
||||
|
|
|
@ -79,25 +79,34 @@ type ConsulService struct {
|
|||
trackedTskLock sync.Mutex
|
||||
}
|
||||
|
||||
type consulServiceConfig struct {
|
||||
logger *log.Logger
|
||||
consulAddr string
|
||||
token string
|
||||
auth string
|
||||
enableSSL bool
|
||||
verifySSL bool
|
||||
node *structs.Node
|
||||
}
|
||||
|
||||
// A factory method to create new consul service
|
||||
func NewConsulService(logger *log.Logger, consulAddr string, token string,
|
||||
auth string, enableSSL bool, verifySSL bool, node *structs.Node) (*ConsulService, error) {
|
||||
func NewConsulService(config *consulServiceConfig) (*ConsulService, error) {
|
||||
var err error
|
||||
var c *consul.Client
|
||||
cfg := consul.DefaultConfig()
|
||||
cfg.Address = consulAddr
|
||||
if token != "" {
|
||||
cfg.Token = token
|
||||
cfg.Address = config.consulAddr
|
||||
if config.token != "" {
|
||||
cfg.Token = config.token
|
||||
}
|
||||
|
||||
if auth != "" {
|
||||
if config.auth != "" {
|
||||
var username, password string
|
||||
if strings.Contains(auth, ":") {
|
||||
split := strings.SplitN(auth, ":", 2)
|
||||
if strings.Contains(config.auth, ":") {
|
||||
split := strings.SplitN(config.auth, ":", 2)
|
||||
username = split[0]
|
||||
password = split[1]
|
||||
} else {
|
||||
username = auth
|
||||
username = config.auth
|
||||
}
|
||||
|
||||
cfg.HttpAuth = &consul.HttpBasicAuth{
|
||||
|
@ -105,10 +114,10 @@ func NewConsulService(logger *log.Logger, consulAddr string, token string,
|
|||
Password: password,
|
||||
}
|
||||
}
|
||||
if enableSSL {
|
||||
if config.enableSSL {
|
||||
cfg.Scheme = "https"
|
||||
}
|
||||
if enableSSL && !verifySSL {
|
||||
if config.enableSSL && !config.verifySSL {
|
||||
cfg.HttpClient.Transport = &http.Transport{
|
||||
TLSClientConfig: &tls.Config{
|
||||
InsecureSkipVerify: true,
|
||||
|
@ -122,8 +131,8 @@ func NewConsulService(logger *log.Logger, consulAddr string, token string,
|
|||
|
||||
consulService := ConsulService{
|
||||
client: &consulApiClient{client: c},
|
||||
logger: logger,
|
||||
node: node,
|
||||
logger: config.logger,
|
||||
node: config.node,
|
||||
trackedTasks: make(map[string]*trackedTask),
|
||||
serviceStates: make(map[string]string),
|
||||
shutdownCh: make(chan struct{}),
|
||||
|
|
|
@ -46,7 +46,7 @@ func (a *mockConsulApiClient) Checks() (map[string]*consul.AgentCheck, error) {
|
|||
|
||||
func newConsulService() *ConsulService {
|
||||
logger := log.New(os.Stdout, "logger: ", log.Lshortfile)
|
||||
c, _ := NewConsulService(logger, "", "", "", false, false, &structs.Node{})
|
||||
c, _ := NewConsulService(&consulServiceConfig{logger, "", "", "", false, false, &structs.Node{}})
|
||||
c.client = &mockConsulApiClient{}
|
||||
return c
|
||||
}
|
||||
|
|
|
@ -32,7 +32,7 @@ func testTaskRunner(restarts bool) (*MockTaskStateUpdater, *TaskRunner) {
|
|||
upd := &MockTaskStateUpdater{}
|
||||
alloc := mock.Alloc()
|
||||
task := alloc.Job.TaskGroups[0].Tasks[0]
|
||||
consulClient, _ := NewConsulService(logger, "127.0.0.1:8500", "", "", false, false, &structs.Node{})
|
||||
consulClient, _ := NewConsulService(&consulServiceConfig{logger, "127.0.0.1:8500", "", "", false, false, &structs.Node{}})
|
||||
// Initialize the port listing. This should be done by the offer process but
|
||||
// we have a mock so that doesn't happen.
|
||||
task.Resources.Networks[0].ReservedPorts = []structs.Port{{"", 80}}
|
||||
|
@ -164,7 +164,7 @@ func TestTaskRunner_SaveRestoreState(t *testing.T) {
|
|||
}
|
||||
|
||||
// Create a new task runner
|
||||
consulClient, _ := NewConsulService(tr.logger, "127.0.0.1:8500", "", "", false, false, &structs.Node{})
|
||||
consulClient, _ := NewConsulService(&consulServiceConfig{tr.logger, "127.0.0.1:8500", "", "", false, false, &structs.Node{}})
|
||||
tr2 := NewTaskRunner(tr.logger, tr.config, upd.Update,
|
||||
tr.ctx, tr.allocID, &structs.Task{Name: tr.task.Name}, tr.state, tr.restartTracker,
|
||||
consulClient)
|
||||
|
|
Loading…
Reference in a new issue