diff --git a/cli/create.go b/cli/create.go index a7673a87d858b..7fe25754847c3 100644 --- a/cli/create.go +++ b/cli/create.go @@ -23,8 +23,6 @@ func (r *RootCmd) create() *clibase.Cmd { startAt string stopAfter time.Duration workspaceName string - - parameterFlags workspaceParameterFlags ) client := new(codersdk.Client) cmd := &clibase.Cmd{ @@ -135,7 +133,6 @@ func (r *RootCmd) create() *clibase.Cmd { Template: template, RichParameterFile: richParameterFile, NewWorkspaceName: workspaceName, - BuildOptions: parameterFlags.buildOptions, }) if err != nil { return xerrors.Errorf("prepare build: %w", err) @@ -204,8 +201,6 @@ func (r *RootCmd) create() *clibase.Cmd { }, cliui.SkipPromptOption(), ) - cmd.Options = append(cmd.Options, parameterFlags.options()...) - return cmd } diff --git a/cli/create_test.go b/cli/create_test.go index 2e6df97443f54..8f2bb6719a377 100644 --- a/cli/create_test.go +++ b/cli/create_test.go @@ -252,10 +252,6 @@ func TestCreateWithRichParameters(t *testing.T) { secondParameterDescription = "This is second parameter" secondParameterValue = "2" - ephemeralParameterName = "ephemeral_parameter" - ephemeralParameterDescription = "This is ephemeral parameter" - ephemeralParameterValue = "3" - immutableParameterName = "third_parameter" immutableParameterDescription = "This is not mutable parameter" immutableParameterValue = "4" @@ -270,7 +266,6 @@ func TestCreateWithRichParameters(t *testing.T) { Parameters: []*proto.RichParameter{ {Name: firstParameterName, Description: firstParameterDescription, Mutable: true}, {Name: secondParameterName, DisplayName: secondParameterDisplayName, Description: secondParameterDescription, Mutable: true}, - {Name: ephemeralParameterName, Description: ephemeralParameterDescription, Mutable: true, Ephemeral: true}, {Name: immutableParameterName, Description: immutableParameterDescription, Mutable: false}, }, }, @@ -362,60 +357,6 @@ func TestCreateWithRichParameters(t *testing.T) { } <-doneChan }) - - t.Run("BuildOptions", func(t *testing.T) { - t.Parallel() - - client := coderdtest.New(t, &coderdtest.Options{IncludeProvisionerDaemon: true}) - user := coderdtest.CreateFirstUser(t, client) - version := coderdtest.CreateTemplateVersion(t, client, user.OrganizationID, echoResponses) - coderdtest.AwaitTemplateVersionJob(t, client, version.ID) - - template := coderdtest.CreateTemplate(t, client, user.OrganizationID, version.ID) - - const workspaceName = "my-workspace" - inv, root := clitest.New(t, "create", workspaceName, "--template", template.Name, "--build-options") - clitest.SetupConfig(t, client, root) - doneChan := make(chan struct{}) - pty := ptytest.New(t).Attach(inv) - go func() { - defer close(doneChan) - err := inv.Run() - assert.NoError(t, err) - }() - - matches := []string{ - ephemeralParameterDescription, ephemeralParameterValue, - firstParameterDescription, firstParameterValue, - secondParameterDisplayName, "", - secondParameterDescription, secondParameterValue, - immutableParameterDescription, immutableParameterValue, - "Confirm create?", "yes", - } - for i := 0; i < len(matches); i += 2 { - match := matches[i] - value := matches[i+1] - pty.ExpectMatch(match) - - if value != "" { - pty.WriteLine(value) - } - } - <-doneChan - - // Verify if build option is set - ctx, cancel := context.WithTimeout(context.Background(), testutil.WaitShort) - defer cancel() - - workspace, err := client.WorkspaceByOwnerAndName(ctx, user.UserID.String(), workspaceName, codersdk.WorkspaceOptions{}) - require.NoError(t, err) - actualParameters, err := client.WorkspaceBuildParameters(ctx, workspace.LatestBuild.ID) - require.NoError(t, err) - require.Contains(t, actualParameters, codersdk.WorkspaceBuildParameter{ - Name: ephemeralParameterName, - Value: ephemeralParameterValue, - }) - }) } func TestCreateValidateRichParameters(t *testing.T) { diff --git a/cli/start.go b/cli/start.go index b576921c28068..5bd35867fd105 100644 --- a/cli/start.go +++ b/cli/start.go @@ -11,7 +11,7 @@ import ( "github.com/coder/coder/codersdk" ) -// workspaceParameterFlags are used by "start", "restart", "create", and "update". +// workspaceParameterFlags are used by "start", "restart", and "update". type workspaceParameterFlags struct { buildOptions bool } diff --git a/cli/testdata/coder_create_--help.golden b/cli/testdata/coder_create_--help.golden index be40c4907b2b4..6c8bcc46908c9 100644 --- a/cli/testdata/coder_create_--help.golden +++ b/cli/testdata/coder_create_--help.golden @@ -7,9 +7,6 @@ Create a workspace  $ coder create /  Options - --build-options bool - Prompt for one-time build options defined with ephemeral parameters. - --rich-parameter-file string, $CODER_RICH_PARAMETER_FILE Specify a file path with values for rich parameters defined in the template. diff --git a/codersdk/richparameters_test.go b/codersdk/richparameters_test.go index e009421d9a553..df70c9c10e164 100644 --- a/codersdk/richparameters_test.go +++ b/codersdk/richparameters_test.go @@ -315,11 +315,11 @@ func TestParameterResolver_ValidateResolve_Ephemeral_OverridePrevious(t *testing Rich: []codersdk.WorkspaceBuildParameter{{Name: "n", Value: "5"}}, } p := codersdk.TemplateVersionParameter{ - Name: "n", - Type: "number", - Mutable: true, - Required: true, - Ephemeral: true, + Name: "n", + Type: "number", + Mutable: true, + DefaultValue: "4", + Ephemeral: true, } v, err := uut.ValidateResolve(p, &codersdk.WorkspaceBuildParameter{ Name: "n", @@ -333,11 +333,11 @@ func TestParameterResolver_ValidateResolve_Ephemeral_FirstTime(t *testing.T) { t.Parallel() uut := codersdk.ParameterResolver{} p := codersdk.TemplateVersionParameter{ - Name: "n", - Type: "number", - Mutable: true, - Required: true, - Ephemeral: true, + Name: "n", + Type: "number", + Mutable: true, + DefaultValue: "5", + Ephemeral: true, } v, err := uut.ValidateResolve(p, &codersdk.WorkspaceBuildParameter{ Name: "n", @@ -376,21 +376,3 @@ func TestParameterResolver_ValidateResolve_Ephemeral_UseEmptyDefault(t *testing. require.NoError(t, err) require.Equal(t, "", v) } - -func TestParameterResolver_ValidateResolve_Ephemeral_RequiredButMissing(t *testing.T) { - t.Parallel() - uut := codersdk.ParameterResolver{} - p := codersdk.TemplateVersionParameter{ - Name: "n", - Type: "number", - Mutable: true, - Required: true, - Ephemeral: true, - } - // It is more theoretical than practical case. Schema allows to configure a parameter, - // which always requires from initiator to provide the value, but it is not persisted between - // consecutive workspace builds. - v, err := uut.ValidateResolve(p, nil) - require.Error(t, err) // Parameter is required, but not provided. - require.Equal(t, "", v) -} diff --git a/docs/cli/create.md b/docs/cli/create.md index 166f0037fd504..3f7ff099b16c8 100644 --- a/docs/cli/create.md +++ b/docs/cli/create.md @@ -20,14 +20,6 @@ coder create [flags] [name] ## Options -### --build-options - -| | | -| ---- | ----------------- | -| Type | bool | - -Prompt for one-time build options defined with ephemeral parameters. - ### --rich-parameter-file | | | diff --git a/docs/templates/parameters.md b/docs/templates/parameters.md index 7304b69ccf591..c74413d48b392 100644 --- a/docs/templates/parameters.md +++ b/docs/templates/parameters.md @@ -163,6 +163,7 @@ data "coder_parameter" "force_rebuild" { type = "bool" description = "Rebuild the Docker image rather than use the cached one." mutable = true + default = false ephemeral = true } ``` diff --git a/go.mod b/go.mod index 02723fce62aef..da02ddabca648 100644 --- a/go.mod +++ b/go.mod @@ -85,7 +85,7 @@ require ( github.com/codeclysm/extract/v3 v3.1.1 github.com/coder/flog v1.1.0 github.com/coder/retry v1.4.0 - github.com/coder/terraform-provider-coder v0.11.0 + github.com/coder/terraform-provider-coder v0.11.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 diff --git a/go.sum b/go.sum index 8d7dfc432b574..9b6c325f65081 100644 --- a/go.sum +++ b/go.sum @@ -196,8 +196,8 @@ github.com/coder/ssh v0.0.0-20230621095435-9a7e23486f1c h1:TI7TzdFI0UvQmwgyQhtI1 github.com/coder/ssh v0.0.0-20230621095435-9a7e23486f1c/go.mod h1:aGQbuCLyhRLMzZF067xc84Lh7JDs1FKwCmF1Crl9dxQ= 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.11.0 h1:/swgVstwRaj12S/iHIA3zxFKSSQj+ohZZyb4CZQ7f4A= -github.com/coder/terraform-provider-coder v0.11.0/go.mod h1:UIfU3bYNeSzJJvHyJ30tEKjD6Z9utloI+HUM/7n94CY= +github.com/coder/terraform-provider-coder v0.11.1 h1:1sXcHfQrX8XhmLbtKxBED2lZ5jk3/ezBtaw6uVhpJZ4= +github.com/coder/terraform-provider-coder v0.11.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/console v1.0.3 h1:lIr7SlA5PxZyMV30bDW0MGbiOPXwc63yRuCP0ARubLw=