func VirtualMachineScaleSetVMFromConfig()

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
}