File tree Expand file tree Collapse file tree 3 files changed +44
-6
lines changed
examples/resources/coder_parameter Expand file tree Collapse file tree 3 files changed +44
-6
lines changed Original file line number Diff line number Diff line change @@ -7,6 +7,7 @@ data "coder_parameter" "example" {
77 description = " Specify a region to place your workspace."
88 mutable = false
99 type = " string"
10+ default = " asia-central1-a"
1011 option {
1112 value = " us-central1-a"
1213 name = " US Central"
Original file line number Diff line number Diff line change @@ -122,6 +122,13 @@ func parameterDataSource() *schema.Resource {
122122 values [option .Value ] = nil
123123 names [option .Name ] = nil
124124 }
125+
126+ if parameter .Default != "" {
127+ _ , defaultIsValid := values [parameter .Default ]
128+ if ! defaultIsValid {
129+ return diag .Errorf ("default value %q must be defined as one of options" , parameter .Default )
130+ }
131+ }
125132 }
126133
127134 return nil
@@ -156,10 +163,9 @@ func parameterDataSource() *schema.Resource {
156163 Description : "Whether this value can be changed after workspace creation. This can be destructive for values like region, so use with caution!" ,
157164 },
158165 "default" : {
159- Type : schema .TypeString ,
160- Optional : true ,
161- Description : "A default value for the parameter." ,
162- ExactlyOneOf : []string {"option" },
166+ Type : schema .TypeString ,
167+ Optional : true ,
168+ Description : "A default value for the parameter." ,
163169 },
164170 "icon" : {
165171 Type : schema .TypeString ,
Original file line number Diff line number Diff line change @@ -174,7 +174,38 @@ data "coder_parameter" "region" {
174174 }
175175 },
176176 }, {
177- Name : "DefaultWithOption" ,
177+ Name : "ValidDefaultWithOptions" ,
178+ Config : `
179+ data "coder_parameter" "region" {
180+ name = "Region"
181+ type = "string"
182+ default = "2"
183+ option {
184+ name = "1"
185+ value = "1"
186+ icon = "/icon/code.svg"
187+ description = "Something!"
188+ }
189+ option {
190+ name = "2"
191+ value = "2"
192+ }
193+ }
194+ ` ,
195+ Check : func (state * terraform.ResourceState ) {
196+ for key , expected := range map [string ]string {
197+ "name" : "Region" ,
198+ "option.#" : "2" ,
199+ "option.0.name" : "1" ,
200+ "option.0.value" : "1" ,
201+ "option.0.icon" : "/icon/code.svg" ,
202+ "option.0.description" : "Something!" ,
203+ } {
204+ require .Equal (t , expected , state .Primary .Attributes [key ])
205+ }
206+ },
207+ }, {
208+ Name : "InvalidDefaultWithOption" ,
178209 Config : `
179210data "coder_parameter" "region" {
180211 name = "Region"
@@ -189,7 +220,7 @@ data "coder_parameter" "region" {
189220 }
190221}
191222` ,
192- ExpectError : regexp .MustCompile ("Invalid combination of arguments " ),
223+ ExpectError : regexp .MustCompile ("must be defined as one of options " ),
193224 }, {
194225 Name : "SingleOption" ,
195226 Config : `
You can’t perform that action at this time.
0 commit comments