@@ -14,6 +14,7 @@ import (
1414
1515 "github.com/grafana/terraform-provider-grafana/v3/internal/common"
1616 "github.com/hashicorp/hcl/v2/hclwrite"
17+ "github.com/hashicorp/terraform-exec/tfexec"
1718 "github.com/zclconf/go-cty/cty"
1819)
1920
@@ -48,10 +49,12 @@ func Generate(ctx context.Context, cfg *Config) error {
4849 log .Fatal (err )
4950 }
5051
52+ tf , err := setupTerraform (cfg )
5153 // Terraform init to download the provider
52- if err := runTerraform ( cfg . OutputDir , "init" ); err != nil {
54+ if err != nil {
5355 return fmt .Errorf ("failed to run terraform init: %w" , err )
5456 }
57+ cfg .Terraform = tf
5558
5659 if cfg .Cloud != nil {
5760 stacks , err := generateCloudResources (ctx , cfg )
@@ -60,14 +63,21 @@ func Generate(ctx context.Context, cfg *Config) error {
6063 }
6164
6265 for _ , stack := range stacks {
63- if err := generateGrafanaResources (ctx , stack .managementKey , stack .url , "stack-" + stack .slug , false , cfg .OutputDir , stack .smURL , stack .smToken , cfg .IncludeResources ); err != nil {
66+ stack .name = "stack-" + stack .slug
67+ if err := generateGrafanaResources (ctx , cfg , stack , false ); err != nil {
6468 return err
6569 }
6670 }
6771 }
6872
6973 if cfg .Grafana != nil {
70- if err := generateGrafanaResources (ctx , cfg .Grafana .Auth , cfg .Grafana .URL , "" , true , cfg .OutputDir , "" , "" , cfg .IncludeResources ); err != nil {
74+ stack := stack {
75+ managementKey : cfg .Grafana .Auth ,
76+ url : cfg .Grafana .URL ,
77+ smToken : "" ,
78+ smURL : "" ,
79+ }
80+ if err := generateGrafanaResources (ctx , cfg , stack , true ); err != nil {
7181 return err
7282 }
7383 }
@@ -82,16 +92,16 @@ func Generate(ctx context.Context, cfg *Config) error {
8292 return nil
8393}
8494
85- func generateImportBlocks (ctx context.Context , client * common.Client , listerData any , resources []* common.Resource , outPath , provider string , includedResources [] string ) error {
95+ func generateImportBlocks (ctx context.Context , client * common.Client , listerData any , resources []* common.Resource , cfg * Config , provider string ) error {
8696 generatedFilename := func (suffix string ) string {
8797 if provider == "" {
88- return filepath .Join (outPath , suffix )
98+ return filepath .Join (cfg . OutputDir , suffix )
8999 }
90100
91- return filepath .Join (outPath , provider + "-" + suffix )
101+ return filepath .Join (cfg . OutputDir , provider + "-" + suffix )
92102 }
93103
94- resources , err := filterResources (resources , includedResources )
104+ resources , err := filterResources (resources , cfg . IncludeResources )
95105 if err != nil {
96106 return err
97107 }
@@ -141,7 +151,7 @@ func generateImportBlocks(ctx context.Context, client *common.Client, listerData
141151 cleanedID = strings .ReplaceAll (provider , "-" , "_" ) + "_" + cleanedID
142152 }
143153
144- matched , err := filterResourceByName (resource .Name , cleanedID , includedResources )
154+ matched , err := filterResourceByName (resource .Name , cleanedID , cfg . IncludeResources )
145155 if err != nil {
146156 wg .Done ()
147157 results <- result {
@@ -198,7 +208,8 @@ func generateImportBlocks(ctx context.Context, client *common.Client, listerData
198208 return err
199209 }
200210
201- if err := runTerraform (outPath , "plan" , "-generate-config-out=" + generatedFilename ("resources.tf" )); err != nil {
211+ _ , err = cfg .Terraform .Plan (ctx , tfexec .GenerateConfigOut (generatedFilename ("resources.tf" )))
212+ if err != nil {
202213 return fmt .Errorf ("failed to generate resources: %w" , err )
203214 }
204215
0 commit comments