@@ -102,23 +102,16 @@ func (r *NodeReconciler) Reconcile(ctx context.Context, req ctrl.Request) (ctrl.
102102 // Skip creation if the GPUNode already exists
103103 gpuNode := & tfv1.GPUNode {}
104104 if err := r .Client .Get (ctx , client.ObjectKey {Name : node .Name }, gpuNode ); err != nil {
105- if errors .IsNotFound (err ) || gpuNode . Status . KubernetesNodeName == "" {
106- newGPUNode : = r .generateGPUNode (node , pool )
105+ if errors .IsNotFound (err ) {
106+ gpuNode = r .generateGPUNode (node , pool )
107107 // Set owner reference to cascade delete after GPU node created
108- if err := controllerutil .SetControllerReference (node , newGPUNode , r .Scheme ); err != nil {
108+ if err := controllerutil .SetControllerReference (node , gpuNode , r .Scheme ); err != nil {
109109 return ctrl.Result {}, fmt .Errorf ("failed to set controller reference: %w" , err )
110110 }
111- _ , e := controllerutil .CreateOrUpdate (ctx , r .Client , newGPUNode , nil )
111+ _ , e := controllerutil .CreateOrUpdate (ctx , r .Client , gpuNode , nil )
112112 if e != nil {
113113 return ctrl.Result {}, fmt .Errorf ("failed to create or patch GPUNode: %w" , e )
114114 }
115-
116- newGPUNode .InitializeStatus (resource.Quantity {}, resource.Quantity {}, 0 )
117- newGPUNode .Status .KubernetesNodeName = node .Name
118- if err := r .Client .Status ().Update (ctx , newGPUNode ); err != nil {
119- return ctrl.Result {}, fmt .Errorf ("can not add Kubernetes Node info into gpuNode(%s) status : %w" , newGPUNode .Name , err )
120- }
121- log .Info ("Created GPUNode due to selector matched" , "name" , newGPUNode .Name )
122115 }
123116 } else {
124117 // GPUNode resource already exists, indicate node has been changed
@@ -129,6 +122,15 @@ func (r *NodeReconciler) Reconcile(ctx context.Context, req ctrl.Request) (ctrl.
129122 return ctrl.Result {}, fmt .Errorf ("can not update gpuNode(%s) annotation : %w" , gpuNode .Name , err )
130123 }
131124 }
125+
126+ if gpuNode .Status .KubernetesNodeName == "" {
127+ gpuNode .InitializeStatus (resource.Quantity {}, resource.Quantity {}, 0 )
128+ gpuNode .Status .KubernetesNodeName = node .Name
129+ if err := r .Client .Status ().Update (ctx , gpuNode ); err != nil {
130+ return ctrl.Result {}, fmt .Errorf ("can not add Kubernetes Node info into gpuNode(%s) status : %w" , gpuNode .Name , err )
131+ }
132+ log .Info ("Created GPUNode due to selector matched" , "name" , gpuNode .Name )
133+ }
132134 }
133135
134136 return ctrl.Result {}, nil
0 commit comments