From 600a43057b7b388bd86dc8da8b0e54d3895389e3 Mon Sep 17 00:00:00 2001 From: Steven Masley Date: Thu, 5 Jun 2025 12:17:24 -0500 Subject: [PATCH 1/4] chore: assume everyone group in template importing --- coderd/provisionerdserver/provisionerdserver.go | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/coderd/provisionerdserver/provisionerdserver.go b/coderd/provisionerdserver/provisionerdserver.go index 111f4185d3910..31165cf89f65b 100644 --- a/coderd/provisionerdserver/provisionerdserver.go +++ b/coderd/provisionerdserver/provisionerdserver.go @@ -739,6 +739,9 @@ func (s *server) acquireProtoJob(ctx context.Context, job database.ProvisionerJo Metadata: &sdkproto.Metadata{ CoderUrl: s.AccessURL.String(), WorkspaceName: input.WorkspaceName, + // There is no owner for a template import, but we can assume + // the "Everyone" group as a placeholder. + WorkspaceOwnerGroups: []string{database.EveryoneGroup}, }, }, } @@ -759,6 +762,9 @@ func (s *server) acquireProtoJob(ctx context.Context, job database.ProvisionerJo UserVariableValues: convertVariableValues(userVariableValues), Metadata: &sdkproto.Metadata{ CoderUrl: s.AccessURL.String(), + // There is no owner for a template import, but we can assume + // the "Everyone" group as a placeholder. + WorkspaceOwnerGroups: []string{database.EveryoneGroup}, }, }, } From c328dba4721903b4e427ddd248040e42c0f9f8ca Mon Sep 17 00:00:00 2001 From: Steven Masley Date: Thu, 5 Jun 2025 12:31:05 -0500 Subject: [PATCH 2/4] add missing implied group --- provisionerd/runner/runner.go | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/provisionerd/runner/runner.go b/provisionerd/runner/runner.go index ed1f134556fba..cd993023b79d7 100644 --- a/provisionerd/runner/runner.go +++ b/provisionerd/runner/runner.go @@ -552,8 +552,9 @@ func (r *Runner) runTemplateImport(ctx context.Context) (*proto.CompletedJob, *p CreatedAt: time.Now().UnixMilli(), }) startProvision, err := r.runTemplateImportProvision(ctx, updateResponse.VariableValues, &sdkproto.Metadata{ - CoderUrl: r.job.GetTemplateImport().Metadata.CoderUrl, - WorkspaceTransition: sdkproto.WorkspaceTransition_START, + CoderUrl: r.job.GetTemplateImport().Metadata.CoderUrl, + WorkspaceOwnerGroups: r.job.GetTemplateImport().Metadata.WorkspaceOwnerGroups, + WorkspaceTransition: sdkproto.WorkspaceTransition_START, }) if err != nil { return nil, r.failedJobf("template import provision for start: %s", err) @@ -567,8 +568,9 @@ func (r *Runner) runTemplateImport(ctx context.Context) (*proto.CompletedJob, *p CreatedAt: time.Now().UnixMilli(), }) stopProvision, err := r.runTemplateImportProvision(ctx, updateResponse.VariableValues, &sdkproto.Metadata{ - CoderUrl: r.job.GetTemplateImport().Metadata.CoderUrl, - WorkspaceTransition: sdkproto.WorkspaceTransition_STOP, + CoderUrl: r.job.GetTemplateImport().Metadata.CoderUrl, + WorkspaceOwnerGroups: r.job.GetTemplateImport().Metadata.WorkspaceOwnerGroups, + WorkspaceTransition: sdkproto.WorkspaceTransition_STOP, }) if err != nil { return nil, r.failedJobf("template import provision for stop: %s", err) @@ -771,6 +773,7 @@ func (r *Runner) runTemplateDryRun(ctx context.Context) (*proto.CompletedJob, *p // Ensure all metadata fields are set as they are all optional for dry-run. metadata := r.job.GetTemplateDryRun().GetMetadata() metadata.WorkspaceTransition = sdkproto.WorkspaceTransition_START + metadata.WorkspaceOwnerGroups = metadata.WorkspaceOwnerGroups if metadata.CoderUrl == "" { metadata.CoderUrl = "http://localhost:3000" } From da39c416b08d9c75b7f2bae93935c358444ed029 Mon Sep 17 00:00:00 2001 From: Steven Masley Date: Thu, 5 Jun 2025 12:35:30 -0500 Subject: [PATCH 3/4] linting --- provisionerd/runner/runner.go | 1 - 1 file changed, 1 deletion(-) diff --git a/provisionerd/runner/runner.go b/provisionerd/runner/runner.go index cd993023b79d7..2894dadb8ff0a 100644 --- a/provisionerd/runner/runner.go +++ b/provisionerd/runner/runner.go @@ -773,7 +773,6 @@ func (r *Runner) runTemplateDryRun(ctx context.Context) (*proto.CompletedJob, *p // Ensure all metadata fields are set as they are all optional for dry-run. metadata := r.job.GetTemplateDryRun().GetMetadata() metadata.WorkspaceTransition = sdkproto.WorkspaceTransition_START - metadata.WorkspaceOwnerGroups = metadata.WorkspaceOwnerGroups if metadata.CoderUrl == "" { metadata.CoderUrl = "http://localhost:3000" } From 51f5ef8d62d1a0bb59c739e388a0d8499ade6cfe Mon Sep 17 00:00:00 2001 From: Steven Masley Date: Thu, 5 Jun 2025 14:13:32 -0500 Subject: [PATCH 4/4] update test assert --- coderd/provisionerdserver/provisionerdserver_test.go | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/coderd/provisionerdserver/provisionerdserver_test.go b/coderd/provisionerdserver/provisionerdserver_test.go index 1756aa68e15fc..67fb267fb4c23 100644 --- a/coderd/provisionerdserver/provisionerdserver_test.go +++ b/coderd/provisionerdserver/provisionerdserver_test.go @@ -568,8 +568,9 @@ func TestAcquireJob(t *testing.T) { want, err := json.Marshal(&proto.AcquiredJob_TemplateDryRun_{ TemplateDryRun: &proto.AcquiredJob_TemplateDryRun{ Metadata: &sdkproto.Metadata{ - CoderUrl: (&url.URL{}).String(), - WorkspaceName: "testing", + CoderUrl: (&url.URL{}).String(), + WorkspaceName: "testing", + WorkspaceOwnerGroups: []string{database.EveryoneGroup}, }, }, }) @@ -600,7 +601,8 @@ func TestAcquireJob(t *testing.T) { want, err := json.Marshal(&proto.AcquiredJob_TemplateImport_{ TemplateImport: &proto.AcquiredJob_TemplateImport{ Metadata: &sdkproto.Metadata{ - CoderUrl: (&url.URL{}).String(), + CoderUrl: (&url.URL{}).String(), + WorkspaceOwnerGroups: []string{database.EveryoneGroup}, }, }, }) @@ -643,7 +645,8 @@ func TestAcquireJob(t *testing.T) { {Name: "first", Sensitive: true, Value: "first_value"}, }, Metadata: &sdkproto.Metadata{ - CoderUrl: (&url.URL{}).String(), + CoderUrl: (&url.URL{}).String(), + WorkspaceOwnerGroups: []string{database.EveryoneGroup}, }, }, })