Skip to content

Commit b4afbe7

Browse files
authored
feat: Implement experiment gated CRUD for workspace proxies (#6928)
* feat: Implement basic moon crud * chore: Implement enterprise endpoints for moons
1 parent 385a426 commit b4afbe7

33 files changed

+1327
-7
lines changed

coderd/apidoc/docs.go

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

coderd/apidoc/swagger.json

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

coderd/audit/diff.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,8 @@ type Auditable interface {
1616
database.GitSSHKey |
1717
database.WorkspaceBuild |
1818
database.AuditableGroup |
19-
database.License
19+
database.License |
20+
database.WorkspaceProxy
2021
}
2122

2223
// Map is a map of changed fields in an audited resource. It maps field names to

coderd/database/dbauthz/querier.go

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1685,6 +1685,34 @@ func (q *querier) GetWorkspaceByWorkspaceAppID(ctx context.Context, workspaceApp
16851685
return fetch(q.log, q.auth, q.db.GetWorkspaceByWorkspaceAppID)(ctx, workspaceAppID)
16861686
}
16871687

1688+
func (q *querier) GetWorkspaceProxies(ctx context.Context) ([]database.WorkspaceProxy, error) {
1689+
return fetchWithPostFilter(q.auth, func(ctx context.Context, _ interface{}) ([]database.WorkspaceProxy, error) {
1690+
return q.db.GetWorkspaceProxies(ctx)
1691+
})(ctx, nil)
1692+
}
1693+
1694+
func (q *querier) GetWorkspaceProxyByID(ctx context.Context, id uuid.UUID) (database.WorkspaceProxy, error) {
1695+
return fetch(q.log, q.auth, q.db.GetWorkspaceProxyByID)(ctx, id)
1696+
}
1697+
1698+
func (q *querier) InsertWorkspaceProxy(ctx context.Context, arg database.InsertWorkspaceProxyParams) (database.WorkspaceProxy, error) {
1699+
return insert(q.log, q.auth, rbac.ResourceWorkspaceProxy, q.db.InsertWorkspaceProxy)(ctx, arg)
1700+
}
1701+
1702+
func (q *querier) UpdateWorkspaceProxy(ctx context.Context, arg database.UpdateWorkspaceProxyParams) (database.WorkspaceProxy, error) {
1703+
fetch := func(ctx context.Context, arg database.UpdateWorkspaceProxyParams) (database.WorkspaceProxy, error) {
1704+
return q.db.GetWorkspaceProxyByID(ctx, arg.ID)
1705+
}
1706+
return updateWithReturn(q.log, q.auth, fetch, q.db.UpdateWorkspaceProxy)(ctx, arg)
1707+
}
1708+
1709+
func (q *querier) UpdateWorkspaceProxyDeleted(ctx context.Context, arg database.UpdateWorkspaceProxyDeletedParams) error {
1710+
fetch := func(ctx context.Context, arg database.UpdateWorkspaceProxyDeletedParams) (database.WorkspaceProxy, error) {
1711+
return q.db.GetWorkspaceProxyByID(ctx, arg.ID)
1712+
}
1713+
return deleteQ(q.log, q.auth, fetch, q.db.UpdateWorkspaceProxyDeleted)(ctx, arg)
1714+
}
1715+
16881716
func authorizedTemplateVersionFromJob(ctx context.Context, q *querier, job database.ProvisionerJob) (database.TemplateVersion, error) {
16891717
switch job.Type {
16901718
case database.ProvisionerJobTypeTemplateVersionDryRun:

coderd/database/dbauthz/querier_test.go

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -438,6 +438,36 @@ func (s *MethodTestSuite) TestOrganization() {
438438
}))
439439
}
440440

441+
func (s *MethodTestSuite) TestWorkspaceProxy() {
442+
s.Run("InsertWorkspaceProxy", s.Subtest(func(db database.Store, check *expects) {
443+
check.Args(database.InsertWorkspaceProxyParams{
444+
ID: uuid.New(),
445+
}).Asserts(rbac.ResourceWorkspaceProxy, rbac.ActionCreate)
446+
}))
447+
s.Run("UpdateWorkspaceProxy", s.Subtest(func(db database.Store, check *expects) {
448+
p := dbgen.WorkspaceProxy(s.T(), db, database.WorkspaceProxy{})
449+
check.Args(database.UpdateWorkspaceProxyParams{
450+
ID: p.ID,
451+
}).Asserts(p, rbac.ActionUpdate)
452+
}))
453+
s.Run("GetWorkspaceProxyByID", s.Subtest(func(db database.Store, check *expects) {
454+
p := dbgen.WorkspaceProxy(s.T(), db, database.WorkspaceProxy{})
455+
check.Args(p.ID).Asserts(p, rbac.ActionRead).Returns(p)
456+
}))
457+
s.Run("UpdateWorkspaceProxyDeleted", s.Subtest(func(db database.Store, check *expects) {
458+
p := dbgen.WorkspaceProxy(s.T(), db, database.WorkspaceProxy{})
459+
check.Args(database.UpdateWorkspaceProxyDeletedParams{
460+
ID: p.ID,
461+
Deleted: true,
462+
}).Asserts(p, rbac.ActionDelete)
463+
}))
464+
s.Run("GetWorkspaceProxies", s.Subtest(func(db database.Store, check *expects) {
465+
p1 := dbgen.WorkspaceProxy(s.T(), db, database.WorkspaceProxy{})
466+
p2 := dbgen.WorkspaceProxy(s.T(), db, database.WorkspaceProxy{})
467+
check.Args().Asserts(p1, rbac.ActionRead, p2, rbac.ActionRead).Returns(slice.New(p1, p2))
468+
}))
469+
}
470+
441471
func (s *MethodTestSuite) TestParameters() {
442472
s.Run("Workspace/InsertParameterValue", s.Subtest(func(db database.Store, check *expects) {
443473
w := dbgen.Workspace(s.T(), db, database.Workspace{})

0 commit comments

Comments
 (0)