MCPcopy Create free account
hub / github.com/NVIDIA/gpu-operator / transformPeerMemoryContainer

Function transformPeerMemoryContainer

controllers/object_controls.go:2976–3021  ·  view source on GitHub ↗
(obj *appsv1.DaemonSet, config *gpuv1.ClusterPolicySpec, n ClusterPolicyController)

Source from the content-addressed store, hash-verified

2974}
2975
2976func transformPeerMemoryContainer(obj *appsv1.DaemonSet, config *gpuv1.ClusterPolicySpec, n ClusterPolicyController) error {
2977 for i, container := range obj.Spec.Template.Spec.Containers {
2978 // skip if not nvidia-peermem
2979 if !strings.Contains(container.Name, "nvidia-peermem") {
2980 continue
2981 }
2982 if config.Driver.GPUDirectRDMA == nil || !config.Driver.GPUDirectRDMA.IsEnabled() {
2983 // remove nvidia-peermem sidecar container from driver Daemonset if RDMA is not enabled
2984 obj.Spec.Template.Spec.Containers = append(obj.Spec.Template.Spec.Containers[:i], obj.Spec.Template.Spec.Containers[i+1:]...)
2985 return nil
2986 }
2987 // update nvidia-peermem driver image and pull policy to be same as gpu-driver image
2988 // as its installed as part of gpu-driver image
2989 driverImage, err := resolveDriverTag(n, &config.Driver)
2990 if err != nil {
2991 return err
2992 }
2993 if driverImage != "" {
2994 obj.Spec.Template.Spec.Containers[i].Image = driverImage
2995 }
2996 if config.Driver.ImagePullPolicy != "" {
2997 obj.Spec.Template.Spec.Containers[i].ImagePullPolicy = gpuv1.ImagePullPolicy(config.Driver.ImagePullPolicy)
2998 }
2999 if config.Driver.GPUDirectRDMA.UseHostMOFED != nil && *config.Driver.GPUDirectRDMA.UseHostMOFED {
3000 // set env indicating host-mofed is enabled
3001 setContainerEnv(&(obj.Spec.Template.Spec.Containers[i]), UseHostMOFEDEnvName, "true")
3002 }
3003 // mount any custom kernel module configuration parameters at /drivers
3004 if config.Driver.KernelModuleConfig != nil && config.Driver.KernelModuleConfig.Name != "" {
3005 // note: transformDriverContainer() will have already created a Volume backed by the ConfigMap.
3006 // Only add a VolumeMount for nvidia-peermem-ctr.
3007 volumeMounts, _, err := createConfigMapVolumeMounts(n, config.Driver.KernelModuleConfig.Name, driversDir)
3008 if err != nil {
3009 return fmt.Errorf("ERROR: failed to create ConfigMap VolumeMounts for kernel module configuration: %v", err)
3010 }
3011 obj.Spec.Template.Spec.Containers[i].VolumeMounts = append(obj.Spec.Template.Spec.Containers[i].VolumeMounts, volumeMounts...)
3012 }
3013 if config.Driver.Resources != nil {
3014 obj.Spec.Template.Spec.Containers[i].Resources = corev1.ResourceRequirements{
3015 Requests: config.Driver.Resources.Requests,
3016 Limits: config.Driver.Resources.Limits,
3017 }
3018 }
3019 }
3020 return nil
3021}
3022
3023// check if running with openshift and add an ENV VAR to the OCP DTK CTR
3024func transformGDSContainer(obj *appsv1.DaemonSet, config *gpuv1.ClusterPolicySpec, n ClusterPolicyController) error {

Callers 1

TransformDriverFunction · 0.85

Calls 4

resolveDriverTagFunction · 0.85
setContainerEnvFunction · 0.85
IsEnabledMethod · 0.45

Tested by

no test coverage detected