in internal/langserver/handlers/command/arm_template_converter.go [165:200]
func buildResourceId(name, parentId, resourceType string) string {
azureResourceType := resourceType[:strings.Index(resourceType, "@")]
azureResourceId := ""
switch {
case strings.Count(azureResourceType, "/") == 1:
// build azure resource id
switch azureResourceType {
case arm.ResourceGroupResourceType.String():
azureResourceId = fmt.Sprintf("%s/resourceGroups/%s", parentId, name)
case arm.SubscriptionResourceType.String():
azureResourceId = fmt.Sprintf("/subscriptions/%s", name)
case arm.TenantResourceType.String():
azureResourceId = "/"
case arm.ProviderResourceType.String():
// avoid duplicated `/` if parent_id is tenant scope
scopeId := parentId
if parentId == "/" {
scopeId = ""
}
azureResourceId = fmt.Sprintf("%s/providers/%s", scopeId, name)
default:
// avoid duplicated `/` if parent_id is tenant scope
scopeId := parentId
if parentId == "/" {
scopeId = ""
}
azureResourceId = fmt.Sprintf("%s/providers/%s/%s", scopeId, azureResourceType, name)
}
default:
// build azure resource id
lastType := azureResourceType[strings.LastIndex(azureResourceType, "/")+1:]
azureResourceId = fmt.Sprintf("%s/%s/%s", parentId, lastType, name)
}
return azureResourceId
}