MCPcopy Index your code
hub / github.com/NVIDIA/gpu-operator / DaemonSet

Function DaemonSet

controllers/object_controls.go:4621–4764  ·  view source on GitHub ↗

DaemonSet creates Daemonset resource

(n ClusterPolicyController)

Source from the content-addressed store, hash-verified

4619
4620// DaemonSet creates Daemonset resource
4621func DaemonSet(n ClusterPolicyController) (gpuv1.State, error) {
4622 ctx := n.ctx
4623 state := n.idx
4624 obj := n.resources[state].DaemonSet.DeepCopy()
4625 obj.Namespace = n.operatorNamespace
4626
4627 logger := n.logger.WithValues("DaemonSet", obj.Name, "Namespace", obj.Namespace)
4628
4629 // Check if state is disabled and cleanup resource if exists
4630 if !n.isStateEnabled(n.stateNames[n.idx]) {
4631 err := n.client.Delete(ctx, obj)
4632 if err != nil && !apierrors.IsNotFound(err) {
4633 logger.Info("Couldn't delete", "Error", err)
4634 return gpuv1.NotReady, err
4635 }
4636 return gpuv1.Disabled, nil
4637 }
4638
4639 if !n.hasGPUNodes {
4640 // multiple DaemonSets (eg, driver, dgcm-exporter) cannot be
4641 // deployed without knowing the OS name, so skip their
4642 // deployment for now. The operator will be notified
4643 // (addWatchNewGPUNode) when new nodes will join the cluster.
4644 logger.Info("No GPU node in the cluster, do not create DaemonSets")
4645 return gpuv1.Ready, nil
4646 }
4647
4648 if n.resources[state].DaemonSet.GetName() == commonDriverDaemonsetName {
4649 podCount, err := n.cleanupUnusedDriverDaemonSets(n.ctx)
4650 if err != nil {
4651 return gpuv1.NotReady, err
4652 }
4653 if podCount != 0 {
4654 logger.Info("Driver DaemonSet cleanup in progress", "podCount", podCount)
4655 return gpuv1.NotReady, nil
4656 }
4657
4658 // Daemonsets using pre-compiled packages or using driver-toolkit (openshift) require creation of
4659 // one daemonset per kernel version (or rhcos version).
4660 // If currentKernelVersion or currentRhcosVersion (ocp) are not set, we intercept here
4661 // and call Daemonset() per specific version
4662 if n.singleton.Spec.Driver.UsePrecompiledDrivers() {
4663 if n.currentKernelVersion == "" {
4664 overallState, errs := precompiledDriverDaemonsets(ctx, n)
4665 if len(errs) != 0 {
4666 // log errors
4667 return overallState, fmt.Errorf("unable to deploy precompiled driver daemonsets %v", errs)
4668 }
4669 return overallState, nil
4670 }
4671 } else if n.openshift != "" && n.ocpDriverToolkit.enabled &&
4672 n.ocpDriverToolkit.currentRhcosVersion == "" {
4673 return n.ocpDriverToolkitDaemonSets(ctx)
4674 }
4675 } else if n.resources[state].DaemonSet.Name == commonVGPUManagerDaemonsetName {
4676 podCount, err := n.cleanupUnusedVGPUManagerDaemonsets(ctx)
4677 if err != nil {
4678 return gpuv1.NotReady, err

Callers 2

Calls 15

GetObjectHashFunction · 0.92
preProcessDaemonSetFunction · 0.85
isDaemonSetReadyFunction · 0.85
isDaemonsetSpecChangedFunction · 0.85
isStateEnabledMethod · 0.80
ErrorMethod · 0.80
DeleteMethod · 0.65
GetNameMethod · 0.65

Tested by

no test coverage detected