)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"2260d53fb3709912b4b521aa9ee5ddd937127f66","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"d5cc8491_f5960f11","updated":"2026-05-27 16:32:03.000000000","message":"I guess the other option is to put this in the sync tool?","commit_id":"d903c3381755d88751f67aadfd4af3dad39d1a81"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"9aa3e3524d2cdb38956c300f937f9f843234ba28","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"f7fdfeec_3cf43a62","in_reply_to":"cd482d0c_978a09db","updated":"2026-06-02 09:34:46.000000000","message":"I agree with Brian here. Why do we need to introduce yet another new CLI tool if we aleady have `neutron-db-sync-util` which is doing things like that to sync things in the OVN DB with Neutron DB. This tool is also run by administrators \"on demand\" and has different modes like \"log\" or \"repair\" so cloud operator can check what will be changed and then run it to repair stuff when they will have it scheduled","commit_id":"d903c3381755d88751f67aadfd4af3dad39d1a81"},{"author":{"_account_id":36716,"name":"Kyuyeong Lee","display_name":"Kyuyeong Lee","email":"kyu0.lee@samsung.com","username":"kyu0"},"change_message_id":"6e494d43fe7074fc6b0f795e7628f85a3c8a64e7","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"cd482d0c_978a09db","in_reply_to":"d5cc8491_f5960f11","updated":"2026-05-28 06:24:22.000000000","message":"Thanks for the suggestion. Because this modifies existing resources, I want operators to explicitly control when this migration is executed. I think merging it into the sync tool could risk unintended execution during routine maintenance. Keeping it separate ensures the migration is a deliberate choice.","commit_id":"d903c3381755d88751f67aadfd4af3dad39d1a81"}],"neutron/cmd/ovn/migrate_metadata_mtu.py":[{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"2260d53fb3709912b4b521aa9ee5ddd937127f66","unresolved":true,"context_lines":[{"line_number":67,"context_line":"    return None"},{"line_number":68,"context_line":""},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"def _update_port_mtu(nb_api, port_name, mtu):"},{"line_number":71,"context_line":"    nb_api.db_set("},{"line_number":72,"context_line":"        \u0027Logical_Switch_Port\u0027, port_name,"},{"line_number":73,"context_line":"        (\u0027external_ids\u0027, {OVN_NETWORK_MTU_EXT_ID_KEY: mtu})"}],"source_content_type":"text/x-python","patch_set":1,"id":"add8f793_d908e8ea","line":70,"updated":"2026-05-27 16:32:03.000000000","message":"There is only one caller of this function, code can probably be moved there, unless it\u0027s needed for the tests?","commit_id":"d903c3381755d88751f67aadfd4af3dad39d1a81"},{"author":{"_account_id":36716,"name":"Kyuyeong Lee","display_name":"Kyuyeong Lee","email":"kyu0.lee@samsung.com","username":"kyu0"},"change_message_id":"69c3b362ecb602b7f9aec1faddae569eb339b0c7","unresolved":false,"context_lines":[{"line_number":67,"context_line":"    return None"},{"line_number":68,"context_line":""},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"def _update_port_mtu(nb_api, port_name, mtu):"},{"line_number":71,"context_line":"    nb_api.db_set("},{"line_number":72,"context_line":"        \u0027Logical_Switch_Port\u0027, port_name,"},{"line_number":73,"context_line":"        (\u0027external_ids\u0027, {OVN_NETWORK_MTU_EXT_ID_KEY: mtu})"}],"source_content_type":"text/x-python","patch_set":1,"id":"fc948dd0_3ee662d1","line":70,"in_reply_to":"add8f793_d908e8ea","updated":"2026-05-28 06:31:44.000000000","message":"Inlined as suggested in Patchset 2. Thanks.","commit_id":"d903c3381755d88751f67aadfd4af3dad39d1a81"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"2260d53fb3709912b4b521aa9ee5ddd937127f66","unresolved":true,"context_lines":[{"line_number":95,"context_line":"        for name in missing_mtu:"},{"line_number":96,"context_line":"            ls_mtu \u003d _get_lswitch_mtu(nb_api, name)"},{"line_number":97,"context_line":"            mtu_str \u003d ls_mtu if ls_mtu else \"unknown\""},{"line_number":98,"context_line":"            LOG.info(\"  %s (network MTU: %s)\", name, mtu_str)"},{"line_number":99,"context_line":""},{"line_number":100,"context_line":"    if has_mtu:"},{"line_number":101,"context_line":"        LOG.info(\"Metadata ports with neutron:mtu already set:\")"}],"source_content_type":"text/x-python","patch_set":1,"id":"fcf7ede5_bd03565e","line":98,"updated":"2026-05-27 16:32:03.000000000","message":"There is a missing \u0027:\u0027 after the port name here. And we should try and make this and below consistent, maybe:\n\n  %s: network MTU: %s\n  \n  %s: port MTU: %s\n\n?","commit_id":"d903c3381755d88751f67aadfd4af3dad39d1a81"},{"author":{"_account_id":36716,"name":"Kyuyeong Lee","display_name":"Kyuyeong Lee","email":"kyu0.lee@samsung.com","username":"kyu0"},"change_message_id":"fbca24645e7b9a2caa935d314a3d584e3f7784b8","unresolved":false,"context_lines":[{"line_number":95,"context_line":"        for name in missing_mtu:"},{"line_number":96,"context_line":"            ls_mtu \u003d _get_lswitch_mtu(nb_api, name)"},{"line_number":97,"context_line":"            mtu_str \u003d ls_mtu if ls_mtu else \"unknown\""},{"line_number":98,"context_line":"            LOG.info(\"  %s (network MTU: %s)\", name, mtu_str)"},{"line_number":99,"context_line":""},{"line_number":100,"context_line":"    if has_mtu:"},{"line_number":101,"context_line":"        LOG.info(\"Metadata ports with neutron:mtu already set:\")"}],"source_content_type":"text/x-python","patch_set":1,"id":"45479cd2_fe0498b5","line":98,"in_reply_to":"fcf7ede5_bd03565e","updated":"2026-05-28 06:32:30.000000000","message":"Applied in Patchset 2. The log formats are now consistent with the suggested format. Thank you.","commit_id":"d903c3381755d88751f67aadfd4af3dad39d1a81"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"2260d53fb3709912b4b521aa9ee5ddd937127f66","unresolved":true,"context_lines":[{"line_number":104,"context_line":""},{"line_number":105,"context_line":"    LOG.info(\"Summary: %d ports need update, %d ports already configured\","},{"line_number":106,"context_line":"             len(missing_mtu), len(has_mtu))"},{"line_number":107,"context_line":"    return len(missing_mtu)"},{"line_number":108,"context_line":""},{"line_number":109,"context_line":""},{"line_number":110,"context_line":"def _update(nb_api):"}],"source_content_type":"text/x-python","patch_set":1,"id":"5a0678a0_8f223646","line":107,"updated":"2026-05-27 16:32:03.000000000","message":"The callers never check the return value, this can be removed as well as other places here and in _update() and all callers.","commit_id":"d903c3381755d88751f67aadfd4af3dad39d1a81"},{"author":{"_account_id":36716,"name":"Kyuyeong Lee","display_name":"Kyuyeong Lee","email":"kyu0.lee@samsung.com","username":"kyu0"},"change_message_id":"b521e11e9123cbcd4cdd10e9e82994307208456a","unresolved":false,"context_lines":[{"line_number":104,"context_line":""},{"line_number":105,"context_line":"    LOG.info(\"Summary: %d ports need update, %d ports already configured\","},{"line_number":106,"context_line":"             len(missing_mtu), len(has_mtu))"},{"line_number":107,"context_line":"    return len(missing_mtu)"},{"line_number":108,"context_line":""},{"line_number":109,"context_line":""},{"line_number":110,"context_line":"def _update(nb_api):"}],"source_content_type":"text/x-python","patch_set":1,"id":"9234e936_0069774a","line":107,"in_reply_to":"5a0678a0_8f223646","updated":"2026-05-28 06:33:20.000000000","message":"I agree with you. Applied in Patchset 2. Thank you.","commit_id":"d903c3381755d88751f67aadfd4af3dad39d1a81"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"2260d53fb3709912b4b521aa9ee5ddd937127f66","unresolved":true,"context_lines":[{"line_number":125,"context_line":"        if not ls_mtu:"},{"line_number":126,"context_line":"            LOG.info(\"  Skipping port %s: cannot determine network MTU\","},{"line_number":127,"context_line":"                     port[\u0027name\u0027])"},{"line_number":128,"context_line":"            continue"},{"line_number":129,"context_line":""},{"line_number":130,"context_line":"        _update_port_mtu(nb_api, port[\u0027name\u0027], ls_mtu)"},{"line_number":131,"context_line":"        updated +\u003d 1"}],"source_content_type":"text/x-python","patch_set":1,"id":"dde9dc32_1c9f8615","line":128,"updated":"2026-05-27 16:32:03.000000000","message":"There is a missing \u0027skipped +\u003d 1\u0027 in this block.\n\nBut looking closer we can calculate what was skipped by using \u0027len(ports) - updated\u0027 once we leave the loop","commit_id":"d903c3381755d88751f67aadfd4af3dad39d1a81"},{"author":{"_account_id":36716,"name":"Kyuyeong Lee","display_name":"Kyuyeong Lee","email":"kyu0.lee@samsung.com","username":"kyu0"},"change_message_id":"014b55261030ac6b67be8301f591f73ba5586147","unresolved":false,"context_lines":[{"line_number":125,"context_line":"        if not ls_mtu:"},{"line_number":126,"context_line":"            LOG.info(\"  Skipping port %s: cannot determine network MTU\","},{"line_number":127,"context_line":"                     port[\u0027name\u0027])"},{"line_number":128,"context_line":"            continue"},{"line_number":129,"context_line":""},{"line_number":130,"context_line":"        _update_port_mtu(nb_api, port[\u0027name\u0027], ls_mtu)"},{"line_number":131,"context_line":"        updated +\u003d 1"}],"source_content_type":"text/x-python","patch_set":1,"id":"c1914774_54d1fa89","line":128,"in_reply_to":"dde9dc32_1c9f8615","updated":"2026-05-28 06:34:30.000000000","message":"Removed the skipped counter and now use \u0027len(ports) - updated\u0027 as suggested. Thanks.","commit_id":"d903c3381755d88751f67aadfd4af3dad39d1a81"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"2260d53fb3709912b4b521aa9ee5ddd937127f66","unresolved":true,"context_lines":[{"line_number":175,"context_line":"    logging.setup(conf, \u0027neutron-ovn-migrate-metadata-mtu\u0027,"},{"line_number":176,"context_line":"                  fix_eventlet\u003dFalse)"},{"line_number":177,"context_line":"    commands \u003d [a for a in sys.argv[1:] if a in (\u0027verify\u0027, \u0027update\u0027)]"},{"line_number":178,"context_line":"    if not commands:"},{"line_number":179,"context_line":"        LOG.error(\u0027Usage: %s \u003cverify|update\u003e\u0027, sys.argv[0])"},{"line_number":180,"context_line":"        sys.exit(1)"},{"line_number":181,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"087afc0b_51b6f754","line":178,"range":{"start_line":178,"start_character":4,"end_line":178,"end_character":19},"updated":"2026-05-27 16:32:03.000000000","message":"Should maybe be:\n\nif len(commands) !\u003d 1:\n\nThat way specifying both verify and update generates an error as it\u0027s undefined behavior.","commit_id":"d903c3381755d88751f67aadfd4af3dad39d1a81"},{"author":{"_account_id":36716,"name":"Kyuyeong Lee","display_name":"Kyuyeong Lee","email":"kyu0.lee@samsung.com","username":"kyu0"},"change_message_id":"d9e3c2b0e4e7c6ff581a02f5696a5c8ba58b546a","unresolved":false,"context_lines":[{"line_number":175,"context_line":"    logging.setup(conf, \u0027neutron-ovn-migrate-metadata-mtu\u0027,"},{"line_number":176,"context_line":"                  fix_eventlet\u003dFalse)"},{"line_number":177,"context_line":"    commands \u003d [a for a in sys.argv[1:] if a in (\u0027verify\u0027, \u0027update\u0027)]"},{"line_number":178,"context_line":"    if not commands:"},{"line_number":179,"context_line":"        LOG.error(\u0027Usage: %s \u003cverify|update\u003e\u0027, sys.argv[0])"},{"line_number":180,"context_line":"        sys.exit(1)"},{"line_number":181,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"d9e8cdce_25427c17","line":178,"range":{"start_line":178,"start_character":4,"end_line":178,"end_character":19},"in_reply_to":"087afc0b_51b6f754","updated":"2026-05-28 06:35:35.000000000","message":"I think it is good point. Thank you. Applied in Patchset 2.","commit_id":"d903c3381755d88751f67aadfd4af3dad39d1a81"}]}
