resource/resolver/provider_id_resolver.go (35 lines of code) (raw):

package resolver import ( "fmt" "strings" "github.com/azure/armstrong/dependency" "github.com/azure/armstrong/resource/types" "github.com/azure/armstrong/utils" ) var _ ReferenceResolver = &ProviderIDResolver{} type ProviderIDResolver struct { } func (r ProviderIDResolver) Resolve(pattern dependency.Pattern) (*ResolvedResult, error) { if !strings.Contains(pattern.AzureResourceType, "/") && pattern.Scope != dependency.ScopeTenant { azapiDef := types.AzapiDefinition{ Id: pattern.Placeholder, Kind: types.KindDataSource, ResourceName: "azapi_resource_id", Label: fmt.Sprintf("%sScopeProvider", pattern.Scope), AzureResourceType: "Microsoft.Resources/providers", ApiVersion: "2020-06-01", BodyFormat: types.BodyFormatHcl, AdditionalFields: map[string]types.Value{ "parent_id": types.NewStringLiteralValue(utils.ParentIdOfResourceId(pattern.Placeholder)), "name": types.NewStringLiteralValue(pattern.AzureResourceType), }, } return &ResolvedResult{ AzapiDefinitionToAdd: &azapiDef, }, nil } return nil, nil } func NewProviderIDResolver() ProviderIDResolver { return ProviderIDResolver{} }