Skip to content
This repository was archived by the owner on Oct 23, 2023. It is now read-only.

Rename config processing function #69

Merged
merged 2 commits into from
Jul 20, 2022
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
21 changes: 13 additions & 8 deletions options/options.go
Original file line number Diff line number Diff line change
Expand Up @@ -205,8 +205,8 @@ func (cp *configProcessor) processAppConfigOptions(services []string) error {
return nil
}

// ProcessAppConfig processes snap configuration which can be used to override
// edgexfoundry configuration via environment variables sourced by the snap
// ProcessConfig processes snap configuration which can be used to override
// app configuration via environment variables sourced by the snap
// service wrapper script.
// A service specific file (named <service>.env) is created in the
// $SNAP_DATA/config/res directory.
Expand All @@ -215,12 +215,12 @@ func (cp *configProcessor) processAppConfigOptions(services []string) error {
// -> sets env var MY_ENV_VAR for an app
// b) snap set edgex-snap-name config.<my.env.var>
// -> sets env variable for all apps (e.g. DEBUG=true, SERVICE_SERVERBINDADDRESS=0.0.0.0)
func ProcessAppConfig(services ...string) error {
func ProcessConfig(apps ...string) error {
// uncomment to enable snap debugging
// snapctl.Set("debug", "true")

if len(services) == 0 {
return fmt.Errorf("empty service list")
if len(apps) == 0 {
return fmt.Errorf("empty apps list")
}

appOptionsStr, err := snapctl.Get("app-options").Run()
Expand Down Expand Up @@ -296,15 +296,15 @@ Note: Disabling app-options WILL NOT revert the migration!`
log.Info("Unset all 'env.' options.")
}

cp := newConfigProcessor(services)
cp := newConfigProcessor(apps)

// process app-specific options
if err := cp.processGlobalConfigOptions(services); err != nil {
if err := cp.processGlobalConfigOptions(apps); err != nil {
return err
}

// process global options
if err := cp.processAppConfigOptions(services); err != nil {
if err := cp.processAppConfigOptions(apps); err != nil {
return err
}

Expand All @@ -313,5 +313,10 @@ Note: Disabling app-options WILL NOT revert the migration!`
}

return nil
}

// Deprecated
// Use ProcessConfig
func ProcessAppConfig(apps ...string) error {
return ProcessConfig(apps...)
}
24 changes: 12 additions & 12 deletions options/options_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -64,7 +64,7 @@ func TestProcessAppConfig(t *testing.T) {
})

t.Run("reject empty service list", func(t *testing.T) {
require.Error(t, options.ProcessAppConfig())
require.Error(t, options.ProcessConfig())
})

t.Run("global options", func(t *testing.T) {
Expand All @@ -80,14 +80,14 @@ func TestProcessAppConfig(t *testing.T) {
t.Run("reject without enabling", func(t *testing.T) {
require.NoError(t, snapctl.Set(key, value).Run())

require.Error(t, options.ProcessAppConfig(testService, testService2))
require.Error(t, options.ProcessConfig(testService, testService2))
})

t.Run("set+unset", func(t *testing.T) {
require.NoError(t, snapctl.Set(appOptions, "true").Run())
t.Cleanup(func() {
require.NoError(t, snapctl.Unset("config").Run())
require.NoError(t, options.ProcessAppConfig(testService, testService2))
require.NoError(t, options.ProcessConfig(testService, testService2))
// disable config after processing once, otherwise the env files won't get cleaned up
require.NoError(t, snapctl.Unset(appOptions).Run())

Expand All @@ -97,7 +97,7 @@ func TestProcessAppConfig(t *testing.T) {

require.NoError(t, snapctl.Set(key, value).Run())

require.NoError(t, options.ProcessAppConfig(testService, testService2))
require.NoError(t, options.ProcessConfig(testService, testService2))

// both env files should have it
require.NoError(t, fileContains(t, envFile, `X_Y="value"`),
Expand All @@ -123,7 +123,7 @@ func TestProcessAppConfig(t *testing.T) {
require.NoError(t, snapctl.Set(appOptions, "true").Run())
t.Cleanup(func() {
require.NoError(t, snapctl.Unset("apps").Run())
require.NoError(t, options.ProcessAppConfig(testService, testService2))
require.NoError(t, options.ProcessConfig(testService, testService2))
// disable config after processing once, otherwise the env files won't get cleaned up
require.NoError(t, snapctl.Unset(appOptions).Run())

Expand All @@ -132,7 +132,7 @@ func TestProcessAppConfig(t *testing.T) {

require.NoError(t, snapctl.Set(key, value).Run())

require.NoError(t, options.ProcessAppConfig(testService, testService2))
require.NoError(t, options.ProcessConfig(testService, testService2))

// first env file should have it
require.NoError(t, fileContains(t, envFile, `X_Y="value"`),
Expand All @@ -157,7 +157,7 @@ func TestProcessAppConfig(t *testing.T) {
require.NoError(t, snapctl.Set(appOptions, "true").Run())

require.NoError(t, snapctl.Set(legacyKey, legacyValue).Run())
require.NoError(t, options.ProcessAppConfig(testService))
require.NoError(t, options.ProcessConfig(testService))
})

t.Run("reject mixed legacy options", func(t *testing.T) {
Expand All @@ -183,7 +183,7 @@ func TestProcessAppConfig(t *testing.T) {
require.NoError(t, snapctl.Set(key, value).Run())

require.NoError(t, applyLegacyOptions("core-data"))
require.Error(t, options.ProcessAppConfig(testService, "core-data"))
require.Error(t, options.ProcessConfig(testService, "core-data"))
})

t.Run("reject unknown app", func(t *testing.T) {
Expand All @@ -197,7 +197,7 @@ func TestProcessAppConfig(t *testing.T) {
require.NoError(t, snapctl.Unset("apps").Run())
})

err := options.ProcessAppConfig(testService, "core-data")
err := options.ProcessConfig(testService, "core-data")
assert.Error(t, err)
require.Contains(t, err.Error(), "unsupported")

Expand All @@ -211,21 +211,21 @@ func TestProcessAppConfig(t *testing.T) {

t.Cleanup(func() {
require.NoError(t, snapctl.Unset("apps").Run())
require.NoError(t, options.ProcessAppConfig(app))
require.NoError(t, options.ProcessConfig(app))
// disable config after processing once, otherwise the env files won't get cleaned up
require.NoError(t, snapctl.Unset(appOptions).Run())
})

require.NoError(t, snapctl.Set(key, value).Run())
require.NoError(t, options.ProcessAppConfig(app))
require.NoError(t, options.ProcessConfig(app))

// env file should have the X_Y
require.NoError(t, fileContains(t, envFile, `X_Y="value"`),
"File content:\n%s", readFile(t, envFile))

// set something bad
require.NoError(t, snapctl.Set("apps."+app+".config.dots.disallowed", value).Run())
require.Error(t, options.ProcessAppConfig(app))
require.Error(t, options.ProcessConfig(app))

// env file should still have the X_Y
require.Error(t, fileContains(t, envFile, `DOTS_DISALLOWED="value"`),
Expand Down