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

Function TransformVGPUDeviceManager

controllers/object_controls.go:2241–2307  ·  view source on GitHub ↗

TransformVGPUDeviceManager transforms VGPU Device Manager daemonset with required config as per ClusterPolicy

(obj *appsv1.DaemonSet, config *gpuv1.ClusterPolicySpec, n ClusterPolicyController)

Source from the content-addressed store, hash-verified

2239
2240// TransformVGPUDeviceManager transforms VGPU Device Manager daemonset with required config as per ClusterPolicy
2241func TransformVGPUDeviceManager(obj *appsv1.DaemonSet, config *gpuv1.ClusterPolicySpec, n ClusterPolicyController) error {
2242 // update validation container
2243 err := transformValidationInitContainer(obj, config)
2244 if err != nil {
2245 return err
2246 }
2247
2248 // update image
2249 image, err := gpuv1.ImagePath(&config.VGPUDeviceManager)
2250 if err != nil {
2251 return err
2252 }
2253 obj.Spec.Template.Spec.Containers[0].Image = image
2254
2255 // update image pull policy
2256 obj.Spec.Template.Spec.Containers[0].ImagePullPolicy = gpuv1.ImagePullPolicy(config.VGPUDeviceManager.ImagePullPolicy)
2257
2258 // set image pull secrets
2259 if len(config.VGPUDeviceManager.ImagePullSecrets) > 0 {
2260 addPullSecrets(&obj.Spec.Template.Spec, config.VGPUDeviceManager.ImagePullSecrets)
2261 }
2262
2263 // set resource limits
2264 if config.VGPUDeviceManager.Resources != nil {
2265 // apply resource limits to all containers
2266 for i := range obj.Spec.Template.Spec.Containers {
2267 obj.Spec.Template.Spec.Containers[i].Resources.Requests = config.VGPUDeviceManager.Resources.Requests
2268 obj.Spec.Template.Spec.Containers[i].Resources.Limits = config.VGPUDeviceManager.Resources.Limits
2269 }
2270 }
2271
2272 // set arguments if specified for mig-manager container
2273 if len(config.VGPUDeviceManager.Args) > 0 {
2274 obj.Spec.Template.Spec.Containers[0].Args = config.VGPUDeviceManager.Args
2275 }
2276
2277 // set/append environment variables for mig-manager container
2278 if len(config.VGPUDeviceManager.Env) > 0 {
2279 for _, env := range config.VGPUDeviceManager.Env {
2280 setContainerEnv(&(obj.Spec.Template.Spec.Containers[0]), env.Name, env.Value)
2281 }
2282 }
2283
2284 // set ConfigMap name for "vgpu-config" Volume
2285 for i, vol := range obj.Spec.Template.Spec.Volumes {
2286 if !strings.Contains(vol.Name, "vgpu-config") {
2287 continue
2288 }
2289
2290 name, _ := gpuv1.GetConfigMapName(config.VGPUDeviceManager.Config, VgpuDMDefaultConfigMapName)
2291 obj.Spec.Template.Spec.Volumes[i].ConfigMap.Name = name
2292 break
2293 }
2294
2295 // set name of default vGPU device configuration. The default configuration is applied if the node
2296 // is not labelled with a specific configuration
2297 defaultConfig := VgpuDMDefaultConfigName
2298 if config.VGPUDeviceManager.Config != nil && config.VGPUDeviceManager.Config.Default != "" {

Callers 1

Calls 4

addPullSecretsFunction · 0.85
setContainerEnvFunction · 0.85
applyHostNetworkConfigFunction · 0.85

Tested by 1