Always generate provider address for resources (#37318)

pull/37331/head
Samsondeen 7 months ago committed by GitHub
parent f9d0dddb38
commit 69fb908eaa
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

@ -75,12 +75,16 @@ func (r *Resource) String() string {
func GenerateResourceContents(addr addrs.AbsResourceInstance,
schema *configschema.Block,
pc addrs.LocalProviderConfig,
stateVal cty.Value) (*Resource, tfdiags.Diagnostics) {
stateVal cty.Value,
forceProviderAddr bool,
) (*Resource, tfdiags.Diagnostics) {
var buf strings.Builder
var diags tfdiags.Diagnostics
if pc.LocalName != addr.Resource.Resource.ImpliedProvider() || pc.Alias != "" {
generateProviderAddr := pc.LocalName != addr.Resource.Resource.ImpliedProvider() || pc.Alias != ""
if generateProviderAddr || forceProviderAddr {
buf.WriteString(strings.Repeat(" ", 2))
buf.WriteString(fmt.Sprintf("provider = %s\n", pc.StringCompact()))
}
@ -143,7 +147,7 @@ func GenerateListResourceContents(addr addrs.AbsResourceInstance,
if val.Type().HasAttribute("state") {
stateVal = val.GetAttr("state")
}
content, gDiags := GenerateResourceContents(resAddr, schema, pc, stateVal)
content, gDiags := GenerateResourceContents(resAddr, schema, pc, stateVal, true)
if gDiags.HasErrors() {
diags = diags.Append(gDiags)
continue

@ -825,7 +825,7 @@ resource "tfcoremock_sensitive_values" "values" {
if err != nil {
t.Fatalf("schema failed InternalValidate: %s", err)
}
contents, diags := GenerateResourceContents(tc.addr, tc.schema, tc.provider, tc.value)
contents, diags := GenerateResourceContents(tc.addr, tc.schema, tc.provider, tc.value, false)
if len(diags) > 0 {
t.Errorf("expected no diagnostics but found %s", diags)
}
@ -962,7 +962,8 @@ func TestGenerateResourceAndIDContents(t *testing.T) {
// Check the generated content
expectedContent := `resource "aws_instance" "example_0" {
name = "instance-1"
provider = aws
name = "instance-1"
tags = {
Environment = "Dev"
Owner = "Team1"
@ -981,7 +982,8 @@ import {
}
resource "aws_instance" "example_1" {
name = "instance-2"
provider = aws
name = "instance-2"
tags = {
Environment = "Prod"
Owner = "Team2"

@ -964,6 +964,7 @@ func getListProviderSchemaResp() *providers.GetProviderSchemaResponse {
var (
testResourceCfg = `resource "test_resource" "test_0" {
provider = test
instance_type = "ami-123456"
}
import {
@ -975,6 +976,7 @@ import {
}
resource "test_resource" "test_1" {
provider = test
instance_type = "ami-654321"
}
import {
@ -986,6 +988,7 @@ import {
}
resource "test_resource" "test_2" {
provider = test
instance_type = "ami-789012"
}
import {
@ -998,6 +1001,7 @@ import {
`
testResourceCfg2 = `resource "test_resource" "test2_0" {
provider = test
instance_type = "ami-123456"
}
import {
@ -1009,6 +1013,7 @@ import {
}
resource "test_resource" "test2_1" {
provider = test
instance_type = "ami-654321"
}
import {
@ -1020,6 +1025,7 @@ import {
}
resource "test_resource" "test2_2" {
provider = test
instance_type = "ami-789012"
}
import {

@ -913,7 +913,7 @@ func (n *NodePlannableResourceInstance) generateHCLResourceDef(addr addrs.AbsRes
switch addr.Resource.Resource.Mode {
case addrs.ManagedResourceMode:
return genconfig.GenerateResourceContents(addr, filteredSchema, providerAddr, state)
return genconfig.GenerateResourceContents(addr, filteredSchema, providerAddr, state, false)
case addrs.ListResourceMode:
identitySchema := schema.Identity
return genconfig.GenerateListResourceContents(addr, filteredSchema, identitySchema, providerAddr, state)

Loading…
Cancel
Save