Skip to content

Commit

Permalink
Change ApplyEnvVars strategy for all config components
Browse files Browse the repository at this point in the history
Get jsonConfig from Config, apply env vars to it, load jsonConfig
back into Config.

License: MIT
Signed-off-by: Robert Ignat <robert.ignat91@gmail.com>
  • Loading branch information
roignpar committed Feb 15, 2019
1 parent 47252f8 commit 168cf76
Show file tree
Hide file tree
Showing 12 changed files with 139 additions and 55 deletions.
20 changes: 16 additions & 4 deletions api/ipfsproxy/config.go
Original file line number Diff line number Diff line change
Expand Up @@ -157,9 +157,12 @@ func (cfg *Config) Default() error {
// ApplyEnvVars fills in any Config fields found
// as environment variables.
func (cfg *Config) ApplyEnvVars() error {
jcfg := &jsonConfig{}
jcfg, err := cfg.toJSONConfig()
if err != nil {
return err
}

err := envconfig.Process(envConfigKey, jcfg)
err = envconfig.Process(envConfigKey, jcfg)
if err != nil {
return err
}
Expand Down Expand Up @@ -262,14 +265,24 @@ func (cfg *Config) applyJSONConfig(jcfg *jsonConfig) error {

// ToJSON generates a human-friendly JSON representation of this Config.
func (cfg *Config) ToJSON() (raw []byte, err error) {
jcfg, err := cfg.toJSONConfig()
if err != nil {
return
}

raw, err = config.DefaultJSONMarshal(jcfg)
return
}

func (cfg *Config) toJSONConfig() (jcfg *jsonConfig, err error) {
// Multiaddress String() may panic
defer func() {
if r := recover(); r != nil {
err = fmt.Errorf("%s", r)
}
}()

jcfg := &jsonConfig{}
jcfg = &jsonConfig{}

// Set all configuration fields
jcfg.ListenMultiaddress = cfg.ListenAddr.String()
Expand All @@ -284,6 +297,5 @@ func (cfg *Config) ToJSON() (raw []byte, err error) {
jcfg.ExtractHeadersPath = cfg.ExtractHeadersPath
jcfg.ExtractHeadersTTL = cfg.ExtractHeadersTTL.String()

raw, err = config.DefaultJSONMarshal(jcfg)
return
}
20 changes: 16 additions & 4 deletions api/rest/config.go
Original file line number Diff line number Diff line change
Expand Up @@ -184,9 +184,12 @@ func (cfg *Config) Default() error {
// ApplyEnvVars fills in any Config fields found
// as environment variables.
func (cfg *Config) ApplyEnvVars() error {
jcfg := &jsonConfig{}
jcfg, err := cfg.toJSONConfig()
if err != nil {
return err
}

err := envconfig.Process(envConfigKey, jcfg)
err = envconfig.Process(envConfigKey, jcfg)
if err != nil {
return err
}
Expand Down Expand Up @@ -372,14 +375,24 @@ func (cfg *Config) loadLibp2pOptions(jcfg *jsonConfig) error {
// ToJSON produce a human-friendly JSON representation of the Config
// object.
func (cfg *Config) ToJSON() (raw []byte, err error) {
jcfg, err := cfg.toJSONConfig()
if err != nil {
return
}

raw, err = config.DefaultJSONMarshal(jcfg)
return
}

func (cfg *Config) toJSONConfig() (jcfg *jsonConfig, err error) {
// Multiaddress String() may panic
defer func() {
if r := recover(); r != nil {
err = fmt.Errorf("%s", r)
}
}()

jcfg := &jsonConfig{
jcfg = &jsonConfig{
HTTPListenMultiaddress: cfg.HTTPListenAddr.String(),
SSLCertFile: cfg.pathSSLCertFile,
SSLKeyFile: cfg.pathSSLKeyFile,
Expand Down Expand Up @@ -411,7 +424,6 @@ func (cfg *Config) ToJSON() (raw []byte, err error) {
jcfg.Libp2pListenMultiaddress = cfg.Libp2pListenAddr.String()
}

raw, err = config.DefaultJSONMarshal(jcfg)
return
}

Expand Down
20 changes: 16 additions & 4 deletions cluster_config.go
Original file line number Diff line number Diff line change
Expand Up @@ -189,9 +189,12 @@ func (cfg *Config) Default() error {
// ApplyEnvVars fills in any Config fields found
// as environment variables.
func (cfg *Config) ApplyEnvVars() error {
jcfg := &configJSON{}
jcfg, err := cfg.toConfigJSON()
if err != nil {
return err
}

err := envconfig.Process(cfg.ConfigKey(), jcfg)
err = envconfig.Process(cfg.ConfigKey(), jcfg)
if err != nil {
return err
}
Expand Down Expand Up @@ -386,14 +389,24 @@ func (cfg *Config) applyConfigJSON(jcfg *configJSON) error {

// ToJSON generates a human-friendly version of Config.
func (cfg *Config) ToJSON() (raw []byte, err error) {
jcfg, err := cfg.toConfigJSON()
if err != nil {
return
}

raw, err = json.MarshalIndent(jcfg, "", " ")
return
}

func (cfg *Config) toConfigJSON() (jcfg *configJSON, err error) {
// Multiaddress String() may panic
defer func() {
if r := recover(); r != nil {
err = fmt.Errorf("%s", r)
}
}()

jcfg := &configJSON{}
jcfg = &configJSON{}

// Private Key
pkeyBytes, err := cfg.PrivateKey.Bytes()
Expand All @@ -418,7 +431,6 @@ func (cfg *Config) ToJSON() (raw []byte, err error) {
jcfg.DisableRepinning = cfg.DisableRepinning
jcfg.PeerstoreFile = cfg.PeerstoreFile

raw, err = json.MarshalIndent(jcfg, "", " ")
return
}

Expand Down
12 changes: 8 additions & 4 deletions consensus/raft/config.go
Original file line number Diff line number Diff line change
Expand Up @@ -236,7 +236,13 @@ func (cfg *Config) applyJSONConfig(jcfg *jsonConfig) error {

// ToJSON returns the pretty JSON representation of a Config.
func (cfg *Config) ToJSON() ([]byte, error) {
jcfg := &jsonConfig{
jcfg := cfg.toJSONConfig()

return config.DefaultJSONMarshal(jcfg)
}

func (cfg *Config) toJSONConfig() *jsonConfig {
return &jsonConfig{
DataFolder: cfg.DataFolder,
InitPeerset: api.PeersToStrings(cfg.InitPeerset),
WaitForLeaderTimeout: cfg.WaitForLeaderTimeout.String(),
Expand All @@ -253,8 +259,6 @@ func (cfg *Config) ToJSON() ([]byte, error) {
SnapshotThreshold: cfg.RaftConfig.SnapshotThreshold,
LeaderLeaseTimeout: cfg.RaftConfig.LeaderLeaseTimeout.String(),
}

return config.DefaultJSONMarshal(jcfg)
}

// Default initializes this configuration with working defaults.
Expand All @@ -281,7 +285,7 @@ func (cfg *Config) Default() error {
// ApplyEnvVars fills in any Config fields found
// as environment variables.
func (cfg *Config) ApplyEnvVars() error {
jcfg := &jsonConfig{}
jcfg := cfg.toJSONConfig()

err := envconfig.Process(envConfigKey, jcfg)
if err != nil {
Expand Down
14 changes: 9 additions & 5 deletions informer/disk/config.go
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,7 @@ func (cfg *Config) Default() error {
// ApplyEnvVars fills in any Config fields found
// as environment variables.
func (cfg *Config) ApplyEnvVars() error {
jcfg := &jsonConfig{}
jcfg := cfg.toJSONConfig()

err := envconfig.Process(envConfigKey, jcfg)
if err != nil {
Expand Down Expand Up @@ -115,11 +115,15 @@ func (cfg *Config) applyJSONConfig(jcfg *jsonConfig) error {
// ToJSON generates a JSON-formatted human-friendly representation of this
// Config.
func (cfg *Config) ToJSON() (raw []byte, err error) {
jcfg := &jsonConfig{}

jcfg.MetricTTL = cfg.MetricTTL.String()
jcfg.Type = cfg.Type.String()
jcfg := cfg.toJSONConfig()

raw, err = config.DefaultJSONMarshal(jcfg)
return
}

func (cfg *Config) toJSONConfig() *jsonConfig {
return &jsonConfig{
MetricTTL: cfg.MetricTTL.String(),
Type: cfg.Type.String(),
}
}
12 changes: 8 additions & 4 deletions informer/numpin/config.go
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,7 @@ func (cfg *Config) Default() error {
// ApplyEnvVars fills in any Config fields found
// as environment variables.
func (cfg *Config) ApplyEnvVars() error {
jcfg := &jsonConfig{}
jcfg := cfg.toJSONConfig()

err := envconfig.Process(envConfigKey, jcfg)
if err != nil {
Expand Down Expand Up @@ -85,9 +85,13 @@ func (cfg *Config) applyJSONConfig(jcfg *jsonConfig) error {

// ToJSON generates a human-friendly JSON representation of this Config.
func (cfg *Config) ToJSON() ([]byte, error) {
jcfg := &jsonConfig{}

jcfg.MetricTTL = cfg.MetricTTL.String()
jcfg := cfg.toJSONConfig()

return config.DefaultJSONMarshal(jcfg)
}

func (cfg *Config) toJSONConfig() *jsonConfig {
return &jsonConfig{
MetricTTL: cfg.MetricTTL.String(),
}
}
20 changes: 16 additions & 4 deletions ipfsconn/ipfshttp/config.go
Original file line number Diff line number Diff line change
Expand Up @@ -95,9 +95,12 @@ func (cfg *Config) Default() error {
// ApplyEnvVars fills in any Config fields found
// as environment variables.
func (cfg *Config) ApplyEnvVars() error {
jcfg := &jsonConfig{}
jcfg, err := cfg.toJSONConfig()
if err != nil {
return err
}

err := envconfig.Process(envConfigKey, jcfg)
err = envconfig.Process(envConfigKey, jcfg)
if err != nil {
return err
}
Expand Down Expand Up @@ -178,14 +181,24 @@ func (cfg *Config) applyJSONConfig(jcfg *jsonConfig) error {

// ToJSON generates a human-friendly JSON representation of this Config.
func (cfg *Config) ToJSON() (raw []byte, err error) {
jcfg, err := cfg.toJSONConfig()
if err != nil {
return
}

raw, err = config.DefaultJSONMarshal(jcfg)
return
}

func (cfg *Config) toJSONConfig() (jcfg *jsonConfig, err error) {
// Multiaddress String() may panic
defer func() {
if r := recover(); r != nil {
err = fmt.Errorf("%s", r)
}
}()

jcfg := &jsonConfig{}
jcfg = &jsonConfig{}

// Set all configuration fields
jcfg.NodeMultiaddress = cfg.NodeAddr.String()
Expand All @@ -195,6 +208,5 @@ func (cfg *Config) ToJSON() (raw []byte, err error) {
jcfg.PinTimeout = cfg.PinTimeout.String()
jcfg.UnpinTimeout = cfg.UnpinTimeout.String()

raw, err = config.DefaultJSONMarshal(jcfg)
return
}
12 changes: 8 additions & 4 deletions monitor/basic/config.go
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,7 @@ func (cfg *Config) Default() error {
// ApplyEnvVars fills in any Config fields found
// as environment variables.
func (cfg *Config) ApplyEnvVars() error {
jcfg := &jsonConfig{}
jcfg := cfg.toJSONConfig()

err := envconfig.Process(envConfigKey, jcfg)
if err != nil {
Expand Down Expand Up @@ -85,9 +85,13 @@ func (cfg *Config) applyJSONConfig(jcfg *jsonConfig) error {

// ToJSON generates a human-friendly JSON representation of this Config.
func (cfg *Config) ToJSON() ([]byte, error) {
jcfg := &jsonConfig{}

jcfg.CheckInterval = cfg.CheckInterval.String()
jcfg := cfg.toJSONConfig()

return json.MarshalIndent(jcfg, "", " ")
}

func (cfg *Config) toJSONConfig() *jsonConfig {
return &jsonConfig{
CheckInterval: cfg.CheckInterval.String(),
}
}
12 changes: 8 additions & 4 deletions monitor/pubsubmon/config.go
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,7 @@ func (cfg *Config) Default() error {
// ApplyEnvVars fills in any Config fields found
// as environment variables.
func (cfg *Config) ApplyEnvVars() error {
jcfg := &jsonConfig{}
jcfg := cfg.toJSONConfig()

err := envconfig.Process(envConfigKey, jcfg)
if err != nil {
Expand Down Expand Up @@ -85,9 +85,13 @@ func (cfg *Config) applyJSONConfig(jcfg *jsonConfig) error {

// ToJSON generates a human-friendly JSON representation of this Config.
func (cfg *Config) ToJSON() ([]byte, error) {
jcfg := &jsonConfig{}

jcfg.CheckInterval = cfg.CheckInterval.String()
jcfg := cfg.toJSONConfig()

return json.MarshalIndent(jcfg, "", " ")
}

func (cfg *Config) toJSONConfig() *jsonConfig {
return &jsonConfig{
CheckInterval: cfg.CheckInterval.String(),
}
}
24 changes: 16 additions & 8 deletions observations/config.go
Original file line number Diff line number Diff line change
Expand Up @@ -62,7 +62,7 @@ func (cfg *MetricsConfig) Default() error {
// ApplyEnvVars fills in any Config fields found
// as environment variables.
func (cfg *MetricsConfig) ApplyEnvVars() error {
jcfg := &jsonMetricsConfig{}
jcfg := cfg.toJSONConfig()

err := envconfig.Process(metricsEnvConfigKey, jcfg)
if err != nil {
Expand Down Expand Up @@ -130,13 +130,17 @@ func (cfg *MetricsConfig) loadMetricsOptions(jcfg *jsonMetricsConfig) error {

// ToJSON generates a human-friendly JSON representation of this Config.
func (cfg *MetricsConfig) ToJSON() ([]byte, error) {
jcfg := &jsonMetricsConfig{
jcfg := cfg.toJSONConfig()

return config.DefaultJSONMarshal(jcfg)
}

func (cfg *MetricsConfig) toJSONConfig() *jsonMetricsConfig {
return &jsonMetricsConfig{
EnableStats: cfg.EnableStats,
PrometheusEndpoint: cfg.PrometheusEndpoint.String(),
ReportingInterval: cfg.ReportingInterval.String(),
}

return config.DefaultJSONMarshal(jcfg)
}

// TracingConfig configures tracing.
Expand Down Expand Up @@ -174,7 +178,7 @@ func (cfg *TracingConfig) Default() error {
// ApplyEnvVars fills in any Config fields found
// as environment variables.
func (cfg *TracingConfig) ApplyEnvVars() error {
jcfg := &jsonTracingConfig{}
jcfg := cfg.toJSONConfig()

err := envconfig.Process(tracingEnvConfigKey, jcfg)
if err != nil {
Expand Down Expand Up @@ -237,12 +241,16 @@ func (cfg *TracingConfig) loadTracingOptions(jcfg *jsonTracingConfig) error {

// ToJSON generates a human-friendly JSON representation of this Config.
func (cfg *TracingConfig) ToJSON() ([]byte, error) {
jcfg := &jsonTracingConfig{
jcfg := cfg.toJSONConfig()

return config.DefaultJSONMarshal(jcfg)
}

func (cfg *TracingConfig) toJSONConfig() *jsonTracingConfig {
return &jsonTracingConfig{
EnableTracing: cfg.EnableTracing,
JaegerAgentEndpoint: cfg.JaegerAgentEndpoint.String(),
SamplingProb: cfg.SamplingProb,
ServiceName: cfg.ServiceName,
}

return config.DefaultJSONMarshal(jcfg)
}
Loading

0 comments on commit 168cf76

Please sign in to comment.