Skip to content

Commit ef5d804

Browse files
committed
Merge branch 'main' into edit-and-delete-orgs
2 parents b1bfba6 + b8b80fe commit ef5d804

32 files changed

+1071
-403
lines changed

.github/workflows/release.yaml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -178,9 +178,9 @@ jobs:
178178
env:
179179
EV_SIGNING_CERT: ${{ secrets.EV_SIGNING_CERT }}
180180

181-
# - name: Test migrations from current ref to main
182-
# run: |
183-
# make test-migrations
181+
- name: Test migrations from current ref to main
182+
run: |
183+
make test-migrations
184184
185185
# Setup GCloud for signing Windows binaries.
186186
- name: Authenticate to Google Cloud

coderd/database/dbauthz/dbauthz.go

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1790,6 +1790,29 @@ func (q *querier) GetTemplateVersionVariables(ctx context.Context, templateVersi
17901790
return q.db.GetTemplateVersionVariables(ctx, templateVersionID)
17911791
}
17921792

1793+
func (q *querier) GetTemplateVersionWorkspaceTags(ctx context.Context, templateVersionID uuid.UUID) ([]database.TemplateVersionWorkspaceTag, error) {
1794+
tv, err := q.db.GetTemplateVersionByID(ctx, templateVersionID)
1795+
if err != nil {
1796+
return nil, err
1797+
}
1798+
1799+
var object rbac.Objecter
1800+
template, err := q.db.GetTemplateByID(ctx, tv.TemplateID.UUID)
1801+
if err != nil {
1802+
if !errors.Is(err, sql.ErrNoRows) {
1803+
return nil, err
1804+
}
1805+
object = rbac.ResourceTemplate.InOrg(tv.OrganizationID)
1806+
} else {
1807+
object = tv.RBACObject(template)
1808+
}
1809+
1810+
if err := q.authorizeContext(ctx, policy.ActionRead, object); err != nil {
1811+
return nil, err
1812+
}
1813+
return q.db.GetTemplateVersionWorkspaceTags(ctx, templateVersionID)
1814+
}
1815+
17931816
// GetTemplateVersionsByIDs is only used for workspace build data.
17941817
// The workspace is already fetched.
17951818
func (q *querier) GetTemplateVersionsByIDs(ctx context.Context, ids []uuid.UUID) ([]database.TemplateVersion, error) {
@@ -2511,6 +2534,13 @@ func (q *querier) InsertTemplateVersionVariable(ctx context.Context, arg databas
25112534
return q.db.InsertTemplateVersionVariable(ctx, arg)
25122535
}
25132536

2537+
func (q *querier) InsertTemplateVersionWorkspaceTag(ctx context.Context, arg database.InsertTemplateVersionWorkspaceTagParams) (database.TemplateVersionWorkspaceTag, error) {
2538+
if err := q.authorizeContext(ctx, policy.ActionCreate, rbac.ResourceSystem); err != nil {
2539+
return database.TemplateVersionWorkspaceTag{}, err
2540+
}
2541+
return q.db.InsertTemplateVersionWorkspaceTag(ctx, arg)
2542+
}
2543+
25142544
func (q *querier) InsertUser(ctx context.Context, arg database.InsertUserParams) (database.User, error) {
25152545
// Always check if the assigned roles can actually be assigned by this actor.
25162546
impliedRoles := append([]string{rbac.RoleMember()}, arg.RBACRoles...)

coderd/database/dbauthz/dbauthz_test.go

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -795,6 +795,16 @@ func (s *MethodTestSuite) TestTemplate() {
795795
})
796796
check.Args(tv.ID).Asserts(t1, policy.ActionRead).Returns([]database.TemplateVersionVariable{tvv1})
797797
}))
798+
s.Run("GetTemplateVersionWorkspaceTags", s.Subtest(func(db database.Store, check *expects) {
799+
t1 := dbgen.Template(s.T(), db, database.Template{})
800+
tv := dbgen.TemplateVersion(s.T(), db, database.TemplateVersion{
801+
TemplateID: uuid.NullUUID{UUID: t1.ID, Valid: true},
802+
})
803+
wt1 := dbgen.TemplateVersionWorkspaceTag(s.T(), db, database.TemplateVersionWorkspaceTag{
804+
TemplateVersionID: tv.ID,
805+
})
806+
check.Args(tv.ID).Asserts(t1, policy.ActionRead).Returns([]database.TemplateVersionWorkspaceTag{wt1})
807+
}))
798808
s.Run("GetTemplateGroupRoles", s.Subtest(func(db database.Store, check *expects) {
799809
t1 := dbgen.Template(s.T(), db, database.Template{})
800810
check.Args(t1.ID).Asserts(t1, policy.ActionUpdate)
@@ -2356,6 +2366,9 @@ func (s *MethodTestSuite) TestSystemFunctions() {
23562366
s.Run("InsertTemplateVersionVariable", s.Subtest(func(db database.Store, check *expects) {
23572367
check.Args(database.InsertTemplateVersionVariableParams{}).Asserts(rbac.ResourceSystem, policy.ActionCreate)
23582368
}))
2369+
s.Run("InsertTemplateVersionWorkspaceTag", s.Subtest(func(db database.Store, check *expects) {
2370+
check.Args(database.InsertTemplateVersionWorkspaceTagParams{}).Asserts(rbac.ResourceSystem, policy.ActionCreate)
2371+
}))
23592372
s.Run("UpdateInactiveUsersToDormant", s.Subtest(func(db database.Store, check *expects) {
23602373
check.Args(database.UpdateInactiveUsersToDormantParams{}).Asserts(rbac.ResourceSystem, policy.ActionCreate).Errors(sql.ErrNoRows)
23612374
}))

coderd/database/dbgen/dbgen.go

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -678,6 +678,16 @@ func TemplateVersionVariable(t testing.TB, db database.Store, orig database.Temp
678678
return version
679679
}
680680

681+
func TemplateVersionWorkspaceTag(t testing.TB, db database.Store, orig database.TemplateVersionWorkspaceTag) database.TemplateVersionWorkspaceTag {
682+
workspaceTag, err := db.InsertTemplateVersionWorkspaceTag(genCtx, database.InsertTemplateVersionWorkspaceTagParams{
683+
TemplateVersionID: takeFirst(orig.TemplateVersionID, uuid.New()),
684+
Key: takeFirst(orig.Key, namesgenerator.GetRandomName(1)),
685+
Value: takeFirst(orig.Value, namesgenerator.GetRandomName(1)),
686+
})
687+
require.NoError(t, err, "insert template version workspace tag")
688+
return workspaceTag
689+
}
690+
681691
func TemplateVersionParameter(t testing.TB, db database.Store, orig database.TemplateVersionParameter) database.TemplateVersionParameter {
682692
t.Helper()
683693

coderd/database/dbmem/dbmem.go

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -166,6 +166,7 @@ type data struct {
166166
templateVersions []database.TemplateVersionTable
167167
templateVersionParameters []database.TemplateVersionParameter
168168
templateVersionVariables []database.TemplateVersionVariable
169+
templateVersionWorkspaceTags []database.TemplateVersionWorkspaceTag
169170
templates []database.TemplateTable
170171
templateUsageStats []database.TemplateUsageStat
171172
workspaceAgents []database.WorkspaceAgent
@@ -4193,6 +4194,24 @@ func (q *FakeQuerier) GetTemplateVersionVariables(_ context.Context, templateVer
41934194
return variables, nil
41944195
}
41954196

4197+
func (q *FakeQuerier) GetTemplateVersionWorkspaceTags(_ context.Context, templateVersionID uuid.UUID) ([]database.TemplateVersionWorkspaceTag, error) {
4198+
q.mutex.RLock()
4199+
defer q.mutex.RUnlock()
4200+
4201+
workspaceTags := make([]database.TemplateVersionWorkspaceTag, 0)
4202+
for _, workspaceTag := range q.templateVersionWorkspaceTags {
4203+
if workspaceTag.TemplateVersionID != templateVersionID {
4204+
continue
4205+
}
4206+
workspaceTags = append(workspaceTags, workspaceTag)
4207+
}
4208+
4209+
sort.Slice(workspaceTags, func(i, j int) bool {
4210+
return workspaceTags[i].Key < workspaceTags[j].Key
4211+
})
4212+
return workspaceTags, nil
4213+
}
4214+
41964215
func (q *FakeQuerier) GetTemplateVersionsByIDs(_ context.Context, ids []uuid.UUID) ([]database.TemplateVersion, error) {
41974216
q.mutex.RLock()
41984217
defer q.mutex.RUnlock()
@@ -6368,6 +6387,25 @@ func (q *FakeQuerier) InsertTemplateVersionVariable(_ context.Context, arg datab
63686387
return variable, nil
63696388
}
63706389

6390+
func (q *FakeQuerier) InsertTemplateVersionWorkspaceTag(_ context.Context, arg database.InsertTemplateVersionWorkspaceTagParams) (database.TemplateVersionWorkspaceTag, error) {
6391+
err := validateDatabaseType(arg)
6392+
if err != nil {
6393+
return database.TemplateVersionWorkspaceTag{}, err
6394+
}
6395+
6396+
q.mutex.Lock()
6397+
defer q.mutex.Unlock()
6398+
6399+
//nolint:gosimple
6400+
workspaceTag := database.TemplateVersionWorkspaceTag{
6401+
TemplateVersionID: arg.TemplateVersionID,
6402+
Key: arg.Key,
6403+
Value: arg.Value,
6404+
}
6405+
q.templateVersionWorkspaceTags = append(q.templateVersionWorkspaceTags, workspaceTag)
6406+
return workspaceTag, nil
6407+
}
6408+
63716409
func (q *FakeQuerier) InsertUser(_ context.Context, arg database.InsertUserParams) (database.User, error) {
63726410
if err := validateDatabaseType(arg); err != nil {
63736411
return database.User{}, err

coderd/database/dbmetrics/dbmetrics.go

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

coderd/database/dbmock/dbmock.go

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

coderd/database/dump.sql

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

0 commit comments

Comments
 (0)