TransformVGPUDeviceManager transforms VGPU Device Manager daemonset with required config as per ClusterPolicy
(obj *appsv1.DaemonSet, config *gpuv1.ClusterPolicySpec, n ClusterPolicyController)
| 2239 | |
| 2240 | // TransformVGPUDeviceManager transforms VGPU Device Manager daemonset with required config as per ClusterPolicy |
| 2241 | func 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 != "" { |