Skip to content

Commit c16750e

Browse files
authored
fix: properly set owner references for GPU resources using GVK scheme (#182)
1 parent bd64440 commit c16750e

File tree

3 files changed

+17
-4
lines changed

3 files changed

+17
-4
lines changed

cmd/main.go

-1
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,6 @@ var (
5858
func init() {
5959
utilruntime.Must(clientgoscheme.AddToScheme(scheme))
6060

61-
utilruntime.Must(tfv1.AddToScheme(scheme))
6261
utilruntime.Must(tfv1.AddToScheme(scheme))
6362
// +kubebuilder:scaffold:scheme
6463
}

cmd/nodediscovery/main.go

+15-3
Original file line numberDiff line numberDiff line change
@@ -25,8 +25,10 @@ import (
2525
"k8s.io/client-go/rest"
2626
"k8s.io/client-go/tools/clientcmd"
2727
"k8s.io/client-go/util/retry"
28+
"k8s.io/utils/ptr"
2829
ctrl "sigs.k8s.io/controller-runtime"
2930
"sigs.k8s.io/controller-runtime/pkg/client"
31+
"sigs.k8s.io/controller-runtime/pkg/client/apiutil"
3032
"sigs.k8s.io/controller-runtime/pkg/controller/controllerutil"
3133
"sigs.k8s.io/controller-runtime/pkg/log/zap"
3234
)
@@ -211,11 +213,21 @@ func createOrUpdateTensorFusionGPU(
211213
}
212214

213215
if !metav1.IsControlledBy(gpu, gpunode) {
214-
gpu.OwnerReferences = []metav1.OwnerReference{
215-
*metav1.NewControllerRef(gpunode, gpunode.GroupVersionKind()),
216+
// Create a new controller ref.
217+
gvk, err := apiutil.GVKForObject(gpunode, Scheme)
218+
if err != nil {
219+
return err
216220
}
221+
ref := metav1.OwnerReference{
222+
APIVersion: gvk.GroupVersion().String(),
223+
Kind: gvk.Kind,
224+
Name: gpunode.GetName(),
225+
UID: gpunode.GetUID(),
226+
BlockOwnerDeletion: ptr.To(true),
227+
Controller: ptr.To(true),
228+
}
229+
gpu.OwnerReferences = []metav1.OwnerReference{ref}
217230
}
218-
219231
return nil
220232
})
221233
return err

cmd/nodediscovery/main_test.go

+2
Original file line numberDiff line numberDiff line change
@@ -102,6 +102,8 @@ func TestGPUControllerReference(t *testing.T) {
102102
}
103103

104104
gpu = createOrUpdateTensorFusionGPU(k8sClient, ctx, k8sNodeName, newGpuNode, uuid, deviceName, memInfo, tflops)
105+
assert.NotNil(t, gpu.OwnerReferences[0].Kind)
106+
assert.NotNil(t, gpu.OwnerReferences[0].APIVersion)
105107
assert.True(t, metav1.IsControlledBy(gpu, newGpuNode))
106108
assert.False(t, metav1.IsControlledBy(gpu, gpuNode))
107109
}

0 commit comments

Comments
 (0)