diff --git a/pkg/provider/azure_vmss_cache.go b/pkg/provider/azure_vmss_cache.go index 87503e36ee..3bd3fc7e3d 100644 --- a/pkg/provider/azure_vmss_cache.go +++ b/pkg/provider/azure_vmss_cache.go @@ -477,7 +477,17 @@ func (ss *ScaleSet) getVMManagementTypeByIPConfigurationID(ipConfigurationID str vmName := strings.Replace(nicName, "-nic", "", 1) cachedAvSetVMs := cached.(NonVmssUniformNodesEntry).AvSetVMNodeNames + if cachedAvSetVMs.Has(vmName) { + return ManagedByAvSet, nil + } + + // If the node is not in the cache, assume the node has joined after the last cache refresh and attempt to refresh the cache + cached, err = ss.nonVmssUniformNodesCache.Get(consts.NonVmssUniformNodesKey, azcache.CacheReadTypeForceRefresh) + if err != nil { + return ManagedByUnknownVMSet, err + } + cachedAvSetVMs = cached.(NonVmssUniformNodesEntry).AvSetVMNodeNames if cachedAvSetVMs.Has(vmName) { return ManagedByAvSet, nil } diff --git a/pkg/provider/azure_vmssflex.go b/pkg/provider/azure_vmssflex.go index fdd5a95675..aeadf01822 100644 --- a/pkg/provider/azure_vmssflex.go +++ b/pkg/provider/azure_vmssflex.go @@ -389,12 +389,12 @@ func (fs *FlexScaleSet) getNodeInformationByIPConfigurationID(ipConfigurationID // get vmName by nic name vmName, err := fs.GetVMNameByIPConfigurationName(nicResourceGroup, nicName) if err != nil { - return "", "", "", fmt.Errorf("failed to get vm name of ip config ID %s", ipConfigurationID) + return "", "", "", fmt.Errorf("failed to get vm name of ip config ID %s: %w", ipConfigurationID, err) } nodeName, err := fs.getNodeNameByVMName(vmName) if err != nil { - return "", "", "", fmt.Errorf("failed to map VM Name to NodeName: VM Name %s", vmName) + return "", "", "", fmt.Errorf("failed to map VM Name to NodeName: VM Name %s: %w", vmName, err) } vmssFlexName, err := fs.getNodeVmssFlexName(nodeName) diff --git a/pkg/provider/azure_vmssflex_test.go b/pkg/provider/azure_vmssflex_test.go index c051559c6e..39159e9337 100644 --- a/pkg/provider/azure_vmssflex_test.go +++ b/pkg/provider/azure_vmssflex_test.go @@ -800,7 +800,7 @@ func TestGetNodeNameByIPConfigurationIDVmssFlex(t *testing.T) { nic: generateTestNic("testvm1-nic", false, network.ProvisioningStateSucceeded, fmt.Sprintf("/subscriptions/sub/resourceGroups/rg/providers/Microsoft.Compute/virtualMachines/%s", nonExistingNodeName)), expectedNodeName: "", expectedVMSetName: "", - expectedErr: fmt.Errorf("failed to map VM Name to NodeName: VM Name NonExistingNodeName"), + expectedErr: fmt.Errorf("failed to map VM Name to NodeName: VM Name NonExistingNodeName: %w", cloudprovider.InstanceNotFound), }, { description: "GetNodeNameByIPConfigurationID should return error if the ipConfigurationID is in wrong format", @@ -833,7 +833,6 @@ func TestGetNodeNameByIPConfigurationIDVmssFlex(t *testing.T) { assert.Equal(t, tc.expectedVMSetName, vmSetName) assert.Equal(t, tc.expectedErr, err) } - } func TestGetNodeCIDRMasksByProviderIDVmssFlex(t *testing.T) {