Skip to content

feat!: drop support for legacy parameters #7663

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 our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 47 commits into from
Jun 2, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
47 commits
Select commit Hold shift + click to select a range
c64896c
feat!: Drop support for legacy parameters
mtojek May 24, 2023
18dcd1d
UI fix
mtojek May 24, 2023
9f1fef3
fmt
mtojek May 24, 2023
022224e
UI changes
mtojek May 24, 2023
5c065a9
More parameter references
mtojek May 24, 2023
a5aae3a
fix
mtojek May 24, 2023
a450f90
Adjust provisionerd
mtojek May 24, 2023
70b2a98
fix
mtojek May 24, 2023
a661a04
fix: make gen
mtojek May 24, 2023
8c770ff
fix: make gen
mtojek May 24, 2023
d6e5207
empty endpoint
mtojek May 25, 2023
217ea69
fix
mtojek May 25, 2023
0ed1bad
Block pushing templates with legacy parameters
mtojek May 25, 2023
f5ead4f
fix: swagger
mtojek May 25, 2023
5261b99
fix
mtojek May 25, 2023
8c5eee9
verify: no legacy parameters
mtojek May 29, 2023
e630b27
Merge branch 'main' into 7452-remove-legacy-parameters
mtojek May 29, 2023
48e472c
fix?
mtojek May 29, 2023
308e0df
Merge branch 'main' into 7452-remove-legacy-parameters
mtojek May 30, 2023
d3ebba9
Merge branch 'main' into 7452-remove-legacy-parameters
mtojek May 30, 2023
c8f8ab8
fix: make gen
mtojek May 30, 2023
01d369f
fix: Replace ParameterValues with ParameterSchemas
mtojek May 30, 2023
80e227d
Merge branch 'main' into 7452-remove-legacy-parameters
mtojek May 31, 2023
455ba40
WIP
mtojek May 31, 2023
ec80105
unused
mtojek May 31, 2023
75513f9
DB queries cleanup
mtojek May 31, 2023
024f3a1
fix
mtojek May 31, 2023
c6106b3
More cleanup
mtojek May 31, 2023
00522a0
Merge branch 'main' into 7452-remove-legacy-parameters
mtojek May 31, 2023
0cada61
Merge with dbmetrics
mtojek May 31, 2023
9774381
More cleanup
mtojek May 31, 2023
144cdff
warning
mtojek May 31, 2023
796a3b9
lint
mtojek May 31, 2023
36cbcfa
SSH notice: unsupported workspace
mtojek May 31, 2023
7be6f6f
Merge branch 'main' into 7452-remove-legacy-parameters
mtojek Jun 1, 2023
8a56f6f
Remove GetParameterSchemasCreatedAfter
mtojek Jun 1, 2023
9e41d8e
Remove: InsertParameterSchema
mtojek Jun 1, 2023
496b414
WIP
mtojek Jun 1, 2023
296cfa5
Fix proto fields
mtojek Jun 1, 2023
703260f
fmt
mtojek Jun 1, 2023
a1bbb49
Fix: dbgen
mtojek Jun 1, 2023
344749e
fix: queries
mtojek Jun 1, 2023
bbb3dd3
Contact your administrator for assistance
mtojek Jun 1, 2023
51bb3c0
Adjust wording
mtojek Jun 1, 2023
dec5883
Merge branch 'main' into 7452-remove-legacy-parameters
mtojek Jun 2, 2023
9240569
storybook: renaming
mtojek Jun 2, 2023
4221a3e
Empty
mtojek Jun 2, 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
52 changes: 0 additions & 52 deletions cli/cliui/parameter.go
Original file line number Diff line number Diff line change
Expand Up @@ -6,61 +6,9 @@ import (
"strings"

"github.com/coder/coder/cli/clibase"
"github.com/coder/coder/coderd/parameter"
"github.com/coder/coder/codersdk"
)

func ParameterSchema(inv *clibase.Invocation, parameterSchema codersdk.ParameterSchema) (string, error) {
_, _ = fmt.Fprintln(inv.Stdout, Styles.Bold.Render("var."+parameterSchema.Name))
if parameterSchema.Description != "" {
_, _ = fmt.Fprintln(inv.Stdout, " "+strings.TrimSpace(strings.Join(strings.Split(parameterSchema.Description, "\n"), "\n "))+"\n")
}

var err error
var options []string
if parameterSchema.ValidationCondition != "" {
options, _, err = parameter.Contains(parameterSchema.ValidationCondition)
if err != nil {
return "", err
}
}
var value string
if len(options) > 0 {
// Move the cursor up a single line for nicer display!
_, _ = fmt.Fprint(inv.Stdout, "\033[1A")
value, err = Select(inv, SelectOptions{
Options: options,
Default: parameterSchema.DefaultSourceValue,
HideSearch: true,
})
if err == nil {
_, _ = fmt.Fprintln(inv.Stdout)
_, _ = fmt.Fprintln(inv.Stdout, " "+Styles.Prompt.String()+Styles.Field.Render(value))
}
} else {
text := "Enter a value"
if parameterSchema.DefaultSourceValue != "" {
text += fmt.Sprintf(" (default: %q)", parameterSchema.DefaultSourceValue)
}
text += ":"

value, err = Prompt(inv, PromptOptions{
Text: Styles.Bold.Render(text),
})
value = strings.TrimSpace(value)
}
if err != nil {
return "", err
}

// If they didn't specify anything, use the default value if set.
if len(options) == 0 && value == "" {
value = parameterSchema.DefaultSourceValue
}

return value, nil
}

func RichParameter(inv *clibase.Invocation, templateVersionParameter codersdk.TemplateVersionParameter) (string, error) {
label := templateVersionParameter.Name
if templateVersionParameter.DisplayName != "" {
Expand Down
93 changes: 3 additions & 90 deletions cli/create.go
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,6 @@ import (

func (r *RootCmd) create() *clibase.Cmd {
var (
parameterFile string
richParameterFile string
templateName string
startAt string
Expand Down Expand Up @@ -122,8 +121,6 @@ func (r *RootCmd) create() *clibase.Cmd {

buildParams, err := prepWorkspaceBuild(inv, client, prepWorkspaceBuildArgs{
Template: template,
ExistingParams: []codersdk.Parameter{},
ParameterFile: parameterFile,
RichParameterFile: richParameterFile,
NewWorkspaceName: workspaceName,
})
Expand Down Expand Up @@ -151,7 +148,6 @@ func (r *RootCmd) create() *clibase.Cmd {
Name: workspaceName,
AutostartSchedule: schedSpec,
TTLMillis: ttlMillis,
ParameterValues: buildParams.parameters,
RichParameterValues: buildParams.richParameters,
})
if err != nil {
Expand All @@ -175,12 +171,6 @@ func (r *RootCmd) create() *clibase.Cmd {
Description: "Specify a template name.",
Value: clibase.StringOf(&templateName),
},
clibase.Option{
Flag: "parameter-file",
Env: "CODER_PARAMETER_FILE",
Description: "Specify a file path with parameter values.",
Value: clibase.StringOf(&parameterFile),
},
clibase.Option{
Flag: "rich-parameter-file",
Env: "CODER_RICH_PARAMETER_FILE",
Expand All @@ -207,8 +197,6 @@ func (r *RootCmd) create() *clibase.Cmd {

type prepWorkspaceBuildArgs struct {
Template codersdk.Template
ExistingParams []codersdk.Parameter
ParameterFile string
ExistingRichParams []codersdk.WorkspaceBuildParameter
RichParameterFile string
NewWorkspaceName string
Expand All @@ -218,8 +206,6 @@ type prepWorkspaceBuildArgs struct {
}

type buildParameters struct {
// Parameters contains legacy parameters stored in /parameters.
parameters []codersdk.CreateParameterRequest
// Rich parameters stores values for build parameters annotated with description, icon, type, etc.
richParameters []codersdk.WorkspaceBuildParameter
}
Expand All @@ -229,90 +215,19 @@ type buildParameters struct {
func prepWorkspaceBuild(inv *clibase.Invocation, client *codersdk.Client, args prepWorkspaceBuildArgs) (*buildParameters, error) {
ctx := inv.Context()

var useRichParameters bool
if len(args.ExistingRichParams) > 0 && len(args.RichParameterFile) > 0 {
useRichParameters = true
}

var useLegacyParameters bool
if len(args.ExistingParams) > 0 || len(args.ParameterFile) > 0 {
useLegacyParameters = true
}

if useRichParameters && useLegacyParameters {
return nil, xerrors.Errorf("Rich parameters can't be used together with legacy parameters.")
}

templateVersion, err := client.TemplateVersion(ctx, args.Template.ActiveVersionID)
if err != nil {
return nil, err
}

// Legacy parameters
parameterSchemas, err := client.TemplateVersionSchema(ctx, templateVersion.ID)
if err != nil {
return nil, err
}

// parameterMapFromFile can be nil if parameter file is not specified
var parameterMapFromFile map[string]string
useParamFile := false
if args.ParameterFile != "" {
useParamFile = true
_, _ = fmt.Fprintln(inv.Stdout, cliui.Styles.Paragraph.Render("Attempting to read the variables from the parameter file.")+"\r\n")
parameterMapFromFile, err = createParameterMapFromFile(args.ParameterFile)
if err != nil {
return nil, err
}
}
disclaimerPrinted := false
legacyParameters := make([]codersdk.CreateParameterRequest, 0)
PromptParamLoop:
for _, parameterSchema := range parameterSchemas {
if !parameterSchema.AllowOverrideSource {
continue
}
if !disclaimerPrinted {
_, _ = fmt.Fprintln(inv.Stdout, cliui.Styles.Paragraph.Render("This template has customizable parameters. Values can be changed after create, but may have unintended side effects (like data loss).")+"\r\n")
disclaimerPrinted = true
}

// Param file is all or nothing
if !useParamFile {
for _, e := range args.ExistingParams {
if e.Name == parameterSchema.Name {
// If the param already exists, we do not need to prompt it again.
// The workspace scope will reuse params for each build.
continue PromptParamLoop
}
}
}

parameterValue, err := getParameterValueFromMapOrInput(inv, parameterMapFromFile, parameterSchema)
if err != nil {
return nil, err
}

legacyParameters = append(legacyParameters, codersdk.CreateParameterRequest{
Name: parameterSchema.Name,
SourceValue: parameterValue,
SourceScheme: codersdk.ParameterSourceSchemeData,
DestinationScheme: parameterSchema.DefaultDestinationScheme,
})
}

if disclaimerPrinted {
_, _ = fmt.Fprintln(inv.Stdout)
}

// Rich parameters
templateVersionParameters, err := client.TemplateVersionRichParameters(inv.Context(), templateVersion.ID)
if err != nil {
return nil, xerrors.Errorf("get template version rich parameters: %w", err)
}

parameterMapFromFile = map[string]string{}
useParamFile = false
parameterMapFromFile := map[string]string{}
useParamFile := false
if args.RichParameterFile != "" {
useParamFile = true
_, _ = fmt.Fprintln(inv.Stdout, cliui.Styles.Paragraph.Render("Attempting to read the variables from the rich parameter file.")+"\r\n")
Expand All @@ -321,7 +236,7 @@ PromptParamLoop:
return nil, err
}
}
disclaimerPrinted = false
disclaimerPrinted := false
richParameters := make([]codersdk.WorkspaceBuildParameter, 0)
PromptRichParamLoop:
for _, templateVersionParameter := range templateVersionParameters {
Expand Down Expand Up @@ -379,7 +294,6 @@ PromptRichParamLoop:
// Run a dry-run with the given parameters to check correctness
dryRun, err := client.CreateTemplateVersionDryRun(inv.Context(), templateVersion.ID, codersdk.CreateTemplateVersionDryRunRequest{
WorkspaceName: args.NewWorkspaceName,
ParameterValues: legacyParameters,
RichParameterValues: richParameters,
})
if err != nil {
Expand Down Expand Up @@ -421,7 +335,6 @@ PromptRichParamLoop:
}

return &buildParameters{
parameters: legacyParameters,
richParameters: richParameters,
}, nil
}
Expand Down
Loading