{"level":"info","timestamp":"2026-06-14T20:32:20.161Z","caller":"cmd/main.go:65","message":"Loading database connection URL from secret..."} {"level":"info","timestamp":"2026-06-14T20:32:20.249Z","caller":"cmd/main.go:172","message":"Connecting to PostgreSQL database...","tenant":"models-as-a-service"} {"level":"info","timestamp":"2026-06-14T20:32:20.250Z","caller":"cmd/main.go:101","message":"Metrics server starting","address":":9090"} {"level":"info","timestamp":"2026-06-14T20:32:20.397Z","caller":"api_keys/db_driver.go:91","message":"Database schema applied","version":5} {"level":"info","timestamp":"2026-06-14T20:32:20.397Z","caller":"api_keys/db_driver.go:58","message":"Connected to PostgreSQL database (schema applied)","tenant":"models-as-a-service"} {"level":"info","timestamp":"2026-06-14T20:32:20.501Z","caller":"cmd/main.go:198","message":"Resolved gateway internal host for access probes","host":"maas-default-gateway-openshift-default.openshift-ingress.svc.cluster.local"} {"level":"info","timestamp":"2026-06-14T20:32:20.513Z","caller":"cmd/main.go:134","message":"Server starting","address":":8443","secure":true} [GIN] 2026/06/14 - 20:32:26 | 200 | 59.197µs | 10.133.0.2 | GET "/health" [GIN] 2026/06/14 - 20:32:31 | 200 | 47.329µs | 10.133.0.2 | GET "/health" [GIN] 2026/06/14 - 20:32:36 | 200 | 35.063µs | 10.133.0.2 | GET "/health" [GIN] 2026/06/14 - 20:32:41 | 200 | 35.748µs | 10.133.0.2 | GET "/health" [GIN] 2026/06/14 - 20:32:46 | 200 | 48.81µs | 10.133.0.2 | GET "/health" [GIN] 2026/06/14 - 20:32:51 | 200 | 39.096µs | 10.133.0.2 | GET "/health" [GIN] 2026/06/14 - 20:32:56 | 200 | 39.234µs | 10.133.0.2 | GET "/health" [GIN] 2026/06/14 - 20:32:58 | 200 | 34.321µs | 10.133.0.2 | GET "/health" [GIN] 2026/06/14 - 20:33:01 | 200 | 38.909µs | 10.133.0.2 | GET "/health" [GIN] 2026/06/14 - 20:33:06 | 200 | 40.356µs | 10.133.0.2 | GET "/health" [GIN] 2026/06/14 - 20:33:08 | 200 | 50.148µs | 10.133.0.2 | GET "/health" [GIN] 2026/06/14 - 20:33:11 | 200 | 38.776µs | 10.133.0.2 | GET "/health" [GIN] 2026/06/14 - 20:33:16 | 200 | 41.846µs | 10.133.0.2 | GET "/health" [GIN] 2026/06/14 - 20:33:18 | 200 | 40.868µs | 10.133.0.2 | GET "/health" [GIN] 2026/06/14 - 20:33:21 | 200 | 50.803µs | 10.133.0.2 | GET "/health" [GIN] 2026/06/14 - 20:33:26 | 200 | 42.906µs | 10.133.0.2 | GET "/health" [GIN] 2026/06/14 - 20:33:28 | 200 | 40.056µs | 10.133.0.2 | GET "/health" [GIN] 2026/06/14 - 20:33:31 | 200 | 38.708µs | 10.133.0.2 | GET "/health" [GIN] 2026/06/14 - 20:33:36 | 200 | 40.264µs | 10.133.0.2 | GET "/health" [GIN] 2026/06/14 - 20:33:38 | 200 | 37.821µs | 10.133.0.2 | GET "/health" [GIN] 2026/06/14 - 20:33:41 | 200 | 41.676µs | 10.133.0.2 | GET "/health" [GIN] 2026/06/14 - 20:33:46 | 200 | 40.157µs | 10.133.0.2 | GET "/health" [GIN] 2026/06/14 - 20:33:48 | 200 | 45.735µs | 10.133.0.2 | GET "/health" [GIN] 2026/06/14 - 20:33:51 | 200 | 52.463µs | 10.133.0.2 | GET "/health" [GIN] 2026/06/14 - 20:33:56 | 200 | 45.179µs | 10.133.0.2 | GET "/health" [GIN] 2026/06/14 - 20:33:58 | 200 | 40.716µs | 10.133.0.2 | GET "/health" [GIN] 2026/06/14 - 20:34:01 | 200 | 39.284µs | 10.133.0.2 | GET "/health" [GIN] 2026/06/14 - 20:34:06 | 200 | 38.878µs | 10.133.0.2 | GET "/health" [GIN] 2026/06/14 - 20:34:08 | 200 | 36.104µs | 10.133.0.2 | GET "/health" [GIN] 2026/06/14 - 20:34:11 | 200 | 34.402µs | 10.133.0.2 | GET "/health" [GIN] 2026/06/14 - 20:34:16 | 200 | 40.871µs | 10.133.0.2 | GET "/health" [GIN] 2026/06/14 - 20:34:18 | 200 | 49.89µs | 10.133.0.2 | GET "/health" [GIN] 2026/06/14 - 20:34:21 | 200 | 54.4µs | 10.133.0.2 | GET "/health" [GIN] 2026/06/14 - 20:34:26 | 200 | 34.321µs | 10.133.0.2 | GET "/health" [GIN] 2026/06/14 - 20:34:28 | 200 | 39.871µs | 10.133.0.2 | GET "/health" [GIN] 2026/06/14 - 20:34:31 | 200 | 33.876µs | 10.133.0.2 | GET "/health" [GIN] 2026/06/14 - 20:34:36 | 200 | 48.76µs | 10.133.0.2 | GET "/health" [GIN] 2026/06/14 - 20:34:38 | 200 | 37.06µs | 10.133.0.2 | GET "/health" [GIN] 2026/06/14 - 20:34:41 | 200 | 40.245µs | 10.133.0.2 | GET "/health" [GIN] 2026/06/14 - 20:34:46 | 200 | 32.025µs | 10.133.0.2 | GET "/health" [GIN] 2026/06/14 - 20:34:48 | 200 | 34.184µs | 10.133.0.2 | GET "/health" [GIN] 2026/06/14 - 20:34:51 | 200 | 36.399µs | 10.133.0.2 | GET "/health" [GIN] 2026/06/14 - 20:34:56 | 200 | 34.074µs | 10.133.0.2 | GET "/health" [GIN] 2026/06/14 - 20:34:58 | 200 | 33.657µs | 10.133.0.2 | GET "/health" [GIN] 2026/06/14 - 20:35:01 | 200 | 32.285µs | 10.133.0.2 | GET "/health" [GIN] 2026/06/14 - 20:35:06 | 200 | 34.484µs | 10.133.0.2 | GET "/health" [GIN] 2026/06/14 - 20:35:08 | 200 | 45.346µs | 10.133.0.2 | GET "/health" [GIN] 2026/06/14 - 20:35:11 | 200 | 34.267µs | 10.133.0.2 | GET "/health" {"level":"info","timestamp":"2026-06-14T20:35:13.779Z","caller":"api_keys/service.go:159","message":"Created API key","user":"system:serviceaccount:maas-admin:tester-admin-user","groups":["system:serviceaccounts","system:serviceaccounts:maas-admin","system:authenticated"],"id":"f4b49420-35a1-4f9f-9e56-c765db94bbd5","ephemeral":false} {"level":"info","timestamp":"2026-06-14T20:35:13.779Z","caller":"api_keys/handler.go:238","message":"Created API key","keyId":"f4b49420-35a1-4f9f-9e56-c765db94bbd5","keyPrefix":"sk-oai-EopVtFohEI06...","username":"system:serviceaccount:maas-admin:tester-admin-user","groups":["system:serviceaccounts","system:serviceaccounts:maas-admin","system:authenticated"],"ephemeral":false} [GIN] 2026/06/14 - 20:35:13 | 201 | 11.42264ms | 34.228.250.194 | POST "/v1/api-keys" | Authorization=present X-Api-Key=absent Cookie=absent Set-Cookie=absent {"level":"error","timestamp":"2026-06-14T20:35:13.859Z","caller":"token/handler.go:78","message":"Missing group header","header":"X-MaaS-Group","username":"","stacktrace":"main.registerHandlers.(*Handler).ExtractUserInfo.func1\n\tgithub.com/opendatahub-io/models-as-a-service/maas-api/internal/token/handler.go:78\ngithub.com/gin-gonic/gin.(*Context).Next\n\tgithub.com/gin-gonic/gin@v1.10.1/context.go:185\nmain.serve.NewMiddleware.func8\n\tgithub.com/opendatahub-io/models-as-a-service/maas-api/internal/metrics/middleware.go:20\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\nmain.serve.RequestID.func7\n\tgithub.com/opendatahub-io/models-as-a-service/maas-api/internal/middleware/request_id.go:57\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.(*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/06/14 - 20:35:13 | 500 | 114.301µs | 34.228.250.194 | GET "/v1/models" | Authorization=present X-Api-Key=absent Cookie=absent Set-Cookie=absent {"level":"info","timestamp":"2026-06-14T20:35:13.935Z","caller":"api_keys/store_postgres.go:487","message":"Revoked API key","id":"f4b49420-35a1-4f9f-9e56-c765db94bbd5"} {"level":"info","timestamp":"2026-06-14T20:35:13.936Z","caller":"api_keys/handler.go:339","message":"Revoked API key","keyId":"f4b49420-35a1-4f9f-9e56-c765db94bbd5","revokedBy":"system:serviceaccount:maas-admin:tester-admin-user"} [GIN] 2026/06/14 - 20:35:13 | 200 | 3.768072ms | 34.228.250.194 | DELETE "/v1/api-keys/f4b49420-35a1-4f9f-9e56-c765db94bbd5" | Authorization=present X-Api-Key=absent Cookie=absent Set-Cookie=absent [GIN] 2026/06/14 - 20:35:16 | 200 | 36.419µs | 10.133.0.2 | GET "/health" [GIN] 2026/06/14 - 20:35:18 | 200 | 37.321µs | 10.133.0.2 | GET "/health" [GIN] 2026/06/14 - 20:35:21 | 200 | 33.549µs | 10.133.0.2 | GET "/health" [GIN] 2026/06/14 - 20:35:26 | 200 | 36.129µs | 10.133.0.2 | GET "/health" [GIN] 2026/06/14 - 20:35:28 | 200 | 54.203µs | 10.133.0.2 | GET "/health" [GIN] 2026/06/14 - 20:35:31 | 200 | 34.207µs | 10.133.0.2 | GET "/health" [GIN] 2026/06/14 - 20:35:36 | 200 | 33.441µs | 10.133.0.2 | GET "/health" [GIN] 2026/06/14 - 20:35:38 | 200 | 34.645µs | 10.133.0.2 | GET "/health" [GIN] 2026/06/14 - 20:35:41 | 200 | 53.097µs | 10.133.0.2 | GET "/health" {"level":"info","timestamp":"2026-06-14T20:35:46.505Z","caller":"api_keys/service.go:159","message":"Created API key","user":"system:serviceaccount:maas-admin:tester-admin-user","groups":["system:serviceaccounts","system:serviceaccounts:maas-admin","system:authenticated"],"id":"4ad1fffe-f6de-4cdd-b098-a44e6e507898","ephemeral":false} {"level":"info","timestamp":"2026-06-14T20:35:46.505Z","caller":"api_keys/handler.go:238","message":"Created API key","keyId":"4ad1fffe-f6de-4cdd-b098-a44e6e507898","keyPrefix":"sk-oai-YOKUDkKHZm9C...","username":"system:serviceaccount:maas-admin:tester-admin-user","groups":["system:serviceaccounts","system:serviceaccounts:maas-admin","system:authenticated"],"ephemeral":false} [GIN] 2026/06/14 - 20:35:46 | 201 | 2.194626ms | 34.228.250.194 | POST "/v1/api-keys" | Authorization=present X-Api-Key=absent Cookie=absent Set-Cookie=absent {"level":"error","timestamp":"2026-06-14T20:35:46.554Z","caller":"token/handler.go:78","message":"Missing group header","header":"X-MaaS-Group","username":"","stacktrace":"main.registerHandlers.(*Handler).ExtractUserInfo.func1\n\tgithub.com/opendatahub-io/models-as-a-service/maas-api/internal/token/handler.go:78\ngithub.com/gin-gonic/gin.(*Context).Next\n\tgithub.com/gin-gonic/gin@v1.10.1/context.go:185\nmain.serve.NewMiddleware.func8\n\tgithub.com/opendatahub-io/models-as-a-service/maas-api/internal/metrics/middleware.go:20\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\nmain.serve.RequestID.func7\n\tgithub.com/opendatahub-io/models-as-a-service/maas-api/internal/middleware/request_id.go:57\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.(*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/06/14 - 20:35:46 | 500 | 90.281µs | 34.228.250.194 | GET "/v1/models" | Authorization=present X-Api-Key=absent Cookie=absent Set-Cookie=absent {"level":"info","timestamp":"2026-06-14T20:35:46.627Z","caller":"api_keys/store_postgres.go:487","message":"Revoked API key","id":"4ad1fffe-f6de-4cdd-b098-a44e6e507898"} {"level":"info","timestamp":"2026-06-14T20:35:46.627Z","caller":"api_keys/handler.go:339","message":"Revoked API key","keyId":"4ad1fffe-f6de-4cdd-b098-a44e6e507898","revokedBy":"system:serviceaccount:maas-admin:tester-admin-user"} [GIN] 2026/06/14 - 20:35:46 | 200 | 2.412158ms | 34.228.250.194 | DELETE "/v1/api-keys/4ad1fffe-f6de-4cdd-b098-a44e6e507898" | Authorization=present X-Api-Key=absent Cookie=absent Set-Cookie=absent [GIN] 2026/06/14 - 20:35:46 | 200 | 33.827µs | 10.133.0.2 | GET "/health" [GIN] 2026/06/14 - 20:35:48 | 200 | 33.94µs | 10.133.0.2 | GET "/health"