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

feat: mark coder_parameter as "required"#6433

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to ourterms of service andprivacy statement. We’ll occasionally send you account related emails.

Already on GitHub?Sign in to your account

Merged
mtojek merged 21 commits intocoder:mainfrommtojek:6100-required-parameter-1
Mar 7, 2023
Merged
Show file tree
Hide file tree
Changes fromall commits
Commits
Show all changes
21 commits
Select commitHold shift + click to select a range
d304f8b
Add required column
mtojekMar 3, 2023
110b10b
Pass through providerd
mtojekMar 3, 2023
8b3fe8c
Pass the required property down
mtojekMar 3, 2023
8198eaa
Optional
mtojekMar 6, 2023
bb1c3e2
Fix
mtojekMar 6, 2023
93b6613
Fix
mtojekMar 6, 2023
0813255
Fix
mtojekMar 6, 2023
801c4df
fix
mtojekMar 6, 2023
e804f40
CLI create: support for optional fields
mtojekMar 6, 2023
60ffd86
Use HTML API to mark fields required
mtojekMar 6, 2023
2c8be6c
Fix
mtojekMar 6, 2023
5282122
Improve validation
mtojekMar 6, 2023
659bfa2
more fixes
mtojekMar 6, 2023
e08a3af
make fmt
mtojekMar 6, 2023
44eca14
Fix
mtojekMar 6, 2023
fbcbe2e
WIP
mtojekMar 6, 2023
a688d94
Fix: test
mtojekMar 7, 2023
16927d2
CLI update tets
mtojekMar 7, 2023
d582472
OptionalParameterAdded
mtojekMar 7, 2023
6e24aa3
Merge branch 'main' into 6100-required-parameter-1
mtojekMar 7, 2023
866fef2
Fix: migration
mtojekMar 7, 2023
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletionscli/cliui/parameter.go
View file
Open in desktop
Original file line numberDiff line numberDiff line change
Expand Up@@ -85,7 +85,7 @@ func RichParameter(cmd *cobra.Command, templateVersionParameter codersdk.Templat
}
} else {
text := "Enter a value"
if templateVersionParameter.DefaultValue != "" {
if!templateVersionParameter.Required {
text += fmt.Sprintf(" (default: %q)", templateVersionParameter.DefaultValue)
}
text += ":"
Expand All@@ -111,7 +111,7 @@ func RichParameter(cmd *cobra.Command, templateVersionParameter codersdk.Templat
}

func validateRichPrompt(value string, p codersdk.TemplateVersionParameter) error {
return codersdk.ValidateWorkspaceBuildParameter(p, codersdk.WorkspaceBuildParameter{
return codersdk.ValidateWorkspaceBuildParameter(p,&codersdk.WorkspaceBuildParameter{
Name: p.Name,
Value: value,
}, nil)
Expand Down
138 changes: 138 additions & 0 deletionscli/update_test.go
View file
Open in desktop
Original file line numberDiff line numberDiff line change
Expand Up@@ -424,4 +424,142 @@ func TestUpdateValidateRichParameters(t *testing.T) {
}
<-doneChan
})

t.Run("RequiredParameterAdded", func(t *testing.T) {
t.Parallel()

client := coderdtest.New(t, &coderdtest.Options{IncludeProvisionerDaemon: true})
user := coderdtest.CreateFirstUser(t, client)

// Upload the initial template
version := coderdtest.CreateTemplateVersion(t, client, user.OrganizationID, prepareEchoResponses(stringRichParameters))
coderdtest.AwaitTemplateVersionJob(t, client, version.ID)
template := coderdtest.CreateTemplate(t, client, user.OrganizationID, version.ID)

tempDir := t.TempDir()
removeTmpDirUntilSuccessAfterTest(t, tempDir)
parameterFile, _ := os.CreateTemp(tempDir, "testParameterFile*.yaml")
_, _ = parameterFile.WriteString(
stringParameterName + ": " + stringParameterValue)

// Create workspace
cmd, root := clitest.New(t, "create", "my-workspace", "--template", template.Name, "--rich-parameter-file", parameterFile.Name(), "-y")
clitest.SetupConfig(t, client, root)
err := cmd.Execute()
require.NoError(t, err)

// Modify template
const addedParameterName = "added_parameter"

var modifiedParameters []*proto.RichParameter
modifiedParameters = append(modifiedParameters, stringRichParameters...)
modifiedParameters = append(modifiedParameters, &proto.RichParameter{
Name: addedParameterName,
Type: "string",
Mutable: true,
Required: true,
})
version = coderdtest.UpdateTemplateVersion(t, client, user.OrganizationID, prepareEchoResponses(modifiedParameters), template.ID)
coderdtest.AwaitTemplateVersionJob(t, client, version.ID)
err = client.UpdateActiveTemplateVersion(context.Background(), template.ID, codersdk.UpdateActiveTemplateVersion{
ID: version.ID,
})
require.NoError(t, err)

// Update the workspace
cmd, root = clitest.New(t, "update", "my-workspace")
clitest.SetupConfig(t, client, root)
doneChan := make(chan struct{})
pty := ptytest.New(t)
cmd.SetIn(pty.Input())
cmd.SetOut(pty.Output())
go func() {
defer close(doneChan)
err := cmd.Execute()
assert.NoError(t, err)
}()

matches := []string{
"added_parameter", "",
"Enter a value:", "abc",
}
for i := 0; i < len(matches); i += 2 {
match := matches[i]
value := matches[i+1]
pty.ExpectMatch(match)

if value != "" {
pty.WriteLine(value)
}
}
<-doneChan
})

t.Run("OptionalParameterAdded", func(t *testing.T) {
t.Parallel()

client := coderdtest.New(t, &coderdtest.Options{IncludeProvisionerDaemon: true})
user := coderdtest.CreateFirstUser(t, client)

// Upload the initial template
version := coderdtest.CreateTemplateVersion(t, client, user.OrganizationID, prepareEchoResponses(stringRichParameters))
coderdtest.AwaitTemplateVersionJob(t, client, version.ID)
template := coderdtest.CreateTemplate(t, client, user.OrganizationID, version.ID)

tempDir := t.TempDir()
removeTmpDirUntilSuccessAfterTest(t, tempDir)
parameterFile, _ := os.CreateTemp(tempDir, "testParameterFile*.yaml")
_, _ = parameterFile.WriteString(
stringParameterName + ": " + stringParameterValue)

// Create workspace
cmd, root := clitest.New(t, "create", "my-workspace", "--template", template.Name, "--rich-parameter-file", parameterFile.Name(), "-y")
clitest.SetupConfig(t, client, root)
err := cmd.Execute()
require.NoError(t, err)

// Modify template
const addedParameterName = "added_parameter"

var modifiedParameters []*proto.RichParameter
modifiedParameters = append(modifiedParameters, stringRichParameters...)
modifiedParameters = append(modifiedParameters, &proto.RichParameter{
Name: addedParameterName,
Type: "string",
Mutable: true,
DefaultValue: "foobar",
Required: false,
})
version = coderdtest.UpdateTemplateVersion(t, client, user.OrganizationID, prepareEchoResponses(modifiedParameters), template.ID)
coderdtest.AwaitTemplateVersionJob(t, client, version.ID)
err = client.UpdateActiveTemplateVersion(context.Background(), template.ID, codersdk.UpdateActiveTemplateVersion{
ID: version.ID,
})
require.NoError(t, err)

// Update the workspace
cmd, root = clitest.New(t, "update", "my-workspace")
clitest.SetupConfig(t, client, root)
doneChan := make(chan struct{})
pty := ptytest.New(t)
cmd.SetIn(pty.Input())
cmd.SetOut(pty.Output())
go func() {
defer close(doneChan)
err := cmd.Execute()
assert.NoError(t, err)
}()

matches := []string{
"added_parameter", "",
`Enter a value (default: "foobar")`, "abc",
}
for i := 0; i < len(matches); i += 2 {
match := matches[i]
value := matches[i+1]
pty.ExpectMatch(match)
pty.WriteLine(value)
}
<-doneChan
})
}
3 changes: 3 additions & 0 deletionscoderd/apidoc/docs.go
View file
Open in desktop

Some generated files are not rendered by default. Learn more abouthow customized files appear on GitHub.

3 changes: 3 additions & 0 deletionscoderd/apidoc/swagger.json
View file
Open in desktop

Some generated files are not rendered by default. Learn more abouthow customized files appear on GitHub.

1 change: 1 addition & 0 deletionscoderd/database/dbfake/databasefake.go
View file
Open in desktop
Original file line numberDiff line numberDiff line change
Expand Up@@ -2696,6 +2696,7 @@ func (q *fakeQuerier) InsertTemplateVersionParameter(_ context.Context, arg data
ValidationMin: arg.ValidationMin,
ValidationMax: arg.ValidationMax,
ValidationMonotonic: arg.ValidationMonotonic,
Required: arg.Required,
}
q.templateVersionParameters = append(q.templateVersionParameters, param)
return param, nil
Expand Down
3 changes: 3 additions & 0 deletionscoderd/database/dump.sql
View file
Open in desktop

Some generated files are not rendered by default. Learn more abouthow customized files appear on GitHub.

View file
Open in desktop
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
ALTER TABLE template_version_parameters DROP COLUMN required;
View file
Open in desktop
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
ALTER TABLE template_version_parameters ADD COLUMN required boolean NOT NULL DEFAULT true; -- default: true, as so far every parameter should be marked as required

COMMENT ON COLUMN template_version_parameters.required IS 'Is parameter required?';
2 changes: 2 additions & 0 deletionscoderd/database/models.go
View file
Open in desktop

Some generated files are not rendered by default. Learn more abouthow customized files appear on GitHub.

14 changes: 10 additions & 4 deletionscoderd/database/queries.sql.go
View file
Open in desktop

Some generated files are not rendered by default. Learn more abouthow customized files appear on GitHub.

6 changes: 4 additions & 2 deletionscoderd/database/queries/templateversionparameters.sql
View file
Open in desktop
Original file line numberDiff line numberDiff line change
Expand Up@@ -13,7 +13,8 @@ INSERT INTO
validation_min,
validation_max,
validation_error,
validation_monotonic
validation_monotonic,
required
)
VALUES
(
Expand All@@ -29,7 +30,8 @@ VALUES
$10,
$11,
$12,
$13
$13,
$14
) RETURNING *;

-- name: GetTemplateVersionParameters :many
Expand Down
1 change: 1 addition & 0 deletionscoderd/provisionerdserver/provisionerdserver.go
View file
Open in desktop
Original file line numberDiff line numberDiff line change
Expand Up@@ -808,6 +808,7 @@ func (server *Server) CompleteJob(ctx context.Context, completed *proto.Complete
ValidationMin: richParameter.ValidationMin,
ValidationMax: richParameter.ValidationMax,
ValidationMonotonic: richParameter.ValidationMonotonic,
Required: richParameter.Required,
})
if err != nil {
return nil, xerrors.Errorf("insert parameter: %w", err)
Expand Down
1 change: 1 addition & 0 deletionscoderd/templateversions.go
View file
Open in desktop
Original file line numberDiff line numberDiff line change
Expand Up@@ -1621,6 +1621,7 @@ func convertTemplateVersionParameter(param database.TemplateVersionParameter) (c
ValidationMax: param.ValidationMax,
ValidationError: param.ValidationError,
ValidationMonotonic: codersdk.ValidationMonotonicOrder(param.ValidationMonotonic),
Required: param.Required,
}, nil
}

Expand Down
Loading

[8]ページ先頭

©2009-2025 Movatter.jp