in tools/generator-example-doc/main.go [215:269]
func getParentIds(resourceType string) []string {
const defaultParentId = "{any azure resource id}"
apiVersions := azure.GetApiVersions(resourceType)
if len(apiVersions) == 0 {
return nil
}
resourceDef, err := azure.GetResourceDefinition(resourceType, apiVersions[0])
if err != nil || resourceDef == nil {
return nil
}
if utils.IsTopLevelResourceType(resourceType) {
scopeIds := make([]string, 0)
for _, scope := range resourceDef.ScopeTypes {
switch scope {
case types.Tenant:
scopeIds = append(scopeIds, "/")
case types.Subscription:
scopeIds = append(scopeIds, "/subscriptions/{subscriptionId}")
case types.ManagementGroup:
scopeIds = append(scopeIds, "/providers/Microsoft.Management/managementGroups/{managementGroupId}")
case types.ResourceGroup:
scopeIds = append(scopeIds, "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}")
case types.Extension:
scopeIds = append(scopeIds, defaultParentId)
default:
scopeIds = append(scopeIds, defaultParentId)
}
}
return scopeIds
}
parentResourceType := resourceType[:strings.LastIndex(resourceType, "/")]
parentResourceParentIds := getParentIds(parentResourceType)
if len(parentResourceParentIds) == 0 {
return []string{defaultParentId}
}
parentIds := make([]string, 0)
lastSegment := parentResourceType[strings.LastIndex(parentResourceType, "/")+1:]
resourceProvider := strings.Split(parentResourceType, "/")[0]
for _, parentId := range parentResourceParentIds {
if parentId == defaultParentId {
parentIds = append(parentIds, defaultParentId)
continue
}
if utils.IsTopLevelResourceType(parentResourceType) {
parentIds = append(parentIds, fmt.Sprintf("%s/providers/%s/%s/{resourceName}", parentId, resourceProvider, lastSegment))
} else {
parentIds = append(parentIds, fmt.Sprintf("%s/%s/{resourceName}", parentId, lastSegment))
}
}
return parentIds
}