Define list operation matching rules for resolveArmResources
- Dominant language
- TypeScript
- Stars
- 27
- Forks
- 90
- Avg merge
- 1d 22h
- Merged PRs (30d)
- 156
Description
## Context
In Azure/typespec-azure#4851, `resolveArmResources` now creates resource identities only from identity operations (`read` and `createOrUpdate`) and appends list operations afterward.
A simple prefix rule works for resource-group list operations, for example:
```text
resource: /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Foo/widgets/{widgetName}
list: /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Foo/widgets
```
However, ARM resources can also expose list operations at different scopes for the same resource type, such as subscription-level list for a resource-group-scoped resource:
```text
resource: /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Foo/widgets/{widgetName}
list: /subscriptions/{subscriptionId}/providers/Microsoft.Foo/widgets
```
That list path is not a direct prefix of the resource instance path, but it is still semantically a list operation for the same resource type.
## Work item
Define and document the acceptable matching rule for associating `list` operations with resolved resources.
The rule should cover:
- list-by-parent/list-by-resource-group paths that are direct prefixes of the resource instance path
- list-by-subscription paths for resource-group-scoped resources
- extension resource lists at tenant, subscription, resource group, management group, service group, and external-resource scopes
- avoiding false positives where a parent resource list is attached to a child or auxiliary resource merely because the resource type suffix happens to overlap
- generic/variable provider paths where the resource type cannot be concretely identified
## Expected outcome
`resolveArmResources` should attach all semantically valid list operations for a detected resource without using list operations to create new resource identities.
Contributor guide
Assessment
This issue has not been assessed yet.