(obj *appsv1.DaemonSet, config *gpuv1.ClusterPolicySpec, n ClusterPolicyController)
| 2974 | } |
| 2975 | |
| 2976 | func 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 |
| 3024 | func transformGDSContainer(obj *appsv1.DaemonSet, config *gpuv1.ClusterPolicySpec, n ClusterPolicyController) error { |
no test coverage detected