Merge pull request #12679 from subhamkrai/fix-nodeLoss-logging

operator: log op. config cm setting when changed
This commit is contained in:
Travis Nielsen authored and GitHub committed 2023-08-16 11:09:27 -06:00
commit bffd2e0af5
2 files changed
+44 -8

No files matched your search

+26 -8
View File
@@ -20,6 +20,7 @@ import (
"context"
"fmt"
"os"
"sync"
"time"
apierrors "k8s.io/apimachinery/pkg/api/errors"
@@ -27,6 +28,8 @@ import (
"k8s.io/client-go/kubernetes"
)
var loggedOperatorSettings = sync.Map{}
// DeleteConfigMap deletes a ConfigMap.
func DeleteConfigMap(ctx context.Context, clientset kubernetes.Interface, cmName, namespace string, opts *DeleteOptions) error {
k8sOpts := BaseKubernetesDeleteOptions()
@@ -62,13 +65,28 @@ func GetOperatorSetting(context context.Context, clientset kubernetes.Interface,
}
func GetValue(data map[string]string, settingName, defaultValue string) string {
if settingValue, ok := data[settingName]; ok {
logger.Infof("%s=%q (configmap)", settingName, settingValue)
return settingValue
} else if settingValue, ok := os.LookupEnv(settingName); ok {
logger.Infof("%s=%q (env var)", settingName, settingValue)
return settingValue
settingValue := defaultValue
settingSource := "default"
if val, ok := data[settingName]; ok {
settingValue = val
settingSource = "configmap"
} else if val, ok := os.LookupEnv(settingName); ok {
settingValue = val
settingSource = "env var"
}
logger.Infof("%s=%q (default)", settingName, defaultValue)
return defaultValue
if logChangedSettings(settingName, settingValue) {
logger.Infof("%s=%q (%s)", settingName, settingValue, settingSource)
}
return settingValue
}
func logChangedSettings(settingName, settingValue string) bool {
if val, ok := loggedOperatorSettings.Load(settingName); !ok || val != settingValue {
loggedOperatorSettings.Store(settingName, settingValue)
return true
}
return false
}
+18
View File
@@ -119,3 +119,21 @@ func TestGetOperatorSetting(t *testing.T) {
assert.NoError(t, err)
assert.Equal(t, envSettingValue, setting)
}
func TestLogChangedSettings(t *testing.T) {
key := "Node_Affinity"
value := "storage=rook, worker"
// When the key is not in the map, it should be added and return true for logging
ok := logChangedSettings(key, value)
assert.True(t, true, ok)
// When the key is already present in the map and value is same, it should return false for logging
ok = logChangedSettings(key, value)
assert.False(t, false, ok)
// When the key is already present in the map and value is updated, it should return true for logging
value = "storage=rook, test"
ok = logChangedSettings(key, value)
assert.True(t, true, ok)
}