)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":5890,"name":"Doug Goldstein","email":"cardoe@cardoe.com","username":"cardoe"},"change_message_id":"4ee34a44f436529f7185c6ca719c65574a23676b","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"f04e54fe_00ed0b77","updated":"2026-02-17 03:56:03.000000000","message":"Recheck metal3 failures","commit_id":"73e681414d6cb5aaaa636f01493095fb7c83a965"},{"author":{"_account_id":36770,"name":"cid","display_name":"cid","email":"cid@gr-oss.io","username":"cidelight","status":"@gr-oss upstream: Doing good IRONIC things..."},"change_message_id":"db7138e54e39e9d9cb01422cb9aed9bd93bb6d55","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"82acfb93_79a7931a","updated":"2026-02-17 10:28:27.000000000","message":"This will require updates to the documentation similar to what you have in the releasenote at the moment.","commit_id":"73e681414d6cb5aaaa636f01493095fb7c83a965"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"2ff9f57d840c6d117bd0757b35cae591c98f5dff","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"1351dbfe_ed37fcdb","updated":"2026-02-17 13:18:42.000000000","message":"A little documentation would also be good, the release note can as a result be a little less detailed, but the key is to ensure we put something in our overall API documentation as well.","commit_id":"9933689b67d6419e023bc52e34e29de8947b7b4d"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"3fb253e5314476e4a3f8b72f48772ecbf362a71f","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"8f41670b_33e8d078","updated":"2026-02-26 17:42:36.000000000","message":"LGTM, Thanks!","commit_id":"8438bdd93f2e23f756e02cffdcee62d23a222859"}],"ironic/api/app.py":[{"author":{"_account_id":5890,"name":"Doug Goldstein","email":"cardoe@cardoe.com","username":"cardoe"},"change_message_id":"1d4f8c64e5af8d1e8478e1bd7c96b91385c53be5","unresolved":true,"context_lines":[{"line_number":162,"context_line":"    app \u003d json_ext.JsonExtensionMiddleware(app)"},{"line_number":163,"context_line":""},{"line_number":164,"context_line":"    # Add request logging middleware"},{"line_number":165,"context_line":"    app \u003d request_log.RequestLogMiddleware(app)"},{"line_number":166,"context_line":""},{"line_number":167,"context_line":"    # Load custom middleware via entry points"},{"line_number":168,"context_line":"    # Middleware are loaded in the order specified in [api] middleware config"}],"source_content_type":"text/x-python","patch_set":4,"id":"725a44ed_3510c639","line":165,"updated":"2026-02-13 06:47:44.000000000","message":"Something you can to do better test this would be to maybe convert this to be loaded by default via the config file? Not sure how the other cores feel about that suggestion however.","commit_id":"73e681414d6cb5aaaa636f01493095fb7c83a965"},{"author":{"_account_id":36720,"name":"Syed Haseeb Ahmed","display_name":"haseeb","email":"syedhaseebahmed12@gmail.com","username":"haseeb"},"change_message_id":"b3594fe4768840ff0864aadbc00215c039f444a6","unresolved":true,"context_lines":[{"line_number":162,"context_line":"    app \u003d json_ext.JsonExtensionMiddleware(app)"},{"line_number":163,"context_line":""},{"line_number":164,"context_line":"    # Add request logging middleware"},{"line_number":165,"context_line":"    app \u003d request_log.RequestLogMiddleware(app)"},{"line_number":166,"context_line":""},{"line_number":167,"context_line":"    # Load custom middleware via entry points"},{"line_number":168,"context_line":"    # Middleware are loaded in the order specified in [api] middleware config"}],"source_content_type":"text/x-python","patch_set":4,"id":"a2073f62_fe75c16b","line":165,"in_reply_to":"725a44ed_3510c639","updated":"2026-02-13 10:42:13.000000000","message":"Other middlewares are loaded with conditional check so I copied the same approach.","commit_id":"73e681414d6cb5aaaa636f01493095fb7c83a965"}],"releasenotes/notes/pluggable-api-middleware-99dc1e7de44dd37c.yaml":[{"author":{"_account_id":36770,"name":"cid","display_name":"cid","email":"cid@gr-oss.io","username":"cidelight","status":"@gr-oss upstream: Doing good IRONIC things..."},"change_message_id":"db7138e54e39e9d9cb01422cb9aed9bd93bb6d55","unresolved":true,"context_lines":[{"line_number":25,"context_line":"    Each middleware must be a callable that accepts a WSGI application and"},{"line_number":26,"context_line":"    returns a wrapped WSGI application."},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"    Closes-Bug: `2141318 \u003chttps://bugs.launchpad.net/ironic/+bug/2141318\u003e`_"}],"source_content_type":"text/x-yaml","patch_set":4,"id":"f10e5a37_6085c529","line":28,"range":{"start_line":28,"start_character":4,"end_line":28,"end_character":25},"updated":"2026-02-17 10:28:27.000000000","message":"This is not necessarily wrong, although it\u0027s generally not how we reference bugs in the releasenote.","commit_id":"73e681414d6cb5aaaa636f01493095fb7c83a965"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"2ff9f57d840c6d117bd0757b35cae591c98f5dff","unresolved":true,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"fixes:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    Adds support for pluggable WSGI middleware via stevedore entry points,"},{"line_number":5,"context_line":"    following the same pattern used for inspection hooks. This allows"}],"source_content_type":"text/x-yaml","patch_set":5,"id":"05a99f21_54fb935a","line":2,"updated":"2026-02-17 13:18:42.000000000","message":"Technically this is a feature, not a bug fix. The big give away is also the first word being \"Adds\". 😊","commit_id":"9933689b67d6419e023bc52e34e29de8947b7b4d"}]}
