From 11fc61ae304a35ce94e9c130cf96ca68918562b2 Mon Sep 17 00:00:00 2001 From: Marcin Tojek Date: Tue, 18 Jul 2023 10:27:06 +0200 Subject: [PATCH] feat: ephemeral parameters must be optional --- examples/resources/coder_parameter/resource.tf | 1 + provider/parameter.go | 4 ++++ provider/parameter_test.go | 14 ++++++++++++++ 3 files changed, 19 insertions(+) diff --git a/examples/resources/coder_parameter/resource.tf b/examples/resources/coder_parameter/resource.tf index bb986183..3c674f1c 100644 --- a/examples/resources/coder_parameter/resource.tf +++ b/examples/resources/coder_parameter/resource.tf @@ -75,6 +75,7 @@ data "coder_parameter" "fairy_tale" { name = "Fairy Tale" type = "string" mutable = true + default = "Hansel and Gretel" ephemeral = true } diff --git a/provider/parameter.go b/provider/parameter.go index 5791a323..339bb017 100644 --- a/provider/parameter.go +++ b/provider/parameter.go @@ -134,6 +134,10 @@ func parameterDataSource() *schema.Resource { return diag.Errorf("parameter can't be immutable and ephemeral") } + if !parameter.Optional && parameter.Ephemeral { + return diag.Errorf("ephemeral parameter requires the default property") + } + if len(parameter.Validation) == 1 { validation := ¶meter.Validation[0] err = validation.Valid(parameter.Type, value) diff --git a/provider/parameter_test.go b/provider/parameter_test.go index 4e21cea8..48cf4829 100644 --- a/provider/parameter_test.go +++ b/provider/parameter_test.go @@ -31,6 +31,7 @@ func TestParameter(t *testing.T) { EOT mutable = true icon = "/icon/region.svg" + default = "us-east1-a" option { name = "US Central" value = "us-central1-a" @@ -65,6 +66,7 @@ func TestParameter(t *testing.T) { "option.1.icon": "/icon/east.svg", "option.1.description": "Select for east!", "order": "5", + "default": "us-east1-a", "ephemeral": "true", } { require.Equal(t, value, attrs[key]) @@ -558,11 +560,23 @@ data "coder_parameter" "region" { data "coder_parameter" "region" { name = "Region" type = "string" + default = "abc" mutable = false ephemeral = true } `, ExpectError: regexp.MustCompile("parameter can't be immutable and ephemeral"), + }, { + Name: "RequiredEphemeralError", + Config: ` + data "coder_parameter" "region" { + name = "Region" + type = "string" + mutable = true + ephemeral = true + } + `, + ExpectError: regexp.MustCompile("ephemeral parameter requires the default property"), }} { tc := tc t.Run(tc.Name, func(t *testing.T) {