{"level":"info","timestamp":"2026-06-10T19:33:50.434Z","caller":"cmd/main.go:65","message":"Loading database connection URL from secret..."} {"level":"info","timestamp":"2026-06-10T19:33:50.447Z","caller":"cmd/main.go:172","message":"Connecting to PostgreSQL database..."} {"level":"info","timestamp":"2026-06-10T19:33:50.447Z","caller":"cmd/main.go:101","message":"Metrics server starting","address":":9090"} {"level":"info","timestamp":"2026-06-10T19:33:50.618Z","caller":"api_keys/db_driver.go:90","message":"Database schema applied","version":4} {"level":"info","timestamp":"2026-06-10T19:33:50.618Z","caller":"api_keys/db_driver.go:57","message":"Connected to PostgreSQL database (schema applied)"} {"level":"info","timestamp":"2026-06-10T19:33:50.724Z","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-10T19:33:50.740Z","caller":"cmd/main.go:134","message":"Server starting","address":":8443","secure":true} [GIN] 2026/06/10 - 19:33:57 | 200 | 60.698µs | 10.133.0.2 | GET "/health" [GIN] 2026/06/10 - 19:34:02 | 200 | 64.432µs | 10.133.0.2 | GET "/health" [GIN] 2026/06/10 - 19:34:07 | 200 | 33.362µs | 10.133.0.2 | GET "/health" [GIN] 2026/06/10 - 19:34:12 | 200 | 47.302µs | 10.133.0.2 | GET "/health" [GIN] 2026/06/10 - 19:34:17 | 200 | 35.395µs | 10.133.0.2 | GET "/health" [GIN] 2026/06/10 - 19:34:22 | 200 | 32.101µs | 10.133.0.2 | GET "/health" [GIN] 2026/06/10 - 19:34:26 | 200 | 33.112µs | 10.133.0.2 | GET "/health" [GIN] 2026/06/10 - 19:34:27 | 200 | 31.565µs | 10.133.0.2 | GET "/health" [GIN] 2026/06/10 - 19:34:32 | 200 | 34.969µs | 10.133.0.2 | GET "/health" [GIN] 2026/06/10 - 19:34:36 | 200 | 34.272µs | 10.133.0.2 | GET "/health" [GIN] 2026/06/10 - 19:34:37 | 200 | 34.573µs | 10.133.0.2 | GET "/health" [GIN] 2026/06/10 - 19:34:42 | 200 | 39.616µs | 10.133.0.2 | GET "/health" [GIN] 2026/06/10 - 19:34:46 | 200 | 38.567µs | 10.133.0.2 | GET "/health" [GIN] 2026/06/10 - 19:34:47 | 200 | 40.253µs | 10.133.0.2 | GET "/health" [GIN] 2026/06/10 - 19:34:52 | 200 | 33.71µs | 10.133.0.2 | GET "/health" [GIN] 2026/06/10 - 19:34:56 | 200 | 34.804µs | 10.133.0.2 | GET "/health" [GIN] 2026/06/10 - 19:34:57 | 200 | 34.703µs | 10.133.0.2 | GET "/health" [GIN] 2026/06/10 - 19:35:02 | 200 | 35.537µs | 10.133.0.2 | GET "/health" [GIN] 2026/06/10 - 19:35:06 | 200 | 34.288µs | 10.133.0.2 | GET "/health" [GIN] 2026/06/10 - 19:35:07 | 200 | 34.308µs | 10.133.0.2 | GET "/health" [GIN] 2026/06/10 - 19:35:12 | 200 | 33.4µs | 10.133.0.2 | GET "/health" [GIN] 2026/06/10 - 19:35:16 | 200 | 34.173µs | 10.133.0.2 | GET "/health" [GIN] 2026/06/10 - 19:35:17 | 200 | 45.154µs | 10.133.0.2 | GET "/health" [GIN] 2026/06/10 - 19:35:22 | 200 | 33.831µs | 10.133.0.2 | GET "/health" [GIN] 2026/06/10 - 19:35:26 | 200 | 41.794µs | 10.133.0.2 | GET "/health" [GIN] 2026/06/10 - 19:35:27 | 200 | 31.946µs | 10.133.0.2 | GET "/health" [GIN] 2026/06/10 - 19:35:32 | 200 | 36.651µs | 10.133.0.2 | GET "/health" [GIN] 2026/06/10 - 19:35:36 | 200 | 34.404µs | 10.133.0.2 | GET "/health" [GIN] 2026/06/10 - 19:35:37 | 200 | 38.196µs | 10.133.0.2 | GET "/health" [GIN] 2026/06/10 - 19:35:42 | 200 | 33.681µs | 10.133.0.2 | GET "/health" [GIN] 2026/06/10 - 19:35:46 | 200 | 33.856µs | 10.133.0.2 | GET "/health" [GIN] 2026/06/10 - 19:35:47 | 200 | 34.562µs | 10.133.0.2 | GET "/health" [GIN] 2026/06/10 - 19:35:52 | 200 | 36.393µs | 10.133.0.2 | GET "/health" [GIN] 2026/06/10 - 19:35:56 | 200 | 35.276µs | 10.133.0.2 | GET "/health" [GIN] 2026/06/10 - 19:35:57 | 200 | 32.658µs | 10.133.0.2 | GET "/health" [GIN] 2026/06/10 - 19:36:02 | 200 | 37.004µs | 10.133.0.2 | GET "/health" [GIN] 2026/06/10 - 19:36:06 | 200 | 41.949µs | 10.133.0.2 | GET "/health" [GIN] 2026/06/10 - 19:36:07 | 200 | 43.301µs | 10.133.0.2 | GET "/health" [GIN] 2026/06/10 - 19:36:12 | 200 | 41.395µs | 10.133.0.2 | GET "/health" [GIN] 2026/06/10 - 19:36:16 | 200 | 40.1µs | 10.133.0.2 | GET "/health" [GIN] 2026/06/10 - 19:36:17 | 200 | 33.072µs | 10.133.0.2 | GET "/health" [GIN] 2026/06/10 - 19:36:22 | 200 | 43.074µs | 10.133.0.2 | GET "/health" [GIN] 2026/06/10 - 19:36:26 | 200 | 33.722µs | 10.133.0.2 | GET "/health" [GIN] 2026/06/10 - 19:36:27 | 200 | 33.79µs | 10.133.0.2 | GET "/health" [GIN] 2026/06/10 - 19:36:32 | 200 | 34.807µs | 10.133.0.2 | GET "/health" [GIN] 2026/06/10 - 19:36:36 | 200 | 34.033µs | 10.133.0.2 | GET "/health" [GIN] 2026/06/10 - 19:36:37 | 200 | 34.007µs | 10.133.0.2 | GET "/health" [GIN] 2026/06/10 - 19:36:42 | 200 | 38.201µs | 10.133.0.2 | GET "/health" [GIN] 2026/06/10 - 19:36:46 | 200 | 33.432µs | 10.133.0.2 | GET "/health" [GIN] 2026/06/10 - 19:36:47 | 200 | 33.233µs | 10.133.0.2 | GET "/health" [GIN] 2026/06/10 - 19:36:52 | 200 | 36.351µs | 10.133.0.2 | GET "/health" [GIN] 2026/06/10 - 19:36:56 | 200 | 35.099µs | 10.133.0.2 | GET "/health" [GIN] 2026/06/10 - 19:36:57 | 200 | 34.714µs | 10.133.0.2 | GET "/health" [GIN] 2026/06/10 - 19:37:02 | 200 | 38.406µs | 10.133.0.2 | GET "/health" [GIN] 2026/06/10 - 19:37:06 | 200 | 32.464µs | 10.133.0.2 | GET "/health" [GIN] 2026/06/10 - 19:37:07 | 200 | 34.123µs | 10.133.0.2 | GET "/health" [GIN] 2026/06/10 - 19:37:12 | 200 | 35.284µs | 10.133.0.2 | GET "/health" [GIN] 2026/06/10 - 19:37:16 | 200 | 35.703µs | 10.133.0.2 | GET "/health" [GIN] 2026/06/10 - 19:37:17 | 200 | 32.496µs | 10.133.0.2 | GET "/health" [GIN] 2026/06/10 - 19:37:22 | 200 | 31.954µs | 10.133.0.2 | GET "/health" [GIN] 2026/06/10 - 19:37:26 | 200 | 31.896µs | 10.133.0.2 | GET "/health" [GIN] 2026/06/10 - 19:37:27 | 200 | 34.051µs | 10.133.0.2 | GET "/health" [GIN] 2026/06/10 - 19:37:32 | 200 | 37.193µs | 10.133.0.2 | GET "/health" [GIN] 2026/06/10 - 19:37:36 | 200 | 39.311µs | 10.133.0.2 | GET "/health" [GIN] 2026/06/10 - 19:37:37 | 200 | 38.797µs | 10.133.0.2 | GET "/health" [GIN] 2026/06/10 - 19:37:42 | 200 | 36.644µs | 10.133.0.2 | GET "/health" [GIN] 2026/06/10 - 19:37:46 | 200 | 34.439µs | 10.133.0.2 | GET "/health" [GIN] 2026/06/10 - 19:37:47 | 200 | 37.726µs | 10.133.0.2 | GET "/health" [GIN] 2026/06/10 - 19:37:52 | 200 | 60.455µs | 10.133.0.2 | GET "/health" [GIN] 2026/06/10 - 19:37:56 | 200 | 34.268µs | 10.133.0.2 | GET "/health" [GIN] 2026/06/10 - 19:37:57 | 200 | 35.868µs | 10.133.0.2 | GET "/health" [GIN] 2026/06/10 - 19:38:02 | 200 | 37.043µs | 10.133.0.2 | GET "/health" [GIN] 2026/06/10 - 19:38:06 | 200 | 37.06µs | 10.133.0.2 | GET "/health" [GIN] 2026/06/10 - 19:38:07 | 200 | 40.262µs | 10.133.0.2 | GET "/health" [GIN] 2026/06/10 - 19:38:12 | 200 | 38.124µs | 10.133.0.2 | GET "/health" [GIN] 2026/06/10 - 19:38:16 | 200 | 32.585µs | 10.133.0.2 | GET "/health" [GIN] 2026/06/10 - 19:38:17 | 200 | 57.579µs | 10.133.0.2 | GET "/health" [GIN] 2026/06/10 - 19:38:22 | 200 | 40.874µs | 10.133.0.2 | GET "/health" [GIN] 2026/06/10 - 19:38:26 | 200 | 33.719µs | 10.133.0.2 | GET "/health" [GIN] 2026/06/10 - 19:38:27 | 200 | 40.747µs | 10.133.0.2 | GET "/health" [GIN] 2026/06/10 - 19:38:32 | 200 | 43.449µs | 10.133.0.2 | GET "/health" [GIN] 2026/06/10 - 19:38:36 | 200 | 40.695µs | 10.133.0.2 | GET "/health" [GIN] 2026/06/10 - 19:38:37 | 200 | 38.155µs | 10.133.0.2 | GET "/health" [GIN] 2026/06/10 - 19:38:42 | 200 | 66.048µs | 10.133.0.2 | GET "/health" [GIN] 2026/06/10 - 19:38:46 | 200 | 41.504µs | 10.133.0.2 | GET "/health" [GIN] 2026/06/10 - 19:38:47 | 200 | 37.434µs | 10.133.0.2 | GET "/health" {"level":"info","timestamp":"2026-06-10T19:38:51.347Z","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":"a68b80b3-7924-42e9-9b57-3444d0cb29bd","ephemeral":false} {"level":"info","timestamp":"2026-06-10T19:38:51.347Z","caller":"api_keys/handler.go:225","message":"Created API key","keyId":"a68b80b3-7924-42e9-9b57-3444d0cb29bd","keyPrefix":"sk-oai-1QzLX8phAgFL...","username":"system:serviceaccount:maas-admin:tester-admin-user","groups":["system:serviceaccounts","system:serviceaccounts:maas-admin","system:authenticated"],"ephemeral":false} [GIN] 2026/06/10 - 19:38:51 | 201 | 13.853275ms | 52.71.36.72 | POST "/v1/api-keys" | Authorization=present X-Api-Key=absent Cookie=absent Set-Cookie=absent [GIN] 2026/06/10 - 19:38:51 | 200 | 1.199564ms | 10.134.0.35 | POST "/internal/v1/api-keys/validate" [GIN] 2026/06/10 - 19:38:51 | 200 | 508.455µs | 10.134.0.35 | POST "/internal/v1/api-keys/validate" [GIN] 2026/06/10 - 19:38:51 | 200 | 240.374µs | 10.134.0.35 | POST "/internal/v1/subscriptions/select" [GIN] 2026/06/10 - 19:38:51 | 200 | 44.139773ms | 52.71.36.72 | GET "/v1/models" | Authorization=present X-Api-Key=absent Cookie=absent Set-Cookie=absent {"level":"info","timestamp":"2026-06-10T19:38:51.696Z","caller":"api_keys/store_postgres.go:468","message":"Revoked API key","id":"a68b80b3-7924-42e9-9b57-3444d0cb29bd"} {"level":"info","timestamp":"2026-06-10T19:38:51.696Z","caller":"api_keys/handler.go:326","message":"Revoked API key","keyId":"a68b80b3-7924-42e9-9b57-3444d0cb29bd","revokedBy":"system:serviceaccount:maas-admin:tester-admin-user"} [GIN] 2026/06/10 - 19:38:51 | 200 | 2.87369ms | 52.71.36.72 | DELETE "/v1/api-keys/a68b80b3-7924-42e9-9b57-3444d0cb29bd" | Authorization=present X-Api-Key=absent Cookie=absent Set-Cookie=absent [GIN] 2026/06/10 - 19:38:52 | 200 | 37.757µs | 10.133.0.2 | GET "/health" [GIN] 2026/06/10 - 19:38:56 | 200 | 32.191µs | 10.133.0.2 | GET "/health" [GIN] 2026/06/10 - 19:38:57 | 200 | 39.456µs | 10.133.0.2 | GET "/health" [GIN] 2026/06/10 - 19:39:02 | 200 | 38.549µs | 10.133.0.2 | GET "/health" [GIN] 2026/06/10 - 19:39:06 | 200 | 39.069µs | 10.133.0.2 | GET "/health" [GIN] 2026/06/10 - 19:39:07 | 200 | 41.569µs | 10.133.0.2 | GET "/health" [GIN] 2026/06/10 - 19:39:12 | 200 | 41.425µs | 10.133.0.2 | GET "/health" [GIN] 2026/06/10 - 19:39:16 | 200 | 46.687µs | 10.133.0.2 | GET "/health" [GIN] 2026/06/10 - 19:39:17 | 200 | 72.096µs | 10.133.0.2 | GET "/health" [GIN] 2026/06/10 - 19:39:22 | 200 | 40.963µs | 10.133.0.2 | GET "/health" {"level":"info","timestamp":"2026-06-10T19:39:24.319Z","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":"45c8d96e-d9e2-4482-a7cc-450d5820ee52","ephemeral":false} {"level":"info","timestamp":"2026-06-10T19:39:24.319Z","caller":"api_keys/handler.go:225","message":"Created API key","keyId":"45c8d96e-d9e2-4482-a7cc-450d5820ee52","keyPrefix":"sk-oai-UnQ18bSC6kgJ...","username":"system:serviceaccount:maas-admin:tester-admin-user","groups":["system:serviceaccounts","system:serviceaccounts:maas-admin","system:authenticated"],"ephemeral":false} [GIN] 2026/06/10 - 19:39:24 | 201 | 2.024247ms | 52.71.36.72 | POST "/v1/api-keys" | Authorization=present X-Api-Key=absent Cookie=absent Set-Cookie=absent [GIN] 2026/06/10 - 19:39:24 | 200 | 526.508µs | 10.134.0.35 | POST "/internal/v1/api-keys/validate" [GIN] 2026/06/10 - 19:39:24 | 200 | 380.422µs | 10.134.0.35 | POST "/internal/v1/api-keys/validate" [GIN] 2026/06/10 - 19:39:24 | 200 | 118.561µs | 10.134.0.35 | POST "/internal/v1/subscriptions/select" [GIN] 2026/06/10 - 19:39:24 | 200 | 10.228425ms | 52.71.36.72 | GET "/v1/models" | Authorization=present X-Api-Key=absent Cookie=absent Set-Cookie=absent {"level":"info","timestamp":"2026-06-10T19:39:24.609Z","caller":"api_keys/store_postgres.go:468","message":"Revoked API key","id":"45c8d96e-d9e2-4482-a7cc-450d5820ee52"} {"level":"info","timestamp":"2026-06-10T19:39:24.609Z","caller":"api_keys/handler.go:326","message":"Revoked API key","keyId":"45c8d96e-d9e2-4482-a7cc-450d5820ee52","revokedBy":"system:serviceaccount:maas-admin:tester-admin-user"} [GIN] 2026/06/10 - 19:39:24 | 200 | 2.275745ms | 52.71.36.72 | DELETE "/v1/api-keys/45c8d96e-d9e2-4482-a7cc-450d5820ee52" | Authorization=present X-Api-Key=absent Cookie=absent Set-Cookie=absent [GIN] 2026/06/10 - 19:39:26 | 200 | 32.134µs | 10.133.0.2 | GET "/health" [GIN] 2026/06/10 - 19:39:27 | 200 | 43.645µs | 10.133.0.2 | GET "/health"