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

Commit9149c1e

Browse files
authored
chore: append template metadata to protobuf config (#20558)
Adds some extra meta data sent to provisioners. Also adds a field`reuse_terraform_workspace` to tell the provisioner whether or not touse the caching experiment.
1 parent5e85663 commit9149c1e

File tree

13 files changed

+663
-521
lines changed

13 files changed

+663
-521
lines changed

‎cli/testdata/coder_provisioner_list_--output_json.golden‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
"last_seen_at": "====[timestamp]=====",
88
"name": "test-daemon",
99
"version": "v0.0.0-devel",
10-
"api_version": "1.11",
10+
"api_version": "1.12",
1111
"provisioners": [
1212
"echo"
1313
],

‎coderd/database/dbfake/dbfake.go‎

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -622,6 +622,7 @@ func (t TemplateVersionBuilder) Do() TemplateVersionResponse {
622622
}
623623

624624
payload,err:=json.Marshal(provisionerdserver.TemplateVersionImportJob{
625+
TemplateID:t.seed.TemplateID,
625626
TemplateVersionID:t.seed.ID,
626627
})
627628
require.NoError(t.t,err)

‎coderd/provisionerdserver/provisionerdserver.go‎

Lines changed: 20 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,7 @@ import (
4343
"github.com/coder/coder/v2/coderd/tracing"
4444
"github.com/coder/coder/v2/coderd/usage"
4545
"github.com/coder/coder/v2/coderd/usage/usagetypes"
46+
"github.com/coder/coder/v2/coderd/util/ptr"
4647
"github.com/coder/coder/v2/coderd/util/slice"
4748
"github.com/coder/coder/v2/coderd/wspubsub"
4849
"github.com/coder/coder/v2/codersdk"
@@ -697,13 +698,14 @@ func (s *server) acquireProtoJob(ctx context.Context, job database.ProvisionerJo
697698

698699
protoJob.Type=&proto.AcquiredJob_WorkspaceBuild_{
699700
WorkspaceBuild:&proto.AcquiredJob_WorkspaceBuild{
700-
WorkspaceBuildId:workspaceBuild.ID.String(),
701-
WorkspaceName:workspace.Name,
702-
State:workspaceBuild.ProvisionerState,
703-
RichParameterValues:convertRichParameterValues(workspaceBuildParameters),
704-
PreviousParameterValues:convertRichParameterValues(lastWorkspaceBuildParameters),
705-
VariableValues:asVariableValues(templateVariables),
706-
ExternalAuthProviders:externalAuthProviders,
701+
WorkspaceBuildId:workspaceBuild.ID.String(),
702+
WorkspaceName:workspace.Name,
703+
State:workspaceBuild.ProvisionerState,
704+
RichParameterValues:convertRichParameterValues(workspaceBuildParameters),
705+
PreviousParameterValues:convertRichParameterValues(lastWorkspaceBuildParameters),
706+
VariableValues:asVariableValues(templateVariables),
707+
ExternalAuthProviders:externalAuthProviders,
708+
ExpReuseTerraformWorkspace:ptr.Ref(false),// TODO: Toggle based on experiment
707709
Metadata:&sdkproto.Metadata{
708710
CoderUrl:s.AccessURL.String(),
709711
WorkspaceTransition:transition,
@@ -773,6 +775,11 @@ func (s *server) acquireProtoJob(ctx context.Context, job database.ProvisionerJo
773775
returnnil,failJob(err.Error())
774776
}
775777

778+
templateID:=""
779+
ifinput.TemplateID.Valid {
780+
templateID=input.TemplateID.UUID.String()
781+
}
782+
776783
protoJob.Type=&proto.AcquiredJob_TemplateImport_{
777784
TemplateImport:&proto.AcquiredJob_TemplateImport{
778785
UserVariableValues:convertVariableValues(userVariableValues),
@@ -781,6 +788,8 @@ func (s *server) acquireProtoJob(ctx context.Context, job database.ProvisionerJo
781788
// There is no owner for a template import, but we can assume
782789
// the "Everyone" group as a placeholder.
783790
WorkspaceOwnerGroups: []string{database.EveryoneGroup},
791+
TemplateId:templateID,
792+
TemplateVersionId:input.TemplateVersionID.String(),
784793
},
785794
},
786795
}
@@ -3210,6 +3219,10 @@ func auditActionFromTransition(transition database.WorkspaceTransition) database
32103219
}
32113220

32123221
typeTemplateVersionImportJobstruct {
3222+
// TemplateID is not guaranteed to be set. Template versions can be created
3223+
// without being associated with a template. Resulting in a template id of
3224+
// `uuid.Nil`
3225+
TemplateID uuid.NullUUID`json:"template_id"`
32133226
TemplateVersionID uuid.UUID`json:"template_version_id"`
32143227
UserVariableValues []codersdk.VariableValue`json:"user_variable_values"`
32153228
}

‎coderd/provisionerdserver/provisionerdserver_test.go‎

Lines changed: 18 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ import (
2626
"storj.io/drpc"
2727

2828
"cdr.dev/slog/sloggers/slogtest"
29+
"github.com/coder/coder/v2/coderd/util/ptr"
2930
"github.com/coder/quartz"
3031
"github.com/coder/serpent"
3132

@@ -59,24 +60,24 @@ import (
5960
)
6061

6162
functestTemplateScheduleStore()*atomic.Pointer[schedule.TemplateScheduleStore] {
62-
ptr:=&atomic.Pointer[schedule.TemplateScheduleStore]{}
63+
poitr:=&atomic.Pointer[schedule.TemplateScheduleStore]{}
6364
store:=schedule.NewAGPLTemplateScheduleStore()
64-
ptr.Store(&store)
65-
returnptr
65+
poitr.Store(&store)
66+
returnpoitr
6667
}
6768

6869
functestUserQuietHoursScheduleStore()*atomic.Pointer[schedule.UserQuietHoursScheduleStore] {
69-
ptr:=&atomic.Pointer[schedule.UserQuietHoursScheduleStore]{}
70+
poitr:=&atomic.Pointer[schedule.UserQuietHoursScheduleStore]{}
7071
store:=schedule.NewAGPLUserQuietHoursScheduleStore()
71-
ptr.Store(&store)
72-
returnptr
72+
poitr.Store(&store)
73+
returnpoitr
7374
}
7475

7576
functestUsageInserter()*atomic.Pointer[usage.Inserter] {
76-
ptr:=&atomic.Pointer[usage.Inserter]{}
77+
poitr:=&atomic.Pointer[usage.Inserter]{}
7778
inserter:=usage.NewAGPLInserter()
78-
ptr.Store(&inserter)
79-
returnptr
79+
poitr.Store(&inserter)
80+
returnpoitr
8081
}
8182

8283
funcTestAcquireJob_LongPoll(t*testing.T) {
@@ -474,8 +475,9 @@ func TestAcquireJob(t *testing.T) {
474475
})
475476
want,err:=json.Marshal(&proto.AcquiredJob_WorkspaceBuild_{
476477
WorkspaceBuild:&proto.AcquiredJob_WorkspaceBuild{
477-
WorkspaceBuildId:build.ID.String(),
478-
WorkspaceName:workspace.Name,
478+
ExpReuseTerraformWorkspace:ptr.Ref(false),
479+
WorkspaceBuildId:build.ID.String(),
480+
WorkspaceName:workspace.Name,
479481
VariableValues: []*sdkproto.VariableValue{
480482
{
481483
Name:"first",
@@ -629,6 +631,7 @@ func TestAcquireJob(t *testing.T) {
629631
Metadata:&sdkproto.Metadata{
630632
CoderUrl: (&url.URL{}).String(),
631633
WorkspaceOwnerGroups: []string{database.EveryoneGroup},
634+
TemplateVersionId:uuid.Nil.String(),
632635
},
633636
},
634637
})
@@ -677,6 +680,7 @@ func TestAcquireJob(t *testing.T) {
677680
Metadata:&sdkproto.Metadata{
678681
CoderUrl: (&url.URL{}).String(),
679682
WorkspaceOwnerGroups: []string{database.EveryoneGroup},
683+
TemplateVersionId:version.ID.String(),
680684
},
681685
},
682686
})
@@ -4392,11 +4396,11 @@ type fakeUsageInserter struct {
43924396
var_ usage.Inserter=&fakeUsageInserter{}
43934397

43944398
funcnewFakeUsageInserter() (*fakeUsageInserter,*atomic.Pointer[usage.Inserter]) {
4395-
ptr:=&atomic.Pointer[usage.Inserter]{}
4399+
poitr:=&atomic.Pointer[usage.Inserter]{}
43964400
fake:=&fakeUsageInserter{}
43974401
varinserter usage.Inserter=fake
4398-
ptr.Store(&inserter)
4399-
returnfake,ptr
4402+
poitr.Store(&inserter)
4403+
returnfake,poitr
44004404
}
44014405

44024406
func (f*fakeUsageInserter)InsertDiscreteUsageEvent(_ context.Context,_ database.Store,event usagetypes.DiscreteEvent)error {

‎coderd/templateversions.go‎

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1609,9 +1609,13 @@ func (api *API) postTemplateVersionsByOrganization(rw http.ResponseWriter, r *ht
16091609
varmatchedProvisioners codersdk.MatchedProvisioners
16101610
err=api.Database.InTx(func(tx database.Store)error {
16111611
jobID:=uuid.New()
1612-
16131612
templateVersionID:=uuid.New()
1613+
16141614
jobInput,err:=json.Marshal(provisionerdserver.TemplateVersionImportJob{
1615+
TemplateID: uuid.NullUUID{
1616+
UUID:req.TemplateID,
1617+
Valid:req.TemplateID!=uuid.Nil,
1618+
},
16151619
TemplateVersionID:templateVersionID,
16161620
UserVariableValues:req.UserVariableValues,
16171621
})

‎coderd/util/strings/strings.go‎

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,15 @@ import (
1010
"github.com/microcosm-cc/bluemonday"
1111
)
1212

13+
// EmptyToNil returns a `nil` for an empty string, or a pointer to the string
14+
// otherwise. Useful when needing to treat zero values as nil in APIs.
15+
funcEmptyToNil(sstring)*string {
16+
ifs=="" {
17+
returnnil
18+
}
19+
return&s
20+
}
21+
1322
// JoinWithConjunction joins a slice of strings with commas except for the last
1423
// two which are joined with "and".
1524
funcJoinWithConjunction(s []string)string {

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp