Skip to content

Commit 8ef24ef

Browse files
committed
chore: append template metadata to protobuf config
1 parent 7c8deaf commit 8ef24ef

File tree

12 files changed

+610
-502
lines changed

12 files changed

+610
-502
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: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -704,6 +704,7 @@ func (s *server) acquireProtoJob(ctx context.Context, job database.ProvisionerJo
704704
PreviousParameterValues: convertRichParameterValues(lastWorkspaceBuildParameters),
705705
VariableValues: asVariableValues(templateVariables),
706706
ExternalAuthProviders: externalAuthProviders,
707+
ReuseTerraformWorkspace: false, // TODO: Toggle based on experiment
707708
Metadata: &sdkproto.Metadata{
708709
CoderUrl: s.AccessURL.String(),
709710
WorkspaceTransition: transition,
@@ -773,6 +774,11 @@ func (s *server) acquireProtoJob(ctx context.Context, job database.ProvisionerJo
773774
return nil, failJob(err.Error())
774775
}
775776

777+
templateID := ""
778+
if input.TemplateID.Valid {
779+
templateID = input.TemplateID.UUID.String()
780+
}
781+
776782
protoJob.Type = &proto.AcquiredJob_TemplateImport_{
777783
TemplateImport: &proto.AcquiredJob_TemplateImport{
778784
UserVariableValues: convertVariableValues(userVariableValues),
@@ -781,6 +787,8 @@ func (s *server) acquireProtoJob(ctx context.Context, job database.ProvisionerJo
781787
// There is no owner for a template import, but we can assume
782788
// the "Everyone" group as a placeholder.
783789
WorkspaceOwnerGroups: []string{database.EveryoneGroup},
790+
TemplateId: templateID,
791+
TemplateVersionId: input.TemplateVersionID.String(),
784792
},
785793
},
786794
}
@@ -3210,6 +3218,10 @@ func auditActionFromTransition(transition database.WorkspaceTransition) database
32103218
}
32113219

32123220
type TemplateVersionImportJob struct {
3221+
// TemplateID is not guaranteed to be set. Template versions can be created
3222+
// without being associated with a template. Resulting in a template id of
3223+
// `uuid.Nil`
3224+
TemplateID uuid.NullUUID `json:"template_id"`
32133225
TemplateVersionID uuid.UUID `json:"template_version_id"`
32143226
UserVariableValues []codersdk.VariableValue `json:"user_variable_values"`
32153227
}

coderd/provisionerdserver/provisionerdserver_test.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -629,6 +629,7 @@ func TestAcquireJob(t *testing.T) {
629629
Metadata: &sdkproto.Metadata{
630630
CoderUrl: (&url.URL{}).String(),
631631
WorkspaceOwnerGroups: []string{database.EveryoneGroup},
632+
TemplateVersionId: uuid.Nil.String(),
632633
},
633634
},
634635
})
@@ -677,6 +678,7 @@ func TestAcquireJob(t *testing.T) {
677678
Metadata: &sdkproto.Metadata{
678679
CoderUrl: (&url.URL{}).String(),
679680
WorkspaceOwnerGroups: []string{database.EveryoneGroup},
681+
TemplateVersionId: version.ID.String(),
680682
},
681683
},
682684
})

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
var matchedProvisioners 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
})

provisionerd/proto/provisionerd.pb.go

Lines changed: 268 additions & 256 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

provisionerd/proto/provisionerd.proto

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ message AcquiredJob {
2626
// workspace build. Omit these values if the workspace is being created
2727
// for the first time.
2828
repeated provisioner.RichParameterValue previous_parameter_values = 10;
29+
bool reuse_terraform_workspace = 11;
2930
}
3031
message TemplateImport {
3132
provisioner.Metadata metadata = 1;

provisionerd/proto/version.go

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -57,9 +57,14 @@ import "github.com/coder/coder/v2/apiversion"
5757
// API v1.11:
5858
// - Added new fields `task_id` and `task_prompt` to `Manifest`.
5959
// - Added new field `app_id` to `AITask`
60+
//
61+
// API v1.12:
62+
// - Added new field `template_version_id` to `provisioner.Metadata`
63+
// - Added new field `terraform_workspace_reuse` to `provisioner.Job.WorkspaceBuild`
64+
// - Added fields `template_version_id`, `template_id`, and `terraform_workspace_reuse` to `provisioner.Config`
6065
const (
6166
CurrentMajor = 1
62-
CurrentMinor = 11
67+
CurrentMinor = 12
6368
)
6469

6570
// CurrentVersion is the current provisionerd API version.

provisionerd/runner/runner.go

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -514,7 +514,10 @@ func (r *Runner) runTemplateImport(ctx context.Context) (*proto.CompletedJob, *p
514514
defer span.End()
515515

516516
failedJob := r.configure(&sdkproto.Config{
517-
TemplateSourceArchive: r.job.GetTemplateSourceArchive(),
517+
TemplateSourceArchive: r.job.GetTemplateSourceArchive(),
518+
TemplateId: r.job.GetTemplateImport().Metadata.TemplateId,
519+
TemplateVersionId: r.job.GetTemplateImport().Metadata.TemplateVersionId,
520+
TerraformWorkspaceReuse: false,
518521
})
519522
if failedJob != nil {
520523
return nil, failedJob
@@ -1010,9 +1013,12 @@ func (r *Runner) runWorkspaceBuild(ctx context.Context) (*proto.CompletedJob, *p
10101013
}
10111014

10121015
failedJob := r.configure(&sdkproto.Config{
1013-
TemplateSourceArchive: r.job.GetTemplateSourceArchive(),
1014-
State: r.job.GetWorkspaceBuild().State,
1015-
ProvisionerLogLevel: r.job.GetWorkspaceBuild().LogLevel,
1016+
TemplateSourceArchive: r.job.GetTemplateSourceArchive(),
1017+
State: r.job.GetWorkspaceBuild().State,
1018+
ProvisionerLogLevel: r.job.GetWorkspaceBuild().LogLevel,
1019+
TemplateId: r.job.GetWorkspaceBuild().Metadata.TemplateId,
1020+
TemplateVersionId: r.job.GetWorkspaceBuild().Metadata.TemplateVersionId,
1021+
TerraformWorkspaceReuse: r.job.GetWorkspaceBuild().ReuseTerraformWorkspace,
10161022
})
10171023
if failedJob != nil {
10181024
return nil, failedJob

0 commit comments

Comments
 (0)