[management,misc] Fix configuration migration checks

The initial migration let an empty legacy Datadir override Management defaults and pulled Viper into WASM builds through the common util package.

Normalize the Management data directory, isolate template expansion from the loader dependency, and split source binding to satisfy the quality gate.
This commit is contained in:
jnfrati
2026-08-25 11:03:33 +02:00
parent 9bb006a3d7
commit 0646d8fc78
6 changed files with 132 additions and 67 deletions
+10 -2
View File
@@ -3,11 +3,19 @@ package cmd
import (
nbconfig "github.com/netbirdio/netbird/management/internals/server/config"
configloader "github.com/netbirdio/netbird/util/config"
"github.com/netbirdio/netbird/util/envtemplate"
)
func loadManagementConfig(configPath string) (*nbconfig.Config, error) {
return configloader.Load(configPath, &nbconfig.Config{Datadir: defaultMgmtDataDir}, configloader.Options{
cfg, err := configloader.Load(configPath, &nbconfig.Config{Datadir: defaultMgmtDataDir}, configloader.Options{
TagName: "json",
Transform: configloader.ExpandEnvTemplate,
Transform: envtemplate.Expand,
})
if err != nil {
return nil, err
}
if cfg.Datadir == "" {
cfg.Datadir = defaultMgmtDataDir
}
return cfg, nil
}
+9
View File
@@ -10,6 +10,15 @@ import (
"github.com/stretchr/testify/require"
)
func TestLoadManagementConfigUsesDefaultDataDirForEmptyValue(t *testing.T) {
configPath := filepath.Join(t.TempDir(), "management.json")
require.NoError(t, os.WriteFile(configPath, []byte(`{"Datadir":""}`), 0o600))
cfg, err := loadManagementConfig(configPath)
require.NoError(t, err)
assert.Equal(t, defaultMgmtDataDir, cfg.Datadir, "Empty legacy values should use the default data directory")
}
func TestLoadManagementConfigSources(t *testing.T) {
t.Setenv("MANAGEMENT_DATA_DIR", "/template-data")
t.Setenv("MANAGEMENT_ENCRYPTION_KEY", "template-key")