@@ -120,18 +120,11 @@ func (r *ClusterResourceSetReconciler) getOrCreateClusterResourceSetBinding(ctx
120120 if ! apierrors .IsNotFound (err ) {
121121 return nil , err
122122 }
123-
124123 clusterResourceSetBinding .Name = cluster .Name
125124 clusterResourceSetBinding .Namespace = cluster .Namespace
126- clusterResourceSetBinding .OwnerReferences = util .EnsureOwnerRef (clusterResourceSetBinding .OwnerReferences , metav1.OwnerReference {
127- APIVersion : clusterv1 .GroupVersion .String (),
128- Kind : "Cluster" ,
129- Name : cluster .Name ,
130- UID : cluster .UID ,
131- })
132- clusterResourceSetBinding .OwnerReferences = util .EnsureOwnerRef (clusterResourceSetBinding .OwnerReferences , * metav1 .NewControllerRef (clusterResourceSet , clusterResourceSet .GroupVersionKind ()))
133-
125+ clusterResourceSetBinding .OwnerReferences = ensureOwnerRefs (clusterResourceSetBinding , clusterResourceSet , cluster )
134126 clusterResourceSetBinding .Spec .Bindings = []* addonsv1.ResourceSetBinding {}
127+
135128 if err := r .Client .Create (ctx , clusterResourceSetBinding ); err != nil {
136129 if apierrors .IsAlreadyExists (err ) {
137130 if err = r .Client .Get (ctx , clusterResourceSetBindingKey , clusterResourceSetBinding ); err != nil {
@@ -142,10 +135,29 @@ func (r *ClusterResourceSetReconciler) getOrCreateClusterResourceSetBinding(ctx
142135 return nil , errors .Wrapf (err , "failed to create clusterResourceSetBinding for cluster: %s/%s" , cluster .Namespace , cluster .Name )
143136 }
144137 }
145-
146138 return clusterResourceSetBinding , nil
147139}
148140
141+ // ensureOwnerRefs ensures Cluster and ClusterResourceSet owner references are set on the ClusterResourceSetBinding.
142+ func ensureOwnerRefs (clusterResourceSetBinding * addonsv1.ClusterResourceSetBinding , clusterResourceSet * addonsv1.ClusterResourceSet , cluster * clusterv1.Cluster ) []metav1.OwnerReference {
143+ ownerRefs := make ([]metav1.OwnerReference , len (clusterResourceSetBinding .GetOwnerReferences ()))
144+ copy (ownerRefs , clusterResourceSetBinding .GetOwnerReferences ())
145+ ownerRefs = util .EnsureOwnerRef (ownerRefs , metav1.OwnerReference {
146+ APIVersion : clusterv1 .GroupVersion .String (),
147+ Kind : "Cluster" ,
148+ Name : cluster .Name ,
149+ UID : cluster .UID ,
150+ })
151+ ownerRefs = util .EnsureOwnerRef (ownerRefs ,
152+ metav1.OwnerReference {
153+ APIVersion : clusterResourceSet .GroupVersionKind ().String (),
154+ Kind : clusterResourceSet .GroupVersionKind ().Kind ,
155+ Name : clusterResourceSet .Name ,
156+ UID : clusterResourceSet .UID ,
157+ })
158+ return ownerRefs
159+ }
160+
149161// getConfigMap retrieves any ConfigMap from the given name and namespace.
150162func getConfigMap (ctx context.Context , c client.Client , configmapName types.NamespacedName ) (* corev1.ConfigMap , error ) {
151163 configMap := & corev1.ConfigMap {}
0 commit comments