From 2902f8a19b56eb4e3a794b9b3c83e05c4d5c6157 Mon Sep 17 00:00:00 2001 From: Marcin Tojek Date: Mon, 29 May 2023 17:37:27 +0200 Subject: [PATCH 1/5] fix: do not skip parameter validation if min or max = 0 --- coderd/database/db2sdk/db2sdk.go | 15 +++++- coderd/database/dump.sql | 4 +- ...00124_validation_min_max_nullable.down.sql | 6 +++ .../000124_validation_min_max_nullable.up.sql | 6 +++ coderd/database/models.go | 4 +- coderd/database/queries.sql.go | 4 +- .../provisionerdserver/provisionerdserver.go | 19 ++++++- coderd/templateversions.go | 13 ++++- coderd/workspaces_test.go | 4 +- codersdk/richparameters.go | 15 ++++-- codersdk/richparameters_test.go | 15 +++--- codersdk/templateversions.go | 4 +- go.mod | 9 +++- go.sum | 9 ++++ provisioner/terraform/resources.go | 13 ++++- provisionersdk/proto/provisioner.pb.go | 52 ++++++++++--------- provisionersdk/proto/provisioner.proto | 4 +- provisionersdk/proto/provisioner_drpc.pb.go | 2 +- 18 files changed, 142 insertions(+), 56 deletions(-) create mode 100644 coderd/database/migrations/000124_validation_min_max_nullable.down.sql create mode 100644 coderd/database/migrations/000124_validation_min_max_nullable.up.sql diff --git a/coderd/database/db2sdk/db2sdk.go b/coderd/database/db2sdk/db2sdk.go index 079b0689c40b2..dde447ffafc96 100644 --- a/coderd/database/db2sdk/db2sdk.go +++ b/coderd/database/db2sdk/db2sdk.go @@ -46,6 +46,17 @@ func TemplateVersionParameter(param database.TemplateVersionParameter) (codersdk if err != nil { return codersdk.TemplateVersionParameter{}, err } + + var validationMin *int32 + if param.ValidationMin.Valid { + validationMin = ¶m.ValidationMin.Int32 + } + + var validationMax *int32 + if param.ValidationMax.Valid { + validationMax = ¶m.ValidationMax.Int32 + } + return codersdk.TemplateVersionParameter{ Name: param.Name, DisplayName: param.DisplayName, @@ -57,8 +68,8 @@ func TemplateVersionParameter(param database.TemplateVersionParameter) (codersdk Icon: param.Icon, Options: options, ValidationRegex: param.ValidationRegex, - ValidationMin: param.ValidationMin, - ValidationMax: param.ValidationMax, + ValidationMin: validationMin, + ValidationMax: validationMax, ValidationError: param.ValidationError, ValidationMonotonic: codersdk.ValidationMonotonicOrder(param.ValidationMonotonic), Required: param.Required, diff --git a/coderd/database/dump.sql b/coderd/database/dump.sql index 3520008680968..0c5846749a5c8 100644 --- a/coderd/database/dump.sql +++ b/coderd/database/dump.sql @@ -385,8 +385,8 @@ CREATE TABLE template_version_parameters ( icon text NOT NULL, options jsonb DEFAULT '[]'::jsonb NOT NULL, validation_regex text NOT NULL, - validation_min integer NOT NULL, - validation_max integer NOT NULL, + validation_min integer, + validation_max integer, validation_error text DEFAULT ''::text NOT NULL, validation_monotonic text DEFAULT ''::text NOT NULL, required boolean DEFAULT true NOT NULL, diff --git a/coderd/database/migrations/000124_validation_min_max_nullable.down.sql b/coderd/database/migrations/000124_validation_min_max_nullable.down.sql new file mode 100644 index 0000000000000..39a8eb69a33a5 --- /dev/null +++ b/coderd/database/migrations/000124_validation_min_max_nullable.down.sql @@ -0,0 +1,6 @@ +BEGIN; +UPDATE template_version_parameters SET validation_min = 0 WHERE validation_min = NULL; +UPDATE template_version_parameters SET validation_max = 0 WHERE validation_max = NULL; +ALTER TABLE template_version_parameters ALTER COLUMN validation_min SET NOT NULL; +ALTER TABLE template_version_parameters ALTER COLUMN validation_max SET NOT NULL; +COMMIT; diff --git a/coderd/database/migrations/000124_validation_min_max_nullable.up.sql b/coderd/database/migrations/000124_validation_min_max_nullable.up.sql new file mode 100644 index 0000000000000..ea3160747e55e --- /dev/null +++ b/coderd/database/migrations/000124_validation_min_max_nullable.up.sql @@ -0,0 +1,6 @@ +BEGIN; +ALTER TABLE template_version_parameters ALTER COLUMN validation_min DROP NOT NULL; +ALTER TABLE template_version_parameters ALTER COLUMN validation_max DROP NOT NULL; +UPDATE template_version_parameters SET validation_min = NULL WHERE validation_min = 0; +UPDATE template_version_parameters SET validation_max = NULL WHERE validation_max = 0; +COMMIT; diff --git a/coderd/database/models.go b/coderd/database/models.go index 4cef35e644a4c..33b51451333b7 100644 --- a/coderd/database/models.go +++ b/coderd/database/models.go @@ -1535,9 +1535,9 @@ type TemplateVersionParameter struct { // Validation: regex pattern ValidationRegex string `db:"validation_regex" json:"validation_regex"` // Validation: minimum length of value - ValidationMin int32 `db:"validation_min" json:"validation_min"` + ValidationMin sql.NullInt32 `db:"validation_min" json:"validation_min"` // Validation: maximum length of value - ValidationMax int32 `db:"validation_max" json:"validation_max"` + ValidationMax sql.NullInt32 `db:"validation_max" json:"validation_max"` // Validation: error displayed when the regex does not match. ValidationError string `db:"validation_error" json:"validation_error"` // Validation: consecutive values preserve the monotonic order diff --git a/coderd/database/queries.sql.go b/coderd/database/queries.sql.go index de1a7231c3a8a..842dbd87ba75a 100644 --- a/coderd/database/queries.sql.go +++ b/coderd/database/queries.sql.go @@ -4164,8 +4164,8 @@ type InsertTemplateVersionParameterParams struct { Icon string `db:"icon" json:"icon"` Options json.RawMessage `db:"options" json:"options"` ValidationRegex string `db:"validation_regex" json:"validation_regex"` - ValidationMin int32 `db:"validation_min" json:"validation_min"` - ValidationMax int32 `db:"validation_max" json:"validation_max"` + ValidationMin sql.NullInt32 `db:"validation_min" json:"validation_min"` + ValidationMax sql.NullInt32 `db:"validation_max" json:"validation_max"` ValidationError string `db:"validation_error" json:"validation_error"` ValidationMonotonic string `db:"validation_monotonic" json:"validation_monotonic"` Required bool `db:"required" json:"required"` diff --git a/coderd/provisionerdserver/provisionerdserver.go b/coderd/provisionerdserver/provisionerdserver.go index d760a9e269fe4..f3a13e70bb574 100644 --- a/coderd/provisionerdserver/provisionerdserver.go +++ b/coderd/provisionerdserver/provisionerdserver.go @@ -919,6 +919,21 @@ func (server *Server) CompleteJob(ctx context.Context, completed *proto.Complete if err != nil { return nil, xerrors.Errorf("marshal parameter options: %w", err) } + + var validationMin, validationMax sql.NullInt32 + if richParameter.ValidationMin != nil { + validationMin = sql.NullInt32{ + Int32: *richParameter.ValidationMin, + Valid: true, + } + } + if richParameter.ValidationMax != nil { + validationMax = sql.NullInt32{ + Int32: *richParameter.ValidationMax, + Valid: true, + } + } + _, err = server.Database.InsertTemplateVersionParameter(ctx, database.InsertTemplateVersionParameterParams{ TemplateVersionID: input.TemplateVersionID, Name: richParameter.Name, @@ -931,8 +946,8 @@ func (server *Server) CompleteJob(ctx context.Context, completed *proto.Complete Options: options, ValidationRegex: richParameter.ValidationRegex, ValidationError: richParameter.ValidationError, - ValidationMin: richParameter.ValidationMin, - ValidationMax: richParameter.ValidationMax, + ValidationMin: validationMin, + ValidationMax: validationMax, ValidationMonotonic: richParameter.ValidationMonotonic, Required: richParameter.Required, LegacyVariableName: richParameter.LegacyVariableName, diff --git a/coderd/templateversions.go b/coderd/templateversions.go index 39d803049ba3d..25348e3a92683 100644 --- a/coderd/templateversions.go +++ b/coderd/templateversions.go @@ -1706,6 +1706,15 @@ func convertTemplateVersionParameter(param database.TemplateVersionParameter) (c if err != nil { return codersdk.TemplateVersionParameter{}, err } + + var validationMin, validationMax *int32 + if param.ValidationMin.Valid { + validationMin = ¶m.ValidationMin.Int32 + } + if param.ValidationMax.Valid { + validationMax = ¶m.ValidationMax.Int32 + } + return codersdk.TemplateVersionParameter{ Name: param.Name, DisplayName: param.DisplayName, @@ -1717,8 +1726,8 @@ func convertTemplateVersionParameter(param database.TemplateVersionParameter) (c Icon: param.Icon, Options: options, ValidationRegex: param.ValidationRegex, - ValidationMin: param.ValidationMin, - ValidationMax: param.ValidationMax, + ValidationMin: validationMin, + ValidationMax: validationMax, ValidationError: param.ValidationError, ValidationMonotonic: codersdk.ValidationMonotonicOrder(param.ValidationMonotonic), Required: param.Required, diff --git a/coderd/workspaces_test.go b/coderd/workspaces_test.go index 7218792ac837b..36227d411acc4 100644 --- a/coderd/workspaces_test.go +++ b/coderd/workspaces_test.go @@ -1973,8 +1973,8 @@ func TestWorkspaceWithRichParameters(t *testing.T) { DisplayName: secondParameterDisplayName, Type: secondParameterType, Description: secondParameterDescription, - ValidationMin: 1, - ValidationMax: 3, + ValidationMin: ptr.Ref(int32(1)), + ValidationMax: ptr.Ref(int32(3)), ValidationMonotonic: string(secondParameterValidationMonotonic), }, }, diff --git a/codersdk/richparameters.go b/codersdk/richparameters.go index 4bf3d24edca6c..3810eb3cb5871 100644 --- a/codersdk/richparameters.go +++ b/codersdk/richparameters.go @@ -79,8 +79,8 @@ func ValidateWorkspaceBuildParameter(richParameter TemplateVersionParameter, bui } validation := &provider.Validation{ - Min: int(richParameter.ValidationMin), - Max: int(richParameter.ValidationMax), + Min: ptrInt(richParameter.ValidationMin), + Max: ptrInt(richParameter.ValidationMax), Regex: richParameter.ValidationRegex, Error: richParameter.ValidationError, Monotonic: string(richParameter.ValidationMonotonic), @@ -88,6 +88,14 @@ func ValidateWorkspaceBuildParameter(richParameter TemplateVersionParameter, bui return validation.Valid(richParameter.Type, value) } +func ptrInt(number *int32) *int { + if number == nil { + return nil + } + n := int(*number) + return &n +} + func findBuildParameter(params []WorkspaceBuildParameter, parameterName string) (*WorkspaceBuildParameter, bool) { if params == nil { return nil, false @@ -111,7 +119,8 @@ func parameterValuesAsArray(options []TemplateVersionParameterOption) []string { func validationEnabled(param TemplateVersionParameter) bool { return len(param.ValidationRegex) > 0 || - (param.ValidationMin != 0 && param.ValidationMax != 0) || + param.ValidationMin != nil || + param.ValidationMax != nil || len(param.ValidationMonotonic) > 0 || param.Type == "bool" || // boolean type doesn't have any custom validation rules, but the value must be checked (true/false). param.Type == "list(string)" // list(string) type doesn't have special validation, but we need to check if this is a correct list. diff --git a/codersdk/richparameters_test.go b/codersdk/richparameters_test.go index fbc7d47748b11..70e933b01dfe3 100644 --- a/codersdk/richparameters_test.go +++ b/codersdk/richparameters_test.go @@ -5,6 +5,7 @@ import ( "github.com/stretchr/testify/require" + "github.com/coder/coder/coderd/util/ptr" "github.com/coder/coder/codersdk" ) @@ -72,8 +73,8 @@ func TestParameterResolver_ValidateResolve_PrevInvalid(t *testing.T) { p := codersdk.TemplateVersionParameter{ Name: "n", Type: "number", - ValidationMax: 10, - ValidationMin: 1, + ValidationMax: ptr.Ref(int32(10)), + ValidationMin: ptr.Ref(int32(1)), } v, err := uut.ValidateResolve(p, nil) require.Error(t, err) @@ -89,8 +90,8 @@ func TestParameterResolver_ValidateResolve_DefaultInvalid(t *testing.T) { p := codersdk.TemplateVersionParameter{ Name: "n", Type: "number", - ValidationMax: 10, - ValidationMin: 1, + ValidationMax: ptr.Ref(int32(10)), + ValidationMin: ptr.Ref(int32(1)), DefaultValue: "11", } v, err := uut.ValidateResolve(p, nil) @@ -221,19 +222,19 @@ func TestRichParameterValidation(t *testing.T) { numberRichParameters := []codersdk.TemplateVersionParameter{ {Name: stringParameterName, Type: "string", Mutable: true}, - {Name: numberParameterName, Type: "number", Mutable: true, ValidationMin: 3, ValidationMax: 10}, + {Name: numberParameterName, Type: "number", Mutable: true, ValidationMin: ptr.Ref(int32(3)), ValidationMax: ptr.Ref(int32(10))}, {Name: boolParameterName, Type: "bool", Mutable: true}, } monotonicIncreasingNumberRichParameters := []codersdk.TemplateVersionParameter{ {Name: stringParameterName, Type: "string", Mutable: true}, - {Name: numberParameterName, Type: "number", Mutable: true, ValidationMin: 3, ValidationMax: 10, ValidationMonotonic: "increasing"}, + {Name: numberParameterName, Type: "number", Mutable: true, ValidationMin: ptr.Ref(int32(3)), ValidationMax: ptr.Ref(int32(10)), ValidationMonotonic: "increasing"}, {Name: boolParameterName, Type: "bool", Mutable: true}, } monotonicDecreasingNumberRichParameters := []codersdk.TemplateVersionParameter{ {Name: stringParameterName, Type: "string", Mutable: true}, - {Name: numberParameterName, Type: "number", Mutable: true, ValidationMin: 3, ValidationMax: 10, ValidationMonotonic: "decreasing"}, + {Name: numberParameterName, Type: "number", Mutable: true, ValidationMin: ptr.Ref(int32(3)), ValidationMax: ptr.Ref(int32(10)), ValidationMonotonic: "decreasing"}, {Name: boolParameterName, Type: "bool", Mutable: true}, } diff --git a/codersdk/templateversions.go b/codersdk/templateversions.go index cfc9af54443ae..1597be7f9282b 100644 --- a/codersdk/templateversions.go +++ b/codersdk/templateversions.go @@ -59,8 +59,8 @@ type TemplateVersionParameter struct { Options []TemplateVersionParameterOption `json:"options"` ValidationError string `json:"validation_error,omitempty"` ValidationRegex string `json:"validation_regex,omitempty"` - ValidationMin int32 `json:"validation_min,omitempty"` - ValidationMax int32 `json:"validation_max,omitempty"` + ValidationMin *int32 `json:"validation_min,omitempty"` + ValidationMax *int32 `json:"validation_max,omitempty"` ValidationMonotonic ValidationMonotonicOrder `json:"validation_monotonic,omitempty" enums:"increasing,decreasing"` Required bool `json:"required"` LegacyVariableName string `json:"legacy_variable_name,omitempty"` diff --git a/go.mod b/go.mod index f1b1e58f75831..41bc21eba95cf 100644 --- a/go.mod +++ b/go.mod @@ -75,7 +75,7 @@ require ( github.com/codeclysm/extract v2.2.0+incompatible github.com/coder/flog v1.1.0 github.com/coder/retry v1.3.1-0.20230210155434-e90a2e1e091d - github.com/coder/terraform-provider-coder v0.6.23 + github.com/coder/terraform-provider-coder v0.7.1-0.20230529135822-946db5afc9a3 github.com/coder/wgtunnel v0.1.5 github.com/coreos/go-oidc/v3 v3.6.0 github.com/coreos/go-systemd v0.0.0-20191104093116-d3cd4ed1dbcf @@ -352,3 +352,10 @@ require ( howett.net/plist v1.0.0 // indirect inet.af/peercred v0.0.0-20210906144145-0893ea02156a // indirect ) + +require ( + github.com/hashicorp/go-plugin v1.4.4 // indirect + github.com/hashicorp/terraform-registry-address v0.0.0-20220623143253-7d51757b572c // indirect + github.com/hashicorp/terraform-svchost v0.0.0-20200729002733-f050f53b9734 // indirect + github.com/oklog/run v1.0.0 // indirect +) diff --git a/go.sum b/go.sum index b39045d6fd8a7..b94e46cf9d663 100644 --- a/go.sum +++ b/go.sum @@ -338,6 +338,8 @@ github.com/coder/tailscale v0.0.0-20230522123520-74712221d00f h1:F0Xr1d8h8dAHn7t github.com/coder/tailscale v0.0.0-20230522123520-74712221d00f/go.mod h1:jpg+77g19FpXL43U1VoIqoSg1K/Vh5CVxycGldQ8KhA= github.com/coder/terraform-provider-coder v0.6.23 h1:O2Rcj0umez4DfVdGnKZi63z1Xzxd0IQOn9VQDB8YU8g= github.com/coder/terraform-provider-coder v0.6.23/go.mod h1:UIfU3bYNeSzJJvHyJ30tEKjD6Z9utloI+HUM/7n94CY= +github.com/coder/terraform-provider-coder v0.7.1-0.20230529135822-946db5afc9a3 h1:nPmZGLht9SK1QlDJVLlLGT5CgldYIqklj5bJazHD3oY= +github.com/coder/terraform-provider-coder v0.7.1-0.20230529135822-946db5afc9a3/go.mod h1:UIfU3bYNeSzJJvHyJ30tEKjD6Z9utloI+HUM/7n94CY= github.com/coder/wgtunnel v0.1.5 h1:WP3sCj/3iJ34eKvpMQEp1oJHvm24RYh0NHbj1kfUKfs= github.com/coder/wgtunnel v0.1.5/go.mod h1:bokoUrHnUFY4lu9KOeSYiIcHTI2MO1KwqumU4DPDyJI= github.com/containerd/aufs v0.0.0-20200908144142-dab0cbea06f4/go.mod h1:nukgQABAEopAHvB6j7cnP5zJ+/3aVcE7hCYqvIwAHyE= @@ -806,6 +808,7 @@ github.com/google/go-cmp v0.5.4/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/ github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.6/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.7/go.mod h1:n+brtR0CgQNWTVd5ZUFpTBC8YFBDLK/h/bpaJ8/DtOE= +github.com/google/go-cmp v0.5.8/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= github.com/google/go-cmp v0.5.9 h1:O2Tfq5qg4qc4AmwVlvv0oLiVAGB7enBSJ2x2DqQFi38= github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= github.com/google/go-containerregistry v0.5.1/go.mod h1:Ct15B4yir3PLOP5jsy0GNeYVaIZs/MK/Jz5any1wFW0= @@ -907,6 +910,7 @@ github.com/hashicorp/go-multierror v1.0.0/go.mod h1:dHtQlpGsu+cZNNAkkCN/P3hoUDHh github.com/hashicorp/go-multierror v1.1.1 h1:H5DkEtf6CXdFp0N0Em5UCwQpXMWke8IA0+lD48awMYo= github.com/hashicorp/go-multierror v1.1.1/go.mod h1:iw975J/qwKPdAO1clOe2L8331t/9/fmwbPZ6JB6eMoM= github.com/hashicorp/go-plugin v1.4.4 h1:NVdrSdFRt3SkZtNckJ6tog7gbpRrcbOjQi/rgF7JYWQ= +github.com/hashicorp/go-plugin v1.4.4/go.mod h1:viDMjcLJuDui6pXb8U4HVfb8AamCWhHGUjr2IrTF67s= github.com/hashicorp/go-reap v0.0.0-20170704170343-bf58d8a43e7b h1:3GrpnZQBxcMj1gCXQLelfjCT1D5MPGTuGMKHVzSIH6A= github.com/hashicorp/go-reap v0.0.0-20170704170343-bf58d8a43e7b/go.mod h1:qIFzeFcJU3OIFk/7JreWXcUjFmcCaeHTH9KoNyHYVCs= github.com/hashicorp/go-rootcerts v1.0.0/go.mod h1:K6zTfqpRlCUIjkwsN4Z+hiSfzSTQa6eBIzfwKfwNnHU= @@ -916,6 +920,7 @@ github.com/hashicorp/go-uuid v1.0.0/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/b github.com/hashicorp/go-uuid v1.0.1/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= github.com/hashicorp/go-uuid v1.0.3 h1:2gKiV6YVmrJ1i2CKKa9obLvRieoRGviZFL26PcT/Co8= github.com/hashicorp/go-uuid v1.0.3/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= +github.com/hashicorp/go-version v1.2.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= github.com/hashicorp/go-version v1.6.0 h1:feTTfFNnjP967rlCxM/I9g701jU+RN74YKx2mOkIeek= github.com/hashicorp/go-version v1.6.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= github.com/hashicorp/go.net v0.0.1/go.mod h1:hjKkEWcCURg++eb33jQU7oqQcI9XDCnUzHA0oac0k90= @@ -946,7 +951,9 @@ github.com/hashicorp/terraform-plugin-log v0.7.0/go.mod h1:p4R1jWBXRTvL4odmEkFfD github.com/hashicorp/terraform-plugin-sdk/v2 v2.20.0 h1:+KxZULPsbjpAVoP0WNj/8aVW6EqpcX5JcUcQ5wl7Da4= github.com/hashicorp/terraform-plugin-sdk/v2 v2.20.0/go.mod h1:DwGJG3KNxIPluVk6hexvDfYR/MS/eKGpiztJoT3Bbbw= github.com/hashicorp/terraform-registry-address v0.0.0-20220623143253-7d51757b572c h1:D8aRO6+mTqHfLsK/BC3j5OAoogv1WLRWzY1AaTo3rBg= +github.com/hashicorp/terraform-registry-address v0.0.0-20220623143253-7d51757b572c/go.mod h1:Wn3Na71knbXc1G8Lh+yu/dQWWJeFQEpDeJMtWMtlmNI= github.com/hashicorp/terraform-svchost v0.0.0-20200729002733-f050f53b9734 h1:HKLsbzeOsfXmKNpr3GiT18XAblV0BjCbzL8KQAMZGa0= +github.com/hashicorp/terraform-svchost v0.0.0-20200729002733-f050f53b9734/go.mod h1:kNDNcF7sN4DocDLBkQYz73HGKwN1ANB1blq4lIYLYvg= github.com/hashicorp/yamux v0.0.0-20220718163420-dd80a7ee44ce h1:7FO+LmZwiG/eDsBWo50ZeqV5PoH0gwiM1mxFajXAkas= github.com/hashicorp/yamux v0.0.0-20220718163420-dd80a7ee44ce/go.mod h1:CtWFDAQgb7dxtzFs4tWbplKIe2jSi3+5vKbgIO0SLnQ= github.com/hdevalence/ed25519consensus v0.0.0-20220222234857-c00d1f31bab3 h1:aSVUgRRRtOrZOC1fYmY9gV0e9z/Iu+xNVSASWjsuyGU= @@ -1305,6 +1312,7 @@ github.com/nu7hatch/gouuid v0.0.0-20131221200532-179d4d0c4d8d/go.mod h1:YUTz3bUH github.com/nxadm/tail v1.4.4/go.mod h1:kenIhsEOeOJmVchQTgglprH7qJGnHDVpk1VPCcaMI8A= github.com/nxadm/tail v1.4.8/go.mod h1:+ncqLTQzXmGhMZNUePPaPqPvBxHAIsmXswZKocGu+AU= github.com/oklog/run v1.0.0 h1:Ru7dDtJNOyC66gQ5dQmaCa0qIsAUFY3sFpK1Xk8igrw= +github.com/oklog/run v1.0.0/go.mod h1:dlhp/R75TPv97u0XWUtDeV/lRKWPKSdTuV0TZvrmrQA= github.com/oklog/ulid v1.3.1/go.mod h1:CirwcVhetQ6Lv90oh/F+FBtV6XMibvdAFo93nm5qn4U= github.com/olekukonko/tablewriter v0.0.0-20170122224234-a0225b3f23b5/go.mod h1:vsDQFd/mU46D+Z4whnwzcISnGGzXWMclvtLoiIKAKIo= github.com/olekukonko/tablewriter v0.0.5 h1:P2Ga83D34wi1o9J6Wh1mRuqd4mF/x/lgBS7N7AbDhec= @@ -1881,6 +1889,7 @@ golang.org/x/net v0.0.0-20190813141303-74dc4d7220e7/go.mod h1:z5CRVTTTmAJ677TzLL golang.org/x/net v0.0.0-20190827160401-ba9fcec4b297/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20191004110552-13f9640d40b9/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20191007182048-72f939374954/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20191009170851-d66e71096ffb/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20191112182307-2180aed22343/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20191209160850-c0dbc17a3553/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200114155413-6afb5195e5aa/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= diff --git a/provisioner/terraform/resources.go b/provisioner/terraform/resources.go index 2f497a1ae79f1..28faadfa54aa5 100644 --- a/provisioner/terraform/resources.go +++ b/provisioner/terraform/resources.go @@ -483,8 +483,8 @@ func ConvertState(modules []*tfjson.StateModule, rawGraph string, rawParameterNa if len(param.Validation) == 1 { protoParam.ValidationRegex = param.Validation[0].Regex protoParam.ValidationError = param.Validation[0].Error - protoParam.ValidationMax = int32(param.Validation[0].Max) - protoParam.ValidationMin = int32(param.Validation[0].Min) + protoParam.ValidationMax = ptrInt32(param.Validation[0].Max) + protoParam.ValidationMin = ptrInt32(param.Validation[0].Min) protoParam.ValidationMonotonic = param.Validation[0].Monotonic } if len(param.Option) > 0 { @@ -527,6 +527,15 @@ func ConvertState(modules []*tfjson.StateModule, rawGraph string, rawParameterNa }, nil } +func ptrInt32(number *int) *int32 { + var n int32 + if number == nil { + return &n + } + n = int32(*number) + return &n +} + // convertAddressToLabel returns the Terraform address without the count // specifier. // eg. "module.ec2_dev.ec2_instance.dev[0]" becomes "module.ec2_dev.ec2_instance.dev" diff --git a/provisionersdk/proto/provisioner.pb.go b/provisionersdk/proto/provisioner.pb.go index adffb1339441c..3c8e76fb6faab 100644 --- a/provisionersdk/proto/provisioner.pb.go +++ b/provisionersdk/proto/provisioner.pb.go @@ -1,7 +1,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.26.0 -// protoc v3.21.5 +// protoc-gen-go v1.28.1 +// protoc v3.21.6 // source: provisionersdk/proto/provisioner.proto package proto @@ -819,8 +819,8 @@ type RichParameter struct { Options []*RichParameterOption `protobuf:"bytes,7,rep,name=options,proto3" json:"options,omitempty"` ValidationRegex string `protobuf:"bytes,8,opt,name=validation_regex,json=validationRegex,proto3" json:"validation_regex,omitempty"` ValidationError string `protobuf:"bytes,9,opt,name=validation_error,json=validationError,proto3" json:"validation_error,omitempty"` - ValidationMin int32 `protobuf:"varint,10,opt,name=validation_min,json=validationMin,proto3" json:"validation_min,omitempty"` - ValidationMax int32 `protobuf:"varint,11,opt,name=validation_max,json=validationMax,proto3" json:"validation_max,omitempty"` + ValidationMin *int32 `protobuf:"varint,10,opt,name=validation_min,json=validationMin,proto3,oneof" json:"validation_min,omitempty"` + ValidationMax *int32 `protobuf:"varint,11,opt,name=validation_max,json=validationMax,proto3,oneof" json:"validation_max,omitempty"` ValidationMonotonic string `protobuf:"bytes,12,opt,name=validation_monotonic,json=validationMonotonic,proto3" json:"validation_monotonic,omitempty"` Required bool `protobuf:"varint,13,opt,name=required,proto3" json:"required,omitempty"` LegacyVariableName string `protobuf:"bytes,14,opt,name=legacy_variable_name,json=legacyVariableName,proto3" json:"legacy_variable_name,omitempty"` @@ -923,15 +923,15 @@ func (x *RichParameter) GetValidationError() string { } func (x *RichParameter) GetValidationMin() int32 { - if x != nil { - return x.ValidationMin + if x != nil && x.ValidationMin != nil { + return *x.ValidationMin } return 0 } func (x *RichParameter) GetValidationMax() int32 { - if x != nil { - return x.ValidationMax + if x != nil && x.ValidationMax != nil { + return *x.ValidationMax } return 0 } @@ -2874,7 +2874,7 @@ var file_provisionersdk_proto_provisioner_proto_rawDesc = []byte{ 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x69, 0x63, 0x6f, 0x6e, - 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x69, 0x63, 0x6f, 0x6e, 0x22, 0xb0, 0x04, 0x0a, + 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x69, 0x63, 0x6f, 0x6e, 0x22, 0xe0, 0x04, 0x0a, 0x0d, 0x52, 0x69, 0x63, 0x68, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, @@ -2894,22 +2894,25 @@ var file_provisionersdk_proto_provisioner_proto_rawDesc = []byte{ 0x09, 0x52, 0x0f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x67, 0x65, 0x78, 0x12, 0x29, 0x0a, 0x10, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x76, 0x61, - 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x12, 0x25, 0x0a, + 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x12, 0x2a, 0x0a, 0x0e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x69, 0x6e, 0x18, - 0x0a, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0d, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x4d, 0x69, 0x6e, 0x12, 0x25, 0x0a, 0x0e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x78, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0d, 0x76, 0x61, - 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x61, 0x78, 0x12, 0x31, 0x0a, 0x14, 0x76, - 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x6f, 0x6e, 0x6f, 0x74, 0x6f, - 0x6e, 0x69, 0x63, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x13, 0x76, 0x61, 0x6c, 0x69, 0x64, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x6f, 0x6e, 0x6f, 0x74, 0x6f, 0x6e, 0x69, 0x63, 0x12, 0x1a, - 0x0a, 0x08, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x08, - 0x52, 0x08, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x12, 0x30, 0x0a, 0x14, 0x6c, 0x65, - 0x67, 0x61, 0x63, 0x79, 0x5f, 0x76, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x6e, 0x61, - 0x6d, 0x65, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x12, 0x6c, 0x65, 0x67, 0x61, 0x63, 0x79, - 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x21, 0x0a, 0x0c, - 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x0f, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x0b, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x22, + 0x0a, 0x20, 0x01, 0x28, 0x05, 0x48, 0x00, 0x52, 0x0d, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x4d, 0x69, 0x6e, 0x88, 0x01, 0x01, 0x12, 0x2a, 0x0a, 0x0e, 0x76, 0x61, 0x6c, + 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x78, 0x18, 0x0b, 0x20, 0x01, 0x28, + 0x05, 0x48, 0x01, 0x52, 0x0d, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, + 0x61, 0x78, 0x88, 0x01, 0x01, 0x12, 0x31, 0x0a, 0x14, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x6f, 0x6e, 0x6f, 0x74, 0x6f, 0x6e, 0x69, 0x63, 0x18, 0x0c, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x13, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, + 0x6f, 0x6e, 0x6f, 0x74, 0x6f, 0x6e, 0x69, 0x63, 0x12, 0x1a, 0x0a, 0x08, 0x72, 0x65, 0x71, 0x75, + 0x69, 0x72, 0x65, 0x64, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x72, 0x65, 0x71, 0x75, + 0x69, 0x72, 0x65, 0x64, 0x12, 0x30, 0x0a, 0x14, 0x6c, 0x65, 0x67, 0x61, 0x63, 0x79, 0x5f, 0x76, + 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x0e, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x12, 0x6c, 0x65, 0x67, 0x61, 0x63, 0x79, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, + 0x6c, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, + 0x79, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x69, + 0x73, 0x70, 0x6c, 0x61, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x42, 0x11, 0x0a, 0x0f, 0x5f, 0x76, 0x61, + 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x69, 0x6e, 0x42, 0x11, 0x0a, 0x0f, + 0x5f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x78, 0x22, 0x3e, 0x0a, 0x12, 0x52, 0x69, 0x63, 0x68, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, @@ -3691,6 +3694,7 @@ func file_provisionersdk_proto_provisioner_proto_init() { } } } + file_provisionersdk_proto_provisioner_proto_msgTypes[7].OneofWrappers = []interface{}{} file_provisionersdk_proto_provisioner_proto_msgTypes[13].OneofWrappers = []interface{}{ (*Agent_Token)(nil), (*Agent_InstanceId)(nil), diff --git a/provisionersdk/proto/provisioner.proto b/provisionersdk/proto/provisioner.proto index 6cb29a3a015fd..27ee7d904a489 100644 --- a/provisionersdk/proto/provisioner.proto +++ b/provisionersdk/proto/provisioner.proto @@ -81,8 +81,8 @@ message RichParameter { repeated RichParameterOption options = 7; string validation_regex = 8; string validation_error = 9; - int32 validation_min = 10; - int32 validation_max = 11; + optional int32 validation_min = 10; + optional int32 validation_max = 11; string validation_monotonic = 12; bool required = 13; string legacy_variable_name = 14; diff --git a/provisionersdk/proto/provisioner_drpc.pb.go b/provisionersdk/proto/provisioner_drpc.pb.go index c990f6f645b7f..d307402447c78 100644 --- a/provisionersdk/proto/provisioner_drpc.pb.go +++ b/provisionersdk/proto/provisioner_drpc.pb.go @@ -1,5 +1,5 @@ // Code generated by protoc-gen-go-drpc. DO NOT EDIT. -// protoc-gen-go-drpc version: v0.0.26 +// protoc-gen-go-drpc version: (devel) // source: provisionersdk/proto/provisioner.proto package proto From aaabe5b7653ca539a4a58ff220fdd89abc2fe9a4 Mon Sep 17 00:00:00 2001 From: Marcin Tojek Date: Mon, 29 May 2023 17:43:52 +0200 Subject: [PATCH 2/5] fix --- cli/create_test.go | 3 ++- cli/update_test.go | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/cli/create_test.go b/cli/create_test.go index 75f29046ac163..be05656117c97 100644 --- a/cli/create_test.go +++ b/cli/create_test.go @@ -15,6 +15,7 @@ import ( "github.com/coder/coder/cli/clitest" "github.com/coder/coder/coderd/coderdtest" "github.com/coder/coder/coderd/gitauth" + "github.com/coder/coder/coderd/util/ptr" "github.com/coder/coder/codersdk" "github.com/coder/coder/provisioner/echo" "github.com/coder/coder/provisionersdk/proto" @@ -494,7 +495,7 @@ func TestCreateValidateRichParameters(t *testing.T) { ) numberRichParameters := []*proto.RichParameter{ - {Name: numberParameterName, Type: "number", Mutable: true, ValidationMin: 3, ValidationMax: 10}, + {Name: numberParameterName, Type: "number", Mutable: true, ValidationMin: ptr.Ref(int32(3)), ValidationMax: ptr.Ref(int32(10))}, } stringRichParameters := []*proto.RichParameter{ diff --git a/cli/update_test.go b/cli/update_test.go index 38526aefb4d76..81b0a05804a5d 100644 --- a/cli/update_test.go +++ b/cli/update_test.go @@ -11,6 +11,7 @@ import ( "github.com/coder/coder/cli/clitest" "github.com/coder/coder/coderd/coderdtest" + "github.com/coder/coder/coderd/util/ptr" "github.com/coder/coder/codersdk" "github.com/coder/coder/provisioner/echo" "github.com/coder/coder/provisionersdk/proto" @@ -245,7 +246,7 @@ func TestUpdateValidateRichParameters(t *testing.T) { ) numberRichParameters := []*proto.RichParameter{ - {Name: numberParameterName, Type: "number", Mutable: true, ValidationMin: 3, ValidationMax: 10}, + {Name: numberParameterName, Type: "number", Mutable: true, ValidationMin: ptr.Ref(int32(3)), ValidationMax: ptr.Ref(int32(10))}, } stringRichParameters := []*proto.RichParameter{ From d507f9d8143abe9ab9b9d2780c90dff69ac1e7ec Mon Sep 17 00:00:00 2001 From: Marcin Tojek Date: Tue, 30 May 2023 13:08:07 +0200 Subject: [PATCH 3/5] fix: site --- site/src/i18n/en/createWorkspacePage.json | 2 ++ site/src/utils/richParameters.ts | 24 +++++++++++++++++++++++ 2 files changed, 26 insertions(+) diff --git a/site/src/i18n/en/createWorkspacePage.json b/site/src/i18n/en/createWorkspacePage.json index 44ecb110791e3..c8e45828afca8 100644 --- a/site/src/i18n/en/createWorkspacePage.json +++ b/site/src/i18n/en/createWorkspacePage.json @@ -3,6 +3,8 @@ "nameLabel": "Workspace Name", "ownerLabel": "Owner", "createWorkspace": "Create workspace", + "validationNumberNotLesserThan": "Value must be greater than {{min}}.", + "validationNumberNotGreaterThan": "Value must be lesser than {{max}}.", "validationNumberNotInRange": "Value must be between {{min}} and {{max}}.", "validationPatternNotMatched": "{{error}} (value does not match the pattern {{pattern}})." } diff --git a/site/src/utils/richParameters.ts b/site/src/utils/richParameters.ts index 764dc1d0896f9..db2bd522518ea 100644 --- a/site/src/utils/richParameters.ts +++ b/site/src/utils/richParameters.ts @@ -69,6 +69,30 @@ export const useValidationSchemaForRichParameters = ( switch (templateParameter.type) { case "number": if ( + templateParameter.validation_min && + !templateParameter.validation_max + ) { + if (Number(val) < templateParameter.validation_min) { + return ctx.createError({ + path: ctx.path, + message: t("validationNumberLesserThan", { + min: templateParameter.validation_min, + }), + }) + } + } else if ( + !templateParameter.validation_min && + templateParameter.validation_max + ) { + if (templateParameter.validation_max < Number(val)) { + return ctx.createError({ + path: ctx.path, + message: t("validationNumberGreaterThan", { + max: templateParameter.validation_max, + }), + }) + } + } else if ( templateParameter.validation_min && templateParameter.validation_max ) { From d70145a05476efd2bb81a4f37a7c48609fdc0da4 Mon Sep 17 00:00:00 2001 From: Marcin Tojek Date: Tue, 30 May 2023 13:11:05 +0200 Subject: [PATCH 4/5] fix --- site/src/i18n/en/createWorkspacePage.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/site/src/i18n/en/createWorkspacePage.json b/site/src/i18n/en/createWorkspacePage.json index c8e45828afca8..83a50fe97adf5 100644 --- a/site/src/i18n/en/createWorkspacePage.json +++ b/site/src/i18n/en/createWorkspacePage.json @@ -3,8 +3,8 @@ "nameLabel": "Workspace Name", "ownerLabel": "Owner", "createWorkspace": "Create workspace", - "validationNumberNotLesserThan": "Value must be greater than {{min}}.", - "validationNumberNotGreaterThan": "Value must be lesser than {{max}}.", + "validationNumberLesserThan": "Value must be greater than {{min}}.", + "validationNumberGreaterThan": "Value must be lesser than {{max}}.", "validationNumberNotInRange": "Value must be between {{min}} and {{max}}.", "validationPatternNotMatched": "{{error}} (value does not match the pattern {{pattern}})." } From 549721540ffc3af7e614bd3d913213c5f0a18b2c Mon Sep 17 00:00:00 2001 From: Marcin Tojek Date: Tue, 30 May 2023 14:06:04 +0200 Subject: [PATCH 5/5] Update terraform-provider-coder to v0.8.1 --- go.mod | 9 +-------- go.sum | 13 ++----------- 2 files changed, 3 insertions(+), 19 deletions(-) diff --git a/go.mod b/go.mod index 41bc21eba95cf..4d7182c361ef2 100644 --- a/go.mod +++ b/go.mod @@ -75,7 +75,7 @@ require ( github.com/codeclysm/extract v2.2.0+incompatible github.com/coder/flog v1.1.0 github.com/coder/retry v1.3.1-0.20230210155434-e90a2e1e091d - github.com/coder/terraform-provider-coder v0.7.1-0.20230529135822-946db5afc9a3 + github.com/coder/terraform-provider-coder v0.8.1 github.com/coder/wgtunnel v0.1.5 github.com/coreos/go-oidc/v3 v3.6.0 github.com/coreos/go-systemd v0.0.0-20191104093116-d3cd4ed1dbcf @@ -352,10 +352,3 @@ require ( howett.net/plist v1.0.0 // indirect inet.af/peercred v0.0.0-20210906144145-0893ea02156a // indirect ) - -require ( - github.com/hashicorp/go-plugin v1.4.4 // indirect - github.com/hashicorp/terraform-registry-address v0.0.0-20220623143253-7d51757b572c // indirect - github.com/hashicorp/terraform-svchost v0.0.0-20200729002733-f050f53b9734 // indirect - github.com/oklog/run v1.0.0 // indirect -) diff --git a/go.sum b/go.sum index b94e46cf9d663..3c2d9c6c3c00c 100644 --- a/go.sum +++ b/go.sum @@ -336,10 +336,8 @@ github.com/coder/ssh v0.0.0-20230421140225-04bb837133e1 h1:LBw76rEDuhNJyohve11mb github.com/coder/ssh v0.0.0-20230421140225-04bb837133e1/go.mod h1:ZSS+CUoKHDrqVakTfTWUlKSr9MtMFkC4UvtQKD7O914= github.com/coder/tailscale v0.0.0-20230522123520-74712221d00f h1:F0Xr1d8h8dAHn7tab1HXuzYFkcjmCydnEfdMbkOhlVk= github.com/coder/tailscale v0.0.0-20230522123520-74712221d00f/go.mod h1:jpg+77g19FpXL43U1VoIqoSg1K/Vh5CVxycGldQ8KhA= -github.com/coder/terraform-provider-coder v0.6.23 h1:O2Rcj0umez4DfVdGnKZi63z1Xzxd0IQOn9VQDB8YU8g= -github.com/coder/terraform-provider-coder v0.6.23/go.mod h1:UIfU3bYNeSzJJvHyJ30tEKjD6Z9utloI+HUM/7n94CY= -github.com/coder/terraform-provider-coder v0.7.1-0.20230529135822-946db5afc9a3 h1:nPmZGLht9SK1QlDJVLlLGT5CgldYIqklj5bJazHD3oY= -github.com/coder/terraform-provider-coder v0.7.1-0.20230529135822-946db5afc9a3/go.mod h1:UIfU3bYNeSzJJvHyJ30tEKjD6Z9utloI+HUM/7n94CY= +github.com/coder/terraform-provider-coder v0.8.1 h1:i/LhvFi+Ei0gL+h4GItJfwtxjcITTlQhS+R8J+0vRo8= +github.com/coder/terraform-provider-coder v0.8.1/go.mod h1:UIfU3bYNeSzJJvHyJ30tEKjD6Z9utloI+HUM/7n94CY= github.com/coder/wgtunnel v0.1.5 h1:WP3sCj/3iJ34eKvpMQEp1oJHvm24RYh0NHbj1kfUKfs= github.com/coder/wgtunnel v0.1.5/go.mod h1:bokoUrHnUFY4lu9KOeSYiIcHTI2MO1KwqumU4DPDyJI= github.com/containerd/aufs v0.0.0-20200908144142-dab0cbea06f4/go.mod h1:nukgQABAEopAHvB6j7cnP5zJ+/3aVcE7hCYqvIwAHyE= @@ -808,7 +806,6 @@ github.com/google/go-cmp v0.5.4/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/ github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.6/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.7/go.mod h1:n+brtR0CgQNWTVd5ZUFpTBC8YFBDLK/h/bpaJ8/DtOE= -github.com/google/go-cmp v0.5.8/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= github.com/google/go-cmp v0.5.9 h1:O2Tfq5qg4qc4AmwVlvv0oLiVAGB7enBSJ2x2DqQFi38= github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= github.com/google/go-containerregistry v0.5.1/go.mod h1:Ct15B4yir3PLOP5jsy0GNeYVaIZs/MK/Jz5any1wFW0= @@ -910,7 +907,6 @@ github.com/hashicorp/go-multierror v1.0.0/go.mod h1:dHtQlpGsu+cZNNAkkCN/P3hoUDHh github.com/hashicorp/go-multierror v1.1.1 h1:H5DkEtf6CXdFp0N0Em5UCwQpXMWke8IA0+lD48awMYo= github.com/hashicorp/go-multierror v1.1.1/go.mod h1:iw975J/qwKPdAO1clOe2L8331t/9/fmwbPZ6JB6eMoM= github.com/hashicorp/go-plugin v1.4.4 h1:NVdrSdFRt3SkZtNckJ6tog7gbpRrcbOjQi/rgF7JYWQ= -github.com/hashicorp/go-plugin v1.4.4/go.mod h1:viDMjcLJuDui6pXb8U4HVfb8AamCWhHGUjr2IrTF67s= github.com/hashicorp/go-reap v0.0.0-20170704170343-bf58d8a43e7b h1:3GrpnZQBxcMj1gCXQLelfjCT1D5MPGTuGMKHVzSIH6A= github.com/hashicorp/go-reap v0.0.0-20170704170343-bf58d8a43e7b/go.mod h1:qIFzeFcJU3OIFk/7JreWXcUjFmcCaeHTH9KoNyHYVCs= github.com/hashicorp/go-rootcerts v1.0.0/go.mod h1:K6zTfqpRlCUIjkwsN4Z+hiSfzSTQa6eBIzfwKfwNnHU= @@ -920,7 +916,6 @@ github.com/hashicorp/go-uuid v1.0.0/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/b github.com/hashicorp/go-uuid v1.0.1/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= github.com/hashicorp/go-uuid v1.0.3 h1:2gKiV6YVmrJ1i2CKKa9obLvRieoRGviZFL26PcT/Co8= github.com/hashicorp/go-uuid v1.0.3/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= -github.com/hashicorp/go-version v1.2.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= github.com/hashicorp/go-version v1.6.0 h1:feTTfFNnjP967rlCxM/I9g701jU+RN74YKx2mOkIeek= github.com/hashicorp/go-version v1.6.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= github.com/hashicorp/go.net v0.0.1/go.mod h1:hjKkEWcCURg++eb33jQU7oqQcI9XDCnUzHA0oac0k90= @@ -951,9 +946,7 @@ github.com/hashicorp/terraform-plugin-log v0.7.0/go.mod h1:p4R1jWBXRTvL4odmEkFfD github.com/hashicorp/terraform-plugin-sdk/v2 v2.20.0 h1:+KxZULPsbjpAVoP0WNj/8aVW6EqpcX5JcUcQ5wl7Da4= github.com/hashicorp/terraform-plugin-sdk/v2 v2.20.0/go.mod h1:DwGJG3KNxIPluVk6hexvDfYR/MS/eKGpiztJoT3Bbbw= github.com/hashicorp/terraform-registry-address v0.0.0-20220623143253-7d51757b572c h1:D8aRO6+mTqHfLsK/BC3j5OAoogv1WLRWzY1AaTo3rBg= -github.com/hashicorp/terraform-registry-address v0.0.0-20220623143253-7d51757b572c/go.mod h1:Wn3Na71knbXc1G8Lh+yu/dQWWJeFQEpDeJMtWMtlmNI= github.com/hashicorp/terraform-svchost v0.0.0-20200729002733-f050f53b9734 h1:HKLsbzeOsfXmKNpr3GiT18XAblV0BjCbzL8KQAMZGa0= -github.com/hashicorp/terraform-svchost v0.0.0-20200729002733-f050f53b9734/go.mod h1:kNDNcF7sN4DocDLBkQYz73HGKwN1ANB1blq4lIYLYvg= github.com/hashicorp/yamux v0.0.0-20220718163420-dd80a7ee44ce h1:7FO+LmZwiG/eDsBWo50ZeqV5PoH0gwiM1mxFajXAkas= github.com/hashicorp/yamux v0.0.0-20220718163420-dd80a7ee44ce/go.mod h1:CtWFDAQgb7dxtzFs4tWbplKIe2jSi3+5vKbgIO0SLnQ= github.com/hdevalence/ed25519consensus v0.0.0-20220222234857-c00d1f31bab3 h1:aSVUgRRRtOrZOC1fYmY9gV0e9z/Iu+xNVSASWjsuyGU= @@ -1312,7 +1305,6 @@ github.com/nu7hatch/gouuid v0.0.0-20131221200532-179d4d0c4d8d/go.mod h1:YUTz3bUH github.com/nxadm/tail v1.4.4/go.mod h1:kenIhsEOeOJmVchQTgglprH7qJGnHDVpk1VPCcaMI8A= github.com/nxadm/tail v1.4.8/go.mod h1:+ncqLTQzXmGhMZNUePPaPqPvBxHAIsmXswZKocGu+AU= github.com/oklog/run v1.0.0 h1:Ru7dDtJNOyC66gQ5dQmaCa0qIsAUFY3sFpK1Xk8igrw= -github.com/oklog/run v1.0.0/go.mod h1:dlhp/R75TPv97u0XWUtDeV/lRKWPKSdTuV0TZvrmrQA= github.com/oklog/ulid v1.3.1/go.mod h1:CirwcVhetQ6Lv90oh/F+FBtV6XMibvdAFo93nm5qn4U= github.com/olekukonko/tablewriter v0.0.0-20170122224234-a0225b3f23b5/go.mod h1:vsDQFd/mU46D+Z4whnwzcISnGGzXWMclvtLoiIKAKIo= github.com/olekukonko/tablewriter v0.0.5 h1:P2Ga83D34wi1o9J6Wh1mRuqd4mF/x/lgBS7N7AbDhec= @@ -1889,7 +1881,6 @@ golang.org/x/net v0.0.0-20190813141303-74dc4d7220e7/go.mod h1:z5CRVTTTmAJ677TzLL golang.org/x/net v0.0.0-20190827160401-ba9fcec4b297/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20191004110552-13f9640d40b9/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20191007182048-72f939374954/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20191009170851-d66e71096ffb/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20191112182307-2180aed22343/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20191209160850-c0dbc17a3553/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200114155413-6afb5195e5aa/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=