{"level":"info","timestamp":"2026-04-20T19:37:07.589Z","caller":"cmd/main.go:60","message":"Loading database connection URL from secret..."} {"level":"info","timestamp":"2026-04-20T19:37:07.604Z","caller":"cmd/main.go:136","message":"Connecting to PostgreSQL database..."} {"level":"info","timestamp":"2026-04-20T19:37:07.698Z","caller":"api_keys/db_driver.go:90","message":"Database schema applied","version":3} {"level":"info","timestamp":"2026-04-20T19:37:07.698Z","caller":"api_keys/db_driver.go:57","message":"Connected to PostgreSQL database (schema applied)"} {"level":"info","timestamp":"2026-04-20T19:37:07.799Z","caller":"cmd/main.go:104","message":"Server starting","address":":8443","secure":true} [GIN] 2026/04/20 - 19:37:14 | 200 | 61.92µs | 10.133.0.2 | GET "/health" [GIN] 2026/04/20 - 19:37:19 | 200 | 35.409µs | 10.133.0.2 | GET "/health" [GIN] 2026/04/20 - 19:37:24 | 200 | 27.765µs | 10.133.0.2 | GET "/health" [GIN] 2026/04/20 - 19:37:29 | 200 | 24.712µs | 10.133.0.2 | GET "/health" [GIN] 2026/04/20 - 19:37:34 | 200 | 29.173µs | 10.133.0.2 | GET "/health" [GIN] 2026/04/20 - 19:37:39 | 200 | 30.122µs | 10.133.0.2 | GET "/health" [GIN] 2026/04/20 - 19:37:44 | 200 | 26.863µs | 10.133.0.2 | GET "/health" [GIN] 2026/04/20 - 19:37:44 | 200 | 38.148µs | 10.133.0.2 | GET "/health" [GIN] 2026/04/20 - 19:37:49 | 200 | 48.188µs | 10.133.0.2 | GET "/health" [GIN] 2026/04/20 - 19:37:54 | 200 | 25.685µs | 10.133.0.2 | GET "/health" [GIN] 2026/04/20 - 19:37:54 | 200 | 36.712µs | 10.133.0.2 | GET "/health" [GIN] 2026/04/20 - 19:37:59 | 200 | 33.068µs | 10.133.0.2 | GET "/health" [GIN] 2026/04/20 - 19:38:04 | 200 | 45.301µs | 10.133.0.2 | GET "/health" [GIN] 2026/04/20 - 19:38:04 | 200 | 32.152µs | 10.133.0.2 | GET "/health" [GIN] 2026/04/20 - 19:38:09 | 200 | 56.812µs | 10.133.0.2 | GET "/health" [GIN] 2026/04/20 - 19:38:14 | 200 | 32.275µs | 10.133.0.2 | GET "/health" [GIN] 2026/04/20 - 19:38:14 | 200 | 26.837µs | 10.133.0.2 | GET "/health" [GIN] 2026/04/20 - 19:38:19 | 200 | 27.856µs | 10.133.0.2 | GET "/health" [GIN] 2026/04/20 - 19:38:24 | 200 | 27.975µs | 10.133.0.2 | GET "/health" [GIN] 2026/04/20 - 19:38:24 | 200 | 33.194µs | 10.133.0.2 | GET "/health" [GIN] 2026/04/20 - 19:38:29 | 200 | 28.373µs | 10.133.0.2 | GET "/health" [GIN] 2026/04/20 - 19:38:34 | 200 | 23.591µs | 10.133.0.2 | GET "/health" [GIN] 2026/04/20 - 19:38:34 | 200 | 29.844µs | 10.133.0.2 | GET "/health" [GIN] 2026/04/20 - 19:38:39 | 200 | 26.719µs | 10.133.0.2 | GET "/health" [GIN] 2026/04/20 - 19:38:44 | 200 | 37.345µs | 10.133.0.2 | GET "/health" [GIN] 2026/04/20 - 19:38:44 | 200 | 28.656µs | 10.133.0.2 | GET "/health" [GIN] 2026/04/20 - 19:38:49 | 200 | 38.817µs | 10.133.0.2 | GET "/health" [GIN] 2026/04/20 - 19:38:54 | 200 | 49.681µs | 10.133.0.2 | GET "/health" [GIN] 2026/04/20 - 19:38:54 | 200 | 23.689µs | 10.133.0.2 | GET "/health" [GIN] 2026/04/20 - 19:38:59 | 200 | 34.779µs | 10.133.0.2 | GET "/health" [GIN] 2026/04/20 - 19:39:04 | 200 | 32.855µs | 10.133.0.2 | GET "/health" [GIN] 2026/04/20 - 19:39:04 | 200 | 27.321µs | 10.133.0.2 | GET "/health" [GIN] 2026/04/20 - 19:39:09 | 200 | 27.828µs | 10.133.0.2 | GET "/health" [GIN] 2026/04/20 - 19:39:14 | 200 | 26.527µs | 10.133.0.2 | GET "/health" [GIN] 2026/04/20 - 19:39:14 | 200 | 24.373µs | 10.133.0.2 | GET "/health" {"level":"info","timestamp":"2026-04-20T19:39:15.196Z","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":"ca054224-074e-45d6-acd3-8c517d651b36","ephemeral":false} {"level":"info","timestamp":"2026-04-20T19:39:15.196Z","caller":"api_keys/handler.go:222","message":"Created API key","keyId":"ca054224-074e-45d6-acd3-8c517d651b36","keyPrefix":"sk-oai-sLWl4o6OCF4j...","username":"system:serviceaccount:maas-admin:tester-admin-user","groups":["system:serviceaccounts","system:serviceaccounts:maas-admin","system:authenticated"],"ephemeral":false} [GIN] 2026/04/20 - 19:39:15 | 201 | 11.227113ms | 100.64.0.3 | POST "/v1/api-keys" [GIN] 2026/04/20 - 19:39:15 | 200 | 1.318968ms | 10.134.0.47 | POST "/internal/v1/api-keys/validate" [GIN] 2026/04/20 - 19:39:15 | 200 | 456.257µs | 10.134.0.47 | POST "/internal/v1/api-keys/validate" [GIN] 2026/04/20 - 19:39:15 | 200 | 213.855µs | 10.134.0.47 | POST "/internal/v1/subscriptions/select" [GIN] 2026/04/20 - 19:39:15 | 200 | 32.549986ms | 100.64.0.4 | GET "/v1/models" [GIN] 2026/04/20 - 19:39:15 | 200 | 587.873µs | 10.134.0.47 | POST "/internal/v1/api-keys/validate" [GIN] 2026/04/20 - 19:39:15 | 200 | 126.67µs | 10.134.0.47 | POST "/internal/v1/subscriptions/select" [GIN] 2026/04/20 - 19:39:15 | 200 | 518.23µs | 10.134.0.47 | POST "/internal/v1/api-keys/validate" [GIN] 2026/04/20 - 19:39:15 | 200 | 127.78µs | 10.134.0.47 | POST "/internal/v1/subscriptions/select" [GIN] 2026/04/20 - 19:39:15 | 200 | 550.519µs | 10.134.0.47 | POST "/internal/v1/api-keys/validate" [GIN] 2026/04/20 - 19:39:15 | 200 | 147.304µs | 10.134.0.47 | POST "/internal/v1/subscriptions/select" [GIN] 2026/04/20 - 19:39:15 | 200 | 571.269µs | 10.134.0.47 | POST "/internal/v1/api-keys/validate" [GIN] 2026/04/20 - 19:39:15 | 200 | 133.076µs | 10.134.0.47 | POST "/internal/v1/subscriptions/select" [GIN] 2026/04/20 - 19:39:15 | 200 | 470.703µs | 10.134.0.47 | POST "/internal/v1/api-keys/validate" [GIN] 2026/04/20 - 19:39:15 | 200 | 122.758µs | 10.134.0.47 | POST "/internal/v1/subscriptions/select" [GIN] 2026/04/20 - 19:39:15 | 200 | 455.41µs | 10.134.0.47 | POST "/internal/v1/api-keys/validate" [GIN] 2026/04/20 - 19:39:15 | 200 | 129.931µs | 10.134.0.47 | POST "/internal/v1/subscriptions/select" [GIN] 2026/04/20 - 19:39:15 | 200 | 430.007µs | 10.134.0.47 | POST "/internal/v1/api-keys/validate" [GIN] 2026/04/20 - 19:39:15 | 200 | 128.739µs | 10.134.0.47 | POST "/internal/v1/subscriptions/select" [GIN] 2026/04/20 - 19:39:15 | 200 | 446.338µs | 10.134.0.47 | POST "/internal/v1/api-keys/validate" [GIN] 2026/04/20 - 19:39:15 | 200 | 127.023µs | 10.134.0.47 | POST "/internal/v1/subscriptions/select" [GIN] 2026/04/20 - 19:39:15 | 200 | 431.315µs | 10.134.0.47 | POST "/internal/v1/api-keys/validate" [GIN] 2026/04/20 - 19:39:15 | 200 | 117.661µs | 10.134.0.47 | POST "/internal/v1/subscriptions/select" [GIN] 2026/04/20 - 19:39:15 | 200 | 473.277µs | 10.134.0.47 | POST "/internal/v1/api-keys/validate" [GIN] 2026/04/20 - 19:39:15 | 200 | 140.005µs | 10.134.0.47 | POST "/internal/v1/subscriptions/select" [GIN] 2026/04/20 - 19:39:15 | 200 | 461.038µs | 10.134.0.47 | POST "/internal/v1/api-keys/validate" [GIN] 2026/04/20 - 19:39:15 | 200 | 127.502µs | 10.134.0.47 | POST "/internal/v1/subscriptions/select" {"level":"info","timestamp":"2026-04-20T19:39:15.757Z","caller":"api_keys/store_postgres.go:460","message":"Revoked API key","id":"ca054224-074e-45d6-acd3-8c517d651b36"} {"level":"info","timestamp":"2026-04-20T19:39:15.757Z","caller":"api_keys/handler.go:317","message":"Revoked API key","keyId":"ca054224-074e-45d6-acd3-8c517d651b36","revokedBy":"system:serviceaccount:maas-admin:tester-admin-user"} [GIN] 2026/04/20 - 19:39:15 | 200 | 2.987381ms | 100.64.0.4 | DELETE "/v1/api-keys/ca054224-074e-45d6-acd3-8c517d651b36" [GIN] 2026/04/20 - 19:39:19 | 200 | 39.035µs | 10.133.0.2 | GET "/health" [GIN] 2026/04/20 - 19:39:24 | 200 | 35.821µs | 10.133.0.2 | GET "/health" [GIN] 2026/04/20 - 19:39:24 | 200 | 26.56µs | 10.133.0.2 | GET "/health" [GIN] 2026/04/20 - 19:39:29 | 200 | 25.577µs | 10.133.0.2 | GET "/health" [GIN] 2026/04/20 - 19:39:34 | 200 | 35.924µs | 10.133.0.2 | GET "/health" [GIN] 2026/04/20 - 19:39:34 | 200 | 37.157µs | 10.133.0.2 | GET "/health" [GIN] 2026/04/20 - 19:39:39 | 200 | 47.919µs | 10.133.0.2 | GET "/health" [GIN] 2026/04/20 - 19:39:44 | 200 | 43.811µs | 10.133.0.2 | GET "/health" [GIN] 2026/04/20 - 19:39:44 | 200 | 36.013µs | 10.133.0.2 | GET "/health" {"level":"info","timestamp":"2026-04-20T19:39:48.291Z","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":"b6c10ae0-edfa-4bf8-bb8c-ba00eb4c1de2","ephemeral":false} {"level":"info","timestamp":"2026-04-20T19:39:48.292Z","caller":"api_keys/handler.go:222","message":"Created API key","keyId":"b6c10ae0-edfa-4bf8-bb8c-ba00eb4c1de2","keyPrefix":"sk-oai-dCAwVN42HRVD...","username":"system:serviceaccount:maas-admin:tester-admin-user","groups":["system:serviceaccounts","system:serviceaccounts:maas-admin","system:authenticated"],"ephemeral":false} [GIN] 2026/04/20 - 19:39:48 | 201 | 2.271063ms | 100.64.0.2 | POST "/v1/api-keys" [GIN] 2026/04/20 - 19:39:48 | 200 | 552.929µs | 10.134.0.47 | POST "/internal/v1/api-keys/validate" [GIN] 2026/04/20 - 19:39:48 | 200 | 370.78µs | 10.134.0.47 | POST "/internal/v1/api-keys/validate" [GIN] 2026/04/20 - 19:39:48 | 200 | 143.728µs | 10.134.0.47 | POST "/internal/v1/subscriptions/select" [GIN] 2026/04/20 - 19:39:48 | 200 | 14.191943ms | 100.64.0.2 | GET "/v1/models" [GIN] 2026/04/20 - 19:39:48 | 200 | 590.2µs | 10.134.0.47 | POST "/internal/v1/api-keys/validate" [GIN] 2026/04/20 - 19:39:48 | 200 | 159.648µs | 10.134.0.47 | POST "/internal/v1/subscriptions/select" [GIN] 2026/04/20 - 19:39:48 | 200 | 552.035µs | 10.134.0.47 | POST "/internal/v1/api-keys/validate" [GIN] 2026/04/20 - 19:39:48 | 200 | 161.02µs | 10.134.0.47 | POST "/internal/v1/subscriptions/select" [GIN] 2026/04/20 - 19:39:48 | 200 | 565.73µs | 10.134.0.47 | POST "/internal/v1/api-keys/validate" [GIN] 2026/04/20 - 19:39:48 | 200 | 171.825µs | 10.134.0.47 | POST "/internal/v1/subscriptions/select" [GIN] 2026/04/20 - 19:39:48 | 200 | 505.974µs | 10.134.0.47 | POST "/internal/v1/api-keys/validate" [GIN] 2026/04/20 - 19:39:48 | 200 | 273.229µs | 10.134.0.47 | POST "/internal/v1/subscriptions/select" [GIN] 2026/04/20 - 19:39:48 | 200 | 538.27µs | 10.134.0.47 | POST "/internal/v1/api-keys/validate" [GIN] 2026/04/20 - 19:39:48 | 200 | 223.849µs | 10.134.0.47 | POST "/internal/v1/subscriptions/select" [GIN] 2026/04/20 - 19:39:48 | 200 | 612.573µs | 10.134.0.47 | POST "/internal/v1/api-keys/validate" [GIN] 2026/04/20 - 19:39:48 | 200 | 153.695µs | 10.134.0.47 | POST "/internal/v1/subscriptions/select" [GIN] 2026/04/20 - 19:39:48 | 200 | 536.083µs | 10.134.0.47 | POST "/internal/v1/api-keys/validate" [GIN] 2026/04/20 - 19:39:48 | 200 | 225.309µs | 10.134.0.47 | POST "/internal/v1/subscriptions/select" [GIN] 2026/04/20 - 19:39:48 | 200 | 569.848µs | 10.134.0.47 | POST "/internal/v1/api-keys/validate" [GIN] 2026/04/20 - 19:39:48 | 200 | 229.125µs | 10.134.0.47 | POST "/internal/v1/subscriptions/select" [GIN] 2026/04/20 - 19:39:48 | 200 | 596.62µs | 10.134.0.47 | POST "/internal/v1/api-keys/validate" [GIN] 2026/04/20 - 19:39:48 | 200 | 218.736µs | 10.134.0.47 | POST "/internal/v1/subscriptions/select" [GIN] 2026/04/20 - 19:39:48 | 200 | 519.063µs | 10.134.0.47 | POST "/internal/v1/api-keys/validate" [GIN] 2026/04/20 - 19:39:48 | 200 | 188.818µs | 10.134.0.47 | POST "/internal/v1/subscriptions/select" [GIN] 2026/04/20 - 19:39:48 | 200 | 490.259µs | 10.134.0.47 | POST "/internal/v1/api-keys/validate" [GIN] 2026/04/20 - 19:39:48 | 200 | 206.534µs | 10.134.0.47 | POST "/internal/v1/subscriptions/select" {"level":"info","timestamp":"2026-04-20T19:39:48.806Z","caller":"api_keys/store_postgres.go:460","message":"Revoked API key","id":"b6c10ae0-edfa-4bf8-bb8c-ba00eb4c1de2"} {"level":"info","timestamp":"2026-04-20T19:39:48.806Z","caller":"api_keys/handler.go:317","message":"Revoked API key","keyId":"b6c10ae0-edfa-4bf8-bb8c-ba00eb4c1de2","revokedBy":"system:serviceaccount:maas-admin:tester-admin-user"} [GIN] 2026/04/20 - 19:39:48 | 200 | 2.36877ms | 100.64.0.3 | DELETE "/v1/api-keys/b6c10ae0-edfa-4bf8-bb8c-ba00eb4c1de2" [GIN] 2026/04/20 - 19:39:49 | 200 | 34.396µs | 10.133.0.2 | GET "/health"