Skip to content

Commit 67115b1

Browse files
committed
chore: append template metadata to protobuf config
1 parent bbf6058 commit 67115b1

File tree

12 files changed

+604
-502
lines changed

12 files changed

+604
-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.UUID,
625626
TemplateVersionID: t.seed.ID,
626627
})
627628
require.NoError(t.t, err)

coderd/provisionerdserver/provisionerdserver.go

Lines changed: 7 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+
TerraformWorkspaceReuse: false, // TODO: Toggle based on experiment
707708
Metadata: &sdkproto.Metadata{
708709
CoderUrl: s.AccessURL.String(),
709710
WorkspaceTransition: transition,
@@ -781,6 +782,8 @@ func (s *server) acquireProtoJob(ctx context.Context, job database.ProvisionerJo
781782
// There is no owner for a template import, but we can assume
782783
// the "Everyone" group as a placeholder.
783784
WorkspaceOwnerGroups: []string{database.EveryoneGroup},
785+
TemplateId: input.TemplateID.String(),
786+
TemplateVersionId: input.TemplateVersionID.String(),
784787
},
785788
},
786789
}
@@ -3210,6 +3213,10 @@ func auditActionFromTransition(transition database.WorkspaceTransition) database
32103213
}
32113214

32123215
type TemplateVersionImportJob struct {
3216+
// TemplateID is not guaranteed to be set. Template versions can be created
3217+
// without being associated with a template. Resulting in a template id of
3218+
// `uuid.Nil`
3219+
TemplateID uuid.UUID `json:"template_id"`
32133220
TemplateVersionID uuid.UUID `json:"template_version_id"`
32143221
UserVariableValues []codersdk.VariableValue `json:"user_variable_values"`
32153222
}

coderd/provisionerdserver/provisionerdserver_test.go

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -629,6 +629,8 @@ func TestAcquireJob(t *testing.T) {
629629
Metadata: &sdkproto.Metadata{
630630
CoderUrl: (&url.URL{}).String(),
631631
WorkspaceOwnerGroups: []string{database.EveryoneGroup},
632+
TemplateVersionId: uuid.Nil.String(),
633+
TemplateId: uuid.Nil.String(),
632634
},
633635
},
634636
})
@@ -677,6 +679,8 @@ func TestAcquireJob(t *testing.T) {
677679
Metadata: &sdkproto.Metadata{
678680
CoderUrl: (&url.URL{}).String(),
679681
WorkspaceOwnerGroups: []string{database.EveryoneGroup},
682+
TemplateVersionId: version.ID.String(),
683+
TemplateId: uuid.Nil.String(),
680684
},
681685
},
682686
})

coderd/templateversions.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1609,9 +1609,10 @@ 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: req.TemplateID,
16151616
TemplateVersionID: templateVersionID,
16161617
UserVariableValues: req.UserVariableValues,
16171618
})

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 terraform_workspace_reuse = 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().TerraformWorkspaceReuse,
10161022
})
10171023
if failedJob != nil {
10181024
return nil, failedJob

0 commit comments

Comments
 (0)