From 74759b05a5240648437b349fc0d705f46d29fbd0 Mon Sep 17 00:00:00 2001 From: Harshavardhana Date: Thu, 22 Jun 2023 10:04:02 -0700 Subject: [PATCH] make sure to set relevant config entries correctly (#17485) Bonus: also allow skipping keys properly. --- internal/config/api/api.go | 29 ++++++++++--------- internal/config/config.go | 12 +++++++- internal/config/storageclass/storage-class.go | 6 ++-- 3 files changed, 30 insertions(+), 17 deletions(-) diff --git a/internal/config/api/api.go b/internal/config/api/api.go index 9c844334b..7428a40d8 100644 --- a/internal/config/api/api.go +++ b/internal/config/api/api.go @@ -176,14 +176,11 @@ func (sCfg *Config) UnmarshalJSON(data []byte) error { // LookupConfig - lookup api config and override with valid environment settings if any. func LookupConfig(kvs config.KVS) (cfg Config, err error) { - // remove this since we have removed this already. - kvs.Delete(apiReadyDeadline) - kvs.Delete("extend_list_cache_life") - kvs.Delete(apiReplicationWorkers) - kvs.Delete(apiReplicationFailedWorkers) - - if err = config.CheckValidKeys(config.APISubSys, kvs, DefaultKVS); err != nil { - return cfg, err + deprecatedKeys := []string{ + apiReadyDeadline, + "extend_list_cache_life", + apiReplicationWorkers, + apiReplicationFailedWorkers, } disableODirect := env.Get(EnvAPIDisableODirect, kvs.Get(apiDisableODirect)) == config.EnableOn @@ -196,6 +193,16 @@ func LookupConfig(kvs config.KVS) (cfg Config, err error) { RootAccess: rootAccess, } + corsAllowOrigin := strings.Split(env.Get(EnvAPICorsAllowOrigin, kvs.Get(apiCorsAllowOrigin)), ",") + if len(corsAllowOrigin) == 0 { + corsAllowOrigin = []string{"*"} // defaults to '*' + } + cfg.CorsAllowOrigin = corsAllowOrigin + + if err = config.CheckValidKeys(config.APISubSys, kvs, DefaultKVS, deprecatedKeys...); err != nil { + return cfg, err + } + // Check environment variables parameters requestsMax, err := strconv.Atoi(env.Get(EnvAPIRequestsMax, kvs.GetWithDefault(apiRequestsMax, DefaultKVS))) if err != nil { @@ -219,12 +226,6 @@ func LookupConfig(kvs config.KVS) (cfg Config, err error) { } cfg.ClusterDeadline = clusterDeadline - corsAllowOrigin := strings.Split(env.Get(EnvAPICorsAllowOrigin, kvs.Get(apiCorsAllowOrigin)), ",") - if len(corsAllowOrigin) == 0 { - corsAllowOrigin = []string{"*"} // defaults to '*' - } - cfg.CorsAllowOrigin = corsAllowOrigin - remoteTransportDeadline, err := time.ParseDuration(env.Get(EnvAPIRemoteTransportDeadline, kvs.GetWithDefault(apiRemoteTransportDeadline, DefaultKVS))) if err != nil { return cfg, err diff --git a/internal/config/config.go b/internal/config/config.go index ffbc34ce2..570f18314 100644 --- a/internal/config/config.go +++ b/internal/config/config.go @@ -598,7 +598,7 @@ func LookupSite(siteKV KVS, regionKV KVS) (s Site, err error) { // CheckValidKeys - checks if inputs KVS has the necessary keys, // returns error if it find extra or superflous keys. -func CheckValidKeys(subSys string, kv KVS, validKVS KVS) error { +func CheckValidKeys(subSys string, kv KVS, validKVS KVS, deprecatedKeys ...string) error { nkv := KVS{} for _, kv := range kv { // Comment is a valid key, its also fully optional @@ -607,6 +607,16 @@ func CheckValidKeys(subSys string, kv KVS, validKVS KVS) error { if kv.Key == Comment { continue } + var skip bool + for _, deprecatedKey := range deprecatedKeys { + if kv.Key == deprecatedKey { + skip = true + break + } + } + if skip { + continue + } if _, ok := validKVS.Lookup(kv.Key); !ok { nkv = append(nkv, kv) } diff --git a/internal/config/storageclass/storage-class.go b/internal/config/storageclass/storage-class.go index d8027d396..40def219c 100644 --- a/internal/config/storageclass/storage-class.go +++ b/internal/config/storageclass/storage-class.go @@ -281,9 +281,11 @@ func DefaultParityBlocks(drive int) int { func LookupConfig(kvs config.KVS, setDriveCount int) (cfg Config, err error) { cfg = Config{} - kvs.Delete("dma") + deprecatedKeys := []string{ + "dma", + } - if err = config.CheckValidKeys(config.StorageClassSubSys, kvs, DefaultKVS); err != nil { + if err = config.CheckValidKeys(config.StorageClassSubSys, kvs, DefaultKVS, deprecatedKeys...); err != nil { return Config{}, err }