Skip to content

Commit be44d6c

Browse files
committed
sorted resources to ensure table order
1 parent a6891dc commit be44d6c

File tree

2 files changed

+24
-11
lines changed

2 files changed

+24
-11
lines changed

docs/admin/audit-logs.md

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -11,15 +11,15 @@ We track the following resources:
1111

1212
| <b>Resource<b> | |
1313
| ------------------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
14-
| User | <table><thead><tr><th>Field</th><th>Tracked</th></tr></thead><tbody><tr><td>rbac_roles</td><td>true</td></tr><tr><td>last_seen_at</td><td>false</td></tr><tr><td>hashed_password</td><td>true</td></tr><tr><td>updated_at</td><td>false</td></tr><tr><td>login_type</td><td>false</td></tr><tr><td>deleted</td><td>true</td></tr><tr><td>status</td><td>true</td></tr><tr><td>avatar_url</td><td>false</td></tr><tr><td>email</td><td>true</td></tr><tr><td>username</td><td>true</td></tr><tr><td>created_at</td><td>false</td></tr><tr><td>id</td><td>true</td></tr></tbody></table> |
15-
| Workspace | <table><thead><tr><th>Field</th><th>Tracked</th></tr></thead><tbody><tr><td>created_at</td><td>false</td></tr><tr><td>owner_id</td><td>true</td></tr><tr><td>id</td><td>true</td></tr><tr><td>name</td><td>true</td></tr><tr><td>ttl</td><td>true</td></tr><tr><td>last_used_at</td><td>false</td></tr><tr><td>updated_at</td><td>false</td></tr><tr><td>organization_id</td><td>false</td></tr><tr><td>template_id</td><td>true</td></tr><tr><td>deleted</td><td>false</td></tr><tr><td>autostart_schedule</td><td>true</td></tr></tbody></table> |
16-
| GitSSHKey | <table><thead><tr><th>Field</th><th>Tracked</th></tr></thead><tbody><tr><td>user_id</td><td>true</td></tr><tr><td>created_at</td><td>false</td></tr><tr><td>updated_at</td><td>false</td></tr><tr><td>private_key</td><td>true</td></tr><tr><td>public_key</td><td>true</td></tr></tbody></table> |
17-
| Organization | <table><thead><tr><th>Field</th><th>Tracked</th></tr></thead><tbody><tr><td>name</td><td>true</td></tr><tr><td>description</td><td>true</td></tr><tr><td>created_at</td><td>false</td></tr><tr><td>updated_at</td><td>false</td></tr><tr><td>id</td><td>true</td></tr></tbody></table> |
18-
| AuditableGroup | <table><thead><tr><th>Field</th><th>Tracked</th></tr></thead><tbody><tr><td>quota_allowance</td><td>true</td></tr><tr><td>members</td><td>true</td></tr><tr><td>id</td><td>true</td></tr><tr><td>name</td><td>true</td></tr><tr><td>organization_id</td><td>false</td></tr><tr><td>avatar_url</td><td>true</td></tr></tbody></table> |
19-
| Template | <table><thead><tr><th>Field</th><th>Tracked</th></tr></thead><tbody><tr><td>user_acl</td><td>true</td></tr><tr><td>id</td><td>true</td></tr><tr><td>updated_at</td><td>false</td></tr><tr><td>name</td><td>true</td></tr><tr><td>created_by</td><td>true</td></tr><tr><td>created_at</td><td>false</td></tr><tr><td>active_version_id</td><td>true</td></tr><tr><td>group_acl</td><td>true</td></tr><tr><td>provisioner</td><td>true</td></tr><tr><td>organization_id</td><td>false</td></tr><tr><td>display_name</td><td>true</td></tr><tr><td>default_ttl</td><td>true</td></tr><tr><td>description</td><td>true</td></tr><tr><td>min_autostart_interval</td><td>true</td></tr><tr><td>deleted</td><td>false</td></tr><tr><td>is_private</td><td>true</td></tr><tr><td>allow_user_cancel_workspace_jobs</td><td>true</td></tr><tr><td>icon</td><td>true</td></tr></tbody></table> |
20-
| WorkspaceBuild | <table><thead><tr><th>Field</th><th>Tracked</th></tr></thead><tbody><tr><td>updated_at</td><td>false</td></tr><tr><td>template_version_id</td><td>true</td></tr><tr><td>transition</td><td>false</td></tr><tr><td>provisioner_state</td><td>false</td></tr><tr><td>reason</td><td>false</td></tr><tr><td>id</td><td>false</td></tr><tr><td>daily_cost</td><td>false</td></tr><tr><td>deadline</td><td>false</td></tr><tr><td>initiator_id</td><td>false</td></tr><tr><td>created_at</td><td>false</td></tr><tr><td>workspace_id</td><td>false</td></tr><tr><td>job_id</td><td>false</td></tr><tr><td>build_number</td><td>false</td></tr></tbody></table> |
21-
| TemplateVersion | <table><thead><tr><th>Field</th><th>Tracked</th></tr></thead><tbody><tr><td>created_at</td><td>false</td></tr><tr><td>updated_at</td><td>false</td></tr><tr><td>organization_id</td><td>false</td></tr><tr><td>template_id</td><td>true</td></tr><tr><td>name</td><td>true</td></tr><tr><td>readme</td><td>true</td></tr><tr><td>created_by</td><td>true</td></tr><tr><td>id</td><td>true</td></tr><tr><td>job_id</td><td>false</td></tr></tbody></table> |
22-
| OrganizationMember | <table><thead><tr><th>Field</th><th>Tracked</th></tr></thead><tbody><tr><td>roles</td><td>true</td></tr><tr><td>user_id</td><td>true</td></tr><tr><td>organization_id</td><td>true</td></tr><tr><td>created_at</td><td>false</td></tr><tr><td>updated_at</td><td>false</td></tr></tbody></table> |
14+
| AuditableGroup | <table><thead><tr><th>Field</th><th>Tracked</th></tr></thead><tbody><tr><td>name</td><td>true</td></tr><tr><td>organization_id</td><td>false</td></tr><tr><td>avatar_url</td><td>true</td></tr><tr><td>quota_allowance</td><td>true</td></tr><tr><td>members</td><td>true</td></tr><tr><td>id</td><td>true</td></tr></tbody></table> |
15+
| GitSSHKey | <table><thead><tr><th>Field</th><th>Tracked</th></tr></thead><tbody><tr><td>public_key</td><td>true</td></tr><tr><td>user_id</td><td>true</td></tr><tr><td>created_at</td><td>false</td></tr><tr><td>updated_at</td><td>false</td></tr><tr><td>private_key</td><td>true</td></tr></tbody></table> |
16+
| Organization | <table><thead><tr><th>Field</th><th>Tracked</th></tr></thead><tbody><tr><td>updated_at</td><td>false</td></tr><tr><td>id</td><td>true</td></tr><tr><td>name</td><td>true</td></tr><tr><td>description</td><td>true</td></tr><tr><td>created_at</td><td>false</td></tr></tbody></table> |
17+
| OrganizationMember | <table><thead><tr><th>Field</th><th>Tracked</th></tr></thead><tbody><tr><td>created_at</td><td>false</td></tr><tr><td>updated_at</td><td>false</td></tr><tr><td>roles</td><td>true</td></tr><tr><td>user_id</td><td>true</td></tr><tr><td>organization_id</td><td>true</td></tr></tbody></table> |
18+
| Template | <table><thead><tr><th>Field</th><th>Tracked</th></tr></thead><tbody><tr><td>min_autostart_interval</td><td>true</td></tr><tr><td>created_by</td><td>true</td></tr><tr><td>allow_user_cancel_workspace_jobs</td><td>true</td></tr><tr><td>id</td><td>true</td></tr><tr><td>active_version_id</td><td>true</td></tr><tr><td>updated_at</td><td>false</td></tr><tr><td>deleted</td><td>false</td></tr><tr><td>default_ttl</td><td>true</td></tr><tr><td>is_private</td><td>true</td></tr><tr><td>created_at</td><td>false</td></tr><tr><td>provisioner</td><td>true</td></tr><tr><td>group_acl</td><td>true</td></tr><tr><td>description</td><td>true</td></tr><tr><td>user_acl</td><td>true</td></tr><tr><td>organization_id</td><td>false</td></tr><tr><td>name</td><td>true</td></tr><tr><td>display_name</td><td>true</td></tr><tr><td>icon</td><td>true</td></tr></tbody></table> |
19+
| TemplateVersion | <table><thead><tr><th>Field</th><th>Tracked</th></tr></thead><tbody><tr><td>readme</td><td>true</td></tr><tr><td>name</td><td>true</td></tr><tr><td>organization_id</td><td>false</td></tr><tr><td>updated_at</td><td>false</td></tr><tr><td>template_id</td><td>true</td></tr><tr><td>job_id</td><td>false</td></tr><tr><td>created_at</td><td>false</td></tr><tr><td>created_by</td><td>true</td></tr><tr><td>id</td><td>true</td></tr></tbody></table> |
20+
| User | <table><thead><tr><th>Field</th><th>Tracked</th></tr></thead><tbody><tr><td>status</td><td>true</td></tr><tr><td>avatar_url</td><td>false</td></tr><tr><td>login_type</td><td>false</td></tr><tr><td>last_seen_at</td><td>false</td></tr><tr><td>email</td><td>true</td></tr><tr><td>username</td><td>true</td></tr><tr><td>updated_at</td><td>false</td></tr><tr><td>rbac_roles</td><td>true</td></tr><tr><td>hashed_password</td><td>true</td></tr><tr><td>created_at</td><td>false</td></tr><tr><td>deleted</td><td>true</td></tr><tr><td>id</td><td>true</td></tr></tbody></table> |
21+
| Workspace | <table><thead><tr><th>Field</th><th>Tracked</th></tr></thead><tbody><tr><td>autostart_schedule</td><td>true</td></tr><tr><td>ttl</td><td>true</td></tr><tr><td>last_used_at</td><td>false</td></tr><tr><td>id</td><td>true</td></tr><tr><td>created_at</td><td>false</td></tr><tr><td>organization_id</td><td>false</td></tr><tr><td>template_id</td><td>true</td></tr><tr><td>deleted</td><td>false</td></tr><tr><td>updated_at</td><td>false</td></tr><tr><td>owner_id</td><td>true</td></tr><tr><td>name</td><td>true</td></tr></tbody></table> |
22+
| WorkspaceBuild | <table><thead><tr><th>Field</th><th>Tracked</th></tr></thead><tbody><tr><td>deadline</td><td>false</td></tr><tr><td>id</td><td>false</td></tr><tr><td>created_at</td><td>false</td></tr><tr><td>build_number</td><td>false</td></tr><tr><td>job_id</td><td>false</td></tr><tr><td>template_version_id</td><td>true</td></tr><tr><td>transition</td><td>false</td></tr><tr><td>provisioner_state</td><td>false</td></tr><tr><td>reason</td><td>false</td></tr><tr><td>updated_at</td><td>false</td></tr><tr><td>daily_cost</td><td>false</td></tr><tr><td>workspace_id</td><td>false</td></tr><tr><td>initiator_id</td><td>false</td></tr></tbody></table> |
2323

2424
<!-- End generated by 'make docs/admin/audit-logs.md'. -->
2525

scripts/auditdocgen/main.go

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import (
55
"flag"
66
"log"
77
"os"
8+
"sort"
89
"strconv"
910
"strings"
1011

@@ -93,6 +94,9 @@ func readAuditDoc() ([]byte, error) {
9394

9495
// Writes a markdown table of audit log resources to a buffer
9596
func updateAuditDoc(doc []byte, auditableResourcesMap AuditableResourcesMap) ([]byte, error) {
97+
// We must sort the resources to ensure table ordering
98+
resourceNames := sortResources(auditableResourcesMap)
99+
96100
i := bytes.Index(doc, generatorPrefix)
97101
if i < 0 {
98102
return nil, xerrors.New("generator prefix tag not found")
@@ -112,10 +116,10 @@ func updateAuditDoc(doc []byte, auditableResourcesMap AuditableResourcesMap) ([]
112116
buffer.WriteString("|<b>Resource<b>||\n")
113117
buffer.WriteString("|--|-----------------|\n")
114118

115-
for resourceName, resourceFields := range auditableResourcesMap {
119+
for _, resourceName := range resourceNames {
116120
buffer.WriteString("|" + resourceName + "|<table><thead><tr><th>Field</th><th>Tracked</th></tr></thead><tbody>")
117121

118-
for fieldName, isTracked := range resourceFields {
122+
for fieldName, isTracked := range auditableResourcesMap[resourceName] {
119123
buffer.WriteString("<tr><td>" + fieldName + "</td><td>" + strconv.FormatBool(isTracked) + "</td></tr>")
120124
}
121125

@@ -132,3 +136,12 @@ func writeAuditDoc(doc []byte) error {
132136
/* #nosec G306 */
133137
return os.WriteFile(auditDocFile, doc, 0644)
134138
}
139+
140+
func sortResources(resourcesMap AuditableResourcesMap) []string {
141+
var resourceNames []string
142+
for key := range resourcesMap {
143+
resourceNames = append(resourceNames, key)
144+
}
145+
sort.Strings(resourceNames)
146+
return resourceNames
147+
}

0 commit comments

Comments
 (0)