@@ -11,17 +11,18 @@ import (
1111 " testing"
1212
1313 " github.com/hashicorp/terraform-plugin-testing/helper/resource"
14+ " github.com/hashicorp/terraform-plugin-testing/terraform"
1415
1516 " {{ $.ImportPath }}/acctest"
1617 " {{ $.ImportPath }}/envvar"
1718 " {{ $.ImportPath }}/tpgresource"
1819)
1920
2021var (
21- _ = fmt.Sprintf
22- _ = strings.Trim
23- _ = envvar.TestEnvVar
24- _ = tpgresource.SetLabels
22+ _ = fmt.Sprintf
23+ _ = strings.Trim
24+ _ = envvar.TestEnvVar
25+ _ = tpgresource.SetLabels
2526)
2627
2728
@@ -53,7 +54,7 @@ func TestAcc{{ $.ResourceName }}IamBindingGenerated(t *testing.T) {
5354{{- if not $ .IamPolicy.ExcludeImportTest }}
5455 {
5556 ResourceName: " {{ $.IamTerraformName }}_binding.foo" ,
56- ImportStateId: fmt .Sprintf ( " {{ $.IamImportFormat }} {{ $.IamPolicy.AllowedIamRole }} " , {{ if ne $ .IamImportQualifiersForTestSample " " }}{{ $ .IamImportQualifiersForTestSample }}, {{ end }}{{ $sample .PrimaryResourceName }} ),
57+ ImportStateIdFunc: generate {{ $ .ResourceName }}IAMBindingStateID( " {{ $.IamTerraformName }}_binding.foo " ),
5758 ImportState: true,
5859 ImportStateVerify: true,
5960 },
@@ -65,7 +66,7 @@ func TestAcc{{ $.ResourceName }}IamBindingGenerated(t *testing.T) {
6566{{- if not $ .IamPolicy.ExcludeImportTest }}
6667 {
6768 ResourceName: " {{ $.IamTerraformName }}_binding.foo" ,
68- ImportStateId: fmt .Sprintf ( " {{ $.IamImportFormat }} {{ $.IamPolicy.AllowedIamRole }} " , {{ if ne $ .IamImportQualifiersForTestSample " " }}{{ $ .IamImportQualifiersForTestSample }}, {{ end }}{{ $sample .PrimaryResourceName }} ),
69+ ImportStateIdFunc: generate {{ $ .ResourceName }}IAMBindingStateID( " {{ $.IamTerraformName }}_binding.foo " ),
6970 ImportState: true,
7071 ImportStateVerify: true,
7172 },
@@ -100,7 +101,7 @@ func TestAcc{{ $.ResourceName }}IamMemberGenerated(t *testing.T) {
100101{{- if not $ .IamPolicy.ExcludeImportTest }}
101102 {
102103 ResourceName: " {{ $.IamTerraformName }}_member.foo" ,
103- ImportStateId: fmt .Sprintf ( " {{ $.IamImportFormat }} {{ $.IamPolicy.AllowedIamRole }} user:admin@hashicorptest.com " , {{ if ne $ .IamImportQualifiersForTestSample " " }}{{ $ .IamImportQualifiersForTestSample }}, {{ end }}{{ $sample .PrimaryResourceName }} ),
104+ ImportStateIdFunc: generate {{ $ .ResourceName }}IAMMemberStateID( " {{ $.IamTerraformName }}_member.foo " ),
104105 ImportState: true,
105106 ImportStateVerify: true,
106107 },
@@ -141,7 +142,7 @@ func TestAcc{{ $.ResourceName }}IamPolicyGenerated(t *testing.T) {
141142{{- if not $ .IamPolicy.ExcludeImportTest }}
142143 {
143144 ResourceName: " {{ $.IamTerraformName }}_policy.foo" ,
144- ImportStateId: fmt .Sprintf ( " {{ $.IamImportFormat }}" , {{ if ne $ .IamImportQualifiersForTestSample " " }}{{ $ .IamImportQualifiersForTestSample }}, {{ end }}{{ $sample .PrimaryResourceName }} ),
145+ ImportStateIdFunc: generate {{ $ .ResourceName }}IAMPolicyStateID( " {{ $.IamTerraformName }}_policy.foo " ),
145146 ImportState: true,
146147 ImportStateVerify: true,
147148 },
@@ -152,7 +153,7 @@ func TestAcc{{ $.ResourceName }}IamPolicyGenerated(t *testing.T) {
152153{{- if not $ .IamPolicy.ExcludeImportTest }}
153154 {
154155 ResourceName: " {{ $.IamTerraformName }}_policy.foo" ,
155- ImportStateId: fmt .Sprintf ( " {{ $.IamImportFormat }}" , {{ if ne $ .IamImportQualifiersForTestSample " " }}{{ $ .IamImportQualifiersForTestSample }}, {{ end }}{{ $sample .PrimaryResourceName }} ),
156+ ImportStateIdFunc: generate {{ $ .ResourceName }}IAMPolicyStateID( " {{ $.IamTerraformName }}_policy.foo " ),
156157 ImportState: true,
157158 ImportStateVerify: true,
158159 },
@@ -186,7 +187,7 @@ func TestAcc{{ $.ResourceName }}IamBindingGenerated_withCondition(t *testing.T)
186187{{- if not $ .IamPolicy.ExcludeImportTest }}
187188 {
188189 ResourceName: " {{ $.IamTerraformName }}_binding.foo" ,
189- ImportStateId: fmt .Sprintf ( " {{ $.IamImportFormat }} {{ $.IamPolicy.AllowedIamRole }} %s " , {{ if ne $ .IamImportQualifiersForTestSample " " }}{{ $ .IamImportQualifiersForTestSample }}, {{ end }}{{ $sample .PrimaryResourceName }}, context[ " condition_title " ] ),
190+ ImportStateIdFunc: generate {{ $ .ResourceName }}IAMBindingStateID( " {{ $.IamTerraformName }}_binding.foo " ),
190191 ImportState: true,
191192 ImportStateVerify: true,
192193 },
@@ -222,19 +223,19 @@ func TestAcc{{ $.ResourceName }}IamBindingGenerated_withAndWithoutCondition(t *t
222223{{- if not $ .IamPolicy.ExcludeImportTest }}
223224 {
224225 ResourceName: " {{ $.IamTerraformName }}_binding.foo" ,
225- ImportStateId: fmt .Sprintf ( " {{ $.IamImportFormat }} {{ $.IamPolicy.AllowedIamRole }} " , {{ if ne $ .IamImportQualifiersForTestSample " " }}{{ $ .IamImportQualifiersForTestSample }}, {{ end }}{{ $sample .PrimaryResourceName }} ),
226+ ImportStateIdFunc: generate {{ $ .ResourceName }}IAMBindingStateID( " {{ $.IamTerraformName }}_binding.foo " ),
226227 ImportState: true,
227228 ImportStateVerify: true,
228229 },
229230 {
230231 ResourceName: " {{ $.IamTerraformName }}_binding.foo2" ,
231- ImportStateId: fmt .Sprintf ( " {{ $.IamImportFormat }} {{ $.IamPolicy.AllowedIamRole }} %s " , {{ if ne $ .IamImportQualifiersForTestSample " " }}{{ $ .IamImportQualifiersForTestSample }}, {{ end }}{{ $sample .PrimaryResourceName }}, context[ " condition_title " ] ),
232+ ImportStateIdFunc: generate {{ $ .ResourceName }}IAMBindingStateID( " {{ $.IamTerraformName }}_binding.foo2 " ),
232233 ImportState: true,
233234 ImportStateVerify: true,
234235 },
235236 {
236237 ResourceName: " {{ $.IamTerraformName }}_binding.foo3" ,
237- ImportStateId: fmt .Sprintf ( " {{ $.IamImportFormat }} {{ $.IamPolicy.AllowedIamRole }} %s " , {{ if ne $ .IamImportQualifiersForTestSample " " }}{{ $ .IamImportQualifiersForTestSample }}, {{ end }}{{ $sample .PrimaryResourceName }}, context[ " condition_title_no_desc " ] ),
238+ ImportStateIdFunc: generate {{ $ .ResourceName }}IAMBindingStateID( " {{ $.IamTerraformName }}_binding.foo3 " ),
238239 ImportState: true,
239240 ImportStateVerify: true,
240241 },
@@ -269,7 +270,7 @@ func TestAcc{{ $.ResourceName }}IamMemberGenerated_withCondition(t *testing.T) {
269270{{- if not $ .IamPolicy.ExcludeImportTest }}
270271 {
271272 ResourceName: " {{ $.IamTerraformName }}_member.foo" ,
272- ImportStateId: fmt .Sprintf ( " {{ $.IamImportFormat }} {{ $.IamPolicy.AllowedIamRole }} user:admin@hashicorptest.com %s " , {{ if ne $ .IamImportQualifiersForTestSample " " }}{{ $ .IamImportQualifiersForTestSample }}, {{ end }}{{ $sample .PrimaryResourceName }}, context[ " condition_title " ] ),
273+ ImportStateIdFunc: generate {{ $ .ResourceName }}IAMMemberStateID( " {{ $.IamTerraformName }}_member.foo " ),
273274 ImportState: true,
274275 ImportStateVerify: true,
275276 },
@@ -305,19 +306,19 @@ func TestAcc{{ $.ResourceName }}IamMemberGenerated_withAndWithoutCondition(t *te
305306{{- if not $ .IamPolicy.ExcludeImportTest }}
306307 {
307308 ResourceName: " {{ $.IamTerraformName }}_member.foo" ,
308- ImportStateId: fmt .Sprintf ( " {{ $.IamImportFormat }} {{ $.IamPolicy.AllowedIamRole }} user:admin@hashicorptest.com " , {{ if ne $ .IamImportQualifiersForTestSample " " }}{{ $ .IamImportQualifiersForTestSample }}, {{ end }}{{ $sample .PrimaryResourceName }} ),
309+ ImportStateIdFunc: generate {{ $ .ResourceName }}IAMMemberStateID( " {{ $.IamTerraformName }}_member.foo " ),
309310 ImportState: true,
310311 ImportStateVerify: true,
311312 },
312313 {
313314 ResourceName: " {{ $.IamTerraformName }}_member.foo2" ,
314- ImportStateId: fmt .Sprintf ( " {{ $.IamImportFormat }} {{ $.IamPolicy.AllowedIamRole }} user:admin@hashicorptest.com %s " , {{ if ne $ .IamImportQualifiersForTestSample " " }}{{ $ .IamImportQualifiersForTestSample }}, {{ end }}{{ $sample .PrimaryResourceName }}, context[ " condition_title " ] ),
315+ ImportStateIdFunc: generate {{ $ .ResourceName }}IAMMemberStateID( " {{ $.IamTerraformName }}_member.foo2 " ),
315316 ImportState: true,
316317 ImportStateVerify: true,
317318 },
318319 {
319320 ResourceName: " {{ $.IamTerraformName }}_member.foo3" ,
320- ImportStateId: fmt .Sprintf ( " {{ $.IamImportFormat }} {{ $.IamPolicy.AllowedIamRole }} user:admin@hashicorptest.com %s " , {{ if ne $ .IamImportQualifiersForTestSample " " }}{{ $ .IamImportQualifiersForTestSample }}, {{ end }}{{ $sample .PrimaryResourceName }}, context[ " condition_title_no_desc " ] ),
321+ ImportStateIdFunc: generate {{ $ .ResourceName }}IAMMemberStateID( " {{ $.IamTerraformName }}_member.foo3 " ),
321322 ImportState: true,
322323 ImportStateVerify: true,
323324 },
@@ -372,7 +373,7 @@ func TestAcc{{ $.ResourceName }}IamPolicyGenerated_withCondition(t *testing.T) {
372373{{- if not $ .IamPolicy.ExcludeImportTest }}
373374 {
374375 ResourceName: " {{ $.IamTerraformName }}_policy.foo" ,
375- ImportStateId: fmt .Sprintf ( " {{ $.IamImportFormat }}" , {{ if ne $ .IamImportQualifiersForTestSample " " }}{{ $ .IamImportQualifiersForTestSample }}, {{ end }}{{ $sample .PrimaryResourceName }} ),
376+ ImportStateIdFunc: generate {{ $ .ResourceName }}IAMPolicyStateID( " {{ $.IamTerraformName }}_policy.foo " ),
376377 ImportState: true,
377378 ImportStateVerify: true,
378379 },
@@ -649,4 +650,74 @@ resource "{{ $.IamTerraformName }}_policy" "foo" {
649650}
650651` , context)
651652}
652- {{- end }}{{/* if $.IamPolicy.IamConditionsRequestType */ }}
653+ {{- end }}{{/* if $.IamPolicy.IamConditionsRequestType */ }}
654+
655+ {{- if $ .IamPolicy.CustomImportStateIDFuncs }}
656+ {{ customTemplate $ $ .IamPolicy.CustomImportStateIDFuncs true }}
657+ {{- else }}
658+ func generate{{ $ .ResourceName }}IAMPolicyStateID(iamResourceAddr string) func (*terraform.State ) (string, error) {
659+ return func (state *terraform.State ) (string, error) {
660+ var rawState map[string]string
661+ for _, m := range state.Modules {
662+ if len (m.Resources ) > 0 {
663+ if v, ok := m.Resources [iamResourceAddr]; ok {
664+ rawState = v.Primary.Attributes
665+ }
666+ }
667+ }
668+ fmt.Printf (" raw state %s \n " , rawState)
669+ {{- range $p := $ .IamImportParams }}
670+ {{- if contains $ .IamImportFormatTemplate (printf " {{%%%s }}" $p ) }}
671+ {{ $p }} := rawState[" {{ underscore $p }}" ]
672+ {{- else }}
673+ {{ $p }} := tpgresource.GetResourceNameFromSelfLink (rawState[" {{ underscore $p }}" ])
674+ {{- end }}
675+ {{- end }}
676+ return acctest.BuildIAMImportId (fmt.Sprintf (" {{ $.IamImportFormat }}" , {{ join $ .IamImportParams " , " }}), " " , " " , rawState[" condition.0.title" ]), nil
677+ }
678+ }
679+
680+ func generate{{ $ .ResourceName }}IAMBindingStateID(iamResourceAddr string) func (*terraform.State ) (string, error) {
681+ return func (state *terraform.State ) (string, error) {
682+ var rawState map[string]string
683+ for _, m := range state.Modules {
684+ if len (m.Resources ) > 0 {
685+ if v, ok := m.Resources [iamResourceAddr]; ok {
686+ rawState = v.Primary.Attributes
687+ }
688+ }
689+ }
690+ fmt.Printf (" raw state %s \n " , rawState)
691+ {{- range $p := $ .IamImportParams }}
692+ {{- if contains $ .IamImportFormatTemplate (printf " {{%%%s }}" $p ) }}
693+ {{ $p }} := rawState[" {{ underscore $p }}" ]
694+ {{- else }}
695+ {{ $p }} := tpgresource.GetResourceNameFromSelfLink (rawState[" {{ underscore $p }}" ])
696+ {{- end }}
697+ {{- end }}
698+ return acctest.BuildIAMImportId (fmt.Sprintf (" {{ $.IamImportFormat }}" , {{ join $ .IamImportParams " , " }}), rawState[" role" ], " " , rawState[" condition.0.title" ]), nil
699+ }
700+ }
701+
702+ func generate{{ $ .ResourceName }}IAMMemberStateID(iamResourceAddr string) func (*terraform.State ) (string, error) {
703+ return func (state *terraform.State ) (string, error) {
704+ var rawState map[string]string
705+ for _, m := range state.Modules {
706+ if len (m.Resources ) > 0 {
707+ if v, ok := m.Resources [iamResourceAddr]; ok {
708+ rawState = v.Primary.Attributes
709+ }
710+ }
711+ }
712+ fmt.Printf (" raw state %s \n " , rawState)
713+ {{- range $p := $ .IamImportParams }}
714+ {{- if contains $ .IamImportFormatTemplate (printf " {{%%%s }}" $p ) }}
715+ {{ $p }} := rawState[" {{ underscore $p }}" ]
716+ {{- else }}
717+ {{ $p }} := tpgresource.GetResourceNameFromSelfLink (rawState[" {{ underscore $p }}" ])
718+ {{- end }}
719+ {{- end }}
720+ return acctest.BuildIAMImportId (fmt.Sprintf (" {{ $.IamImportFormat }}" , {{ join $ .IamImportParams " , " }}), rawState[" role" ], rawState[" member" ], rawState[" condition.0.title" ]), nil
721+ }
722+ }
723+ {{- end }}
0 commit comments