{"level":"info","timestamp":"2026-06-05T15:45:21.710Z","caller":"cmd/main.go:65","message":"Loading database connection URL from secret..."} {"level":"info","timestamp":"2026-06-05T15:45:21.727Z","caller":"cmd/main.go:172","message":"Connecting to PostgreSQL database..."} {"level":"info","timestamp":"2026-06-05T15:45:21.728Z","caller":"cmd/main.go:101","message":"Metrics server starting","address":":9090"} {"level":"info","timestamp":"2026-06-05T15:45:21.830Z","caller":"api_keys/db_driver.go:90","message":"Database schema applied","version":3} {"level":"info","timestamp":"2026-06-05T15:45:21.830Z","caller":"api_keys/db_driver.go:57","message":"Connected to PostgreSQL database (schema applied)"} {"level":"info","timestamp":"2026-06-05T15:45:21.935Z","caller":"cmd/main.go:193","message":"Resolved gateway internal host for access probes","host":"maas-default-gateway-openshift-default.openshift-ingress.svc.cluster.local"} {"level":"info","timestamp":"2026-06-05T15:45:22.008Z","caller":"cmd/main.go:134","message":"Server starting","address":":8443","secure":true} [GIN] 2026/06/05 - 15:45:27 | 200 | 53.601µs | 10.133.0.2 | GET "/health" [GIN] 2026/06/05 - 15:45:32 | 200 | 35.894µs | 10.133.0.2 | GET "/health" [GIN] 2026/06/05 - 15:45:37 | 200 | 32.871µs | 10.133.0.2 | GET "/health" [GIN] 2026/06/05 - 15:45:42 | 200 | 40.774µs | 10.133.0.2 | GET "/health" [GIN] 2026/06/05 - 15:45:47 | 200 | 44.56µs | 10.133.0.2 | GET "/health" [GIN] 2026/06/05 - 15:45:52 | 200 | 38.527µs | 10.133.0.2 | GET "/health" [GIN] 2026/06/05 - 15:45:57 | 200 | 40.434µs | 10.133.0.2 | GET "/health" [GIN] 2026/06/05 - 15:45:59 | 200 | 54.341µs | 10.133.0.2 | GET "/health" [GIN] 2026/06/05 - 15:46:02 | 200 | 30.848µs | 10.133.0.2 | GET "/health" [GIN] 2026/06/05 - 15:46:07 | 200 | 32.553µs | 10.133.0.2 | GET "/health" [GIN] 2026/06/05 - 15:46:09 | 200 | 31.897µs | 10.133.0.2 | GET "/health" [GIN] 2026/06/05 - 15:46:12 | 200 | 33.792µs | 10.133.0.2 | GET "/health" [GIN] 2026/06/05 - 15:46:17 | 200 | 35.858µs | 10.133.0.2 | GET "/health" [GIN] 2026/06/05 - 15:46:19 | 200 | 47.073µs | 10.133.0.2 | GET "/health" [GIN] 2026/06/05 - 15:46:22 | 200 | 32.171µs | 10.133.0.2 | GET "/health" [GIN] 2026/06/05 - 15:46:27 | 200 | 33.939µs | 10.133.0.2 | GET "/health" [GIN] 2026/06/05 - 15:46:29 | 200 | 33.135µs | 10.133.0.2 | GET "/health" [GIN] 2026/06/05 - 15:46:32 | 200 | 37.093µs | 10.133.0.2 | GET "/health" [GIN] 2026/06/05 - 15:46:37 | 200 | 36.654µs | 10.133.0.2 | GET "/health" [GIN] 2026/06/05 - 15:46:39 | 200 | 37.587µs | 10.133.0.2 | GET "/health" [GIN] 2026/06/05 - 15:46:42 | 200 | 34.487µs | 10.133.0.2 | GET "/health" [GIN] 2026/06/05 - 15:46:47 | 200 | 53.961µs | 10.133.0.2 | GET "/health" [GIN] 2026/06/05 - 15:46:49 | 200 | 39.762µs | 10.133.0.2 | GET "/health" [GIN] 2026/06/05 - 15:46:52 | 200 | 308.648µs | 10.133.0.2 | GET "/health" [GIN] 2026/06/05 - 15:46:57 | 200 | 46.96µs | 10.133.0.2 | GET "/health" [GIN] 2026/06/05 - 15:46:59 | 200 | 38.546µs | 10.133.0.2 | GET "/health" [GIN] 2026/06/05 - 15:47:02 | 200 | 32.421µs | 10.133.0.2 | GET "/health" [GIN] 2026/06/05 - 15:47:07 | 200 | 38.005µs | 10.133.0.2 | GET "/health" [GIN] 2026/06/05 - 15:47:09 | 200 | 36.771µs | 10.133.0.2 | GET "/health" [GIN] 2026/06/05 - 15:47:12 | 200 | 49.56µs | 10.133.0.2 | GET "/health" [GIN] 2026/06/05 - 15:47:17 | 200 | 37.073µs | 10.133.0.2 | GET "/health" [GIN] 2026/06/05 - 15:47:19 | 200 | 37.48µs | 10.133.0.2 | GET "/health" [GIN] 2026/06/05 - 15:47:22 | 200 | 36.04µs | 10.133.0.2 | GET "/health" [GIN] 2026/06/05 - 15:47:27 | 200 | 44.928µs | 10.133.0.2 | GET "/health" [GIN] 2026/06/05 - 15:47:29 | 200 | 31.718µs | 10.133.0.2 | GET "/health" [GIN] 2026/06/05 - 15:47:32 | 200 | 37.15µs | 10.133.0.2 | GET "/health" [GIN] 2026/06/05 - 15:47:37 | 200 | 34.193µs | 10.133.0.2 | GET "/health" [GIN] 2026/06/05 - 15:47:39 | 200 | 41.302µs | 10.133.0.2 | GET "/health" [GIN] 2026/06/05 - 15:47:42 | 200 | 31.761µs | 10.133.0.2 | GET "/health" [GIN] 2026/06/05 - 15:47:47 | 200 | 32.433µs | 10.133.0.2 | GET "/health" [GIN] 2026/06/05 - 15:47:49 | 200 | 42.084µs | 10.133.0.2 | GET "/health" [GIN] 2026/06/05 - 15:47:52 | 200 | 31.958µs | 10.133.0.2 | GET "/health" [GIN] 2026/06/05 - 15:47:57 | 200 | 31.166µs | 10.133.0.2 | GET "/health" [GIN] 2026/06/05 - 15:47:59 | 200 | 34.845µs | 10.133.0.2 | GET "/health" [GIN] 2026/06/05 - 15:48:02 | 200 | 31.849µs | 10.133.0.2 | GET "/health" [GIN] 2026/06/05 - 15:48:07 | 200 | 40.211µs | 10.133.0.2 | GET "/health" [GIN] 2026/06/05 - 15:48:09 | 200 | 42.723µs | 10.133.0.2 | GET "/health" [GIN] 2026/06/05 - 15:48:12 | 200 | 34.25µs | 10.133.0.2 | GET "/health" [GIN] 2026/06/05 - 15:48:17 | 200 | 35.643µs | 10.133.0.2 | GET "/health" [GIN] 2026/06/05 - 15:48:19 | 200 | 51.572µs | 10.133.0.2 | GET "/health" [GIN] 2026/06/05 - 15:48:22 | 200 | 36.063µs | 10.133.0.2 | GET "/health" [GIN] 2026/06/05 - 15:48:27 | 200 | 33.812µs | 10.133.0.2 | GET "/health" [GIN] 2026/06/05 - 15:48:29 | 200 | 33.857µs | 10.133.0.2 | GET "/health" [GIN] 2026/06/05 - 15:48:32 | 200 | 43.479µs | 10.133.0.2 | GET "/health" [GIN] 2026/06/05 - 15:48:37 | 200 | 34.717µs | 10.133.0.2 | GET "/health" [GIN] 2026/06/05 - 15:48:39 | 200 | 33.849µs | 10.133.0.2 | GET "/health" [GIN] 2026/06/05 - 15:48:42 | 200 | 35.383µs | 10.133.0.2 | GET "/health" [GIN] 2026/06/05 - 15:48:47 | 200 | 40.793µs | 10.133.0.2 | GET "/health" [GIN] 2026/06/05 - 15:48:49 | 200 | 33.714µs | 10.133.0.2 | GET "/health" [GIN] 2026/06/05 - 15:48:52 | 200 | 33.03µs | 10.133.0.2 | GET "/health" [GIN] 2026/06/05 - 15:48:57 | 200 | 37.644µs | 10.133.0.2 | GET "/health" [GIN] 2026/06/05 - 15:48:59 | 200 | 38.919µs | 10.133.0.2 | GET "/health" [GIN] 2026/06/05 - 15:49:02 | 200 | 32.529µs | 10.133.0.2 | GET "/health" [GIN] 2026/06/05 - 15:49:07 | 200 | 33.639µs | 10.133.0.2 | GET "/health" [GIN] 2026/06/05 - 15:49:09 | 200 | 42.242µs | 10.133.0.2 | GET "/health" [GIN] 2026/06/05 - 15:49:12 | 200 | 34.214µs | 10.133.0.2 | GET "/health" [GIN] 2026/06/05 - 15:49:17 | 200 | 31.801µs | 10.133.0.2 | GET "/health" [GIN] 2026/06/05 - 15:49:19 | 200 | 36.214µs | 10.133.0.2 | GET "/health" [GIN] 2026/06/05 - 15:49:22 | 200 | 31.7µs | 10.133.0.2 | GET "/health" [GIN] 2026/06/05 - 15:49:27 | 200 | 32.757µs | 10.133.0.2 | GET "/health" [GIN] 2026/06/05 - 15:49:29 | 200 | 33.135µs | 10.133.0.2 | GET "/health" [GIN] 2026/06/05 - 15:49:32 | 200 | 33.052µs | 10.133.0.2 | GET "/health" [GIN] 2026/06/05 - 15:49:37 | 200 | 33.704µs | 10.133.0.2 | GET "/health" [GIN] 2026/06/05 - 15:49:39 | 200 | 31.742µs | 10.133.0.2 | GET "/health" [GIN] 2026/06/05 - 15:49:42 | 200 | 33.782µs | 10.133.0.2 | GET "/health" [GIN] 2026/06/05 - 15:49:47 | 200 | 36.779µs | 10.133.0.2 | GET "/health" [GIN] 2026/06/05 - 15:49:49 | 200 | 34.166µs | 10.133.0.2 | GET "/health" [GIN] 2026/06/05 - 15:49:52 | 200 | 33.616µs | 10.133.0.2 | GET "/health" [GIN] 2026/06/05 - 15:49:57 | 200 | 37.801µs | 10.133.0.2 | GET "/health" [GIN] 2026/06/05 - 15:49:59 | 200 | 34.926µs | 10.133.0.2 | GET "/health" [GIN] 2026/06/05 - 15:50:02 | 200 | 34.811µs | 10.133.0.2 | GET "/health" [GIN] 2026/06/05 - 15:50:07 | 200 | 32.188µs | 10.133.0.2 | GET "/health" [GIN] 2026/06/05 - 15:50:09 | 200 | 38.012µs | 10.133.0.2 | GET "/health" [GIN] 2026/06/05 - 15:50:12 | 200 | 43.043µs | 10.133.0.2 | GET "/health" [GIN] 2026/06/05 - 15:50:17 | 200 | 37.335µs | 10.133.0.2 | GET "/health" [GIN] 2026/06/05 - 15:50:19 | 200 | 33.025µs | 10.133.0.2 | GET "/health" [GIN] 2026/06/05 - 15:50:22 | 200 | 32.002µs | 10.133.0.2 | GET "/health" [GIN] 2026/06/05 - 15:50:27 | 200 | 33.498µs | 10.133.0.2 | GET "/health" [GIN] 2026/06/05 - 15:50:29 | 200 | 39.879µs | 10.133.0.2 | GET "/health" [GIN] 2026/06/05 - 15:50:32 | 200 | 31.637µs | 10.133.0.2 | GET "/health" [GIN] 2026/06/05 - 15:50:37 | 200 | 36.244µs | 10.133.0.2 | GET "/health" [GIN] 2026/06/05 - 15:50:39 | 200 | 31.952µs | 10.133.0.2 | GET "/health" [GIN] 2026/06/05 - 15:50:42 | 200 | 30.49µs | 10.133.0.2 | GET "/health" [GIN] 2026/06/05 - 15:50:47 | 200 | 38.793µs | 10.133.0.2 | GET "/health" [GIN] 2026/06/05 - 15:50:49 | 200 | 36.974µs | 10.133.0.2 | GET "/health" [GIN] 2026/06/05 - 15:50:52 | 200 | 38.22µs | 10.133.0.2 | GET "/health" [GIN] 2026/06/05 - 15:50:57 | 200 | 40.815µs | 10.133.0.2 | GET "/health" [GIN] 2026/06/05 - 15:50:59 | 200 | 40.949µs | 10.133.0.2 | GET "/health" [GIN] 2026/06/05 - 15:51:02 | 200 | 37.062µs | 10.133.0.2 | GET "/health" [GIN] 2026/06/05 - 15:51:07 | 200 | 38.727µs | 10.133.0.2 | GET "/health" [GIN] 2026/06/05 - 15:51:09 | 200 | 40.514µs | 10.133.0.2 | GET "/health" [GIN] 2026/06/05 - 15:51:12 | 200 | 40.078µs | 10.133.0.2 | GET "/health" [GIN] 2026/06/05 - 15:51:17 | 200 | 39.423µs | 10.133.0.2 | GET "/health" [GIN] 2026/06/05 - 15:51:19 | 200 | 43.13µs | 10.133.0.2 | GET "/health" [GIN] 2026/06/05 - 15:51:22 | 200 | 45.67µs | 10.133.0.2 | GET "/health" [GIN] 2026/06/05 - 15:51:27 | 200 | 39.95µs | 10.133.0.2 | GET "/health" [GIN] 2026/06/05 - 15:51:29 | 200 | 38.719µs | 10.133.0.2 | GET "/health" [GIN] 2026/06/05 - 15:51:32 | 200 | 49.03µs | 10.133.0.2 | GET "/health" {"level":"info","timestamp":"2026-06-05T15:51:37.584Z","caller":"api_keys/service.go:150","message":"Created API key","user":"system:serviceaccount:maas-admin:tester-admin-user","groups":["system:serviceaccounts","system:serviceaccounts:maas-admin","system:authenticated"],"id":"295d5503-41bf-46fb-ab5e-3a2d141a08e9","ephemeral":false} {"level":"info","timestamp":"2026-06-05T15:51:37.584Z","caller":"api_keys/handler.go:225","message":"Created API key","keyId":"295d5503-41bf-46fb-ab5e-3a2d141a08e9","keyPrefix":"sk-oai-1W1ezE9HEaZx...","username":"system:serviceaccount:maas-admin:tester-admin-user","groups":["system:serviceaccounts","system:serviceaccounts:maas-admin","system:authenticated"],"ephemeral":false} [GIN] 2026/06/05 - 15:51:37 | 201 | 11.003404ms | 34.228.250.194 | POST "/v1/api-keys" | Authorization=present X-Api-Key=absent Cookie=absent Set-Cookie=absent [GIN] 2026/06/05 - 15:51:37 | 200 | 1.691409ms | 10.133.0.29 | POST "/internal/v1/api-keys/validate" [GIN] 2026/06/05 - 15:51:37 | 200 | 40.072µs | 10.133.0.2 | GET "/health" [GIN] 2026/06/05 - 15:51:38 | 200 | 747.885409ms | 34.228.250.194 | GET "/v1/models" | Authorization=present X-Api-Key=absent Cookie=absent Set-Cookie=absent {"level":"info","timestamp":"2026-06-05T15:51:38.462Z","caller":"api_keys/store_postgres.go:467","message":"Revoked API key","id":"295d5503-41bf-46fb-ab5e-3a2d141a08e9"} {"level":"info","timestamp":"2026-06-05T15:51:38.462Z","caller":"api_keys/handler.go:326","message":"Revoked API key","keyId":"295d5503-41bf-46fb-ab5e-3a2d141a08e9","revokedBy":"system:serviceaccount:maas-admin:tester-admin-user"} [GIN] 2026/06/05 - 15:51:38 | 200 | 3.233659ms | 34.228.250.194 | DELETE "/v1/api-keys/295d5503-41bf-46fb-ab5e-3a2d141a08e9" | Authorization=present X-Api-Key=absent Cookie=absent Set-Cookie=absent [GIN] 2026/06/05 - 15:51:39 | 200 | 41.521µs | 10.133.0.2 | GET "/health" [GIN] 2026/06/05 - 15:51:42 | 200 | 36.996µs | 10.133.0.2 | GET "/health" [GIN] 2026/06/05 - 15:51:47 | 200 | 38.022µs | 10.133.0.2 | GET "/health" [GIN] 2026/06/05 - 15:51:49 | 200 | 39.939µs | 10.133.0.2 | GET "/health" [GIN] 2026/06/05 - 15:51:52 | 200 | 39.723µs | 10.133.0.2 | GET "/health" [GIN] 2026/06/05 - 15:51:57 | 200 | 39.627µs | 10.133.0.2 | GET "/health" [GIN] 2026/06/05 - 15:51:59 | 200 | 38.529µs | 10.133.0.2 | GET "/health" [GIN] 2026/06/05 - 15:52:02 | 200 | 40.618µs | 10.133.0.2 | GET "/health" [GIN] 2026/06/05 - 15:52:07 | 200 | 44.768µs | 10.133.0.2 | GET "/health" [GIN] 2026/06/05 - 15:52:09 | 200 | 40.725µs | 10.133.0.2 | GET "/health" {"level":"info","timestamp":"2026-06-05T15:52:10.999Z","caller":"api_keys/service.go:150","message":"Created API key","user":"system:serviceaccount:maas-admin:tester-admin-user","groups":["system:serviceaccounts","system:serviceaccounts:maas-admin","system:authenticated"],"id":"79de6a39-5a7a-4c6e-bc14-19191d9d5a25","ephemeral":false} {"level":"info","timestamp":"2026-06-05T15:52:10.999Z","caller":"api_keys/handler.go:225","message":"Created API key","keyId":"79de6a39-5a7a-4c6e-bc14-19191d9d5a25","keyPrefix":"sk-oai-RkzISz0xuJaZ...","username":"system:serviceaccount:maas-admin:tester-admin-user","groups":["system:serviceaccounts","system:serviceaccounts:maas-admin","system:authenticated"],"ephemeral":false} [GIN] 2026/06/05 - 15:52:10 | 201 | 2.162698ms | 34.228.250.194 | POST "/v1/api-keys" | Authorization=present X-Api-Key=absent Cookie=absent Set-Cookie=absent [GIN] 2026/06/05 - 15:52:11 | 200 | 619.579µs | 10.133.0.29 | POST "/internal/v1/api-keys/validate" [GIN] 2026/06/05 - 15:52:11 | 200 | 779.221529ms | 34.228.250.194 | GET "/v1/models" | Authorization=present X-Api-Key=absent Cookie=absent Set-Cookie=absent {"level":"info","timestamp":"2026-06-05T15:52:11.881Z","caller":"api_keys/store_postgres.go:467","message":"Revoked API key","id":"79de6a39-5a7a-4c6e-bc14-19191d9d5a25"} {"level":"info","timestamp":"2026-06-05T15:52:11.881Z","caller":"api_keys/handler.go:326","message":"Revoked API key","keyId":"79de6a39-5a7a-4c6e-bc14-19191d9d5a25","revokedBy":"system:serviceaccount:maas-admin:tester-admin-user"} [GIN] 2026/06/05 - 15:52:11 | 200 | 2.39294ms | 34.228.250.194 | DELETE "/v1/api-keys/79de6a39-5a7a-4c6e-bc14-19191d9d5a25" | Authorization=present X-Api-Key=absent Cookie=absent Set-Cookie=absent [GIN] 2026/06/05 - 15:52:12 | 200 | 41.239µs | 10.133.0.2 | GET "/health"