Skip to content

Commit 6adf82d

Browse files
committed
add disconnect/close and support request_id filter
1 parent 78be514 commit 6adf82d

File tree

14 files changed

+107
-22
lines changed

14 files changed

+107
-22
lines changed

coderd/apidoc/docs.go

Lines changed: 6 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: 6 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing 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 := range testCases {

coderd/database/dbmem/dbmem.go

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12370,10 +12370,13 @@ func (q *FakeQuerier) GetAuthorizedAuditLogsOffset(ctx context.Context, arg data
1237012370
arg.OffsetOpt--
1237112371
continue
1237212372
}
12373+
if arg.RequestID != uuid.Nil && arg.RequestID != alog.RequestID {
12374+
continue
12375+
}
1237312376
if arg.OrganizationID != uuid.Nil && arg.OrganizationID != alog.OrganizationID {
1237412377
continue
1237512378
}
12376-
if arg.Action != "" && !strings.Contains(string(alog.Action), arg.Action) {
12379+
if arg.Action != "" && string(alog.Action) != arg.Action {
1237712380
continue
1237812381
}
1237912382
if arg.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 about customizing how changed files appear on GitHub.

coderd/database/modelqueries.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -467,6 +467,7 @@ func (q *sqlQuerier) GetAuthorizedAuditLogsOffset(ctx context.Context, arg GetAu
467467
arg.DateFrom,
468468
arg.DateTo,
469469
arg.BuildReason,
470+
arg.RequestID,
470471
arg.OffsetOpt,
471472
arg.LimitOpt,
472473
)

coderd/database/models.go

Lines changed: 7 additions & 1 deletion
Some generated files are not rendered by default. Learn more about customizing 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 about customizing 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

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy