func VirtualMachineScaleSetVMsViaKubeconfig()

in cmd/utils/vmss.go [120:145]


func VirtualMachineScaleSetVMsViaKubeconfig() (map[string]*VirtualMachineScaleSetVM, error) {
	clientset, err := k8sutil.NewClientsetFromConfigFlags(KubernetesConfigFlags)
	if err != nil {
		return nil, fmt.Errorf("creating Kubernetes client: %w", err)
	}

	nodes, err := clientset.CoreV1().Nodes().List(context.TODO(), metaV1.ListOptions{})
	if err != nil {
		return nil, fmt.Errorf("listing nodes: %w", err)
	}

	vmssVMs := make(map[string]*VirtualMachineScaleSetVM)
	if len(nodes.Items) > 0 {
		for _, n := range nodes.Items {
			var vm VirtualMachineScaleSetVM
			if !strings.HasPrefix(n.Spec.ProviderID, "azure://") {
				return nil, fmt.Errorf("node=%q doesn't seem to be an Azure VMSS VM", n.Name)
			}
			if err = ParseVMSSResourceID(strings.TrimPrefix(n.Spec.ProviderID, "azure://"), &vm); err != nil {
				return nil, fmt.Errorf("parsing Azure resource ID %q: %w", n.Spec.ProviderID, err)
			}
			vmssVMs[n.Name] = &vm
		}
	}
	return vmssVMs, nil
}