in cmd/utils/vmss.go [81:118]
func VirtualMachineScaleSetVMFromConfig() (*VirtualMachineScaleSetVM, error) {
var vm VirtualMachineScaleSetVM
if node != "" {
// Before trying to get the resource ID from the API server, verify if
// the VMSS information of that node is already in the config file.
config := config.New()
if cc, ok := config.GetNodeConfig(node); ok {
log.Debugf("Using VMSS information from config for node %s", node)
vm.SubscriptionID = cc.GetString(SubscriptionIDKey)
vm.NodeResourceGroup = cc.GetString(NodeResourceGroupKey)
vm.VMScaleSet = cc.GetString(VMSSKey)
vm.InstanceID = cc.GetString(VMSSInstanceIDKey)
return &vm, nil
}
var err error
resourceID, err = GetNodeResourceID(context.TODO(), node)
if err != nil {
return nil, fmt.Errorf("retrieving Azure resource ID of node %s from API server: %w",
node, err)
}
if err = ParseVMSSResourceID(resourceID, &vm); err != nil {
return nil, fmt.Errorf("parsing Azure resource ID %s: %w", resourceID, err)
}
} else if resourceID != "" {
if err := ParseVMSSResourceID(resourceID, &vm); err != nil {
return nil, fmt.Errorf("parsing Azure resource ID %s: %w", resourceID, err)
}
} else {
vm.SubscriptionID = subscriptionID
vm.NodeResourceGroup = nodeResourceGroup
vm.VMScaleSet = vmss
vm.InstanceID = vmssInstanceID
}
return &vm, nil
}