Skip to content

Commit debcf9c

Browse files
committed
add disconnect/close and support resource_id filter
1 parent c364a34 commit debcf9c

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 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
@@ -12369,10 +12369,13 @@ func (q *FakeQuerier) GetAuthorizedAuditLogsOffset(ctx context.Context, arg data
1236912369
arg.OffsetOpt--
1237012370
continue
1237112371
}
12372+
if arg.RequestID != uuid.Nil && arg.RequestID != alog.RequestID {
12373+
continue
12374+
}
1237212375
if arg.OrganizationID != uuid.Nil && arg.OrganizationID != alog.OrganizationID {
1237312376
continue
1237412377
}
12375-
if arg.Action != "" && !strings.Contains(string(alog.Action), arg.Action) {
12378+
if arg.Action != "" && string(alog.Action) != arg.Action {
1237612379
continue
1237712380
}
1237812381
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/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

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
const dateLayout = "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"),

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