@@ -190,7 +190,7 @@ func (c *ClusterController) Reconcile(ctx context.Context, request reconcile.Req
190
190
leafModelHandler := leafUtils .NewLeafModelHandler (cluster , c .Root , mgr .GetClient (), c .RootClientset , leafClient )
191
191
c .LeafModelHandler = leafModelHandler
192
192
193
- nodes , err := c .createNode (ctx , cluster , leafClient )
193
+ nodes , leafNodeSelectors , err := c .createNode (ctx , cluster , leafClient )
194
194
if err != nil {
195
195
return reconcile.Result {RequeueAfter : RequeueTime }, fmt .Errorf ("create node with err %v, cluster %s" , err , cluster .Name )
196
196
}
@@ -206,7 +206,7 @@ func (c *ClusterController) Reconcile(ctx context.Context, request reconcile.Req
206
206
c .ManagerCancelFuncs [cluster .Name ] = & cancel
207
207
c .ControllerManagersLock .Unlock ()
208
208
209
- if err = c .setupControllers (mgr , cluster , nodes , leafDynamic , leafClient , kosmosClient , config ); err != nil {
209
+ if err = c .setupControllers (mgr , cluster , nodes , leafDynamic , leafNodeSelectors , leafClient , kosmosClient , config ); err != nil {
210
210
return reconcile.Result {}, fmt .Errorf ("failed to setup cluster %s controllers: %v" , cluster .Name , err )
211
211
}
212
212
@@ -240,6 +240,7 @@ func (c *ClusterController) setupControllers(
240
240
cluster * kosmosv1alpha1.Cluster ,
241
241
nodes []* corev1.Node ,
242
242
clientDynamic * dynamic.DynamicClient ,
243
+ leafNodeSelector map [string ]kosmosv1alpha1.NodeSelector ,
243
244
leafClientset kubernetes.Interface ,
244
245
kosmosClient kosmosversioned.Interface ,
245
246
leafRestConfig * rest.Config ) error {
@@ -262,14 +263,15 @@ func (c *ClusterController) setupControllers(
262
263
Root : c .Root ,
263
264
RootClientset : c .RootClientset ,
264
265
Nodes : nodes ,
266
+ LeafNodeSelectors : leafNodeSelector ,
265
267
LeafModelHandler : c .LeafModelHandler ,
266
268
Cluster : cluster ,
267
269
}
268
270
if err := nodeResourcesController .SetupWithManager (mgr ); err != nil {
269
271
return fmt .Errorf ("error starting %s: %v" , controllers .NodeResourcesControllerName , err )
270
272
}
271
273
272
- nodeLeaseController := controllers .NewNodeLeaseController (leafClientset , c .Root , nodes , c .RootClientset , c .LeafModelHandler )
274
+ nodeLeaseController := controllers .NewNodeLeaseController (leafClientset , c .Root , nodes , leafNodeSelector , c .RootClientset , c .LeafModelHandler )
273
275
if err := mgr .Add (nodeLeaseController ); err != nil {
274
276
return fmt .Errorf ("error starting %s: %v" , controllers .NodeLeaseControllerName , err )
275
277
}
@@ -333,19 +335,19 @@ func (c *ClusterController) setupStorageControllers(mgr manager.Manager, isOne2O
333
335
return nil
334
336
}
335
337
336
- func (c * ClusterController ) createNode (ctx context.Context , cluster * kosmosv1alpha1.Cluster , leafClient kubernetes.Interface ) ([]* corev1.Node , error ) {
338
+ func (c * ClusterController ) createNode (ctx context.Context , cluster * kosmosv1alpha1.Cluster , leafClient kubernetes.Interface ) ([]* corev1.Node , map [ string ]kosmosv1alpha1. NodeSelector , error ) {
337
339
serverVersion , err := leafClient .Discovery ().ServerVersion ()
338
340
if err != nil {
339
341
klog .Errorf ("create node failed, can not connect to leaf %s" , cluster .Name )
340
- return nil , err
342
+ return nil , nil , err
341
343
}
342
344
343
- nodes , err := c .LeafModelHandler .CreateNodeInRoot (ctx , cluster , c .Options .ListenPort , serverVersion .GitVersion )
345
+ nodes , leafNodeSelectors , err := c .LeafModelHandler .CreateNodeInRoot (ctx , cluster , c .Options .ListenPort , serverVersion .GitVersion )
344
346
if err != nil {
345
347
klog .Errorf ("create node for cluster %s failed, err: %v" , cluster .Name , err )
346
- return nil , err
348
+ return nil , nil , err
347
349
}
348
- return nodes , nil
350
+ return nodes , leafNodeSelectors , nil
349
351
}
350
352
351
353
func (c * ClusterController ) deleteNode (ctx context.Context , cluster * kosmosv1alpha1.Cluster ) error {
0 commit comments