Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit9f9d402

Browse files
committed
feat(coderd): implement task to build/agent/app linking
1 parent956b1d1 commit9f9d402

File tree

37 files changed

+869
-269
lines changed

37 files changed

+869
-269
lines changed

‎coderd/apidoc/docs.go‎

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

‎coderd/apidoc/swagger.json‎

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

‎coderd/database/dbauthz/dbauthz.go‎

Lines changed: 26 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2882,8 +2882,12 @@ func (q *querier) GetTailnetTunnelPeerIDs(ctx context.Context, srcID uuid.UUID)
28822882
returnq.db.GetTailnetTunnelPeerIDs(ctx,srcID)
28832883
}
28842884

2885-
func (*querier)GetTaskByID(_ context.Context,_ uuid.UUID) (database.Task,error) {
2886-
panic("not implemented")
2885+
func (q*querier)GetTaskByID(ctx context.Context,id uuid.UUID) (database.Task,error) {
2886+
returnfetch(q.log,q.auth,q.db.GetTaskByID)(ctx,id)
2887+
}
2888+
2889+
func (q*querier)GetTaskByWorkspaceID(ctx context.Context,workspaceID uuid.UUID) (database.Task,error) {
2890+
returnfetch(q.log,q.auth,q.db.GetTaskByWorkspaceID)(ctx,workspaceID)
28872891
}
28882892

28892893
func (q*querier)GetTelemetryItem(ctx context.Context,keystring) (database.TelemetryItem,error) {
@@ -4111,12 +4115,15 @@ func (q *querier) InsertReplica(ctx context.Context, arg database.InsertReplicaP
41114115
returnq.db.InsertReplica(ctx,arg)
41124116
}
41134117

4114-
func (*querier)InsertTask(_ context.Context,_ database.InsertTaskParams) (database.TaskTable,error) {
4115-
panic("not implemented")
4116-
}
4118+
func (q*querier)InsertTask(ctx context.Context,arg database.InsertTaskParams) (database.TaskTable,error) {
4119+
// Ensure the actor can access the specified template version (and thus its template).
4120+
if_,err:=q.GetTemplateVersionByID(ctx,arg.TemplateVersionID);err!=nil {
4121+
return database.TaskTable{},err
4122+
}
4123+
4124+
obj:=rbac.ResourceTask.WithOwner(arg.OwnerID.String()).InOrg(arg.OrganizationID)
41174125

4118-
func (*querier)InsertTaskWorkspaceApp(_ context.Context,_ database.InsertTaskWorkspaceAppParams) (database.TaskWorkspaceApp,error) {
4119-
panic("not implemented")
4126+
returninsert(q.log,q.auth,obj,q.db.InsertTask)(ctx,arg)
41204127
}
41214128

41224129
func (q*querier)InsertTelemetryItemIfNotExists(ctx context.Context,arg database.InsertTelemetryItemIfNotExistsParams)error {
@@ -5677,6 +5684,18 @@ func (q *querier) UpsertTailnetTunnel(ctx context.Context, arg database.UpsertTa
56775684
returnq.db.UpsertTailnetTunnel(ctx,arg)
56785685
}
56795686

5687+
func (q*querier)UpsertTaskWorkspaceApp(ctx context.Context,arg database.UpsertTaskWorkspaceAppParams) (database.TaskWorkspaceApp,error) {
5688+
// Fetch the task to derive the RBAC object and authorize update on it.
5689+
task,err:=q.db.GetTaskByID(ctx,arg.TaskID)
5690+
iferr!=nil {
5691+
return database.TaskWorkspaceApp{},err
5692+
}
5693+
iferr:=q.authorizeContext(ctx,policy.ActionUpdate,task);err!=nil {
5694+
return database.TaskWorkspaceApp{},err
5695+
}
5696+
returnq.db.UpsertTaskWorkspaceApp(ctx,arg)
5697+
}
5698+
56805699
func (q*querier)UpsertTelemetryItem(ctx context.Context,arg database.UpsertTelemetryItemParams)error {
56815700
iferr:=q.authorizeContext(ctx,policy.ActionUpdate,rbac.ResourceSystem);err!=nil {
56825701
returnerr

‎coderd/database/dbauthz/dbauthz_test.go‎

Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2314,6 +2314,53 @@ func (s *MethodTestSuite) TestWorkspacePortSharing() {
23142314
}))
23152315
}
23162316

2317+
func (s*MethodTestSuite)TestTasks() {
2318+
s.Run("GetTaskByID",s.Mocked(func(dbm*dbmock.MockStore,faker*gofakeit.Faker,check*expects) {
2319+
task:=testutil.Fake(s.T(),faker, database.Task{})
2320+
dbm.EXPECT().GetTaskByID(gomock.Any(),task.ID).Return(task,nil).AnyTimes()
2321+
check.Args(task.ID).Asserts(task,policy.ActionRead).Returns(task)
2322+
}))
2323+
s.Run("InsertTask",s.Mocked(func(dbm*dbmock.MockStore,faker*gofakeit.Faker,check*expects) {
2324+
tpl:=testutil.Fake(s.T(),faker, database.Template{})
2325+
tv:=testutil.Fake(s.T(),faker, database.TemplateVersion{
2326+
TemplateID: uuid.NullUUID{UUID:tpl.ID,Valid:true},
2327+
OrganizationID:tpl.OrganizationID,
2328+
})
2329+
2330+
arg:=testutil.Fake(s.T(),faker, database.InsertTaskParams{
2331+
OrganizationID:tpl.OrganizationID,
2332+
TemplateVersionID:tv.ID,
2333+
})
2334+
2335+
dbm.EXPECT().GetTemplateVersionByID(gomock.Any(),tv.ID).Return(tv,nil).AnyTimes()
2336+
dbm.EXPECT().GetTemplateByID(gomock.Any(),tpl.ID).Return(tpl,nil).AnyTimes()
2337+
dbm.EXPECT().InsertTask(gomock.Any(),arg).Return(database.TaskTable{},nil).AnyTimes()
2338+
2339+
check.Args(arg).Asserts(
2340+
tpl,policy.ActionRead,
2341+
rbac.ResourceTask.InOrg(arg.OrganizationID).WithOwner(arg.OwnerID.String()),policy.ActionCreate,
2342+
).Returns(database.TaskTable{})
2343+
}))
2344+
s.Run("UpsertTaskWorkspaceApp",s.Mocked(func(dbm*dbmock.MockStore,faker*gofakeit.Faker,check*expects) {
2345+
task:=testutil.Fake(s.T(),faker, database.Task{})
2346+
arg:= database.UpsertTaskWorkspaceAppParams{
2347+
TaskID:task.ID,
2348+
WorkspaceBuildNumber:1,
2349+
}
2350+
2351+
dbm.EXPECT().GetTaskByID(gomock.Any(),task.ID).Return(task,nil).AnyTimes()
2352+
dbm.EXPECT().UpsertTaskWorkspaceApp(gomock.Any(),arg).Return(database.TaskWorkspaceApp{},nil).AnyTimes()
2353+
2354+
check.Args(arg).Asserts(task,policy.ActionUpdate).Returns(database.TaskWorkspaceApp{})
2355+
}))
2356+
s.Run("GetTaskByWorkspaceID",s.Mocked(func(dbm*dbmock.MockStore,faker*gofakeit.Faker,check*expects) {
2357+
task:=testutil.Fake(s.T(),faker, database.Task{})
2358+
task.WorkspaceID= uuid.NullUUID{UUID:uuid.New(),Valid:true}
2359+
dbm.EXPECT().GetTaskByWorkspaceID(gomock.Any(),task.WorkspaceID.UUID).Return(task,nil).AnyTimes()
2360+
check.Args(task.WorkspaceID.UUID).Asserts(task,policy.ActionRead).Returns(task)
2361+
}))
2362+
}
2363+
23172364
func (s*MethodTestSuite)TestProvisionerKeys() {
23182365
s.Run("InsertProvisionerKey",s.Mocked(func(dbm*dbmock.MockStore,faker*gofakeit.Faker,check*expects) {
23192366
org:=testutil.Fake(s.T(),faker, database.Organization{})

‎coderd/database/dbgen/dbgen.go‎

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1578,8 +1578,13 @@ func Task(t testing.TB, db database.Store, orig database.TaskTable) database.Tas
15781578
funcTaskWorkspaceApp(t testing.TB,db database.Store,orig database.TaskWorkspaceApp) database.TaskWorkspaceApp {
15791579
t.Helper()
15801580

1581-
app,err:=db.InsertTaskWorkspaceApp(genCtx,database.InsertTaskWorkspaceAppParams(orig))
1582-
require.NoError(t,err,"failed to insert task workspace app")
1581+
app,err:=db.UpsertTaskWorkspaceApp(genCtx, database.UpsertTaskWorkspaceAppParams{
1582+
TaskID:orig.TaskID,
1583+
WorkspaceBuildNumber:orig.WorkspaceBuildNumber,
1584+
WorkspaceAgentID:orig.WorkspaceAgentID,
1585+
WorkspaceAppID:orig.WorkspaceAppID,
1586+
})
1587+
require.NoError(t,err,"failed to upsert task workspace app")
15831588

15841589
returnapp
15851590
}

‎coderd/database/dbmetrics/querymetrics.go‎

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

‎coderd/database/dbmock/dbmock.go‎

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

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp