)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"5b6b9ab733727b0482824c1b72847bd3f52c7836","unresolved":true,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Minor refactor of the EVPN FSM"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This patch is pure refactor of EVPN FSM in preparation for introducing"},{"line_number":10,"context_line":"new CONFIGURATION(name TBD) state. See LP#2167627 for further reasoning"},{"line_number":11,"context_line":"States and Events are now Enums for transition table clarity."},{"line_number":12,"context_line":"Success in advance method is logged after the callback completed."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"04f27b5f_e3086876","line":9,"updated":"2026-09-20 17:59:56.000000000","message":"I liked the previous implementation better. It was easier to read as the transitions were at one place. The whole mechanism relied only on the state transitions, as FSM should do but now there is a lot of condition branching in the code just to complement this because the states are now part of the actions, which I think should be separated.","commit_id":"babbc7f8eec8580a40c3f98459e1a5f0113ba9d2"},{"author":{"_account_id":34271,"name":"Miro Tomaska","display_name":"Miro Tomaska","email":"mtomaska@redhat.com","username":"mtomaska"},"change_message_id":"6f502cbf47312591df481142a4802af0d537f34d","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Minor refactor of the EVPN FSM"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This patch is pure refactor of EVPN FSM in preparation for introducing"},{"line_number":10,"context_line":"new CONFIGURATION(name TBD) state. See LP#2167627 for further reasoning"},{"line_number":11,"context_line":"States and Events are now Enums for transition table clarity."},{"line_number":12,"context_line":"Success in advance method is logged after the callback completed."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"64601037_939c61a7","line":9,"in_reply_to":"04f27b5f_e3086876","updated":"2026-09-24 16:59:07.000000000","message":"Done","commit_id":"babbc7f8eec8580a40c3f98459e1a5f0113ba9d2"}],"/PATCHSET_LEVEL":[{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"5b6b9ab733727b0482824c1b72847bd3f52c7836","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"9f90ba66_9a5f7f1c","updated":"2026-09-20 17:59:56.000000000","message":"I read the LP but I do miss the motivation behind the removal of some states. The state machine in this current patch does not clearly","commit_id":"babbc7f8eec8580a40c3f98459e1a5f0113ba9d2"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"81d07257aa5a51daa8d1963affcbefee566507ec","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"f6f112e9_e78f5747","updated":"2026-09-29 13:16:37.000000000","message":"recheck requirements patch merged now","commit_id":"e3a0b306db0d377b173486d8cf0e687f2807c2c2"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"af4d334497d51c8dce751b511abb532029f18a86","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":8,"id":"a51de4c0_7b9cb72b","updated":"2026-09-30 06:20:01.000000000","message":"recheck openstack-tox-py311","commit_id":"f9297ce4ef1795c46efc85f74b48a275eec46b5a"}],"neutron/agent/ovn/extensions/evpn/fsm.py":[{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"034990618b38b5e929b840758de6010d88a204ad","unresolved":true,"context_lines":[{"line_number":157,"context_line":"            evpn.state \u003d new_state"},{"line_number":158,"context_line":"            LOG.info(\"EVPN %s: %s -\u003e %s (event\u003d%s)\","},{"line_number":159,"context_line":"                     vrf, previous_state, evpn.state, event)"},{"line_number":160,"context_line":"            if evpn.state \u003d\u003d EVPNState.DESTROY:"},{"line_number":161,"context_line":"                self.instances.pop(vrf, None)"}],"source_content_type":"text/x-python","patch_set":2,"id":"d1933707_f5fba86e","line":161,"range":{"start_line":160,"start_character":0,"end_line":161,"end_character":45},"updated":"2026-09-21 19:39:38.000000000","message":"What\u0027s the reason to move the instance deletion here? It makes the `advance()` method dependent on a state name, it was generic before.","commit_id":"2436c771f2d20bb27ed2566274aa5e0019d86fca"},{"author":{"_account_id":34271,"name":"Miro Tomaska","display_name":"Miro Tomaska","email":"mtomaska@redhat.com","username":"mtomaska"},"change_message_id":"6f502cbf47312591df481142a4802af0d537f34d","unresolved":false,"context_lines":[{"line_number":157,"context_line":"            evpn.state \u003d new_state"},{"line_number":158,"context_line":"            LOG.info(\"EVPN %s: %s -\u003e %s (event\u003d%s)\","},{"line_number":159,"context_line":"                     vrf, previous_state, evpn.state, event)"},{"line_number":160,"context_line":"            if evpn.state \u003d\u003d EVPNState.DESTROY:"},{"line_number":161,"context_line":"                self.instances.pop(vrf, None)"}],"source_content_type":"text/x-python","patch_set":2,"id":"8719a6ef_2427be61","line":161,"range":{"start_line":160,"start_character":0,"end_line":161,"end_character":45},"in_reply_to":"d15c86f6_c4a66c25","updated":"2026-09-24 16:59:07.000000000","message":"Done","commit_id":"2436c771f2d20bb27ed2566274aa5e0019d86fca"},{"author":{"_account_id":34271,"name":"Miro Tomaska","display_name":"Miro Tomaska","email":"mtomaska@redhat.com","username":"mtomaska"},"change_message_id":"60d3134dbc9fd2b0cc5268d662952c9cec5be06e","unresolved":true,"context_lines":[{"line_number":157,"context_line":"            evpn.state \u003d new_state"},{"line_number":158,"context_line":"            LOG.info(\"EVPN %s: %s -\u003e %s (event\u003d%s)\","},{"line_number":159,"context_line":"                     vrf, previous_state, evpn.state, event)"},{"line_number":160,"context_line":"            if evpn.state \u003d\u003d EVPNState.DESTROY:"},{"line_number":161,"context_line":"                self.instances.pop(vrf, None)"}],"source_content_type":"text/x-python","patch_set":2,"id":"d15c86f6_c4a66c25","line":161,"range":{"start_line":160,"start_character":0,"end_line":161,"end_character":45},"in_reply_to":"d1933707_f5fba86e","updated":"2026-09-24 15:51:33.000000000","message":"I agree, I missed this when refactoring and there is _destroy method already that does that with transitions of\n```        (EVPNState.WAITING_FOR_VRF, EVPNEvent.PORT_BINDING_DELETE):\n            (EVPNState.DESTROY, \"_destroy\"),\n        (EVPNState.WAITING_FOR_PORT_BINDING, EVPNEvent.VRF_DELETE):\n            (EVPNState.DESTROY, \"_destroy\"),```","commit_id":"2436c771f2d20bb27ed2566274aa5e0019d86fca"}]}
