Skip to content

Dynamically resolve resource display name in azd down #5825

@JeffreyCA

Description

@JeffreyCA

Currently, if you provision a Function App with azd, on azd down it shows the resource type as "Web App" instead of "Function App":

Image

It might be because in generateResourcesToDelete, we use the simple translation instead of the dynamic one:

for _, resource := range resources {
resourceTypeName := azapi.GetResourceTypeDisplayName(azapi.AzureResourceType(resource.Type))
if resourceTypeName == "" {
continue
}
lines = append(lines, fmt.Sprintf(" • %s: %s", resourceTypeName, resource.Name))
}

Dynamic lookup:

func (rm *AzureResourceManager) GetResourceTypeDisplayName(
ctx context.Context,
subscriptionId string,
resourceId string,
resourceType azapi.AzureResourceType,
) (string, error) {
if resourceType == azapi.AzureResourceTypeWebSite {
// Web apps have different kinds of resources sharing the same resource type 'Microsoft.Web/sites', i.e. Function app
// vs. App service It is extremely important that we display the right one, thus we resolve it by querying the
// properties of the ARM resource.
resourceTypeDisplayName, err := rm.getWebAppResourceTypeDisplayName(ctx, subscriptionId, resourceId)
if err != nil {
return "", err
} else {
return resourceTypeDisplayName, nil
}
} else if resourceType == azapi.AzureResourceTypeCognitiveServiceAccount {
resourceTypeDisplayName, err := rm.getCognitiveServiceResourceTypeDisplayName(ctx, subscriptionId, resourceId)
if err != nil {
return "", err
} else {
return resourceTypeDisplayName, nil
}
} else {
resourceTypeDisplayName := azapi.GetResourceTypeDisplayName(resourceType)
return resourceTypeDisplayName, nil
}
}

Metadata

Metadata

Assignees

Labels

Type

No type

Projects

No projects

Milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions