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

Commit8de16f8

Browse files
committed
Read params from file for template/workspace creation
1 parentba818b3 commit8de16f8

File tree

2 files changed

+71
-13
lines changed

2 files changed

+71
-13
lines changed

‎cli/create.go

Lines changed: 35 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,13 @@ package cli
22

33
import (
44
"fmt"
5+
"io/ioutil"
56
"time"
67

78
"github.com/spf13/cobra"
89
"golang.org/x/exp/slices"
910
"golang.org/x/xerrors"
11+
"gopkg.in/yaml.v3"
1012

1113
"github.com/coder/coder/cli/cliflag"
1214
"github.com/coder/coder/cli/cliui"
@@ -18,6 +20,7 @@ func create() *cobra.Command {
1820
var (
1921
workspaceNamestring
2022
templateNamestring
23+
parameterFilestring
2124
)
2225
cmd:=&cobra.Command{
2326
Annotations:workspaceCommand,
@@ -117,23 +120,49 @@ func create() *cobra.Command {
117120
returnerr
118121
}
119122

120-
printed:=false
123+
parameterValues:=make(map[string]string)
124+
125+
ifparameterFile!="" {
126+
parameterFileContents,err:=ioutil.ReadFile(parameterFile)
127+
128+
iferr!=nil {
129+
returnerr
130+
}
131+
132+
err=yaml.Unmarshal(parameterFileContents,&parameterValues)
133+
134+
iferr!=nil {
135+
returnerr
136+
}
137+
}
138+
139+
disclaimerPrinted:=false
121140
parameters:=make([]codersdk.CreateParameterRequest,0)
122141
for_,parameterSchema:=rangeparameterSchemas {
123142
if!parameterSchema.AllowOverrideSource {
124143
continue
125144
}
126-
if!printed {
145+
if!disclaimerPrinted {
127146
_,_=fmt.Fprintln(cmd.OutOrStdout(),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")
128-
printed=true
147+
disclaimerPrinted=true
129148
}
130-
value,err:=cliui.ParameterSchema(cmd,parameterSchema)
149+
150+
varparameterValuestring
151+
ifparameterFile!="" {
152+
ifparameterValues[parameterSchema.Name]=="" {
153+
returnxerrors.Errorf("Parameter value absent in parameter file for %q!",parameterSchema.Name)
154+
}
155+
parameterValue=parameterValues[parameterSchema.Name]
156+
}else {
157+
parameterValue,err=cliui.ParameterSchema(cmd,parameterSchema)
158+
}
159+
131160
iferr!=nil {
132161
returnerr
133162
}
134163
parameters=append(parameters, codersdk.CreateParameterRequest{
135164
Name:parameterSchema.Name,
136-
SourceValue:value,
165+
SourceValue:parameterValue,
137166
SourceScheme:database.ParameterSourceSchemeData,
138167
DestinationScheme:parameterSchema.DefaultDestinationScheme,
139168
})
@@ -195,5 +224,6 @@ func create() *cobra.Command {
195224
}
196225

197226
cliflag.StringVarP(cmd.Flags(),&templateName,"template","t","CODER_TEMPLATE_NAME","","Specify a template name.")
227+
cliflag.StringVarP(cmd.Flags(),&parameterFile,"parameter-file","","CODER_PARAMETER_FILE","","Specify a file path with parameter values.")
198228
returncmd
199229
}

‎cli/templatecreate.go

Lines changed: 36 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ package cli
22

33
import (
44
"fmt"
5+
"io/ioutil"
56
"os"
67
"path/filepath"
78
"sort"
@@ -11,6 +12,7 @@ import (
1112
"github.com/briandowns/spinner"
1213
"github.com/spf13/cobra"
1314
"golang.org/x/xerrors"
15+
"gopkg.in/yaml.v3"
1416

1517
"github.com/coder/coder/cli/cliui"
1618
"github.com/coder/coder/coderd/database"
@@ -21,9 +23,10 @@ import (
2123

2224
functemplateCreate()*cobra.Command {
2325
var (
24-
yesbool
25-
directorystring
26-
provisionerstring
26+
yesbool
27+
directorystring
28+
provisionerstring
29+
parameterFilestring
2730
)
2831
cmd:=&cobra.Command{
2932
Use:"create [name]",
@@ -79,7 +82,7 @@ func templateCreate() *cobra.Command {
7982
}
8083
spin.Stop()
8184

82-
job,parameters,err:=createValidTemplateVersion(cmd,client,organization,database.ProvisionerType(provisioner),resp.Hash)
85+
job,parameters,err:=createValidTemplateVersion(cmd,client,organization,database.ProvisionerType(provisioner),resp.Hash,parameterFile)
8386
iferr!=nil {
8487
returnerr
8588
}
@@ -116,6 +119,7 @@ func templateCreate() *cobra.Command {
116119
currentDirectory,_:=os.Getwd()
117120
cmd.Flags().StringVarP(&directory,"directory","d",currentDirectory,"Specify the directory to create from")
118121
cmd.Flags().StringVarP(&provisioner,"test.provisioner","","terraform","Customize the provisioner backend")
122+
cmd.Flags().StringVarP(&parameterFile,"parameter-file","","","Specify a file path with parameter values.")
119123
// This is for testing!
120124
err:=cmd.Flags().MarkHidden("test.provisioner")
121125
iferr!=nil {
@@ -125,7 +129,7 @@ func templateCreate() *cobra.Command {
125129
returncmd
126130
}
127131

128-
funccreateValidTemplateVersion(cmd*cobra.Command,client*codersdk.Client,organization codersdk.Organization,provisioner database.ProvisionerType,hashstring,parameters...codersdk.CreateParameterRequest) (*codersdk.TemplateVersion, []codersdk.CreateParameterRequest,error) {
132+
funccreateValidTemplateVersion(cmd*cobra.Command,client*codersdk.Client,organization codersdk.Organization,provisioner database.ProvisionerType,hashstring,parameterFilestring,parameters...codersdk.CreateParameterRequest) (*codersdk.TemplateVersion, []codersdk.CreateParameterRequest,error) {
129133
before:=time.Now()
130134
version,err:=client.CreateTemplateVersion(cmd.Context(),organization.ID, codersdk.CreateTemplateVersionRequest{
131135
StorageMethod:database.ProvisionerStorageMethodFile,
@@ -184,20 +188,44 @@ func createValidTemplateVersion(cmd *cobra.Command, client *codersdk.Client, org
184188
missingSchemas=append(missingSchemas,parameterSchema)
185189
}
186190
_,_=fmt.Fprintln(cmd.OutOrStdout(),cliui.Styles.Paragraph.Render("This template has required variables! They are scoped to the template, and not viewable after being set.")+"\r\n")
191+
192+
parameterValuesFromFile:=make(map[string]string)
193+
ifparameterFile!="" {
194+
_,_=fmt.Fprintln(cmd.OutOrStdout(),cliui.Styles.Paragraph.Render("Attempting to read the variables from the parameter file.")+"\r\n")
195+
parameterFileContents,err:=ioutil.ReadFile(parameterFile)
196+
197+
iferr!=nil {
198+
returnnil,nil,err
199+
}
200+
201+
err=yaml.Unmarshal(parameterFileContents,&parameterValuesFromFile)
202+
203+
iferr!=nil {
204+
returnnil,nil,err
205+
}
206+
}
187207
for_,parameterSchema:=rangemissingSchemas {
188-
value,err:=cliui.ParameterSchema(cmd,parameterSchema)
208+
varparameterValuestring
209+
ifparameterFile!="" {
210+
ifparameterValuesFromFile[parameterSchema.Name]=="" {
211+
returnnil,nil,xerrors.Errorf("Required parameter value absent in parameter file for %q!",parameterSchema.Name)
212+
}
213+
parameterValue=parameterValuesFromFile[parameterSchema.Name]
214+
}else {
215+
parameterValue,err=cliui.ParameterSchema(cmd,parameterSchema)
216+
}
189217
iferr!=nil {
190218
returnnil,nil,err
191219
}
192220
parameters=append(parameters, codersdk.CreateParameterRequest{
193221
Name:parameterSchema.Name,
194-
SourceValue:value,
222+
SourceValue:parameterValue,
195223
SourceScheme:database.ParameterSourceSchemeData,
196224
DestinationScheme:parameterSchema.DefaultDestinationScheme,
197225
})
198226
_,_=fmt.Fprintln(cmd.OutOrStdout())
199227
}
200-
returncreateValidTemplateVersion(cmd,client,organization,provisioner,hash,parameters...)
228+
returncreateValidTemplateVersion(cmd,client,organization,provisioner,hash,parameterFile,parameters...)
201229
}
202230

203231
ifversion.Job.Status!=codersdk.ProvisionerJobSucceeded {

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp