fix: use minDisabled, maxDisabled for parameter validation (#7755)

This commit is contained in:
Marcin Tojek 2023-06-02 11:43:48 +02:00 committed by GitHub
parent a7366a8b76
commit 10036ab5fb
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
16 changed files with 1595 additions and 62 deletions

View File

@ -78,24 +78,26 @@ func ValidateWorkspaceBuildParameter(richParameter TemplateVersionParameter, bui
return nil
}
var min, max int
if richParameter.ValidationMin != nil {
min = int(*richParameter.ValidationMin)
}
if richParameter.ValidationMax != nil {
max = int(*richParameter.ValidationMax)
}
validation := &provider.Validation{
Min: ptrInt(richParameter.ValidationMin),
Max: ptrInt(richParameter.ValidationMax),
Regex: richParameter.ValidationRegex,
Error: richParameter.ValidationError,
Monotonic: string(richParameter.ValidationMonotonic),
Min: min,
Max: max,
MinDisabled: richParameter.ValidationMin == nil,
MaxDisabled: richParameter.ValidationMax == nil,
Regex: richParameter.ValidationRegex,
Error: richParameter.ValidationError,
Monotonic: string(richParameter.ValidationMonotonic),
}
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

View File

@ -187,6 +187,18 @@ func TestRichParameterValidation(t *testing.T) {
{Name: boolParameterName, Type: "bool", Mutable: true},
}
numberRichParametersMinOnly := []codersdk.TemplateVersionParameter{
{Name: stringParameterName, Type: "string", Mutable: true},
{Name: numberParameterName, Type: "number", Mutable: true, ValidationMin: ptr.Ref(int32(5))},
{Name: boolParameterName, Type: "bool", Mutable: true},
}
numberRichParametersMaxOnly := []codersdk.TemplateVersionParameter{
{Name: stringParameterName, Type: "string", Mutable: true},
{Name: numberParameterName, Type: "number", Mutable: true, ValidationMax: ptr.Ref(int32(5))},
{Name: boolParameterName, Type: "bool", Mutable: true},
}
monotonicIncreasingNumberRichParameters := []codersdk.TemplateVersionParameter{
{Name: stringParameterName, Type: "string", Mutable: true},
{Name: numberParameterName, Type: "number", Mutable: true, ValidationMin: ptr.Ref(int32(3)), ValidationMax: ptr.Ref(int32(10)), ValidationMonotonic: "increasing"},
@ -232,6 +244,14 @@ func TestRichParameterValidation(t *testing.T) {
{numberParameterName, "10", true, numberRichParameters},
{numberParameterName, "11", false, numberRichParameters},
{numberParameterName, "4", false, numberRichParametersMinOnly},
{numberParameterName, "5", true, numberRichParametersMinOnly},
{numberParameterName, "6", true, numberRichParametersMinOnly},
{numberParameterName, "4", true, numberRichParametersMaxOnly},
{numberParameterName, "5", true, numberRichParametersMaxOnly},
{numberParameterName, "6", false, numberRichParametersMaxOnly},
{numberParameterName, "6", false, monotonicIncreasingNumberRichParameters},
{numberParameterName, "7", true, monotonicIncreasingNumberRichParameters},
{numberParameterName, "8", true, monotonicIncreasingNumberRichParameters},

2
go.mod
View File

@ -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.4.0
github.com/coder/terraform-provider-coder v0.8.1
github.com/coder/terraform-provider-coder v0.8.2
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

4
go.sum
View File

@ -336,8 +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.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/terraform-provider-coder v0.8.2 h1:EPhkdpsNd8fcg6eqpAQr+W1eRrEAMtugoqujoTK4O6o=
github.com/coder/terraform-provider-coder v0.8.2/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=

View File

@ -483,8 +483,35 @@ 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 = ptrInt32(param.Validation[0].Max)
protoParam.ValidationMin = ptrInt32(param.Validation[0].Min)
validationAttributeValues, ok := resource.AttributeValues["validation"]
if ok {
validationAttributeValuesArr, ok := validationAttributeValues.([]interface{})
if ok {
validationAttributeValuesMapStr, ok := validationAttributeValuesArr[0].(map[string]interface{})
if ok {
// Backward compatibility with terraform-coder-plugin < v0.8.2:
// * "min_disabled" and "max_disabled" are not available yet
// * "min" and "max" are required to be specified together
if _, ok = validationAttributeValuesMapStr["min_disabled"]; !ok {
if param.Validation[0].Min != 0 || param.Validation[0].Max != 0 {
param.Validation[0].MinDisabled = false
param.Validation[0].MaxDisabled = false
} else {
param.Validation[0].MinDisabled = true
param.Validation[0].MaxDisabled = true
}
}
}
}
}
if !param.Validation[0].MaxDisabled {
protoParam.ValidationMax = PtrInt32(param.Validation[0].Max)
}
if !param.Validation[0].MinDisabled {
protoParam.ValidationMin = PtrInt32(param.Validation[0].Min)
}
protoParam.ValidationMonotonic = param.Validation[0].Monotonic
}
if len(param.Option) > 0 {
@ -527,12 +554,8 @@ 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)
func PtrInt32(number int) *int32 {
n := int32(number)
return &n
}

View File

@ -323,6 +323,83 @@ func TestConvertResources(t *testing.T) {
Type: "string",
Description: "blah blah",
DefaultValue: "ok",
}, {
Name: "number_example_min_max",
Type: "number",
DefaultValue: "4",
ValidationMin: terraform.PtrInt32(3),
ValidationMax: terraform.PtrInt32(6),
}, {
Name: "number_example_min_zero",
Type: "number",
DefaultValue: "4",
ValidationMin: terraform.PtrInt32(0),
ValidationMax: terraform.PtrInt32(6),
}, {
Name: "number_example_max_zero",
Type: "number",
DefaultValue: "-2",
ValidationMin: terraform.PtrInt32(-3),
ValidationMax: terraform.PtrInt32(0),
}, {
Name: "number_example",
Type: "number",
DefaultValue: "4",
ValidationMin: nil,
ValidationMax: nil,
}},
},
"rich-parameters-validation": {
resources: []*proto.Resource{{
Name: "dev",
Type: "null_resource",
Agents: []*proto.Agent{{
Name: "dev",
OperatingSystem: "windows",
ShutdownScriptTimeoutSeconds: 300,
StartupScriptTimeoutSeconds: 300,
Architecture: "arm64",
Auth: &proto.Agent_Token{},
LoginBeforeReady: true,
ConnectionTimeoutSeconds: 120,
}},
}},
parameters: []*proto.RichParameter{{
Name: "number_example_min_max",
Type: "number",
DefaultValue: "4",
ValidationMin: terraform.PtrInt32(3),
ValidationMax: terraform.PtrInt32(6),
}, {
Name: "number_example_min",
Type: "number",
DefaultValue: "4",
ValidationMin: terraform.PtrInt32(3),
ValidationMax: nil,
}, {
Name: "number_example_min_zero",
Type: "number",
DefaultValue: "4",
ValidationMin: terraform.PtrInt32(0),
ValidationMax: nil,
}, {
Name: "number_example_max",
Type: "number",
DefaultValue: "4",
ValidationMin: nil,
ValidationMax: terraform.PtrInt32(6),
}, {
Name: "number_example_max_zero",
Type: "number",
DefaultValue: "-3",
ValidationMin: nil,
ValidationMax: terraform.PtrInt32(0),
}, {
Name: "number_example",
Type: "number",
DefaultValue: "4",
ValidationMin: nil,
ValidationMax: nil,
}},
},
"git-auth-providers": {

View File

@ -0,0 +1,69 @@
terraform {
required_providers {
coder = {
source = "coder/coder"
version = "0.8.2"
}
}
}
data "coder_parameter" "number_example_min_max" {
name = "number_example_min_max"
type = "number"
default = 4
validation {
min = 3
max = 6
}
}
data "coder_parameter" "number_example_min" {
name = "number_example_min"
type = "number"
default = 4
validation {
min = 3
}
}
data "coder_parameter" "number_example_min_zero" {
name = "number_example_min_zero"
type = "number"
default = 4
validation {
min = 0
}
}
data "coder_parameter" "number_example_max" {
name = "number_example_max"
type = "number"
default = 4
validation {
max = 6
}
}
data "coder_parameter" "number_example_max_zero" {
name = "number_example_max_zero"
type = "number"
default = -3
validation {
max = 0
}
}
data "coder_parameter" "number_example" {
name = "number_example"
type = "number"
default = 4
}
resource "coder_agent" "dev" {
os = "windows"
arch = "arm64"
}
resource "null_resource" "dev" {
depends_on = [coder_agent.dev]
}

View File

@ -0,0 +1,36 @@
digraph {
compound = "true"
newrank = "true"
subgraph "root" {
"[root] coder_agent.dev (expand)" [label = "coder_agent.dev", shape = "box"]
"[root] data.coder_parameter.number_example (expand)" [label = "data.coder_parameter.number_example", shape = "box"]
"[root] data.coder_parameter.number_example_max (expand)" [label = "data.coder_parameter.number_example_max", shape = "box"]
"[root] data.coder_parameter.number_example_max_zero (expand)" [label = "data.coder_parameter.number_example_max_zero", shape = "box"]
"[root] data.coder_parameter.number_example_min (expand)" [label = "data.coder_parameter.number_example_min", shape = "box"]
"[root] data.coder_parameter.number_example_min_max (expand)" [label = "data.coder_parameter.number_example_min_max", shape = "box"]
"[root] data.coder_parameter.number_example_min_zero (expand)" [label = "data.coder_parameter.number_example_min_zero", shape = "box"]
"[root] null_resource.dev (expand)" [label = "null_resource.dev", shape = "box"]
"[root] provider[\"registry.terraform.io/coder/coder\"]" [label = "provider[\"registry.terraform.io/coder/coder\"]", shape = "diamond"]
"[root] provider[\"registry.terraform.io/hashicorp/null\"]" [label = "provider[\"registry.terraform.io/hashicorp/null\"]", shape = "diamond"]
"[root] coder_agent.dev (expand)" -> "[root] provider[\"registry.terraform.io/coder/coder\"]"
"[root] data.coder_parameter.number_example (expand)" -> "[root] provider[\"registry.terraform.io/coder/coder\"]"
"[root] data.coder_parameter.number_example_max (expand)" -> "[root] provider[\"registry.terraform.io/coder/coder\"]"
"[root] data.coder_parameter.number_example_max_zero (expand)" -> "[root] provider[\"registry.terraform.io/coder/coder\"]"
"[root] data.coder_parameter.number_example_min (expand)" -> "[root] provider[\"registry.terraform.io/coder/coder\"]"
"[root] data.coder_parameter.number_example_min_max (expand)" -> "[root] provider[\"registry.terraform.io/coder/coder\"]"
"[root] data.coder_parameter.number_example_min_zero (expand)" -> "[root] provider[\"registry.terraform.io/coder/coder\"]"
"[root] null_resource.dev (expand)" -> "[root] coder_agent.dev (expand)"
"[root] null_resource.dev (expand)" -> "[root] provider[\"registry.terraform.io/hashicorp/null\"]"
"[root] provider[\"registry.terraform.io/coder/coder\"] (close)" -> "[root] coder_agent.dev (expand)"
"[root] provider[\"registry.terraform.io/coder/coder\"] (close)" -> "[root] data.coder_parameter.number_example (expand)"
"[root] provider[\"registry.terraform.io/coder/coder\"] (close)" -> "[root] data.coder_parameter.number_example_max (expand)"
"[root] provider[\"registry.terraform.io/coder/coder\"] (close)" -> "[root] data.coder_parameter.number_example_max_zero (expand)"
"[root] provider[\"registry.terraform.io/coder/coder\"] (close)" -> "[root] data.coder_parameter.number_example_min (expand)"
"[root] provider[\"registry.terraform.io/coder/coder\"] (close)" -> "[root] data.coder_parameter.number_example_min_max (expand)"
"[root] provider[\"registry.terraform.io/coder/coder\"] (close)" -> "[root] data.coder_parameter.number_example_min_zero (expand)"
"[root] provider[\"registry.terraform.io/hashicorp/null\"] (close)" -> "[root] null_resource.dev (expand)"
"[root] root" -> "[root] provider[\"registry.terraform.io/coder/coder\"] (close)"
"[root] root" -> "[root] provider[\"registry.terraform.io/hashicorp/null\"] (close)"
}
}

View File

@ -0,0 +1,540 @@
{
"format_version": "1.1",
"terraform_version": "1.4.0",
"planned_values": {
"root_module": {
"resources": [
{
"address": "coder_agent.dev",
"mode": "managed",
"type": "coder_agent",
"name": "dev",
"provider_name": "registry.terraform.io/coder/coder",
"schema_version": 0,
"values": {
"arch": "arm64",
"auth": "token",
"connection_timeout": 120,
"dir": null,
"env": null,
"login_before_ready": true,
"metadata": [],
"motd_file": null,
"os": "windows",
"shutdown_script": null,
"shutdown_script_timeout": 300,
"startup_script": null,
"startup_script_timeout": 300,
"troubleshooting_url": null
},
"sensitive_values": {
"metadata": []
}
},
{
"address": "null_resource.dev",
"mode": "managed",
"type": "null_resource",
"name": "dev",
"provider_name": "registry.terraform.io/hashicorp/null",
"schema_version": 0,
"values": {
"triggers": null
},
"sensitive_values": {}
}
]
}
},
"resource_changes": [
{
"address": "coder_agent.dev",
"mode": "managed",
"type": "coder_agent",
"name": "dev",
"provider_name": "registry.terraform.io/coder/coder",
"change": {
"actions": [
"create"
],
"before": null,
"after": {
"arch": "arm64",
"auth": "token",
"connection_timeout": 120,
"dir": null,
"env": null,
"login_before_ready": true,
"metadata": [],
"motd_file": null,
"os": "windows",
"shutdown_script": null,
"shutdown_script_timeout": 300,
"startup_script": null,
"startup_script_timeout": 300,
"troubleshooting_url": null
},
"after_unknown": {
"id": true,
"init_script": true,
"metadata": [],
"token": true
},
"before_sensitive": false,
"after_sensitive": {
"metadata": [],
"token": true
}
}
},
{
"address": "null_resource.dev",
"mode": "managed",
"type": "null_resource",
"name": "dev",
"provider_name": "registry.terraform.io/hashicorp/null",
"change": {
"actions": [
"create"
],
"before": null,
"after": {
"triggers": null
},
"after_unknown": {
"id": true
},
"before_sensitive": false,
"after_sensitive": {}
}
}
],
"prior_state": {
"format_version": "1.0",
"terraform_version": "1.4.0",
"values": {
"root_module": {
"resources": [
{
"address": "data.coder_parameter.number_example",
"mode": "data",
"type": "coder_parameter",
"name": "number_example",
"provider_name": "registry.terraform.io/coder/coder",
"schema_version": 0,
"values": {
"default": "4",
"description": null,
"display_name": null,
"icon": null,
"id": "b4018ceb-5529-4ea9-8d44-f1435255f5ce",
"legacy_variable": null,
"legacy_variable_name": null,
"mutable": false,
"name": "number_example",
"option": null,
"optional": true,
"type": "number",
"validation": [],
"value": "4"
},
"sensitive_values": {
"validation": []
}
},
{
"address": "data.coder_parameter.number_example_max",
"mode": "data",
"type": "coder_parameter",
"name": "number_example_max",
"provider_name": "registry.terraform.io/coder/coder",
"schema_version": 0,
"values": {
"default": "4",
"description": null,
"display_name": null,
"icon": null,
"id": "78f023f8-d78a-4660-bc55-f4af607e9c92",
"legacy_variable": null,
"legacy_variable_name": null,
"mutable": false,
"name": "number_example_max",
"option": null,
"optional": true,
"type": "number",
"validation": [
{
"error": "",
"max": 6,
"max_disabled": false,
"min": 0,
"min_disabled": true,
"monotonic": "",
"regex": ""
}
],
"value": "4"
},
"sensitive_values": {
"validation": [
{}
]
}
},
{
"address": "data.coder_parameter.number_example_max_zero",
"mode": "data",
"type": "coder_parameter",
"name": "number_example_max_zero",
"provider_name": "registry.terraform.io/coder/coder",
"schema_version": 0,
"values": {
"default": "-3",
"description": null,
"display_name": null,
"icon": null,
"id": "d4dc1b09-51d8-4428-92e5-637ca7f23826",
"legacy_variable": null,
"legacy_variable_name": null,
"mutable": false,
"name": "number_example_max_zero",
"option": null,
"optional": true,
"type": "number",
"validation": [
{
"error": "",
"max": 0,
"max_disabled": false,
"min": 0,
"min_disabled": true,
"monotonic": "",
"regex": ""
}
],
"value": "-3"
},
"sensitive_values": {
"validation": [
{}
]
}
},
{
"address": "data.coder_parameter.number_example_min",
"mode": "data",
"type": "coder_parameter",
"name": "number_example_min",
"provider_name": "registry.terraform.io/coder/coder",
"schema_version": 0,
"values": {
"default": "4",
"description": null,
"display_name": null,
"icon": null,
"id": "7e0c0c5d-4c6f-44d3-aaae-31e6698d65d8",
"legacy_variable": null,
"legacy_variable_name": null,
"mutable": false,
"name": "number_example_min",
"option": null,
"optional": true,
"type": "number",
"validation": [
{
"error": "",
"max": 0,
"max_disabled": true,
"min": 3,
"min_disabled": false,
"monotonic": "",
"regex": ""
}
],
"value": "4"
},
"sensitive_values": {
"validation": [
{}
]
}
},
{
"address": "data.coder_parameter.number_example_min_max",
"mode": "data",
"type": "coder_parameter",
"name": "number_example_min_max",
"provider_name": "registry.terraform.io/coder/coder",
"schema_version": 0,
"values": {
"default": "4",
"description": null,
"display_name": null,
"icon": null,
"id": "1e9fe990-cc13-4cdb-84dd-ab198ffe8e8d",
"legacy_variable": null,
"legacy_variable_name": null,
"mutable": false,
"name": "number_example_min_max",
"option": null,
"optional": true,
"type": "number",
"validation": [
{
"error": "",
"max": 6,
"max_disabled": false,
"min": 3,
"min_disabled": false,
"monotonic": "",
"regex": ""
}
],
"value": "4"
},
"sensitive_values": {
"validation": [
{}
]
}
},
{
"address": "data.coder_parameter.number_example_min_zero",
"mode": "data",
"type": "coder_parameter",
"name": "number_example_min_zero",
"provider_name": "registry.terraform.io/coder/coder",
"schema_version": 0,
"values": {
"default": "4",
"description": null,
"display_name": null,
"icon": null,
"id": "a358e7b2-9ace-49fe-b94b-476f1a5e0fbd",
"legacy_variable": null,
"legacy_variable_name": null,
"mutable": false,
"name": "number_example_min_zero",
"option": null,
"optional": true,
"type": "number",
"validation": [
{
"error": "",
"max": 0,
"max_disabled": true,
"min": 0,
"min_disabled": false,
"monotonic": "",
"regex": ""
}
],
"value": "4"
},
"sensitive_values": {
"validation": [
{}
]
}
}
]
}
}
},
"configuration": {
"provider_config": {
"coder": {
"name": "coder",
"full_name": "registry.terraform.io/coder/coder",
"version_constraint": "0.8.2"
},
"null": {
"name": "null",
"full_name": "registry.terraform.io/hashicorp/null"
}
},
"root_module": {
"resources": [
{
"address": "coder_agent.dev",
"mode": "managed",
"type": "coder_agent",
"name": "dev",
"provider_config_key": "coder",
"expressions": {
"arch": {
"constant_value": "arm64"
},
"os": {
"constant_value": "windows"
}
},
"schema_version": 0
},
{
"address": "null_resource.dev",
"mode": "managed",
"type": "null_resource",
"name": "dev",
"provider_config_key": "null",
"schema_version": 0,
"depends_on": [
"coder_agent.dev"
]
},
{
"address": "data.coder_parameter.number_example",
"mode": "data",
"type": "coder_parameter",
"name": "number_example",
"provider_config_key": "coder",
"expressions": {
"default": {
"constant_value": 4
},
"name": {
"constant_value": "number_example"
},
"type": {
"constant_value": "number"
}
},
"schema_version": 0
},
{
"address": "data.coder_parameter.number_example_max",
"mode": "data",
"type": "coder_parameter",
"name": "number_example_max",
"provider_config_key": "coder",
"expressions": {
"default": {
"constant_value": 4
},
"name": {
"constant_value": "number_example_max"
},
"type": {
"constant_value": "number"
},
"validation": [
{
"max": {
"constant_value": 6
}
}
]
},
"schema_version": 0
},
{
"address": "data.coder_parameter.number_example_max_zero",
"mode": "data",
"type": "coder_parameter",
"name": "number_example_max_zero",
"provider_config_key": "coder",
"expressions": {
"default": {
"constant_value": -3
},
"name": {
"constant_value": "number_example_max_zero"
},
"type": {
"constant_value": "number"
},
"validation": [
{
"max": {
"constant_value": 0
}
}
]
},
"schema_version": 0
},
{
"address": "data.coder_parameter.number_example_min",
"mode": "data",
"type": "coder_parameter",
"name": "number_example_min",
"provider_config_key": "coder",
"expressions": {
"default": {
"constant_value": 4
},
"name": {
"constant_value": "number_example_min"
},
"type": {
"constant_value": "number"
},
"validation": [
{
"min": {
"constant_value": 3
}
}
]
},
"schema_version": 0
},
{
"address": "data.coder_parameter.number_example_min_max",
"mode": "data",
"type": "coder_parameter",
"name": "number_example_min_max",
"provider_config_key": "coder",
"expressions": {
"default": {
"constant_value": 4
},
"name": {
"constant_value": "number_example_min_max"
},
"type": {
"constant_value": "number"
},
"validation": [
{
"max": {
"constant_value": 6
},
"min": {
"constant_value": 3
}
}
]
},
"schema_version": 0
},
{
"address": "data.coder_parameter.number_example_min_zero",
"mode": "data",
"type": "coder_parameter",
"name": "number_example_min_zero",
"provider_config_key": "coder",
"expressions": {
"default": {
"constant_value": 4
},
"name": {
"constant_value": "number_example_min_zero"
},
"type": {
"constant_value": "number"
},
"validation": [
{
"min": {
"constant_value": 0
}
}
]
},
"schema_version": 0
}
]
}
}
}

View File

@ -0,0 +1,36 @@
digraph {
compound = "true"
newrank = "true"
subgraph "root" {
"[root] coder_agent.dev (expand)" [label = "coder_agent.dev", shape = "box"]
"[root] data.coder_parameter.number_example (expand)" [label = "data.coder_parameter.number_example", shape = "box"]
"[root] data.coder_parameter.number_example_max (expand)" [label = "data.coder_parameter.number_example_max", shape = "box"]
"[root] data.coder_parameter.number_example_max_zero (expand)" [label = "data.coder_parameter.number_example_max_zero", shape = "box"]
"[root] data.coder_parameter.number_example_min (expand)" [label = "data.coder_parameter.number_example_min", shape = "box"]
"[root] data.coder_parameter.number_example_min_max (expand)" [label = "data.coder_parameter.number_example_min_max", shape = "box"]
"[root] data.coder_parameter.number_example_min_zero (expand)" [label = "data.coder_parameter.number_example_min_zero", shape = "box"]
"[root] null_resource.dev (expand)" [label = "null_resource.dev", shape = "box"]
"[root] provider[\"registry.terraform.io/coder/coder\"]" [label = "provider[\"registry.terraform.io/coder/coder\"]", shape = "diamond"]
"[root] provider[\"registry.terraform.io/hashicorp/null\"]" [label = "provider[\"registry.terraform.io/hashicorp/null\"]", shape = "diamond"]
"[root] coder_agent.dev (expand)" -> "[root] provider[\"registry.terraform.io/coder/coder\"]"
"[root] data.coder_parameter.number_example (expand)" -> "[root] provider[\"registry.terraform.io/coder/coder\"]"
"[root] data.coder_parameter.number_example_max (expand)" -> "[root] provider[\"registry.terraform.io/coder/coder\"]"
"[root] data.coder_parameter.number_example_max_zero (expand)" -> "[root] provider[\"registry.terraform.io/coder/coder\"]"
"[root] data.coder_parameter.number_example_min (expand)" -> "[root] provider[\"registry.terraform.io/coder/coder\"]"
"[root] data.coder_parameter.number_example_min_max (expand)" -> "[root] provider[\"registry.terraform.io/coder/coder\"]"
"[root] data.coder_parameter.number_example_min_zero (expand)" -> "[root] provider[\"registry.terraform.io/coder/coder\"]"
"[root] null_resource.dev (expand)" -> "[root] coder_agent.dev (expand)"
"[root] null_resource.dev (expand)" -> "[root] provider[\"registry.terraform.io/hashicorp/null\"]"
"[root] provider[\"registry.terraform.io/coder/coder\"] (close)" -> "[root] coder_agent.dev (expand)"
"[root] provider[\"registry.terraform.io/coder/coder\"] (close)" -> "[root] data.coder_parameter.number_example (expand)"
"[root] provider[\"registry.terraform.io/coder/coder\"] (close)" -> "[root] data.coder_parameter.number_example_max (expand)"
"[root] provider[\"registry.terraform.io/coder/coder\"] (close)" -> "[root] data.coder_parameter.number_example_max_zero (expand)"
"[root] provider[\"registry.terraform.io/coder/coder\"] (close)" -> "[root] data.coder_parameter.number_example_min (expand)"
"[root] provider[\"registry.terraform.io/coder/coder\"] (close)" -> "[root] data.coder_parameter.number_example_min_max (expand)"
"[root] provider[\"registry.terraform.io/coder/coder\"] (close)" -> "[root] data.coder_parameter.number_example_min_zero (expand)"
"[root] provider[\"registry.terraform.io/hashicorp/null\"] (close)" -> "[root] null_resource.dev (expand)"
"[root] root" -> "[root] provider[\"registry.terraform.io/coder/coder\"] (close)"
"[root] root" -> "[root] provider[\"registry.terraform.io/hashicorp/null\"] (close)"
}
}

View File

@ -0,0 +1,278 @@
{
"format_version": "1.0",
"terraform_version": "1.4.0",
"values": {
"root_module": {
"resources": [
{
"address": "data.coder_parameter.number_example",
"mode": "data",
"type": "coder_parameter",
"name": "number_example",
"provider_name": "registry.terraform.io/coder/coder",
"schema_version": 0,
"values": {
"default": "4",
"description": null,
"display_name": null,
"icon": null,
"id": "2ba8e573-2f49-4a2a-b454-1fd544b7d50c",
"legacy_variable": null,
"legacy_variable_name": null,
"mutable": false,
"name": "number_example",
"option": null,
"optional": true,
"type": "number",
"validation": [],
"value": "4"
},
"sensitive_values": {
"validation": []
}
},
{
"address": "data.coder_parameter.number_example_max",
"mode": "data",
"type": "coder_parameter",
"name": "number_example_max",
"provider_name": "registry.terraform.io/coder/coder",
"schema_version": 0,
"values": {
"default": "4",
"description": null,
"display_name": null,
"icon": null,
"id": "7f94ec1c-7ad9-42ee-8efe-ade93e45a23f",
"legacy_variable": null,
"legacy_variable_name": null,
"mutable": false,
"name": "number_example_max",
"option": null,
"optional": true,
"type": "number",
"validation": [
{
"error": "",
"max": 6,
"max_disabled": false,
"min": 0,
"min_disabled": true,
"monotonic": "",
"regex": ""
}
],
"value": "4"
},
"sensitive_values": {
"validation": [
{}
]
}
},
{
"address": "data.coder_parameter.number_example_max_zero",
"mode": "data",
"type": "coder_parameter",
"name": "number_example_max_zero",
"provider_name": "registry.terraform.io/coder/coder",
"schema_version": 0,
"values": {
"default": "-3",
"description": null,
"display_name": null,
"icon": null,
"id": "03793f75-22ba-4232-ae8b-dcc34f34a9dc",
"legacy_variable": null,
"legacy_variable_name": null,
"mutable": false,
"name": "number_example_max_zero",
"option": null,
"optional": true,
"type": "number",
"validation": [
{
"error": "",
"max": 0,
"max_disabled": false,
"min": 0,
"min_disabled": true,
"monotonic": "",
"regex": ""
}
],
"value": "-3"
},
"sensitive_values": {
"validation": [
{}
]
}
},
{
"address": "data.coder_parameter.number_example_min",
"mode": "data",
"type": "coder_parameter",
"name": "number_example_min",
"provider_name": "registry.terraform.io/coder/coder",
"schema_version": 0,
"values": {
"default": "4",
"description": null,
"display_name": null,
"icon": null,
"id": "822879a8-5ee0-46c7-984d-b4efc9e70bcf",
"legacy_variable": null,
"legacy_variable_name": null,
"mutable": false,
"name": "number_example_min",
"option": null,
"optional": true,
"type": "number",
"validation": [
{
"error": "",
"max": 0,
"max_disabled": true,
"min": 3,
"min_disabled": false,
"monotonic": "",
"regex": ""
}
],
"value": "4"
},
"sensitive_values": {
"validation": [
{}
]
}
},
{
"address": "data.coder_parameter.number_example_min_max",
"mode": "data",
"type": "coder_parameter",
"name": "number_example_min_max",
"provider_name": "registry.terraform.io/coder/coder",
"schema_version": 0,
"values": {
"default": "4",
"description": null,
"display_name": null,
"icon": null,
"id": "a59a1652-653b-424e-8106-b19f938ac556",
"legacy_variable": null,
"legacy_variable_name": null,
"mutable": false,
"name": "number_example_min_max",
"option": null,
"optional": true,
"type": "number",
"validation": [
{
"error": "",
"max": 6,
"max_disabled": false,
"min": 3,
"min_disabled": false,
"monotonic": "",
"regex": ""
}
],
"value": "4"
},
"sensitive_values": {
"validation": [
{}
]
}
},
{
"address": "data.coder_parameter.number_example_min_zero",
"mode": "data",
"type": "coder_parameter",
"name": "number_example_min_zero",
"provider_name": "registry.terraform.io/coder/coder",
"schema_version": 0,
"values": {
"default": "4",
"description": null,
"display_name": null,
"icon": null,
"id": "65c5512e-6c5c-40eb-bb2c-bca47f72564b",
"legacy_variable": null,
"legacy_variable_name": null,
"mutable": false,
"name": "number_example_min_zero",
"option": null,
"optional": true,
"type": "number",
"validation": [
{
"error": "",
"max": 0,
"max_disabled": true,
"min": 0,
"min_disabled": false,
"monotonic": "",
"regex": ""
}
],
"value": "4"
},
"sensitive_values": {
"validation": [
{}
]
}
},
{
"address": "coder_agent.dev",
"mode": "managed",
"type": "coder_agent",
"name": "dev",
"provider_name": "registry.terraform.io/coder/coder",
"schema_version": 0,
"values": {
"arch": "arm64",
"auth": "token",
"connection_timeout": 120,
"dir": null,
"env": null,
"id": "6cddf19d-3caa-47dd-b4a8-6a6ac423caf2",
"init_script": "",
"login_before_ready": true,
"metadata": [],
"motd_file": null,
"os": "windows",
"shutdown_script": null,
"shutdown_script_timeout": 300,
"startup_script": null,
"startup_script_timeout": 300,
"token": "19f956f2-92b2-4fd9-8a89-ed3ec5c23716",
"troubleshooting_url": null
},
"sensitive_values": {
"metadata": []
}
},
{
"address": "null_resource.dev",
"mode": "managed",
"type": "null_resource",
"name": "dev",
"provider_name": "registry.terraform.io/hashicorp/null",
"schema_version": 0,
"values": {
"id": "6499191613757287225",
"triggers": null
},
"sensitive_values": {},
"depends_on": [
"coder_agent.dev"
]
}
]
}
}
}

View File

@ -2,7 +2,7 @@ terraform {
required_providers {
coder = {
source = "coder/coder"
version = "0.6.20"
version = "0.7.0"
}
}
}
@ -27,6 +27,43 @@ data "coder_parameter" "example" {
}
}
// Plugin revision v0.7.0 requires defining "min" or "max" rules together.
data "coder_parameter" "number_example_min_max" {
name = "number_example_min_max"
type = "number"
default = 4
validation {
min = 3
max = 6
}
}
data "coder_parameter" "number_example_min_zero" {
name = "number_example_min_zero"
type = "number"
default = 4
validation {
min = 0
max = 6
}
}
data "coder_parameter" "number_example_max_zero" {
name = "number_example_max_zero"
type = "number"
default = -2
validation {
min = -3
max = 0
}
}
data "coder_parameter" "number_example" {
name = "number_example"
type = "number"
default = 4
}
resource "coder_agent" "dev" {
os = "windows"
arch = "arm64"

View File

@ -4,17 +4,29 @@ digraph {
subgraph "root" {
"[root] coder_agent.dev (expand)" [label = "coder_agent.dev", shape = "box"]
"[root] data.coder_parameter.example (expand)" [label = "data.coder_parameter.example", shape = "box"]
"[root] data.coder_parameter.number_example (expand)" [label = "data.coder_parameter.number_example", shape = "box"]
"[root] data.coder_parameter.number_example_max_zero (expand)" [label = "data.coder_parameter.number_example_max_zero", shape = "box"]
"[root] data.coder_parameter.number_example_min_max (expand)" [label = "data.coder_parameter.number_example_min_max", shape = "box"]
"[root] data.coder_parameter.number_example_min_zero (expand)" [label = "data.coder_parameter.number_example_min_zero", shape = "box"]
"[root] data.coder_parameter.sample (expand)" [label = "data.coder_parameter.sample", shape = "box"]
"[root] null_resource.dev (expand)" [label = "null_resource.dev", shape = "box"]
"[root] provider[\"registry.terraform.io/coder/coder\"]" [label = "provider[\"registry.terraform.io/coder/coder\"]", shape = "diamond"]
"[root] provider[\"registry.terraform.io/hashicorp/null\"]" [label = "provider[\"registry.terraform.io/hashicorp/null\"]", shape = "diamond"]
"[root] coder_agent.dev (expand)" -> "[root] provider[\"registry.terraform.io/coder/coder\"]"
"[root] data.coder_parameter.example (expand)" -> "[root] provider[\"registry.terraform.io/coder/coder\"]"
"[root] data.coder_parameter.number_example (expand)" -> "[root] provider[\"registry.terraform.io/coder/coder\"]"
"[root] data.coder_parameter.number_example_max_zero (expand)" -> "[root] provider[\"registry.terraform.io/coder/coder\"]"
"[root] data.coder_parameter.number_example_min_max (expand)" -> "[root] provider[\"registry.terraform.io/coder/coder\"]"
"[root] data.coder_parameter.number_example_min_zero (expand)" -> "[root] provider[\"registry.terraform.io/coder/coder\"]"
"[root] data.coder_parameter.sample (expand)" -> "[root] provider[\"registry.terraform.io/coder/coder\"]"
"[root] null_resource.dev (expand)" -> "[root] coder_agent.dev (expand)"
"[root] null_resource.dev (expand)" -> "[root] provider[\"registry.terraform.io/hashicorp/null\"]"
"[root] provider[\"registry.terraform.io/coder/coder\"] (close)" -> "[root] coder_agent.dev (expand)"
"[root] provider[\"registry.terraform.io/coder/coder\"] (close)" -> "[root] data.coder_parameter.example (expand)"
"[root] provider[\"registry.terraform.io/coder/coder\"] (close)" -> "[root] data.coder_parameter.number_example (expand)"
"[root] provider[\"registry.terraform.io/coder/coder\"] (close)" -> "[root] data.coder_parameter.number_example_max_zero (expand)"
"[root] provider[\"registry.terraform.io/coder/coder\"] (close)" -> "[root] data.coder_parameter.number_example_min_max (expand)"
"[root] provider[\"registry.terraform.io/coder/coder\"] (close)" -> "[root] data.coder_parameter.number_example_min_zero (expand)"
"[root] provider[\"registry.terraform.io/coder/coder\"] (close)" -> "[root] data.coder_parameter.sample (expand)"
"[root] provider[\"registry.terraform.io/hashicorp/null\"] (close)" -> "[root] null_resource.dev (expand)"
"[root] root" -> "[root] provider[\"registry.terraform.io/coder/coder\"] (close)"

View File

@ -1,6 +1,6 @@
{
"format_version": "1.1",
"terraform_version": "1.3.7",
"terraform_version": "1.4.0",
"planned_values": {
"root_module": {
"resources": [
@ -18,6 +18,7 @@
"dir": null,
"env": null,
"login_before_ready": true,
"metadata": [],
"motd_file": null,
"os": "windows",
"shutdown_script": null,
@ -26,7 +27,9 @@
"startup_script_timeout": 300,
"troubleshooting_url": null
},
"sensitive_values": {}
"sensitive_values": {
"metadata": []
}
},
{
"address": "null_resource.dev",
@ -62,6 +65,7 @@
"dir": null,
"env": null,
"login_before_ready": true,
"metadata": [],
"motd_file": null,
"os": "windows",
"shutdown_script": null,
@ -73,10 +77,12 @@
"after_unknown": {
"id": true,
"init_script": true,
"metadata": [],
"token": true
},
"before_sensitive": false,
"after_sensitive": {
"metadata": [],
"token": true
}
}
@ -105,7 +111,7 @@
],
"prior_state": {
"format_version": "1.0",
"terraform_version": "1.3.7",
"terraform_version": "1.4.0",
"values": {
"root_module": {
"resources": [
@ -119,8 +125,9 @@
"values": {
"default": null,
"description": null,
"display_name": null,
"icon": null,
"id": "857b1591-ee42-4ded-9804-783ffd1eb180",
"id": "62a57280-032d-4528-9705-c663e6971d9d",
"legacy_variable": null,
"legacy_variable_name": null,
"mutable": false,
@ -151,6 +158,142 @@
]
}
},
{
"address": "data.coder_parameter.number_example",
"mode": "data",
"type": "coder_parameter",
"name": "number_example",
"provider_name": "registry.terraform.io/coder/coder",
"schema_version": 0,
"values": {
"default": "4",
"description": null,
"display_name": null,
"icon": null,
"id": "37b849a7-1830-4662-b804-e23a6fb0a0dd",
"legacy_variable": null,
"legacy_variable_name": null,
"mutable": false,
"name": "number_example",
"option": null,
"optional": true,
"type": "number",
"validation": null,
"value": "4"
},
"sensitive_values": {}
},
{
"address": "data.coder_parameter.number_example_max_zero",
"mode": "data",
"type": "coder_parameter",
"name": "number_example_max_zero",
"provider_name": "registry.terraform.io/coder/coder",
"schema_version": 0,
"values": {
"default": "-2",
"description": null,
"display_name": null,
"icon": null,
"id": "21eddf29-7529-4ea4-9416-c0c6c156c3ad",
"legacy_variable": null,
"legacy_variable_name": null,
"mutable": false,
"name": "number_example_max_zero",
"option": null,
"optional": true,
"type": "number",
"validation": [
{
"error": "",
"max": 0,
"min": -3,
"monotonic": "",
"regex": ""
}
],
"value": "-2"
},
"sensitive_values": {
"validation": [
{}
]
}
},
{
"address": "data.coder_parameter.number_example_min_max",
"mode": "data",
"type": "coder_parameter",
"name": "number_example_min_max",
"provider_name": "registry.terraform.io/coder/coder",
"schema_version": 0,
"values": {
"default": "4",
"description": null,
"display_name": null,
"icon": null,
"id": "826afb7f-80fe-4563-95d3-1f8da1f8c274",
"legacy_variable": null,
"legacy_variable_name": null,
"mutable": false,
"name": "number_example_min_max",
"option": null,
"optional": true,
"type": "number",
"validation": [
{
"error": "",
"max": 6,
"min": 3,
"monotonic": "",
"regex": ""
}
],
"value": "4"
},
"sensitive_values": {
"validation": [
{}
]
}
},
{
"address": "data.coder_parameter.number_example_min_zero",
"mode": "data",
"type": "coder_parameter",
"name": "number_example_min_zero",
"provider_name": "registry.terraform.io/coder/coder",
"schema_version": 0,
"values": {
"default": "4",
"description": null,
"display_name": null,
"icon": null,
"id": "9656b8ff-4e7b-4ba0-8377-569b358ff110",
"legacy_variable": null,
"legacy_variable_name": null,
"mutable": false,
"name": "number_example_min_zero",
"option": null,
"optional": true,
"type": "number",
"validation": [
{
"error": "",
"max": 6,
"min": 0,
"monotonic": "",
"regex": ""
}
],
"value": "4"
},
"sensitive_values": {
"validation": [
{}
]
}
},
{
"address": "data.coder_parameter.sample",
"mode": "data",
@ -161,8 +304,9 @@
"values": {
"default": "ok",
"description": "blah blah",
"display_name": null,
"icon": null,
"id": "1477c44d-b36a-48cd-9942-0b532f1791db",
"id": "07dd798d-22fe-437d-ae78-2092d01f4b0b",
"legacy_variable": null,
"legacy_variable_name": null,
"mutable": false,
@ -184,7 +328,7 @@
"coder": {
"name": "coder",
"full_name": "registry.terraform.io/coder/coder",
"version_constraint": "0.6.20"
"version_constraint": "0.7.0"
},
"null": {
"name": "null",
@ -254,6 +398,112 @@
},
"schema_version": 0
},
{
"address": "data.coder_parameter.number_example",
"mode": "data",
"type": "coder_parameter",
"name": "number_example",
"provider_config_key": "coder",
"expressions": {
"default": {
"constant_value": 4
},
"name": {
"constant_value": "number_example"
},
"type": {
"constant_value": "number"
}
},
"schema_version": 0
},
{
"address": "data.coder_parameter.number_example_max_zero",
"mode": "data",
"type": "coder_parameter",
"name": "number_example_max_zero",
"provider_config_key": "coder",
"expressions": {
"default": {
"constant_value": -2
},
"name": {
"constant_value": "number_example_max_zero"
},
"type": {
"constant_value": "number"
},
"validation": [
{
"max": {
"constant_value": 0
},
"min": {
"constant_value": -3
}
}
]
},
"schema_version": 0
},
{
"address": "data.coder_parameter.number_example_min_max",
"mode": "data",
"type": "coder_parameter",
"name": "number_example_min_max",
"provider_config_key": "coder",
"expressions": {
"default": {
"constant_value": 4
},
"name": {
"constant_value": "number_example_min_max"
},
"type": {
"constant_value": "number"
},
"validation": [
{
"max": {
"constant_value": 6
},
"min": {
"constant_value": 3
}
}
]
},
"schema_version": 0
},
{
"address": "data.coder_parameter.number_example_min_zero",
"mode": "data",
"type": "coder_parameter",
"name": "number_example_min_zero",
"provider_config_key": "coder",
"expressions": {
"default": {
"constant_value": 4
},
"name": {
"constant_value": "number_example_min_zero"
},
"type": {
"constant_value": "number"
},
"validation": [
{
"max": {
"constant_value": 6
},
"min": {
"constant_value": 0
}
}
]
},
"schema_version": 0
},
{
"address": "data.coder_parameter.sample",
"mode": "data",

View File

@ -4,17 +4,29 @@ digraph {
subgraph "root" {
"[root] coder_agent.dev (expand)" [label = "coder_agent.dev", shape = "box"]
"[root] data.coder_parameter.example (expand)" [label = "data.coder_parameter.example", shape = "box"]
"[root] data.coder_parameter.number_example (expand)" [label = "data.coder_parameter.number_example", shape = "box"]
"[root] data.coder_parameter.number_example_max_zero (expand)" [label = "data.coder_parameter.number_example_max_zero", shape = "box"]
"[root] data.coder_parameter.number_example_min_max (expand)" [label = "data.coder_parameter.number_example_min_max", shape = "box"]
"[root] data.coder_parameter.number_example_min_zero (expand)" [label = "data.coder_parameter.number_example_min_zero", shape = "box"]
"[root] data.coder_parameter.sample (expand)" [label = "data.coder_parameter.sample", shape = "box"]
"[root] null_resource.dev (expand)" [label = "null_resource.dev", shape = "box"]
"[root] provider[\"registry.terraform.io/coder/coder\"]" [label = "provider[\"registry.terraform.io/coder/coder\"]", shape = "diamond"]
"[root] provider[\"registry.terraform.io/hashicorp/null\"]" [label = "provider[\"registry.terraform.io/hashicorp/null\"]", shape = "diamond"]
"[root] coder_agent.dev (expand)" -> "[root] provider[\"registry.terraform.io/coder/coder\"]"
"[root] data.coder_parameter.example (expand)" -> "[root] provider[\"registry.terraform.io/coder/coder\"]"
"[root] data.coder_parameter.number_example (expand)" -> "[root] provider[\"registry.terraform.io/coder/coder\"]"
"[root] data.coder_parameter.number_example_max_zero (expand)" -> "[root] provider[\"registry.terraform.io/coder/coder\"]"
"[root] data.coder_parameter.number_example_min_max (expand)" -> "[root] provider[\"registry.terraform.io/coder/coder\"]"
"[root] data.coder_parameter.number_example_min_zero (expand)" -> "[root] provider[\"registry.terraform.io/coder/coder\"]"
"[root] data.coder_parameter.sample (expand)" -> "[root] provider[\"registry.terraform.io/coder/coder\"]"
"[root] null_resource.dev (expand)" -> "[root] coder_agent.dev (expand)"
"[root] null_resource.dev (expand)" -> "[root] provider[\"registry.terraform.io/hashicorp/null\"]"
"[root] provider[\"registry.terraform.io/coder/coder\"] (close)" -> "[root] coder_agent.dev (expand)"
"[root] provider[\"registry.terraform.io/coder/coder\"] (close)" -> "[root] data.coder_parameter.example (expand)"
"[root] provider[\"registry.terraform.io/coder/coder\"] (close)" -> "[root] data.coder_parameter.number_example (expand)"
"[root] provider[\"registry.terraform.io/coder/coder\"] (close)" -> "[root] data.coder_parameter.number_example_max_zero (expand)"
"[root] provider[\"registry.terraform.io/coder/coder\"] (close)" -> "[root] data.coder_parameter.number_example_min_max (expand)"
"[root] provider[\"registry.terraform.io/coder/coder\"] (close)" -> "[root] data.coder_parameter.number_example_min_zero (expand)"
"[root] provider[\"registry.terraform.io/coder/coder\"] (close)" -> "[root] data.coder_parameter.sample (expand)"
"[root] provider[\"registry.terraform.io/hashicorp/null\"] (close)" -> "[root] null_resource.dev (expand)"
"[root] root" -> "[root] provider[\"registry.terraform.io/coder/coder\"] (close)"

View File

@ -1,36 +1,9 @@
{
"format_version": "1.0",
"terraform_version": "1.3.7",
"terraform_version": "1.4.0",
"values": {
"root_module": {
"resources": [
{
"address": "coder_agent.dev",
"mode": "managed",
"type": "coder_agent",
"name": "dev",
"provider_name": "registry.terraform.io/coder/coder",
"schema_version": 0,
"values": {
"arch": "arm64",
"auth": "token",
"connection_timeout": 120,
"dir": null,
"env": null,
"id": "c2221717-e813-49f0-a655-4cb7aa5265e2",
"init_script": "",
"login_before_ready": true,
"motd_file": null,
"os": "windows",
"shutdown_script": null,
"shutdown_script_timeout": 300,
"startup_script": null,
"startup_script_timeout": 300,
"token": "fdb94db8-fca1-4a13-bbcb-73bfaec95b77",
"troubleshooting_url": null
},
"sensitive_values": {}
},
{
"address": "data.coder_parameter.example",
"mode": "data",
@ -41,8 +14,9 @@
"values": {
"default": null,
"description": null,
"display_name": null,
"icon": null,
"id": "f5f644c9-cb0c-47b1-8e02-d9f6fa99b935",
"id": "5860f577-b0e7-4bb6-a4de-9de71a801ba0",
"legacy_variable": null,
"legacy_variable_name": null,
"mutable": false,
@ -73,6 +47,142 @@
]
}
},
{
"address": "data.coder_parameter.number_example",
"mode": "data",
"type": "coder_parameter",
"name": "number_example",
"provider_name": "registry.terraform.io/coder/coder",
"schema_version": 0,
"values": {
"default": "4",
"description": null,
"display_name": null,
"icon": null,
"id": "ecac8658-4def-424a-a24e-0a8c906cf8e8",
"legacy_variable": null,
"legacy_variable_name": null,
"mutable": false,
"name": "number_example",
"option": null,
"optional": true,
"type": "number",
"validation": null,
"value": "4"
},
"sensitive_values": {}
},
{
"address": "data.coder_parameter.number_example_max_zero",
"mode": "data",
"type": "coder_parameter",
"name": "number_example_max_zero",
"provider_name": "registry.terraform.io/coder/coder",
"schema_version": 0,
"values": {
"default": "-2",
"description": null,
"display_name": null,
"icon": null,
"id": "6996b908-2bd9-4043-8821-59aada8fa202",
"legacy_variable": null,
"legacy_variable_name": null,
"mutable": false,
"name": "number_example_max_zero",
"option": null,
"optional": true,
"type": "number",
"validation": [
{
"error": "",
"max": 0,
"min": -3,
"monotonic": "",
"regex": ""
}
],
"value": "-2"
},
"sensitive_values": {
"validation": [
{}
]
}
},
{
"address": "data.coder_parameter.number_example_min_max",
"mode": "data",
"type": "coder_parameter",
"name": "number_example_min_max",
"provider_name": "registry.terraform.io/coder/coder",
"schema_version": 0,
"values": {
"default": "4",
"description": null,
"display_name": null,
"icon": null,
"id": "a368fde8-b9ab-479f-92fb-776f4d5d3e53",
"legacy_variable": null,
"legacy_variable_name": null,
"mutable": false,
"name": "number_example_min_max",
"option": null,
"optional": true,
"type": "number",
"validation": [
{
"error": "",
"max": 6,
"min": 3,
"monotonic": "",
"regex": ""
}
],
"value": "4"
},
"sensitive_values": {
"validation": [
{}
]
}
},
{
"address": "data.coder_parameter.number_example_min_zero",
"mode": "data",
"type": "coder_parameter",
"name": "number_example_min_zero",
"provider_name": "registry.terraform.io/coder/coder",
"schema_version": 0,
"values": {
"default": "4",
"description": null,
"display_name": null,
"icon": null,
"id": "55ff394f-995a-43d8-b05f-9fbf72f62d18",
"legacy_variable": null,
"legacy_variable_name": null,
"mutable": false,
"name": "number_example_min_zero",
"option": null,
"optional": true,
"type": "number",
"validation": [
{
"error": "",
"max": 6,
"min": 0,
"monotonic": "",
"regex": ""
}
],
"value": "4"
},
"sensitive_values": {
"validation": [
{}
]
}
},
{
"address": "data.coder_parameter.sample",
"mode": "data",
@ -83,8 +193,9 @@
"values": {
"default": "ok",
"description": "blah blah",
"display_name": null,
"icon": null,
"id": "e2944252-1c30-43c8-9ce3-53a9755030dc",
"id": "6a1fb6c7-eb4d-443b-9968-1813668794d0",
"legacy_variable": null,
"legacy_variable_name": null,
"mutable": false,
@ -97,6 +208,36 @@
},
"sensitive_values": {}
},
{
"address": "coder_agent.dev",
"mode": "managed",
"type": "coder_agent",
"name": "dev",
"provider_name": "registry.terraform.io/coder/coder",
"schema_version": 0,
"values": {
"arch": "arm64",
"auth": "token",
"connection_timeout": 120,
"dir": null,
"env": null,
"id": "9e190fb1-8087-4c64-b99d-1e0bd1067ed8",
"init_script": "",
"login_before_ready": true,
"metadata": [],
"motd_file": null,
"os": "windows",
"shutdown_script": null,
"shutdown_script_timeout": 300,
"startup_script": null,
"startup_script_timeout": 300,
"token": "1e09aaa2-0700-4968-abbd-0b8ab8f9fefc",
"troubleshooting_url": null
},
"sensitive_values": {
"metadata": []
}
},
{
"address": "null_resource.dev",
"mode": "managed",
@ -105,7 +246,7 @@
"provider_name": "registry.terraform.io/hashicorp/null",
"schema_version": 0,
"values": {
"id": "5032149403215603103",
"id": "7817924891856217249",
"triggers": null
},
"sensitive_values": {},