resource/resolver/azapi_resource_placeholder_resolver.go (39 lines of code) (raw):
package resolver
import (
"strings"
"github.com/azure/armstrong/dependency"
"github.com/azure/armstrong/resource/types"
"github.com/azure/armstrong/utils"
)
var _ ReferenceResolver = &AzapiResourcePlaceholderResolver{}
type AzapiResourcePlaceholderResolver struct {
}
func (a AzapiResourcePlaceholderResolver) Resolve(pattern dependency.Pattern) (*ResolvedResult, error) {
if !strings.Contains(pattern.AzureResourceType, "/") {
return nil, nil
}
return &ResolvedResult{
AzapiDefinitionToAdd: &types.AzapiDefinition{
Id: pattern.Placeholder,
Kind: "resource",
ResourceName: "azapi_resource",
Label: pluralizeClient.Singular(utils.LastSegment(pattern.AzureResourceType)),
AzureResourceType: pattern.AzureResourceType,
BodyFormat: types.BodyFormatHcl,
ApiVersion: "TODO",
AdditionalFields: map[string]types.Value{
"parent_id": types.NewStringLiteralValue(utils.ParentIdOfResourceId(pattern.Placeholder)),
"name": types.NewStringLiteralValue(utils.LastSegment(pattern.Placeholder)),
"schema_validation_enabled": types.NewRawValue("false"),
},
Body: map[string]interface{}{
"properties": map[string]interface{}{
"TODO": "TODO",
},
},
},
}, nil
}
func NewAzapiResourcePlaceholderResolver() AzapiResourcePlaceholderResolver {
return AzapiResourcePlaceholderResolver{}
}