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

Function isDriverManagedByOperator

cmd/nvidia-validator/main.go:714–743  ·  view source on GitHub ↗

isDriverManagedByOperator determines if the NVIDIA driver is managed by the GPU Operator. We check if at least one driver DaemonSet exists in the operator namespace that is owned by the ClusterPolicy or NVIDIADriver controllers.

(ctx context.Context)

Source from the content-addressed store, hash-verified

712// We check if at least one driver DaemonSet exists in the operator namespace that is
713// owned by the ClusterPolicy or NVIDIADriver controllers.
714func isDriverManagedByOperator(ctx context.Context) (bool, error) {
715 kubeConfig, err := rest.InClusterConfig()
716 if err != nil {
717 return false, fmt.Errorf("error getting cluster config: %w", err)
718 }
719
720 kubeClient, err := kubernetes.NewForConfig(kubeConfig)
721 if err != nil {
722 return false, fmt.Errorf("error getting k8s client: %w", err)
723 }
724
725 opts := meta_v1.ListOptions{LabelSelector: labels.Set{appComponentLabelKey: "nvidia-driver"}.AsSelector().String()}
726 dsList, err := kubeClient.AppsV1().DaemonSets(namespaceFlag).List(ctx, opts)
727 if err != nil {
728 return false, fmt.Errorf("error listing daemonsets: %w", err)
729 }
730
731 for i := range dsList.Items {
732 ds := dsList.Items[i]
733 owner := meta_v1.GetControllerOf(&ds)
734 if owner == nil {
735 continue
736 }
737 if strings.HasPrefix(owner.APIVersion, "nvidia.com/") && (owner.Kind == nvidiav1.ClusterPolicyCRDName || owner.Kind == nvidiav1alpha1.NVIDIADriverCRDName) {
738 return true, nil
739 }
740 }
741
742 return false, nil
743}
744
745func validateHostDriver(silent bool) error {
746 log.Info("Attempting to validate a pre-installed driver on the host")

Callers 1

runValidationMethod · 0.85

Calls 2

StringMethod · 0.80
ListMethod · 0.65

Tested by

no test coverage detected