Skip to content

Commit 38065b4

Browse files
committed
Allow either a resourceClaimName or a deviceClassName to be specified
Signed-off-by: Kevin Klues <kklues@nvidia.com>
1 parent 1e3d869 commit 38065b4

File tree

4 files changed

+15
-16
lines changed

4 files changed

+15
-16
lines changed

api/nvidia.com/resource/gpu/v1alpha1/multinode.go

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,8 +43,11 @@ type MultiNodeEnvironmentList struct {
4343
Items []MultiNodeEnvironment `json:"items"`
4444
}
4545

46+
// +kubebuilder:validation:XValidation:rule="(has(self.resourceClaimName) ? !has(self.deviceClassName) : has(self.deviceClassName))",message="Exactly one of 'resourceClaimName' or 'deviceClassName' must be set."
47+
4648
// MultiNodeEnvironmentSpec provides the spec for a MultiNodeEnvironment.
4749
type MultiNodeEnvironmentSpec struct {
4850
NumNodes int `json:"numNodes"`
49-
ResourceClaimName string `json:"resourceClaimName"`
51+
ResourceClaimName string `json:"resourceClaimName,omitempty"`
52+
DeviceClassName string `json:"deviceClassName,omitempty"`
5053
}

cmd/nvidia-dra-controller/mnenv.go

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -172,13 +172,15 @@ func (m *MultiNodeEnvironmentManager) onMultiNodeEnvironmentAdd(obj any) error {
172172
Controller: ptr.To(true),
173173
}
174174

175-
dc, err := m.createDeviceClass("", ownerReference)
175+
dc, err := m.createDeviceClass(mne.Spec.DeviceClassName, ownerReference)
176176
if err != nil {
177177
return fmt.Errorf("error creating DeviceClass '%s': %w", "<generated-name>", err)
178178
}
179179

180-
if _, err := m.createResourceClaim(mne.Namespace, mne.Spec.ResourceClaimName, dc.Name, ownerReference); err != nil {
181-
return fmt.Errorf("error creating ResourceClaim '%s/%s': %w", mne.Namespace, mne.Spec.ResourceClaimName, err)
180+
if mne.Spec.ResourceClaimName != "" {
181+
if _, err := m.createResourceClaim(mne.Namespace, mne.Spec.ResourceClaimName, dc.Name, ownerReference); err != nil {
182+
return fmt.Errorf("error creating ResourceClaim '%s/%s': %w", mne.Namespace, mne.Spec.ResourceClaimName, err)
183+
}
182184
}
183185

184186
return nil

deployments/helm/k8s-dra-driver/crds/gpu.nvidia.com_multinodeenvironments.yaml

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,14 +40,19 @@ spec:
4040
spec:
4141
description: MultiNodeEnvironmentSpec provides the spec for a MultiNodeEnvironment.
4242
properties:
43+
deviceClassName:
44+
type: string
4345
numNodes:
4446
type: integer
4547
resourceClaimName:
4648
type: string
4749
required:
4850
- numNodes
49-
- resourceClaimName
5051
type: object
52+
x-kubernetes-validations:
53+
- message: Exactly one of 'resourceClaimName' or 'deviceClassName' must
54+
be set.
55+
rule: '(has(self.resourceClaimName) ? !has(self.deviceClassName) : has(self.deviceClassName))'
5156
type: object
5257
served: true
5358
storage: true

deployments/helm/k8s-dra-driver/templates/deviceclass-imex.yaml

Lines changed: 0 additions & 11 deletions
This file was deleted.

0 commit comments

Comments
 (0)