Skip to content

Commit 9ae1cfa

Browse files
author
YuChen
committed
compare whole resrouces file instead of spec section
Signed-off-by: YuChen <[email protected]>
1 parent 90a6ba7 commit 9ae1cfa

File tree

2 files changed

+21
-39
lines changed

2 files changed

+21
-39
lines changed

controllers/operandrequest/reconcile_operand.go

Lines changed: 15 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -1062,42 +1062,25 @@ func (r *Reconciler) updateK8sResource(ctx context.Context, existingK8sRes unstr
10621062
klog.Errorf("failed to unmarshal k8s Resource Config: %v", k8sResConfigUnmarshalErr)
10631063
}
10641064

1065-
for key := range existingK8sRes.Object {
1066-
if _, ok := k8sResConfigDecoded[key]; !ok {
1067-
continue
1068-
}
1069-
if reflect.DeepEqual(existingK8sRes.Object[key], k8sResConfigDecoded[key]) {
1070-
continue
1071-
}
1072-
1073-
// Convert k8s resource spec in OperandConfig to string
1074-
k8sResConfigRaw, err := json.Marshal(k8sResConfigDecoded[key])
1075-
if err != nil {
1076-
klog.Error(err)
1077-
return false, err
1078-
}
1079-
1080-
// Convert existing k8s resource spec to string
1081-
existingK8sResRaw, err := json.Marshal(existingK8sRes.Object[key])
1082-
if err != nil {
1083-
klog.Error(err)
1084-
return false, err
1085-
}
1065+
// Convert existing k8s resource spec to string
1066+
existingK8sResRaw, err := json.Marshal(existingK8sRes.Object)
1067+
if err != nil {
1068+
klog.Error(err)
1069+
return false, err
1070+
}
10861071

1087-
// Merge spec from existing CR and OperandConfig spec
1088-
updatedExistingK8sRes := util.MergeCR(existingK8sResRaw, k8sResConfigRaw)
1072+
// Merge spec from existing CR and OperandConfig spec
1073+
updatedExistingK8sRes := util.MergeCR(existingK8sResRaw, k8sResConfig.Raw)
10891074

1090-
r.EnsureAnnotation(existingK8sRes, newAnnotations)
1091-
r.EnsureLabel(existingK8sRes, newLabels)
1075+
r.EnsureAnnotation(existingK8sRes, newAnnotations)
1076+
r.EnsureLabel(existingK8sRes, newLabels)
10921077

1093-
if reflect.DeepEqual(existingK8sRes.Object[key], updatedExistingK8sRes) {
1094-
continue
1095-
}
1096-
1097-
klog.Infof("updating k8s resource with apiversion: %s, kind: %s, %s/%s", apiversion, kind, namespace, name)
1098-
1099-
existingK8sRes.Object[key] = updatedExistingK8sRes
1078+
if reflect.DeepEqual(existingK8sRes.Object, updatedExistingK8sRes) {
1079+
return true, nil
11001080
}
1081+
klog.Infof("updating k8s resource with apiversion: %s, kind: %s, %s/%s", apiversion, kind, namespace, name)
1082+
1083+
existingK8sRes.Object = updatedExistingK8sRes
11011084

11021085
CRgeneration := existingK8sRes.GetGeneration()
11031086

@@ -1127,7 +1110,6 @@ func (r *Reconciler) updateK8sResource(ctx context.Context, existingK8sRes unstr
11271110
if UpdatedK8sRes.GetGeneration() != CRgeneration {
11281111
klog.Infof("Finish updating the k8s Resource: -- Kind: %s, NamespacedName: %s/%s", kind, namespace, name)
11291112
}
1130-
11311113
}
11321114
return true, nil
11331115
})

controllers/util/merge.go

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -80,17 +80,17 @@ func checkKeyBeforeMerging(key string, defaultMap interface{}, changedMap interf
8080
changedMapRef := changedMap.([]interface{})
8181
for i := range defaultMapRef {
8282
if _, ok := defaultMapRef[i].(map[string]interface{}); ok {
83-
for newKey := range defaultMapRef[i].(map[string]interface{}) {
84-
// check if the changedMapRef[i] is nil
85-
if changedMapRef[i] == nil {
86-
changedMapRef[i] = map[string]interface{}{}
83+
if len(changedMapRef) <= i {
84+
finalMap[key] = append(finalMap[key].([]interface{}), defaultMapRef[i])
85+
} else {
86+
87+
for newKey := range defaultMapRef[i].(map[string]interface{}) {
88+
checkKeyBeforeMerging(newKey, defaultMapRef[i].(map[string]interface{})[newKey], changedMapRef[i].(map[string]interface{})[newKey], finalMap[key].([]interface{})[i].(map[string]interface{}))
8789
}
88-
checkKeyBeforeMerging(newKey, defaultMapRef[i].(map[string]interface{})[newKey], changedMapRef[i].(map[string]interface{})[newKey], finalMap[key].([]interface{})[i].(map[string]interface{}))
8990
}
9091
}
9192
}
9293
}
93-
9494
default:
9595
//Check if the value was set, otherwise set it
9696
if changedMap == nil {

0 commit comments

Comments
 (0)