Skip to content

Commit 3ee95f1

Browse files
dannykoppingEmyrk
andauthored
chore: upgrade terraform-provider-coder & preview libs (#17738)
The changes in `coder/preview` necessitated the changes in `codersdk/richparameters.go` & `provisioner/terraform/resources.go`. --------- Signed-off-by: Danny Kopping <dannykopping@gmail.com> Co-authored-by: Steven Masley <stevenmasley@gmail.com>
1 parent 9d7630b commit 3ee95f1

File tree

7 files changed

+27
-42
lines changed

7 files changed

+27
-42
lines changed

cli/update_test.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -757,7 +757,7 @@ func TestUpdateValidateRichParameters(t *testing.T) {
757757
err := inv.Run()
758758
// TODO: improve validation so we catch this problem before it reaches the server
759759
// but for now just validate that the server actually catches invalid monotonicity
760-
assert.ErrorContains(t, err, fmt.Sprintf("parameter value must be equal or greater than previous value: %s", tempVal))
760+
assert.ErrorContains(t, err, "parameter value '1' must be equal or greater than previous value: 2")
761761
}()
762762

763763
matches := []string{

coderd/testdata/parameters/groups/main.tf

+1-1
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ data "coder_parameter" "group" {
1212
name = "group"
1313
default = try(data.coder_workspace_owner.me.groups[0], "")
1414
dynamic "option" {
15-
for_each = data.coder_workspace_owner.me.groups
15+
for_each = concat(data.coder_workspace_owner.me.groups, "bloob")
1616
content {
1717
name = option.value
1818
value = option.value

codersdk/richparameters.go

+14-32
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,8 @@
11
package codersdk
22

33
import (
4-
"strconv"
5-
64
"golang.org/x/xerrors"
5+
"tailscale.com/types/ptr"
76

87
"github.com/coder/terraform-provider-coder/v2/provider"
98
)
@@ -46,47 +45,31 @@ func ValidateWorkspaceBuildParameter(richParameter TemplateVersionParameter, bui
4645
}
4746

4847
func validateBuildParameter(richParameter TemplateVersionParameter, buildParameter *WorkspaceBuildParameter, lastBuildParameter *WorkspaceBuildParameter) error {
49-
var value string
48+
var (
49+
current string
50+
previous *string
51+
)
5052

5153
if buildParameter != nil {
52-
value = buildParameter.Value
54+
current = buildParameter.Value
5355
}
5456

55-
if richParameter.Required && value == "" {
56-
return xerrors.Errorf("parameter value is required")
57+
if lastBuildParameter != nil {
58+
previous = ptr.To(lastBuildParameter.Value)
5759
}
5860

59-
if value == "" { // parameter is optional, so take the default value
60-
value = richParameter.DefaultValue
61+
if richParameter.Required && current == "" {
62+
return xerrors.Errorf("parameter value is required")
6163
}
6264

63-
if lastBuildParameter != nil && lastBuildParameter.Value != "" && richParameter.Type == "number" && len(richParameter.ValidationMonotonic) > 0 {
64-
prev, err := strconv.Atoi(lastBuildParameter.Value)
65-
if err != nil {
66-
return xerrors.Errorf("previous parameter value is not a number: %s", lastBuildParameter.Value)
67-
}
68-
69-
current, err := strconv.Atoi(buildParameter.Value)
70-
if err != nil {
71-
return xerrors.Errorf("current parameter value is not a number: %s", buildParameter.Value)
72-
}
73-
74-
switch richParameter.ValidationMonotonic {
75-
case MonotonicOrderIncreasing:
76-
if prev > current {
77-
return xerrors.Errorf("parameter value must be equal or greater than previous value: %d", prev)
78-
}
79-
case MonotonicOrderDecreasing:
80-
if prev < current {
81-
return xerrors.Errorf("parameter value must be equal or lower than previous value: %d", prev)
82-
}
83-
}
65+
if current == "" { // parameter is optional, so take the default value
66+
current = richParameter.DefaultValue
8467
}
8568

8669
if len(richParameter.Options) > 0 {
8770
var matched bool
8871
for _, opt := range richParameter.Options {
89-
if opt.Value == value {
72+
if opt.Value == current {
9073
matched = true
9174
break
9275
}
@@ -95,7 +78,6 @@ func validateBuildParameter(richParameter TemplateVersionParameter, buildParamet
9578
if !matched {
9679
return xerrors.Errorf("parameter value must match one of options: %s", parameterValuesAsArray(richParameter.Options))
9780
}
98-
return nil
9981
}
10082

10183
if !validationEnabled(richParameter) {
@@ -119,7 +101,7 @@ func validateBuildParameter(richParameter TemplateVersionParameter, buildParamet
119101
Error: richParameter.ValidationError,
120102
Monotonic: string(richParameter.ValidationMonotonic),
121103
}
122-
return validation.Valid(richParameter.Type, value)
104+
return validation.Valid(richParameter.Type, current, previous)
123105
}
124106

125107
func findBuildParameter(params []WorkspaceBuildParameter, parameterName string) (*WorkspaceBuildParameter, bool) {

go.mod

+2-2
Original file line numberDiff line numberDiff line change
@@ -101,7 +101,7 @@ require (
101101
github.com/coder/quartz v0.1.3
102102
github.com/coder/retry v1.5.1
103103
github.com/coder/serpent v0.10.0
104-
github.com/coder/terraform-provider-coder/v2 v2.4.0-pre1.0.20250417100258-c86bb5c3ddcd
104+
github.com/coder/terraform-provider-coder/v2 v2.4.0
105105
github.com/coder/websocket v1.8.13
106106
github.com/coder/wgtunnel v0.1.13-0.20240522110300-ade90dfb2da0
107107
github.com/coreos/go-oidc/v3 v3.14.1
@@ -488,7 +488,7 @@ require (
488488

489489
require (
490490
github.com/anthropics/anthropic-sdk-go v0.2.0-beta.3
491-
github.com/coder/preview v0.0.2-0.20250506154333-6f500ca7b245
491+
github.com/coder/preview v0.0.2-0.20250509141204-fc9484dbe506
492492
github.com/fsnotify/fsnotify v1.9.0
493493
github.com/kylecarbs/aisdk-go v0.0.8
494494
github.com/mark3labs/mcp-go v0.25.0

go.sum

+4-4
Original file line numberDiff line numberDiff line change
@@ -907,8 +907,8 @@ github.com/coder/pq v1.10.5-0.20240813183442-0c420cb5a048 h1:3jzYUlGH7ZELIH4XggX
907907
github.com/coder/pq v1.10.5-0.20240813183442-0c420cb5a048/go.mod h1:AlVN5x4E4T544tWzH6hKfbfQvm3HdbOxrmggDNAPY9o=
908908
github.com/coder/pretty v0.0.0-20230908205945-e89ba86370e0 h1:3A0ES21Ke+FxEM8CXx9n47SZOKOpgSE1bbJzlE4qPVs=
909909
github.com/coder/pretty v0.0.0-20230908205945-e89ba86370e0/go.mod h1:5UuS2Ts+nTToAMeOjNlnHFkPahrtDkmpydBen/3wgZc=
910-
github.com/coder/preview v0.0.2-0.20250506154333-6f500ca7b245 h1:RGoANNubwwPZF8puiYAk2qbzhVgipBMNu8WIrY1VIbI=
911-
github.com/coder/preview v0.0.2-0.20250506154333-6f500ca7b245/go.mod h1:5VnO9yw7vq19hBgBqqBksE2BH53UTmNYH1QltkYLXJI=
910+
github.com/coder/preview v0.0.2-0.20250509141204-fc9484dbe506 h1:rQ7Queq1IZwEBjEIk9EJsVx7XHQ+Rvo2h72/A88BnPg=
911+
github.com/coder/preview v0.0.2-0.20250509141204-fc9484dbe506/go.mod h1:wXVvHiSmZv/7Q+Ug5I0B45TGM2U+YAjY4K3aB/6+KKo=
912912
github.com/coder/quartz v0.1.3 h1:hA2nI8uUA2fNN9uhXv2I4xZD4aHkA7oH3g2t03v4xf8=
913913
github.com/coder/quartz v0.1.3/go.mod h1:vsiCc+AHViMKH2CQpGIpFgdHIEQsxwm8yCscqKmzbRA=
914914
github.com/coder/retry v1.5.1 h1:iWu8YnD8YqHs3XwqrqsjoBTAVqT9ml6z9ViJ2wlMiqc=
@@ -921,8 +921,8 @@ github.com/coder/tailscale v1.1.1-0.20250422090654-5090e715905e h1:nope/SZfoLB9M
921921
github.com/coder/tailscale v1.1.1-0.20250422090654-5090e715905e/go.mod h1:1ggFFdHTRjPRu9Yc1yA7nVHBYB50w9Ce7VIXNqcW6Ko=
922922
github.com/coder/terraform-config-inspect v0.0.0-20250107175719-6d06d90c630e h1:JNLPDi2P73laR1oAclY6jWzAbucf70ASAvf5mh2cME0=
923923
github.com/coder/terraform-config-inspect v0.0.0-20250107175719-6d06d90c630e/go.mod h1:Gz/z9Hbn+4KSp8A2FBtNszfLSdT2Tn/uAKGuVqqWmDI=
924-
github.com/coder/terraform-provider-coder/v2 v2.4.0-pre1.0.20250417100258-c86bb5c3ddcd h1:FsIG6Fd0YOEK7D0Hl/CJywRA+Y6Gd5RQbSIa2L+/BmE=
925-
github.com/coder/terraform-provider-coder/v2 v2.4.0-pre1.0.20250417100258-c86bb5c3ddcd/go.mod h1:56/KdGYaA+VbwXJbTI8CA57XPfnuTxN8rjxbR34PbZw=
924+
github.com/coder/terraform-provider-coder/v2 v2.4.0 h1:uuFmF03IyahAZLXEukOdmvV9hGfUMJSESD8+G5wkTcM=
925+
github.com/coder/terraform-provider-coder/v2 v2.4.0/go.mod h1:2kaBpn5k9ZWtgKq5k4JbkVZG9DzEqR4mJSmpdshcO+s=
926926
github.com/coder/trivy v0.0.0-20250409153844-e6b004bc465a h1:yryP7e+IQUAArlycH4hQrjXQ64eRNbxsV5/wuVXHgME=
927927
github.com/coder/trivy v0.0.0-20250409153844-e6b004bc465a/go.mod h1:dDvq9axp3kZsT63gY2Znd1iwzfqDq3kXbQnccIrjRYY=
928928
github.com/coder/websocket v1.8.13 h1:f3QZdXy7uGVz+4uCJy2nTZyM0yTBj8yANEHhqlXZ9FE=

provisioner/terraform/resources.go

+5-1
Original file line numberDiff line numberDiff line change
@@ -749,13 +749,17 @@ func ConvertState(ctx context.Context, modules []*tfjson.StateModule, rawGraph s
749749
if err != nil {
750750
return nil, xerrors.Errorf("decode map values for coder_parameter.%s: %w", resource.Name, err)
751751
}
752+
var defaultVal string
753+
if param.Default != nil {
754+
defaultVal = *param.Default
755+
}
752756
protoParam := &proto.RichParameter{
753757
Name: param.Name,
754758
DisplayName: param.DisplayName,
755759
Description: param.Description,
756760
Type: param.Type,
757761
Mutable: param.Mutable,
758-
DefaultValue: param.Default,
762+
DefaultValue: defaultVal,
759763
Icon: param.Icon,
760764
Required: !param.Optional,
761765
// #nosec G115 - Safe conversion as parameter order value is expected to be within int32 range

site/src/api/typesGenerated.ts

-1
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)