mirror of https://github.com/status-im/consul.git
Add generic experiments configuration and use it to enable catalog v2 resources (#17604)
* Add generic experiments configuration and use it to enable catalog v2 resources * Run formatting with -s as CI will validate that this has been done
This commit is contained in:
parent
809c188b34
commit
baaf6d84c7
|
@ -337,7 +337,7 @@ fmt: $(foreach mod,$(GO_MODULES),fmt/$(mod))
|
||||||
.PHONY: fmt/%
|
.PHONY: fmt/%
|
||||||
fmt/%:
|
fmt/%:
|
||||||
@echo "--> Running go fmt ($*)"
|
@echo "--> Running go fmt ($*)"
|
||||||
@cd $* && go fmt ./...
|
@cd $* && gofmt -s -l -w .
|
||||||
|
|
||||||
.PHONY: lint
|
.PHONY: lint
|
||||||
lint: $(foreach mod,$(GO_MODULES),lint/$(mod)) lint-container-test-deps
|
lint: $(foreach mod,$(GO_MODULES),lint/$(mod)) lint-container-test-deps
|
||||||
|
|
|
@ -828,6 +828,7 @@ func (b *builder) build() (rt RuntimeConfig, err error) {
|
||||||
Version: stringVal(c.Version),
|
Version: stringVal(c.Version),
|
||||||
VersionPrerelease: stringVal(c.VersionPrerelease),
|
VersionPrerelease: stringVal(c.VersionPrerelease),
|
||||||
VersionMetadata: stringVal(c.VersionMetadata),
|
VersionMetadata: stringVal(c.VersionMetadata),
|
||||||
|
Experiments: c.Experiments,
|
||||||
// What is a sensible default for BuildDate?
|
// What is a sensible default for BuildDate?
|
||||||
BuildDate: timeValWithDefault(c.BuildDate, time.Date(1970, 1, 00, 00, 00, 01, 0, time.UTC)),
|
BuildDate: timeValWithDefault(c.BuildDate, time.Date(1970, 1, 00, 00, 00, 01, 0, time.UTC)),
|
||||||
|
|
||||||
|
|
|
@ -183,6 +183,7 @@ type Config struct {
|
||||||
EncryptKey *string `mapstructure:"encrypt" json:"encrypt,omitempty"`
|
EncryptKey *string `mapstructure:"encrypt" json:"encrypt,omitempty"`
|
||||||
EncryptVerifyIncoming *bool `mapstructure:"encrypt_verify_incoming" json:"encrypt_verify_incoming,omitempty"`
|
EncryptVerifyIncoming *bool `mapstructure:"encrypt_verify_incoming" json:"encrypt_verify_incoming,omitempty"`
|
||||||
EncryptVerifyOutgoing *bool `mapstructure:"encrypt_verify_outgoing" json:"encrypt_verify_outgoing,omitempty"`
|
EncryptVerifyOutgoing *bool `mapstructure:"encrypt_verify_outgoing" json:"encrypt_verify_outgoing,omitempty"`
|
||||||
|
Experiments []string `mapstructure:"experiments" json:"experiments,omitempty"`
|
||||||
GossipLAN GossipLANConfig `mapstructure:"gossip_lan" json:"-"`
|
GossipLAN GossipLANConfig `mapstructure:"gossip_lan" json:"-"`
|
||||||
GossipWAN GossipWANConfig `mapstructure:"gossip_wan" json:"-"`
|
GossipWAN GossipWANConfig `mapstructure:"gossip_wan" json:"-"`
|
||||||
HTTPConfig HTTPConfig `mapstructure:"http_config" json:"-"`
|
HTTPConfig HTTPConfig `mapstructure:"http_config" json:"-"`
|
||||||
|
|
|
@ -209,6 +209,9 @@ func DevSource() Source {
|
||||||
ports = {
|
ports = {
|
||||||
grpc = 8502
|
grpc = 8502
|
||||||
}
|
}
|
||||||
|
experiments = [
|
||||||
|
"resource-apis"
|
||||||
|
]
|
||||||
`,
|
`,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1498,6 +1498,9 @@ type RuntimeConfig struct {
|
||||||
|
|
||||||
Reporting ReportingConfig
|
Reporting ReportingConfig
|
||||||
|
|
||||||
|
// List of experiments to enable
|
||||||
|
Experiments []string
|
||||||
|
|
||||||
EnterpriseRuntimeConfig
|
EnterpriseRuntimeConfig
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -325,6 +325,7 @@ func TestLoad_IntegrationWithFlags(t *testing.T) {
|
||||||
rt.DisableAnonymousSignature = true
|
rt.DisableAnonymousSignature = true
|
||||||
rt.DisableKeyringFile = true
|
rt.DisableKeyringFile = true
|
||||||
rt.EnableDebug = true
|
rt.EnableDebug = true
|
||||||
|
rt.Experiments = []string{"resource-apis"}
|
||||||
rt.UIConfig.Enabled = true
|
rt.UIConfig.Enabled = true
|
||||||
rt.LeaveOnTerm = false
|
rt.LeaveOnTerm = false
|
||||||
rt.Logging.LogLevel = "DEBUG"
|
rt.Logging.LogLevel = "DEBUG"
|
||||||
|
@ -6355,6 +6356,7 @@ func TestLoad_FullConfig(t *testing.T) {
|
||||||
EnableRemoteScriptChecks: true,
|
EnableRemoteScriptChecks: true,
|
||||||
EnableLocalScriptChecks: true,
|
EnableLocalScriptChecks: true,
|
||||||
EncryptKey: "A4wELWqH",
|
EncryptKey: "A4wELWqH",
|
||||||
|
Experiments: []string{"foo"},
|
||||||
StaticRuntimeConfig: StaticRuntimeConfig{
|
StaticRuntimeConfig: StaticRuntimeConfig{
|
||||||
EncryptVerifyIncoming: true,
|
EncryptVerifyIncoming: true,
|
||||||
EncryptVerifyOutgoing: true,
|
EncryptVerifyOutgoing: true,
|
||||||
|
|
|
@ -199,6 +199,7 @@
|
||||||
"EnableRemoteScriptChecks": false,
|
"EnableRemoteScriptChecks": false,
|
||||||
"EncryptKey": "hidden",
|
"EncryptKey": "hidden",
|
||||||
"EnterpriseRuntimeConfig": {},
|
"EnterpriseRuntimeConfig": {},
|
||||||
|
"Experiments": [],
|
||||||
"ExposeMaxPort": 0,
|
"ExposeMaxPort": 0,
|
||||||
"ExposeMinPort": 0,
|
"ExposeMinPort": 0,
|
||||||
"GRPCAddrs": [],
|
"GRPCAddrs": [],
|
||||||
|
|
|
@ -285,6 +285,9 @@ enable_syslog = true
|
||||||
encrypt = "A4wELWqH"
|
encrypt = "A4wELWqH"
|
||||||
encrypt_verify_incoming = true
|
encrypt_verify_incoming = true
|
||||||
encrypt_verify_outgoing = true
|
encrypt_verify_outgoing = true
|
||||||
|
experiments = [
|
||||||
|
"foo"
|
||||||
|
]
|
||||||
http_config {
|
http_config {
|
||||||
block_endpoints = [ "RBvAFcGD", "fWOWFznh" ]
|
block_endpoints = [ "RBvAFcGD", "fWOWFznh" ]
|
||||||
allow_write_http_from = [ "127.0.0.1/8", "22.33.44.55/32", "0.0.0.0/0" ]
|
allow_write_http_from = [ "127.0.0.1/8", "22.33.44.55/32", "0.0.0.0/0" ]
|
||||||
|
|
|
@ -327,6 +327,9 @@
|
||||||
"encrypt": "A4wELWqH",
|
"encrypt": "A4wELWqH",
|
||||||
"encrypt_verify_incoming": true,
|
"encrypt_verify_incoming": true,
|
||||||
"encrypt_verify_outgoing": true,
|
"encrypt_verify_outgoing": true,
|
||||||
|
"experiments": [
|
||||||
|
"foo"
|
||||||
|
],
|
||||||
"http_config": {
|
"http_config": {
|
||||||
"block_endpoints": [
|
"block_endpoints": [
|
||||||
"RBvAFcGD",
|
"RBvAFcGD",
|
||||||
|
@ -407,17 +410,17 @@
|
||||||
"raft_snapshot_interval": "30s",
|
"raft_snapshot_interval": "30s",
|
||||||
"raft_trailing_logs": 83749,
|
"raft_trailing_logs": 83749,
|
||||||
"raft_logstore": {
|
"raft_logstore": {
|
||||||
"backend" : "wal",
|
"backend": "wal",
|
||||||
"disable_log_cache": true,
|
"disable_log_cache": true,
|
||||||
"verification": {
|
"verification": {
|
||||||
"enabled": true,
|
"enabled": true,
|
||||||
"interval":"12345s"
|
"interval": "12345s"
|
||||||
},
|
},
|
||||||
"boltdb": {
|
"boltdb": {
|
||||||
"no_freelist_sync": true
|
"no_freelist_sync": true
|
||||||
},
|
},
|
||||||
"wal": {
|
"wal": {
|
||||||
"segment_size_mb": 15
|
"segment_size_mb": 15
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"read_replica": true,
|
"read_replica": true,
|
||||||
|
|
|
@ -39,6 +39,8 @@ type Deps struct {
|
||||||
// HCP contains the dependencies required when integrating with the HashiCorp Cloud Platform
|
// HCP contains the dependencies required when integrating with the HashiCorp Cloud Platform
|
||||||
HCP hcp.Deps
|
HCP hcp.Deps
|
||||||
|
|
||||||
|
Experiments []string
|
||||||
|
|
||||||
EnterpriseDeps
|
EnterpriseDeps
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -79,6 +79,7 @@ import (
|
||||||
raftstorage "github.com/hashicorp/consul/internal/storage/raft"
|
raftstorage "github.com/hashicorp/consul/internal/storage/raft"
|
||||||
"github.com/hashicorp/consul/lib"
|
"github.com/hashicorp/consul/lib"
|
||||||
"github.com/hashicorp/consul/lib/routine"
|
"github.com/hashicorp/consul/lib/routine"
|
||||||
|
"github.com/hashicorp/consul/lib/stringslice"
|
||||||
"github.com/hashicorp/consul/logging"
|
"github.com/hashicorp/consul/logging"
|
||||||
"github.com/hashicorp/consul/proto-public/pbresource"
|
"github.com/hashicorp/consul/proto-public/pbresource"
|
||||||
"github.com/hashicorp/consul/proto/private/pbsubscribe"
|
"github.com/hashicorp/consul/proto/private/pbsubscribe"
|
||||||
|
@ -131,6 +132,8 @@ const (
|
||||||
reconcileChSize = 256
|
reconcileChSize = 256
|
||||||
|
|
||||||
LeaderTransferMinVersion = "1.6.0"
|
LeaderTransferMinVersion = "1.6.0"
|
||||||
|
|
||||||
|
catalogResourceExperimentName = "resource-apis"
|
||||||
)
|
)
|
||||||
|
|
||||||
const (
|
const (
|
||||||
|
@ -807,7 +810,7 @@ func NewServer(config *Config, flat Deps, externalGRPCServer *grpc.Server, incom
|
||||||
s.internalResourceServiceClient,
|
s.internalResourceServiceClient,
|
||||||
logger.Named(logging.ControllerRuntime),
|
logger.Named(logging.ControllerRuntime),
|
||||||
)
|
)
|
||||||
s.registerResources()
|
s.registerResources(flat)
|
||||||
go s.controllerManager.Run(&lib.StopChannelContext{StopCh: shutdownCh})
|
go s.controllerManager.Run(&lib.StopChannelContext{StopCh: shutdownCh})
|
||||||
|
|
||||||
go s.trackLeaderChanges()
|
go s.trackLeaderChanges()
|
||||||
|
@ -858,11 +861,14 @@ func NewServer(config *Config, flat Deps, externalGRPCServer *grpc.Server, incom
|
||||||
return s, nil
|
return s, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s *Server) registerResources() {
|
func (s *Server) registerResources(deps Deps) {
|
||||||
catalog.RegisterTypes(s.typeRegistry)
|
if stringslice.Contains(deps.Experiments, catalogResourceExperimentName) {
|
||||||
catalog.RegisterControllers(s.controllerManager, catalog.DefaultControllerDependencies())
|
catalog.RegisterTypes(s.typeRegistry)
|
||||||
|
catalog.RegisterControllers(s.controllerManager, catalog.DefaultControllerDependencies())
|
||||||
|
|
||||||
|
mesh.RegisterTypes(s.typeRegistry)
|
||||||
|
}
|
||||||
|
|
||||||
mesh.RegisterTypes(s.typeRegistry)
|
|
||||||
reaper.RegisterControllers(s.controllerManager)
|
reaper.RegisterControllers(s.controllerManager)
|
||||||
|
|
||||||
if s.config.DevMode {
|
if s.config.DevMode {
|
||||||
|
|
|
@ -73,6 +73,7 @@ func NewBaseDeps(configLoader ConfigLoader, logOut io.Writer, providedLogger hcl
|
||||||
return d, err
|
return d, err
|
||||||
}
|
}
|
||||||
d.WatchedFiles = result.WatchedFiles
|
d.WatchedFiles = result.WatchedFiles
|
||||||
|
d.Experiments = result.RuntimeConfig.Experiments
|
||||||
cfg := result.RuntimeConfig
|
cfg := result.RuntimeConfig
|
||||||
logConf := cfg.Logging
|
logConf := cfg.Logging
|
||||||
logConf.Name = logging.Agent
|
logConf.Name = logging.Agent
|
||||||
|
|
Loading…
Reference in New Issue