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

Commit200e652

Browse files
committed
Add provisioner tags to template push and create
1 parent7dda3a2 commit200e652

File tree

6 files changed

+73
-34
lines changed

6 files changed

+73
-34
lines changed

‎cli/templatecreate.go

Lines changed: 27 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ func templateCreate() *cobra.Command {
2727
directorystring
2828
provisionerstring
2929
parameterFilestring
30+
provisionerTags []string
3031
maxTTL time.Duration
3132
minAutostartInterval time.Duration
3233
)
@@ -88,12 +89,18 @@ func templateCreate() *cobra.Command {
8889
}
8990
spin.Stop()
9091

92+
tags,err:=ParseProvisionerTags(provisionerTags)
93+
iferr!=nil {
94+
returnerr
95+
}
96+
9197
job,_,err:=createValidTemplateVersion(cmd,createValidTemplateVersionArgs{
92-
Client:client,
93-
Organization:organization,
94-
Provisioner:database.ProvisionerType(provisioner),
95-
FileID:resp.ID,
96-
ParameterFile:parameterFile,
98+
Client:client,
99+
Organization:organization,
100+
Provisioner:database.ProvisionerType(provisioner),
101+
FileID:resp.ID,
102+
ParameterFile:parameterFile,
103+
ProvisionerTags:tags,
97104
})
98105
iferr!=nil {
99106
returnerr
@@ -135,6 +142,7 @@ func templateCreate() *cobra.Command {
135142
cmd.Flags().StringVarP(&parameterFile,"parameter-file","","","Specify a file path with parameter values.")
136143
cmd.Flags().DurationVarP(&maxTTL,"max-ttl","",24*time.Hour,"Specify a maximum TTL for workspaces created from this template.")
137144
cmd.Flags().DurationVarP(&minAutostartInterval,"min-autostart-interval","",time.Hour,"Specify a minimum autostart interval for workspaces created from this template.")
145+
cmd.Flags().StringArrayVarP(&provisionerTags,"provisioner-tag","", []string{},"Specify a set of tags to target provisioner daemons.")
138146
// This is for testing!
139147
err:=cmd.Flags().MarkHidden("test.provisioner")
140148
iferr!=nil {
@@ -157,6 +165,7 @@ type createValidTemplateVersionArgs struct {
157165
// before prompting the user. Set to false to always prompt for param
158166
// values.
159167
ReuseParametersbool
168+
ProvisionerTagsmap[string]string
160169
}
161170

162171
funccreateValidTemplateVersion(cmd*cobra.Command,argscreateValidTemplateVersionArgs,parameters...codersdk.CreateParameterRequest) (*codersdk.TemplateVersion, []codersdk.CreateParameterRequest,error) {
@@ -168,6 +177,7 @@ func createValidTemplateVersion(cmd *cobra.Command, args createValidTemplateVers
168177
FileID:args.FileID,
169178
Provisioner:codersdk.ProvisionerType(args.Provisioner),
170179
ParameterValues:parameters,
180+
ProvisionerTags:args.ProvisionerTags,
171181
}
172182
ifargs.Template!=nil {
173183
req.TemplateID=args.Template.ID
@@ -337,3 +347,15 @@ func prettyDirectoryPath(dir string) string {
337347
}
338348
returnpretty
339349
}
350+
351+
funcParseProvisionerTags(rawTags []string) (map[string]string,error) {
352+
tags:=map[string]string{}
353+
for_,rawTag:=rangerawTags {
354+
parts:=strings.SplitN(rawTag,"=",2)
355+
iflen(parts)<2 {
356+
returnnil,xerrors.Errorf("invalid tag format for %q. must be key=value",rawTag)
357+
}
358+
tags[parts[0]]=parts[1]
359+
}
360+
returntags,nil
361+
}

‎cli/templatepush.go

Lines changed: 12 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -18,11 +18,12 @@ import (
1818

1919
functemplatePush()*cobra.Command {
2020
var (
21-
directorystring
22-
versionNamestring
23-
provisionerstring
24-
parameterFilestring
25-
alwaysPromptbool
21+
directorystring
22+
versionNamestring
23+
provisionerstring
24+
parameterFilestring
25+
alwaysPromptbool
26+
provisionerTags []string
2627
)
2728

2829
cmd:=&cobra.Command{
@@ -75,6 +76,11 @@ func templatePush() *cobra.Command {
7576
}
7677
spin.Stop()
7778

79+
tags,err:=ParseProvisionerTags(provisionerTags)
80+
iferr!=nil {
81+
returnerr
82+
}
83+
7884
job,_,err:=createValidTemplateVersion(cmd,createValidTemplateVersionArgs{
7985
Name:versionName,
8086
Client:client,
@@ -84,6 +90,7 @@ func templatePush() *cobra.Command {
8490
ParameterFile:parameterFile,
8591
Template:&template,
8692
ReuseParameters:!alwaysPrompt,
93+
ProvisionerTags:tags,
8794
})
8895
iferr!=nil {
8996
returnerr

‎coderd/database/dbtype/dbtype.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,13 +9,13 @@ import (
99

1010
typeMapmap[string]string
1111

12-
func (mMap)Scan(srcinterface{})error {
12+
func (m*Map)Scan(srcinterface{})error {
1313
ifsrc==nil {
1414
returnnil
1515
}
1616
switchsrc:=src.(type) {
1717
case []byte:
18-
err:=json.Unmarshal(src,&m)
18+
err:=json.Unmarshal(src,m)
1919
iferr!=nil {
2020
returnerr
2121
}

‎enterprise/cli/provisionerdaemons.go

Lines changed: 5 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@ import (
55
"fmt"
66
"os"
77
"os/signal"
8-
"strings"
98
"time"
109

1110
"cdr.dev/slog"
@@ -60,13 +59,9 @@ func provisionerDaemonStart() *cobra.Command {
6059
returnxerrors.Errorf("get current organization: %w",err)
6160
}
6261

63-
tags:=map[string]string{}
64-
for_,rawTag:=rangerawTags {
65-
parts:=strings.SplitN(rawTag,"=",2)
66-
iflen(parts)<2 {
67-
returnxerrors.Errorf("invalid tag format for %q. must be key=value",rawTag)
68-
}
69-
tags[parts[0]]=parts[1]
62+
tags,err:=agpl.ParseProvisionerTags(rawTags)
63+
iferr!=nil {
64+
returnerr
7065
}
7166

7267
err=os.MkdirAll(cacheDir,0o700)
@@ -106,6 +101,8 @@ func provisionerDaemonStart() *cobra.Command {
106101
returnerr
107102
}
108103

104+
logger.Info(ctx,"starting provisioner daemon",slog.F("tags",tags))
105+
109106
provisioners:= provisionerd.Provisioners{
110107
string(database.ProvisionerTypeTerraform):proto.NewDRPCProvisionerClient(provisionersdk.Conn(terraformClient)),
111108
}

‎enterprise/coderd/coderd.go

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -227,13 +227,14 @@ func (api *API) updateEntitlements(ctx context.Context) error {
227227
deferapi.entitlementsMu.Unlock()
228228

229229
entitlements,err:=license.Entitlements(ctx,api.Database,api.Logger,len(api.replicaManager.All()),len(api.GitAuthConfigs),api.Keys,map[string]bool{
230-
codersdk.FeatureAuditLog:api.AuditLogging,
231-
codersdk.FeatureBrowserOnly:api.BrowserOnly,
232-
codersdk.FeatureSCIM:len(api.SCIMAPIKey)!=0,
233-
codersdk.FeatureWorkspaceQuota:api.UserWorkspaceQuota!=0,
234-
codersdk.FeatureHighAvailability:api.DERPServerRelayAddress!="",
235-
codersdk.FeatureMultipleGitAuth:len(api.GitAuthConfigs)>1,
236-
codersdk.FeatureTemplateRBAC:api.RBAC,
230+
codersdk.FeatureAuditLog:api.AuditLogging,
231+
codersdk.FeatureBrowserOnly:api.BrowserOnly,
232+
codersdk.FeatureSCIM:len(api.SCIMAPIKey)!=0,
233+
codersdk.FeatureWorkspaceQuota:api.UserWorkspaceQuota!=0,
234+
codersdk.FeatureHighAvailability:api.DERPServerRelayAddress!="",
235+
codersdk.FeatureMultipleGitAuth:len(api.GitAuthConfigs)>1,
236+
codersdk.FeatureTemplateRBAC:api.RBAC,
237+
codersdk.FeatureExternalProvisionerDaemons:true,
237238
})
238239
iferr!=nil {
239240
returnerr

‎enterprise/coderd/provisionerdaemons.go

Lines changed: 19 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -75,13 +75,15 @@ func (api *API) provisionerDaemons(rw http.ResponseWriter, r *http.Request) {
7575
})
7676
return
7777
}
78-
79-
httpapi.Write(ctx,rw,http.StatusOK,daemons)
78+
apiDaemons:=make([]codersdk.ProvisionerDaemon,0)
79+
for_,daemon:=rangedaemons {
80+
apiDaemons=append(apiDaemons,convertProvisionerDaemon(daemon))
81+
}
82+
httpapi.Write(ctx,rw,http.StatusOK,apiDaemons)
8083
}
8184

8285
// Serves the provisioner daemon protobuf API over a WebSocket.
8386
func (api*API)provisionerDaemonServe(rw http.ResponseWriter,r*http.Request) {
84-
8587
tags:=map[string]string{}
8688
ifr.URL.Query().Has("tag") {
8789
for_,tag:=ranger.URL.Query()["tag"] {
@@ -102,13 +104,13 @@ func (api *API) provisionerDaemonServe(rw http.ResponseWriter, r *http.Request)
102104
return
103105
}
104106

105-
provisioners:=map[codersdk.ProvisionerType]struct{}{}
107+
provisionersMap:=map[codersdk.ProvisionerType]struct{}{}
106108
for_,provisioner:=ranger.URL.Query()["provisioner"] {
107109
switchprovisioner {
108110
casestring(codersdk.ProvisionerTypeEcho):
109-
provisioners[codersdk.ProvisionerTypeEcho]=struct{}{}
111+
provisionersMap[codersdk.ProvisionerTypeEcho]=struct{}{}
110112
casestring(codersdk.ProvisionerTypeTerraform):
111-
provisioners[codersdk.ProvisionerTypeTerraform]=struct{}{}
113+
provisionersMap[codersdk.ProvisionerTypeTerraform]=struct{}{}
112114
default:
113115
httpapi.Write(r.Context(),rw,http.StatusBadRequest, codersdk.Response{
114116
Message:fmt.Sprintf("Unknown provisioner type %q",provisioner),
@@ -132,12 +134,22 @@ func (api *API) provisionerDaemonServe(rw http.ResponseWriter, r *http.Request)
132134
}
133135
}
134136

137+
provisioners:=make([]database.ProvisionerType,0)
138+
forp:=rangeprovisionersMap {
139+
switchp {
140+
casecodersdk.ProvisionerTypeTerraform:
141+
provisioners=append(provisioners,database.ProvisionerTypeTerraform)
142+
casecodersdk.ProvisionerTypeEcho:
143+
provisioners=append(provisioners,database.ProvisionerTypeEcho)
144+
}
145+
}
146+
135147
name:=namesgenerator.GetRandomName(1)
136148
daemon,err:=api.Database.InsertProvisionerDaemon(r.Context(), database.InsertProvisionerDaemonParams{
137149
ID:uuid.New(),
138150
CreatedAt:database.Now(),
139151
Name:name,
140-
Provisioners:[]database.ProvisionerType{database.ProvisionerTypeEcho,database.ProvisionerTypeTerraform},
152+
Provisioners:provisioners,
141153
Tags:tags,
142154
})
143155
iferr!=nil {

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp