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)
| 712 | // We check if at least one driver DaemonSet exists in the operator namespace that is |
| 713 | // owned by the ClusterPolicy or NVIDIADriver controllers. |
| 714 | func 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 | |
| 745 | func validateHostDriver(silent bool) error { |
| 746 | log.Info("Attempting to validate a pre-installed driver on the host") |
no test coverage detected