)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"b03cd7a21a0a9b544483330f9701a29ef7fe9b59","unresolved":true,"context_lines":[{"line_number":9,"context_line":"Use openstacksdk for sending os-server-external-events to"},{"line_number":10,"context_line":"Nova."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Depends-On: https://review.opendev.org/983904"},{"line_number":13,"context_line":"Change-Id: I6a4145a6bd95e1e8018e4373fef3f8998a644479"},{"line_number":14,"context_line":"Signed-off-by: lajoskatona \u003clajos.katona@est.tech\u003e"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"fd0d55ca_7865230c","line":12,"range":{"start_line":12,"start_character":0,"end_line":12,"end_character":45},"updated":"2026-05-05 10:21:05.000000000","message":"we need a release also for SDK when this one is merged","commit_id":"ef7e2e80cf1ea8239f41cf96cf965ececc1a0897"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"bbf75afa598ca8849aaff96358c448ba84c0759c","unresolved":false,"context_lines":[{"line_number":9,"context_line":"Use openstacksdk for sending os-server-external-events to"},{"line_number":10,"context_line":"Nova."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Depends-On: https://review.opendev.org/983904"},{"line_number":13,"context_line":"Change-Id: I6a4145a6bd95e1e8018e4373fef3f8998a644479"},{"line_number":14,"context_line":"Signed-off-by: lajoskatona \u003clajos.katona@est.tech\u003e"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"2ccc9ef1_0f709181","line":12,"range":{"start_line":12,"start_character":0,"end_line":12,"end_character":45},"in_reply_to":"6da7da72_30c177d0","updated":"2026-09-29 09:36:44.000000000","message":"Done","commit_id":"ef7e2e80cf1ea8239f41cf96cf965ececc1a0897"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"e82512e5c4ede136f529aa174c0a5a5a3cad96bf","unresolved":true,"context_lines":[{"line_number":9,"context_line":"Use openstacksdk for sending os-server-external-events to"},{"line_number":10,"context_line":"Nova."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Depends-On: https://review.opendev.org/983904"},{"line_number":13,"context_line":"Change-Id: I6a4145a6bd95e1e8018e4373fef3f8998a644479"},{"line_number":14,"context_line":"Signed-off-by: lajoskatona \u003clajos.katona@est.tech\u003e"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"6da7da72_30c177d0","line":12,"range":{"start_line":12,"start_character":0,"end_line":12,"end_character":45},"in_reply_to":"fd0d55ca_7865230c","updated":"2026-05-28 16:44:15.000000000","message":"the SDK patch seems to be progressing","commit_id":"ef7e2e80cf1ea8239f41cf96cf965ececc1a0897"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"e1f2a9940598c9fb0331c974a138e7d5a321aaed","unresolved":true,"context_lines":[{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Depends-On: https://review.opendev.org/983904"},{"line_number":13,"context_line":"Change-Id: I6a4145a6bd95e1e8018e4373fef3f8998a644479"},{"line_number":14,"context_line":"Signed-off-by: lajoskatona \u003clajos.katona@est.tech\u003e"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":11,"id":"7ee56740_5a62615e","line":14,"updated":"2026-06-19 11:51:17.000000000","message":"Mea Culpa... We need this from SDK: https://review.opendev.org/c/openstack/openstacksdk/+/994102 .\nI don\u0027t know how should I have messed it up....","commit_id":"f295534aa2b403aa363d271e30a7e754d68c48e2"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"bbf75afa598ca8849aaff96358c448ba84c0759c","unresolved":false,"context_lines":[{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Depends-On: https://review.opendev.org/983904"},{"line_number":13,"context_line":"Change-Id: I6a4145a6bd95e1e8018e4373fef3f8998a644479"},{"line_number":14,"context_line":"Signed-off-by: lajoskatona \u003clajos.katona@est.tech\u003e"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":11,"id":"626eaf5a_53f8094d","line":14,"in_reply_to":"7ee56740_5a62615e","updated":"2026-09-29 09:36:44.000000000","message":"Done","commit_id":"f295534aa2b403aa363d271e30a7e754d68c48e2"}],"/PATCHSET_LEVEL":[{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"61a615ffc796b0effc5c1d28c91b1edc6ee2badd","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"f14b2585_ea3697d0","updated":"2026-06-10 12:33:39.000000000","message":"The dependent patch is merged and released as SDK 4.15.0","commit_id":"16c40bad3a2d7e2f7fa243ea1d1d7ce3fa83c77f"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"7feab69315595843138176ed4e00913b00bcf4ca","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"54270db7_b8055570","updated":"2026-06-12 08:34:57.000000000","message":"recheck\nreq bump was also merged (I always forgot to check that also): https://review.opendev.org/c/openstack/requirements/+/992451","commit_id":"16c40bad3a2d7e2f7fa243ea1d1d7ce3fa83c77f"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"ea61c3aa9e28b904a8bced1563dcc90a7cdaf022","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":11,"id":"c8153bcb_e56cf7a4","updated":"2026-06-19 13:17:32.000000000","message":"for the dead code","commit_id":"f295534aa2b403aa363d271e30a7e754d68c48e2"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"6241f13af9d2cb751d9c6bcb72a41b6147d51638","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":12,"id":"9123207b_296f41da","updated":"2026-06-26 05:56:43.000000000","message":"recheck\npy313 timeout is not related, all tests passed","commit_id":"ff08487daa33e552c661c9fb359b17b348f918ea"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"a27c821539781a85280530a902bb7f360f9b33a2","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":12,"id":"89e1299b_eb4457a9","updated":"2026-06-29 07:29:55.000000000","message":"recheck\nrally and dvr-ha tempest failures are not related","commit_id":"ff08487daa33e552c661c9fb359b17b348f918ea"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"d4931ad7ddbeb03774e5fb74e3ae5ece55563e1e","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":16,"id":"4a8689ed_be6b969d","updated":"2026-07-27 15:15:23.000000000","message":"recheck\nneutron-ovs-tempest-dvr-ha-multinode-full failure is not related","commit_id":"a5b58114ef3187a482f3fd59bfc22db92ba19c39"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"bbf75afa598ca8849aaff96358c448ba84c0759c","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":18,"id":"74995947_b1e55d31","updated":"2026-09-29 09:36:44.000000000","message":"-1 for the fact we no longer respect one of the opts, but I have a few other comments also. Additionally, this commit isn\u0027t huge but I think it probably makes sense to split it all the same: a first commit replacing opts with their ksa equivalent and a second to migrate the client would be easier to grok and help us ensure we\u0027re not regressing anything.","commit_id":"f92921f8e7a90b499feef29747c606706489636e"}],"neutron/conf/common.py":[{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"feaa567640f673432dc8123406ebd4ba88f5ac83","unresolved":true,"context_lines":[{"line_number":210,"context_line":"nova_opts \u003d ["},{"line_number":211,"context_line":"    cfg.StrOpt(\u0027region_name\u0027,"},{"line_number":212,"context_line":"               help\u003d_(\u0027Name of Nova region to use. Useful if Keystone manages\u0027"},{"line_number":213,"context_line":"                      \u0027 more than one region.\u0027)),"},{"line_number":214,"context_line":"    cfg.StrOpt(\u0027endpoint_type\u0027,"},{"line_number":215,"context_line":"               default\u003d\u0027public\u0027,"},{"line_number":216,"context_line":"               choices\u003d[\u0027public\u0027, \u0027admin\u0027, \u0027internal\u0027],"}],"source_content_type":"text/x-python","patch_set":18,"id":"48668355_2ceae9dc","side":"PARENT","line":213,"updated":"2026-09-28 12:54:31.000000000","message":"why region_name is removed without deprecation time?","commit_id":"3412ab4a226296f34f5dabaac21261a36ad0a4d7"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"33de582c59892230252ef7d9704ecf123fdcb76d","unresolved":true,"context_lines":[{"line_number":210,"context_line":"nova_opts \u003d ["},{"line_number":211,"context_line":"    cfg.StrOpt(\u0027region_name\u0027,"},{"line_number":212,"context_line":"               help\u003d_(\u0027Name of Nova region to use. Useful if Keystone manages\u0027"},{"line_number":213,"context_line":"                      \u0027 more than one region.\u0027)),"},{"line_number":214,"context_line":"    cfg.StrOpt(\u0027endpoint_type\u0027,"},{"line_number":215,"context_line":"               default\u003d\u0027public\u0027,"},{"line_number":216,"context_line":"               choices\u003d[\u0027public\u0027, \u0027admin\u0027, \u0027internal\u0027],"}],"source_content_type":"text/x-python","patch_set":18,"id":"7519b73c_d0ab88ba","side":"PARENT","line":213,"in_reply_to":"48668355_2ceae9dc","updated":"2026-09-28 15:23:50.000000000","message":"good question why I added deprecated for endpoint_type and not for region name.\nBut finally I remember more or less again:\nin https://review.opendev.org/c/openstack/neutron/+/983905/18/neutron/common/config.py calling ks_loading.register_adapter_conf_options() registers, I remember having here region_name even as deprecated I got Duplicateopt exception.","commit_id":"3412ab4a226296f34f5dabaac21261a36ad0a4d7"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"bbf75afa598ca8849aaff96358c448ba84c0759c","unresolved":true,"context_lines":[{"line_number":210,"context_line":"nova_opts \u003d ["},{"line_number":211,"context_line":"    cfg.StrOpt(\u0027region_name\u0027,"},{"line_number":212,"context_line":"               help\u003d_(\u0027Name of Nova region to use. Useful if Keystone manages\u0027"},{"line_number":213,"context_line":"                      \u0027 more than one region.\u0027)),"},{"line_number":214,"context_line":"    cfg.StrOpt(\u0027endpoint_type\u0027,"},{"line_number":215,"context_line":"               default\u003d\u0027public\u0027,"},{"line_number":216,"context_line":"               choices\u003d[\u0027public\u0027, \u0027admin\u0027, \u0027internal\u0027],"}],"source_content_type":"text/x-python","patch_set":18,"id":"5141bc45_b6ba1f6d","side":"PARENT","line":213,"in_reply_to":"7519b73c_d0ab88ba","updated":"2026-09-29 09:36:44.000000000","message":"See below. It might be worth doing this is a prelude commit?","commit_id":"3412ab4a226296f34f5dabaac21261a36ad0a4d7"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"bbf75afa598ca8849aaff96358c448ba84c0759c","unresolved":true,"context_lines":[{"line_number":165,"context_line":"                      \u0027this value without modification. For overlay networks \u0027"},{"line_number":166,"context_line":"                      \u0027such as VXLAN, neutron automatically subtracts the \u0027"},{"line_number":167,"context_line":"                      \u0027overlay protocol overhead from this value. Defaults \u0027"},{"line_number":168,"context_line":"                      \u0027to 1500, the standard value for Ethernet.\u0027)),"},{"line_number":169,"context_line":"    cfg.IntOpt(\u0027http_retries\u0027, default\u003d3, min\u003d0,"},{"line_number":170,"context_line":"               help\u003d_(\"Number of times client connections (Nova, Ironic) \""},{"line_number":171,"context_line":"                      \"should be retried on a failed HTTP call. 0 (zero) \""},{"line_number":172,"context_line":"                      \"means connection is attempted only once (not retried). \""},{"line_number":173,"context_line":"                      \"Setting to any positive integer means that on failure \""},{"line_number":174,"context_line":"                      \"the connection is retried that many times. \""},{"line_number":175,"context_line":"                      \"For example, setting to 3 means total attempts to \""},{"line_number":176,"context_line":"                      \"connect will be 4.\")),"},{"line_number":177,"context_line":"    cfg.BoolOpt(\u0027enable_traditional_dhcp\u0027, default\u003dTrue,"},{"line_number":178,"context_line":"                help\u003d_(\u0027If False, neutron-server will disable the following \u0027"},{"line_number":179,"context_line":"                       \u0027DHCP-agent related functions: \u0027"}],"source_content_type":"text/x-python","patch_set":18,"id":"c2f1e391_a629a12d","line":176,"range":{"start_line":168,"start_character":68,"end_line":176,"end_character":45},"updated":"2026-09-29 09:36:44.000000000","message":"This can/should be deprecated also. See https://review.opendev.org/c/openstack/nova/+/1002657/4/nova/conf/neutron.py","commit_id":"f92921f8e7a90b499feef29747c606706489636e"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"bbf75afa598ca8849aaff96358c448ba84c0759c","unresolved":true,"context_lines":[{"line_number":208,"context_line":"NOVA_CONF_SECTION \u003d \u0027nova\u0027"},{"line_number":209,"context_line":""},{"line_number":210,"context_line":"nova_opts \u003d ["},{"line_number":211,"context_line":"    cfg.StrOpt(\u0027endpoint_type\u0027,"},{"line_number":212,"context_line":"               default\u003d\u0027public\u0027,"},{"line_number":213,"context_line":"               choices\u003d[\u0027public\u0027, \u0027admin\u0027, \u0027internal\u0027],"},{"line_number":214,"context_line":"               deprecated_for_removal\u003dTrue,"},{"line_number":215,"context_line":"               deprecated_since\u003d\u00272026.2\u0027,"},{"line_number":216,"context_line":"               deprecated_reason\u003d_("},{"line_number":217,"context_line":"                   \u0027Use the [nova] valid_interfaces option from \u0027"},{"line_number":218,"context_line":"                   \u0027keystoneauth1 adapter options instead.\u0027),"},{"line_number":219,"context_line":"               help\u003d_(\u0027Type of the Nova endpoint to use.  This endpoint will\u0027"},{"line_number":220,"context_line":"                      \u0027 be looked up in the Keystone catalog and should be\u0027"},{"line_number":221,"context_line":"                      \u0027 one of public, internal or admin.\u0027)),"},{"line_number":222,"context_line":"]"},{"line_number":223,"context_line":""},{"line_number":224,"context_line":""}],"source_content_type":"text/x-python","patch_set":18,"id":"59afe02e_ac8a0405","line":221,"range":{"start_line":211,"start_character":0,"end_line":221,"end_character":61},"updated":"2026-09-29 09:36:44.000000000","message":"You\u0027re no longer actually consuming this via the client created in `neutron/notifiers/nova.py`. Rather than doing this, you can configure this via `deprecated_opts` for `interface`. That would avoid the need to handle it here since ksa will do so for you. See https://review.opendev.org/c/openstack/nova/+/1002657/4/nova/conf/neutron.py for an example of this being done (from nova).","commit_id":"f92921f8e7a90b499feef29747c606706489636e"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"0603c32d6c73760e817c3b21fbabbce810dd03fc","unresolved":true,"context_lines":[{"line_number":208,"context_line":"NOVA_CONF_SECTION \u003d \u0027nova\u0027"},{"line_number":209,"context_line":""},{"line_number":210,"context_line":"nova_opts \u003d ["},{"line_number":211,"context_line":"    cfg.StrOpt(\u0027endpoint_type\u0027,"},{"line_number":212,"context_line":"               default\u003d\u0027public\u0027,"},{"line_number":213,"context_line":"               choices\u003d[\u0027public\u0027, \u0027admin\u0027, \u0027internal\u0027],"},{"line_number":214,"context_line":"               deprecated_for_removal\u003dTrue,"},{"line_number":215,"context_line":"               deprecated_since\u003d\u00272026.2\u0027,"},{"line_number":216,"context_line":"               deprecated_reason\u003d_("},{"line_number":217,"context_line":"                   \u0027Use the [nova] valid_interfaces option from \u0027"},{"line_number":218,"context_line":"                   \u0027keystoneauth1 adapter options instead.\u0027),"},{"line_number":219,"context_line":"               help\u003d_(\u0027Type of the Nova endpoint to use.  This endpoint will\u0027"},{"line_number":220,"context_line":"                      \u0027 be looked up in the Keystone catalog and should be\u0027"},{"line_number":221,"context_line":"                      \u0027 one of public, internal or admin.\u0027)),"},{"line_number":222,"context_line":"]"},{"line_number":223,"context_line":""},{"line_number":224,"context_line":""}],"source_content_type":"text/x-python","patch_set":18,"id":"331d2ea0_6c8cc910","line":221,"range":{"start_line":211,"start_character":0,"end_line":221,"end_character":61},"in_reply_to":"59afe02e_ac8a0405","updated":"2026-10-02 08:17:12.000000000","message":"Good point, for that we have to migrate segments also to SDK as that is also using novaclient (I always forget that it depends on nova aggregates and not on placement ones). I did some tests, and as a prelude it messes up things, so I would go with a FUP to make the deprecation and migrate the segments novaclient usage to SDK","commit_id":"f92921f8e7a90b499feef29747c606706489636e"}],"neutron/notifiers/nova.py":[{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"465088a177b8e092824aac2d385d105b6ced44b0","unresolved":true,"context_lines":[{"line_number":283,"context_line":"            rsp \u003d self.nova_client.post("},{"line_number":284,"context_line":"                \u0027/os-server-external-events\u0027,"},{"line_number":285,"context_line":"                json\u003d{\u0027events\u0027: batched_events})"},{"line_number":286,"context_line":"            response \u003d rsp.json()[\u0027events\u0027]"},{"line_number":287,"context_line":"        except ks_exceptions.EndpointNotFound:"},{"line_number":288,"context_line":"            LOG.exception(\"Nova endpoint not found, invalidating the session\")"},{"line_number":289,"context_line":"            if NOVA_SESSION:"}],"source_content_type":"text/x-python","patch_set":2,"id":"671304c1_6fa053d2","line":286,"updated":"2026-04-21 10:46:13.000000000","message":"I think this should move down to the else block...","commit_id":"bd60aabba1122edb41c5a094bb01bcb447d6e334"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"ea61c3aa9e28b904a8bced1563dcc90a7cdaf022","unresolved":false,"context_lines":[{"line_number":283,"context_line":"            rsp \u003d self.nova_client.post("},{"line_number":284,"context_line":"                \u0027/os-server-external-events\u0027,"},{"line_number":285,"context_line":"                json\u003d{\u0027events\u0027: batched_events})"},{"line_number":286,"context_line":"            response \u003d rsp.json()[\u0027events\u0027]"},{"line_number":287,"context_line":"        except ks_exceptions.EndpointNotFound:"},{"line_number":288,"context_line":"            LOG.exception(\"Nova endpoint not found, invalidating the session\")"},{"line_number":289,"context_line":"            if NOVA_SESSION:"}],"source_content_type":"text/x-python","patch_set":2,"id":"a9b3b110_76d9b6f4","line":286,"in_reply_to":"671304c1_6fa053d2","updated":"2026-06-19 13:17:32.000000000","message":"Done","commit_id":"bd60aabba1122edb41c5a094bb01bcb447d6e334"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"465088a177b8e092824aac2d385d105b6ced44b0","unresolved":true,"context_lines":[{"line_number":299,"context_line":"            LOG.exception(\"Failed to notify nova on events: %s\","},{"line_number":300,"context_line":"                          batched_events)"},{"line_number":301,"context_line":"        else:"},{"line_number":302,"context_line":"            if not isinstance(response, list):"},{"line_number":303,"context_line":"                LOG.error(\"Error response returned from nova: %s\","},{"line_number":304,"context_line":"                          response)"},{"line_number":305,"context_line":"                return"}],"source_content_type":"text/x-python","patch_set":2,"id":"6e782fc4_03e6c666","line":302,"updated":"2026-04-21 10:46:13.000000000","message":"...and this should change to:\n\n```suggestion\n            if \u0027events\u0027 not in rsp or not isinstance(rsp[\u0027events\u0027], list):\n```","commit_id":"bd60aabba1122edb41c5a094bb01bcb447d6e334"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"ea61c3aa9e28b904a8bced1563dcc90a7cdaf022","unresolved":false,"context_lines":[{"line_number":299,"context_line":"            LOG.exception(\"Failed to notify nova on events: %s\","},{"line_number":300,"context_line":"                          batched_events)"},{"line_number":301,"context_line":"        else:"},{"line_number":302,"context_line":"            if not isinstance(response, list):"},{"line_number":303,"context_line":"                LOG.error(\"Error response returned from nova: %s\","},{"line_number":304,"context_line":"                          response)"},{"line_number":305,"context_line":"                return"}],"source_content_type":"text/x-python","patch_set":2,"id":"e34b30d9_0e245928","line":302,"in_reply_to":"6e782fc4_03e6c666","updated":"2026-06-19 13:17:32.000000000","message":"Done","commit_id":"bd60aabba1122edb41c5a094bb01bcb447d6e334"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"e1f2a9940598c9fb0331c974a138e7d5a321aaed","unresolved":true,"context_lines":[{"line_number":280,"context_line":"    def send_events(self, batched_events):"},{"line_number":281,"context_line":"        LOG.debug(\"Sending events: %s\", batched_events)"},{"line_number":282,"context_line":"        try:"},{"line_number":283,"context_line":"            rsp \u003d self.nova_client.create_server_external_events("},{"line_number":284,"context_line":"                batched_events)"},{"line_number":285,"context_line":"            response \u003d [r.to_dict() for r in rsp]"},{"line_number":286,"context_line":"        except ks_exceptions.EndpointNotFound:"}],"source_content_type":"text/x-python","patch_set":10,"id":"6be6ae5f_9ef4c55e","line":283,"range":{"start_line":283,"start_character":35,"end_line":283,"end_character":64},"updated":"2026-06-19 11:51:17.000000000","message":"uhhhh.... I have to make the ServerExternalEvent.resource_key \u003d None \nMy bad...","commit_id":"fbe11f9eca1e756a7264e6c13f11f9d00f980731"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"bbf75afa598ca8849aaff96358c448ba84c0759c","unresolved":false,"context_lines":[{"line_number":280,"context_line":"    def send_events(self, batched_events):"},{"line_number":281,"context_line":"        LOG.debug(\"Sending events: %s\", batched_events)"},{"line_number":282,"context_line":"        try:"},{"line_number":283,"context_line":"            rsp \u003d self.nova_client.create_server_external_events("},{"line_number":284,"context_line":"                batched_events)"},{"line_number":285,"context_line":"            response \u003d [r.to_dict() for r in rsp]"},{"line_number":286,"context_line":"        except ks_exceptions.EndpointNotFound:"}],"source_content_type":"text/x-python","patch_set":10,"id":"94a3d387_710c517b","line":283,"range":{"start_line":283,"start_character":35,"end_line":283,"end_character":64},"in_reply_to":"6be6ae5f_9ef4c55e","updated":"2026-09-29 09:36:44.000000000","message":"Done","commit_id":"fbe11f9eca1e756a7264e6c13f11f9d00f980731"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"ea61c3aa9e28b904a8bced1563dcc90a7cdaf022","unresolved":true,"context_lines":[{"line_number":280,"context_line":"    def send_events(self, batched_events):"},{"line_number":281,"context_line":"        LOG.debug(\"Sending events: %s\", batched_events)"},{"line_number":282,"context_line":"        try:"},{"line_number":283,"context_line":"            rsp \u003d self.nova_client.create_server_external_events("},{"line_number":284,"context_line":"                batched_events)"},{"line_number":285,"context_line":"        except ks_exceptions.EndpointNotFound:"},{"line_number":286,"context_line":"            LOG.exception(\"Nova endpoint not found, invalidating the session\")"}],"source_content_type":"text/x-python","patch_set":11,"id":"6c82dca6_52a48261","line":283,"updated":"2026-06-19 13:17:32.000000000","message":"You should wrap this in `list` here...","commit_id":"f295534aa2b403aa363d271e30a7e754d68c48e2"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"445ecefcd98b6fc99d0a50c9b5375f14c2929eb7","unresolved":false,"context_lines":[{"line_number":280,"context_line":"    def send_events(self, batched_events):"},{"line_number":281,"context_line":"        LOG.debug(\"Sending events: %s\", batched_events)"},{"line_number":282,"context_line":"        try:"},{"line_number":283,"context_line":"            rsp \u003d self.nova_client.create_server_external_events("},{"line_number":284,"context_line":"                batched_events)"},{"line_number":285,"context_line":"        except ks_exceptions.EndpointNotFound:"},{"line_number":286,"context_line":"            LOG.exception(\"Nova endpoint not found, invalidating the session\")"}],"source_content_type":"text/x-python","patch_set":11,"id":"d248a9f2_5b69cf72","line":283,"in_reply_to":"6c82dca6_52a48261","updated":"2026-06-25 15:04:54.000000000","message":"Done","commit_id":"f295534aa2b403aa363d271e30a7e754d68c48e2"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"ea61c3aa9e28b904a8bced1563dcc90a7cdaf022","unresolved":true,"context_lines":[{"line_number":296,"context_line":"        except Exception:"},{"line_number":297,"context_line":"            LOG.exception(\"Failed to notify nova on events: %s\","},{"line_number":298,"context_line":"                          batched_events)"},{"line_number":299,"context_line":"        else:"},{"line_number":300,"context_line":"            try:"},{"line_number":301,"context_line":"                response \u003d [r.to_dict() for r in rsp]"},{"line_number":302,"context_line":"            except (TypeError, AttributeError):"},{"line_number":303,"context_line":"                LOG.error(\"Error response returned from nova: %s\","},{"line_number":304,"context_line":"                          rsp)"},{"line_number":305,"context_line":"                return"},{"line_number":306,"context_line":"            response_error \u003d False"},{"line_number":307,"context_line":"            for event in response:"},{"line_number":308,"context_line":"                try:"}],"source_content_type":"text/x-python","patch_set":11,"id":"618e26e8_dd24a8cc","line":305,"range":{"start_line":299,"start_character":13,"end_line":305,"end_character":22},"updated":"2026-06-19 13:17:32.000000000","message":"And you can drop this block then","commit_id":"f295534aa2b403aa363d271e30a7e754d68c48e2"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"bbf75afa598ca8849aaff96358c448ba84c0759c","unresolved":false,"context_lines":[{"line_number":296,"context_line":"        except Exception:"},{"line_number":297,"context_line":"            LOG.exception(\"Failed to notify nova on events: %s\","},{"line_number":298,"context_line":"                          batched_events)"},{"line_number":299,"context_line":"        else:"},{"line_number":300,"context_line":"            try:"},{"line_number":301,"context_line":"                response \u003d [r.to_dict() for r in rsp]"},{"line_number":302,"context_line":"            except (TypeError, AttributeError):"},{"line_number":303,"context_line":"                LOG.error(\"Error response returned from nova: %s\","},{"line_number":304,"context_line":"                          rsp)"},{"line_number":305,"context_line":"                return"},{"line_number":306,"context_line":"            response_error \u003d False"},{"line_number":307,"context_line":"            for event in response:"},{"line_number":308,"context_line":"                try:"}],"source_content_type":"text/x-python","patch_set":11,"id":"666e57db_fdb1973d","line":305,"range":{"start_line":299,"start_character":13,"end_line":305,"end_character":22},"in_reply_to":"0a79052e_e100ed03","updated":"2026-09-29 09:36:44.000000000","message":"Done","commit_id":"f295534aa2b403aa363d271e30a7e754d68c48e2"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"445ecefcd98b6fc99d0a50c9b5375f14c2929eb7","unresolved":true,"context_lines":[{"line_number":296,"context_line":"        except Exception:"},{"line_number":297,"context_line":"            LOG.exception(\"Failed to notify nova on events: %s\","},{"line_number":298,"context_line":"                          batched_events)"},{"line_number":299,"context_line":"        else:"},{"line_number":300,"context_line":"            try:"},{"line_number":301,"context_line":"                response \u003d [r.to_dict() for r in rsp]"},{"line_number":302,"context_line":"            except (TypeError, AttributeError):"},{"line_number":303,"context_line":"                LOG.error(\"Error response returned from nova: %s\","},{"line_number":304,"context_line":"                          rsp)"},{"line_number":305,"context_line":"                return"},{"line_number":306,"context_line":"            response_error \u003d False"},{"line_number":307,"context_line":"            for event in response:"},{"line_number":308,"context_line":"                try:"}],"source_content_type":"text/x-python","patch_set":11,"id":"0a79052e_e100ed03","line":305,"range":{"start_line":299,"start_character":13,"end_line":305,"end_character":22},"in_reply_to":"618e26e8_dd24a8cc","updated":"2026-06-25 15:04:54.000000000","message":"makes sense, thanks","commit_id":"f295534aa2b403aa363d271e30a7e754d68c48e2"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"ea61c3aa9e28b904a8bced1563dcc90a7cdaf022","unresolved":true,"context_lines":[{"line_number":309,"context_line":"                    code \u003d event[\u0027code\u0027]"},{"line_number":310,"context_line":"                except KeyError:"},{"line_number":311,"context_line":"                    response_error \u003d True"},{"line_number":312,"context_line":"                    continue"},{"line_number":313,"context_line":"                if hasattr(response, \u0027request_ids\u0027):"},{"line_number":314,"context_line":"                    msg \u003d f\"Nova event matching {response.request_ids}\""},{"line_number":315,"context_line":"                else:"},{"line_number":316,"context_line":"                    msg \u003d \"Nova event\""},{"line_number":317,"context_line":"                if code !\u003d 200:"},{"line_number":318,"context_line":"                    LOG.warning(\"%s: %s returned with failed \""},{"line_number":319,"context_line":"                                \"status\", msg, event)"}],"source_content_type":"text/x-python","patch_set":11,"id":"53c76f6b_2279c3f1","line":316,"range":{"start_line":312,"start_character":28,"end_line":316,"end_character":38},"updated":"2026-06-19 13:17:32.000000000","message":"I think this is dead code? Nothing will ever set `request_ids`","commit_id":"f295534aa2b403aa363d271e30a7e754d68c48e2"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"445ecefcd98b6fc99d0a50c9b5375f14c2929eb7","unresolved":true,"context_lines":[{"line_number":309,"context_line":"                    code \u003d event[\u0027code\u0027]"},{"line_number":310,"context_line":"                except KeyError:"},{"line_number":311,"context_line":"                    response_error \u003d True"},{"line_number":312,"context_line":"                    continue"},{"line_number":313,"context_line":"                if hasattr(response, \u0027request_ids\u0027):"},{"line_number":314,"context_line":"                    msg \u003d f\"Nova event matching {response.request_ids}\""},{"line_number":315,"context_line":"                else:"},{"line_number":316,"context_line":"                    msg \u003d \"Nova event\""},{"line_number":317,"context_line":"                if code !\u003d 200:"},{"line_number":318,"context_line":"                    LOG.warning(\"%s: %s returned with failed \""},{"line_number":319,"context_line":"                                \"status\", msg, event)"}],"source_content_type":"text/x-python","patch_set":11,"id":"f9970337_3c050782","line":316,"range":{"start_line":312,"start_character":28,"end_line":316,"end_character":38},"in_reply_to":"53c76f6b_2279c3f1","updated":"2026-06-25 15:04:54.000000000","message":"thanks, makes the logging simpler","commit_id":"f295534aa2b403aa363d271e30a7e754d68c48e2"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"bbf75afa598ca8849aaff96358c448ba84c0759c","unresolved":false,"context_lines":[{"line_number":309,"context_line":"                    code \u003d event[\u0027code\u0027]"},{"line_number":310,"context_line":"                except KeyError:"},{"line_number":311,"context_line":"                    response_error \u003d True"},{"line_number":312,"context_line":"                    continue"},{"line_number":313,"context_line":"                if hasattr(response, \u0027request_ids\u0027):"},{"line_number":314,"context_line":"                    msg \u003d f\"Nova event matching {response.request_ids}\""},{"line_number":315,"context_line":"                else:"},{"line_number":316,"context_line":"                    msg \u003d \"Nova event\""},{"line_number":317,"context_line":"                if code !\u003d 200:"},{"line_number":318,"context_line":"                    LOG.warning(\"%s: %s returned with failed \""},{"line_number":319,"context_line":"                                \"status\", msg, event)"}],"source_content_type":"text/x-python","patch_set":11,"id":"f01fff9a_ed36bdd8","line":316,"range":{"start_line":312,"start_character":28,"end_line":316,"end_character":38},"in_reply_to":"f9970337_3c050782","updated":"2026-09-29 09:36:44.000000000","message":"Done","commit_id":"f295534aa2b403aa363d271e30a7e754d68c48e2"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"f15610991676ef3ff8aabfa435c6eef4ec5a5899","unresolved":true,"context_lines":[{"line_number":89,"context_line":""},{"line_number":90,"context_line":"    def _get_sdk_compute_client(self):"},{"line_number":91,"context_line":""},{"line_number":92,"context_line":"        global NOVA_SESSION"},{"line_number":93,"context_line":""},{"line_number":94,"context_line":"        if not NOVA_SESSION:"},{"line_number":95,"context_line":"            NOVA_SESSION \u003d self._get_session()"}],"source_content_type":"text/x-python","patch_set":13,"id":"1d74a099_e5d2a86f","line":92,"updated":"2026-07-10 12:39:04.000000000","message":"I\u0027m not sure I understand why you need to use global variable here instead of simple use class var and do it to be something like:\n\n    class Notifier:\n        _nova_session \u003d None\n       \n    @attribute\n    def nova_session(self):\n        if self._nova_session is None:\n            conn \u003d connection.Connection(\n                session\u003dNOVA_SESSION,\n                connect_retries\u003dcfg.CONF.http_retries,\n             )\n             conn.compute.region_name \u003d cfg.CONF.nova.region_name\n             self._nova_session \u003d conn.compute\n         return self._nova_session","commit_id":"776b2eb3d3e9b8287786912f76b92b2be48ba9eb"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"f881ac21354099cfa60020b373e233bf76458408","unresolved":false,"context_lines":[{"line_number":89,"context_line":""},{"line_number":90,"context_line":"    def _get_sdk_compute_client(self):"},{"line_number":91,"context_line":""},{"line_number":92,"context_line":"        global NOVA_SESSION"},{"line_number":93,"context_line":""},{"line_number":94,"context_line":"        if not NOVA_SESSION:"},{"line_number":95,"context_line":"            NOVA_SESSION \u003d self._get_session()"}],"source_content_type":"text/x-python","patch_set":13,"id":"efa6320a_5a224a36","line":92,"in_reply_to":"1d74a099_e5d2a86f","updated":"2026-07-24 12:29:17.000000000","message":"good idea, I changed to class property, nova_client","commit_id":"776b2eb3d3e9b8287786912f76b92b2be48ba9eb"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"3c4a13494b537a0b90401ac33057bbc99b3c675c","unresolved":true,"context_lines":[{"line_number":93,"context_line":"            api_versions.APIVersion(NOVA_API_VERSION),"},{"line_number":94,"context_line":"            session\u003dself.session,"},{"line_number":95,"context_line":"            region_name\u003dcfg.CONF.nova.region_name,"},{"line_number":96,"context_line":"            endpoint_type\u003dcfg.CONF.nova.endpoint_type,"},{"line_number":97,"context_line":"            extensions\u003dself.extensions,"},{"line_number":98,"context_line":"            connect_retries\u003dcfg.CONF.http_retries,"},{"line_number":99,"context_line":"            global_request_id\u003dglobal_id)"}],"source_content_type":"text/x-python","patch_set":15,"id":"2fb82f14_9b8c5b47","side":"PARENT","line":96,"range":{"start_line":96,"start_character":40,"end_line":96,"end_character":53},"updated":"2026-07-27 08:18:09.000000000","message":"From Claude: we are dropping this config option.\nEither:\n* Map endpoint_type to the equivalent SDK mechanism (e.g., pass interface\u003dcfg.CONF.nova.endpoint_type to the Connection), or\n* Document this as a breaking change in the release note (currently classified under other: rather than upgrade:).","commit_id":"f004042141a366a0e5646065f86862052dfd8f84"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"eca3e0e4bc3bbbe689332129c4af7b95b091b4db","unresolved":false,"context_lines":[{"line_number":93,"context_line":"            api_versions.APIVersion(NOVA_API_VERSION),"},{"line_number":94,"context_line":"            session\u003dself.session,"},{"line_number":95,"context_line":"            region_name\u003dcfg.CONF.nova.region_name,"},{"line_number":96,"context_line":"            endpoint_type\u003dcfg.CONF.nova.endpoint_type,"},{"line_number":97,"context_line":"            extensions\u003dself.extensions,"},{"line_number":98,"context_line":"            connect_retries\u003dcfg.CONF.http_retries,"},{"line_number":99,"context_line":"            global_request_id\u003dglobal_id)"}],"source_content_type":"text/x-python","patch_set":15,"id":"222757a0_c4a3fa6f","side":"PARENT","line":96,"range":{"start_line":96,"start_character":40,"end_line":96,"end_character":53},"in_reply_to":"2fb82f14_9b8c5b47","updated":"2026-07-27 11:47:35.000000000","message":"true, I missed that part. I added deprecation for endpoint_type, and removed region_name as with the same name we have cfg option from Keystone Adapter. Updated the re-no also with it","commit_id":"f004042141a366a0e5646065f86862052dfd8f84"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"3c4a13494b537a0b90401ac33057bbc99b3c675c","unresolved":true,"context_lines":[{"line_number":44,"context_line":"NEUTRON_NOVA_EVENT_STATUS_MAP \u003d {constants.PORT_STATUS_ACTIVE: \u0027completed\u0027,"},{"line_number":45,"context_line":"                                 constants.PORT_STATUS_ERROR: \u0027failed\u0027,"},{"line_number":46,"context_line":"                                 constants.PORT_STATUS_DOWN: \u0027completed\u0027}"},{"line_number":47,"context_line":"NOVA_API_VERSION \u003d \"2.1\""},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"NOTIFIER_ENABLE_DEFAULT \u003d True"},{"line_number":50,"context_line":"# NOTE(ralonsoh): the Nova notifier can be called simultaneously by several RPC"}],"source_content_type":"text/x-python","patch_set":15,"id":"5b5df424_3a7b9a5c","line":47,"range":{"start_line":47,"start_character":0,"end_line":47,"end_character":2},"updated":"2026-07-27 08:18:09.000000000","message":"Dead code now","commit_id":"53dc5acc7b3dc2f808fcb79dd8f4b4a896205cfc"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"eca3e0e4bc3bbbe689332129c4af7b95b091b4db","unresolved":false,"context_lines":[{"line_number":44,"context_line":"NEUTRON_NOVA_EVENT_STATUS_MAP \u003d {constants.PORT_STATUS_ACTIVE: \u0027completed\u0027,"},{"line_number":45,"context_line":"                                 constants.PORT_STATUS_ERROR: \u0027failed\u0027,"},{"line_number":46,"context_line":"                                 constants.PORT_STATUS_DOWN: \u0027completed\u0027}"},{"line_number":47,"context_line":"NOVA_API_VERSION \u003d \"2.1\""},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"NOTIFIER_ENABLE_DEFAULT \u003d True"},{"line_number":50,"context_line":"# NOTE(ralonsoh): the Nova notifier can be called simultaneously by several RPC"}],"source_content_type":"text/x-python","patch_set":15,"id":"e9f260ba_1357786a","line":47,"range":{"start_line":47,"start_character":0,"end_line":47,"end_character":2},"in_reply_to":"5b5df424_3a7b9a5c","updated":"2026-07-27 11:47:35.000000000","message":"thanks, removed","commit_id":"53dc5acc7b3dc2f808fcb79dd8f4b4a896205cfc"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"3c4a13494b537a0b90401ac33057bbc99b3c675c","unresolved":true,"context_lines":[{"line_number":58,"context_line":"class Notifier:"},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"    _instance \u003d None"},{"line_number":61,"context_line":"    _session \u003d None"},{"line_number":62,"context_line":"    _nova_client \u003d None"},{"line_number":63,"context_line":""},{"line_number":64,"context_line":"    @classmethod"},{"line_number":65,"context_line":"    def get_instance(cls):"}],"source_content_type":"text/x-python","patch_set":15,"id":"9f80430f_18e2ac66","line":62,"range":{"start_line":61,"start_character":4,"end_line":62,"end_character":23},"updated":"2026-07-27 08:18:09.000000000","message":"These are instance variables, not class ones.","commit_id":"53dc5acc7b3dc2f808fcb79dd8f4b4a896205cfc"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"eca3e0e4bc3bbbe689332129c4af7b95b091b4db","unresolved":false,"context_lines":[{"line_number":58,"context_line":"class Notifier:"},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"    _instance \u003d None"},{"line_number":61,"context_line":"    _session \u003d None"},{"line_number":62,"context_line":"    _nova_client \u003d None"},{"line_number":63,"context_line":""},{"line_number":64,"context_line":"    @classmethod"},{"line_number":65,"context_line":"    def get_instance(cls):"}],"source_content_type":"text/x-python","patch_set":15,"id":"03ca19da_0017f599","line":62,"range":{"start_line":61,"start_character":4,"end_line":62,"end_character":23},"in_reply_to":"9f80430f_18e2ac66","updated":"2026-07-27 11:47:35.000000000","message":"true, moved them to __init__","commit_id":"53dc5acc7b3dc2f808fcb79dd8f4b4a896205cfc"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"3c4a13494b537a0b90401ac33057bbc99b3c675c","unresolved":true,"context_lines":[{"line_number":71,"context_line":"        self.batch_notifier \u003d batch_notifier.BatchNotifier("},{"line_number":72,"context_line":"            cfg.CONF.send_events_interval, self.send_events)"},{"line_number":73,"context_line":""},{"line_number":74,"context_line":"    def _get_session(self):"},{"line_number":75,"context_line":"        auth \u003d ks_loading.load_auth_from_conf_options(cfg.CONF, \u0027nova\u0027)"},{"line_number":76,"context_line":"        session \u003d ks_loading.load_session_from_conf_options("},{"line_number":77,"context_line":"            cfg.CONF,"}],"source_content_type":"text/x-python","patch_set":15,"id":"22113d4d_1725d606","line":74,"range":{"start_line":74,"start_character":21,"end_line":74,"end_character":25},"updated":"2026-07-27 08:18:09.000000000","message":"small nit: That looks like a static method to me.","commit_id":"53dc5acc7b3dc2f808fcb79dd8f4b4a896205cfc"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"eca3e0e4bc3bbbe689332129c4af7b95b091b4db","unresolved":false,"context_lines":[{"line_number":71,"context_line":"        self.batch_notifier \u003d batch_notifier.BatchNotifier("},{"line_number":72,"context_line":"            cfg.CONF.send_events_interval, self.send_events)"},{"line_number":73,"context_line":""},{"line_number":74,"context_line":"    def _get_session(self):"},{"line_number":75,"context_line":"        auth \u003d ks_loading.load_auth_from_conf_options(cfg.CONF, \u0027nova\u0027)"},{"line_number":76,"context_line":"        session \u003d ks_loading.load_session_from_conf_options("},{"line_number":77,"context_line":"            cfg.CONF,"}],"source_content_type":"text/x-python","patch_set":15,"id":"57c3ec61_32aa815d","line":74,"range":{"start_line":74,"start_character":21,"end_line":74,"end_character":25},"in_reply_to":"22113d4d_1725d606","updated":"2026-07-27 11:47:35.000000000","message":"Done","commit_id":"53dc5acc7b3dc2f808fcb79dd8f4b4a896205cfc"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"3c4a13494b537a0b90401ac33057bbc99b3c675c","unresolved":true,"context_lines":[{"line_number":283,"context_line":"                batched_events))"},{"line_number":284,"context_line":"        except ks_exceptions.EndpointNotFound:"},{"line_number":285,"context_line":"            LOG.exception(\"Nova endpoint not found, invalidating the session\")"},{"line_number":286,"context_line":"            if self._session:"},{"line_number":287,"context_line":"                self._session.invalidate()"},{"line_number":288,"context_line":"            self._nova_client \u003d None"},{"line_number":289,"context_line":"        except sdk_exc.NotFoundException:"}],"source_content_type":"text/x-python","patch_set":15,"id":"37fe293c_8ee2d371","line":286,"range":{"start_line":286,"start_character":12,"end_line":286,"end_character":29},"updated":"2026-07-27 08:18:09.000000000","message":"Just asking: here we don\u0027t need to make ``self._session \u003d None``, just invalidate the current one, right?","commit_id":"53dc5acc7b3dc2f808fcb79dd8f4b4a896205cfc"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"eca3e0e4bc3bbbe689332129c4af7b95b091b4db","unresolved":false,"context_lines":[{"line_number":283,"context_line":"                batched_events))"},{"line_number":284,"context_line":"        except ks_exceptions.EndpointNotFound:"},{"line_number":285,"context_line":"            LOG.exception(\"Nova endpoint not found, invalidating the session\")"},{"line_number":286,"context_line":"            if self._session:"},{"line_number":287,"context_line":"                self._session.invalidate()"},{"line_number":288,"context_line":"            self._nova_client \u003d None"},{"line_number":289,"context_line":"        except sdk_exc.NotFoundException:"}],"source_content_type":"text/x-python","patch_set":15,"id":"405ea3ab_b9e0a195","line":286,"range":{"start_line":286,"start_character":12,"end_line":286,"end_character":29},"in_reply_to":"37fe293c_8ee2d371","updated":"2026-07-27 11:47:35.000000000","message":"yes, invalidation is enough for session, as new token will be asked at next usage. for _nova_client it can happen that even the endpoint changed during upgrade or similar, so \u003d None can be the sure solution.","commit_id":"53dc5acc7b3dc2f808fcb79dd8f4b4a896205cfc"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"bbf75afa598ca8849aaff96358c448ba84c0759c","unresolved":true,"context_lines":[{"line_number":84,"context_line":"        if self._nova_client is None:"},{"line_number":85,"context_line":"            if self._session is None:"},{"line_number":86,"context_line":"                self._session \u003d self._get_session()"},{"line_number":87,"context_line":"            conn \u003d connection.Connection("},{"line_number":88,"context_line":"                session\u003dself._session,"},{"line_number":89,"context_line":"                oslo_conf\u003dcfg.CONF,"},{"line_number":90,"context_line":"                connect_retries\u003dcfg.CONF.http_retries,"}],"source_content_type":"text/x-python","patch_set":18,"id":"b52b2e74_af529639","line":87,"updated":"2026-09-29 09:36:44.000000000","message":"Do you want to set `app_name` and `app_version`. These are used in the user-agent header which could be helpful for debugging?","commit_id":"f92921f8e7a90b499feef29747c606706489636e"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"0603c32d6c73760e817c3b21fbabbce810dd03fc","unresolved":false,"context_lines":[{"line_number":84,"context_line":"        if self._nova_client is None:"},{"line_number":85,"context_line":"            if self._session is None:"},{"line_number":86,"context_line":"                self._session \u003d self._get_session()"},{"line_number":87,"context_line":"            conn \u003d connection.Connection("},{"line_number":88,"context_line":"                session\u003dself._session,"},{"line_number":89,"context_line":"                oslo_conf\u003dcfg.CONF,"},{"line_number":90,"context_line":"                connect_retries\u003dcfg.CONF.http_retries,"}],"source_content_type":"text/x-python","patch_set":18,"id":"3cf932fb_9c70be1c","line":87,"in_reply_to":"b52b2e74_af529639","updated":"2026-10-02 08:17:12.000000000","message":"good point , I added app_name and version","commit_id":"f92921f8e7a90b499feef29747c606706489636e"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"bbf75afa598ca8849aaff96358c448ba84c0759c","unresolved":true,"context_lines":[{"line_number":87,"context_line":"            conn \u003d connection.Connection("},{"line_number":88,"context_line":"                session\u003dself._session,"},{"line_number":89,"context_line":"                oslo_conf\u003dcfg.CONF,"},{"line_number":90,"context_line":"                connect_retries\u003dcfg.CONF.http_retries,"},{"line_number":91,"context_line":"            )"},{"line_number":92,"context_line":"            self._nova_client \u003d conn.compute"},{"line_number":93,"context_line":"        return self._nova_client"}],"source_content_type":"text/x-python","patch_set":18,"id":"a856d1bb_4383fb1d","line":90,"updated":"2026-09-29 09:36:44.000000000","message":"As noted in the next file, you should be able to drop this if you\u0027re willing to use `deprecated_opts` when registering the ksa opts. If not, you probably also need to add:\n\n```suggestion\n                connect_retries\u003dcfg.CONF.http_retries,\n                interface\u003dcfg.CONF.endpoint_type,\n```\n\n....but `deprecated_opts` is the better path 😀","commit_id":"f92921f8e7a90b499feef29747c606706489636e"}],"neutron/tests/unit/notifiers/test_nova.py":[{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"8136ff2c00a5b2ec297afd3229f0f7a268c9c600","unresolved":false,"context_lines":[{"line_number":24,"context_line":"from neutron_lib import exceptions as n_exc"},{"line_number":25,"context_line":"from neutron_lib.plugins import constants as plugin_constants"},{"line_number":26,"context_line":"from neutron_lib.plugins import directory"},{"line_number":27,"context_line":"from openstack.compute.v2 import server_external_events"},{"line_number":28,"context_line":"from openstack import exceptions as sdk_exc"},{"line_number":29,"context_line":"from oslo_config import cfg"},{"line_number":30,"context_line":"from oslo_utils import uuidutils"}],"source_content_type":"text/x-python","patch_set":6,"id":"b5b25b0a_d0da302b","line":27,"updated":"2026-06-10 15:54:00.000000000","message":"pep8: E0611: No name \u0027server_external_events\u0027 in module \u0027openstack.compute.v2\u0027 (no-name-in-module)","commit_id":"16c40bad3a2d7e2f7fa243ea1d1d7ce3fa83c77f"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"233fce6309ab78e1b9ae7929cad7803f157e8458","unresolved":false,"context_lines":[{"line_number":24,"context_line":"from neutron_lib import exceptions as n_exc"},{"line_number":25,"context_line":"from neutron_lib.plugins import constants as plugin_constants"},{"line_number":26,"context_line":"from neutron_lib.plugins import directory"},{"line_number":27,"context_line":"from openstack.compute.v2 import server_external_events"},{"line_number":28,"context_line":"from openstack import exceptions as sdk_exc"},{"line_number":29,"context_line":"from oslo_config import cfg"},{"line_number":30,"context_line":"from oslo_utils import uuidutils"}],"source_content_type":"text/x-python","patch_set":7,"id":"283e2a72_be1daa9e","line":27,"updated":"2026-06-12 11:18:09.000000000","message":"pep8: E0611: No name \u0027server_external_events\u0027 in module \u0027openstack.compute.v2\u0027 (no-name-in-module)","commit_id":"ea3852a2ed26012ff7d73cbeda5f3d4b5369799a"}],"releasenotes/notes/Use-SDK-for-Nova-notifications-510a5ac4645307bd.yaml":[{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"bbf75afa598ca8849aaff96358c448ba84c0759c","unresolved":true,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"upgrade:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    Neutron\u0027s notifier changed to use ``openstacksdk`` for sending"},{"line_number":5,"context_line":"    ``os-server-external-events`` to Nova instead of ``python-novaclient``."},{"line_number":6,"context_line":"    The ``[nova] endpoint_type`` configuration option is deprecated in favor"},{"line_number":7,"context_line":"    of the standard keystoneauth1 adapter option ``[nova] valid_interfaces``."},{"line_number":8,"context_line":"    Operators using a non-default ``endpoint_type`` should set"}],"source_content_type":"text/x-yaml","patch_set":18,"id":"0fa14183_cf235571","line":5,"range":{"start_line":3,"start_character":5,"end_line":5,"end_character":75},"updated":"2026-09-29 09:36:44.000000000","message":"I think this is maybe too internal to note in a release note? The only operator facing impact of this is the different user-agent.","commit_id":"f92921f8e7a90b499feef29747c606706489636e"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"a71ccaca655f143a4b09dae9dacc0d1ef9c7fb96","unresolved":true,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"upgrade:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    Neutron\u0027s notifier changed to use ``openstacksdk`` for sending"},{"line_number":5,"context_line":"    ``os-server-external-events`` to Nova instead of ``python-novaclient``."},{"line_number":6,"context_line":"    The ``[nova] endpoint_type`` configuration option is deprecated in favor"},{"line_number":7,"context_line":"    of the standard keystoneauth1 adapter option ``[nova] valid_interfaces``."},{"line_number":8,"context_line":"    Operators using a non-default ``endpoint_type`` should set"}],"source_content_type":"text/x-yaml","patch_set":18,"id":"9762cd6a_36fe6f17","line":5,"range":{"start_line":3,"start_character":5,"end_line":5,"end_character":75},"in_reply_to":"0fa14183_cf235571","updated":"2026-10-02 09:19:30.000000000","message":"the importance can be for debugging, and if all novaclient calls disappear than they only need SDK to be ready in the container whatever they have Neutron in","commit_id":"f92921f8e7a90b499feef29747c606706489636e"}]}
