Merge pull request #12679 from subhamkrai/fix-nodeLoss-logging
operator: log op. config cm setting when changed
This commit is contained in:
2 files changed
+44
-8
No files matched your search
@@ -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
|
||||
}
|
||||
@@ -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)
|
||||
}
|
||||
Reference in new issue
Block a user