Let the instance service account list a team's deadman switches
CI / chart (push) Successful in 1s
CI / security (push) Successful in 34s
CI / test (push) Successful in 6m26s
Release / chart (push) Successful in 2s
Release / binaries (push) Successful in 15s
Release / scan-image (push) Successful in 6s
Release / test (push) Successful in 12s
Release / image (push) Successful in 1m8s

GET /api/teams/{id}/deadman/switches used requireTeamMember, which 404s
for the instance-scoped service account because it belongs to no team.
terdut-operator lists switches by name on every reconcile, so TerdutTeams
never became ready. Instance service accounts now pass, as they already do
for the write endpoints.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
This commit is contained in:
Niklas Ye
2026-10-20 15:34:31 +02:00
parent 220eb97665
commit 8b9adb4910
3 changed files with 34 additions and 3 deletions
+4 -1
View File
@@ -826,7 +826,10 @@ func handleListTeamDeadman(db *sql.DB) http.HandlerFunc {
if !ok {
return
}
if !requireTeamMember(w, r, teamID) {
// The operator's instance-scoped account reconciles the switches by name,
// so it has to read them without being a member: that is owner reach,
// the same as the writes below, and still reads no incidents.
if !isInstanceServiceAccount(r.Context()) && !requireTeamMember(w, r, teamID) {
return
}