Skip to content

Commit

Permalink
VMSS Flex Support: Cloud Node Manager should query resourceId field o…
Browse files Browse the repository at this point in the history
…f IMDS endpoint to retrieve providerID
  • Loading branch information
zmyzheng committed Sep 27, 2022
1 parent 6286249 commit 4708813
Show file tree
Hide file tree
Showing 3 changed files with 9 additions and 16 deletions.
1 change: 1 addition & 0 deletions pkg/provider/azure_instance_metadata.go
Original file line number Diff line number Diff line change
Expand Up @@ -72,6 +72,7 @@ type ComputeMetadata struct {
ResourceGroup string `json:"resourceGroupName,omitempty"`
VMScaleSetName string `json:"vmScaleSetName,omitempty"`
SubscriptionID string `json:"subscriptionId,omitempty"`
ResourceID string `json:"resourceId,omitempty"`
}

// InstanceMetadata represents instance information.
Expand Down
18 changes: 3 additions & 15 deletions pkg/provider/azure_instances.go
Original file line number Diff line number Diff line change
Expand Up @@ -385,22 +385,10 @@ func (az *Cloud) getLocalInstanceProviderID(metadata *InstanceMetadata, nodeName
resourceGroup := strings.ToLower(metadata.Compute.ResourceGroup)
subscriptionID := strings.ToLower(metadata.Compute.SubscriptionID)

// Compose instanceID based on nodeName for standard instance.
if metadata.Compute.VMScaleSetName == "" {
return az.getStandardMachineID(subscriptionID, resourceGroup, nodeName), nil
}
providerID := strings.Replace(metadata.Compute.ResourceID, metadata.Compute.SubscriptionID, subscriptionID, -1)
providerID = strings.Replace(providerID, metadata.Compute.ResourceGroup, resourceGroup, -1)

// Get scale set name and instanceID from vmName for vmss.
ssName, instanceID, err := extractVmssVMName(metadata.Compute.Name)
if err != nil {
if errors.Is(err, ErrorNotVmssInstance) {
// Compose machineID for standard Node.
return az.getStandardMachineID(subscriptionID, resourceGroup, nodeName), nil
}
return "", err
}
// Compose instanceID based on ssName and instanceID for vmss instance.
return az.getVmssMachineID(subscriptionID, resourceGroup, ssName, instanceID), nil
return providerID, nil
}

// InstanceTypeByProviderID returns the cloudprovider instance type of the node with the specified unique providerID
Expand Down
6 changes: 5 additions & 1 deletion pkg/provider/azure_instances_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -117,6 +117,7 @@ func TestInstanceID(t *testing.T) {
nodeName string
vmssName string
metadataName string
resourceID string
metadataTemplate string
vmType string
expectedID string
Expand All @@ -130,6 +131,7 @@ func TestInstanceID(t *testing.T) {
vmList: []string{"vm1"},
nodeName: "vm1",
metadataName: "vm1",
resourceID: "/subscriptions/subscription/resourceGroups/rg/providers/Microsoft.Compute/virtualMachines/vm1",
vmType: consts.VMTypeStandard,
useInstanceMetadata: true,
expectedID: "/subscriptions/subscription/resourceGroups/rg/providers/Microsoft.Compute/virtualMachines/vm1",
Expand All @@ -140,6 +142,7 @@ func TestInstanceID(t *testing.T) {
vmssName: "vmss1",
nodeName: "vmss1_0",
metadataName: "vmss1_0",
resourceID: "/subscriptions/subscription/resourceGroups/rg/providers/Microsoft.Compute/virtualMachineScaleSets/vmss1/virtualMachines/0",
vmType: consts.VMTypeStandard,
useInstanceMetadata: true,
expectedID: "/subscriptions/subscription/resourceGroups/rg/providers/Microsoft.Compute/virtualMachineScaleSets/vmss1/virtualMachines/0",
Expand All @@ -150,6 +153,7 @@ func TestInstanceID(t *testing.T) {
vmssName: "vmss1",
nodeName: "vmss1-0",
metadataName: "vmss1-0",
resourceID: "/subscriptions/subscription/resourceGroups/rg/providers/Microsoft.Compute/virtualMachines/vmss1-0",
vmType: consts.VMTypeStandard,
useInstanceMetadata: true,
expectedID: "/subscriptions/subscription/resourceGroups/rg/providers/Microsoft.Compute/virtualMachines/vmss1-0",
Expand Down Expand Up @@ -225,7 +229,7 @@ func TestInstanceID(t *testing.T) {
if test.metadataTemplate != "" {
fmt.Fprintf(w, test.metadataTemplate)
} else {
fmt.Fprintf(w, "{\"compute\":{\"name\":\"%s\",\"VMScaleSetName\":\"%s\",\"subscriptionId\":\"subscription\",\"resourceGroupName\":\"rg\"}}", test.metadataName, test.vmssName)
fmt.Fprintf(w, "{\"compute\":{\"name\":\"%s\",\"VMScaleSetName\":\"%s\",\"subscriptionId\":\"subscription\",\"resourceGroupName\":\"rg\", \"resourceId\":\"%s\"}}", test.metadataName, test.vmssName, test.resourceID)
}
}))
go func() {
Expand Down

0 comments on commit 4708813

Please sign in to comment.