Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit2d4706a

Browse files
authored
feat: mark coder_parameter as "required" (#6433)
* Add required column* Pass through providerd* Pass the required property down* Optional* Fix* Fix* Fix* fix* CLI create: support for optional fields* Use HTML API to mark fields required* Fix* Improve validation* more fixes* make fmt* Fix* WIP* Fix: test* CLI update tets* OptionalParameterAdded* Fix: migration
1 parentf19076c commit2d4706a

File tree

30 files changed

+646
-404
lines changed

30 files changed

+646
-404
lines changed

‎cli/cliui/parameter.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -85,7 +85,7 @@ func RichParameter(cmd *cobra.Command, templateVersionParameter codersdk.Templat
8585
}
8686
}else {
8787
text:="Enter a value"
88-
iftemplateVersionParameter.DefaultValue!="" {
88+
if!templateVersionParameter.Required {
8989
text+=fmt.Sprintf(" (default: %q)",templateVersionParameter.DefaultValue)
9090
}
9191
text+=":"
@@ -111,7 +111,7 @@ func RichParameter(cmd *cobra.Command, templateVersionParameter codersdk.Templat
111111
}
112112

113113
funcvalidateRichPrompt(valuestring,p codersdk.TemplateVersionParameter)error {
114-
returncodersdk.ValidateWorkspaceBuildParameter(p, codersdk.WorkspaceBuildParameter{
114+
returncodersdk.ValidateWorkspaceBuildParameter(p,&codersdk.WorkspaceBuildParameter{
115115
Name:p.Name,
116116
Value:value,
117117
},nil)

‎cli/update_test.go

Lines changed: 138 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -424,4 +424,142 @@ func TestUpdateValidateRichParameters(t *testing.T) {
424424
}
425425
<-doneChan
426426
})
427+
428+
t.Run("RequiredParameterAdded",func(t*testing.T) {
429+
t.Parallel()
430+
431+
client:=coderdtest.New(t,&coderdtest.Options{IncludeProvisionerDaemon:true})
432+
user:=coderdtest.CreateFirstUser(t,client)
433+
434+
// Upload the initial template
435+
version:=coderdtest.CreateTemplateVersion(t,client,user.OrganizationID,prepareEchoResponses(stringRichParameters))
436+
coderdtest.AwaitTemplateVersionJob(t,client,version.ID)
437+
template:=coderdtest.CreateTemplate(t,client,user.OrganizationID,version.ID)
438+
439+
tempDir:=t.TempDir()
440+
removeTmpDirUntilSuccessAfterTest(t,tempDir)
441+
parameterFile,_:=os.CreateTemp(tempDir,"testParameterFile*.yaml")
442+
_,_=parameterFile.WriteString(
443+
stringParameterName+": "+stringParameterValue)
444+
445+
// Create workspace
446+
cmd,root:=clitest.New(t,"create","my-workspace","--template",template.Name,"--rich-parameter-file",parameterFile.Name(),"-y")
447+
clitest.SetupConfig(t,client,root)
448+
err:=cmd.Execute()
449+
require.NoError(t,err)
450+
451+
// Modify template
452+
constaddedParameterName="added_parameter"
453+
454+
varmodifiedParameters []*proto.RichParameter
455+
modifiedParameters=append(modifiedParameters,stringRichParameters...)
456+
modifiedParameters=append(modifiedParameters,&proto.RichParameter{
457+
Name:addedParameterName,
458+
Type:"string",
459+
Mutable:true,
460+
Required:true,
461+
})
462+
version=coderdtest.UpdateTemplateVersion(t,client,user.OrganizationID,prepareEchoResponses(modifiedParameters),template.ID)
463+
coderdtest.AwaitTemplateVersionJob(t,client,version.ID)
464+
err=client.UpdateActiveTemplateVersion(context.Background(),template.ID, codersdk.UpdateActiveTemplateVersion{
465+
ID:version.ID,
466+
})
467+
require.NoError(t,err)
468+
469+
// Update the workspace
470+
cmd,root=clitest.New(t,"update","my-workspace")
471+
clitest.SetupConfig(t,client,root)
472+
doneChan:=make(chanstruct{})
473+
pty:=ptytest.New(t)
474+
cmd.SetIn(pty.Input())
475+
cmd.SetOut(pty.Output())
476+
gofunc() {
477+
deferclose(doneChan)
478+
err:=cmd.Execute()
479+
assert.NoError(t,err)
480+
}()
481+
482+
matches:= []string{
483+
"added_parameter","",
484+
"Enter a value:","abc",
485+
}
486+
fori:=0;i<len(matches);i+=2 {
487+
match:=matches[i]
488+
value:=matches[i+1]
489+
pty.ExpectMatch(match)
490+
491+
ifvalue!="" {
492+
pty.WriteLine(value)
493+
}
494+
}
495+
<-doneChan
496+
})
497+
498+
t.Run("OptionalParameterAdded",func(t*testing.T) {
499+
t.Parallel()
500+
501+
client:=coderdtest.New(t,&coderdtest.Options{IncludeProvisionerDaemon:true})
502+
user:=coderdtest.CreateFirstUser(t,client)
503+
504+
// Upload the initial template
505+
version:=coderdtest.CreateTemplateVersion(t,client,user.OrganizationID,prepareEchoResponses(stringRichParameters))
506+
coderdtest.AwaitTemplateVersionJob(t,client,version.ID)
507+
template:=coderdtest.CreateTemplate(t,client,user.OrganizationID,version.ID)
508+
509+
tempDir:=t.TempDir()
510+
removeTmpDirUntilSuccessAfterTest(t,tempDir)
511+
parameterFile,_:=os.CreateTemp(tempDir,"testParameterFile*.yaml")
512+
_,_=parameterFile.WriteString(
513+
stringParameterName+": "+stringParameterValue)
514+
515+
// Create workspace
516+
cmd,root:=clitest.New(t,"create","my-workspace","--template",template.Name,"--rich-parameter-file",parameterFile.Name(),"-y")
517+
clitest.SetupConfig(t,client,root)
518+
err:=cmd.Execute()
519+
require.NoError(t,err)
520+
521+
// Modify template
522+
constaddedParameterName="added_parameter"
523+
524+
varmodifiedParameters []*proto.RichParameter
525+
modifiedParameters=append(modifiedParameters,stringRichParameters...)
526+
modifiedParameters=append(modifiedParameters,&proto.RichParameter{
527+
Name:addedParameterName,
528+
Type:"string",
529+
Mutable:true,
530+
DefaultValue:"foobar",
531+
Required:false,
532+
})
533+
version=coderdtest.UpdateTemplateVersion(t,client,user.OrganizationID,prepareEchoResponses(modifiedParameters),template.ID)
534+
coderdtest.AwaitTemplateVersionJob(t,client,version.ID)
535+
err=client.UpdateActiveTemplateVersion(context.Background(),template.ID, codersdk.UpdateActiveTemplateVersion{
536+
ID:version.ID,
537+
})
538+
require.NoError(t,err)
539+
540+
// Update the workspace
541+
cmd,root=clitest.New(t,"update","my-workspace")
542+
clitest.SetupConfig(t,client,root)
543+
doneChan:=make(chanstruct{})
544+
pty:=ptytest.New(t)
545+
cmd.SetIn(pty.Input())
546+
cmd.SetOut(pty.Output())
547+
gofunc() {
548+
deferclose(doneChan)
549+
err:=cmd.Execute()
550+
assert.NoError(t,err)
551+
}()
552+
553+
matches:= []string{
554+
"added_parameter","",
555+
`Enter a value (default: "foobar")`,"abc",
556+
}
557+
fori:=0;i<len(matches);i+=2 {
558+
match:=matches[i]
559+
value:=matches[i+1]
560+
pty.ExpectMatch(match)
561+
pty.WriteLine(value)
562+
}
563+
<-doneChan
564+
})
427565
}

‎coderd/apidoc/docs.go

Lines changed: 3 additions & 0 deletions
Some generated files are not rendered by default. Learn more aboutcustomizing how changed files appear on GitHub.

‎coderd/apidoc/swagger.json

Lines changed: 3 additions & 0 deletions
Some generated files are not rendered by default. Learn more aboutcustomizing how changed files appear on GitHub.

‎coderd/database/dbfake/databasefake.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2722,6 +2722,7 @@ func (q *fakeQuerier) InsertTemplateVersionParameter(_ context.Context, arg data
27222722
ValidationMin:arg.ValidationMin,
27232723
ValidationMax:arg.ValidationMax,
27242724
ValidationMonotonic:arg.ValidationMonotonic,
2725+
Required:arg.Required,
27252726
}
27262727
q.templateVersionParameters=append(q.templateVersionParameters,param)
27272728
returnparam,nil

‎coderd/database/dump.sql

Lines changed: 3 additions & 0 deletions
Some generated files are not rendered by default. Learn more aboutcustomizing how changed files appear on GitHub.
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
ALTERTABLE template_version_parameters DROP COLUMN required;
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
ALTERTABLE template_version_parameters ADD COLUMN requiredbooleanNOT NULL DEFAULT true;-- default: true, as so far every parameter should be marked as required
2+
3+
COMMENT ON COLUMN template_version_parameters.required IS'Is parameter required?';

‎coderd/database/models.go

Lines changed: 2 additions & 0 deletions
Some generated files are not rendered by default. Learn more aboutcustomizing how changed files appear on GitHub.

‎coderd/database/queries.sql.go

Lines changed: 10 additions & 4 deletions
Some generated files are not rendered by default. Learn more aboutcustomizing how changed files appear on GitHub.

‎coderd/database/queries/templateversionparameters.sql

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,8 @@ INSERT INTO
1313
validation_min,
1414
validation_max,
1515
validation_error,
16-
validation_monotonic
16+
validation_monotonic,
17+
required
1718
)
1819
VALUES
1920
(
@@ -29,7 +30,8 @@ VALUES
2930
$10,
3031
$11,
3132
$12,
32-
$13
33+
$13,
34+
$14
3335
) RETURNING*;
3436

3537
-- name: GetTemplateVersionParameters :many

‎coderd/provisionerdserver/provisionerdserver.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -828,6 +828,7 @@ func (server *Server) CompleteJob(ctx context.Context, completed *proto.Complete
828828
ValidationMin:richParameter.ValidationMin,
829829
ValidationMax:richParameter.ValidationMax,
830830
ValidationMonotonic:richParameter.ValidationMonotonic,
831+
Required:richParameter.Required,
831832
})
832833
iferr!=nil {
833834
returnnil,xerrors.Errorf("insert parameter: %w",err)

‎coderd/templateversions.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1621,6 +1621,7 @@ func convertTemplateVersionParameter(param database.TemplateVersionParameter) (c
16211621
ValidationMax:param.ValidationMax,
16221622
ValidationError:param.ValidationError,
16231623
ValidationMonotonic:codersdk.ValidationMonotonicOrder(param.ValidationMonotonic),
1624+
Required:param.Required,
16241625
},nil
16251626
}
16261627

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp