Skip to content

Commit 3d67a0d

Browse files
committed
Add git auth providers to the API
1 parent 6a61712 commit 3d67a0d

File tree

4 files changed

+57
-39
lines changed

4 files changed

+57
-39
lines changed

coderd/provisionerdserver/provisionerdserver.go

Lines changed: 18 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@ import (
2929
"github.com/coder/coder/coderd/database/dbauthz"
3030
"github.com/coder/coder/coderd/parameter"
3131
"github.com/coder/coder/coderd/telemetry"
32+
"github.com/coder/coder/coderd/util/slice"
3233
"github.com/coder/coder/codersdk"
3334
"github.com/coder/coder/provisioner"
3435
"github.com/coder/coder/provisionerd/proto"
@@ -42,16 +43,17 @@ var (
4243
)
4344

4445
type Server struct {
45-
AccessURL *url.URL
46-
ID uuid.UUID
47-
Logger slog.Logger
48-
Provisioners []database.ProvisionerType
49-
Tags json.RawMessage
50-
Database database.Store
51-
Pubsub database.Pubsub
52-
Telemetry telemetry.Reporter
53-
QuotaCommitter *atomic.Pointer[proto.QuotaCommitter]
54-
Auditor *atomic.Pointer[audit.Auditor]
46+
AccessURL *url.URL
47+
ID uuid.UUID
48+
Logger slog.Logger
49+
Provisioners []database.ProvisionerType
50+
GitAuthProviders []string
51+
Tags json.RawMessage
52+
Database database.Store
53+
Pubsub database.Pubsub
54+
Telemetry telemetry.Reporter
55+
QuotaCommitter *atomic.Pointer[proto.QuotaCommitter]
56+
Auditor *atomic.Pointer[audit.Auditor]
5557

5658
AcquireJobDebounce time.Duration
5759
}
@@ -810,6 +812,12 @@ func (server *Server) CompleteJob(ctx context.Context, completed *proto.Complete
810812
}
811813
}
812814

815+
for _, gitAuthProvider := range jobType.TemplateImport.GitAuthProviders {
816+
if !slice.Contains(server.GitAuthProviders, gitAuthProvider) {
817+
return nil, xerrors.Errorf("git auth provider %q is not configured", gitAuthProvider)
818+
}
819+
}
820+
813821
err = server.Database.UpdateTemplateVersionGitAuthProvidersByJobID(ctx, database.UpdateTemplateVersionGitAuthProvidersByJobIDParams{
814822
JobID: jobID,
815823
GitAuthProviders: jobType.TemplateImport.GitAuthProviders,

coderd/provisionerdserver/provisionerdserver_test.go

Lines changed: 19 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -756,18 +756,26 @@ func TestCompleteJob(t *testing.T) {
756756
Types: []database.ProvisionerType{database.ProvisionerTypeEcho},
757757
})
758758
require.NoError(t, err)
759-
_, err = srv.CompleteJob(ctx, &proto.CompletedJob{
760-
JobId: job.ID.String(),
761-
Type: &proto.CompletedJob_TemplateImport_{
762-
TemplateImport: &proto.CompletedJob_TemplateImport{
763-
StartResources: []*sdkproto.Resource{{
764-
Name: "hello",
765-
Type: "aws_instance",
766-
}},
767-
StopResources: []*sdkproto.Resource{},
759+
completeJob := func() error {
760+
_, err = srv.CompleteJob(ctx, &proto.CompletedJob{
761+
JobId: job.ID.String(),
762+
Type: &proto.CompletedJob_TemplateImport_{
763+
TemplateImport: &proto.CompletedJob_TemplateImport{
764+
StartResources: []*sdkproto.Resource{{
765+
Name: "hello",
766+
Type: "aws_instance",
767+
}},
768+
StopResources: []*sdkproto.Resource{},
769+
GitAuthProviders: []string{"github"},
770+
},
768771
},
769-
},
770-
})
772+
})
773+
return err
774+
}
775+
err = completeJob()
776+
require.ErrorContains(t, err, `git auth provider "github" is not configured`)
777+
srv.GitAuthProviders = []string{"github"}
778+
err = completeJob()
771779
require.NoError(t, err)
772780
})
773781
t.Run("WorkspaceBuild", func(t *testing.T) {

coderd/templateversions.go

Lines changed: 10 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1461,15 +1461,16 @@ func convertTemplateVersion(version database.TemplateVersion, job codersdk.Provi
14611461
}
14621462

14631463
return codersdk.TemplateVersion{
1464-
ID: version.ID,
1465-
TemplateID: &version.TemplateID.UUID,
1466-
OrganizationID: version.OrganizationID,
1467-
CreatedAt: version.CreatedAt,
1468-
UpdatedAt: version.UpdatedAt,
1469-
Name: version.Name,
1470-
Job: job,
1471-
Readme: version.Readme,
1472-
CreatedBy: createdBy,
1464+
ID: version.ID,
1465+
TemplateID: &version.TemplateID.UUID,
1466+
OrganizationID: version.OrganizationID,
1467+
CreatedAt: version.CreatedAt,
1468+
UpdatedAt: version.UpdatedAt,
1469+
GitAuthProviders: version.GitAuthProviders,
1470+
Name: version.Name,
1471+
Job: job,
1472+
Readme: version.Readme,
1473+
CreatedBy: createdBy,
14731474
}
14741475
}
14751476

codersdk/templateversions.go

Lines changed: 10 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -13,15 +13,16 @@ import (
1313

1414
// TemplateVersion represents a single version of a template.
1515
type TemplateVersion struct {
16-
ID uuid.UUID `json:"id" format:"uuid"`
17-
TemplateID *uuid.UUID `json:"template_id,omitempty" format:"uuid"`
18-
OrganizationID uuid.UUID `json:"organization_id,omitempty" format:"uuid"`
19-
CreatedAt time.Time `json:"created_at" format:"date-time"`
20-
UpdatedAt time.Time `json:"updated_at" format:"date-time"`
21-
Name string `json:"name"`
22-
Job ProvisionerJob `json:"job"`
23-
Readme string `json:"readme"`
24-
CreatedBy User `json:"created_by"`
16+
ID uuid.UUID `json:"id" format:"uuid"`
17+
TemplateID *uuid.UUID `json:"template_id,omitempty" format:"uuid"`
18+
OrganizationID uuid.UUID `json:"organization_id,omitempty" format:"uuid"`
19+
CreatedAt time.Time `json:"created_at" format:"date-time"`
20+
UpdatedAt time.Time `json:"updated_at" format:"date-time"`
21+
GitAuthProviders []string `json:"git_auth_providers"`
22+
Name string `json:"name"`
23+
Job ProvisionerJob `json:"job"`
24+
Readme string `json:"readme"`
25+
CreatedBy User `json:"created_by"`
2526
}
2627

2728
type ValidationMonotonicOrder string

0 commit comments

Comments
 (0)