)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"956c26aaafbd24832a3b1a22d0599c139d7842f7","unresolved":true,"context_lines":[{"line_number":14,"context_line":"vlan 1002 on the same br-provider."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"Moreover, current code fails to ensure required sysctl parameters are"},{"line_number":17,"context_line":"present, since interface name is trimmed on creation, though not reflected for ensuring it is correct while providing sysctl adjustments for it."},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"This is basically continuation of the fix originally proposed in [1]"},{"line_number":20,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":7,"id":"54cb0958_4c0ea7da","line":17,"updated":"2024-10-24 17:44:05.000000000","message":"wrap :)","commit_id":"8239602cd2f2784002b7f505a8e5fc6f7c462d32"},{"author":{"_account_id":28619,"name":"Dmitriy Rabotyagov","email":"noonedeadpunk@gmail.com","username":"noonedeadpunk"},"change_message_id":"0778cbe93b9333fa51342002d8cdeee646a5a8cf","unresolved":false,"context_lines":[{"line_number":14,"context_line":"vlan 1002 on the same br-provider."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"Moreover, current code fails to ensure required sysctl parameters are"},{"line_number":17,"context_line":"present, since interface name is trimmed on creation, though not reflected for ensuring it is correct while providing sysctl adjustments for it."},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"This is basically continuation of the fix originally proposed in [1]"},{"line_number":20,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":7,"id":"ca43b87f_d1ec984c","line":17,"in_reply_to":"54cb0958_4c0ea7da","updated":"2024-11-07 13:51:29.000000000","message":"Done","commit_id":"8239602cd2f2784002b7f505a8e5fc6f7c462d32"}],"/PATCHSET_LEVEL":[{"author":{"_account_id":23567,"name":"Luis Tomas Bolivar","email":"ltomasbo@redhat.com","username":"ltomasbo"},"change_message_id":"1a7131cd100a99dbbdde1ac8ba5d1aa4024896aa","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"e7dad6a6_fc3d8ffb","updated":"2024-03-06 12:28:14.000000000","message":"some more items that may have missed from this (and the previous) patch","commit_id":"8bba59cf4ff1186c386ee45d5e2bbd25685c0a38"},{"author":{"_account_id":23567,"name":"Luis Tomas Bolivar","email":"ltomasbo@redhat.com","username":"ltomasbo"},"change_message_id":"0b49befaa4b42c034a6cd7bc3e1e8b251db1bf6a","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"d22e33ce_fa089273","updated":"2024-03-07 07:10:05.000000000","message":"perhaps worth to add some coverage on unittests/functional testing, passing a longer name and see we are getting the expected one\n\nCheck the other points in utils/linux_net.py to see if it makes sense to also cover them","commit_id":"d332a27b7ed7571e10bc56a2530ece3341c3ddcf"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"956c26aaafbd24832a3b1a22d0599c139d7842f7","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"51a20e0a_d4c8df1f","updated":"2024-10-24 17:44:05.000000000","message":"Thanks for the patch, I left -1 because we have constant variables defined for the used numbers.","commit_id":"8239602cd2f2784002b7f505a8e5fc6f7c462d32"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"6153a81b35234b1673e0d47a30be91b5ee432f7e","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":9,"id":"228df0f7_a982a266","updated":"2024-11-07 13:59:39.000000000","message":"Similar small thing as with the followup, otherwise LGTM - thanks!","commit_id":"8fbd8fbcbcee52600e03b8401434a6901f74da88"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"da1d41deb5b07af0eed0c46b1d0a5d58d647032a","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":11,"id":"d3a138e1_7d6432de","updated":"2024-11-07 19:20:01.000000000","message":"recheck","commit_id":"69b7755bedbbad887a166bfa19cf1656fa285df4"}],"ovn_bgp_agent/constants.py":[{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"6153a81b35234b1673e0d47a30be91b5ee432f7e","unresolved":true,"context_lines":[{"line_number":12,"context_line":"# See the License for the specific language governing permissions and"},{"line_number":13,"context_line":"# limitations under the License."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"from neutron_lib import constants as n_const"},{"line_number":16,"context_line":"import socket"},{"line_number":17,"context_line":""},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"OVN_VIF_PORT_TYPES \u003d (\"\", \"chassisredirect\", \"virtual\")"}],"source_content_type":"text/x-python","patch_set":8,"id":"f2b5033e_7466ecf0","line":16,"range":{"start_line":15,"start_character":0,"end_line":16,"end_character":13},"updated":"2024-11-07 13:59:39.000000000","message":"The import format is\n```\npython standard library\n\n3rd party libraries\n\nlocal libraries\n```\nso it should be\n```\nimport socket\n\nimport neutron_lib ...\n```","commit_id":"b8bdb08d566126125334d8c4d0ce557f21d65e18"},{"author":{"_account_id":28619,"name":"Dmitriy Rabotyagov","email":"noonedeadpunk@gmail.com","username":"noonedeadpunk"},"change_message_id":"afb59998cbdf2ef7deebad0514ee2bfb0b8108dd","unresolved":false,"context_lines":[{"line_number":12,"context_line":"# See the License for the specific language governing permissions and"},{"line_number":13,"context_line":"# limitations under the License."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"from neutron_lib import constants as n_const"},{"line_number":16,"context_line":"import socket"},{"line_number":17,"context_line":""},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"OVN_VIF_PORT_TYPES \u003d (\"\", \"chassisredirect\", \"virtual\")"}],"source_content_type":"text/x-python","patch_set":8,"id":"6da82a6e_50c845ce","line":16,"range":{"start_line":15,"start_character":0,"end_line":16,"end_character":13},"in_reply_to":"f2b5033e_7466ecf0","updated":"2024-11-07 14:07:25.000000000","message":"Yeah, know that, but somehow was under impression that `tox -e pep8` failed on me. Could be that I\u0027ve missed a newline in between back then. Thanks for highlighting this!","commit_id":"b8bdb08d566126125334d8c4d0ce557f21d65e18"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"f72245af48fe97e9ab723954893d2ba794e37497","unresolved":true,"context_lines":[{"line_number":93,"context_line":"OVN_INTEGRATION_BRIDGE \u003d \u0027br-int\u0027"},{"line_number":94,"context_line":"OVN_LRP_PORT_NAME_PREFIX \u003d \u0027lrp-\u0027"},{"line_number":95,"context_line":"OVN_CRLRP_PORT_NAME_PREFIX \u003d \u0027cr-lrp-\u0027"},{"line_number":96,"context_line":"OVN_BRIDGE_MAX_LENGTH \u003d n_const.DEVICE_NAME_MAX_LEN - len("},{"line_number":97,"context_line":"    f\".{n_const.MAX_VLAN_TAG}\")"},{"line_number":98,"context_line":""},{"line_number":99,"context_line":"# the new prefix will get the first 11 chars of the localnet port prefixed,"}],"source_content_type":"text/x-python","patch_set":11,"id":"37b1963b_03b42c0a","line":96,"range":{"start_line":96,"start_character":0,"end_line":96,"end_character":21},"updated":"2024-11-07 19:26:37.000000000","message":"I know it was me who suggested this name lol but now reading the code again, it seems is not bridge related but rather a vlan interface. So maybe it should be reflected in the constant name. Sorry about that :)","commit_id":"69b7755bedbbad887a166bfa19cf1656fa285df4"},{"author":{"_account_id":28619,"name":"Dmitriy Rabotyagov","email":"noonedeadpunk@gmail.com","username":"noonedeadpunk"},"change_message_id":"4fba1b0e68a456a9f4539dddc3a0ec03e1aeb6f3","unresolved":false,"context_lines":[{"line_number":93,"context_line":"OVN_INTEGRATION_BRIDGE \u003d \u0027br-int\u0027"},{"line_number":94,"context_line":"OVN_LRP_PORT_NAME_PREFIX \u003d \u0027lrp-\u0027"},{"line_number":95,"context_line":"OVN_CRLRP_PORT_NAME_PREFIX \u003d \u0027cr-lrp-\u0027"},{"line_number":96,"context_line":"OVN_BRIDGE_MAX_LENGTH \u003d n_const.DEVICE_NAME_MAX_LEN - len("},{"line_number":97,"context_line":"    f\".{n_const.MAX_VLAN_TAG}\")"},{"line_number":98,"context_line":""},{"line_number":99,"context_line":"# the new prefix will get the first 11 chars of the localnet port prefixed,"}],"source_content_type":"text/x-python","patch_set":11,"id":"d7c06a21_952ab56c","line":96,"range":{"start_line":96,"start_character":0,"end_line":96,"end_character":21},"in_reply_to":"37b1963b_03b42c0a","updated":"2024-11-08 07:39:58.000000000","message":"you suggested that based on the method name, which I picked poorly as well.\n/me bad at naming things","commit_id":"69b7755bedbbad887a166bfa19cf1656fa285df4"}],"ovn_bgp_agent/privileged/linux_net.py":[{"author":{"_account_id":23567,"name":"Luis Tomas Bolivar","email":"ltomasbo@redhat.com","username":"ltomasbo"},"change_message_id":"1a7131cd100a99dbbdde1ac8ba5d1aa4024896aa","unresolved":true,"context_lines":[{"line_number":124,"context_line":"    stop\u003dtenacity.stop_after_delay(8),"},{"line_number":125,"context_line":"    reraise\u003dTrue)"},{"line_number":126,"context_line":"@ovn_bgp_agent.privileged.default.entrypoint"},{"line_number":127,"context_line":"def set_master_for_device(device, master):"},{"line_number":128,"context_line":"    try:"},{"line_number":129,"context_line":"        with pyroute2.IPRoute() as ipr:"},{"line_number":130,"context_line":"            dev_index \u003d ipr.link_lookup(ifname\u003ddevice)[0]"}],"source_content_type":"text/x-python","patch_set":2,"id":"01de03c6_def5c47c","line":127,"range":{"start_line":127,"start_character":1,"end_line":127,"end_character":42},"updated":"2024-03-06 12:28:14.000000000","message":"probably this also needs handling","commit_id":"8bba59cf4ff1186c386ee45d5e2bbd25685c0a38"},{"author":{"_account_id":28619,"name":"Dmitriy Rabotyagov","email":"noonedeadpunk@gmail.com","username":"noonedeadpunk"},"change_message_id":"8b1fdb49747f8b6c1ffb6f106501afe9b0bc3f05","unresolved":true,"context_lines":[{"line_number":124,"context_line":"    stop\u003dtenacity.stop_after_delay(8),"},{"line_number":125,"context_line":"    reraise\u003dTrue)"},{"line_number":126,"context_line":"@ovn_bgp_agent.privileged.default.entrypoint"},{"line_number":127,"context_line":"def set_master_for_device(device, master):"},{"line_number":128,"context_line":"    try:"},{"line_number":129,"context_line":"        with pyroute2.IPRoute() as ipr:"},{"line_number":130,"context_line":"            dev_index \u003d ipr.link_lookup(ifname\u003ddevice)[0]"}],"source_content_type":"text/x-python","patch_set":2,"id":"181135a5_7b2202f7","line":127,"range":{"start_line":127,"start_character":1,"end_line":127,"end_character":42},"in_reply_to":"01de03c6_def5c47c","updated":"2024-03-06 17:57:10.000000000","message":"probably worth using `_get_link_id` as well here? any reason not to?","commit_id":"8bba59cf4ff1186c386ee45d5e2bbd25685c0a38"},{"author":{"_account_id":23567,"name":"Luis Tomas Bolivar","email":"ltomasbo@redhat.com","username":"ltomasbo"},"change_message_id":"0b49befaa4b42c034a6cd7bc3e1e8b251db1bf6a","unresolved":true,"context_lines":[{"line_number":124,"context_line":"    stop\u003dtenacity.stop_after_delay(8),"},{"line_number":125,"context_line":"    reraise\u003dTrue)"},{"line_number":126,"context_line":"@ovn_bgp_agent.privileged.default.entrypoint"},{"line_number":127,"context_line":"def set_master_for_device(device, master):"},{"line_number":128,"context_line":"    try:"},{"line_number":129,"context_line":"        with pyroute2.IPRoute() as ipr:"},{"line_number":130,"context_line":"            dev_index \u003d ipr.link_lookup(ifname\u003ddevice)[0]"}],"source_content_type":"text/x-python","patch_set":2,"id":"4d8413d4_c3338a1c","line":127,"range":{"start_line":127,"start_character":1,"end_line":127,"end_character":42},"in_reply_to":"181135a5_7b2202f7","updated":"2024-03-07 07:10:05.000000000","message":"right!","commit_id":"8bba59cf4ff1186c386ee45d5e2bbd25685c0a38"},{"author":{"_account_id":28619,"name":"Dmitriy Rabotyagov","email":"noonedeadpunk@gmail.com","username":"noonedeadpunk"},"change_message_id":"236ead834dd69b71d00b9a5f7aa731f3a27b3c45","unresolved":false,"context_lines":[{"line_number":124,"context_line":"    stop\u003dtenacity.stop_after_delay(8),"},{"line_number":125,"context_line":"    reraise\u003dTrue)"},{"line_number":126,"context_line":"@ovn_bgp_agent.privileged.default.entrypoint"},{"line_number":127,"context_line":"def set_master_for_device(device, master):"},{"line_number":128,"context_line":"    try:"},{"line_number":129,"context_line":"        with pyroute2.IPRoute() as ipr:"},{"line_number":130,"context_line":"            dev_index \u003d ipr.link_lookup(ifname\u003ddevice)[0]"}],"source_content_type":"text/x-python","patch_set":2,"id":"4617ba0f_c44128ca","line":127,"range":{"start_line":127,"start_character":1,"end_line":127,"end_character":42},"in_reply_to":"4d8413d4_c3338a1c","updated":"2024-07-31 12:48:59.000000000","message":"Done","commit_id":"8bba59cf4ff1186c386ee45d5e2bbd25685c0a38"},{"author":{"_account_id":23567,"name":"Luis Tomas Bolivar","email":"ltomasbo@redhat.com","username":"ltomasbo"},"change_message_id":"1a7131cd100a99dbbdde1ac8ba5d1aa4024896aa","unresolved":true,"context_lines":[{"line_number":246,"context_line":""},{"line_number":247,"context_line":""},{"line_number":248,"context_line":"@ovn_bgp_agent.privileged.default.entrypoint"},{"line_number":249,"context_line":"def add_ip_nei(ip, lladdr, dev):"},{"line_number":250,"context_line":"    ip_version \u003d l_net.get_ip_version(ip)"},{"line_number":251,"context_line":"    family \u003d common_utils.IP_VERSION_FAMILY_MAP[ip_version]"},{"line_number":252,"context_line":"    _run_iproute_neigh(\u0027replace\u0027,"}],"source_content_type":"text/x-python","patch_set":2,"id":"85b24c6b_ea8f2756","line":249,"range":{"start_line":249,"start_character":1,"end_line":249,"end_character":32},"updated":"2024-03-06 12:28:14.000000000","message":"perhaps we also need to control the length here","commit_id":"8bba59cf4ff1186c386ee45d5e2bbd25685c0a38"},{"author":{"_account_id":28619,"name":"Dmitriy Rabotyagov","email":"noonedeadpunk@gmail.com","username":"noonedeadpunk"},"change_message_id":"8b1fdb49747f8b6c1ffb6f106501afe9b0bc3f05","unresolved":false,"context_lines":[{"line_number":246,"context_line":""},{"line_number":247,"context_line":""},{"line_number":248,"context_line":"@ovn_bgp_agent.privileged.default.entrypoint"},{"line_number":249,"context_line":"def add_ip_nei(ip, lladdr, dev):"},{"line_number":250,"context_line":"    ip_version \u003d l_net.get_ip_version(ip)"},{"line_number":251,"context_line":"    family \u003d common_utils.IP_VERSION_FAMILY_MAP[ip_version]"},{"line_number":252,"context_line":"    _run_iproute_neigh(\u0027replace\u0027,"}],"source_content_type":"text/x-python","patch_set":2,"id":"6c6d93a3_b8659245","line":249,"range":{"start_line":249,"start_character":1,"end_line":249,"end_character":32},"in_reply_to":"85b24c6b_ea8f2756","updated":"2024-03-06 17:57:10.000000000","message":"covered that in `_get_link_id` instead as `_run_iproute_neigh` does use it only for calling `_get_link_id`","commit_id":"8bba59cf4ff1186c386ee45d5e2bbd25685c0a38"},{"author":{"_account_id":23567,"name":"Luis Tomas Bolivar","email":"ltomasbo@redhat.com","username":"ltomasbo"},"change_message_id":"1a7131cd100a99dbbdde1ac8ba5d1aa4024896aa","unresolved":true,"context_lines":[{"line_number":257,"context_line":"                       state\u003dndmsg.states[\u0027permanent\u0027])"},{"line_number":258,"context_line":""},{"line_number":259,"context_line":""},{"line_number":260,"context_line":"@ovn_bgp_agent.privileged.default.entrypoint"},{"line_number":261,"context_line":"def del_ip_nei(ip, lladdr, dev):"},{"line_number":262,"context_line":"    ip_network \u003d netaddr.IPNetwork(ip)"},{"line_number":263,"context_line":"    family \u003d common_utils.IP_VERSION_FAMILY_MAP[ip_network.version]"},{"line_number":264,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"e0bb522a_d34a4381","line":261,"range":{"start_line":260,"start_character":33,"end_line":261,"end_character":20},"updated":"2024-03-06 12:28:14.000000000","message":"also here","commit_id":"8bba59cf4ff1186c386ee45d5e2bbd25685c0a38"},{"author":{"_account_id":28619,"name":"Dmitriy Rabotyagov","email":"noonedeadpunk@gmail.com","username":"noonedeadpunk"},"change_message_id":"8b1fdb49747f8b6c1ffb6f106501afe9b0bc3f05","unresolved":false,"context_lines":[{"line_number":257,"context_line":"                       state\u003dndmsg.states[\u0027permanent\u0027])"},{"line_number":258,"context_line":""},{"line_number":259,"context_line":""},{"line_number":260,"context_line":"@ovn_bgp_agent.privileged.default.entrypoint"},{"line_number":261,"context_line":"def del_ip_nei(ip, lladdr, dev):"},{"line_number":262,"context_line":"    ip_network \u003d netaddr.IPNetwork(ip)"},{"line_number":263,"context_line":"    family \u003d common_utils.IP_VERSION_FAMILY_MAP[ip_network.version]"},{"line_number":264,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"f7b915a2_559d7c56","line":261,"range":{"start_line":260,"start_character":33,"end_line":261,"end_character":20},"in_reply_to":"e0bb522a_d34a4381","updated":"2024-03-06 17:57:10.000000000","message":"covered that in `_get_link_id`","commit_id":"8bba59cf4ff1186c386ee45d5e2bbd25685c0a38"},{"author":{"_account_id":23567,"name":"Luis Tomas Bolivar","email":"ltomasbo@redhat.com","username":"ltomasbo"},"change_message_id":"1a7131cd100a99dbbdde1ac8ba5d1aa4024896aa","unresolved":true,"context_lines":[{"line_number":307,"context_line":"    # (and hence default route for the VRF)"},{"line_number":308,"context_line":"    # ip route add table 10 unreachable default metric 4278198272"},{"line_number":309,"context_line":"    # Find vrf table."},{"line_number":310,"context_line":"    device \u003d get_link_device(vrf_name)"},{"line_number":311,"context_line":"    ifla_linkinfo \u003d get_attr(device, \u0027IFLA_LINKINFO\u0027)"},{"line_number":312,"context_line":"    ifla_data \u003d get_attr(ifla_linkinfo, \u0027IFLA_INFO_DATA\u0027)"},{"line_number":313,"context_line":"    vrf_table \u003d get_attr(ifla_data, \u0027IFLA_VRF_TABLE\u0027)"}],"source_content_type":"text/x-python","patch_set":2,"id":"f8a766d4_7a5ee038","line":310,"range":{"start_line":310,"start_character":0,"end_line":310,"end_character":38},"updated":"2024-03-06 12:28:14.000000000","message":"and here","commit_id":"8bba59cf4ff1186c386ee45d5e2bbd25685c0a38"},{"author":{"_account_id":23567,"name":"Luis Tomas Bolivar","email":"ltomasbo@redhat.com","username":"ltomasbo"},"change_message_id":"0b49befaa4b42c034a6cd7bc3e1e8b251db1bf6a","unresolved":true,"context_lines":[{"line_number":307,"context_line":"    # (and hence default route for the VRF)"},{"line_number":308,"context_line":"    # ip route add table 10 unreachable default metric 4278198272"},{"line_number":309,"context_line":"    # Find vrf table."},{"line_number":310,"context_line":"    device \u003d get_link_device(vrf_name)"},{"line_number":311,"context_line":"    ifla_linkinfo \u003d get_attr(device, \u0027IFLA_LINKINFO\u0027)"},{"line_number":312,"context_line":"    ifla_data \u003d get_attr(ifla_linkinfo, \u0027IFLA_INFO_DATA\u0027)"},{"line_number":313,"context_line":"    vrf_table \u003d get_attr(ifla_data, \u0027IFLA_VRF_TABLE\u0027)"}],"source_content_type":"text/x-python","patch_set":2,"id":"7e5c139b_2158ac84","line":310,"range":{"start_line":310,"start_character":0,"end_line":310,"end_character":38},"in_reply_to":"3fc9cab1_fec9b0b3","updated":"2024-03-07 07:10:05.000000000","message":"make sense","commit_id":"8bba59cf4ff1186c386ee45d5e2bbd25685c0a38"},{"author":{"_account_id":28619,"name":"Dmitriy Rabotyagov","email":"noonedeadpunk@gmail.com","username":"noonedeadpunk"},"change_message_id":"236ead834dd69b71d00b9a5f7aa731f3a27b3c45","unresolved":false,"context_lines":[{"line_number":307,"context_line":"    # (and hence default route for the VRF)"},{"line_number":308,"context_line":"    # ip route add table 10 unreachable default metric 4278198272"},{"line_number":309,"context_line":"    # Find vrf table."},{"line_number":310,"context_line":"    device \u003d get_link_device(vrf_name)"},{"line_number":311,"context_line":"    ifla_linkinfo \u003d get_attr(device, \u0027IFLA_LINKINFO\u0027)"},{"line_number":312,"context_line":"    ifla_data \u003d get_attr(ifla_linkinfo, \u0027IFLA_INFO_DATA\u0027)"},{"line_number":313,"context_line":"    vrf_table \u003d get_attr(ifla_data, \u0027IFLA_VRF_TABLE\u0027)"}],"source_content_type":"text/x-python","patch_set":2,"id":"e2c4ac5b_011a00bd","line":310,"range":{"start_line":310,"start_character":0,"end_line":310,"end_character":38},"in_reply_to":"7e5c139b_2158ac84","updated":"2024-07-31 12:48:59.000000000","message":"Done","commit_id":"8bba59cf4ff1186c386ee45d5e2bbd25685c0a38"},{"author":{"_account_id":28619,"name":"Dmitriy Rabotyagov","email":"noonedeadpunk@gmail.com","username":"noonedeadpunk"},"change_message_id":"8b1fdb49747f8b6c1ffb6f106501afe9b0bc3f05","unresolved":true,"context_lines":[{"line_number":307,"context_line":"    # (and hence default route for the VRF)"},{"line_number":308,"context_line":"    # ip route add table 10 unreachable default metric 4278198272"},{"line_number":309,"context_line":"    # Find vrf table."},{"line_number":310,"context_line":"    device \u003d get_link_device(vrf_name)"},{"line_number":311,"context_line":"    ifla_linkinfo \u003d get_attr(device, \u0027IFLA_LINKINFO\u0027)"},{"line_number":312,"context_line":"    ifla_data \u003d get_attr(ifla_linkinfo, \u0027IFLA_INFO_DATA\u0027)"},{"line_number":313,"context_line":"    vrf_table \u003d get_attr(ifla_data, \u0027IFLA_VRF_TABLE\u0027)"}],"source_content_type":"text/x-python","patch_set":2,"id":"3fc9cab1_fec9b0b3","line":310,"range":{"start_line":310,"start_character":0,"end_line":310,"end_character":38},"in_reply_to":"f8a766d4_7a5ee038","updated":"2024-03-06 17:57:10.000000000","message":"frankly speaking, I\u0027d cover that via some config verification instead, as it must be coming from there?","commit_id":"8bba59cf4ff1186c386ee45d5e2bbd25685c0a38"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"956c26aaafbd24832a3b1a22d0599c139d7842f7","unresolved":true,"context_lines":[{"line_number":412,"context_line":""},{"line_number":413,"context_line":""},{"line_number":414,"context_line":"def _get_link_id(ifname, raise_exception\u003dTrue):"},{"line_number":415,"context_line":"    ifname \u003d ifname[:15]"},{"line_number":416,"context_line":"    with iproute.IPRoute() as ip:"},{"line_number":417,"context_line":"        link_id \u003d ip.link_lookup(ifname\u003difname)"},{"line_number":418,"context_line":"    if not link_id or len(link_id) \u003c 1:"}],"source_content_type":"text/x-python","patch_set":7,"id":"7fa4dd38_cf279720","line":415,"range":{"start_line":415,"start_character":21,"end_line":415,"end_character":23},"updated":"2024-10-24 17:44:05.000000000","message":"`from neutron_lib import constants`\n\n...\n\n`constants.DEVICE_NAME_MAX_LEN`","commit_id":"8239602cd2f2784002b7f505a8e5fc6f7c462d32"},{"author":{"_account_id":28619,"name":"Dmitriy Rabotyagov","email":"noonedeadpunk@gmail.com","username":"noonedeadpunk"},"change_message_id":"0778cbe93b9333fa51342002d8cdeee646a5a8cf","unresolved":false,"context_lines":[{"line_number":412,"context_line":""},{"line_number":413,"context_line":""},{"line_number":414,"context_line":"def _get_link_id(ifname, raise_exception\u003dTrue):"},{"line_number":415,"context_line":"    ifname \u003d ifname[:15]"},{"line_number":416,"context_line":"    with iproute.IPRoute() as ip:"},{"line_number":417,"context_line":"        link_id \u003d ip.link_lookup(ifname\u003difname)"},{"line_number":418,"context_line":"    if not link_id or len(link_id) \u003c 1:"}],"source_content_type":"text/x-python","patch_set":7,"id":"bfb5ec6c_6e0a5661","line":415,"range":{"start_line":415,"start_character":21,"end_line":415,"end_character":23},"in_reply_to":"7fa4dd38_cf279720","updated":"2024-11-07 13:51:29.000000000","message":"So, there\u0027re way more occurrences of this pattern below, so I\u0027d rather propose changing to constant all together in a follow-up patch.","commit_id":"8239602cd2f2784002b7f505a8e5fc6f7c462d32"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"956c26aaafbd24832a3b1a22d0599c139d7842f7","unresolved":true,"context_lines":[{"line_number":434,"context_line":""},{"line_number":435,"context_line":""},{"line_number":436,"context_line":"def get_link_device(device_name):"},{"line_number":437,"context_line":"    device_name \u003d device_name[:15]"},{"line_number":438,"context_line":"    for device in get_link_devices():"},{"line_number":439,"context_line":"        if get_attr(device, \u0027IFLA_IFNAME\u0027) \u003d\u003d device_name:"},{"line_number":440,"context_line":"            return device"}],"source_content_type":"text/x-python","patch_set":7,"id":"546a49c5_412fe1db","line":437,"range":{"start_line":437,"start_character":31,"end_line":437,"end_character":33},"updated":"2024-10-24 17:44:05.000000000","message":"ditto","commit_id":"8239602cd2f2784002b7f505a8e5fc6f7c462d32"},{"author":{"_account_id":28619,"name":"Dmitriy Rabotyagov","email":"noonedeadpunk@gmail.com","username":"noonedeadpunk"},"change_message_id":"108cf0b69b53371997fca352e4fcbc26fc1e9cb4","unresolved":false,"context_lines":[{"line_number":434,"context_line":""},{"line_number":435,"context_line":""},{"line_number":436,"context_line":"def get_link_device(device_name):"},{"line_number":437,"context_line":"    device_name \u003d device_name[:15]"},{"line_number":438,"context_line":"    for device in get_link_devices():"},{"line_number":439,"context_line":"        if get_attr(device, \u0027IFLA_IFNAME\u0027) \u003d\u003d device_name:"},{"line_number":440,"context_line":"            return device"}],"source_content_type":"text/x-python","patch_set":7,"id":"0a824f98_b3523ba1","line":437,"range":{"start_line":437,"start_character":31,"end_line":437,"end_character":33},"in_reply_to":"4f9deb3b_022afd40","updated":"2024-11-08 07:41:30.000000000","message":"Done","commit_id":"8239602cd2f2784002b7f505a8e5fc6f7c462d32"},{"author":{"_account_id":28619,"name":"Dmitriy Rabotyagov","email":"noonedeadpunk@gmail.com","username":"noonedeadpunk"},"change_message_id":"1a909fae8e6d88cd6526ccb7bb7c842c78d5404e","unresolved":true,"context_lines":[{"line_number":434,"context_line":""},{"line_number":435,"context_line":""},{"line_number":436,"context_line":"def get_link_device(device_name):"},{"line_number":437,"context_line":"    device_name \u003d device_name[:15]"},{"line_number":438,"context_line":"    for device in get_link_devices():"},{"line_number":439,"context_line":"        if get_attr(device, \u0027IFLA_IFNAME\u0027) \u003d\u003d device_name:"},{"line_number":440,"context_line":"            return device"}],"source_content_type":"text/x-python","patch_set":7,"id":"4f9deb3b_022afd40","line":437,"range":{"start_line":437,"start_character":31,"end_line":437,"end_character":33},"in_reply_to":"546a49c5_412fe1db","updated":"2024-11-07 13:52:05.000000000","message":"pushed a folow-up","commit_id":"8239602cd2f2784002b7f505a8e5fc6f7c462d32"}],"ovn_bgp_agent/tests/unit/utils/test_linux_net.py":[{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"c9458b238e962b277de4c32ec7e0247d830a0cc5","unresolved":true,"context_lines":[{"line_number":195,"context_line":"        mock_ensure_vlan_device_for_network.assert_called_once_with("},{"line_number":196,"context_line":"            \u0027fake-br\u0027, 10)"},{"line_number":197,"context_line":"        mock_ndp.assert_called_once_with(expected_dev)"},{"line_number":198,"context_line":"        mock_arp.assert_called_once_with(expected_dev)"},{"line_number":199,"context_line":""},{"line_number":200,"context_line":"    @mock.patch.object(linux_net, \u0027delete_device\u0027)"},{"line_number":201,"context_line":"    def test_delete_vlan_device_for_network(self, mock_del):"}],"source_content_type":"text/x-python","patch_set":2,"id":"485e1149_d0c92610","line":198,"updated":"2024-02-29 20:07:22.000000000","message":"You should probably add a test similar to this that passes a longer name and 4-digit vlan tag and make sure it creates the correct name.","commit_id":"8bba59cf4ff1186c386ee45d5e2bbd25685c0a38"},{"author":{"_account_id":28619,"name":"Dmitriy Rabotyagov","email":"noonedeadpunk@gmail.com","username":"noonedeadpunk"},"change_message_id":"236ead834dd69b71d00b9a5f7aa731f3a27b3c45","unresolved":false,"context_lines":[{"line_number":195,"context_line":"        mock_ensure_vlan_device_for_network.assert_called_once_with("},{"line_number":196,"context_line":"            \u0027fake-br\u0027, 10)"},{"line_number":197,"context_line":"        mock_ndp.assert_called_once_with(expected_dev)"},{"line_number":198,"context_line":"        mock_arp.assert_called_once_with(expected_dev)"},{"line_number":199,"context_line":""},{"line_number":200,"context_line":"    @mock.patch.object(linux_net, \u0027delete_device\u0027)"},{"line_number":201,"context_line":"    def test_delete_vlan_device_for_network(self, mock_del):"}],"source_content_type":"text/x-python","patch_set":2,"id":"62116049_0978fb7f","line":198,"in_reply_to":"485e1149_d0c92610","updated":"2024-07-31 12:48:59.000000000","message":"Done","commit_id":"8bba59cf4ff1186c386ee45d5e2bbd25685c0a38"}],"ovn_bgp_agent/utils/linux_net.py":[{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"b7a00a79ab86e4de499401c4c6fbb1270ef2fd8d","unresolved":true,"context_lines":[{"line_number":344,"context_line":"def ensure_vlan_device_for_network(bridge, vlan_tag):"},{"line_number":345,"context_line":"    ovn_bgp_agent.privileged.linux_net.ensure_vlan_device_for_network(bridge,"},{"line_number":346,"context_line":"                                                                      vlan_tag)"},{"line_number":347,"context_line":"    device \u003d \"{}/{}\".format(get_bridge_vlan_device_name(bridge), vlan_tag)"},{"line_number":348,"context_line":"    enable_proxy_arp(device)"},{"line_number":349,"context_line":"    enable_proxy_ndp(device)"},{"line_number":350,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"17fd18fe_57c83c9b","line":347,"updated":"2024-02-29 18:17:57.000000000","message":"Alternative is to change the signature of the privileged function and pass this device name along, since it\u0027s just doing the same thing.","commit_id":"c17a7eda16872867675b4d8681ccca47baff75d6"},{"author":{"_account_id":28619,"name":"Dmitriy Rabotyagov","email":"noonedeadpunk@gmail.com","username":"noonedeadpunk"},"change_message_id":"b6fce6fa6c14841ad6914d6bcd93606b5c60f112","unresolved":true,"context_lines":[{"line_number":344,"context_line":"def ensure_vlan_device_for_network(bridge, vlan_tag):"},{"line_number":345,"context_line":"    ovn_bgp_agent.privileged.linux_net.ensure_vlan_device_for_network(bridge,"},{"line_number":346,"context_line":"                                                                      vlan_tag)"},{"line_number":347,"context_line":"    device \u003d \"{}/{}\".format(get_bridge_vlan_device_name(bridge), vlan_tag)"},{"line_number":348,"context_line":"    enable_proxy_arp(device)"},{"line_number":349,"context_line":"    enable_proxy_ndp(device)"},{"line_number":350,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"c771dcb9_b397cdd2","line":347,"in_reply_to":"17fd18fe_57c83c9b","updated":"2024-02-29 18:34:09.000000000","message":"no, not really. As in privileged function it must know bridge/interface on which it should create a vlan, which is not trimmed.\n\nIe - you have br-provider and need vlan1000 there. So interface br-provider does pass 15 symbol check and will be used as-is. But vlan interface name will be `br-provide.1000@br-provider` as it\u0027s already exceeding it.\n\nAnd if changing signature here and passing to privileged function, it will try to create `br-provide.1000@br-provide` and fail since `br-provide` does not exists.","commit_id":"c17a7eda16872867675b4d8681ccca47baff75d6"},{"author":{"_account_id":28619,"name":"Dmitriy Rabotyagov","email":"noonedeadpunk@gmail.com","username":"noonedeadpunk"},"change_message_id":"84bb3bd11811c0feb01be2a3e6300a8844ff40a1","unresolved":false,"context_lines":[{"line_number":344,"context_line":"def ensure_vlan_device_for_network(bridge, vlan_tag):"},{"line_number":345,"context_line":"    ovn_bgp_agent.privileged.linux_net.ensure_vlan_device_for_network(bridge,"},{"line_number":346,"context_line":"                                                                      vlan_tag)"},{"line_number":347,"context_line":"    device \u003d \"{}/{}\".format(get_bridge_vlan_device_name(bridge), vlan_tag)"},{"line_number":348,"context_line":"    enable_proxy_arp(device)"},{"line_number":349,"context_line":"    enable_proxy_ndp(device)"},{"line_number":350,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"f80ab922_efa8779f","line":347,"in_reply_to":"1edb64b5_1f578d80","updated":"2024-03-01 08:56:40.000000000","message":"Acknowledged","commit_id":"c17a7eda16872867675b4d8681ccca47baff75d6"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"c9458b238e962b277de4c32ec7e0247d830a0cc5","unresolved":true,"context_lines":[{"line_number":344,"context_line":"def ensure_vlan_device_for_network(bridge, vlan_tag):"},{"line_number":345,"context_line":"    ovn_bgp_agent.privileged.linux_net.ensure_vlan_device_for_network(bridge,"},{"line_number":346,"context_line":"                                                                      vlan_tag)"},{"line_number":347,"context_line":"    device \u003d \"{}/{}\".format(get_bridge_vlan_device_name(bridge), vlan_tag)"},{"line_number":348,"context_line":"    enable_proxy_arp(device)"},{"line_number":349,"context_line":"    enable_proxy_ndp(device)"},{"line_number":350,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"1edb64b5_1f578d80","line":347,"in_reply_to":"c771dcb9_b397cdd2","updated":"2024-02-29 20:07:22.000000000","message":"I didn\u0027t notice the use of them separately in that code, was just drawn to the first part. Ignore me...","commit_id":"c17a7eda16872867675b4d8681ccca47baff75d6"},{"author":{"_account_id":23567,"name":"Luis Tomas Bolivar","email":"ltomasbo@redhat.com","username":"ltomasbo"},"change_message_id":"1a7131cd100a99dbbdde1ac8ba5d1aa4024896aa","unresolved":true,"context_lines":[{"line_number":57,"context_line":"    wait\u003dtenacity.wait_exponential(multiplier\u003d0.02, max\u003d1),"},{"line_number":58,"context_line":"    stop\u003dtenacity.stop_after_delay(8),"},{"line_number":59,"context_line":"    reraise\u003dTrue)"},{"line_number":60,"context_line":"def get_interface_index(nic):"},{"line_number":61,"context_line":"    try:"},{"line_number":62,"context_line":"        with pyroute2.IPRoute() as ipr:"},{"line_number":63,"context_line":"            return ipr.link_lookup(ifname\u003dnic)[0]"}],"source_content_type":"text/x-python","patch_set":2,"id":"7c1aff71_195ab2b6","line":60,"range":{"start_line":60,"start_character":0,"end_line":60,"end_character":29},"updated":"2024-03-06 12:28:14.000000000","message":"perhahps this also needs cutting?","commit_id":"8bba59cf4ff1186c386ee45d5e2bbd25685c0a38"},{"author":{"_account_id":28619,"name":"Dmitriy Rabotyagov","email":"noonedeadpunk@gmail.com","username":"noonedeadpunk"},"change_message_id":"236ead834dd69b71d00b9a5f7aa731f3a27b3c45","unresolved":true,"context_lines":[{"line_number":57,"context_line":"    wait\u003dtenacity.wait_exponential(multiplier\u003d0.02, max\u003d1),"},{"line_number":58,"context_line":"    stop\u003dtenacity.stop_after_delay(8),"},{"line_number":59,"context_line":"    reraise\u003dTrue)"},{"line_number":60,"context_line":"def get_interface_index(nic):"},{"line_number":61,"context_line":"    try:"},{"line_number":62,"context_line":"        with pyroute2.IPRoute() as ipr:"},{"line_number":63,"context_line":"            return ipr.link_lookup(ifname\u003dnic)[0]"}],"source_content_type":"text/x-python","patch_set":2,"id":"942758cd_1fce7e11","line":60,"range":{"start_line":60,"start_character":0,"end_line":60,"end_character":29},"in_reply_to":"7c1aff71_195ab2b6","updated":"2024-07-31 12:48:59.000000000","message":"I\u0027m not sure about this one, as eventually there should not be a way to pass a too long interface name here.\nIt should be all stripped before that.\n\nIn case it\u0027s an interface - such long interface should not exist at the first place.\nIf it\u0027s vlan - it should be stripped before passing here, like on L491 of the current patchset","commit_id":"8bba59cf4ff1186c386ee45d5e2bbd25685c0a38"},{"author":{"_account_id":23567,"name":"Luis Tomas Bolivar","email":"ltomasbo@redhat.com","username":"ltomasbo"},"change_message_id":"1a7131cd100a99dbbdde1ac8ba5d1aa4024896aa","unresolved":true,"context_lines":[{"line_number":71,"context_line":"    wait\u003dtenacity.wait_exponential(multiplier\u003d0.02, max\u003d1),"},{"line_number":72,"context_line":"    stop\u003dtenacity.stop_after_delay(8),"},{"line_number":73,"context_line":"    reraise\u003dTrue)"},{"line_number":74,"context_line":"def get_interface_address(nic):"},{"line_number":75,"context_line":"    try:"},{"line_number":76,"context_line":"        with pyroute2.IPRoute() as ipr:"},{"line_number":77,"context_line":"            idx \u003d ipr.link_lookup(ifname\u003dnic)[0]"}],"source_content_type":"text/x-python","patch_set":2,"id":"4a3c7de8_659ecb65","line":74,"range":{"start_line":74,"start_character":0,"end_line":74,"end_character":31},"updated":"2024-03-06 12:28:14.000000000","message":"perhahps this also needs cutting?","commit_id":"8bba59cf4ff1186c386ee45d5e2bbd25685c0a38"},{"author":{"_account_id":28619,"name":"Dmitriy Rabotyagov","email":"noonedeadpunk@gmail.com","username":"noonedeadpunk"},"change_message_id":"236ead834dd69b71d00b9a5f7aa731f3a27b3c45","unresolved":true,"context_lines":[{"line_number":71,"context_line":"    wait\u003dtenacity.wait_exponential(multiplier\u003d0.02, max\u003d1),"},{"line_number":72,"context_line":"    stop\u003dtenacity.stop_after_delay(8),"},{"line_number":73,"context_line":"    reraise\u003dTrue)"},{"line_number":74,"context_line":"def get_interface_address(nic):"},{"line_number":75,"context_line":"    try:"},{"line_number":76,"context_line":"        with pyroute2.IPRoute() as ipr:"},{"line_number":77,"context_line":"            idx \u003d ipr.link_lookup(ifname\u003dnic)[0]"}],"source_content_type":"text/x-python","patch_set":2,"id":"8575aa9d_c1c5ccf8","line":74,"range":{"start_line":74,"start_character":0,"end_line":74,"end_character":31},"in_reply_to":"4a3c7de8_659ecb65","updated":"2024-07-31 12:48:59.000000000","message":"Same here - I think we should catch issues at earlier stage, as here we don\u0027t know if it\u0027s vlan or bridge or interface, as vlans should be stripped differently.","commit_id":"8bba59cf4ff1186c386ee45d5e2bbd25685c0a38"},{"author":{"_account_id":23567,"name":"Luis Tomas Bolivar","email":"ltomasbo@redhat.com","username":"ltomasbo"},"change_message_id":"1a7131cd100a99dbbdde1ac8ba5d1aa4024896aa","unresolved":true,"context_lines":[{"line_number":566,"context_line":""},{"line_number":567,"context_line":""},{"line_number":568,"context_line":"def add_ndp_proxy(ip, dev, vlan\u003dNone):"},{"line_number":569,"context_line":"    if vlan:"},{"line_number":570,"context_line":"        dev \u003d get_bridge_vlan_device_name(dev)"},{"line_number":571,"context_line":"    ovn_bgp_agent.privileged.linux_net.add_ndp_proxy(ip, dev, vlan)"},{"line_number":572,"context_line":""},{"line_number":573,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"efb43ab9_137ada3b","line":570,"range":{"start_line":569,"start_character":0,"end_line":570,"end_character":46},"updated":"2024-03-06 12:28:14.000000000","message":"we should also limited for non vlan cases, right?","commit_id":"8bba59cf4ff1186c386ee45d5e2bbd25685c0a38"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"956c26aaafbd24832a3b1a22d0599c139d7842f7","unresolved":true,"context_lines":[{"line_number":566,"context_line":""},{"line_number":567,"context_line":""},{"line_number":568,"context_line":"def add_ndp_proxy(ip, dev, vlan\u003dNone):"},{"line_number":569,"context_line":"    if vlan:"},{"line_number":570,"context_line":"        dev \u003d get_bridge_vlan_device_name(dev)"},{"line_number":571,"context_line":"    ovn_bgp_agent.privileged.linux_net.add_ndp_proxy(ip, dev, vlan)"},{"line_number":572,"context_line":""},{"line_number":573,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"ab5627cc_02fc7030","line":570,"range":{"start_line":569,"start_character":0,"end_line":570,"end_character":46},"in_reply_to":"9a7fcac7_f5e46f92","updated":"2024-10-24 17:44:05.000000000","message":"Is there a reason why not to put it to the privileged code where we actually craft the device name?","commit_id":"8bba59cf4ff1186c386ee45d5e2bbd25685c0a38"},{"author":{"_account_id":28619,"name":"Dmitriy Rabotyagov","email":"noonedeadpunk@gmail.com","username":"noonedeadpunk"},"change_message_id":"0778cbe93b9333fa51342002d8cdeee646a5a8cf","unresolved":false,"context_lines":[{"line_number":566,"context_line":""},{"line_number":567,"context_line":""},{"line_number":568,"context_line":"def add_ndp_proxy(ip, dev, vlan\u003dNone):"},{"line_number":569,"context_line":"    if vlan:"},{"line_number":570,"context_line":"        dev \u003d get_bridge_vlan_device_name(dev)"},{"line_number":571,"context_line":"    ovn_bgp_agent.privileged.linux_net.add_ndp_proxy(ip, dev, vlan)"},{"line_number":572,"context_line":""},{"line_number":573,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"38cac726_1069c970","line":570,"range":{"start_line":569,"start_character":0,"end_line":570,"end_character":46},"in_reply_to":"ab5627cc_02fc7030","updated":"2024-11-07 13:51:29.000000000","message":"No, no reason except function was defined here. Addressing it through constants makes it reasonable to move to privileged code.","commit_id":"8bba59cf4ff1186c386ee45d5e2bbd25685c0a38"},{"author":{"_account_id":28619,"name":"Dmitriy Rabotyagov","email":"noonedeadpunk@gmail.com","username":"noonedeadpunk"},"change_message_id":"236ead834dd69b71d00b9a5f7aa731f3a27b3c45","unresolved":true,"context_lines":[{"line_number":566,"context_line":""},{"line_number":567,"context_line":""},{"line_number":568,"context_line":"def add_ndp_proxy(ip, dev, vlan\u003dNone):"},{"line_number":569,"context_line":"    if vlan:"},{"line_number":570,"context_line":"        dev \u003d get_bridge_vlan_device_name(dev)"},{"line_number":571,"context_line":"    ovn_bgp_agent.privileged.linux_net.add_ndp_proxy(ip, dev, vlan)"},{"line_number":572,"context_line":""},{"line_number":573,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"9a7fcac7_f5e46f92","line":570,"range":{"start_line":569,"start_character":0,"end_line":570,"end_character":46},"in_reply_to":"efb43ab9_137ada3b","updated":"2024-07-31 12:48:59.000000000","message":"That\u0027s a good question. I don\u0027t know...\n\nDo we need to limit non-vlan interface to 10 symbols as well like we need with vlan? As probably not?","commit_id":"8bba59cf4ff1186c386ee45d5e2bbd25685c0a38"},{"author":{"_account_id":23567,"name":"Luis Tomas Bolivar","email":"ltomasbo@redhat.com","username":"ltomasbo"},"change_message_id":"1a7131cd100a99dbbdde1ac8ba5d1aa4024896aa","unresolved":true,"context_lines":[{"line_number":571,"context_line":"    ovn_bgp_agent.privileged.linux_net.add_ndp_proxy(ip, dev, vlan)"},{"line_number":572,"context_line":""},{"line_number":573,"context_line":""},{"line_number":574,"context_line":"def del_ndp_proxy(ip, dev, vlan\u003dNone):"},{"line_number":575,"context_line":"    if vlan:"},{"line_number":576,"context_line":"        dev \u003d get_bridge_vlan_device_name(dev)"},{"line_number":577,"context_line":"    ovn_bgp_agent.privileged.linux_net.del_ndp_proxy(ip, dev, vlan)"},{"line_number":578,"context_line":""},{"line_number":579,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"ba84b96f_959d90d4","line":576,"range":{"start_line":574,"start_character":1,"end_line":576,"end_character":46},"updated":"2024-03-06 12:28:14.000000000","message":"ditto","commit_id":"8bba59cf4ff1186c386ee45d5e2bbd25685c0a38"},{"author":{"_account_id":28619,"name":"Dmitriy Rabotyagov","email":"noonedeadpunk@gmail.com","username":"noonedeadpunk"},"change_message_id":"0778cbe93b9333fa51342002d8cdeee646a5a8cf","unresolved":false,"context_lines":[{"line_number":571,"context_line":"    ovn_bgp_agent.privileged.linux_net.add_ndp_proxy(ip, dev, vlan)"},{"line_number":572,"context_line":""},{"line_number":573,"context_line":""},{"line_number":574,"context_line":"def del_ndp_proxy(ip, dev, vlan\u003dNone):"},{"line_number":575,"context_line":"    if vlan:"},{"line_number":576,"context_line":"        dev \u003d get_bridge_vlan_device_name(dev)"},{"line_number":577,"context_line":"    ovn_bgp_agent.privileged.linux_net.del_ndp_proxy(ip, dev, vlan)"},{"line_number":578,"context_line":""},{"line_number":579,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"0f45860d_285c4667","line":576,"range":{"start_line":574,"start_character":1,"end_line":576,"end_character":46},"in_reply_to":"ba84b96f_959d90d4","updated":"2024-11-07 13:51:29.000000000","message":"Done","commit_id":"8bba59cf4ff1186c386ee45d5e2bbd25685c0a38"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"956c26aaafbd24832a3b1a22d0599c139d7842f7","unresolved":true,"context_lines":[{"line_number":419,"context_line":""},{"line_number":420,"context_line":""},{"line_number":421,"context_line":"def get_bridge_vlan_device_name(bridge):"},{"line_number":422,"context_line":"    # NOTE(noonedeadpunk): While max length of the interface is 15,"},{"line_number":423,"context_line":"    #                      we deduct one symbol for the `.` right"},{"line_number":424,"context_line":"    #                      away which leaves us with 14 symbols."},{"line_number":425,"context_line":"    #                      From that we deduct max legth of the vlan"},{"line_number":426,"context_line":"    #                      id, which leaves us with 10 symbols."},{"line_number":427,"context_line":"    bridge_max_length \u003d 10"},{"line_number":428,"context_line":"    return bridge[:bridge_max_length]"},{"line_number":429,"context_line":""},{"line_number":430,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"625841c9_686b4f81","line":427,"range":{"start_line":422,"start_character":0,"end_line":427,"end_character":26},"updated":"2024-10-24 17:44:05.000000000","message":"Can this be moved away from the function since it\u0027s a constant? Best would be to calculate it so it\u0027s clear why the number is exactly 10, like\n```\nBRIDGE_MAX_LENGTH \u003d constants.DEVICE_NAME_MAX_LEN - len(\n    \".{}\".format(constants.MAX_VLAN_TAG))\n```","commit_id":"8239602cd2f2784002b7f505a8e5fc6f7c462d32"},{"author":{"_account_id":28619,"name":"Dmitriy Rabotyagov","email":"noonedeadpunk@gmail.com","username":"noonedeadpunk"},"change_message_id":"0778cbe93b9333fa51342002d8cdeee646a5a8cf","unresolved":false,"context_lines":[{"line_number":419,"context_line":""},{"line_number":420,"context_line":""},{"line_number":421,"context_line":"def get_bridge_vlan_device_name(bridge):"},{"line_number":422,"context_line":"    # NOTE(noonedeadpunk): While max length of the interface is 15,"},{"line_number":423,"context_line":"    #                      we deduct one symbol for the `.` right"},{"line_number":424,"context_line":"    #                      away which leaves us with 14 symbols."},{"line_number":425,"context_line":"    #                      From that we deduct max legth of the vlan"},{"line_number":426,"context_line":"    #                      id, which leaves us with 10 symbols."},{"line_number":427,"context_line":"    bridge_max_length \u003d 10"},{"line_number":428,"context_line":"    return bridge[:bridge_max_length]"},{"line_number":429,"context_line":""},{"line_number":430,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"16a5e04c_2dc5d4de","line":427,"range":{"start_line":422,"start_character":0,"end_line":427,"end_character":26},"in_reply_to":"625841c9_686b4f81","updated":"2024-11-07 13:51:29.000000000","message":"Done","commit_id":"8239602cd2f2784002b7f505a8e5fc6f7c462d32"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"956c26aaafbd24832a3b1a22d0599c139d7842f7","unresolved":true,"context_lines":[{"line_number":429,"context_line":""},{"line_number":430,"context_line":""},{"line_number":431,"context_line":"def enable_proxy_ndp(device):"},{"line_number":432,"context_line":"    flag \u003d \"net.ipv6.conf.{}.proxy_ndp\".format(device[:15])"},{"line_number":433,"context_line":"    ovn_bgp_agent.privileged.linux_net.set_kernel_flag(flag, 1)"},{"line_number":434,"context_line":""},{"line_number":435,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"75372d88_5603744f","line":432,"range":{"start_line":432,"start_character":55,"end_line":432,"end_character":57},"updated":"2024-10-24 17:44:05.000000000","message":"constants or perhaps `get_bridge_vlan_device_name(device)` ?","commit_id":"8239602cd2f2784002b7f505a8e5fc6f7c462d32"},{"author":{"_account_id":28619,"name":"Dmitriy Rabotyagov","email":"noonedeadpunk@gmail.com","username":"noonedeadpunk"},"change_message_id":"0778cbe93b9333fa51342002d8cdeee646a5a8cf","unresolved":false,"context_lines":[{"line_number":429,"context_line":""},{"line_number":430,"context_line":""},{"line_number":431,"context_line":"def enable_proxy_ndp(device):"},{"line_number":432,"context_line":"    flag \u003d \"net.ipv6.conf.{}.proxy_ndp\".format(device[:15])"},{"line_number":433,"context_line":"    ovn_bgp_agent.privileged.linux_net.set_kernel_flag(flag, 1)"},{"line_number":434,"context_line":""},{"line_number":435,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"080c6d79_691672e6","line":432,"range":{"start_line":432,"start_character":55,"end_line":432,"end_character":57},"in_reply_to":"75372d88_5603744f","updated":"2024-11-07 13:51:29.000000000","message":"let me do that in a follow-up as well","commit_id":"8239602cd2f2784002b7f505a8e5fc6f7c462d32"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"956c26aaafbd24832a3b1a22d0599c139d7842f7","unresolved":true,"context_lines":[{"line_number":434,"context_line":""},{"line_number":435,"context_line":""},{"line_number":436,"context_line":"def enable_proxy_arp(device):"},{"line_number":437,"context_line":"    flag \u003d \"net.ipv4.conf.{}.proxy_arp\".format(device[:15])"},{"line_number":438,"context_line":"    ovn_bgp_agent.privileged.linux_net.set_kernel_flag(flag, 1)"},{"line_number":439,"context_line":""},{"line_number":440,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"1271ad6d_1991f320","line":437,"range":{"start_line":437,"start_character":55,"end_line":437,"end_character":57},"updated":"2024-10-24 17:44:05.000000000","message":"ditto","commit_id":"8239602cd2f2784002b7f505a8e5fc6f7c462d32"},{"author":{"_account_id":28619,"name":"Dmitriy Rabotyagov","email":"noonedeadpunk@gmail.com","username":"noonedeadpunk"},"change_message_id":"0778cbe93b9333fa51342002d8cdeee646a5a8cf","unresolved":false,"context_lines":[{"line_number":434,"context_line":""},{"line_number":435,"context_line":""},{"line_number":436,"context_line":"def enable_proxy_arp(device):"},{"line_number":437,"context_line":"    flag \u003d \"net.ipv4.conf.{}.proxy_arp\".format(device[:15])"},{"line_number":438,"context_line":"    ovn_bgp_agent.privileged.linux_net.set_kernel_flag(flag, 1)"},{"line_number":439,"context_line":""},{"line_number":440,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"6ee8faf9_559fdc43","line":437,"range":{"start_line":437,"start_character":55,"end_line":437,"end_character":57},"in_reply_to":"1271ad6d_1991f320","updated":"2024-11-07 13:51:29.000000000","message":"will do in follow-up","commit_id":"8239602cd2f2784002b7f505a8e5fc6f7c462d32"}]}
