@@ -121,9 +121,46 @@ func (r *MachineSetReconciler) Reconcile(req ctrl.Request) (ctrl.Result, error)
121
121
122
122
func (r * MachineSetReconciler ) reconcile (ctx context.Context , machineSet * clusterv1.MachineSet ) (ctrl.Result , error ) {
123
123
logger := r .Log .WithValues ("machineset" , machineSet .Name , "namespace" , machineSet .Namespace )
124
-
125
124
logger .V (4 ).Info ("Reconcile MachineSet" )
126
125
126
+ // Reconcile and retrieve the Cluster object.
127
+ if machineSet .Labels == nil {
128
+ machineSet .Labels = make (map [string ]string )
129
+ }
130
+ machineSet .Labels [clusterv1 .ClusterLabelName ] = machineSet .Spec .ClusterName
131
+
132
+ cluster , err := util .GetClusterByName (ctx , r .Client , machineSet .ObjectMeta .Namespace , machineSet .Spec .ClusterName )
133
+ if err != nil {
134
+ return ctrl.Result {}, err
135
+ }
136
+
137
+ if r .shouldAdopt (machineSet ) {
138
+ patch := client .MergeFrom (machineSet .DeepCopy ())
139
+ machineSet .OwnerReferences = util .EnsureOwnerRef (machineSet .OwnerReferences , metav1.OwnerReference {
140
+ APIVersion : clusterv1 .GroupVersion .String (),
141
+ Kind : "Cluster" ,
142
+ Name : cluster .Name ,
143
+ UID : cluster .UID ,
144
+ })
145
+ // Patch using a deep copy to avoid overwriting any unexpected Status changes from the returned result
146
+ if err := r .Client .Patch (ctx , machineSet .DeepCopy (), patch ); err != nil {
147
+ return ctrl.Result {}, errors .Wrapf (
148
+ err ,
149
+ "failed to add OwnerReference to MachineSet %s/%s" ,
150
+ machineSet .Namespace ,
151
+ machineSet .Name ,
152
+ )
153
+ }
154
+ }
155
+
156
+ // Make sure selector and template to be in the same cluster.
157
+ machineSet .Spec .Selector .MatchLabels [clusterv1 .ClusterLabelName ] = machineSet .Spec .ClusterName
158
+ machineSet .Spec .Template .Labels [clusterv1 .ClusterLabelName ] = machineSet .Spec .ClusterName
159
+
160
+ // Add label and selector based on the MachineSet's name.
161
+ machineSet .Spec .Selector .MatchLabels [clusterv1 .MachineSetLabelName ] = machineSet .Name
162
+ machineSet .Spec .Template .Labels [clusterv1 .MachineSetLabelName ] = machineSet .Name
163
+
127
164
// Make sure that label selector can match template's labels.
128
165
// TODO(vincepri): Move to a validation (admission) webhook when supported.
129
166
selector , err := metav1 .LabelSelectorAsSelector (& machineSet .Spec .Selector )
@@ -155,36 +192,6 @@ func (r *MachineSetReconciler) reconcile(ctx context.Context, machineSet *cluste
155
192
return ctrl.Result {}, errors .Wrap (err , "failed to list machines" )
156
193
}
157
194
158
- // Reconcile and retrieve the Cluster object.
159
- if machineSet .Labels == nil {
160
- machineSet .Labels = make (map [string ]string )
161
- }
162
- machineSet .Labels [clusterv1 .ClusterLabelName ] = machineSet .Spec .ClusterName
163
-
164
- cluster , err := util .GetClusterByName (ctx , r .Client , machineSet .ObjectMeta .Namespace , machineSet .Spec .ClusterName )
165
- if err != nil {
166
- return ctrl.Result {}, err
167
- }
168
-
169
- if r .shouldAdopt (machineSet ) {
170
- patch := client .MergeFrom (machineSet .DeepCopy ())
171
- machineSet .OwnerReferences = util .EnsureOwnerRef (machineSet .OwnerReferences , metav1.OwnerReference {
172
- APIVersion : clusterv1 .GroupVersion .String (),
173
- Kind : "Cluster" ,
174
- Name : cluster .Name ,
175
- UID : cluster .UID ,
176
- })
177
- // Patch using a deep copy to avoid overwriting any unexpected Status changes from the returned result
178
- if err := r .Client .Patch (ctx , machineSet .DeepCopy (), patch ); err != nil {
179
- return ctrl.Result {}, errors .Wrapf (
180
- err ,
181
- "failed to add OwnerReference to MachineSet %s/%s" ,
182
- machineSet .Namespace ,
183
- machineSet .Name ,
184
- )
185
- }
186
- }
187
-
188
195
// Filter out irrelevant machines (deleting/mismatch labels) and claim orphaned machines.
189
196
filteredMachines := make ([]* clusterv1.Machine , 0 , len (allMachines .Items ))
190
197
for idx := range allMachines .Items {
@@ -395,7 +402,6 @@ func (r *MachineSetReconciler) getNewMachine(machineSet *clusterv1.MachineSet) *
395
402
if machine .Labels == nil {
396
403
machine .Labels = make (map [string ]string )
397
404
}
398
- machine .Labels [clusterv1 .MachineSetLabelName ] = machineSet .Name
399
405
return machine
400
406
}
401
407
0 commit comments