config_parse get rid of ParseConfigDefault

This commit is contained in:
Lang Martin 2019-06-11 21:58:19 -04:00
parent 9b0411af6a
commit 7aa95ebd6f
2 changed files with 72 additions and 19 deletions

View File

@ -14,15 +14,6 @@ import (
"github.com/hashicorp/nomad/nomad/structs/config"
)
// ParseConfigDefault returns the configuration base
func ParseConfigDefault() *Config {
return &Config{
Consul: config.DefaultConsulConfig(),
Autopilot: config.DefaultAutopilotConfig(),
Vault: config.DefaultVaultConfig(),
}
}
func ParseConfigFile(path string) (*Config, error) {
// slurp
var buf bytes.Buffer

View File

@ -411,8 +411,16 @@ func TestConfig_Parse(t *testing.T) {
t.Fatalf("file: %s\n\n%s", tc.File, err)
}
// Merge defaults like LoadConfig does
actual = ParseConfigDefault().Merge(actual)
// ParseConfig used to re-merge defaults for these three objects,
// despite them already being merged in LoadConfig. The test structs
// expect these defaults to be set, but not the DefaultConfig
// defaults, which include additional settings
oldDefault := &Config{
Consul: config.DefaultConsulConfig(),
Vault: config.DefaultVaultConfig(),
Autopilot: config.DefaultAutopilotConfig(),
}
actual = oldDefault.Merge(actual)
//panic(fmt.Sprintf("first: %+v \n second: %+v", actual.TLSConfig, tc.Result.TLSConfig))
require.EqualValues(tc.Result, removeHelperAttributes(actual))
@ -576,15 +584,70 @@ func TestConfig_ParseSample0(t *testing.T) {
require.EqualValues(t, sample0, c)
}
var sample1 = &Config{
Region: "global",
Datacenter: "dc1",
DataDir: "/opt/data/nomad/data",
LogLevel: "INFO",
BindAddr: "0.0.0.0",
AdvertiseAddrs: &AdvertiseAddrs{
HTTP: "host.example.com",
RPC: "host.example.com",
Serf: "host.example.com",
},
Client: &ClientConfig{ServerJoin: &ServerJoin{}},
Server: &ServerConfig{
Enabled: true,
BootstrapExpect: 3,
RetryJoin: []string{"10.0.0.101", "10.0.0.102", "10.0.0.103"},
EncryptKey: "sHck3WL6cxuhuY7Mso9BHA==",
ServerJoin: &ServerJoin{},
},
ACL: &ACLConfig{
Enabled: true,
},
Telemetry: &Telemetry{
PrometheusMetrics: true,
DisableHostname: true,
CollectionInterval: "60s",
collectionInterval: 60 * time.Second,
PublishAllocationMetrics: true,
PublishNodeMetrics: true,
},
LeaveOnInt: true,
LeaveOnTerm: true,
EnableSyslog: true,
SyslogFacility: "LOCAL0",
Consul: &config.ConsulConfig{
EnableSSL: helper.BoolToPtr(true),
Token: "aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee",
ServerAutoJoin: helper.BoolToPtr(false),
ClientAutoJoin: helper.BoolToPtr(false),
},
Vault: &config.VaultConfig{
Enabled: helper.BoolToPtr(true),
Role: "nomad-cluster",
Addr: "http://host.example.com:8200",
},
TLSConfig: &config.TLSConfig{
EnableHTTP: true,
EnableRPC: true,
VerifyServerHostname: true,
CAFile: "/opt/data/nomad/certs/nomad-ca.pem",
CertFile: "/opt/data/nomad/certs/server.pem",
KeyFile: "/opt/data/nomad/certs/server-key.pem",
},
Autopilot: &config.AutopilotConfig{
CleanupDeadServers: helper.BoolToPtr(true),
},
}
func TestConfig_ParseDir(t *testing.T) {
c, err := LoadConfig("./testdata/sample1")
require.NoError(t, err)
// Defaults
sample1 := ParseConfigDefault().Merge(sample0)
// Merge makes empty maps & slices rather than nil, so set those for the expected
// value
// LoadConfig Merges with defaults, which makes empty maps & slices rather than nil,
// so set those for the expected value
require.Nil(t, sample1.Client.Options)
sample1.Client.Options = map[string]string{}
require.Nil(t, sample1.Client.Meta)
@ -593,9 +656,8 @@ func TestConfig_ParseDir(t *testing.T) {
sample1.Client.ChrootEnv = map[string]string{}
require.Nil(t, sample1.Server.StartJoin)
sample1.Server.StartJoin = []string{}
// This value added to the config file
sample1.Consul.EnableSSL = helper.BoolToPtr(true)
require.Nil(t, sample1.HTTPAPIResponseHeaders)
sample1.HTTPAPIResponseHeaders = map[string]string{}
// LoadDir listed the config files
require.Nil(t, sample1.Files)