diff --git a/pkg/loop/config.go b/pkg/loop/config.go index 7f77f155b..308dfc9b9 100644 --- a/pkg/loop/config.go +++ b/pkg/loop/config.go @@ -12,6 +12,7 @@ import ( "go.uber.org/zap/zapcore" "github.com/smartcontractkit/chainlink-common/pkg/config" + "github.com/smartcontractkit/chainlink-common/pkg/settings/cresettings" ) const ( @@ -76,6 +77,9 @@ const ( envChipIngressEndpoint = "CL_CHIP_INGRESS_ENDPOINT" envChipIngressInsecureConnection = "CL_CHIP_INGRESS_INSECURE_CONNECTION" + + envCRESettings = cresettings.EnvNameSettings + envCRESettingsDefault = cresettings.EnvNameSettingsDefault ) // EnvConfig is the configuration between the application and the LOOP executable. The values @@ -142,6 +146,9 @@ type EnvConfig struct { ChipIngressEndpoint string ChipIngressInsecureConnection bool + + CRESettings string + CRESettingsDefault string } // AsCmdEnv returns a slice of environment variable key/value pairs for an exec.Cmd. @@ -222,6 +229,9 @@ func (e *EnvConfig) AsCmdEnv() (env []string) { add(envChipIngressEndpoint, e.ChipIngressEndpoint) add(envChipIngressInsecureConnection, strconv.FormatBool(e.ChipIngressInsecureConnection)) + add(envCRESettings, e.CRESettings) + add(envCRESettingsDefault, e.CRESettingsDefault) + return } @@ -426,6 +436,9 @@ func (e *EnvConfig) parse() error { } } + e.CRESettings = os.Getenv(envCRESettings) + e.CRESettingsDefault = os.Getenv(envCRESettingsDefault) + return nil } diff --git a/pkg/loop/config_test.go b/pkg/loop/config_test.go index 72adf5825..957a1b26f 100644 --- a/pkg/loop/config_test.go +++ b/pkg/loop/config_test.go @@ -78,6 +78,9 @@ func TestEnvConfig_parse(t *testing.T) { envChipIngressEndpoint: "chip-ingress.example.com:50051", envChipIngressInsecureConnection: "true", + + envCRESettings: `{"global":{}}`, + envCRESettingsDefault: `{"foo":"bar"}`, }, expectError: false, expectConfig: envCfgFull, @@ -177,6 +180,9 @@ var envCfgFull = EnvConfig{ ChipIngressEndpoint: "chip-ingress.example.com:50051", ChipIngressInsecureConnection: true, + + CRESettings: `{"global":{}}`, + CRESettingsDefault: `{"foo":"bar"}`, } func TestEnvConfig_AsCmdEnv(t *testing.T) { @@ -228,6 +234,9 @@ func TestEnvConfig_AsCmdEnv(t *testing.T) { // Assert ChipIngress environment variables assert.Equal(t, "chip-ingress.example.com:50051", got[envChipIngressEndpoint]) assert.Equal(t, "true", got[envChipIngressInsecureConnection]) + + assert.Equal(t, `{"global":{}}`, got[envCRESettings]) + assert.Equal(t, `{"foo":"bar"}`, got[envCRESettingsDefault]) } func TestGetMap(t *testing.T) { diff --git a/pkg/settings/cresettings/settings.go b/pkg/settings/cresettings/settings.go index 0c5de5807..040595443 100644 --- a/pkg/settings/cresettings/settings.go +++ b/pkg/settings/cresettings/settings.go @@ -17,13 +17,13 @@ import ( ) const ( - envNameSettings = "CL_CRE_SETTINGS" - envNameSettingsDefault = "CL_CRE_SETTINGS_DEFAULT" + EnvNameSettings = "CL_CRE_SETTINGS" + EnvNameSettingsDefault = "CL_CRE_SETTINGS_DEFAULT" ) func init() { reinit() } func reinit() { - if v, ok := os.LookupEnv(envNameSettingsDefault); ok { + if v, ok := os.LookupEnv(EnvNameSettingsDefault); ok { err := json.Unmarshal([]byte(v), &Default) if err != nil { log.Fatalf("failed to initialize defaults: %v", err) @@ -35,7 +35,7 @@ func reinit() { } Config = Default - if v, ok := os.LookupEnv(envNameSettings); ok { + if v, ok := os.LookupEnv(EnvNameSettings); ok { DefaultGetter, err = NewJSONGetter([]byte(v)) if err != nil { log.Fatalf("failed to initialize settings: %v", err) diff --git a/pkg/settings/cresettings/settings_test.go b/pkg/settings/cresettings/settings_test.go index e53cba75c..916f17f15 100644 --- a/pkg/settings/cresettings/settings_test.go +++ b/pkg/settings/cresettings/settings_test.go @@ -143,7 +143,7 @@ func TestDefaultGetter(t *testing.T) { require.Equal(t, 5, got) t.Cleanup(reinit) // restore default vars - t.Setenv(envNameSettings, `{ + t.Setenv(EnvNameSettings, `{ "workflow": { "test-wf-id": { "PerWorkflow": { @@ -187,7 +187,7 @@ func TestDefaultGetter_SettingMap(t *testing.T) { t.Cleanup(reinit) // restore default vars // Org override to allow - t.Setenv(envNameSettings, `{ + t.Setenv(EnvNameSettings, `{ "workflow": { "test-wf-id": { "PerWorkflow": { @@ -213,7 +213,7 @@ func TestDefaultGetter_SettingMap(t *testing.T) { require.True(t, got) // Org override to allow by default, but disallow some - t.Setenv(envNameSettings, `{ + t.Setenv(EnvNameSettings, `{ "workflow": { "test-wf-id": { "PerWorkflow": { @@ -247,7 +247,7 @@ func TestDefaultEnvVars(t *testing.T) { t.Cleanup(reinit) // restore after // update defaults - t.Setenv(envNameSettingsDefault, `{ + t.Setenv(EnvNameSettingsDefault, `{ "PerWorkflow": { "ChainAllowed": { "Values": { @@ -274,8 +274,8 @@ func TestDefaultEnvVars(t *testing.T) { assert.NoError(t, gl.AllowErr(contexts.WithChainSelector(ctx, 1234))) // update overrides - t.Setenv(envNameSettingsDefault, "{}") - t.Setenv(envNameSettings, `{ + t.Setenv(EnvNameSettingsDefault, "{}") + t.Setenv(EnvNameSettings, `{ "global": { "PerWorkflow": { "ChainAllowed": {