[GIN] 2026/04/21 - 14:59:03 | 200 | 34.179µs | 10.134.0.2 | GET "/health" [GIN] 2026/04/21 - 14:59:06 | 200 | 223.711µs | 10.134.0.48 | POST "/internal/v1/subscriptions/select" [GIN] 2026/04/21 - 14:59:06 | 200 | 164.677µs | 10.134.0.48 | POST "/internal/v1/subscriptions/select" [GIN] 2026/04/21 - 14:59:06 | 200 | 23.094183ms | 100.64.0.2 | GET "/v1/models" [GIN] 2026/04/21 - 14:59:07 | 200 | 36.57µs | 10.134.0.2 | GET "/health" [GIN] 2026/04/21 - 14:59:12 | 200 | 34.469µs | 10.134.0.2 | GET "/health" [GIN] 2026/04/21 - 14:59:13 | 200 | 30.075µs | 10.134.0.2 | GET "/health" [GIN] 2026/04/21 - 14:59:17 | 200 | 51.532µs | 10.134.0.2 | GET "/health" {"level":"info","timestamp":"2026-04-21T14:59:18.798Z","caller":"api_keys/service.go:150","message":"Created API key","user":"system:serviceaccount:default:e2e-models-single-sub-sa","groups":["system:serviceaccounts","system:serviceaccounts:default","system:authenticated"],"id":"01234369-1e21-4de2-97b2-6a255548e47d","ephemeral":false} {"level":"info","timestamp":"2026-04-21T14:59:18.798Z","caller":"api_keys/handler.go:222","message":"Created API key","keyId":"01234369-1e21-4de2-97b2-6a255548e47d","keyPrefix":"sk-oai-Tr5uGRmXrHmE...","username":"system:serviceaccount:default:e2e-models-single-sub-sa","groups":["system:serviceaccounts","system:serviceaccounts:default","system:authenticated"],"ephemeral":false} [GIN] 2026/04/21 - 14:59:18 | 201 | 2.468623ms | 100.64.0.4 | POST "/v1/api-keys" [GIN] 2026/04/21 - 14:59:22 | 200 | 27.961µs | 10.134.0.2 | GET "/health" [GIN] 2026/04/21 - 14:59:23 | 200 | 36.755µs | 10.134.0.2 | GET "/health" [GIN] 2026/04/21 - 14:59:27 | 200 | 64.529µs | 10.134.0.2 | GET "/health" [GIN] 2026/04/21 - 14:59:32 | 200 | 34.553µs | 10.134.0.2 | GET "/health" [GIN] 2026/04/21 - 14:59:33 | 200 | 36.346µs | 10.134.0.2 | GET "/health" [GIN] 2026/04/21 - 14:59:37 | 200 | 40.921µs | 10.134.0.2 | GET "/health" [GIN] 2026/04/21 - 14:59:42 | 200 | 36.238µs | 10.134.0.2 | GET "/health" [GIN] 2026/04/21 - 14:59:43 | 200 | 39.543µs | 10.134.0.2 | GET "/health" [GIN] 2026/04/21 - 14:59:47 | 200 | 30.95µs | 10.134.0.2 | GET "/health" [GIN] 2026/04/21 - 14:59:48 | 200 | 10.411954ms | 10.134.0.48 | POST "/internal/v1/api-keys/validate" [GIN] 2026/04/21 - 14:59:48 | 200 | 134.034µs | 10.134.0.48 | POST "/internal/v1/subscriptions/select" [GIN] 2026/04/21 - 14:59:48 | 200 | 651.55µs | 10.134.0.48 | POST "/internal/v1/api-keys/validate" [GIN] 2026/04/21 - 14:59:48 | 200 | 470.642µs | 10.134.0.48 | POST "/internal/v1/api-keys/validate" [GIN] 2026/04/21 - 14:59:48 | 200 | 122.452µs | 10.134.0.48 | POST "/internal/v1/subscriptions/select" [GIN] 2026/04/21 - 14:59:48 | 200 | 13.547585ms | 100.64.0.2 | GET "/v1/models" [GIN] 2026/04/21 - 14:59:52 | 200 | 35.066µs | 10.134.0.2 | GET "/health" [GIN] 2026/04/21 - 14:59:53 | 200 | 36.091µs | 10.134.0.2 | GET "/health" [GIN] 2026/04/21 - 14:59:57 | 200 | 47.071µs | 10.134.0.2 | GET "/health" [GIN] 2026/04/21 - 15:00:02 | 200 | 36.98µs | 10.134.0.2 | GET "/health" [GIN] 2026/04/21 - 15:00:03 | 200 | 43.037µs | 10.134.0.2 | GET "/health" [GIN] 2026/04/21 - 15:00:06 | 200 | 151.968µs | 10.134.0.48 | POST "/internal/v1/subscriptions/select" [GIN] 2026/04/21 - 15:00:06 | 200 | 16.284835ms | 100.64.0.3 | GET "/v1/models" [GIN] 2026/04/21 - 15:00:07 | 200 | 46.538µs | 10.134.0.2 | GET "/health" [GIN] 2026/04/21 - 15:00:12 | 200 | 38.373µs | 10.134.0.2 | GET "/health" [GIN] 2026/04/21 - 15:00:13 | 200 | 33.367µs | 10.134.0.2 | GET "/health" {"level":"info","timestamp":"2026-04-21T15:00:14.651Z","caller":"api_keys/service.go:150","message":"Created API key","user":"system:serviceaccount:default:e2e-models-empty-header-sa","groups":["system:authenticated","system:serviceaccounts","system:serviceaccounts:default","system:authenticated"],"id":"02edf3ae-6f93-47af-b887-b75a3f7876ad","ephemeral":false} {"level":"info","timestamp":"2026-04-21T15:00:14.651Z","caller":"api_keys/handler.go:222","message":"Created API key","keyId":"02edf3ae-6f93-47af-b887-b75a3f7876ad","keyPrefix":"sk-oai-dr5Wx1PyOLBj...","username":"system:serviceaccount:default:e2e-models-empty-header-sa","groups":["system:authenticated","system:serviceaccounts","system:serviceaccounts:default","system:authenticated"],"ephemeral":false} [GIN] 2026/04/21 - 15:00:14 | 201 | 2.553222ms | 100.64.0.2 | POST "/v1/api-keys" [GIN] 2026/04/21 - 15:00:17 | 200 | 36.677µs | 10.134.0.2 | GET "/health" [GIN] 2026/04/21 - 15:00:22 | 200 | 36.102µs | 10.134.0.2 | GET "/health" [GIN] 2026/04/21 - 15:00:22 | 200 | 956.984µs | 10.134.0.48 | POST "/internal/v1/api-keys/validate" [GIN] 2026/04/21 - 15:00:22 | 200 | 480.588µs | 10.134.0.48 | POST "/internal/v1/api-keys/validate" [GIN] 2026/04/21 - 15:00:22 | 200 | 134.744µs | 10.134.0.48 | POST "/internal/v1/subscriptions/select" [GIN] 2026/04/21 - 15:00:22 | 200 | 9.809923ms | 100.64.0.4 | GET "/v1/models" [GIN] 2026/04/21 - 15:00:23 | 200 | 35.599µs | 10.134.0.2 | GET "/health" {"level":"info","timestamp":"2026-04-21T15:00:23.195Z","caller":"api_keys/service.go:150","message":"Created API key","user":"system:serviceaccount:default:e2e-models-filtered-sa","groups":["system:serviceaccounts","system:serviceaccounts:default","system:authenticated"],"id":"08b89312-b6bd-4241-88b9-2b4707027122","ephemeral":false} {"level":"info","timestamp":"2026-04-21T15:00:23.195Z","caller":"api_keys/handler.go:222","message":"Created API key","keyId":"08b89312-b6bd-4241-88b9-2b4707027122","keyPrefix":"sk-oai-GJDhYmMqfKKS...","username":"system:serviceaccount:default:e2e-models-filtered-sa","groups":["system:serviceaccounts","system:serviceaccounts:default","system:authenticated"],"ephemeral":false} [GIN] 2026/04/21 - 15:00:23 | 201 | 1.83536ms | 100.64.0.3 | POST "/v1/api-keys" [GIN] 2026/04/21 - 15:00:27 | 200 | 33.91µs | 10.134.0.2 | GET "/health" [GIN] 2026/04/21 - 15:00:31 | 200 | 953.219µs | 10.134.0.48 | POST "/internal/v1/api-keys/validate" [GIN] 2026/04/21 - 15:00:31 | 200 | 450.167µs | 10.134.0.48 | POST "/internal/v1/api-keys/validate" [GIN] 2026/04/21 - 15:00:31 | 200 | 120.353µs | 10.134.0.48 | POST "/internal/v1/subscriptions/select" [GIN] 2026/04/21 - 15:00:31 | 200 | 6.99276ms | 100.64.0.4 | GET "/v1/models" [GIN] 2026/04/21 - 15:00:31 | 200 | 585.85µs | 10.134.0.48 | POST "/internal/v1/api-keys/validate" [GIN] 2026/04/21 - 15:00:31 | 200 | 462.92µs | 10.134.0.48 | POST "/internal/v1/api-keys/validate" [GIN] 2026/04/21 - 15:00:31 | 200 | 134.358µs | 10.134.0.48 | POST "/internal/v1/subscriptions/select" [GIN] 2026/04/21 - 15:00:31 | 200 | 7.129496ms | 100.64.0.3 | GET "/v1/models" {"level":"info","timestamp":"2026-04-21T15:00:32.206Z","caller":"api_keys/service.go:150","message":"Created API key","user":"system:serviceaccount:default:e2e-models-dedup-sa","groups":["system:authenticated","system:serviceaccounts","system:serviceaccounts:default","system:authenticated"],"id":"b30dde8f-e9b3-4e36-941d-6e8088c78d06","ephemeral":false} {"level":"info","timestamp":"2026-04-21T15:00:32.206Z","caller":"api_keys/handler.go:222","message":"Created API key","keyId":"b30dde8f-e9b3-4e36-941d-6e8088c78d06","keyPrefix":"sk-oai-40jfXEMP29ra...","username":"system:serviceaccount:default:e2e-models-dedup-sa","groups":["system:authenticated","system:serviceaccounts","system:serviceaccounts:default","system:authenticated"],"ephemeral":false} [GIN] 2026/04/21 - 15:00:32 | 201 | 2.005683ms | 100.64.0.3 | POST "/v1/api-keys" [GIN] 2026/04/21 - 15:00:32 | 200 | 48.628µs | 10.134.0.2 | GET "/health" [GIN] 2026/04/21 - 15:00:33 | 200 | 33.257µs | 10.134.0.2 | GET "/health" [GIN] 2026/04/21 - 15:00:37 | 200 | 35.654µs | 10.134.0.2 | GET "/health" [GIN] 2026/04/21 - 15:00:40 | 200 | 839.723µs | 10.134.0.48 | POST "/internal/v1/api-keys/validate" [GIN] 2026/04/21 - 15:00:40 | 200 | 438.537µs | 10.134.0.48 | POST "/internal/v1/api-keys/validate" [GIN] 2026/04/21 - 15:00:40 | 200 | 130.129µs | 10.134.0.48 | POST "/internal/v1/subscriptions/select" [GIN] 2026/04/21 - 15:00:40 | 200 | 9.465074ms | 100.64.0.2 | GET "/v1/models" [GIN] 2026/04/21 - 15:00:42 | 200 | 31.054µs | 10.134.0.2 | GET "/health" [GIN] 2026/04/21 - 15:00:43 | 200 | 37.686µs | 10.134.0.2 | GET "/health" [GIN] 2026/04/21 - 15:00:47 | 200 | 42.899µs | 10.134.0.2 | GET "/health" {"level":"info","timestamp":"2026-04-21T15:00:49.374Z","caller":"api_keys/service.go:150","message":"Created API key","user":"system:serviceaccount:default:e2e-models-diff-refs-sa","groups":["system:authenticated","system:serviceaccounts","system:serviceaccounts:default","system:authenticated"],"id":"31ca5086-5574-4ed2-aeac-3e3111971a67","ephemeral":false} {"level":"info","timestamp":"2026-04-21T15:00:49.374Z","caller":"api_keys/handler.go:222","message":"Created API key","keyId":"31ca5086-5574-4ed2-aeac-3e3111971a67","keyPrefix":"sk-oai-1Kn2SGsnQe5d...","username":"system:serviceaccount:default:e2e-models-diff-refs-sa","groups":["system:authenticated","system:serviceaccounts","system:serviceaccounts:default","system:authenticated"],"ephemeral":false} [GIN] 2026/04/21 - 15:00:49 | 201 | 2.010317ms | 100.64.0.2 | POST "/v1/api-keys" [GIN] 2026/04/21 - 15:00:52 | 200 | 34.128µs | 10.134.0.2 | GET "/health" [GIN] 2026/04/21 - 15:00:53 | 200 | 36.234µs | 10.134.0.2 | GET "/health" [GIN] 2026/04/21 - 15:00:57 | 200 | 33.953µs | 10.134.0.2 | GET "/health" [GIN] 2026/04/21 - 15:00:57 | 200 | 916.024µs | 10.134.0.48 | POST "/internal/v1/api-keys/validate" [GIN] 2026/04/21 - 15:00:57 | 200 | 507.686µs | 10.134.0.48 | POST "/internal/v1/api-keys/validate" [GIN] 2026/04/21 - 15:00:57 | 200 | 145.186µs | 10.134.0.48 | POST "/internal/v1/subscriptions/select" [GIN] 2026/04/21 - 15:00:57 | 200 | 461.218µs | 10.134.0.48 | POST "/internal/v1/api-keys/validate" [GIN] 2026/04/21 - 15:00:57 | 200 | 117.972µs | 10.134.0.48 | POST "/internal/v1/subscriptions/select" [GIN] 2026/04/21 - 15:00:57 | 200 | 20.375109ms | 100.64.0.4 | GET "/v1/models" [GIN] 2026/04/21 - 15:01:02 | 200 | 30.632µs | 10.134.0.2 | GET "/health" [GIN] 2026/04/21 - 15:01:03 | 200 | 40.621µs | 10.134.0.2 | GET "/health" [GIN] 2026/04/21 - 15:01:07 | 200 | 31.544µs | 10.134.0.2 | GET "/health" {"level":"info","timestamp":"2026-04-21T15:01:10.773Z","caller":"api_keys/service.go:150","message":"Created API key","user":"system:serviceaccount:default:e2e-models-distinct-sa","groups":["system:serviceaccounts","system:serviceaccounts:default","system:authenticated"],"id":"150c5d20-b581-4df8-8af3-0ae5944f4093","ephemeral":false} {"level":"info","timestamp":"2026-04-21T15:01:10.773Z","caller":"api_keys/handler.go:222","message":"Created API key","keyId":"150c5d20-b581-4df8-8af3-0ae5944f4093","keyPrefix":"sk-oai-1etJdVBcTpzY...","username":"system:serviceaccount:default:e2e-models-distinct-sa","groups":["system:serviceaccounts","system:serviceaccounts:default","system:authenticated"],"ephemeral":false} [GIN] 2026/04/21 - 15:01:10 | 201 | 3.694789ms | 100.64.0.2 | POST "/v1/api-keys" [GIN] 2026/04/21 - 15:01:12 | 200 | 38.349µs | 10.134.0.2 | GET "/health" [GIN] 2026/04/21 - 15:01:13 | 200 | 37.874µs | 10.134.0.2 | GET "/health" [GIN] 2026/04/21 - 15:01:17 | 200 | 34µs | 10.134.0.2 | GET "/health" [GIN] 2026/04/21 - 15:01:18 | 200 | 941.128µs | 10.134.0.48 | POST "/internal/v1/api-keys/validate" [GIN] 2026/04/21 - 15:01:18 | 200 | 490.322µs | 10.134.0.48 | POST "/internal/v1/api-keys/validate" [GIN] 2026/04/21 - 15:01:18 | 200 | 129.874µs | 10.134.0.48 | POST "/internal/v1/subscriptions/select" [GIN] 2026/04/21 - 15:01:18 | 200 | 11.134215ms | 10.134.0.48 | POST "/internal/v1/api-keys/validate" [GIN] 2026/04/21 - 15:01:18 | 200 | 133.093µs | 10.134.0.48 | POST "/internal/v1/subscriptions/select" [GIN] 2026/04/21 - 15:01:18 | 200 | 34.738385ms | 100.64.0.4 | GET "/v1/models" [GIN] 2026/04/21 - 15:01:22 | 200 | 34.854µs | 10.134.0.2 | GET "/health" [GIN] 2026/04/21 - 15:01:23 | 200 | 37.714µs | 10.134.0.2 | GET "/health" [GIN] 2026/04/21 - 15:01:27 | 200 | 36.836µs | 10.134.0.2 | GET "/health" [GIN] 2026/04/21 - 15:01:32 | 200 | 32.512µs | 10.134.0.2 | GET "/health" [GIN] 2026/04/21 - 15:01:33 | 200 | 33.047µs | 10.134.0.2 | GET "/health" [GIN] 2026/04/21 - 15:01:34 | 200 | 172.211µs | 10.134.0.48 | POST "/internal/v1/subscriptions/select" [GIN] 2026/04/21 - 15:01:34 | 200 | 153.569µs | 10.134.0.48 | POST "/internal/v1/subscriptions/select" [GIN] 2026/04/21 - 15:01:34 | 200 | 149.639µs | 10.134.0.48 | POST "/internal/v1/subscriptions/select" [GIN] 2026/04/21 - 15:01:34 | 200 | 36.568433ms | 100.64.0.3 | GET "/v1/models" [GIN] 2026/04/21 - 15:01:37 | 200 | 33.087µs | 10.134.0.2 | GET "/health" [GIN] 2026/04/21 - 15:01:42 | 200 | 53.961µs | 10.134.0.2 | GET "/health" [GIN] 2026/04/21 - 15:01:43 | 200 | 32.664µs | 10.134.0.2 | GET "/health" [GIN] 2026/04/21 - 15:01:47 | 200 | 38.765µs | 10.134.0.2 | GET "/health" [GIN] 2026/04/21 - 15:01:52 | 200 | 33.752µs | 10.134.0.2 | GET "/health" [GIN] 2026/04/21 - 15:01:52 | 200 | 144.95µs | 10.134.0.48 | POST "/internal/v1/subscriptions/select" [GIN] 2026/04/21 - 15:01:52 | 200 | 12.911721ms | 100.64.0.2 | GET "/v1/models" [GIN] 2026/04/21 - 15:01:53 | 200 | 33.481µs | 10.134.0.2 | GET "/health" [GIN] 2026/04/21 - 15:01:57 | 200 | 55.096µs | 10.134.0.2 | GET "/health" [GIN] 2026/04/21 - 15:02:02 | 200 | 31.238µs | 10.134.0.2 | GET "/health" [GIN] 2026/04/21 - 15:02:03 | 200 | 43.535µs | 10.134.0.2 | GET "/health" {"level":"info","timestamp":"2026-04-21T15:02:03.549Z","caller":"api_keys/service.go:150","message":"Created API key","user":"system:serviceaccount:default:e2e-empty-models-sa","groups":["system:serviceaccounts","system:serviceaccounts:default","system:authenticated"],"id":"8c70fa47-cb7c-421a-b884-65750211c7e3","ephemeral":false} {"level":"info","timestamp":"2026-04-21T15:02:03.549Z","caller":"api_keys/handler.go:222","message":"Created API key","keyId":"8c70fa47-cb7c-421a-b884-65750211c7e3","keyPrefix":"sk-oai-czrvVgnIU6r4...","username":"system:serviceaccount:default:e2e-empty-models-sa","groups":["system:serviceaccounts","system:serviceaccounts:default","system:authenticated"],"ephemeral":false} [GIN] 2026/04/21 - 15:02:03 | 201 | 2.683764ms | 100.64.0.2 | POST "/v1/api-keys" [GIN] 2026/04/21 - 15:02:07 | 200 | 40.584µs | 10.134.0.2 | GET "/health" [GIN] 2026/04/21 - 15:02:11 | 200 | 1.115656ms | 10.134.0.48 | POST "/internal/v1/api-keys/validate" [GIN] 2026/04/21 - 15:02:11 | 200 | 5.67928ms | 100.64.0.4 | GET "/v1/models" {"level":"info","timestamp":"2026-04-21T15:02:12.170Z","caller":"api_keys/service.go:150","message":"Created API key","user":"system:serviceaccount:default:e2e-models-schema-test-sa","groups":["system:authenticated","system:serviceaccounts","system:serviceaccounts:default","system:authenticated"],"id":"55a6a294-005a-4439-901d-29ecb59404bd","ephemeral":false} {"level":"info","timestamp":"2026-04-21T15:02:12.170Z","caller":"api_keys/handler.go:222","message":"Created API key","keyId":"55a6a294-005a-4439-901d-29ecb59404bd","keyPrefix":"sk-oai-aIykzMAMmsy6...","username":"system:serviceaccount:default:e2e-models-schema-test-sa","groups":["system:authenticated","system:serviceaccounts","system:serviceaccounts:default","system:authenticated"],"ephemeral":false} [GIN] 2026/04/21 - 15:02:12 | 201 | 1.939156ms | 100.64.0.3 | POST "/v1/api-keys" [GIN] 2026/04/21 - 15:02:12 | 200 | 41.64µs | 10.134.0.2 | GET "/health" [GIN] 2026/04/21 - 15:02:13 | 200 | 55.689µs | 10.134.0.2 | GET "/health" [GIN] 2026/04/21 - 15:02:17 | 200 | 44.985µs | 10.134.0.2 | GET "/health" [GIN] 2026/04/21 - 15:02:20 | 200 | 1.188237ms | 10.134.0.48 | POST "/internal/v1/api-keys/validate" [GIN] 2026/04/21 - 15:02:20 | 200 | 471.14µs | 10.134.0.48 | POST "/internal/v1/api-keys/validate" [GIN] 2026/04/21 - 15:02:20 | 200 | 112.234µs | 10.134.0.48 | POST "/internal/v1/subscriptions/select" [GIN] 2026/04/21 - 15:02:20 | 200 | 9.352506ms | 100.64.0.3 | GET "/v1/models" {"level":"info","timestamp":"2026-04-21T15:02:20.577Z","caller":"api_keys/service.go:150","message":"Created API key","user":"system:serviceaccount:default:e2e-models-metadata-sa","groups":["system:authenticated","system:serviceaccounts","system:serviceaccounts:default","system:authenticated"],"id":"f6733b5a-e50c-4208-aff1-9b9932804b11","ephemeral":false} {"level":"info","timestamp":"2026-04-21T15:02:20.577Z","caller":"api_keys/handler.go:222","message":"Created API key","keyId":"f6733b5a-e50c-4208-aff1-9b9932804b11","keyPrefix":"sk-oai-BzzWGqZn2FHj...","username":"system:serviceaccount:default:e2e-models-metadata-sa","groups":["system:authenticated","system:serviceaccounts","system:serviceaccounts:default","system:authenticated"],"ephemeral":false} [GIN] 2026/04/21 - 15:02:20 | 201 | 1.956105ms | 100.64.0.2 | POST "/v1/api-keys" [GIN] 2026/04/21 - 15:02:22 | 200 | 33.107µs | 10.134.0.2 | GET "/health" [GIN] 2026/04/21 - 15:02:23 | 200 | 35.132µs | 10.134.0.2 | GET "/health" [GIN] 2026/04/21 - 15:02:27 | 200 | 38.936µs | 10.134.0.2 | GET "/health" [GIN] 2026/04/21 - 15:02:28 | 200 | 1.201047ms | 10.134.0.48 | POST "/internal/v1/api-keys/validate" [GIN] 2026/04/21 - 15:02:28 | 200 | 571.28µs | 10.134.0.48 | POST "/internal/v1/api-keys/validate" [GIN] 2026/04/21 - 15:02:28 | 200 | 105.606µs | 10.134.0.48 | POST "/internal/v1/subscriptions/select" [GIN] 2026/04/21 - 15:02:28 | 200 | 9.57469ms | 100.64.0.4 | GET "/v1/models" {"level":"info","timestamp":"2026-04-21T15:02:29.351Z","caller":"api_keys/service.go:150","message":"Created API key","user":"system:serviceaccount:models-as-a-service:e2e-api-key-scoped-sa","groups":["system:serviceaccounts","system:serviceaccounts:models-as-a-service","system:authenticated"],"id":"81196182-7d1f-4fb7-a0d3-18a4051df5a6","ephemeral":false} {"level":"info","timestamp":"2026-04-21T15:02:29.351Z","caller":"api_keys/handler.go:222","message":"Created API key","keyId":"81196182-7d1f-4fb7-a0d3-18a4051df5a6","keyPrefix":"sk-oai-1Wb32JXgzhjX...","username":"system:serviceaccount:models-as-a-service:e2e-api-key-scoped-sa","groups":["system:serviceaccounts","system:serviceaccounts:models-as-a-service","system:authenticated"],"ephemeral":false} [GIN] 2026/04/21 - 15:02:29 | 201 | 1.849065ms | 100.64.0.3 | POST "/v1/api-keys" [GIN] 2026/04/21 - 15:02:32 | 200 | 31.69µs | 10.134.0.2 | GET "/health" [GIN] 2026/04/21 - 15:02:33 | 200 | 38.286µs | 10.134.0.2 | GET "/health" [GIN] 2026/04/21 - 15:02:37 | 200 | 38.598µs | 10.134.0.2 | GET "/health" [GIN] 2026/04/21 - 15:02:37 | 200 | 952.043µs | 10.134.0.48 | POST "/internal/v1/api-keys/validate" [GIN] 2026/04/21 - 15:02:37 | 200 | 463.264µs | 10.134.0.48 | POST "/internal/v1/api-keys/validate" [GIN] 2026/04/21 - 15:02:37 | 200 | 146.923µs | 10.134.0.48 | POST "/internal/v1/subscriptions/select" [GIN] 2026/04/21 - 15:02:37 | 200 | 9.499762ms | 100.64.0.2 | GET "/v1/models" [GIN] 2026/04/21 - 15:02:42 | 200 | 34.079µs | 10.134.0.2 | GET "/health" [GIN] 2026/04/21 - 15:02:43 | 200 | 33.765µs | 10.134.0.2 | GET "/health" {"level":"info","timestamp":"2026-04-21T15:02:46.536Z","caller":"api_keys/service.go:150","message":"Created API key","user":"system:serviceaccount:models-as-a-service:e2e-api-key-deleted-sub-sa","groups":["system:serviceaccounts","system:serviceaccounts:models-as-a-service","system:authenticated"],"id":"d99a202e-4ef3-4c33-84df-0b3a14afe170","ephemeral":false} {"level":"info","timestamp":"2026-04-21T15:02:46.536Z","caller":"api_keys/handler.go:222","message":"Created API key","keyId":"d99a202e-4ef3-4c33-84df-0b3a14afe170","keyPrefix":"sk-oai-1E3xmCVkQggp...","username":"system:serviceaccount:models-as-a-service:e2e-api-key-deleted-sub-sa","groups":["system:serviceaccounts","system:serviceaccounts:models-as-a-service","system:authenticated"],"ephemeral":false} [GIN] 2026/04/21 - 15:02:46 | 201 | 2.127521ms | 100.64.0.4 | POST "/v1/api-keys" [GIN] 2026/04/21 - 15:02:47 | 200 | 36.21µs | 10.134.0.2 | GET "/health" [GIN] 2026/04/21 - 15:02:52 | 200 | 33.857µs | 10.134.0.2 | GET "/health" [GIN] 2026/04/21 - 15:02:53 | 200 | 39.741µs | 10.134.0.2 | GET "/health" [GIN] 2026/04/21 - 15:02:57 | 200 | 36.322µs | 10.134.0.2 | GET "/health" [GIN] 2026/04/21 - 15:03:02 | 200 | 55.602µs | 10.134.0.2 | GET "/health" [GIN] 2026/04/21 - 15:03:02 | 200 | 897.614µs | 10.134.0.48 | POST "/internal/v1/api-keys/validate" [GIN] 2026/04/21 - 15:03:02 | 403 | 70.954µs | 100.64.0.3 | GET "/v1/models" [GIN] 2026/04/21 - 15:03:03 | 200 | 39.333µs | 10.134.0.2 | GET "/health" [GIN] 2026/04/21 - 15:03:07 | 200 | 40.246µs | 10.134.0.2 | GET "/health" [GIN] 2026/04/21 - 15:03:12 | 200 | 34.093µs | 10.134.0.2 | GET "/health" [GIN] 2026/04/21 - 15:03:13 | 200 | 32.186µs | 10.134.0.2 | GET "/health" [GIN] 2026/04/21 - 15:03:17 | 200 | 50.043µs | 10.134.0.2 | GET "/health" [GIN] 2026/04/21 - 15:03:19 | 403 | 110.015µs | 100.64.0.2 | GET "/v1/models" [GIN] 2026/04/21 - 15:03:22 | 200 | 43.349µs | 10.134.0.2 | GET "/health" [GIN] 2026/04/21 - 15:03:23 | 200 | 39.844µs | 10.134.0.2 | GET "/health" [GIN] 2026/04/21 - 15:03:27 | 200 | 36.103µs | 10.134.0.2 | GET "/health" [GIN] 2026/04/21 - 15:03:32 | 200 | 36.437µs | 10.134.0.2 | GET "/health" [GIN] 2026/04/21 - 15:03:33 | 200 | 44.399µs | 10.134.0.2 | GET "/health" [GIN] 2026/04/21 - 15:03:36 | 403 | 112.283µs | 100.64.0.4 | GET "/v1/models" [GIN] 2026/04/21 - 15:03:37 | 200 | 35.37µs | 10.134.0.2 | GET "/health" [GIN] 2026/04/21 - 15:03:42 | 200 | 47.498µs | 10.134.0.2 | GET "/health" [GIN] 2026/04/21 - 15:03:43 | 200 | 38.646µs | 10.134.0.2 | GET "/health" [GIN] 2026/04/21 - 15:03:47 | 200 | 51.159µs | 10.134.0.2 | GET "/health" [GIN] 2026/04/21 - 15:03:52 | 200 | 31.694µs | 10.134.0.2 | GET "/health" [GIN] 2026/04/21 - 15:03:53 | 200 | 41.657µs | 10.134.0.2 | GET "/health" [GIN] 2026/04/21 - 15:03:54 | 403 | 120.07µs | 100.64.0.3 | GET "/v1/models" [GIN] 2026/04/21 - 15:03:57 | 200 | 31.663µs | 10.134.0.2 | GET "/health" [GIN] 2026/04/21 - 15:04:02 | 200 | 31.066µs | 10.134.0.2 | GET "/health" [GIN] 2026/04/21 - 15:04:03 | 200 | 59.989µs | 10.134.0.2 | GET "/health" [GIN] 2026/04/21 - 15:04:07 | 200 | 33.127µs | 10.134.0.2 | GET "/health" {"level":"info","timestamp":"2026-04-21T15:04:08.385Z","caller":"api_keys/service.go:150","message":"Created API key","user":"system:serviceaccount:default:e2e-api-key-ignores-header-sa","groups":["system:serviceaccounts","system:serviceaccounts:default","system:authenticated"],"id":"10e577f2-a146-49dc-b486-dff6f6049eb0","ephemeral":false} {"level":"info","timestamp":"2026-04-21T15:04:08.385Z","caller":"api_keys/handler.go:222","message":"Created API key","keyId":"10e577f2-a146-49dc-b486-dff6f6049eb0","keyPrefix":"sk-oai-eMilgHGI5EP0...","username":"system:serviceaccount:default:e2e-api-key-ignores-header-sa","groups":["system:serviceaccounts","system:serviceaccounts:default","system:authenticated"],"ephemeral":false} [GIN] 2026/04/21 - 15:04:08 | 201 | 2.40447ms | 100.64.0.2 | POST "/v1/api-keys" [GIN] 2026/04/21 - 15:04:12 | 200 | 43.088µs | 10.134.0.2 | GET "/health" [GIN] 2026/04/21 - 15:04:13 | 200 | 48.711µs | 10.134.0.2 | GET "/health" [GIN] 2026/04/21 - 15:04:16 | 200 | 1.254768ms | 10.134.0.48 | POST "/internal/v1/api-keys/validate" [GIN] 2026/04/21 - 15:04:16 | 200 | 482.117µs | 10.134.0.48 | POST "/internal/v1/api-keys/validate" [GIN] 2026/04/21 - 15:04:16 | 200 | 120.844µs | 10.134.0.48 | POST "/internal/v1/subscriptions/select" [GIN] 2026/04/21 - 15:04:16 | 200 | 20.250337ms | 100.64.0.2 | GET "/v1/models" [GIN] 2026/04/21 - 15:04:17 | 200 | 35.766µs | 10.134.0.2 | GET "/health" [GIN] 2026/04/21 - 15:04:22 | 200 | 31.68µs | 10.134.0.2 | GET "/health" [GIN] 2026/04/21 - 15:04:23 | 200 | 35.244µs | 10.134.0.2 | GET "/health" [GIN] 2026/04/21 - 15:04:27 | 200 | 33.347µs | 10.134.0.2 | GET "/health" {"level":"info","timestamp":"2026-04-21T15:04:28.494Z","caller":"api_keys/service.go:150","message":"Created API key","user":"system:serviceaccount:default:e2e-multi-keys-sa","groups":["system:serviceaccounts","system:serviceaccounts:default","system:authenticated"],"id":"23d23e1c-6f92-436a-b7a2-0c3c8af29da1","ephemeral":false} {"level":"info","timestamp":"2026-04-21T15:04:28.494Z","caller":"api_keys/handler.go:222","message":"Created API key","keyId":"23d23e1c-6f92-436a-b7a2-0c3c8af29da1","keyPrefix":"sk-oai-74FRJ9uJpoJ4...","username":"system:serviceaccount:default:e2e-multi-keys-sa","groups":["system:serviceaccounts","system:serviceaccounts:default","system:authenticated"],"ephemeral":false} [GIN] 2026/04/21 - 15:04:28 | 201 | 2.270611ms | 100.64.0.4 | POST "/v1/api-keys" {"level":"info","timestamp":"2026-04-21T15:04:28.529Z","caller":"api_keys/service.go:150","message":"Created API key","user":"system:serviceaccount:default:e2e-multi-keys-sa","groups":["system:serviceaccounts","system:serviceaccounts:default","system:authenticated"],"id":"bfda6e96-f870-4ad3-84d7-01c94b116607","ephemeral":false} {"level":"info","timestamp":"2026-04-21T15:04:28.529Z","caller":"api_keys/handler.go:222","message":"Created API key","keyId":"bfda6e96-f870-4ad3-84d7-01c94b116607","keyPrefix":"sk-oai-1N9GSmIqVlEZ...","username":"system:serviceaccount:default:e2e-multi-keys-sa","groups":["system:serviceaccounts","system:serviceaccounts:default","system:authenticated"],"ephemeral":false} [GIN] 2026/04/21 - 15:04:28 | 201 | 1.761167ms | 100.64.0.3 | POST "/v1/api-keys" [GIN] 2026/04/21 - 15:04:32 | 200 | 33.813µs | 10.134.0.2 | GET "/health" [GIN] 2026/04/21 - 15:04:33 | 200 | 42.088µs | 10.134.0.2 | GET "/health" [GIN] 2026/04/21 - 15:04:36 | 200 | 1.051641ms | 10.134.0.48 | POST "/internal/v1/api-keys/validate" [GIN] 2026/04/21 - 15:04:36 | 200 | 445.729µs | 10.134.0.48 | POST "/internal/v1/api-keys/validate" [GIN] 2026/04/21 - 15:04:36 | 200 | 135.141µs | 10.134.0.48 | POST "/internal/v1/subscriptions/select" [GIN] 2026/04/21 - 15:04:36 | 200 | 8.817979ms | 100.64.0.2 | GET "/v1/models" [GIN] 2026/04/21 - 15:04:36 | 200 | 603.711µs | 10.134.0.48 | POST "/internal/v1/api-keys/validate" [GIN] 2026/04/21 - 15:04:36 | 200 | 393.942µs | 10.134.0.48 | POST "/internal/v1/api-keys/validate" [GIN] 2026/04/21 - 15:04:36 | 200 | 149.698µs | 10.134.0.48 | POST "/internal/v1/subscriptions/select" [GIN] 2026/04/21 - 15:04:36 | 200 | 12.043501ms | 100.64.0.4 | GET "/v1/models" [GIN] 2026/04/21 - 15:04:37 | 200 | 34.974µs | 10.134.0.2 | GET "/health" [GIN] 2026/04/21 - 15:04:42 | 200 | 33.843µs | 10.134.0.2 | GET "/health" [GIN] 2026/04/21 - 15:04:43 | 200 | 34.38µs | 10.134.0.2 | GET "/health" [GIN] 2026/04/21 - 15:04:47 | 200 | 34.649µs | 10.134.0.2 | GET "/health" [GIN] 2026/04/21 - 15:04:52 | 200 | 46.491µs | 10.134.0.2 | GET "/health" [GIN] 2026/04/21 - 15:04:53 | 200 | 36.366µs | 10.134.0.2 | GET "/health" [GIN] 2026/04/21 - 15:04:57 | 200 | 37.194µs | 10.134.0.2 | GET "/health" [GIN] 2026/04/21 - 15:04:57 | 200 | 182.26µs | 10.134.0.48 | POST "/internal/v1/subscriptions/select" [GIN] 2026/04/21 - 15:04:57 | 200 | 153.259µs | 10.134.0.48 | POST "/internal/v1/subscriptions/select" [GIN] 2026/04/21 - 15:04:57 | 200 | 167.641µs | 10.134.0.48 | POST "/internal/v1/subscriptions/select" [GIN] 2026/04/21 - 15:04:57 | 200 | 45.952992ms | 100.64.0.3 | GET "/v1/models" [GIN] 2026/04/21 - 15:05:02 | 200 | 39.784µs | 10.134.0.2 | GET "/health" [GIN] 2026/04/21 - 15:05:03 | 200 | 37.094µs | 10.134.0.2 | GET "/health" [GIN] 2026/04/21 - 15:05:07 | 200 | 34.213µs | 10.134.0.2 | GET "/health" [GIN] 2026/04/21 - 15:05:12 | 200 | 45.909µs | 10.134.0.2 | GET "/health" [GIN] 2026/04/21 - 15:05:13 | 200 | 36.871µs | 10.134.0.2 | GET "/health" [GIN] 2026/04/21 - 15:05:13 | 200 | 175.92µs | 10.134.0.48 | POST "/internal/v1/subscriptions/select" [GIN] 2026/04/21 - 15:05:13 | 200 | 14.290657ms | 100.64.0.4 | GET "/v1/models" [GIN] 2026/04/21 - 15:05:13 | 200 | 215.477µs | 10.134.0.48 | POST "/internal/v1/subscriptions/select" [GIN] 2026/04/21 - 15:05:13 | 200 | 16.012376ms | 100.64.0.3 | GET "/v1/models" [GIN] 2026/04/21 - 15:05:17 | 200 | 33.82µs | 10.134.0.2 | GET "/health" [GIN] 2026/04/21 - 15:05:22 | 200 | 32.855µs | 10.134.0.2 | GET "/health" [GIN] 2026/04/21 - 15:05:23 | 200 | 41.108µs | 10.134.0.2 | GET "/health" [GIN] 2026/04/21 - 15:05:27 | 200 | 35.544µs | 10.134.0.2 | GET "/health" [GIN] 2026/04/21 - 15:05:32 | 200 | 36.789µs | 10.134.0.2 | GET "/health" [GIN] 2026/04/21 - 15:05:33 | 200 | 43.112µs | 10.134.0.2 | GET "/health" [GIN] 2026/04/21 - 15:05:37 | 200 | 44.436µs | 10.134.0.2 | GET "/health" {"level":"info","timestamp":"2026-04-21T15:05:39.635Z","caller":"api_keys/service.go:150","message":"Created API key","user":"system:serviceaccount:default:tester-regular-user","groups":["system:authenticated","system:serviceaccounts","system:serviceaccounts:default","system:authenticated"],"id":"d7410ce0-5eb4-4cb5-8cbc-87af27b23412","ephemeral":false} {"level":"info","timestamp":"2026-04-21T15:05:39.635Z","caller":"api_keys/handler.go:222","message":"Created API key","keyId":"d7410ce0-5eb4-4cb5-8cbc-87af27b23412","keyPrefix":"sk-oai-1SXpk3RDLf6s...","username":"system:serviceaccount:default:tester-regular-user","groups":["system:authenticated","system:serviceaccounts","system:serviceaccounts:default","system:authenticated"],"ephemeral":false} [GIN] 2026/04/21 - 15:05:39 | 201 | 2.29013ms | 100.64.0.2 | POST "/v1/api-keys" [GIN] 2026/04/21 - 15:05:39 | 200 | 542.876µs | 10.134.0.48 | POST "/internal/v1/api-keys/validate" [GIN] 2026/04/21 - 15:05:39 | 200 | 130.885µs | 10.134.0.48 | POST "/internal/v1/subscriptions/select" [GIN] 2026/04/21 - 15:05:39 | 200 | 556.454µs | 10.134.0.48 | POST "/internal/v1/api-keys/validate" [GIN] 2026/04/21 - 15:05:39 | 200 | 169.708µs | 10.134.0.48 | POST "/internal/v1/subscriptions/select" [GIN] 2026/04/21 - 15:05:39 | 200 | 524.744µs | 10.134.0.48 | POST "/internal/v1/api-keys/validate" [GIN] 2026/04/21 - 15:05:39 | 200 | 132.845µs | 10.134.0.48 | POST "/internal/v1/subscriptions/select" [GIN] 2026/04/21 - 15:05:39 | 200 | 543.715µs | 10.134.0.48 | POST "/internal/v1/api-keys/validate" [GIN] 2026/04/21 - 15:05:39 | 200 | 449.044µs | 10.134.0.48 | POST "/internal/v1/api-keys/validate" [GIN] 2026/04/21 - 15:05:39 | 200 | 132.723µs | 10.134.0.48 | POST "/internal/v1/subscriptions/select" [GIN] 2026/04/21 - 15:05:39 | 200 | 10.384419ms | 100.64.0.4 | GET "/v1/models" [GIN] 2026/04/21 - 15:05:42 | 200 | 38.349µs | 10.134.0.2 | GET "/health" [GIN] 2026/04/21 - 15:05:43 | 200 | 41.748µs | 10.134.0.2 | GET "/health" [GIN] 2026/04/21 - 15:05:47 | 200 | 31.195µs | 10.134.0.2 | GET "/health" [GIN] 2026/04/21 - 15:05:52 | 200 | 31.377µs | 10.134.0.2 | GET "/health" [GIN] 2026/04/21 - 15:05:53 | 200 | 34.549µs | 10.134.0.2 | GET "/health" {"level":"info","timestamp":"2026-04-21T15:05:55.585Z","caller":"api_keys/service.go:150","message":"Created API key","user":"system:serviceaccount:default:tester-regular-user","groups":["system:serviceaccounts","system:serviceaccounts:default","system:authenticated"],"id":"5c5d798a-67ab-487d-9383-a32ae9dfc400","ephemeral":false} {"level":"info","timestamp":"2026-04-21T15:05:55.585Z","caller":"api_keys/handler.go:222","message":"Created API key","keyId":"5c5d798a-67ab-487d-9383-a32ae9dfc400","keyPrefix":"sk-oai-34BItz3KGUcf...","username":"system:serviceaccount:default:tester-regular-user","groups":["system:serviceaccounts","system:serviceaccounts:default","system:authenticated"],"ephemeral":false} [GIN] 2026/04/21 - 15:05:55 | 201 | 2.26037ms | 100.64.0.2 | POST "/v1/api-keys" [GIN] 2026/04/21 - 15:05:56 | 200 | 777.687µs | 10.134.0.48 | POST "/internal/v1/api-keys/validate" [GIN] 2026/04/21 - 15:05:56 | 200 | 134.685µs | 10.134.0.48 | POST "/internal/v1/subscriptions/select" [GIN] 2026/04/21 - 15:05:57 | 200 | 50.395µs | 10.134.0.2 | GET "/health" [GIN] 2026/04/21 - 15:06:02 | 200 | 60.321µs | 10.134.0.2 | GET "/health" [GIN] 2026/04/21 - 15:06:03 | 200 | 32.654µs | 10.134.0.2 | GET "/health" [GIN] 2026/04/21 - 15:06:07 | 200 | 32.187µs | 10.134.0.2 | GET "/health" [GIN] 2026/04/21 - 15:06:12 | 200 | 31.283µs | 10.134.0.2 | GET "/health" [GIN] 2026/04/21 - 15:06:13 | 200 | 38.917µs | 10.134.0.2 | GET "/health" [GIN] 2026/04/21 - 15:06:17 | 200 | 32.609µs | 10.134.0.2 | GET "/health" [GIN] 2026/04/21 - 15:06:22 | 200 | 46.279µs | 10.134.0.2 | GET "/health" [GIN] 2026/04/21 - 15:06:23 | 200 | 42.085µs | 10.134.0.2 | GET "/health" [GIN] 2026/04/21 - 15:06:27 | 200 | 38.303µs | 10.134.0.2 | GET "/health" [GIN] 2026/04/21 - 15:06:32 | 200 | 42.899µs | 10.134.0.2 | GET "/health" [GIN] 2026/04/21 - 15:06:33 | 200 | 31.237µs | 10.134.0.2 | GET "/health" {"level":"error","timestamp":"2026-04-21T15:06:33.718Z","caller":"token/handler.go:95","message":"Failed to parse group header","header":"X-MaaS-Group","header_value":"","error":"failed to parse header as JSON array: invalid character '<' looking for beginning of value","stacktrace":"main.registerHandlers.(*Handler).ExtractUserInfo.func4\n\tgithub.com/opendatahub-io/models-as-a-service/maas-api/internal/token/handler.go:95\ngithub.com/gin-gonic/gin.(*Context).Next\n\tgithub.com/gin-gonic/gin@v1.10.1/context.go:185\ngithub.com/gin-gonic/gin.CustomRecoveryWithWriter.func1\n\tgithub.com/gin-gonic/gin@v1.10.1/recovery.go:102\ngithub.com/gin-gonic/gin.(*Context).Next\n\tgithub.com/gin-gonic/gin@v1.10.1/context.go:185\ngithub.com/gin-gonic/gin.LoggerWithConfig.func1\n\tgithub.com/gin-gonic/gin@v1.10.1/logger.go:249\ngithub.com/gin-gonic/gin.(*Context).Next\n\tgithub.com/gin-gonic/gin@v1.10.1/context.go:185\ngithub.com/gin-gonic/gin.(*Engine).handleHTTPRequest\n\tgithub.com/gin-gonic/gin@v1.10.1/gin.go:644\ngithub.com/gin-gonic/gin.(*Engine).ServeHTTP\n\tgithub.com/gin-gonic/gin@v1.10.1/gin.go:600\nnet/http.serverHandler.ServeHTTP\n\tnet/http/server.go:3340\nnet/http.(*conn).serve\n\tnet/http/server.go:2109"} [GIN] 2026/04/21 - 15:06:33 | 500 | 118.927µs | 100.64.0.4 | POST "/v1/api-keys" [GIN] 2026/04/21 - 15:06:37 | 200 | 33.024µs | 10.134.0.2 | GET "/health" {"level":"error","timestamp":"2026-04-21T15:06:38.750Z","caller":"token/handler.go:95","message":"Failed to parse group header","header":"X-MaaS-Group","header_value":"","error":"failed to parse header as JSON array: invalid character '<' looking for beginning of value","stacktrace":"main.registerHandlers.(*Handler).ExtractUserInfo.func4\n\tgithub.com/opendatahub-io/models-as-a-service/maas-api/internal/token/handler.go:95\ngithub.com/gin-gonic/gin.(*Context).Next\n\tgithub.com/gin-gonic/gin@v1.10.1/context.go:185\ngithub.com/gin-gonic/gin.CustomRecoveryWithWriter.func1\n\tgithub.com/gin-gonic/gin@v1.10.1/recovery.go:102\ngithub.com/gin-gonic/gin.(*Context).Next\n\tgithub.com/gin-gonic/gin@v1.10.1/context.go:185\ngithub.com/gin-gonic/gin.LoggerWithConfig.func1\n\tgithub.com/gin-gonic/gin@v1.10.1/logger.go:249\ngithub.com/gin-gonic/gin.(*Context).Next\n\tgithub.com/gin-gonic/gin@v1.10.1/context.go:185\ngithub.com/gin-gonic/gin.(*Engine).handleHTTPRequest\n\tgithub.com/gin-gonic/gin@v1.10.1/gin.go:644\ngithub.com/gin-gonic/gin.(*Engine).ServeHTTP\n\tgithub.com/gin-gonic/gin@v1.10.1/gin.go:600\nnet/http.serverHandler.ServeHTTP\n\tnet/http/server.go:3340\nnet/http.(*conn).serve\n\tnet/http/server.go:2109"} [GIN] 2026/04/21 - 15:06:38 | 500 | 90.47µs | 100.64.0.3 | POST "/v1/api-keys" [GIN] 2026/04/21 - 15:06:42 | 200 | 40.768µs | 10.134.0.2 | GET "/health" [GIN] 2026/04/21 - 15:06:43 | 200 | 39.11µs | 10.134.0.2 | GET "/health" {"level":"error","timestamp":"2026-04-21T15:06:43.783Z","caller":"token/handler.go:95","message":"Failed to parse group header","header":"X-MaaS-Group","header_value":"","error":"failed to parse header as JSON array: invalid character '<' looking for beginning of value","stacktrace":"main.registerHandlers.(*Handler).ExtractUserInfo.func4\n\tgithub.com/opendatahub-io/models-as-a-service/maas-api/internal/token/handler.go:95\ngithub.com/gin-gonic/gin.(*Context).Next\n\tgithub.com/gin-gonic/gin@v1.10.1/context.go:185\ngithub.com/gin-gonic/gin.CustomRecoveryWithWriter.func1\n\tgithub.com/gin-gonic/gin@v1.10.1/recovery.go:102\ngithub.com/gin-gonic/gin.(*Context).Next\n\tgithub.com/gin-gonic/gin@v1.10.1/context.go:185\ngithub.com/gin-gonic/gin.LoggerWithConfig.func1\n\tgithub.com/gin-gonic/gin@v1.10.1/logger.go:249\ngithub.com/gin-gonic/gin.(*Context).Next\n\tgithub.com/gin-gonic/gin@v1.10.1/context.go:185\ngithub.com/gin-gonic/gin.(*Engine).handleHTTPRequest\n\tgithub.com/gin-gonic/gin@v1.10.1/gin.go:644\ngithub.com/gin-gonic/gin.(*Engine).ServeHTTP\n\tgithub.com/gin-gonic/gin@v1.10.1/gin.go:600\nnet/http.serverHandler.ServeHTTP\n\tnet/http/server.go:3340\nnet/http.(*conn).serve\n\tnet/http/server.go:2109"} [GIN] 2026/04/21 - 15:06:43 | 500 | 92.482µs | 100.64.0.2 | POST "/v1/api-keys" [GIN] 2026/04/21 - 15:06:47 | 200 | 35.349µs | 10.134.0.2 | GET "/health" {"level":"error","timestamp":"2026-04-21T15:06:48.817Z","caller":"token/handler.go:95","message":"Failed to parse group header","header":"X-MaaS-Group","header_value":"","error":"failed to parse header as JSON array: invalid character '<' looking for beginning of value","stacktrace":"main.registerHandlers.(*Handler).ExtractUserInfo.func4\n\tgithub.com/opendatahub-io/models-as-a-service/maas-api/internal/token/handler.go:95\ngithub.com/gin-gonic/gin.(*Context).Next\n\tgithub.com/gin-gonic/gin@v1.10.1/context.go:185\ngithub.com/gin-gonic/gin.CustomRecoveryWithWriter.func1\n\tgithub.com/gin-gonic/gin@v1.10.1/recovery.go:102\ngithub.com/gin-gonic/gin.(*Context).Next\n\tgithub.com/gin-gonic/gin@v1.10.1/context.go:185\ngithub.com/gin-gonic/gin.LoggerWithConfig.func1\n\tgithub.com/gin-gonic/gin@v1.10.1/logger.go:249\ngithub.com/gin-gonic/gin.(*Context).Next\n\tgithub.com/gin-gonic/gin@v1.10.1/context.go:185\ngithub.com/gin-gonic/gin.(*Engine).handleHTTPRequest\n\tgithub.com/gin-gonic/gin@v1.10.1/gin.go:644\ngithub.com/gin-gonic/gin.(*Engine).ServeHTTP\n\tgithub.com/gin-gonic/gin@v1.10.1/gin.go:600\nnet/http.serverHandler.ServeHTTP\n\tnet/http/server.go:3340\nnet/http.(*conn).serve\n\tnet/http/server.go:2109"} [GIN] 2026/04/21 - 15:06:48 | 500 | 83.939µs | 100.64.0.3 | POST "/v1/api-keys" [GIN] 2026/04/21 - 15:06:52 | 200 | 34.734µs | 10.134.0.2 | GET "/health" [GIN] 2026/04/21 - 15:06:53 | 200 | 33.074µs | 10.134.0.2 | GET "/health" {"level":"error","timestamp":"2026-04-21T15:06:53.849Z","caller":"token/handler.go:95","message":"Failed to parse group header","header":"X-MaaS-Group","header_value":"","error":"failed to parse header as JSON array: invalid character '<' looking for beginning of value","stacktrace":"main.registerHandlers.(*Handler).ExtractUserInfo.func4\n\tgithub.com/opendatahub-io/models-as-a-service/maas-api/internal/token/handler.go:95\ngithub.com/gin-gonic/gin.(*Context).Next\n\tgithub.com/gin-gonic/gin@v1.10.1/context.go:185\ngithub.com/gin-gonic/gin.CustomRecoveryWithWriter.func1\n\tgithub.com/gin-gonic/gin@v1.10.1/recovery.go:102\ngithub.com/gin-gonic/gin.(*Context).Next\n\tgithub.com/gin-gonic/gin@v1.10.1/context.go:185\ngithub.com/gin-gonic/gin.LoggerWithConfig.func1\n\tgithub.com/gin-gonic/gin@v1.10.1/logger.go:249\ngithub.com/gin-gonic/gin.(*Context).Next\n\tgithub.com/gin-gonic/gin@v1.10.1/context.go:185\ngithub.com/gin-gonic/gin.(*Engine).handleHTTPRequest\n\tgithub.com/gin-gonic/gin@v1.10.1/gin.go:644\ngithub.com/gin-gonic/gin.(*Engine).ServeHTTP\n\tgithub.com/gin-gonic/gin@v1.10.1/gin.go:600\nnet/http.serverHandler.ServeHTTP\n\tnet/http/server.go:3340\nnet/http.(*conn).serve\n\tnet/http/server.go:2109"} [GIN] 2026/04/21 - 15:06:53 | 500 | 90.986µs | 100.64.0.2 | POST "/v1/api-keys" [GIN] 2026/04/21 - 15:06:57 | 200 | 48.737µs | 10.134.0.2 | GET "/health" {"level":"error","timestamp":"2026-04-21T15:06:58.882Z","caller":"token/handler.go:95","message":"Failed to parse group header","header":"X-MaaS-Group","header_value":"","error":"failed to parse header as JSON array: invalid character '<' looking for beginning of value","stacktrace":"main.registerHandlers.(*Handler).ExtractUserInfo.func4\n\tgithub.com/opendatahub-io/models-as-a-service/maas-api/internal/token/handler.go:95\ngithub.com/gin-gonic/gin.(*Context).Next\n\tgithub.com/gin-gonic/gin@v1.10.1/context.go:185\ngithub.com/gin-gonic/gin.CustomRecoveryWithWriter.func1\n\tgithub.com/gin-gonic/gin@v1.10.1/recovery.go:102\ngithub.com/gin-gonic/gin.(*Context).Next\n\tgithub.com/gin-gonic/gin@v1.10.1/context.go:185\ngithub.com/gin-gonic/gin.LoggerWithConfig.func1\n\tgithub.com/gin-gonic/gin@v1.10.1/logger.go:249\ngithub.com/gin-gonic/gin.(*Context).Next\n\tgithub.com/gin-gonic/gin@v1.10.1/context.go:185\ngithub.com/gin-gonic/gin.(*Engine).handleHTTPRequest\n\tgithub.com/gin-gonic/gin@v1.10.1/gin.go:644\ngithub.com/gin-gonic/gin.(*Engine).ServeHTTP\n\tgithub.com/gin-gonic/gin@v1.10.1/gin.go:600\nnet/http.serverHandler.ServeHTTP\n\tnet/http/server.go:3340\nnet/http.(*conn).serve\n\tnet/http/server.go:2109"} [GIN] 2026/04/21 - 15:06:58 | 500 | 85.183µs | 100.64.0.4 | POST "/v1/api-keys" [GIN] 2026/04/21 - 15:07:02 | 200 | 33.582µs | 10.134.0.2 | GET "/health" [GIN] 2026/04/21 - 15:07:03 | 200 | 42.178µs | 10.134.0.2 | GET "/health" {"level":"error","timestamp":"2026-04-21T15:07:03.912Z","caller":"token/handler.go:95","message":"Failed to parse group header","header":"X-MaaS-Group","header_value":"","error":"failed to parse header as JSON array: invalid character '<' looking for beginning of value","stacktrace":"main.registerHandlers.(*Handler).ExtractUserInfo.func4\n\tgithub.com/opendatahub-io/models-as-a-service/maas-api/internal/token/handler.go:95\ngithub.com/gin-gonic/gin.(*Context).Next\n\tgithub.com/gin-gonic/gin@v1.10.1/context.go:185\ngithub.com/gin-gonic/gin.CustomRecoveryWithWriter.func1\n\tgithub.com/gin-gonic/gin@v1.10.1/recovery.go:102\ngithub.com/gin-gonic/gin.(*Context).Next\n\tgithub.com/gin-gonic/gin@v1.10.1/context.go:185\ngithub.com/gin-gonic/gin.LoggerWithConfig.func1\n\tgithub.com/gin-gonic/gin@v1.10.1/logger.go:249\ngithub.com/gin-gonic/gin.(*Context).Next\n\tgithub.com/gin-gonic/gin@v1.10.1/context.go:185\ngithub.com/gin-gonic/gin.(*Engine).handleHTTPRequest\n\tgithub.com/gin-gonic/gin@v1.10.1/gin.go:644\ngithub.com/gin-gonic/gin.(*Engine).ServeHTTP\n\tgithub.com/gin-gonic/gin@v1.10.1/gin.go:600\nnet/http.serverHandler.ServeHTTP\n\tnet/http/server.go:3340\nnet/http.(*conn).serve\n\tnet/http/server.go:2109"} [GIN] 2026/04/21 - 15:07:03 | 500 | 87.11µs | 100.64.0.3 | POST "/v1/api-keys" [GIN] 2026/04/21 - 15:07:07 | 200 | 45.468µs | 10.134.0.2 | GET "/health" {"level":"error","timestamp":"2026-04-21T15:07:08.944Z","caller":"token/handler.go:95","message":"Failed to parse group header","header":"X-MaaS-Group","header_value":"","error":"failed to parse header as JSON array: invalid character '<' looking for beginning of value","stacktrace":"main.registerHandlers.(*Handler).ExtractUserInfo.func4\n\tgithub.com/opendatahub-io/models-as-a-service/maas-api/internal/token/handler.go:95\ngithub.com/gin-gonic/gin.(*Context).Next\n\tgithub.com/gin-gonic/gin@v1.10.1/context.go:185\ngithub.com/gin-gonic/gin.CustomRecoveryWithWriter.func1\n\tgithub.com/gin-gonic/gin@v1.10.1/recovery.go:102\ngithub.com/gin-gonic/gin.(*Context).Next\n\tgithub.com/gin-gonic/gin@v1.10.1/context.go:185\ngithub.com/gin-gonic/gin.LoggerWithConfig.func1\n\tgithub.com/gin-gonic/gin@v1.10.1/logger.go:249\ngithub.com/gin-gonic/gin.(*Context).Next\n\tgithub.com/gin-gonic/gin@v1.10.1/context.go:185\ngithub.com/gin-gonic/gin.(*Engine).handleHTTPRequest\n\tgithub.com/gin-gonic/gin@v1.10.1/gin.go:644\ngithub.com/gin-gonic/gin.(*Engine).ServeHTTP\n\tgithub.com/gin-gonic/gin@v1.10.1/gin.go:600\nnet/http.serverHandler.ServeHTTP\n\tnet/http/server.go:3340\nnet/http.(*conn).serve\n\tnet/http/server.go:2109"} [GIN] 2026/04/21 - 15:07:08 | 500 | 84.94µs | 100.64.0.4 | POST "/v1/api-keys" [GIN] 2026/04/21 - 15:07:12 | 200 | 34.338µs | 10.134.0.2 | GET "/health" [GIN] 2026/04/21 - 15:07:13 | 200 | 38.638µs | 10.134.0.2 | GET "/health" {"level":"info","timestamp":"2026-04-21T15:07:14.005Z","caller":"api_keys/service.go:150","message":"Created API key","user":"alice_lead","groups":["system:authenticated","Engineering","Project-Alpha"],"id":"64a3ff2b-2ae0-4789-a730-6586ad5b37f0","ephemeral":false} {"level":"info","timestamp":"2026-04-21T15:07:14.005Z","caller":"api_keys/handler.go:222","message":"Created API key","keyId":"64a3ff2b-2ae0-4789-a730-6586ad5b37f0","keyPrefix":"sk-oai-zuw84shqWGNm...","username":"alice_lead","groups":["system:authenticated","Engineering","Project-Alpha"],"ephemeral":false} [GIN] 2026/04/21 - 15:07:14 | 201 | 11.875357ms | 100.64.0.4 | POST "/v1/api-keys" {"level":"error","timestamp":"2026-04-21T15:07:14.550Z","caller":"token/handler.go:95","message":"Failed to parse group header","header":"X-MaaS-Group","header_value":"","error":"failed to parse header as JSON array: invalid character '<' looking for beginning of value","stacktrace":"main.registerHandlers.(*Handler).ExtractUserInfo.func4\n\tgithub.com/opendatahub-io/models-as-a-service/maas-api/internal/token/handler.go:95\ngithub.com/gin-gonic/gin.(*Context).Next\n\tgithub.com/gin-gonic/gin@v1.10.1/context.go:185\ngithub.com/gin-gonic/gin.CustomRecoveryWithWriter.func1\n\tgithub.com/gin-gonic/gin@v1.10.1/recovery.go:102\ngithub.com/gin-gonic/gin.(*Context).Next\n\tgithub.com/gin-gonic/gin@v1.10.1/context.go:185\ngithub.com/gin-gonic/gin.LoggerWithConfig.func1\n\tgithub.com/gin-gonic/gin@v1.10.1/logger.go:249\ngithub.com/gin-gonic/gin.(*Context).Next\n\tgithub.com/gin-gonic/gin@v1.10.1/context.go:185\ngithub.com/gin-gonic/gin.(*Engine).handleHTTPRequest\n\tgithub.com/gin-gonic/gin@v1.10.1/gin.go:644\ngithub.com/gin-gonic/gin.(*Engine).ServeHTTP\n\tgithub.com/gin-gonic/gin@v1.10.1/gin.go:600\nnet/http.serverHandler.ServeHTTP\n\tnet/http/server.go:3340\nnet/http.(*conn).serve\n\tnet/http/server.go:2109"} [GIN] 2026/04/21 - 15:07:14 | 500 | 82.535µs | 100.64.0.2 | POST "/v1/api-keys" [GIN] 2026/04/21 - 15:07:17 | 200 | 38.058µs | 10.134.0.2 | GET "/health" {"level":"error","timestamp":"2026-04-21T15:07:19.594Z","caller":"token/handler.go:95","message":"Failed to parse group header","header":"X-MaaS-Group","header_value":"","error":"failed to parse header as JSON array: invalid character '<' looking for beginning of value","stacktrace":"main.registerHandlers.(*Handler).ExtractUserInfo.func4\n\tgithub.com/opendatahub-io/models-as-a-service/maas-api/internal/token/handler.go:95\ngithub.com/gin-gonic/gin.(*Context).Next\n\tgithub.com/gin-gonic/gin@v1.10.1/context.go:185\ngithub.com/gin-gonic/gin.CustomRecoveryWithWriter.func1\n\tgithub.com/gin-gonic/gin@v1.10.1/recovery.go:102\ngithub.com/gin-gonic/gin.(*Context).Next\n\tgithub.com/gin-gonic/gin@v1.10.1/context.go:185\ngithub.com/gin-gonic/gin.LoggerWithConfig.func1\n\tgithub.com/gin-gonic/gin@v1.10.1/logger.go:249\ngithub.com/gin-gonic/gin.(*Context).Next\n\tgithub.com/gin-gonic/gin@v1.10.1/context.go:185\ngithub.com/gin-gonic/gin.(*Engine).handleHTTPRequest\n\tgithub.com/gin-gonic/gin@v1.10.1/gin.go:644\ngithub.com/gin-gonic/gin.(*Engine).ServeHTTP\n\tgithub.com/gin-gonic/gin@v1.10.1/gin.go:600\nnet/http.serverHandler.ServeHTTP\n\tnet/http/server.go:3340\nnet/http.(*conn).serve\n\tnet/http/server.go:2109"} [GIN] 2026/04/21 - 15:07:19 | 500 | 90.879µs | 100.64.0.4 | POST "/v1/api-keys" [GIN] 2026/04/21 - 15:07:22 | 200 | 42.219µs | 10.134.0.2 | GET "/health" [GIN] 2026/04/21 - 15:07:23 | 200 | 36.826µs | 10.134.0.2 | GET "/health" {"level":"info","timestamp":"2026-04-21T15:07:24.630Z","caller":"api_keys/service.go:150","message":"Created API key","user":"","groups":["system:authenticated","Site-Reliability"],"id":"3caa8c5a-5a56-46c0-92b2-a1f0bb0e0c1f","ephemeral":false} {"level":"info","timestamp":"2026-04-21T15:07:24.630Z","caller":"api_keys/handler.go:222","message":"Created API key","keyId":"3caa8c5a-5a56-46c0-92b2-a1f0bb0e0c1f","keyPrefix":"sk-oai-cyYYBnNezf59...","username":"","groups":["system:authenticated","Site-Reliability"],"ephemeral":false} [GIN] 2026/04/21 - 15:07:24 | 201 | 2.201698ms | 100.64.0.3 | POST "/v1/api-keys" {"level":"error","timestamp":"2026-04-21T15:07:24.850Z","caller":"token/handler.go:95","message":"Failed to parse group header","header":"X-MaaS-Group","header_value":"","error":"failed to parse header as JSON array: invalid character '<' looking for beginning of value","stacktrace":"main.registerHandlers.(*Handler).ExtractUserInfo.func4\n\tgithub.com/opendatahub-io/models-as-a-service/maas-api/internal/token/handler.go:95\ngithub.com/gin-gonic/gin.(*Context).Next\n\tgithub.com/gin-gonic/gin@v1.10.1/context.go:185\ngithub.com/gin-gonic/gin.CustomRecoveryWithWriter.func1\n\tgithub.com/gin-gonic/gin@v1.10.1/recovery.go:102\ngithub.com/gin-gonic/gin.(*Context).Next\n\tgithub.com/gin-gonic/gin@v1.10.1/context.go:185\ngithub.com/gin-gonic/gin.LoggerWithConfig.func1\n\tgithub.com/gin-gonic/gin@v1.10.1/logger.go:249\ngithub.com/gin-gonic/gin.(*Context).Next\n\tgithub.com/gin-gonic/gin@v1.10.1/context.go:185\ngithub.com/gin-gonic/gin.(*Engine).handleHTTPRequest\n\tgithub.com/gin-gonic/gin@v1.10.1/gin.go:644\ngithub.com/gin-gonic/gin.(*Engine).ServeHTTP\n\tgithub.com/gin-gonic/gin@v1.10.1/gin.go:600\nnet/http.serverHandler.ServeHTTP\n\tnet/http/server.go:3340\nnet/http.(*conn).serve\n\tnet/http/server.go:2109"} [GIN] 2026/04/21 - 15:07:24 | 500 | 85.732µs | 100.64.0.2 | POST "/v1/api-keys" [GIN] 2026/04/21 - 15:07:27 | 200 | 36.917µs | 10.134.0.2 | GET "/health" {"level":"error","timestamp":"2026-04-21T15:07:29.881Z","caller":"token/handler.go:95","message":"Failed to parse group header","header":"X-MaaS-Group","header_value":"","error":"failed to parse header as JSON array: invalid character '<' looking for beginning of value","stacktrace":"main.registerHandlers.(*Handler).ExtractUserInfo.func4\n\tgithub.com/opendatahub-io/models-as-a-service/maas-api/internal/token/handler.go:95\ngithub.com/gin-gonic/gin.(*Context).Next\n\tgithub.com/gin-gonic/gin@v1.10.1/context.go:185\ngithub.com/gin-gonic/gin.CustomRecoveryWithWriter.func1\n\tgithub.com/gin-gonic/gin@v1.10.1/recovery.go:102\ngithub.com/gin-gonic/gin.(*Context).Next\n\tgithub.com/gin-gonic/gin@v1.10.1/context.go:185\ngithub.com/gin-gonic/gin.LoggerWithConfig.func1\n\tgithub.com/gin-gonic/gin@v1.10.1/logger.go:249\ngithub.com/gin-gonic/gin.(*Context).Next\n\tgithub.com/gin-gonic/gin@v1.10.1/context.go:185\ngithub.com/gin-gonic/gin.(*Engine).handleHTTPRequest\n\tgithub.com/gin-gonic/gin@v1.10.1/gin.go:644\ngithub.com/gin-gonic/gin.(*Engine).ServeHTTP\n\tgithub.com/gin-gonic/gin@v1.10.1/gin.go:600\nnet/http.serverHandler.ServeHTTP\n\tnet/http/server.go:3340\nnet/http.(*conn).serve\n\tnet/http/server.go:2109"} [GIN] 2026/04/21 - 15:07:29 | 500 | 81.316µs | 100.64.0.3 | POST "/v1/api-keys" [GIN] 2026/04/21 - 15:07:32 | 200 | 56.811µs | 10.134.0.2 | GET "/health" [GIN] 2026/04/21 - 15:07:33 | 200 | 38.569µs | 10.134.0.2 | GET "/health" {"level":"info","timestamp":"2026-04-21T15:07:34.913Z","caller":"api_keys/service.go:150","message":"Created API key","user":"alice_lead","groups":["system:authenticated","Engineering","Project-Alpha"],"id":"4933a967-17f6-4e1d-8a42-61734856238d","ephemeral":false} {"level":"info","timestamp":"2026-04-21T15:07:34.913Z","caller":"api_keys/handler.go:222","message":"Created API key","keyId":"4933a967-17f6-4e1d-8a42-61734856238d","keyPrefix":"sk-oai-Xkhx0jwOojAV...","username":"alice_lead","groups":["system:authenticated","Engineering","Project-Alpha"],"ephemeral":false} [GIN] 2026/04/21 - 15:07:34 | 201 | 3.008935ms | 100.64.0.4 | POST "/v1/api-keys" [GIN] 2026/04/21 - 15:07:34 | 200 | 1.268106ms | 10.134.0.48 | POST "/internal/v1/api-keys/validate" [GIN] 2026/04/21 - 15:07:34 | 200 | 611.756µs | 10.134.0.48 | POST "/internal/v1/api-keys/validate" [GIN] 2026/04/21 - 15:07:34 | 200 | 128.208µs | 10.134.0.48 | POST "/internal/v1/subscriptions/select" [GIN] 2026/04/21 - 15:07:34 | 200 | 18.553446ms | 100.64.0.3 | GET "/v1/models" [GIN] 2026/04/21 - 15:07:34 | 200 | 621.178µs | 10.134.0.48 | POST "/internal/v1/api-keys/validate" [GIN] 2026/04/21 - 15:07:34 | 200 | 145.246µs | 10.134.0.48 | POST "/internal/v1/subscriptions/select" {"level":"info","timestamp":"2026-04-21T15:07:35.079Z","caller":"api_keys/service.go:150","message":"Created API key","user":"alice_lead","groups":["system:authenticated","Engineering","Project-Alpha"],"id":"e8aa6f3b-4553-487e-a748-b7307d235bf1","ephemeral":false} {"level":"info","timestamp":"2026-04-21T15:07:35.079Z","caller":"api_keys/handler.go:222","message":"Created API key","keyId":"e8aa6f3b-4553-487e-a748-b7307d235bf1","keyPrefix":"sk-oai-OnVQyodHEWVC...","username":"alice_lead","groups":["system:authenticated","Engineering","Project-Alpha"],"ephemeral":false} [GIN] 2026/04/21 - 15:07:35 | 201 | 1.795274ms | 100.64.0.3 | POST "/v1/api-keys" {"level":"error","timestamp":"2026-04-21T15:07:35.099Z","caller":"token/handler.go:95","message":"Failed to parse group header","header":"X-MaaS-Group","header_value":"","error":"failed to parse header as JSON array: invalid character '<' looking for beginning of value","stacktrace":"main.registerHandlers.(*Handler).ExtractUserInfo.func4\n\tgithub.com/opendatahub-io/models-as-a-service/maas-api/internal/token/handler.go:95\ngithub.com/gin-gonic/gin.(*Context).Next\n\tgithub.com/gin-gonic/gin@v1.10.1/context.go:185\ngithub.com/gin-gonic/gin.CustomRecoveryWithWriter.func1\n\tgithub.com/gin-gonic/gin@v1.10.1/recovery.go:102\ngithub.com/gin-gonic/gin.(*Context).Next\n\tgithub.com/gin-gonic/gin@v1.10.1/context.go:185\ngithub.com/gin-gonic/gin.LoggerWithConfig.func1\n\tgithub.com/gin-gonic/gin@v1.10.1/logger.go:249\ngithub.com/gin-gonic/gin.(*Context).Next\n\tgithub.com/gin-gonic/gin@v1.10.1/context.go:185\ngithub.com/gin-gonic/gin.(*Engine).handleHTTPRequest\n\tgithub.com/gin-gonic/gin@v1.10.1/gin.go:644\ngithub.com/gin-gonic/gin.(*Engine).ServeHTTP\n\tgithub.com/gin-gonic/gin@v1.10.1/gin.go:600\nnet/http.serverHandler.ServeHTTP\n\tnet/http/server.go:3340\nnet/http.(*conn).serve\n\tnet/http/server.go:2109"} [GIN] 2026/04/21 - 15:07:35 | 500 | 83.363µs | 100.64.0.4 | DELETE "/v1/api-keys/e8aa6f3b-4553-487e-a748-b7307d235bf1" [GIN] 2026/04/21 - 15:07:37 | 200 | 39.453µs | 10.134.0.2 | GET "/health" {"level":"info","timestamp":"2026-04-21T15:07:40.129Z","caller":"api_keys/store_postgres.go:460","message":"Revoked API key","id":"e8aa6f3b-4553-487e-a748-b7307d235bf1"} {"level":"info","timestamp":"2026-04-21T15:07:40.129Z","caller":"api_keys/handler.go:317","message":"Revoked API key","keyId":"e8aa6f3b-4553-487e-a748-b7307d235bf1","revokedBy":"alice_lead"} [GIN] 2026/04/21 - 15:07:40 | 200 | 3.168122ms | 100.64.0.2 | DELETE "/v1/api-keys/e8aa6f3b-4553-487e-a748-b7307d235bf1" [GIN] 2026/04/21 - 15:07:42 | 200 | 58.251µs | 10.134.0.2 | GET "/health" [GIN] 2026/04/21 - 15:07:43 | 200 | 37.106µs | 10.134.0.2 | GET "/health" [GIN] 2026/04/21 - 15:07:43 | 200 | 996.797µs | 10.134.0.48 | POST "/internal/v1/api-keys/validate" {"level":"error","timestamp":"2026-04-21T15:07:43.449Z","caller":"token/handler.go:95","message":"Failed to parse group header","header":"X-MaaS-Group","header_value":"","error":"failed to parse header as JSON array: invalid character '<' looking for beginning of value","stacktrace":"main.registerHandlers.(*Handler).ExtractUserInfo.func4\n\tgithub.com/opendatahub-io/models-as-a-service/maas-api/internal/token/handler.go:95\ngithub.com/gin-gonic/gin.(*Context).Next\n\tgithub.com/gin-gonic/gin@v1.10.1/context.go:185\ngithub.com/gin-gonic/gin.CustomRecoveryWithWriter.func1\n\tgithub.com/gin-gonic/gin@v1.10.1/recovery.go:102\ngithub.com/gin-gonic/gin.(*Context).Next\n\tgithub.com/gin-gonic/gin@v1.10.1/context.go:185\ngithub.com/gin-gonic/gin.LoggerWithConfig.func1\n\tgithub.com/gin-gonic/gin@v1.10.1/logger.go:249\ngithub.com/gin-gonic/gin.(*Context).Next\n\tgithub.com/gin-gonic/gin@v1.10.1/context.go:185\ngithub.com/gin-gonic/gin.(*Engine).handleHTTPRequest\n\tgithub.com/gin-gonic/gin@v1.10.1/gin.go:644\ngithub.com/gin-gonic/gin.(*Engine).ServeHTTP\n\tgithub.com/gin-gonic/gin@v1.10.1/gin.go:600\nnet/http.serverHandler.ServeHTTP\n\tnet/http/server.go:3340\nnet/http.(*conn).serve\n\tnet/http/server.go:2109"} [GIN] 2026/04/21 - 15:07:43 | 500 | 87.921µs | 100.64.0.3 | POST "/v1/api-keys" [GIN] 2026/04/21 - 15:07:47 | 200 | 42.071µs | 10.134.0.2 | GET "/health" {"level":"error","timestamp":"2026-04-21T15:07:48.476Z","caller":"token/handler.go:95","message":"Failed to parse group header","header":"X-MaaS-Group","header_value":"","error":"failed to parse header as JSON array: invalid character '<' looking for beginning of value","stacktrace":"main.registerHandlers.(*Handler).ExtractUserInfo.func4\n\tgithub.com/opendatahub-io/models-as-a-service/maas-api/internal/token/handler.go:95\ngithub.com/gin-gonic/gin.(*Context).Next\n\tgithub.com/gin-gonic/gin@v1.10.1/context.go:185\ngithub.com/gin-gonic/gin.CustomRecoveryWithWriter.func1\n\tgithub.com/gin-gonic/gin@v1.10.1/recovery.go:102\ngithub.com/gin-gonic/gin.(*Context).Next\n\tgithub.com/gin-gonic/gin@v1.10.1/context.go:185\ngithub.com/gin-gonic/gin.LoggerWithConfig.func1\n\tgithub.com/gin-gonic/gin@v1.10.1/logger.go:249\ngithub.com/gin-gonic/gin.(*Context).Next\n\tgithub.com/gin-gonic/gin@v1.10.1/context.go:185\ngithub.com/gin-gonic/gin.(*Engine).handleHTTPRequest\n\tgithub.com/gin-gonic/gin@v1.10.1/gin.go:644\ngithub.com/gin-gonic/gin.(*Engine).ServeHTTP\n\tgithub.com/gin-gonic/gin@v1.10.1/gin.go:600\nnet/http.serverHandler.ServeHTTP\n\tnet/http/server.go:3340\nnet/http.(*conn).serve\n\tnet/http/server.go:2109"} [GIN] 2026/04/21 - 15:07:48 | 500 | 127.837µs | 100.64.0.2 | POST "/v1/api-keys" [GIN] 2026/04/21 - 15:07:52 | 200 | 32.227µs | 10.134.0.2 | GET "/health" [GIN] 2026/04/21 - 15:07:53 | 200 | 34.909µs | 10.134.0.2 | GET "/health" {"level":"error","timestamp":"2026-04-21T15:07:53.507Z","caller":"token/handler.go:95","message":"Failed to parse group header","header":"X-MaaS-Group","header_value":"","error":"failed to parse header as JSON array: invalid character '<' looking for beginning of value","stacktrace":"main.registerHandlers.(*Handler).ExtractUserInfo.func4\n\tgithub.com/opendatahub-io/models-as-a-service/maas-api/internal/token/handler.go:95\ngithub.com/gin-gonic/gin.(*Context).Next\n\tgithub.com/gin-gonic/gin@v1.10.1/context.go:185\ngithub.com/gin-gonic/gin.CustomRecoveryWithWriter.func1\n\tgithub.com/gin-gonic/gin@v1.10.1/recovery.go:102\ngithub.com/gin-gonic/gin.(*Context).Next\n\tgithub.com/gin-gonic/gin@v1.10.1/context.go:185\ngithub.com/gin-gonic/gin.LoggerWithConfig.func1\n\tgithub.com/gin-gonic/gin@v1.10.1/logger.go:249\ngithub.com/gin-gonic/gin.(*Context).Next\n\tgithub.com/gin-gonic/gin@v1.10.1/context.go:185\ngithub.com/gin-gonic/gin.(*Engine).handleHTTPRequest\n\tgithub.com/gin-gonic/gin@v1.10.1/gin.go:644\ngithub.com/gin-gonic/gin.(*Engine).ServeHTTP\n\tgithub.com/gin-gonic/gin@v1.10.1/gin.go:600\nnet/http.serverHandler.ServeHTTP\n\tnet/http/server.go:3340\nnet/http.(*conn).serve\n\tnet/http/server.go:2109"} [GIN] 2026/04/21 - 15:07:53 | 500 | 88.534µs | 100.64.0.4 | POST "/v1/api-keys" [GIN] 2026/04/21 - 15:07:57 | 200 | 46.232µs | 10.134.0.2 | GET "/health" {"level":"info","timestamp":"2026-04-21T15:07:58.541Z","caller":"api_keys/service.go:150","message":"Created API key","user":"","groups":["system:authenticated","Engineering","Project-Alpha"],"id":"6c115d24-25e3-46b1-ac95-47d59152add0","ephemeral":false} {"level":"info","timestamp":"2026-04-21T15:07:58.541Z","caller":"api_keys/handler.go:222","message":"Created API key","keyId":"6c115d24-25e3-46b1-ac95-47d59152add0","keyPrefix":"sk-oai-15KBIPw3zShs...","username":"","groups":["system:authenticated","Engineering","Project-Alpha"],"ephemeral":false} [GIN] 2026/04/21 - 15:07:58 | 201 | 2.234769ms | 100.64.0.3 | POST "/v1/api-keys" {"level":"error","timestamp":"2026-04-21T15:07:58.565Z","caller":"token/handler.go:95","message":"Failed to parse group header","header":"X-MaaS-Group","header_value":"","error":"failed to parse header as JSON array: invalid character '<' looking for beginning of value","stacktrace":"main.registerHandlers.(*Handler).ExtractUserInfo.func4\n\tgithub.com/opendatahub-io/models-as-a-service/maas-api/internal/token/handler.go:95\ngithub.com/gin-gonic/gin.(*Context).Next\n\tgithub.com/gin-gonic/gin@v1.10.1/context.go:185\ngithub.com/gin-gonic/gin.CustomRecoveryWithWriter.func1\n\tgithub.com/gin-gonic/gin@v1.10.1/recovery.go:102\ngithub.com/gin-gonic/gin.(*Context).Next\n\tgithub.com/gin-gonic/gin@v1.10.1/context.go:185\ngithub.com/gin-gonic/gin.LoggerWithConfig.func1\n\tgithub.com/gin-gonic/gin@v1.10.1/logger.go:249\ngithub.com/gin-gonic/gin.(*Context).Next\n\tgithub.com/gin-gonic/gin@v1.10.1/context.go:185\ngithub.com/gin-gonic/gin.(*Engine).handleHTTPRequest\n\tgithub.com/gin-gonic/gin@v1.10.1/gin.go:644\ngithub.com/gin-gonic/gin.(*Engine).ServeHTTP\n\tgithub.com/gin-gonic/gin@v1.10.1/gin.go:600\nnet/http.serverHandler.ServeHTTP\n\tnet/http/server.go:3340\nnet/http.(*conn).serve\n\tnet/http/server.go:2109"} [GIN] 2026/04/21 - 15:07:58 | 500 | 82.777µs | 100.64.0.2 | POST "/v1/api-keys" [GIN] 2026/04/21 - 15:08:02 | 200 | 31.232µs | 10.134.0.2 | GET "/health" [GIN] 2026/04/21 - 15:08:03 | 200 | 31.878µs | 10.134.0.2 | GET "/health" {"level":"error","timestamp":"2026-04-21T15:08:03.596Z","caller":"token/handler.go:95","message":"Failed to parse group header","header":"X-MaaS-Group","header_value":"","error":"failed to parse header as JSON array: invalid character '<' looking for beginning of value","stacktrace":"main.registerHandlers.(*Handler).ExtractUserInfo.func4\n\tgithub.com/opendatahub-io/models-as-a-service/maas-api/internal/token/handler.go:95\ngithub.com/gin-gonic/gin.(*Context).Next\n\tgithub.com/gin-gonic/gin@v1.10.1/context.go:185\ngithub.com/gin-gonic/gin.CustomRecoveryWithWriter.func1\n\tgithub.com/gin-gonic/gin@v1.10.1/recovery.go:102\ngithub.com/gin-gonic/gin.(*Context).Next\n\tgithub.com/gin-gonic/gin@v1.10.1/context.go:185\ngithub.com/gin-gonic/gin.LoggerWithConfig.func1\n\tgithub.com/gin-gonic/gin@v1.10.1/logger.go:249\ngithub.com/gin-gonic/gin.(*Context).Next\n\tgithub.com/gin-gonic/gin@v1.10.1/context.go:185\ngithub.com/gin-gonic/gin.(*Engine).handleHTTPRequest\n\tgithub.com/gin-gonic/gin@v1.10.1/gin.go:644\ngithub.com/gin-gonic/gin.(*Engine).ServeHTTP\n\tgithub.com/gin-gonic/gin@v1.10.1/gin.go:600\nnet/http.serverHandler.ServeHTTP\n\tnet/http/server.go:3340\nnet/http.(*conn).serve\n\tnet/http/server.go:2109"} [GIN] 2026/04/21 - 15:08:03 | 500 | 86.42µs | 100.64.0.4 | POST "/v1/api-keys" [GIN] 2026/04/21 - 15:08:07 | 200 | 35.066µs | 10.134.0.2 | GET "/health" {"level":"error","timestamp":"2026-04-21T15:08:08.628Z","caller":"token/handler.go:95","message":"Failed to parse group header","header":"X-MaaS-Group","header_value":"","error":"failed to parse header as JSON array: invalid character '<' looking for beginning of value","stacktrace":"main.registerHandlers.(*Handler).ExtractUserInfo.func4\n\tgithub.com/opendatahub-io/models-as-a-service/maas-api/internal/token/handler.go:95\ngithub.com/gin-gonic/gin.(*Context).Next\n\tgithub.com/gin-gonic/gin@v1.10.1/context.go:185\ngithub.com/gin-gonic/gin.CustomRecoveryWithWriter.func1\n\tgithub.com/gin-gonic/gin@v1.10.1/recovery.go:102\ngithub.com/gin-gonic/gin.(*Context).Next\n\tgithub.com/gin-gonic/gin@v1.10.1/context.go:185\ngithub.com/gin-gonic/gin.LoggerWithConfig.func1\n\tgithub.com/gin-gonic/gin@v1.10.1/logger.go:249\ngithub.com/gin-gonic/gin.(*Context).Next\n\tgithub.com/gin-gonic/gin@v1.10.1/context.go:185\ngithub.com/gin-gonic/gin.(*Engine).handleHTTPRequest\n\tgithub.com/gin-gonic/gin@v1.10.1/gin.go:644\ngithub.com/gin-gonic/gin.(*Engine).ServeHTTP\n\tgithub.com/gin-gonic/gin@v1.10.1/gin.go:600\nnet/http.serverHandler.ServeHTTP\n\tnet/http/server.go:3340\nnet/http.(*conn).serve\n\tnet/http/server.go:2109"} [GIN] 2026/04/21 - 15:08:08 | 500 | 90.341µs | 100.64.0.2 | POST "/v1/api-keys" [GIN] 2026/04/21 - 15:08:12 | 200 | 35.656µs | 10.134.0.2 | GET "/health" [GIN] 2026/04/21 - 15:08:13 | 200 | 31.036µs | 10.134.0.2 | GET "/health" {"level":"error","timestamp":"2026-04-21T15:08:13.661Z","caller":"token/handler.go:95","message":"Failed to parse group header","header":"X-MaaS-Group","header_value":"","error":"failed to parse header as JSON array: invalid character '<' looking for beginning of value","stacktrace":"main.registerHandlers.(*Handler).ExtractUserInfo.func4\n\tgithub.com/opendatahub-io/models-as-a-service/maas-api/internal/token/handler.go:95\ngithub.com/gin-gonic/gin.(*Context).Next\n\tgithub.com/gin-gonic/gin@v1.10.1/context.go:185\ngithub.com/gin-gonic/gin.CustomRecoveryWithWriter.func1\n\tgithub.com/gin-gonic/gin@v1.10.1/recovery.go:102\ngithub.com/gin-gonic/gin.(*Context).Next\n\tgithub.com/gin-gonic/gin@v1.10.1/context.go:185\ngithub.com/gin-gonic/gin.LoggerWithConfig.func1\n\tgithub.com/gin-gonic/gin@v1.10.1/logger.go:249\ngithub.com/gin-gonic/gin.(*Context).Next\n\tgithub.com/gin-gonic/gin@v1.10.1/context.go:185\ngithub.com/gin-gonic/gin.(*Engine).handleHTTPRequest\n\tgithub.com/gin-gonic/gin@v1.10.1/gin.go:644\ngithub.com/gin-gonic/gin.(*Engine).ServeHTTP\n\tgithub.com/gin-gonic/gin@v1.10.1/gin.go:600\nnet/http.serverHandler.ServeHTTP\n\tnet/http/server.go:3340\nnet/http.(*conn).serve\n\tnet/http/server.go:2109"} [GIN] 2026/04/21 - 15:08:13 | 500 | 98.616µs | 100.64.0.2 | POST "/v1/api-keys" [GIN] 2026/04/21 - 15:08:17 | 200 | 33.753µs | 10.134.0.2 | GET "/health" {"level":"error","timestamp":"2026-04-21T15:08:18.690Z","caller":"token/handler.go:95","message":"Failed to parse group header","header":"X-MaaS-Group","header_value":"","error":"failed to parse header as JSON array: invalid character '<' looking for beginning of value","stacktrace":"main.registerHandlers.(*Handler).ExtractUserInfo.func4\n\tgithub.com/opendatahub-io/models-as-a-service/maas-api/internal/token/handler.go:95\ngithub.com/gin-gonic/gin.(*Context).Next\n\tgithub.com/gin-gonic/gin@v1.10.1/context.go:185\ngithub.com/gin-gonic/gin.CustomRecoveryWithWriter.func1\n\tgithub.com/gin-gonic/gin@v1.10.1/recovery.go:102\ngithub.com/gin-gonic/gin.(*Context).Next\n\tgithub.com/gin-gonic/gin@v1.10.1/context.go:185\ngithub.com/gin-gonic/gin.LoggerWithConfig.func1\n\tgithub.com/gin-gonic/gin@v1.10.1/logger.go:249\ngithub.com/gin-gonic/gin.(*Context).Next\n\tgithub.com/gin-gonic/gin@v1.10.1/context.go:185\ngithub.com/gin-gonic/gin.(*Engine).handleHTTPRequest\n\tgithub.com/gin-gonic/gin@v1.10.1/gin.go:644\ngithub.com/gin-gonic/gin.(*Engine).ServeHTTP\n\tgithub.com/gin-gonic/gin@v1.10.1/gin.go:600\nnet/http.serverHandler.ServeHTTP\n\tnet/http/server.go:3340\nnet/http.(*conn).serve\n\tnet/http/server.go:2109"} [GIN] 2026/04/21 - 15:08:18 | 500 | 97.123µs | 100.64.0.4 | POST "/v1/api-keys" [GIN] 2026/04/21 - 15:08:22 | 200 | 35.255µs | 10.134.0.2 | GET "/health" [GIN] 2026/04/21 - 15:08:23 | 200 | 47.929µs | 10.134.0.2 | GET "/health" {"level":"error","timestamp":"2026-04-21T15:08:23.723Z","caller":"token/handler.go:95","message":"Failed to parse group header","header":"X-MaaS-Group","header_value":"","error":"failed to parse header as JSON array: invalid character '<' looking for beginning of value","stacktrace":"main.registerHandlers.(*Handler).ExtractUserInfo.func4\n\tgithub.com/opendatahub-io/models-as-a-service/maas-api/internal/token/handler.go:95\ngithub.com/gin-gonic/gin.(*Context).Next\n\tgithub.com/gin-gonic/gin@v1.10.1/context.go:185\ngithub.com/gin-gonic/gin.CustomRecoveryWithWriter.func1\n\tgithub.com/gin-gonic/gin@v1.10.1/recovery.go:102\ngithub.com/gin-gonic/gin.(*Context).Next\n\tgithub.com/gin-gonic/gin@v1.10.1/context.go:185\ngithub.com/gin-gonic/gin.LoggerWithConfig.func1\n\tgithub.com/gin-gonic/gin@v1.10.1/logger.go:249\ngithub.com/gin-gonic/gin.(*Context).Next\n\tgithub.com/gin-gonic/gin@v1.10.1/context.go:185\ngithub.com/gin-gonic/gin.(*Engine).handleHTTPRequest\n\tgithub.com/gin-gonic/gin@v1.10.1/gin.go:644\ngithub.com/gin-gonic/gin.(*Engine).ServeHTTP\n\tgithub.com/gin-gonic/gin@v1.10.1/gin.go:600\nnet/http.serverHandler.ServeHTTP\n\tnet/http/server.go:3340\nnet/http.(*conn).serve\n\tnet/http/server.go:2109"} [GIN] 2026/04/21 - 15:08:23 | 500 | 92.107µs | 100.64.0.3 | POST "/v1/api-keys" [GIN] 2026/04/21 - 15:08:27 | 200 | 33.098µs | 10.134.0.2 | GET "/health" {"level":"error","timestamp":"2026-04-21T15:08:28.753Z","caller":"token/handler.go:95","message":"Failed to parse group header","header":"X-MaaS-Group","header_value":"","error":"failed to parse header as JSON array: invalid character '<' looking for beginning of value","stacktrace":"main.registerHandlers.(*Handler).ExtractUserInfo.func4\n\tgithub.com/opendatahub-io/models-as-a-service/maas-api/internal/token/handler.go:95\ngithub.com/gin-gonic/gin.(*Context).Next\n\tgithub.com/gin-gonic/gin@v1.10.1/context.go:185\ngithub.com/gin-gonic/gin.CustomRecoveryWithWriter.func1\n\tgithub.com/gin-gonic/gin@v1.10.1/recovery.go:102\ngithub.com/gin-gonic/gin.(*Context).Next\n\tgithub.com/gin-gonic/gin@v1.10.1/context.go:185\ngithub.com/gin-gonic/gin.LoggerWithConfig.func1\n\tgithub.com/gin-gonic/gin@v1.10.1/logger.go:249\ngithub.com/gin-gonic/gin.(*Context).Next\n\tgithub.com/gin-gonic/gin@v1.10.1/context.go:185\ngithub.com/gin-gonic/gin.(*Engine).handleHTTPRequest\n\tgithub.com/gin-gonic/gin@v1.10.1/gin.go:644\ngithub.com/gin-gonic/gin.(*Engine).ServeHTTP\n\tgithub.com/gin-gonic/gin@v1.10.1/gin.go:600\nnet/http.serverHandler.ServeHTTP\n\tnet/http/server.go:3340\nnet/http.(*conn).serve\n\tnet/http/server.go:2109"} [GIN] 2026/04/21 - 15:08:28 | 500 | 88.629µs | 100.64.0.4 | POST "/v1/api-keys" [GIN] 2026/04/21 - 15:08:32 | 200 | 31.554µs | 10.134.0.2 | GET "/health" [GIN] 2026/04/21 - 15:08:33 | 200 | 35.143µs | 10.134.0.2 | GET "/health" {"level":"info","timestamp":"2026-04-21T15:08:33.805Z","caller":"api_keys/service.go:150","message":"Created API key","user":"","groups":["system:authenticated","Site-Reliability"],"id":"426a5574-ce07-40bd-a9c6-c7549b72db6c","ephemeral":false} {"level":"info","timestamp":"2026-04-21T15:08:33.805Z","caller":"api_keys/handler.go:222","message":"Created API key","keyId":"426a5574-ce07-40bd-a9c6-c7549b72db6c","keyPrefix":"sk-oai-1eBJC8gfa7Yb...","username":"","groups":["system:authenticated","Site-Reliability"],"ephemeral":false} [GIN] 2026/04/21 - 15:08:33 | 201 | 2.346738ms | 100.64.0.3 | POST "/v1/api-keys" {"level":"error","timestamp":"2026-04-21T15:08:33.897Z","caller":"token/handler.go:95","message":"Failed to parse group header","header":"X-MaaS-Group","header_value":"","error":"failed to parse header as JSON array: invalid character '<' looking for beginning of value","stacktrace":"main.registerHandlers.(*Handler).ExtractUserInfo.func4\n\tgithub.com/opendatahub-io/models-as-a-service/maas-api/internal/token/handler.go:95\ngithub.com/gin-gonic/gin.(*Context).Next\n\tgithub.com/gin-gonic/gin@v1.10.1/context.go:185\ngithub.com/gin-gonic/gin.CustomRecoveryWithWriter.func1\n\tgithub.com/gin-gonic/gin@v1.10.1/recovery.go:102\ngithub.com/gin-gonic/gin.(*Context).Next\n\tgithub.com/gin-gonic/gin@v1.10.1/context.go:185\ngithub.com/gin-gonic/gin.LoggerWithConfig.func1\n\tgithub.com/gin-gonic/gin@v1.10.1/logger.go:249\ngithub.com/gin-gonic/gin.(*Context).Next\n\tgithub.com/gin-gonic/gin@v1.10.1/context.go:185\ngithub.com/gin-gonic/gin.(*Engine).handleHTTPRequest\n\tgithub.com/gin-gonic/gin@v1.10.1/gin.go:644\ngithub.com/gin-gonic/gin.(*Engine).ServeHTTP\n\tgithub.com/gin-gonic/gin@v1.10.1/gin.go:600\nnet/http.serverHandler.ServeHTTP\n\tnet/http/server.go:3340\nnet/http.(*conn).serve\n\tnet/http/server.go:2109"} [GIN] 2026/04/21 - 15:08:33 | 500 | 98.77µs | 100.64.0.3 | POST "/v1/api-keys" [GIN] 2026/04/21 - 15:08:37 | 200 | 33.397µs | 10.134.0.2 | GET "/health" {"level":"error","timestamp":"2026-04-21T15:08:38.930Z","caller":"token/handler.go:95","message":"Failed to parse group header","header":"X-MaaS-Group","header_value":"","error":"failed to parse header as JSON array: invalid character '<' looking for beginning of value","stacktrace":"main.registerHandlers.(*Handler).ExtractUserInfo.func4\n\tgithub.com/opendatahub-io/models-as-a-service/maas-api/internal/token/handler.go:95\ngithub.com/gin-gonic/gin.(*Context).Next\n\tgithub.com/gin-gonic/gin@v1.10.1/context.go:185\ngithub.com/gin-gonic/gin.CustomRecoveryWithWriter.func1\n\tgithub.com/gin-gonic/gin@v1.10.1/recovery.go:102\ngithub.com/gin-gonic/gin.(*Context).Next\n\tgithub.com/gin-gonic/gin@v1.10.1/context.go:185\ngithub.com/gin-gonic/gin.LoggerWithConfig.func1\n\tgithub.com/gin-gonic/gin@v1.10.1/logger.go:249\ngithub.com/gin-gonic/gin.(*Context).Next\n\tgithub.com/gin-gonic/gin@v1.10.1/context.go:185\ngithub.com/gin-gonic/gin.(*Engine).handleHTTPRequest\n\tgithub.com/gin-gonic/gin@v1.10.1/gin.go:644\ngithub.com/gin-gonic/gin.(*Engine).ServeHTTP\n\tgithub.com/gin-gonic/gin@v1.10.1/gin.go:600\nnet/http.serverHandler.ServeHTTP\n\tnet/http/server.go:3340\nnet/http.(*conn).serve\n\tnet/http/server.go:2109"} [GIN] 2026/04/21 - 15:08:38 | 500 | 84.992µs | 100.64.0.2 | POST "/v1/api-keys" [GIN] 2026/04/21 - 15:08:42 | 200 | 34.726µs | 10.134.0.2 | GET "/health" [GIN] 2026/04/21 - 15:08:43 | 200 | 33.478µs | 10.134.0.2 | GET "/health" {"level":"error","timestamp":"2026-04-21T15:08:43.965Z","caller":"token/handler.go:95","message":"Failed to parse group header","header":"X-MaaS-Group","header_value":"","error":"failed to parse header as JSON array: invalid character '<' looking for beginning of value","stacktrace":"main.registerHandlers.(*Handler).ExtractUserInfo.func4\n\tgithub.com/opendatahub-io/models-as-a-service/maas-api/internal/token/handler.go:95\ngithub.com/gin-gonic/gin.(*Context).Next\n\tgithub.com/gin-gonic/gin@v1.10.1/context.go:185\ngithub.com/gin-gonic/gin.CustomRecoveryWithWriter.func1\n\tgithub.com/gin-gonic/gin@v1.10.1/recovery.go:102\ngithub.com/gin-gonic/gin.(*Context).Next\n\tgithub.com/gin-gonic/gin@v1.10.1/context.go:185\ngithub.com/gin-gonic/gin.LoggerWithConfig.func1\n\tgithub.com/gin-gonic/gin@v1.10.1/logger.go:249\ngithub.com/gin-gonic/gin.(*Context).Next\n\tgithub.com/gin-gonic/gin@v1.10.1/context.go:185\ngithub.com/gin-gonic/gin.(*Engine).handleHTTPRequest\n\tgithub.com/gin-gonic/gin@v1.10.1/gin.go:644\ngithub.com/gin-gonic/gin.(*Engine).ServeHTTP\n\tgithub.com/gin-gonic/gin@v1.10.1/gin.go:600\nnet/http.serverHandler.ServeHTTP\n\tnet/http/server.go:3340\nnet/http.(*conn).serve\n\tnet/http/server.go:2109"} [GIN] 2026/04/21 - 15:08:43 | 500 | 93.673µs | 100.64.0.4 | POST "/v1/api-keys" [GIN] 2026/04/21 - 15:08:47 | 200 | 35.503µs | 10.134.0.2 | GET "/health" {"level":"error","timestamp":"2026-04-21T15:08:48.997Z","caller":"token/handler.go:95","message":"Failed to parse group header","header":"X-MaaS-Group","header_value":"","error":"failed to parse header as JSON array: invalid character '<' looking for beginning of value","stacktrace":"main.registerHandlers.(*Handler).ExtractUserInfo.func4\n\tgithub.com/opendatahub-io/models-as-a-service/maas-api/internal/token/handler.go:95\ngithub.com/gin-gonic/gin.(*Context).Next\n\tgithub.com/gin-gonic/gin@v1.10.1/context.go:185\ngithub.com/gin-gonic/gin.CustomRecoveryWithWriter.func1\n\tgithub.com/gin-gonic/gin@v1.10.1/recovery.go:102\ngithub.com/gin-gonic/gin.(*Context).Next\n\tgithub.com/gin-gonic/gin@v1.10.1/context.go:185\ngithub.com/gin-gonic/gin.LoggerWithConfig.func1\n\tgithub.com/gin-gonic/gin@v1.10.1/logger.go:249\ngithub.com/gin-gonic/gin.(*Context).Next\n\tgithub.com/gin-gonic/gin@v1.10.1/context.go:185\ngithub.com/gin-gonic/gin.(*Engine).handleHTTPRequest\n\tgithub.com/gin-gonic/gin@v1.10.1/gin.go:644\ngithub.com/gin-gonic/gin.(*Engine).ServeHTTP\n\tgithub.com/gin-gonic/gin@v1.10.1/gin.go:600\nnet/http.serverHandler.ServeHTTP\n\tnet/http/server.go:3340\nnet/http.(*conn).serve\n\tnet/http/server.go:2109"} [GIN] 2026/04/21 - 15:08:48 | 500 | 90.971µs | 100.64.0.2 | POST "/v1/api-keys" [GIN] 2026/04/21 - 15:08:52 | 200 | 39.602µs | 10.134.0.2 | GET "/health" [GIN] 2026/04/21 - 15:08:53 | 200 | 35.485µs | 10.134.0.2 | GET "/health" {"level":"error","timestamp":"2026-04-21T15:08:54.030Z","caller":"token/handler.go:95","message":"Failed to parse group header","header":"X-MaaS-Group","header_value":"","error":"failed to parse header as JSON array: invalid character '<' looking for beginning of value","stacktrace":"main.registerHandlers.(*Handler).ExtractUserInfo.func4\n\tgithub.com/opendatahub-io/models-as-a-service/maas-api/internal/token/handler.go:95\ngithub.com/gin-gonic/gin.(*Context).Next\n\tgithub.com/gin-gonic/gin@v1.10.1/context.go:185\ngithub.com/gin-gonic/gin.CustomRecoveryWithWriter.func1\n\tgithub.com/gin-gonic/gin@v1.10.1/recovery.go:102\ngithub.com/gin-gonic/gin.(*Context).Next\n\tgithub.com/gin-gonic/gin@v1.10.1/context.go:185\ngithub.com/gin-gonic/gin.LoggerWithConfig.func1\n\tgithub.com/gin-gonic/gin@v1.10.1/logger.go:249\ngithub.com/gin-gonic/gin.(*Context).Next\n\tgithub.com/gin-gonic/gin@v1.10.1/context.go:185\ngithub.com/gin-gonic/gin.(*Engine).handleHTTPRequest\n\tgithub.com/gin-gonic/gin@v1.10.1/gin.go:644\ngithub.com/gin-gonic/gin.(*Engine).ServeHTTP\n\tgithub.com/gin-gonic/gin@v1.10.1/gin.go:600\nnet/http.serverHandler.ServeHTTP\n\tnet/http/server.go:3340\nnet/http.(*conn).serve\n\tnet/http/server.go:2109"} [GIN] 2026/04/21 - 15:08:54 | 500 | 83.156µs | 100.64.0.3 | POST "/v1/api-keys" [GIN] 2026/04/21 - 15:08:57 | 200 | 41.842µs | 10.134.0.2 | GET "/health" {"level":"error","timestamp":"2026-04-21T15:08:59.063Z","caller":"token/handler.go:95","message":"Failed to parse group header","header":"X-MaaS-Group","header_value":"","error":"failed to parse header as JSON array: invalid character '<' looking for beginning of value","stacktrace":"main.registerHandlers.(*Handler).ExtractUserInfo.func4\n\tgithub.com/opendatahub-io/models-as-a-service/maas-api/internal/token/handler.go:95\ngithub.com/gin-gonic/gin.(*Context).Next\n\tgithub.com/gin-gonic/gin@v1.10.1/context.go:185\ngithub.com/gin-gonic/gin.CustomRecoveryWithWriter.func1\n\tgithub.com/gin-gonic/gin@v1.10.1/recovery.go:102\ngithub.com/gin-gonic/gin.(*Context).Next\n\tgithub.com/gin-gonic/gin@v1.10.1/context.go:185\ngithub.com/gin-gonic/gin.LoggerWithConfig.func1\n\tgithub.com/gin-gonic/gin@v1.10.1/logger.go:249\ngithub.com/gin-gonic/gin.(*Context).Next\n\tgithub.com/gin-gonic/gin@v1.10.1/context.go:185\ngithub.com/gin-gonic/gin.(*Engine).handleHTTPRequest\n\tgithub.com/gin-gonic/gin@v1.10.1/gin.go:644\ngithub.com/gin-gonic/gin.(*Engine).ServeHTTP\n\tgithub.com/gin-gonic/gin@v1.10.1/gin.go:600\nnet/http.serverHandler.ServeHTTP\n\tnet/http/server.go:3340\nnet/http.(*conn).serve\n\tnet/http/server.go:2109"} [GIN] 2026/04/21 - 15:08:59 | 500 | 110.079µs | 100.64.0.4 | POST "/v1/api-keys" [GIN] 2026/04/21 - 15:09:02 | 200 | 32.735µs | 10.134.0.2 | GET "/health" [GIN] 2026/04/21 - 15:09:03 | 200 | 36.654µs | 10.134.0.2 | GET "/health" {"level":"error","timestamp":"2026-04-21T15:09:04.093Z","caller":"token/handler.go:95","message":"Failed to parse group header","header":"X-MaaS-Group","header_value":"","error":"failed to parse header as JSON array: invalid character '<' looking for beginning of value","stacktrace":"main.registerHandlers.(*Handler).ExtractUserInfo.func4\n\tgithub.com/opendatahub-io/models-as-a-service/maas-api/internal/token/handler.go:95\ngithub.com/gin-gonic/gin.(*Context).Next\n\tgithub.com/gin-gonic/gin@v1.10.1/context.go:185\ngithub.com/gin-gonic/gin.CustomRecoveryWithWriter.func1\n\tgithub.com/gin-gonic/gin@v1.10.1/recovery.go:102\ngithub.com/gin-gonic/gin.(*Context).Next\n\tgithub.com/gin-gonic/gin@v1.10.1/context.go:185\ngithub.com/gin-gonic/gin.LoggerWithConfig.func1\n\tgithub.com/gin-gonic/gin@v1.10.1/logger.go:249\ngithub.com/gin-gonic/gin.(*Context).Next\n\tgithub.com/gin-gonic/gin@v1.10.1/context.go:185\ngithub.com/gin-gonic/gin.(*Engine).handleHTTPRequest\n\tgithub.com/gin-gonic/gin@v1.10.1/gin.go:644\ngithub.com/gin-gonic/gin.(*Engine).ServeHTTP\n\tgithub.com/gin-gonic/gin@v1.10.1/gin.go:600\nnet/http.serverHandler.ServeHTTP\n\tnet/http/server.go:3340\nnet/http.(*conn).serve\n\tnet/http/server.go:2109"} [GIN] 2026/04/21 - 15:09:04 | 500 | 85.162µs | 100.64.0.2 | POST "/v1/api-keys" [GIN] 2026/04/21 - 15:09:07 | 200 | 32.629µs | 10.134.0.2 | GET "/health" {"level":"error","timestamp":"2026-04-21T15:09:09.124Z","caller":"token/handler.go:95","message":"Failed to parse group header","header":"X-MaaS-Group","header_value":"","error":"failed to parse header as JSON array: invalid character '<' looking for beginning of value","stacktrace":"main.registerHandlers.(*Handler).ExtractUserInfo.func4\n\tgithub.com/opendatahub-io/models-as-a-service/maas-api/internal/token/handler.go:95\ngithub.com/gin-gonic/gin.(*Context).Next\n\tgithub.com/gin-gonic/gin@v1.10.1/context.go:185\ngithub.com/gin-gonic/gin.CustomRecoveryWithWriter.func1\n\tgithub.com/gin-gonic/gin@v1.10.1/recovery.go:102\ngithub.com/gin-gonic/gin.(*Context).Next\n\tgithub.com/gin-gonic/gin@v1.10.1/context.go:185\ngithub.com/gin-gonic/gin.LoggerWithConfig.func1\n\tgithub.com/gin-gonic/gin@v1.10.1/logger.go:249\ngithub.com/gin-gonic/gin.(*Context).Next\n\tgithub.com/gin-gonic/gin@v1.10.1/context.go:185\ngithub.com/gin-gonic/gin.(*Engine).handleHTTPRequest\n\tgithub.com/gin-gonic/gin@v1.10.1/gin.go:644\ngithub.com/gin-gonic/gin.(*Engine).ServeHTTP\n\tgithub.com/gin-gonic/gin@v1.10.1/gin.go:600\nnet/http.serverHandler.ServeHTTP\n\tnet/http/server.go:3340\nnet/http.(*conn).serve\n\tnet/http/server.go:2109"} [GIN] 2026/04/21 - 15:09:09 | 500 | 83.559µs | 100.64.0.3 | POST "/v1/api-keys" [GIN] 2026/04/21 - 15:09:12 | 200 | 34.839µs | 10.134.0.2 | GET "/health" [GIN] 2026/04/21 - 15:09:13 | 200 | 32.931µs | 10.134.0.2 | GET "/health" {"level":"error","timestamp":"2026-04-21T15:09:14.155Z","caller":"token/handler.go:95","message":"Failed to parse group header","header":"X-MaaS-Group","header_value":"","error":"failed to parse header as JSON array: invalid character '<' looking for beginning of value","stacktrace":"main.registerHandlers.(*Handler).ExtractUserInfo.func4\n\tgithub.com/opendatahub-io/models-as-a-service/maas-api/internal/token/handler.go:95\ngithub.com/gin-gonic/gin.(*Context).Next\n\tgithub.com/gin-gonic/gin@v1.10.1/context.go:185\ngithub.com/gin-gonic/gin.CustomRecoveryWithWriter.func1\n\tgithub.com/gin-gonic/gin@v1.10.1/recovery.go:102\ngithub.com/gin-gonic/gin.(*Context).Next\n\tgithub.com/gin-gonic/gin@v1.10.1/context.go:185\ngithub.com/gin-gonic/gin.LoggerWithConfig.func1\n\tgithub.com/gin-gonic/gin@v1.10.1/logger.go:249\ngithub.com/gin-gonic/gin.(*Context).Next\n\tgithub.com/gin-gonic/gin@v1.10.1/context.go:185\ngithub.com/gin-gonic/gin.(*Engine).handleHTTPRequest\n\tgithub.com/gin-gonic/gin@v1.10.1/gin.go:644\ngithub.com/gin-gonic/gin.(*Engine).ServeHTTP\n\tgithub.com/gin-gonic/gin@v1.10.1/gin.go:600\nnet/http.serverHandler.ServeHTTP\n\tnet/http/server.go:3340\nnet/http.(*conn).serve\n\tnet/http/server.go:2109"} [GIN] 2026/04/21 - 15:09:14 | 500 | 84.429µs | 100.64.0.4 | POST "/v1/api-keys" [GIN] 2026/04/21 - 15:09:17 | 200 | 41.957µs | 10.134.0.2 | GET "/health" {"level":"info","timestamp":"2026-04-21T15:09:19.188Z","caller":"api_keys/service.go:150","message":"Created API key","user":"","groups":["system:authenticated","Engineering","Project-Alpha"],"id":"beebcbf8-33ff-4589-a1ac-0be1343daf7b","ephemeral":false} {"level":"info","timestamp":"2026-04-21T15:09:19.188Z","caller":"api_keys/handler.go:222","message":"Created API key","keyId":"beebcbf8-33ff-4589-a1ac-0be1343daf7b","keyPrefix":"sk-oai-1Xe3TJgEy7Dc...","username":"","groups":["system:authenticated","Engineering","Project-Alpha"],"ephemeral":false} [GIN] 2026/04/21 - 15:09:19 | 201 | 3.12741ms | 100.64.0.3 | POST "/v1/api-keys" {"level":"error","timestamp":"2026-04-21T15:09:19.215Z","caller":"token/handler.go:95","message":"Failed to parse group header","header":"X-MaaS-Group","header_value":"","error":"failed to parse header as JSON array: invalid character '<' looking for beginning of value","stacktrace":"main.registerHandlers.(*Handler).ExtractUserInfo.func4\n\tgithub.com/opendatahub-io/models-as-a-service/maas-api/internal/token/handler.go:95\ngithub.com/gin-gonic/gin.(*Context).Next\n\tgithub.com/gin-gonic/gin@v1.10.1/context.go:185\ngithub.com/gin-gonic/gin.CustomRecoveryWithWriter.func1\n\tgithub.com/gin-gonic/gin@v1.10.1/recovery.go:102\ngithub.com/gin-gonic/gin.(*Context).Next\n\tgithub.com/gin-gonic/gin@v1.10.1/context.go:185\ngithub.com/gin-gonic/gin.LoggerWithConfig.func1\n\tgithub.com/gin-gonic/gin@v1.10.1/logger.go:249\ngithub.com/gin-gonic/gin.(*Context).Next\n\tgithub.com/gin-gonic/gin@v1.10.1/context.go:185\ngithub.com/gin-gonic/gin.(*Engine).handleHTTPRequest\n\tgithub.com/gin-gonic/gin@v1.10.1/gin.go:644\ngithub.com/gin-gonic/gin.(*Engine).ServeHTTP\n\tgithub.com/gin-gonic/gin@v1.10.1/gin.go:600\nnet/http.serverHandler.ServeHTTP\n\tnet/http/server.go:3340\nnet/http.(*conn).serve\n\tnet/http/server.go:2109"} [GIN] 2026/04/21 - 15:09:19 | 500 | 84.592µs | 100.64.0.2 | DELETE "/v1/api-keys/beebcbf8-33ff-4589-a1ac-0be1343daf7b" [GIN] 2026/04/21 - 15:09:22 | 200 | 37.435µs | 10.134.0.2 | GET "/health" [GIN] 2026/04/21 - 15:09:23 | 200 | 31.686µs | 10.134.0.2 | GET "/health" {"level":"error","timestamp":"2026-04-21T15:09:24.246Z","caller":"token/handler.go:95","message":"Failed to parse group header","header":"X-MaaS-Group","header_value":"","error":"failed to parse header as JSON array: invalid character '<' looking for beginning of value","stacktrace":"main.registerHandlers.(*Handler).ExtractUserInfo.func4\n\tgithub.com/opendatahub-io/models-as-a-service/maas-api/internal/token/handler.go:95\ngithub.com/gin-gonic/gin.(*Context).Next\n\tgithub.com/gin-gonic/gin@v1.10.1/context.go:185\ngithub.com/gin-gonic/gin.CustomRecoveryWithWriter.func1\n\tgithub.com/gin-gonic/gin@v1.10.1/recovery.go:102\ngithub.com/gin-gonic/gin.(*Context).Next\n\tgithub.com/gin-gonic/gin@v1.10.1/context.go:185\ngithub.com/gin-gonic/gin.LoggerWithConfig.func1\n\tgithub.com/gin-gonic/gin@v1.10.1/logger.go:249\ngithub.com/gin-gonic/gin.(*Context).Next\n\tgithub.com/gin-gonic/gin@v1.10.1/context.go:185\ngithub.com/gin-gonic/gin.(*Engine).handleHTTPRequest\n\tgithub.com/gin-gonic/gin@v1.10.1/gin.go:644\ngithub.com/gin-gonic/gin.(*Engine).ServeHTTP\n\tgithub.com/gin-gonic/gin@v1.10.1/gin.go:600\nnet/http.serverHandler.ServeHTTP\n\tnet/http/server.go:3340\nnet/http.(*conn).serve\n\tnet/http/server.go:2109"} [GIN] 2026/04/21 - 15:09:24 | 500 | 83.05µs | 100.64.0.3 | DELETE "/v1/api-keys/beebcbf8-33ff-4589-a1ac-0be1343daf7b" [GIN] 2026/04/21 - 15:09:27 | 200 | 34.09µs | 10.134.0.2 | GET "/health" {"level":"error","timestamp":"2026-04-21T15:09:29.285Z","caller":"token/handler.go:95","message":"Failed to parse group header","header":"X-MaaS-Group","header_value":"","error":"failed to parse header as JSON array: invalid character '<' looking for beginning of value","stacktrace":"main.registerHandlers.(*Handler).ExtractUserInfo.func4\n\tgithub.com/opendatahub-io/models-as-a-service/maas-api/internal/token/handler.go:95\ngithub.com/gin-gonic/gin.(*Context).Next\n\tgithub.com/gin-gonic/gin@v1.10.1/context.go:185\ngithub.com/gin-gonic/gin.CustomRecoveryWithWriter.func1\n\tgithub.com/gin-gonic/gin@v1.10.1/recovery.go:102\ngithub.com/gin-gonic/gin.(*Context).Next\n\tgithub.com/gin-gonic/gin@v1.10.1/context.go:185\ngithub.com/gin-gonic/gin.LoggerWithConfig.func1\n\tgithub.com/gin-gonic/gin@v1.10.1/logger.go:249\ngithub.com/gin-gonic/gin.(*Context).Next\n\tgithub.com/gin-gonic/gin@v1.10.1/context.go:185\ngithub.com/gin-gonic/gin.(*Engine).handleHTTPRequest\n\tgithub.com/gin-gonic/gin@v1.10.1/gin.go:644\ngithub.com/gin-gonic/gin.(*Engine).ServeHTTP\n\tgithub.com/gin-gonic/gin@v1.10.1/gin.go:600\nnet/http.serverHandler.ServeHTTP\n\tnet/http/server.go:3340\nnet/http.(*conn).serve\n\tnet/http/server.go:2109"} [GIN] 2026/04/21 - 15:09:29 | 500 | 93.646µs | 100.64.0.2 | DELETE "/v1/api-keys/beebcbf8-33ff-4589-a1ac-0be1343daf7b" [GIN] 2026/04/21 - 15:09:32 | 200 | 39.909µs | 10.134.0.2 | GET "/health" [GIN] 2026/04/21 - 15:09:33 | 200 | 33.661µs | 10.134.0.2 | GET "/health" {"level":"error","timestamp":"2026-04-21T15:09:34.316Z","caller":"token/handler.go:95","message":"Failed to parse group header","header":"X-MaaS-Group","header_value":"","error":"failed to parse header as JSON array: invalid character '<' looking for beginning of value","stacktrace":"main.registerHandlers.(*Handler).ExtractUserInfo.func4\n\tgithub.com/opendatahub-io/models-as-a-service/maas-api/internal/token/handler.go:95\ngithub.com/gin-gonic/gin.(*Context).Next\n\tgithub.com/gin-gonic/gin@v1.10.1/context.go:185\ngithub.com/gin-gonic/gin.CustomRecoveryWithWriter.func1\n\tgithub.com/gin-gonic/gin@v1.10.1/recovery.go:102\ngithub.com/gin-gonic/gin.(*Context).Next\n\tgithub.com/gin-gonic/gin@v1.10.1/context.go:185\ngithub.com/gin-gonic/gin.LoggerWithConfig.func1\n\tgithub.com/gin-gonic/gin@v1.10.1/logger.go:249\ngithub.com/gin-gonic/gin.(*Context).Next\n\tgithub.com/gin-gonic/gin@v1.10.1/context.go:185\ngithub.com/gin-gonic/gin.(*Engine).handleHTTPRequest\n\tgithub.com/gin-gonic/gin@v1.10.1/gin.go:644\ngithub.com/gin-gonic/gin.(*Engine).ServeHTTP\n\tgithub.com/gin-gonic/gin@v1.10.1/gin.go:600\nnet/http.serverHandler.ServeHTTP\n\tnet/http/server.go:3340\nnet/http.(*conn).serve\n\tnet/http/server.go:2109"} [GIN] 2026/04/21 - 15:09:34 | 500 | 91.628µs | 100.64.0.4 | DELETE "/v1/api-keys/beebcbf8-33ff-4589-a1ac-0be1343daf7b" [GIN] 2026/04/21 - 15:09:37 | 200 | 29.414µs | 10.134.0.2 | GET "/health" {"level":"error","timestamp":"2026-04-21T15:09:39.350Z","caller":"token/handler.go:95","message":"Failed to parse group header","header":"X-MaaS-Group","header_value":"","error":"failed to parse header as JSON array: invalid character '<' looking for beginning of value","stacktrace":"main.registerHandlers.(*Handler).ExtractUserInfo.func4\n\tgithub.com/opendatahub-io/models-as-a-service/maas-api/internal/token/handler.go:95\ngithub.com/gin-gonic/gin.(*Context).Next\n\tgithub.com/gin-gonic/gin@v1.10.1/context.go:185\ngithub.com/gin-gonic/gin.CustomRecoveryWithWriter.func1\n\tgithub.com/gin-gonic/gin@v1.10.1/recovery.go:102\ngithub.com/gin-gonic/gin.(*Context).Next\n\tgithub.com/gin-gonic/gin@v1.10.1/context.go:185\ngithub.com/gin-gonic/gin.LoggerWithConfig.func1\n\tgithub.com/gin-gonic/gin@v1.10.1/logger.go:249\ngithub.com/gin-gonic/gin.(*Context).Next\n\tgithub.com/gin-gonic/gin@v1.10.1/context.go:185\ngithub.com/gin-gonic/gin.(*Engine).handleHTTPRequest\n\tgithub.com/gin-gonic/gin@v1.10.1/gin.go:644\ngithub.com/gin-gonic/gin.(*Engine).ServeHTTP\n\tgithub.com/gin-gonic/gin@v1.10.1/gin.go:600\nnet/http.serverHandler.ServeHTTP\n\tnet/http/server.go:3340\nnet/http.(*conn).serve\n\tnet/http/server.go:2109"} [GIN] 2026/04/21 - 15:09:39 | 500 | 108.739µs | 100.64.0.3 | DELETE "/v1/api-keys/beebcbf8-33ff-4589-a1ac-0be1343daf7b" [GIN] 2026/04/21 - 15:09:42 | 200 | 32.076µs | 10.134.0.2 | GET "/health" [GIN] 2026/04/21 - 15:09:43 | 200 | 37.666µs | 10.134.0.2 | GET "/health" {"level":"warn","timestamp":"2026-04-21T15:09:44.389Z","caller":"api_keys/handler.go:296","message":"Unauthorized API key revocation attempt","requestingUser":"alice_lead","keyOwner":"","keyId":"beebcbf8-33ff-4589-a1ac-0be1343daf7b"} [GIN] 2026/04/21 - 15:09:44 | 404 | 5.235902ms | 100.64.0.4 | DELETE "/v1/api-keys/beebcbf8-33ff-4589-a1ac-0be1343daf7b" {"level":"info","timestamp":"2026-04-21T15:09:44.557Z","caller":"api_keys/service.go:150","message":"Created API key","user":"","groups":["system:authenticated","Engineering","Project-Alpha"],"id":"df9cd32e-9047-4476-af6c-d0c3719fbf19","ephemeral":false} {"level":"info","timestamp":"2026-04-21T15:09:44.557Z","caller":"api_keys/handler.go:222","message":"Created API key","keyId":"df9cd32e-9047-4476-af6c-d0c3719fbf19","keyPrefix":"sk-oai-HP08RM48PJS1...","username":"","groups":["system:authenticated","Engineering","Project-Alpha"],"ephemeral":false} [GIN] 2026/04/21 - 15:09:44 | 201 | 1.943284ms | 100.64.0.3 | POST "/v1/api-keys" [GIN] 2026/04/21 - 15:09:44 | 200 | 678.497µs | 10.134.0.48 | POST "/internal/v1/api-keys/validate" [GIN] 2026/04/21 - 15:09:44 | 200 | 600.349µs | 10.134.0.48 | POST "/internal/v1/api-keys/validate" [GIN] 2026/04/21 - 15:09:44 | 200 | 108.626µs | 10.134.0.48 | POST "/internal/v1/subscriptions/select" [GIN] 2026/04/21 - 15:09:44 | 200 | 20.513497ms | 100.64.0.2 | GET "/v1/models" {"level":"info","timestamp":"2026-04-21T15:09:44.705Z","caller":"api_keys/service.go:150","message":"Created API key","user":"alice_lead","groups":["system:authenticated","Engineering","Project-Alpha"],"id":"bf54de84-ff7d-4bc0-a59c-25094610270d","ephemeral":false} {"level":"info","timestamp":"2026-04-21T15:09:44.705Z","caller":"api_keys/handler.go:222","message":"Created API key","keyId":"bf54de84-ff7d-4bc0-a59c-25094610270d","keyPrefix":"sk-oai-1OHpvPJiaDmm...","username":"alice_lead","groups":["system:authenticated","Engineering","Project-Alpha"],"ephemeral":false} [GIN] 2026/04/21 - 15:09:44 | 201 | 1.837258ms | 100.64.0.4 | POST "/v1/api-keys" [GIN] 2026/04/21 - 15:09:44 | 200 | 584.368µs | 10.134.0.48 | POST "/internal/v1/api-keys/validate" [GIN] 2026/04/21 - 15:09:44 | 403 | 71.685µs | 100.64.0.3 | GET "/v1/models" [GIN] 2026/04/21 - 15:09:44 | 200 | 590.343µs | 10.134.0.48 | POST "/internal/v1/api-keys/validate" [GIN] 2026/04/21 - 15:09:44 | 200 | 415.853µs | 10.134.0.48 | POST "/internal/v1/api-keys/validate" [GIN] 2026/04/21 - 15:09:44 | 200 | 110.693µs | 10.134.0.48 | POST "/internal/v1/subscriptions/select" [GIN] 2026/04/21 - 15:09:44 | 200 | 9.494037ms | 100.64.0.4 | GET "/v1/models" {"level":"error","timestamp":"2026-04-21T15:09:44.848Z","caller":"token/handler.go:95","message":"Failed to parse group header","header":"X-MaaS-Group","header_value":"","error":"failed to parse header as JSON array: invalid character '<' looking for beginning of value","stacktrace":"main.registerHandlers.(*Handler).ExtractUserInfo.func4\n\tgithub.com/opendatahub-io/models-as-a-service/maas-api/internal/token/handler.go:95\ngithub.com/gin-gonic/gin.(*Context).Next\n\tgithub.com/gin-gonic/gin@v1.10.1/context.go:185\ngithub.com/gin-gonic/gin.CustomRecoveryWithWriter.func1\n\tgithub.com/gin-gonic/gin@v1.10.1/recovery.go:102\ngithub.com/gin-gonic/gin.(*Context).Next\n\tgithub.com/gin-gonic/gin@v1.10.1/context.go:185\ngithub.com/gin-gonic/gin.LoggerWithConfig.func1\n\tgithub.com/gin-gonic/gin@v1.10.1/logger.go:249\ngithub.com/gin-gonic/gin.(*Context).Next\n\tgithub.com/gin-gonic/gin@v1.10.1/context.go:185\ngithub.com/gin-gonic/gin.(*Engine).handleHTTPRequest\n\tgithub.com/gin-gonic/gin@v1.10.1/gin.go:644\ngithub.com/gin-gonic/gin.(*Engine).ServeHTTP\n\tgithub.com/gin-gonic/gin@v1.10.1/gin.go:600\nnet/http.serverHandler.ServeHTTP\n\tnet/http/server.go:3340\nnet/http.(*conn).serve\n\tnet/http/server.go:2109"} [GIN] 2026/04/21 - 15:09:44 | 500 | 85.119µs | 100.64.0.3 | POST "/v1/api-keys" [GIN] 2026/04/21 - 15:09:47 | 200 | 26.119µs | 10.134.0.2 | GET "/health" {"level":"error","timestamp":"2026-04-21T15:09:49.874Z","caller":"token/handler.go:95","message":"Failed to parse group header","header":"X-MaaS-Group","header_value":"","error":"failed to parse header as JSON array: invalid character '<' looking for beginning of value","stacktrace":"main.registerHandlers.(*Handler).ExtractUserInfo.func4\n\tgithub.com/opendatahub-io/models-as-a-service/maas-api/internal/token/handler.go:95\ngithub.com/gin-gonic/gin.(*Context).Next\n\tgithub.com/gin-gonic/gin@v1.10.1/context.go:185\ngithub.com/gin-gonic/gin.CustomRecoveryWithWriter.func1\n\tgithub.com/gin-gonic/gin@v1.10.1/recovery.go:102\ngithub.com/gin-gonic/gin.(*Context).Next\n\tgithub.com/gin-gonic/gin@v1.10.1/context.go:185\ngithub.com/gin-gonic/gin.LoggerWithConfig.func1\n\tgithub.com/gin-gonic/gin@v1.10.1/logger.go:249\ngithub.com/gin-gonic/gin.(*Context).Next\n\tgithub.com/gin-gonic/gin@v1.10.1/context.go:185\ngithub.com/gin-gonic/gin.(*Engine).handleHTTPRequest\n\tgithub.com/gin-gonic/gin@v1.10.1/gin.go:644\ngithub.com/gin-gonic/gin.(*Engine).ServeHTTP\n\tgithub.com/gin-gonic/gin@v1.10.1/gin.go:600\nnet/http.serverHandler.ServeHTTP\n\tnet/http/server.go:3340\nnet/http.(*conn).serve\n\tnet/http/server.go:2109"} [GIN] 2026/04/21 - 15:09:49 | 500 | 84.184µs | 100.64.0.2 | POST "/v1/api-keys" [GIN] 2026/04/21 - 15:09:52 | 200 | 30.555µs | 10.134.0.2 | GET "/health" [GIN] 2026/04/21 - 15:09:53 | 200 | 27.828µs | 10.134.0.2 | GET "/health" {"level":"error","timestamp":"2026-04-21T15:09:54.914Z","caller":"token/handler.go:95","message":"Failed to parse group header","header":"X-MaaS-Group","header_value":"","error":"failed to parse header as JSON array: invalid character '<' looking for beginning of value","stacktrace":"main.registerHandlers.(*Handler).ExtractUserInfo.func4\n\tgithub.com/opendatahub-io/models-as-a-service/maas-api/internal/token/handler.go:95\ngithub.com/gin-gonic/gin.(*Context).Next\n\tgithub.com/gin-gonic/gin@v1.10.1/context.go:185\ngithub.com/gin-gonic/gin.CustomRecoveryWithWriter.func1\n\tgithub.com/gin-gonic/gin@v1.10.1/recovery.go:102\ngithub.com/gin-gonic/gin.(*Context).Next\n\tgithub.com/gin-gonic/gin@v1.10.1/context.go:185\ngithub.com/gin-gonic/gin.LoggerWithConfig.func1\n\tgithub.com/gin-gonic/gin@v1.10.1/logger.go:249\ngithub.com/gin-gonic/gin.(*Context).Next\n\tgithub.com/gin-gonic/gin@v1.10.1/context.go:185\ngithub.com/gin-gonic/gin.(*Engine).handleHTTPRequest\n\tgithub.com/gin-gonic/gin@v1.10.1/gin.go:644\ngithub.com/gin-gonic/gin.(*Engine).ServeHTTP\n\tgithub.com/gin-gonic/gin@v1.10.1/gin.go:600\nnet/http.serverHandler.ServeHTTP\n\tnet/http/server.go:3340\nnet/http.(*conn).serve\n\tnet/http/server.go:2109"} [GIN] 2026/04/21 - 15:09:54 | 500 | 84.49µs | 100.64.0.2 | POST "/v1/api-keys" [GIN] 2026/04/21 - 15:09:57 | 200 | 59.496µs | 10.134.0.2 | GET "/health" {"level":"error","timestamp":"2026-04-21T15:09:59.949Z","caller":"token/handler.go:95","message":"Failed to parse group header","header":"X-MaaS-Group","header_value":"","error":"failed to parse header as JSON array: invalid character '<' looking for beginning of value","stacktrace":"main.registerHandlers.(*Handler).ExtractUserInfo.func4\n\tgithub.com/opendatahub-io/models-as-a-service/maas-api/internal/token/handler.go:95\ngithub.com/gin-gonic/gin.(*Context).Next\n\tgithub.com/gin-gonic/gin@v1.10.1/context.go:185\ngithub.com/gin-gonic/gin.CustomRecoveryWithWriter.func1\n\tgithub.com/gin-gonic/gin@v1.10.1/recovery.go:102\ngithub.com/gin-gonic/gin.(*Context).Next\n\tgithub.com/gin-gonic/gin@v1.10.1/context.go:185\ngithub.com/gin-gonic/gin.LoggerWithConfig.func1\n\tgithub.com/gin-gonic/gin@v1.10.1/logger.go:249\ngithub.com/gin-gonic/gin.(*Context).Next\n\tgithub.com/gin-gonic/gin@v1.10.1/context.go:185\ngithub.com/gin-gonic/gin.(*Engine).handleHTTPRequest\n\tgithub.com/gin-gonic/gin@v1.10.1/gin.go:644\ngithub.com/gin-gonic/gin.(*Engine).ServeHTTP\n\tgithub.com/gin-gonic/gin@v1.10.1/gin.go:600\nnet/http.serverHandler.ServeHTTP\n\tnet/http/server.go:3340\nnet/http.(*conn).serve\n\tnet/http/server.go:2109"} [GIN] 2026/04/21 - 15:09:59 | 500 | 96.527µs | 100.64.0.4 | POST "/v1/api-keys" [GIN] 2026/04/21 - 15:10:02 | 200 | 25.608µs | 10.134.0.2 | GET "/health" [GIN] 2026/04/21 - 15:10:03 | 200 | 27.613µs | 10.134.0.2 | GET "/health" {"level":"error","timestamp":"2026-04-21T15:10:04.977Z","caller":"token/handler.go:95","message":"Failed to parse group header","header":"X-MaaS-Group","header_value":"","error":"failed to parse header as JSON array: invalid character '<' looking for beginning of value","stacktrace":"main.registerHandlers.(*Handler).ExtractUserInfo.func4\n\tgithub.com/opendatahub-io/models-as-a-service/maas-api/internal/token/handler.go:95\ngithub.com/gin-gonic/gin.(*Context).Next\n\tgithub.com/gin-gonic/gin@v1.10.1/context.go:185\ngithub.com/gin-gonic/gin.CustomRecoveryWithWriter.func1\n\tgithub.com/gin-gonic/gin@v1.10.1/recovery.go:102\ngithub.com/gin-gonic/gin.(*Context).Next\n\tgithub.com/gin-gonic/gin@v1.10.1/context.go:185\ngithub.com/gin-gonic/gin.LoggerWithConfig.func1\n\tgithub.com/gin-gonic/gin@v1.10.1/logger.go:249\ngithub.com/gin-gonic/gin.(*Context).Next\n\tgithub.com/gin-gonic/gin@v1.10.1/context.go:185\ngithub.com/gin-gonic/gin.(*Engine).handleHTTPRequest\n\tgithub.com/gin-gonic/gin@v1.10.1/gin.go:644\ngithub.com/gin-gonic/gin.(*Engine).ServeHTTP\n\tgithub.com/gin-gonic/gin@v1.10.1/gin.go:600\nnet/http.serverHandler.ServeHTTP\n\tnet/http/server.go:3340\nnet/http.(*conn).serve\n\tnet/http/server.go:2109"} [GIN] 2026/04/21 - 15:10:04 | 500 | 90.11µs | 100.64.0.3 | POST "/v1/api-keys" [GIN] 2026/04/21 - 15:10:07 | 200 | 30.075µs | 10.134.0.2 | GET "/health" {"level":"error","timestamp":"2026-04-21T15:10:10.008Z","caller":"token/handler.go:95","message":"Failed to parse group header","header":"X-MaaS-Group","header_value":"","error":"failed to parse header as JSON array: invalid character '<' looking for beginning of value","stacktrace":"main.registerHandlers.(*Handler).ExtractUserInfo.func4\n\tgithub.com/opendatahub-io/models-as-a-service/maas-api/internal/token/handler.go:95\ngithub.com/gin-gonic/gin.(*Context).Next\n\tgithub.com/gin-gonic/gin@v1.10.1/context.go:185\ngithub.com/gin-gonic/gin.CustomRecoveryWithWriter.func1\n\tgithub.com/gin-gonic/gin@v1.10.1/recovery.go:102\ngithub.com/gin-gonic/gin.(*Context).Next\n\tgithub.com/gin-gonic/gin@v1.10.1/context.go:185\ngithub.com/gin-gonic/gin.LoggerWithConfig.func1\n\tgithub.com/gin-gonic/gin@v1.10.1/logger.go:249\ngithub.com/gin-gonic/gin.(*Context).Next\n\tgithub.com/gin-gonic/gin@v1.10.1/context.go:185\ngithub.com/gin-gonic/gin.(*Engine).handleHTTPRequest\n\tgithub.com/gin-gonic/gin@v1.10.1/gin.go:644\ngithub.com/gin-gonic/gin.(*Engine).ServeHTTP\n\tgithub.com/gin-gonic/gin@v1.10.1/gin.go:600\nnet/http.serverHandler.ServeHTTP\n\tnet/http/server.go:3340\nnet/http.(*conn).serve\n\tnet/http/server.go:2109"} [GIN] 2026/04/21 - 15:10:10 | 500 | 84.554µs | 100.64.0.4 | POST "/v1/api-keys" [GIN] 2026/04/21 - 15:10:12 | 200 | 26.325µs | 10.134.0.2 | GET "/health" [GIN] 2026/04/21 - 15:10:13 | 200 | 26.118µs | 10.134.0.2 | GET "/health" {"level":"info","timestamp":"2026-04-21T15:10:15.043Z","caller":"api_keys/service.go:150","message":"Created API key","user":"alice_lead","groups":["system:authenticated","Engineering","Project-Alpha"],"id":"5c97a209-7817-4228-9024-9738caaa06e5","ephemeral":false} {"level":"info","timestamp":"2026-04-21T15:10:15.043Z","caller":"api_keys/handler.go:222","message":"Created API key","keyId":"5c97a209-7817-4228-9024-9738caaa06e5","keyPrefix":"sk-oai-qECpb0AQSWjx...","username":"alice_lead","groups":["system:authenticated","Engineering","Project-Alpha"],"ephemeral":false} [GIN] 2026/04/21 - 15:10:15 | 201 | 2.413286ms | 100.64.0.4 | POST "/v1/api-keys" [GIN] 2026/04/21 - 15:10:15 | 200 | 577.997µs | 10.134.0.48 | POST "/internal/v1/api-keys/validate" [GIN] 2026/04/21 - 15:10:15 | 200 | 485.296µs | 10.134.0.48 | POST "/internal/v1/api-keys/validate" [GIN] 2026/04/21 - 15:10:15 | 200 | 148.415µs | 10.134.0.48 | POST "/internal/v1/subscriptions/select" [GIN] 2026/04/21 - 15:10:15 | 200 | 11.796474ms | 100.64.0.3 | GET "/v1/models" [GIN] 2026/04/21 - 15:10:15 | 200 | 484.444µs | 10.134.0.48 | POST "/internal/v1/api-keys/validate" [GIN] 2026/04/21 - 15:10:15 | 200 | 441.255µs | 10.134.0.48 | POST "/internal/v1/api-keys/validate" [GIN] 2026/04/21 - 15:10:15 | 200 | 98.145µs | 10.134.0.48 | POST "/internal/v1/subscriptions/select" [GIN] 2026/04/21 - 15:10:15 | 200 | 9.806375ms | 100.64.0.3 | GET "/v1/models" {"level":"error","timestamp":"2026-04-21T15:10:15.203Z","caller":"token/handler.go:95","message":"Failed to parse group header","header":"X-MaaS-Group","header_value":"","error":"failed to parse header as JSON array: invalid character '<' looking for beginning of value","stacktrace":"main.registerHandlers.(*Handler).ExtractUserInfo.func4\n\tgithub.com/opendatahub-io/models-as-a-service/maas-api/internal/token/handler.go:95\ngithub.com/gin-gonic/gin.(*Context).Next\n\tgithub.com/gin-gonic/gin@v1.10.1/context.go:185\ngithub.com/gin-gonic/gin.CustomRecoveryWithWriter.func1\n\tgithub.com/gin-gonic/gin@v1.10.1/recovery.go:102\ngithub.com/gin-gonic/gin.(*Context).Next\n\tgithub.com/gin-gonic/gin@v1.10.1/context.go:185\ngithub.com/gin-gonic/gin.LoggerWithConfig.func1\n\tgithub.com/gin-gonic/gin@v1.10.1/logger.go:249\ngithub.com/gin-gonic/gin.(*Context).Next\n\tgithub.com/gin-gonic/gin@v1.10.1/context.go:185\ngithub.com/gin-gonic/gin.(*Engine).handleHTTPRequest\n\tgithub.com/gin-gonic/gin@v1.10.1/gin.go:644\ngithub.com/gin-gonic/gin.(*Engine).ServeHTTP\n\tgithub.com/gin-gonic/gin@v1.10.1/gin.go:600\nnet/http.serverHandler.ServeHTTP\n\tnet/http/server.go:3340\nnet/http.(*conn).serve\n\tnet/http/server.go:2109"} [GIN] 2026/04/21 - 15:10:15 | 500 | 89.851µs | 100.64.0.2 | POST "/v1/api-keys" [GIN] 2026/04/21 - 15:10:17 | 200 | 34.699µs | 10.134.0.2 | GET "/health" {"level":"info","timestamp":"2026-04-21T15:10:20.232Z","caller":"api_keys/service.go:150","message":"Created API key","user":"bob_sre","groups":["system:authenticated","Engineering","Project-Alpha"],"id":"e26d253d-fb87-4478-8eb9-2488e04c5b36","ephemeral":false} {"level":"info","timestamp":"2026-04-21T15:10:20.232Z","caller":"api_keys/handler.go:222","message":"Created API key","keyId":"e26d253d-fb87-4478-8eb9-2488e04c5b36","keyPrefix":"sk-oai-gkcOQzi1GFst...","username":"bob_sre","groups":["system:authenticated","Engineering","Project-Alpha"],"ephemeral":false} [GIN] 2026/04/21 - 15:10:20 | 201 | 2.080277ms | 100.64.0.4 | POST "/v1/api-keys" [GIN] 2026/04/21 - 15:10:22 | 200 | 27.285µs | 10.134.0.2 | GET "/health" [GIN] 2026/04/21 - 15:10:23 | 200 | 27.901µs | 10.134.0.2 | GET "/health"