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
}