)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"18f3be5aba66a432858c90a0a371bf1301175c71","unresolved":true,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Fix load_db_migration_drivers to work with callable plugins"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Migration plugins registered under the ``neutron.ovn.db_migration``"},{"line_number":10,"context_line":"entry point are plain callables (functions), not subclasses of"},{"line_number":11,"context_line":"``BaseOvnDbSynchronizer``. The shared ``_load_drivers`` helper applies"},{"line_number":12,"context_line":"an ``issubclass`` guard that is only valid for class-based sync plugins,"},{"line_number":13,"context_line":"causing a ``TypeError`` when loading function-based migration plugins and"},{"line_number":14,"context_line":"ultimately a ``NoMatches`` exception that aborts the OVS-to-OVN database"},{"line_number":15,"context_line":"migration step."},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"Fix this by giving ``load_db_migration_drivers`` its own"},{"line_number":18,"context_line":"``EnabledExtensionManager`` construction that skips the ``issubclass``"},{"line_number":19,"context_line":"check and simply filters by driver name."},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"Closes-Bug: #2160210"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"Assisted-By: Claude Sonnet 4.6"},{"line_number":24,"context_line":"Change-Id: I5c9b689558a9553ff6968868b43bf3d9239c92ad"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"d7c78499_c736f09d","line":21,"range":{"start_line":9,"start_character":0,"end_line":21,"end_character":20},"updated":"2026-07-09 13:06:26.000000000","message":"Please, limit the title to 50 chars [1] and the body to 72 [2]\n\n[1]https://docs.openstack.org/contributors/es_MX/common/git.html#summary-line\n[2]https://docs.openstack.org/contributors/es_MX/common/git.html#body","commit_id":"6919c691728e062da6d66d1de776e99d3a8ded99"},{"author":{"_account_id":22629,"name":"Michal Nasiadka","email":"mnasiadka@gmail.com","username":"mnasiadka"},"change_message_id":"f3ef7567fe15c50193c965db7774ca490c6e517d","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Fix load_db_migration_drivers to work with callable plugins"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Migration plugins registered under the ``neutron.ovn.db_migration``"},{"line_number":10,"context_line":"entry point are plain callables (functions), not subclasses of"},{"line_number":11,"context_line":"``BaseOvnDbSynchronizer``. The shared ``_load_drivers`` helper applies"},{"line_number":12,"context_line":"an ``issubclass`` guard that is only valid for class-based sync plugins,"},{"line_number":13,"context_line":"causing a ``TypeError`` when loading function-based migration plugins and"},{"line_number":14,"context_line":"ultimately a ``NoMatches`` exception that aborts the OVS-to-OVN database"},{"line_number":15,"context_line":"migration step."},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"Fix this by giving ``load_db_migration_drivers`` its own"},{"line_number":18,"context_line":"``EnabledExtensionManager`` construction that skips the ``issubclass``"},{"line_number":19,"context_line":"check and simply filters by driver name."},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"Closes-Bug: #2160210"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"Assisted-By: Claude Sonnet 4.6"},{"line_number":24,"context_line":"Change-Id: I5c9b689558a9553ff6968868b43bf3d9239c92ad"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"322eb3f8_13eca2bc","line":21,"range":{"start_line":9,"start_character":0,"end_line":21,"end_character":20},"in_reply_to":"d7c78499_c736f09d","updated":"2026-07-09 16:52:59.000000000","message":"Done","commit_id":"6919c691728e062da6d66d1de776e99d3a8ded99"}],"/PATCHSET_LEVEL":[{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"18f3be5aba66a432858c90a0a371bf1301175c71","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"8eae39e0_0fcb6b18","updated":"2026-07-09 13:06:26.000000000","message":"The bug is legit, thanks for reporting it","commit_id":"6919c691728e062da6d66d1de776e99d3a8ded99"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"f7cd0e277ea7ab006fe34b2c6be64f25a570a09b","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"ef52aa6b_2d403db0","updated":"2026-07-09 17:39:00.000000000","message":"This fix should be backported to 2026.1","commit_id":"c615e18da9943d9f8837e6f2d4bc0c5055447076"},{"author":{"_account_id":22629,"name":"Michal Nasiadka","email":"mnasiadka@gmail.com","username":"mnasiadka"},"change_message_id":"61b97623be122b0145cb3e90ffb9144e181bcf73","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"0f4298c3_5004e5ef","updated":"2026-07-10 10:22:08.000000000","message":"recheck unrelated neutron-tempest-plugin-ovn failure","commit_id":"c615e18da9943d9f8837e6f2d4bc0c5055447076"}],"neutron/cmd/ovn/neutron_ovn_db_sync_util.py":[{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"18f3be5aba66a432858c90a0a371bf1301175c71","unresolved":true,"context_lines":[{"line_number":113,"context_line":"def _load_drivers(entry_point, driver_name\u003dNone):"},{"line_number":114,"context_line":""},{"line_number":115,"context_line":"    def load_driver(ext):"},{"line_number":116,"context_line":"        if not issubclass(ext.plugin, db_sync_base.BaseOvnDbSynchronizer):"},{"line_number":117,"context_line":"            LOG.error(\"Extension \u0027%s\u0027 is not an instance of \""},{"line_number":118,"context_line":"                      \"%s and will not be loaded\","},{"line_number":119,"context_line":"                      ext.name, db_sync_base.BaseOvnDbSynchronizer)"}],"source_content_type":"text/x-python","patch_set":1,"id":"81551a81_bfed7099","line":116,"range":{"start_line":116,"start_character":8,"end_line":116,"end_character":74},"updated":"2026-07-09 13:06:26.000000000","message":"This could be solved by doing this:\n```\n        if (inspect.isclass(ext.plugin) and\n                not issubclass(ext.plugin, db_sync_base.BaseOvnDbSynchronizer)):\n```","commit_id":"6919c691728e062da6d66d1de776e99d3a8ded99"},{"author":{"_account_id":22629,"name":"Michal Nasiadka","email":"mnasiadka@gmail.com","username":"mnasiadka"},"change_message_id":"f3ef7567fe15c50193c965db7774ca490c6e517d","unresolved":false,"context_lines":[{"line_number":113,"context_line":"def _load_drivers(entry_point, driver_name\u003dNone):"},{"line_number":114,"context_line":""},{"line_number":115,"context_line":"    def load_driver(ext):"},{"line_number":116,"context_line":"        if not issubclass(ext.plugin, db_sync_base.BaseOvnDbSynchronizer):"},{"line_number":117,"context_line":"            LOG.error(\"Extension \u0027%s\u0027 is not an instance of \""},{"line_number":118,"context_line":"                      \"%s and will not be loaded\","},{"line_number":119,"context_line":"                      ext.name, db_sync_base.BaseOvnDbSynchronizer)"}],"source_content_type":"text/x-python","patch_set":1,"id":"3287f8fb_3a211c84","line":116,"range":{"start_line":116,"start_character":8,"end_line":116,"end_character":74},"in_reply_to":"81551a81_bfed7099","updated":"2026-07-09 16:52:59.000000000","message":"Thanks, that\u0027s way easier.","commit_id":"6919c691728e062da6d66d1de776e99d3a8ded99"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"18f3be5aba66a432858c90a0a371bf1301175c71","unresolved":true,"context_lines":[{"line_number":133,"context_line":""},{"line_number":134,"context_line":""},{"line_number":135,"context_line":"def load_db_migration_drivers(driver_name\u003dNone):"},{"line_number":136,"context_line":"    def load_driver(ext):"},{"line_number":137,"context_line":"        if driver_name is None:"},{"line_number":138,"context_line":"            return True"},{"line_number":139,"context_line":"        return ext.name \u003d\u003d driver_name"},{"line_number":140,"context_line":""},{"line_number":141,"context_line":"    return enabled.EnabledExtensionManager("},{"line_number":142,"context_line":"        \u0027neutron.ovn.db_migration\u0027,"},{"line_number":143,"context_line":"        check_func\u003dload_driver,"},{"line_number":144,"context_line":"        invoke_on_load\u003dFalse)"},{"line_number":145,"context_line":""},{"line_number":146,"context_line":""},{"line_number":147,"context_line":"def prepare_additional_configuration(conf, mgr):"}],"source_content_type":"text/x-python","patch_set":1,"id":"00d791f5_60e67f3d","line":144,"range":{"start_line":136,"start_character":3,"end_line":144,"end_character":29},"updated":"2026-07-09 13:06:26.000000000","message":"Instead of redoing this check, let\u0027s fix `_load_drivers`","commit_id":"6919c691728e062da6d66d1de776e99d3a8ded99"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"f2d9cc9536bcb22a0846181bddc20ef66c0bf9ec","unresolved":true,"context_lines":[{"line_number":133,"context_line":""},{"line_number":134,"context_line":""},{"line_number":135,"context_line":"def load_db_migration_drivers(driver_name\u003dNone):"},{"line_number":136,"context_line":"    def load_driver(ext):"},{"line_number":137,"context_line":"        if driver_name is None:"},{"line_number":138,"context_line":"            return True"},{"line_number":139,"context_line":"        return ext.name \u003d\u003d driver_name"},{"line_number":140,"context_line":""},{"line_number":141,"context_line":"    return enabled.EnabledExtensionManager("},{"line_number":142,"context_line":"        \u0027neutron.ovn.db_migration\u0027,"},{"line_number":143,"context_line":"        check_func\u003dload_driver,"},{"line_number":144,"context_line":"        invoke_on_load\u003dFalse)"},{"line_number":145,"context_line":""},{"line_number":146,"context_line":""},{"line_number":147,"context_line":"def prepare_additional_configuration(conf, mgr):"}],"source_content_type":"text/x-python","patch_set":1,"id":"7a15ef26_9dc5ee28","line":144,"range":{"start_line":136,"start_character":3,"end_line":144,"end_character":29},"in_reply_to":"00d791f5_60e67f3d","updated":"2026-07-09 14:20:12.000000000","message":"+1","commit_id":"6919c691728e062da6d66d1de776e99d3a8ded99"},{"author":{"_account_id":22629,"name":"Michal Nasiadka","email":"mnasiadka@gmail.com","username":"mnasiadka"},"change_message_id":"f3ef7567fe15c50193c965db7774ca490c6e517d","unresolved":false,"context_lines":[{"line_number":133,"context_line":""},{"line_number":134,"context_line":""},{"line_number":135,"context_line":"def load_db_migration_drivers(driver_name\u003dNone):"},{"line_number":136,"context_line":"    def load_driver(ext):"},{"line_number":137,"context_line":"        if driver_name is None:"},{"line_number":138,"context_line":"            return True"},{"line_number":139,"context_line":"        return ext.name \u003d\u003d driver_name"},{"line_number":140,"context_line":""},{"line_number":141,"context_line":"    return enabled.EnabledExtensionManager("},{"line_number":142,"context_line":"        \u0027neutron.ovn.db_migration\u0027,"},{"line_number":143,"context_line":"        check_func\u003dload_driver,"},{"line_number":144,"context_line":"        invoke_on_load\u003dFalse)"},{"line_number":145,"context_line":""},{"line_number":146,"context_line":""},{"line_number":147,"context_line":"def prepare_additional_configuration(conf, mgr):"}],"source_content_type":"text/x-python","patch_set":1,"id":"6ba22f12_ffa0b989","line":144,"range":{"start_line":136,"start_character":3,"end_line":144,"end_character":29},"in_reply_to":"7a15ef26_9dc5ee28","updated":"2026-07-09 16:52:59.000000000","message":"Done","commit_id":"6919c691728e062da6d66d1de776e99d3a8ded99"}]}
