Skip to content

Commit e1c0dc1

Browse files
Config Generation: Do not crash when everything is filtered out (#1599)
Instead, generate empty files that tell the user what happened
1 parent 155af86 commit e1c0dc1

File tree

5 files changed

+38
-2
lines changed

5 files changed

+38
-2
lines changed

pkg/generate/generate.go

+10-2
Original file line numberDiff line numberDiff line change
@@ -204,15 +204,23 @@ func generateImportBlocks(ctx context.Context, client *common.Client, listerData
204204
allBlocks = append(allBlocks, r.blocks...)
205205
}
206206

207+
if len(allBlocks) == 0 {
208+
if err := os.WriteFile(generatedFilename("resources.tf"), []byte("# No resources were found\n"), 0600); err != nil {
209+
return err
210+
}
211+
if err := os.WriteFile(generatedFilename("imports.tf"), []byte("# No resources were found\n"), 0600); err != nil {
212+
return err
213+
}
214+
return nil
215+
}
216+
207217
if err := writeBlocks(generatedFilename("imports.tf"), allBlocks...); err != nil {
208218
return err
209219
}
210-
211220
_, err = cfg.Terraform.Plan(ctx, tfexec.GenerateConfigOut(generatedFilename("resources.tf")))
212221
if err != nil {
213222
return fmt.Errorf("failed to generate resources: %w", err)
214223
}
215-
216224
return sortResourcesFile(generatedFilename("resources.tf"))
217225
}
218226

pkg/generate/generate_test.go

+13
Original file line numberDiff line numberDiff line change
@@ -90,6 +90,19 @@ func TestAccGenerate(t *testing.T) {
9090
})
9191
},
9292
},
93+
{
94+
name: "filter-all",
95+
config: testutils.TestAccExample(t, "resources/grafana_dashboard/resource.tf"),
96+
generateConfig: func(cfg *generate.Config) {
97+
cfg.IncludeResources = []string{"doesnot.exist"}
98+
},
99+
check: func(t *testing.T, tempDir string) {
100+
assertFiles(t, tempDir, "testdata/generate/empty", []string{
101+
".terraform",
102+
".terraform.lock.hcl",
103+
})
104+
},
105+
},
93106
{
94107
name: "alerting-in-org",
95108
config: func() string {
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
# No resources were found
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
terraform {
2+
required_providers {
3+
grafana = {
4+
source = "grafana/grafana"
5+
version = "3.0.0"
6+
}
7+
}
8+
}
9+
10+
provider "grafana" {
11+
url = "http://localhost:3000"
12+
auth = "admin:admin"
13+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
# No resources were found

0 commit comments

Comments
 (0)