Skip to content

Commit 95db0d2

Browse files
committed
CD plugin: always inject CD details via CDI
Signed-off-by: Dr. Jan-Philip Gehrcke <[email protected]>
1 parent 3e00311 commit 95db0d2

File tree

2 files changed

+26
-16
lines changed

2 files changed

+26
-16
lines changed

cmd/compute-domain-kubelet-plugin/computedomain.go

Lines changed: 2 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,8 @@ type ComputeDomainManager struct {
5959
}
6060

6161
type ComputeDomainDaemonSettings struct {
62-
manager *ComputeDomainManager
62+
manager *ComputeDomainManager
63+
// CD UUID
6364
domain string
6465
rootDir string
6566
configTmplPath string
@@ -159,22 +160,8 @@ func (s *ComputeDomainDaemonSettings) GetDomain() string {
159160
}
160161

161162
func (s *ComputeDomainDaemonSettings) GetCDIContainerEdits(ctx context.Context, devRoot string, info *nvcapDeviceInfo) (*cdiapi.ContainerEdits, error) {
162-
cd, err := s.manager.GetComputeDomain(ctx, s.domain)
163-
if err != nil {
164-
return nil, fmt.Errorf("error getting compute domain: %w", err)
165-
}
166-
if cd == nil {
167-
return nil, fmt.Errorf("compute domain not found: %s", s.domain)
168-
}
169-
170163
edits := &cdiapi.ContainerEdits{
171164
ContainerEdits: &cdispec.ContainerEdits{
172-
Env: []string{
173-
fmt.Sprintf("CLIQUE_ID=%s", s.manager.cliqueID),
174-
fmt.Sprintf("COMPUTE_DOMAIN_UUID=%s", cd.UID),
175-
fmt.Sprintf("COMPUTE_DOMAIN_NAME=%s", cd.Name),
176-
fmt.Sprintf("COMPUTE_DOMAIN_NAMESPACE=%s", cd.Namespace),
177-
},
178165
Mounts: []*cdispec.Mount{
179166
{
180167
ContainerPath: "/etc/nvidia-imex",
@@ -193,7 +180,6 @@ func (s *ComputeDomainDaemonSettings) GetCDIContainerEdits(ctx context.Context,
193180
},
194181
},
195182
}
196-
197183
return edits, nil
198184
}
199185

cmd/compute-domain-kubelet-plugin/device_state.go

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@ import (
3030
"k8s.io/klog/v2"
3131
"k8s.io/kubernetes/pkg/kubelet/checkpointmanager"
3232
cdiapi "tags.cncf.io/container-device-interface/pkg/cdi"
33+
cdispec "tags.cncf.io/container-device-interface/specs-go"
3334

3435
configapi "github.com/NVIDIA/k8s-dra-driver-gpu/api/nvidia.com/resource/v1beta1"
3536
"github.com/NVIDIA/k8s-dra-driver-gpu/pkg/featuregates"
@@ -491,6 +492,29 @@ func (s *DeviceState) applyComputeDomainDaemonConfig(ctx context.Context, config
491492
ComputeDomain: config.DomainID,
492493
}
493494

495+
cd, err := s.computeDomainManager.GetComputeDomain(ctx, config.DomainID)
496+
if err != nil {
497+
return nil, fmt.Errorf("error getting compute domain: %w", err)
498+
}
499+
if cd == nil {
500+
return nil, fmt.Errorf("compute domain not found: %s", config.DomainID)
501+
}
502+
503+
// Always inject Compute Domain details into the CD daemon, in a
504+
// heterogeneous CD clique ID below may be empty (while other CD details are
505+
// set, and consumed by the CD daemon).
506+
edits := &cdiapi.ContainerEdits{
507+
ContainerEdits: &cdispec.ContainerEdits{
508+
Env: []string{
509+
fmt.Sprintf("CLIQUE_ID=%s", s.computeDomainManager.cliqueID),
510+
fmt.Sprintf("COMPUTE_DOMAIN_UUID=%s", cd.UID),
511+
fmt.Sprintf("COMPUTE_DOMAIN_NAME=%s", cd.Name),
512+
fmt.Sprintf("COMPUTE_DOMAIN_NAMESPACE=%s", cd.Namespace),
513+
},
514+
},
515+
}
516+
configState.containerEdits = configState.containerEdits.Append(edits)
517+
494518
// Only prepare files to inject to the daemon if IMEX is supported.
495519
if s.computeDomainManager.cliqueID != "" {
496520
// Parse the device node info for the fabic-imex-mgmt nvcap.

0 commit comments

Comments
 (0)