)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"8c3f85c2f5788d821dbdd44a873141167440acbf","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"de933a96_1cd71c9a","updated":"2026-06-02 09:11:17.000000000","message":"Just one minor comment about grouping imports which you can fix while You will be rebasing that patch. Other than that LGTM for me.","commit_id":"2176a44e6be60f297b94fe00ddf589fa37ecf0c1"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"2c5b62802a64c67fb29c3470efcffd362b51a22e","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":11,"id":"12400b27_f20ed41d","updated":"2026-06-08 21:49:44.000000000","message":"recheck - this patch does not change the API of a volume resize","commit_id":"25c8c8fb25b33e42ef34145f26722f8e1e7ac08f"}],"neutron/agent/ovn/extensions/evpn/utils.py":[{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"d904ddd972982f1e693eb377a9ee639a9071f199","unresolved":true,"context_lines":[{"line_number":17,"context_line":""},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"def evpn_vrf_name(uuid):"},{"line_number":20,"context_line":"    return constants.EVPN_VRF_PREFIX + str(uuid)[:12]"}],"source_content_type":"text/x-python","patch_set":9,"id":"3d20c378_d538472b","line":20,"updated":"2026-06-08 10:03:13.000000000","message":"can you use DEVICE_NAME_MAX_LEN constant defined in https://github.com/openstack/neutron-lib/blob/52bbe05b1359c0b6982de4603827c760774d7283/neutron_lib/constants.py#L324 and maybe do something like:\n\n    def evpn_vrf_name(uuid):\n        return (constants.EVPN_VRF_PREFIX + str(uuid))[:n_lib_const.DEVICE_NAME_MAX_LEN]\n       \nThat way it will be consistent with other similar functions which creates device names in Neutron.\n\nBTW (no action needed in this patch), we should maybe create one common helper function in neutron-lib to create device name in the consistent way always, something like:\n\n    def dev_name(prefix, uuid):\n        return (prefix + uuid)[constants.DEVICE_NAME_MAX_LEN]\n        \nand use it in all places like this one.","commit_id":"d27c4c72095c61325877631b9bc050d75aeefb9f"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"647e9c8abb87098e32ca564f0dd2ed51d2fa35fd","unresolved":false,"context_lines":[{"line_number":17,"context_line":""},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"def evpn_vrf_name(uuid):"},{"line_number":20,"context_line":"    return constants.EVPN_VRF_PREFIX + str(uuid)[:12]"}],"source_content_type":"text/x-python","patch_set":9,"id":"11b60d10_54f4f12a","line":20,"in_reply_to":"3d20c378_d538472b","updated":"2026-06-08 13:16:18.000000000","message":"Done","commit_id":"d27c4c72095c61325877631b9bc050d75aeefb9f"}],"neutron/common/ovn/constants.py":[{"author":{"_account_id":5756,"name":"Terry Wilson","email":"twilson@redhat.com","username":"otherwiseguy"},"change_message_id":"6d2dd7b042f6249d23109883689b460e706fe530","unresolved":true,"context_lines":[{"line_number":424,"context_line":"LSP_OPTIONS_LOCALNET_LEARN_FDB \u003d \u0027localnet_learn_fdb\u0027"},{"line_number":425,"context_line":""},{"line_number":426,"context_line":"LR_OPTIONS_MAC_AGE_LIMIT \u003d \u0027mac_binding_age_threshold\u0027"},{"line_number":427,"context_line":"LR_OPTIONS_DYNAMIC_ROUTING_VRF_NAME \u003d \u0027dynamic-routing-vrf-name\u0027"},{"line_number":428,"context_line":""},{"line_number":429,"context_line":"LS_OTHER_CONFIG_DYNAMIC_ROUTING_VNI \u003d \u0027dynamic-routing-vni\u0027"},{"line_number":430,"context_line":"LS_OTHER_CONFIG_DYNAMIC_ROUTING_BRIDGE_IFNAME \u003d \u0027dynamic-routing-bridge-ifname\u0027"},{"line_number":431,"context_line":"LS_OTHER_CONFIG_DYNAMIC_ROUTING_VXLAN_IFNAME \u003d \u0027dynamic-routing-vxlan-ifname\u0027"},{"line_number":432,"context_line":""},{"line_number":433,"context_line":"EVPN_LS_NAME_PREFIX \u003d \u0027evpn-ls-\u0027"},{"line_number":434,"context_line":"EVPN_LRP_NAME_PREFIX \u003d \u0027evpn-lrp-\u0027"}],"source_content_type":"text/x-python","patch_set":1,"id":"5dc2e16c_406ff821","line":431,"range":{"start_line":427,"start_character":0,"end_line":431,"end_character":44},"updated":"2026-05-27 13:38:06.000000000","message":"On the plus side, these are descriptive. On the other hand, they are almost impossible to fit on an actual line of code.","commit_id":"236767b370b8f616d05bcd21fd57978bc585987d"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"26ad4d1b020051845d6a1047f235a72572fec7f3","unresolved":false,"context_lines":[{"line_number":424,"context_line":"LSP_OPTIONS_LOCALNET_LEARN_FDB \u003d \u0027localnet_learn_fdb\u0027"},{"line_number":425,"context_line":""},{"line_number":426,"context_line":"LR_OPTIONS_MAC_AGE_LIMIT \u003d \u0027mac_binding_age_threshold\u0027"},{"line_number":427,"context_line":"LR_OPTIONS_DYNAMIC_ROUTING_VRF_NAME \u003d \u0027dynamic-routing-vrf-name\u0027"},{"line_number":428,"context_line":""},{"line_number":429,"context_line":"LS_OTHER_CONFIG_DYNAMIC_ROUTING_VNI \u003d \u0027dynamic-routing-vni\u0027"},{"line_number":430,"context_line":"LS_OTHER_CONFIG_DYNAMIC_ROUTING_BRIDGE_IFNAME \u003d \u0027dynamic-routing-bridge-ifname\u0027"},{"line_number":431,"context_line":"LS_OTHER_CONFIG_DYNAMIC_ROUTING_VXLAN_IFNAME \u003d \u0027dynamic-routing-vxlan-ifname\u0027"},{"line_number":432,"context_line":""},{"line_number":433,"context_line":"EVPN_LS_NAME_PREFIX \u003d \u0027evpn-ls-\u0027"},{"line_number":434,"context_line":"EVPN_LRP_NAME_PREFIX \u003d \u0027evpn-lrp-\u0027"}],"source_content_type":"text/x-python","patch_set":1,"id":"23396ac8_c39e9325","line":431,"range":{"start_line":427,"start_character":0,"end_line":431,"end_character":44},"in_reply_to":"49b2e667_9fda7b2a","updated":"2026-05-27 20:27:47.000000000","message":"Done","commit_id":"236767b370b8f616d05bcd21fd57978bc585987d"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"e64ab1a8ddb77eb9531e80dac77319eea1755135","unresolved":true,"context_lines":[{"line_number":424,"context_line":"LSP_OPTIONS_LOCALNET_LEARN_FDB \u003d \u0027localnet_learn_fdb\u0027"},{"line_number":425,"context_line":""},{"line_number":426,"context_line":"LR_OPTIONS_MAC_AGE_LIMIT \u003d \u0027mac_binding_age_threshold\u0027"},{"line_number":427,"context_line":"LR_OPTIONS_DYNAMIC_ROUTING_VRF_NAME \u003d \u0027dynamic-routing-vrf-name\u0027"},{"line_number":428,"context_line":""},{"line_number":429,"context_line":"LS_OTHER_CONFIG_DYNAMIC_ROUTING_VNI \u003d \u0027dynamic-routing-vni\u0027"},{"line_number":430,"context_line":"LS_OTHER_CONFIG_DYNAMIC_ROUTING_BRIDGE_IFNAME \u003d \u0027dynamic-routing-bridge-ifname\u0027"},{"line_number":431,"context_line":"LS_OTHER_CONFIG_DYNAMIC_ROUTING_VXLAN_IFNAME \u003d \u0027dynamic-routing-vxlan-ifname\u0027"},{"line_number":432,"context_line":""},{"line_number":433,"context_line":"EVPN_LS_NAME_PREFIX \u003d \u0027evpn-ls-\u0027"},{"line_number":434,"context_line":"EVPN_LRP_NAME_PREFIX \u003d \u0027evpn-lrp-\u0027"}],"source_content_type":"text/x-python","patch_set":1,"id":"49b2e667_9fda7b2a","line":431,"range":{"start_line":427,"start_character":0,"end_line":431,"end_character":44},"in_reply_to":"5dc2e16c_406ff821","updated":"2026-05-27 13:42:17.000000000","message":"so shall we use just `DR` instead of `DYNAMIC_ROUTING` ?","commit_id":"236767b370b8f616d05bcd21fd57978bc585987d"}],"neutron/services/evpn/commands.py":[{"author":{"_account_id":38298,"name":"Helen Chen","display_name":"Helen Chen","email":"ichen@redhat.com","username":"ingwherchen"},"change_message_id":"06cd2531b3e3cdda092b4ad1182486125daf1787","unresolved":true,"context_lines":[{"line_number":85,"context_line":"            bgp_const.LR_OPTIONS_DYNAMIC_ROUTING: \u0027true\u0027,"},{"line_number":86,"context_line":"            bgp_const.LR_OPTIONS_DYNAMIC_ROUTING_VRF_ID: str(self.vni),"},{"line_number":87,"context_line":"            ovn_const.LR_OPTIONS_DR_VRF_NAME:"},{"line_number":88,"context_line":"                \u0027evpnvrf-%s\u0027 % self.vni,"},{"line_number":89,"context_line":"        }"},{"line_number":90,"context_line":""},{"line_number":91,"context_line":"    def _create_dummy_ls(self, txn, ls_name):"}],"source_content_type":"text/x-python","patch_set":6,"id":"8e0e97d4_f1880b06","line":88,"range":{"start_line":88,"start_character":17,"end_line":88,"end_character":27},"updated":"2026-06-04 14:51:43.000000000","message":"Do we want to follow the pattern \u0027vr\u003cfirst 12 characters in uuid str\u003e\u0027?  That\u0027s the assumption here: https://github.com/openstack/neutron/blob/fb4b93020e6cc49342ce684292c6ee1ae6d8412c/neutron/agent/ovn/extensions/evpn/netlink_monitor.py#L29\nhttps://github.com/openstack/neutron/blob/fb4b93020e6cc49342ce684292c6ee1ae6d8412c/neutron/agent/ovn/extensions/evpn/netlink_monitor.py#L55","commit_id":"6421cf1baa7c2bf4dfbe62ba090b94e72cc3f700"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"29c215606215c155d46927622c39c7f2613eb531","unresolved":false,"context_lines":[{"line_number":85,"context_line":"            bgp_const.LR_OPTIONS_DYNAMIC_ROUTING: \u0027true\u0027,"},{"line_number":86,"context_line":"            bgp_const.LR_OPTIONS_DYNAMIC_ROUTING_VRF_ID: str(self.vni),"},{"line_number":87,"context_line":"            ovn_const.LR_OPTIONS_DR_VRF_NAME:"},{"line_number":88,"context_line":"                \u0027evpnvrf-%s\u0027 % self.vni,"},{"line_number":89,"context_line":"        }"},{"line_number":90,"context_line":""},{"line_number":91,"context_line":"    def _create_dummy_ls(self, txn, ls_name):"}],"source_content_type":"text/x-python","patch_set":6,"id":"baf0b87b_68bdd8b3","line":88,"range":{"start_line":88,"start_character":17,"end_line":88,"end_character":27},"in_reply_to":"8e0e97d4_f1880b06","updated":"2026-06-04 20:16:22.000000000","message":"yes, and I think it should be a constant pattern","commit_id":"6421cf1baa7c2bf4dfbe62ba090b94e72cc3f700"},{"author":{"_account_id":38298,"name":"Helen Chen","display_name":"Helen Chen","email":"ichen@redhat.com","username":"ingwherchen"},"change_message_id":"06cd2531b3e3cdda092b4ad1182486125daf1787","unresolved":true,"context_lines":[{"line_number":109,"context_line":"            bgp_const.LRP_OPTIONS_DYNAMIC_ROUTING_MAINTAIN_VRF: \u0027true\u0027,"},{"line_number":110,"context_line":"        }"},{"line_number":111,"context_line":"        external_ids \u003d {"},{"line_number":112,"context_line":"            evpn_const.EVPN_LRP_RMAC_EXT_ID_KEY: mac,"},{"line_number":113,"context_line":"            evpn_const.EVPN_LRP_VNI_EXT_ID_KEY: str(self.vni),"},{"line_number":114,"context_line":"            evpn_const.EVPN_LRP_VLAN_EXT_ID_KEY: str(self.vlan),"},{"line_number":115,"context_line":"        }"}],"source_content_type":"text/x-python","patch_set":6,"id":"ed767a85_645dac54","line":112,"range":{"start_line":112,"start_character":12,"end_line":112,"end_character":52},"updated":"2026-06-04 14:51:43.000000000","message":"Probably not needed","commit_id":"6421cf1baa7c2bf4dfbe62ba090b94e72cc3f700"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"29c215606215c155d46927622c39c7f2613eb531","unresolved":false,"context_lines":[{"line_number":109,"context_line":"            bgp_const.LRP_OPTIONS_DYNAMIC_ROUTING_MAINTAIN_VRF: \u0027true\u0027,"},{"line_number":110,"context_line":"        }"},{"line_number":111,"context_line":"        external_ids \u003d {"},{"line_number":112,"context_line":"            evpn_const.EVPN_LRP_RMAC_EXT_ID_KEY: mac,"},{"line_number":113,"context_line":"            evpn_const.EVPN_LRP_VNI_EXT_ID_KEY: str(self.vni),"},{"line_number":114,"context_line":"            evpn_const.EVPN_LRP_VLAN_EXT_ID_KEY: str(self.vlan),"},{"line_number":115,"context_line":"        }"}],"source_content_type":"text/x-python","patch_set":6,"id":"7916b0a3_65cbae2c","line":112,"range":{"start_line":112,"start_character":12,"end_line":112,"end_character":52},"in_reply_to":"ed767a85_645dac54","updated":"2026-06-04 20:16:22.000000000","message":"Done","commit_id":"6421cf1baa7c2bf4dfbe62ba090b94e72cc3f700"},{"author":{"_account_id":5756,"name":"Terry Wilson","email":"twilson@redhat.com","username":"otherwiseguy"},"change_message_id":"6ced23f34f4acf004836db7ec53938a9512dd86f","unresolved":true,"context_lines":[{"line_number":123,"context_line":"                external_ids\u003dexternal_ids).run_idl(txn)"},{"line_number":124,"context_line":"            return"},{"line_number":125,"context_line":""},{"line_number":126,"context_line":"        lrp.options \u003d {**lrp.options, **options}"},{"line_number":127,"context_line":"        lrp.external_ids \u003d {**lrp.external_ids, **external_ids}"},{"line_number":128,"context_line":""},{"line_number":129,"context_line":"    def _create_lsp(self, txn, ls_name, lsp_name, lrp_name):"}],"source_content_type":"text/x-python","patch_set":9,"id":"7f2601cf_5e4ff69e","line":126,"range":{"start_line":126,"start_character":22,"end_line":126,"end_character":48},"updated":"2026-06-05 03:05:04.000000000","message":"fancy 😉\n\nI think the canonical python-ovs thing to do here and elsewhere would be a `Row.setkey(\u0027external_ids\u0027, bgp_const.LR_OPTIONS_DYNAMIC_ROUTING_MAINTAIN_VRF, \u0027true\u0027)` to send a \u0027mutate\u0027 op avoid having to rewrite the whole options/merge dicts and send it to the server. I think Row.verify() might needs to be called if doing a read-modify-write op since another worker could change one option at the server, we get the update after sending a txn that overwrites it with old values. So, generally setkey/delkey/addvalue/delvalue for mutations is preferred.","commit_id":"d27c4c72095c61325877631b9bc050d75aeefb9f"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"647e9c8abb87098e32ca564f0dd2ed51d2fa35fd","unresolved":false,"context_lines":[{"line_number":123,"context_line":"                external_ids\u003dexternal_ids).run_idl(txn)"},{"line_number":124,"context_line":"            return"},{"line_number":125,"context_line":""},{"line_number":126,"context_line":"        lrp.options \u003d {**lrp.options, **options}"},{"line_number":127,"context_line":"        lrp.external_ids \u003d {**lrp.external_ids, **external_ids}"},{"line_number":128,"context_line":""},{"line_number":129,"context_line":"    def _create_lsp(self, txn, ls_name, lsp_name, lrp_name):"}],"source_content_type":"text/x-python","patch_set":9,"id":"f1ac31f5_67845def","line":126,"range":{"start_line":126,"start_character":22,"end_line":126,"end_character":48},"in_reply_to":"7f2601cf_5e4ff69e","updated":"2026-06-08 13:16:18.000000000","message":"Done","commit_id":"d27c4c72095c61325877631b9bc050d75aeefb9f"},{"author":{"_account_id":5756,"name":"Terry Wilson","email":"twilson@redhat.com","username":"otherwiseguy"},"change_message_id":"c6fa18cdd9d5e5dba789b307834f75518279f671","unresolved":true,"context_lines":[{"line_number":81,"context_line":"            self.api.idl, \u0027Logical_Router\u0027,"},{"line_number":82,"context_line":"            \u0027name\u0027, self.lrouter_name)"},{"line_number":83,"context_line":""},{"line_number":84,"context_line":"        lrouter.options \u003d {"},{"line_number":85,"context_line":"            **lrouter.options,"},{"line_number":86,"context_line":"            bgp_const.LR_OPTIONS_DYNAMIC_ROUTING: \u0027true\u0027,"},{"line_number":87,"context_line":"            bgp_const.LR_OPTIONS_DYNAMIC_ROUTING_VRF_ID: str(self.vni),"}],"source_content_type":"text/x-python","patch_set":10,"id":"a836bb1a_57889c7a","line":84,"range":{"start_line":84,"start_character":0,"end_line":84,"end_character":27},"updated":"2026-06-08 19:06:47.000000000","message":"ditto on setkey","commit_id":"f4db3f6ceadcfdda9b941e6631f0d101169de2b5"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"297a2740439b97805fcd938e51bad14cdc138980","unresolved":false,"context_lines":[{"line_number":81,"context_line":"            self.api.idl, \u0027Logical_Router\u0027,"},{"line_number":82,"context_line":"            \u0027name\u0027, self.lrouter_name)"},{"line_number":83,"context_line":""},{"line_number":84,"context_line":"        lrouter.options \u003d {"},{"line_number":85,"context_line":"            **lrouter.options,"},{"line_number":86,"context_line":"            bgp_const.LR_OPTIONS_DYNAMIC_ROUTING: \u0027true\u0027,"},{"line_number":87,"context_line":"            bgp_const.LR_OPTIONS_DYNAMIC_ROUTING_VRF_ID: str(self.vni),"}],"source_content_type":"text/x-python","patch_set":10,"id":"9f738586_3c3171fe","line":84,"range":{"start_line":84,"start_character":0,"end_line":84,"end_character":27},"in_reply_to":"a836bb1a_57889c7a","updated":"2026-06-08 19:42:01.000000000","message":"Done","commit_id":"f4db3f6ceadcfdda9b941e6631f0d101169de2b5"},{"author":{"_account_id":5756,"name":"Terry Wilson","email":"twilson@redhat.com","username":"otherwiseguy"},"change_message_id":"c6fa18cdd9d5e5dba789b307834f75518279f671","unresolved":true,"context_lines":[{"line_number":143,"context_line":"            return"},{"line_number":144,"context_line":""},{"line_number":145,"context_line":"        lsp.type \u003d \u0027router\u0027"},{"line_number":146,"context_line":"        lsp.options \u003d {**lsp.options, **options}"},{"line_number":147,"context_line":"        lsp.addresses \u003d addresses"},{"line_number":148,"context_line":""},{"line_number":149,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"04d3f61f_f09695fa","line":146,"updated":"2026-06-08 19:06:47.000000000","message":"ditto on setkey","commit_id":"f4db3f6ceadcfdda9b941e6631f0d101169de2b5"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"297a2740439b97805fcd938e51bad14cdc138980","unresolved":false,"context_lines":[{"line_number":143,"context_line":"            return"},{"line_number":144,"context_line":""},{"line_number":145,"context_line":"        lsp.type \u003d \u0027router\u0027"},{"line_number":146,"context_line":"        lsp.options \u003d {**lsp.options, **options}"},{"line_number":147,"context_line":"        lsp.addresses \u003d addresses"},{"line_number":148,"context_line":""},{"line_number":149,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"d633ed05_ae1e4d05","line":146,"in_reply_to":"04d3f61f_f09695fa","updated":"2026-06-08 19:42:01.000000000","message":"Done","commit_id":"f4db3f6ceadcfdda9b941e6631f0d101169de2b5"},{"author":{"_account_id":5756,"name":"Terry Wilson","email":"twilson@redhat.com","username":"otherwiseguy"},"change_message_id":"c6fa18cdd9d5e5dba789b307834f75518279f671","unresolved":true,"context_lines":[{"line_number":159,"context_line":"            self.api.idl, \u0027Logical_Router_Port\u0027,"},{"line_number":160,"context_line":"            \u0027name\u0027, self.lrp_name)"},{"line_number":161,"context_line":""},{"line_number":162,"context_line":"        lrp.options \u003d {"},{"line_number":163,"context_line":"            **lrp.options,"},{"line_number":164,"context_line":"            bgp_const.LR_OPTIONS_DYNAMIC_ROUTING_REDISTRIBUTE:"},{"line_number":165,"context_line":"                \u0027connected-as-host\u0027,"}],"source_content_type":"text/x-python","patch_set":10,"id":"5206ee9a_a1a0ef5a","line":162,"updated":"2026-06-08 19:06:47.000000000","message":"ditto on setkey","commit_id":"f4db3f6ceadcfdda9b941e6631f0d101169de2b5"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"297a2740439b97805fcd938e51bad14cdc138980","unresolved":false,"context_lines":[{"line_number":159,"context_line":"            self.api.idl, \u0027Logical_Router_Port\u0027,"},{"line_number":160,"context_line":"            \u0027name\u0027, self.lrp_name)"},{"line_number":161,"context_line":""},{"line_number":162,"context_line":"        lrp.options \u003d {"},{"line_number":163,"context_line":"            **lrp.options,"},{"line_number":164,"context_line":"            bgp_const.LR_OPTIONS_DYNAMIC_ROUTING_REDISTRIBUTE:"},{"line_number":165,"context_line":"                \u0027connected-as-host\u0027,"}],"source_content_type":"text/x-python","patch_set":10,"id":"824d160f_29820f5e","line":162,"in_reply_to":"5206ee9a_a1a0ef5a","updated":"2026-06-08 19:42:01.000000000","message":"Done","commit_id":"f4db3f6ceadcfdda9b941e6631f0d101169de2b5"}],"neutron/services/evpn/ovn.py":[{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"8c3f85c2f5788d821dbdd44a873141167440acbf","unresolved":true,"context_lines":[{"line_number":18,"context_line":"from ovsdbapp.backend.ovs_idl import idlutils"},{"line_number":19,"context_line":"from ovsdbapp.schema.ovn_northbound import commands as ovn_nb_commands"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"from neutron_lib.utils import net as n_net"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"from neutron.agent.ovn.extensions.evpn import constants as evpn_agent_const"},{"line_number":24,"context_line":"from neutron.common.ovn import constants as ovn_const"}],"source_content_type":"text/x-python","patch_set":3,"id":"67374459_2de79beb","line":21,"updated":"2026-06-02 09:11:17.000000000","message":"please fix imports sections: this should be included in the group above","commit_id":"2176a44e6be60f297b94fe00ddf589fa37ecf0c1"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"15d1b83da066ba0a32b0470e7f3730aaca71d67f","unresolved":false,"context_lines":[{"line_number":18,"context_line":"from ovsdbapp.backend.ovs_idl import idlutils"},{"line_number":19,"context_line":"from ovsdbapp.schema.ovn_northbound import commands as ovn_nb_commands"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"from neutron_lib.utils import net as n_net"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"from neutron.agent.ovn.extensions.evpn import constants as evpn_agent_const"},{"line_number":24,"context_line":"from neutron.common.ovn import constants as ovn_const"}],"source_content_type":"text/x-python","patch_set":3,"id":"eb80deaf_0d4e8129","line":21,"in_reply_to":"67374459_2de79beb","updated":"2026-06-02 21:05:16.000000000","message":"bad AI!","commit_id":"2176a44e6be60f297b94fe00ddf589fa37ecf0c1"}],"neutron/tests/functional/base.py":[{"author":{"_account_id":5756,"name":"Terry Wilson","email":"twilson@redhat.com","username":"otherwiseguy"},"change_message_id":"6ced23f34f4acf004836db7ec53938a9512dd86f","unresolved":true,"context_lines":[{"line_number":118,"context_line":""},{"line_number":119,"context_line":""},{"line_number":120,"context_line":"def get_unique_name(prefix\u003d\"test\"):"},{"line_number":121,"context_line":"    return f\"{prefix}_{uuidutils.generate_uuid()[:8]}\""},{"line_number":122,"context_line":""},{"line_number":123,"context_line":""},{"line_number":124,"context_line":"def config_decorator(method_to_decorate, config_tuples):"}],"source_content_type":"text/x-python","patch_set":9,"id":"ba9189a8_41ccdece","line":121,"range":{"start_line":121,"start_character":50,"end_line":121,"end_character":51},"updated":"2026-06-05 03:05:04.000000000","message":"nit: Does this value need to depend on the prefix length? Does mx prefix length need to be limited?","commit_id":"d27c4c72095c61325877631b9bc050d75aeefb9f"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"647e9c8abb87098e32ca564f0dd2ed51d2fa35fd","unresolved":false,"context_lines":[{"line_number":118,"context_line":""},{"line_number":119,"context_line":""},{"line_number":120,"context_line":"def get_unique_name(prefix\u003d\"test\"):"},{"line_number":121,"context_line":"    return f\"{prefix}_{uuidutils.generate_uuid()[:8]}\""},{"line_number":122,"context_line":""},{"line_number":123,"context_line":""},{"line_number":124,"context_line":"def config_decorator(method_to_decorate, config_tuples):"}],"source_content_type":"text/x-python","patch_set":9,"id":"540b6134_4f41ba6d","line":121,"range":{"start_line":121,"start_character":50,"end_line":121,"end_character":51},"in_reply_to":"ba9189a8_41ccdece","updated":"2026-06-08 13:16:18.000000000","message":"I guess not.","commit_id":"d27c4c72095c61325877631b9bc050d75aeefb9f"}]}
