Documentation ¶
Index ¶
- Variables
- func AddExternalTagsField() config.ResourceOption
- func CLIReconciledResourceList() []string
- func DocumentationForTags() config.ResourceOption
- func FormattedIdentifierFromProvider(separator string, keys ...string) config.ExternalName
- func FormattedIdentifierUserDefinedNameFirst(param, separator string, keys ...string) config.ExternalName
- func FormattedIdentifierUserDefinedNameLast(param, separator string, keys ...string) config.ExternalName
- func GetProvider(ctx context.Context, generationProvider bool) (*config.Provider, error)
- func GroupKindOverrides() config.ResourceOption
- func IdentifierAssignedByAWS() config.ResourceOption
- func KindOverrides() config.ResourceOption
- func KnownReferencers() config.ResourceOption
- func NamePrefixRemoval() config.ResourceOption
- func PermissionSetIdAsExternalName() config.ExternalName
- func RegionAddition() config.ResourceOption
- func ResourceConfigurator() config.ResourceOption
- func TagsAllRemoval() config.ResourceOption
- func TemplatedStringAsIdentifierWithNoName(tmpl string) config.ExternalName
- func TemplatedStringAsProviderDefinedIdentifier(tmpl string) config.ExternalName
- func TerraformPluginFrameworkResourceList() []string
- func TerraformPluginSDKResourceList() []string
- type Configurator
- type Configure
- type GroupKindCalculator
Constants ¶
This section is empty.
Variables ¶
var CLIReconciledExternalNameConfigs = map[string]config.ExternalName{}
var ExternalNameNotTestedConfigs = map[string]config.ExternalName{}/* 200 elements not displayed */
ExternalNameNotTestedConfigs contains no-tested configurations for this provider.
var GroupMap = map[string]GroupKindCalculator{}/* 251 elements not displayed */
GroupMap contains all overrides we'd like to make to the default group search. It's written with data from TF Provider AWS repo service grouping in here: https://github.com/hashicorp/terraform-provider-aws/tree/main/internal/service
At the end, all of them are based on grouping of the AWS Go SDK. The initial grouping is calculated based on folder grouping of AWS TF Provider which is based on Go SDK. Here is the script used to fetch that list: https://gist.github.com/muvaf/8d61365ffc1df7757864422ba16d7819
var KindMap = map[string]string{
"aws_autoscaling_group": "AutoscalingGroup",
"aws_cloudformation_type": "CloudFormationType",
"aws_cloudtrail": "Trail",
"aws_config_configuration_recorder_status": "AWSConfigurationRecorderStatus",
}
KindMap contains kind string overrides.
var ProviderConfiguration = Configurator{}
ProviderConfiguration is a global registry to be used by the resource providers to register their Config functions.
var TerraformPluginFrameworkExternalNameConfigs = map[string]config.ExternalName{ "aws_api_gateway_account": apiGatewayAccount(), "aws_appconfig_environment": appConfigEnvironment(), "aws_batch_job_queue": config.TemplatedStringAsIdentifier("name", "arn:aws:batch:{{ .setup.configuration.region }}:{{ .setup.client_metadata.account_id }}:job-queue/{{ .external_name }}"), "aws_bedrockagent_agent": bedrockAgent(), "aws_codeguruprofiler_profiling_group": config.NameAsIdentifier, "aws_cognito_user_pool_client": cognitoUserPoolClient(), "aws_dynamodb_resource_policy": config.TemplatedStringAsIdentifier("", "{{ .parameters.resource_arn }}"), "aws_vpc_security_group_egress_rule": vpcSecurityGroupRule(), "aws_vpc_security_group_ingress_rule": vpcSecurityGroupRule(), "aws_elasticache_serverless_cache": config.NameAsIdentifier, "aws_eks_pod_identity_association": eksPodIdentityAssociation(), "aws_mq_user": mqUser(), "aws_opensearchserverless_access_policy": config.NameAsIdentifier, "aws_opensearchserverless_collection": opensearchserverlessCollection(), "aws_opensearchserverless_lifecycle_policy": config.NameAsIdentifier, "aws_opensearchserverless_security_config": config.TemplatedStringAsIdentifier("name", "{{ .parameters.type }}/{{ .setup.client_metadata.account_id }}/{{ .external_name }}"), "aws_opensearchserverless_security_policy": config.NameAsIdentifier, "aws_opensearchserverless_vpc_endpoint": opensearchserverlessVpcEndpoint(), "aws_osis_pipeline": config.ParameterAsIdentifier("pipeline_name"), "aws_s3_directory_bucket": config.ParameterAsIdentifier("bucket"), "aws_simpledb_domain": config.NameAsIdentifier, }
TerraformPluginFrameworkExternalNameConfigs contains all external name configurations belonging to Terraform Plugin Framework resources to be reconciled under the no-fork architecture for this provider.
var TerraformPluginSDKExternalNameConfigs = map[string]config.ExternalName{}/* 936 elements not displayed */
TerraformPluginSDKExternalNameConfigs contains all external name configurations belonging to Terraform Plugin SDKv2 resources to be reconciled under the no-fork architecture for this provider.
Functions ¶
func AddExternalTagsField ¶
func AddExternalTagsField() config.ResourceOption
AddExternalTagsField adds ExternalTagsFieldName configuration for resources that have tags field.
func CLIReconciledResourceList ¶ added in v0.44.0
func CLIReconciledResourceList() []string
CLIReconciledResourceList returns the list of resources that have external name configured in ExternalNameConfigs table and to be reconciled under the TF CLI based architecture.
func DocumentationForTags ¶ added in v0.19.0
func DocumentationForTags() config.ResourceOption
DocumentationForTags overrides the API documentation of the tags fields since it contains Terraform-specific feature call out.
func FormattedIdentifierFromProvider ¶
func FormattedIdentifierFromProvider(separator string, keys ...string) config.ExternalName
FormattedIdentifierFromProvider is a helper function to construct Terraform IDs that use elements from the parameters in a certain string format. It should be used in cases where all information in the ID is gathered from the spec and not user defined like name. For example, zone_id:vpc_id.
func FormattedIdentifierUserDefinedNameFirst ¶ added in v0.22.0
func FormattedIdentifierUserDefinedNameFirst(param, separator string, keys ...string) config.ExternalName
FormattedIdentifierUserDefinedNameFirst is used in cases where the ID is constructed using some of the spec fields as well as a field that users use to name the resource. For example, budget_name:product_id where product_id comes from spec but budget_name is a naming field we can use external name for. This function assumes that the naming field is the FIRST component in the constructed identifier, which may not always hold (e.g., aws_eks_addon).
func FormattedIdentifierUserDefinedNameLast ¶ added in v0.22.0
func FormattedIdentifierUserDefinedNameLast(param, separator string, keys ...string) config.ExternalName
FormattedIdentifierUserDefinedNameLast is used in cases where the ID is constructed using some of the spec fields as well as a field that users use to name the resource. For example, vpc_id:cluster_name where vpc_id comes from spec but cluster_name is a naming field we can use external name for. This function assumes that the naming field is the LAST component in the constructed identifier, which may not always hold (e.g., aws_servicecatalog_budget_resource_association).
func GetProvider ¶
GetProvider returns the provider configuration. The `generationProvider` argument specifies whether the provider configuration is being read for the code generation pipelines. In that case, we will only use the JSON schema for generating the CRDs.
func GroupKindOverrides ¶
func GroupKindOverrides() config.ResourceOption
GroupKindOverrides overrides the group and kind of the resource if it matches any entry in the GroupMap.
func IdentifierAssignedByAWS ¶
func IdentifierAssignedByAWS() config.ResourceOption
IdentifierAssignedByAWS will work for all AWS types because even if the ID is assigned by user, we'll see it in the TF State ID. The resource-specific configurations should override this whenever possible.
func KindOverrides ¶
func KindOverrides() config.ResourceOption
KindOverrides overrides the kind of the resources given in KindMap.
func KnownReferencers ¶
func KnownReferencers() config.ResourceOption
KnownReferencers adds referencers for fields that are known and common among more than a few resources.
func NamePrefixRemoval ¶
func NamePrefixRemoval() config.ResourceOption
NamePrefixRemoval makes sure we remove name_prefix from all since it is mostly for Terraform functionality.
func PermissionSetIdAsExternalName ¶ added in v0.46.0
func PermissionSetIdAsExternalName() config.ExternalName
PermissionSetIdAsExternalName uses the id of the permission set (ps-80383020jr9302rk) as the external name, with the comma-separated pair permission_set_arn,instance_arn as the terraform id, when both arns are parameters and known ahead of time. Example: arn:aws:sso:::permissionSet/ssoins-2938j0x8920sbj72/ps-80383020jr9302rk,arn:aws:sso:::instance/ssoins-2938j0x8920sbj72
func RegionAddition ¶
func RegionAddition() config.ResourceOption
RegionAddition adds region to the spec of all resources except iam group which does not have a region notion.
func ResourceConfigurator ¶ added in v0.44.0
func ResourceConfigurator() config.ResourceOption
ResourceConfigurator applies all external name configs listed in the table TerraformPluginSDKExternalNameConfigs, CLIReconciledExternalNameConfigs, and TerraformPluginFrameworkExternalNameConfigs and sets the version of those resources to v1beta1.
func TagsAllRemoval ¶
func TagsAllRemoval() config.ResourceOption
TagsAllRemoval removes the tags_all field that is used only in tfstate to accumulate provider-wide default tags in TF, which is not something we support. So, we don't need it as a parameter while "tags" is already in place.
func TemplatedStringAsIdentifierWithNoName ¶
func TemplatedStringAsIdentifierWithNoName(tmpl string) config.ExternalName
TemplatedStringAsIdentifierWithNoName uses TemplatedStringAsIdentifier but without the name initializer. This allows it to be used in cases where the ID is constructed with parameters and a provider-defined value, meaning no user-defined input. Since the external name is not user-defined, the name initializer has to be disabled. TODO: This seems to have some problems with handling the initial creation, when the parameters in the template are defined but the external name is empty, because the provider hasn't assigned its provider-defined identifier yet.
func TemplatedStringAsProviderDefinedIdentifier ¶ added in v0.46.0
func TemplatedStringAsProviderDefinedIdentifier(tmpl string) config.ExternalName
TemplatedStringAsProviderDefinedIdentifier uses TemplatedStringAsIdentifier but without the name initializer, and with a GetIdFn that exits early if the external name is empty. This allows it to be used in cases where the ID is constructed with parameters and a provider-defined value, meaning no user-defined input. Since the external name is not user-defined, the name initializer has to be disabled.
func TerraformPluginFrameworkResourceList ¶ added in v1.0.0
func TerraformPluginFrameworkResourceList() []string
func TerraformPluginSDKResourceList ¶ added in v1.0.0
func TerraformPluginSDKResourceList() []string
TerraformPluginSDKResourceList returns the list of resources that have external name configured in ExternalNameConfigs table and to be reconciled under the no-fork architecture.
Types ¶
type Configurator ¶ added in v1.2.0
type Configurator []Configure
Configurator is a registry for provider Configs.
func (*Configurator) AddConfig ¶ added in v1.2.0
func (c *Configurator) AddConfig(conf Configure)
AddConfig adds a Config to the Configurator registry.
type GroupKindCalculator ¶
GroupKindCalculator returns the correct group and kind name for given TF resource.
func ReplaceGroupWords ¶
func ReplaceGroupWords(group string, count int) GroupKindCalculator
ReplaceGroupWords uses given group as the group of the resource and removes a number of words in resource name before calculating the kind of the resource.