Skip to content

Commit de12702

Browse files
committed
chore: make proto fields optional
1 parent afadb85 commit de12702

File tree

5 files changed

+31
-20
lines changed

5 files changed

+31
-20
lines changed

coderd/provisionerdserver/provisionerdserver.go

Lines changed: 9 additions & 8 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,14 +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,
707-
ReuseTerraformWorkspace: false, // TODO: Toggle based on experiment
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
708709
Metadata: &sdkproto.Metadata{
709710
CoderUrl: s.AccessURL.String(),
710711
WorkspaceTransition: transition,

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+
func EmptyToNil(s string) *string {
16+
if s == "" {
17+
return nil
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
func JoinWithConjunction(s []string) string {

provisionerd/proto/version.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,7 @@ import "github.com/coder/coder/v2/apiversion"
6060
//
6161
// API v1.12:
6262
// - Added new field `template_version_id` to `provisioner.Metadata`
63-
// - Added new field `terraform_workspace_reuse` to `provisioner.Job.WorkspaceBuild`
63+
// - Added new field `exp_reuse_terraform_workspace` to `provisioner.Job.WorkspaceBuild`
6464
// - Added fields `template_version_id`, `template_id`, and `terraform_workspace_reuse` to `provisioner.Config`
6565
const (
6666
CurrentMajor = 1

provisionerd/runner/runner.go

Lines changed: 11 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ import (
2121
"golang.org/x/xerrors"
2222

2323
"cdr.dev/slog"
24+
strings2 "github.com/coder/coder/v2/coderd/util/strings"
2425

2526
"github.com/coder/coder/v2/coderd/tracing"
2627
"github.com/coder/coder/v2/coderd/util/ptr"
@@ -514,10 +515,10 @@ func (r *Runner) runTemplateImport(ctx context.Context) (*proto.CompletedJob, *p
514515
defer span.End()
515516

516517
failedJob := r.configure(&sdkproto.Config{
517-
TemplateSourceArchive: r.job.GetTemplateSourceArchive(),
518-
TemplateId: r.job.GetTemplateImport().Metadata.TemplateId,
519-
TemplateVersionId: r.job.GetTemplateImport().Metadata.TemplateVersionId,
520-
TerraformWorkspaceReuse: false,
518+
TemplateSourceArchive: r.job.GetTemplateSourceArchive(),
519+
TemplateId: strings2.EmptyToNil(r.job.GetTemplateImport().Metadata.TemplateId),
520+
TemplateVersionId: strings2.EmptyToNil(r.job.GetTemplateImport().Metadata.TemplateVersionId),
521+
ExpTerraformWorkspaceReuse: ptr.Ref(false),
521522
})
522523
if failedJob != nil {
523524
return nil, failedJob
@@ -1013,12 +1014,12 @@ func (r *Runner) runWorkspaceBuild(ctx context.Context) (*proto.CompletedJob, *p
10131014
}
10141015

10151016
failedJob := r.configure(&sdkproto.Config{
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,
1017+
TemplateSourceArchive: r.job.GetTemplateSourceArchive(),
1018+
State: r.job.GetWorkspaceBuild().State,
1019+
ProvisionerLogLevel: r.job.GetWorkspaceBuild().LogLevel,
1020+
TemplateId: strings2.EmptyToNil(r.job.GetWorkspaceBuild().Metadata.TemplateId),
1021+
TemplateVersionId: strings2.EmptyToNil(r.job.GetWorkspaceBuild().Metadata.TemplateVersionId),
1022+
ExpTerraformWorkspaceReuse: r.job.GetWorkspaceBuild().ExpReuseTerraformWorkspace,
10221023
})
10231024
if failedJob != nil {
10241025
return nil, failedJob

provisionersdk/proto/provisioner.proto

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -378,7 +378,7 @@ message Config {
378378
optional string template_id = 4;
379379
// Dry runs omit version id
380380
optional string template_version_id = 5;
381-
optional bool exp_terraform_workspace_reuse = 6; // Whether to reuse existing terraform workspaces if they exist.
381+
optional bool exp_reuse_terraform_workspace = 6; // Whether to reuse existing terraform workspaces if they exist.
382382
}
383383

384384
// ParseRequest consumes source-code to produce inputs.

0 commit comments

Comments
 (0)