@@ -36,17 +36,17 @@ import (
3636type diffFunc func (spec crclient.Object , cluster crclient.Object ) (delete , update bool )
3737
3838var diffFuncs = map [reflect.Type ]diffFunc {
39- reflect .TypeOf (rbacv1.Role {}): allDiffFuncs (labelsAndAnnotationsDiffFunc , basicDiffFunc (roleDiffOpts )),
40- reflect .TypeOf (rbacv1.RoleBinding {}): allDiffFuncs (labelsAndAnnotationsDiffFunc , basicDiffFunc (rolebindingDiffOpts )),
41- reflect .TypeOf (corev1.ServiceAccount {}): allDiffFuncs ( labelsAndAnnotationsDiffFunc , ownerrefsDiffFunc ) ,
42- reflect .TypeOf (appsv1.Deployment {}): allDiffFuncs (deploymentDiffFunc , labelsAndAnnotationsDiffFunc , basicDiffFunc (deploymentDiffOpts )),
43- reflect .TypeOf (corev1.ConfigMap {}): allDiffFuncs (labelsAndAnnotationsDiffFunc , basicDiffFunc (configmapDiffOpts )),
44- reflect .TypeOf (corev1.Secret {}): allDiffFuncs (labelsAndAnnotationsDiffFunc , basicDiffFunc (secretDiffOpts )),
45- reflect .TypeOf (v1alpha1.DevWorkspaceRouting {}): allDiffFuncs (routingDiffFunc , labelsAndAnnotationsDiffFunc , basicDiffFunc (routingDiffOpts )),
46- reflect .TypeOf (batchv1.Job {}): allDiffFuncs (labelsAndAnnotationsDiffFunc , jobDiffFunc ),
47- reflect .TypeOf (corev1.Service {}): allDiffFuncs (labelsAndAnnotationsDiffFunc , serviceDiffFunc ),
48- reflect .TypeOf (networkingv1.Ingress {}): allDiffFuncs (labelsAndAnnotationsDiffFunc , basicDiffFunc (ingressDiffOpts )),
49- reflect .TypeOf (routev1.Route {}): allDiffFuncs (labelsAndAnnotationsDiffFunc , basicDiffFunc (routeDiffOpts )),
39+ reflect .TypeOf (rbacv1.Role {}): allDiffFuncs (metadataDiffFunc , basicDiffFunc (roleDiffOpts )),
40+ reflect .TypeOf (rbacv1.RoleBinding {}): allDiffFuncs (metadataDiffFunc , basicDiffFunc (rolebindingDiffOpts )),
41+ reflect .TypeOf (corev1.ServiceAccount {}): metadataDiffFunc ,
42+ reflect .TypeOf (appsv1.Deployment {}): allDiffFuncs (deploymentDiffFunc , metadataDiffFunc , basicDiffFunc (deploymentDiffOpts )),
43+ reflect .TypeOf (corev1.ConfigMap {}): allDiffFuncs (metadataDiffFunc , basicDiffFunc (configmapDiffOpts )),
44+ reflect .TypeOf (corev1.Secret {}): allDiffFuncs (metadataDiffFunc , basicDiffFunc (secretDiffOpts )),
45+ reflect .TypeOf (v1alpha1.DevWorkspaceRouting {}): allDiffFuncs (routingDiffFunc , metadataDiffFunc , basicDiffFunc (routingDiffOpts )),
46+ reflect .TypeOf (batchv1.Job {}): allDiffFuncs (metadataDiffFunc , jobDiffFunc ),
47+ reflect .TypeOf (corev1.Service {}): allDiffFuncs (metadataDiffFunc , serviceDiffFunc ),
48+ reflect .TypeOf (networkingv1.Ingress {}): allDiffFuncs (metadataDiffFunc , basicDiffFunc (ingressDiffOpts )),
49+ reflect .TypeOf (routev1.Route {}): allDiffFuncs (metadataDiffFunc , basicDiffFunc (routeDiffOpts )),
5050}
5151
5252// basicDiffFunc returns a diffFunc that specifies an object needs an update if cmp.Equal fails
@@ -56,9 +56,9 @@ func basicDiffFunc(diffOpt cmp.Options) diffFunc {
5656 }
5757}
5858
59- // labelsAndAnnotationsDiffFunc requires an object to be updated if any label or annotation present in the spec
59+ // metadataDiffFunc requires an object to be updated if any label or annotation present in the spec
6060// object is not present in the cluster object.
61- func labelsAndAnnotationsDiffFunc (spec , cluster crclient.Object ) (delete , update bool ) {
61+ func metadataDiffFunc (spec , cluster crclient.Object ) (delete , update bool ) {
6262 clusterAnnotations := cluster .GetAnnotations ()
6363 for k , v := range spec .GetAnnotations () {
6464 if clusterAnnotations [k ] != v {
@@ -71,10 +71,6 @@ func labelsAndAnnotationsDiffFunc(spec, cluster crclient.Object) (delete, update
7171 return false , true
7272 }
7373 }
74- return false , false
75- }
76-
77- func ownerrefsDiffFunc (spec , cluster crclient.Object ) (delete , update bool ) {
7874 clusterRefs := cluster .GetOwnerReferences ()
7975 for _ , ownerref := range spec .GetOwnerReferences () {
8076 if ! containsOwnerRef (ownerref , clusterRefs ) {
@@ -147,6 +143,10 @@ func serviceDiffFunc(spec, cluster crclient.Object) (delete, update bool) {
147143 return false , specCopy .Spec .Type != clusterCopy .Spec .Type
148144}
149145
146+ func unrecognizedObjectDiffFunc (spec , cluster crclient.Object ) (delete , update bool ) {
147+ return metadataDiffFunc (spec , cluster )
148+ }
149+
150150func containsOwnerRef (toCheck metav1.OwnerReference , listRefs []metav1.OwnerReference ) bool {
151151 boolPtrsEqual := func (a , b * bool ) bool {
152152 // If either is nil, assume check other is nil or false; otherwise, compare actual values
0 commit comments