in internal/controller/utils.go [321:351]
func shouldCreateOrUpdateConfigMap(existingConfigMap *corev1.ConfigMap, latestConfigMapSettings map[string]string, dataOptions *acpv1.ConfigMapDataOptions) bool {
if existingConfigMap == nil || existingConfigMap.Data == nil {
return true
}
if dataOptions == nil || dataOptions.Type == acpv1.Default || dataOptions.Type == acpv1.Properties {
return !reflect.DeepEqual(existingConfigMap.Data, latestConfigMapSettings)
}
// spec.target.configMapData.key is changed
if _, ok := existingConfigMap.Data[dataOptions.Key]; !ok {
return true
}
var existingSettings, latestSettings map[string]interface{}
if dataOptions.Type == acpv1.Yaml {
_ = yaml.Unmarshal([]byte(existingConfigMap.Data[dataOptions.Key]), &existingSettings)
_ = yaml.Unmarshal([]byte(latestConfigMapSettings[dataOptions.Key]), &latestSettings)
return !reflect.DeepEqual(existingSettings, latestSettings)
}
if dataOptions.Type == acpv1.Json {
_ = json.Unmarshal([]byte(existingConfigMap.Data[dataOptions.Key]), &existingSettings)
_ = json.Unmarshal([]byte(latestConfigMapSettings[dataOptions.Key]), &latestSettings)
return !reflect.DeepEqual(existingSettings, latestSettings)
}
return false
}