2c7844d220
There are a couple of things in here. First, just like auto encrypt, any Cluster.AutoConfig RPC will implicitly use the less secure RPC mechanism. This drastically modifies how the Consul Agent starts up and moves most of the responsibilities (other than signal handling) from the cli command and into the Agent.
50 lines
1.1 KiB
Go
50 lines
1.1 KiB
Go
package consul
|
|
|
|
import (
|
|
"github.com/hashicorp/consul/agent/pool"
|
|
"github.com/hashicorp/consul/agent/token"
|
|
"github.com/hashicorp/consul/tlsutil"
|
|
"github.com/hashicorp/go-hclog"
|
|
)
|
|
|
|
type consulOptions struct {
|
|
logger hclog.InterceptLogger
|
|
tlsConfigurator *tlsutil.Configurator
|
|
connPool *pool.ConnPool
|
|
tokens *token.Store
|
|
}
|
|
|
|
type ConsulOption func(*consulOptions)
|
|
|
|
func WithLogger(logger hclog.InterceptLogger) ConsulOption {
|
|
return func(opt *consulOptions) {
|
|
opt.logger = logger
|
|
}
|
|
}
|
|
|
|
func WithTLSConfigurator(tlsConfigurator *tlsutil.Configurator) ConsulOption {
|
|
return func(opt *consulOptions) {
|
|
opt.tlsConfigurator = tlsConfigurator
|
|
}
|
|
}
|
|
|
|
func WithConnectionPool(connPool *pool.ConnPool) ConsulOption {
|
|
return func(opt *consulOptions) {
|
|
opt.connPool = connPool
|
|
}
|
|
}
|
|
|
|
func WithTokenStore(tokens *token.Store) ConsulOption {
|
|
return func(opt *consulOptions) {
|
|
opt.tokens = tokens
|
|
}
|
|
}
|
|
|
|
func flattenConsulOptions(options []ConsulOption) consulOptions {
|
|
var flat consulOptions
|
|
for _, opt := range options {
|
|
opt(&flat)
|
|
}
|
|
return flat
|
|
}
|