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

Commit58f1d2a

Browse files
committed
add disconnect/close and support request_id filter
1 parentc364a34 commit58f1d2a

File tree

13 files changed

+106
-22
lines changed

13 files changed

+106
-22
lines changed

‎coderd/apidoc/docs.go

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

‎coderd/apidoc/swagger.json

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

‎coderd/audit.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -159,7 +159,7 @@ func (api *API) generateFakeAuditLog(rw http.ResponseWriter, r *http.Request) {
159159
Diff:diff,
160160
StatusCode:http.StatusOK,
161161
AdditionalFields:params.AdditionalFields,
162-
RequestID:uuid.Nil,// no request ID to attach this to
162+
RequestID:params.RequestID,
163163
ResourceIcon:"",
164164
OrganizationID:params.OrganizationID,
165165
})

‎coderd/audit_test.go

Lines changed: 45 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -286,23 +286,44 @@ func TestAuditLogsFilter(t *testing.T) {
286286
t.Logf("Resource: %#v",resource)
287287
}
288288

289-
// Create one log with "Connect"
289+
// Create one log with "Connect" and "Disconect".
290+
connectRequestID:=uuid.New()
290291
err=client.CreateTestAuditLog(ctx, codersdk.CreateTestAuditLogRequest{
291292
Action:codersdk.AuditActionConnect,
293+
RequestID:connectRequestID,
292294
ResourceType:codersdk.ResourceTypeWorkspaceAgent,
293295
ResourceID:workspace.LatestBuild.Resources[0].Agents[0].ID,
294296
Time:time.Date(2022,8,15,14,30,45,100,time.UTC),// 2022-8-15 14:30:45
295297
})
296298
require.NoError(t,err)
297299

298-
// Create one log with "Open"
300+
err=client.CreateTestAuditLog(ctx, codersdk.CreateTestAuditLogRequest{
301+
Action:codersdk.AuditActionDisconnect,
302+
RequestID:connectRequestID,
303+
ResourceType:codersdk.ResourceTypeWorkspaceAgent,
304+
ResourceID:workspace.LatestBuild.Resources[0].Agents[0].ID,
305+
Time:time.Date(2022,8,15,14,35,0o0,100,time.UTC),// 2022-8-15 14:35:00
306+
})
307+
require.NoError(t,err)
308+
309+
// Create one log with "Open" and "Close".
310+
openRequestID:=uuid.New()
299311
err=client.CreateTestAuditLog(ctx, codersdk.CreateTestAuditLogRequest{
300312
Action:codersdk.AuditActionOpen,
313+
RequestID:openRequestID,
301314
ResourceType:codersdk.ResourceTypeWorkspaceApp,
302315
ResourceID:workspace.LatestBuild.Resources[0].Agents[0].Apps[0].ID,
303316
Time:time.Date(2022,8,15,14,30,45,100,time.UTC),// 2022-8-15 14:30:45
304317
})
305318
require.NoError(t,err)
319+
err=client.CreateTestAuditLog(ctx, codersdk.CreateTestAuditLogRequest{
320+
Action:codersdk.AuditActionClose,
321+
RequestID:openRequestID,
322+
ResourceType:codersdk.ResourceTypeWorkspaceApp,
323+
ResourceID:workspace.LatestBuild.Resources[0].Agents[0].Apps[0].ID,
324+
Time:time.Date(2022,8,15,14,35,0o0,100,time.UTC),// 2022-8-15 14:35:00
325+
})
326+
require.NoError(t,err)
306327

307328
// Test cases
308329
testCases:= []struct {
@@ -334,12 +355,12 @@ func TestAuditLogsFilter(t *testing.T) {
334355
{
335356
Name:"FilterByEmail",
336357
SearchQuery:"email:"+coderdtest.FirstUserParams.Email,
337-
ExpectedResult:7,
358+
ExpectedResult:9,
338359
},
339360
{
340361
Name:"FilterByUsername",
341362
SearchQuery:"username:"+coderdtest.FirstUserParams.Username,
342-
ExpectedResult:7,
363+
ExpectedResult:9,
343364
},
344365
{
345366
Name:"FilterByResourceID",
@@ -396,11 +417,31 @@ func TestAuditLogsFilter(t *testing.T) {
396417
SearchQuery:"resource_type:workspace_agent action:connect",
397418
ExpectedResult:1,
398419
},
420+
{
421+
Name:"FilterOnWorkspaceAgentDisconnect",
422+
SearchQuery:"resource_type:workspace_agent action:disconnect",
423+
ExpectedResult:1,
424+
},
425+
{
426+
Name:"FilterOnWorkspaceAgentConnectionRequestID",
427+
SearchQuery:"resource_type:workspace_agent request_id:"+connectRequestID.String(),
428+
ExpectedResult:2,
429+
},
399430
{
400431
Name:"FilterOnWorkspaceAppOpen",
401432
SearchQuery:"resource_type:workspace_app action:open",
402433
ExpectedResult:1,
403434
},
435+
{
436+
Name:"FilterOnWorkspaceAppClose",
437+
SearchQuery:"resource_type:workspace_app action:close",
438+
ExpectedResult:1,
439+
},
440+
{
441+
Name:"FilterOnWorkspaceAppOpenRequestID",
442+
SearchQuery:"resource_type:workspace_app request_id:"+openRequestID.String(),
443+
ExpectedResult:2,
444+
},
404445
}
405446

406447
for_,testCase:=rangetestCases {

‎coderd/database/dbmem/dbmem.go

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12369,10 +12369,13 @@ func (q *FakeQuerier) GetAuthorizedAuditLogsOffset(ctx context.Context, arg data
1236912369
arg.OffsetOpt--
1237012370
continue
1237112371
}
12372+
ifarg.RequestID!=uuid.Nil&&arg.RequestID!=alog.RequestID {
12373+
continue
12374+
}
1237212375
ifarg.OrganizationID!=uuid.Nil&&arg.OrganizationID!=alog.OrganizationID {
1237312376
continue
1237412377
}
12375-
ifarg.Action!=""&&!strings.Contains(string(alog.Action),arg.Action) {
12378+
ifarg.Action!=""&&string(alog.Action)!=arg.Action {
1237612379
continue
1237712380
}
1237812381
ifarg.ResourceType!=""&&!strings.Contains(string(alog.ResourceType),arg.ResourceType) {

‎coderd/database/dump.sql

Lines changed: 3 additions & 1 deletion
Some generated files are not rendered by default. Learn more aboutcustomizing how changed files appear on GitHub.

‎coderd/database/models.go

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

‎coderd/database/queries.sql.go

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

‎coderd/database/queries/auditlogs.sql

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -117,6 +117,12 @@ WHERE
117117
workspace_builds.reason::text= @build_reason
118118
ELSE true
119119
END
120+
-- Filter request_id
121+
AND CASE
122+
WHEN @request_id :: uuid!='00000000-0000-0000-0000-000000000000'::uuid THEN
123+
audit_logs.request_id= @request_id
124+
ELSE true
125+
END
120126

121127
-- Authorize Filter clause will be injected below in GetAuthorizedAuditLogsOffset
122128
-- @authorize_filter

‎coderd/searchquery/search.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@ func AuditLogs(ctx context.Context, db database.Store, query string) (database.G
3333
constdateLayout="2006-01-02"
3434
parser:=httpapi.NewQueryParamParser()
3535
filter:= database.GetAuditLogsOffsetParams{
36+
RequestID:parser.UUID(values,uuid.Nil,"request_id"),
3637
ResourceID:parser.UUID(values,uuid.Nil,"resource_id"),
3738
ResourceTarget:parser.String(values,"","resource_target"),
3839
Username:parser.String(values,"","username"),

‎codersdk/audit.go

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -111,7 +111,9 @@ const (
111111
AuditActionRegisterAuditAction="register"
112112
AuditActionRequestPasswordResetAuditAction="request_password_reset"
113113
AuditActionConnectAuditAction="connect"
114+
AuditActionDisconnectAuditAction="disconnect"
114115
AuditActionOpenAuditAction="open"
116+
AuditActionCloseAuditAction="close"
115117
)
116118

117119
func (aAuditAction)Friendly()string {
@@ -136,8 +138,12 @@ func (a AuditAction) Friendly() string {
136138
return"password reset requested"
137139
caseAuditActionConnect:
138140
return"connected"
141+
caseAuditActionDisconnect:
142+
return"disconnected"
139143
caseAuditActionOpen:
140144
return"opened"
145+
caseAuditActionClose:
146+
return"closed"
141147
default:
142148
return"unknown"
143149
}
@@ -196,6 +202,7 @@ type CreateTestAuditLogRequest struct {
196202
Time time.Time`json:"time,omitempty" format:"date-time"`
197203
BuildReasonBuildReason`json:"build_reason,omitempty" enums:"autostart,autostop,initiator"`
198204
OrganizationID uuid.UUID`json:"organization_id,omitempty" format:"uuid"`
205+
RequestID uuid.UUID`json:"request_id,omitempty" format:"uuid"`
199206
}
200207

201208
// AuditLogs retrieves audit logs from the given page.

‎docs/reference/api/schemas.md

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

‎enterprise/audit/table.go

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -27,8 +27,8 @@ var AuditActionMap = map[string][]codersdk.AuditAction{
2727
"Group": {codersdk.AuditActionCreate,codersdk.AuditActionWrite,codersdk.AuditActionDelete},
2828
"APIKey": {codersdk.AuditActionLogin,codersdk.AuditActionLogout,codersdk.AuditActionRegister,codersdk.AuditActionCreate,codersdk.AuditActionDelete},
2929
"License": {codersdk.AuditActionCreate,codersdk.AuditActionDelete},
30-
"WorkspaceAgent": {codersdk.AuditActionConnect},
31-
"WorkspaceApp": {codersdk.AuditActionOpen},
30+
"WorkspaceAgent": {codersdk.AuditActionConnect,codersdk.AuditActionDisconnect},
31+
"WorkspaceApp": {codersdk.AuditActionOpen,codersdk.AuditActionClose},
3232
}
3333

3434
typeActionstring
@@ -310,14 +310,14 @@ var auditableResourcesTypes = map[any]map[string]Action{
310310
"mapping":ActionTrack,
311311
},
312312
&database.WorkspaceAgent{}: {
313-
"id":ActionTrack,
313+
"id":ActionIgnore,
314314
"created_at":ActionIgnore,
315315
"updated_at":ActionIgnore,
316-
"name":ActionTrack,
316+
"name":ActionIgnore,
317317
"first_connected_at":ActionIgnore,
318318
"last_connected_at":ActionIgnore,
319319
"disconnected_at":ActionIgnore,
320-
"resource_id":ActionTrack,
320+
"resource_id":ActionIgnore,
321321
"auth_token":ActionIgnore,
322322
"auth_instance_id":ActionIgnore,
323323
"architecture":ActionIgnore,
@@ -345,8 +345,8 @@ var auditableResourcesTypes = map[any]map[string]Action{
345345
&database.WorkspaceApp{}: {
346346
"id":ActionIgnore,
347347
"created_at":ActionIgnore,
348-
"agent_id":ActionTrack,
349-
"display_name":ActionTrack,
348+
"agent_id":ActionIgnore,
349+
"display_name":ActionIgnore,
350350
"icon":ActionIgnore,
351351
"command":ActionIgnore,
352352
"url":ActionIgnore,
@@ -356,7 +356,7 @@ var auditableResourcesTypes = map[any]map[string]Action{
356356
"health":ActionIgnore,
357357
"subdomain":ActionIgnore,
358358
"sharing_level":ActionIgnore,
359-
"slug":ActionTrack,
359+
"slug":ActionIgnore,
360360
"external":ActionIgnore,
361361
"display_order":ActionIgnore,
362362
"hidden":ActionIgnore,

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp