)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":7353,"name":"Kevin Carter","email":"kevin@cloudnull.com","username":"cloudnull"},"change_message_id":"90d60ce24bbc17a3a8699693b5c143e9adcf9d37","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"b86f17e5_c7ad2c7b","updated":"2025-02-16 20:38:33.000000000","message":"recheck","commit_id":"a1cc8d6d1524dd00d4669f2657de153d26b79175"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"f5cab1252bde7f25da9ad3828661bba229632aff","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"c045bffe_f215bb43","updated":"2025-02-18 21:15:22.000000000","message":"You should file an RFE bug so the drivers team can review it. If approved I don\u0027t think something like this would require a spec or anything.\n\nAlso, please add a release note since this is a new feature.","commit_id":"25e2dd062d3458d7367de4c910f690e16ec15ddc"},{"author":{"_account_id":7353,"name":"Kevin Carter","email":"kevin@cloudnull.com","username":"cloudnull"},"change_message_id":"0cedaab4bfb6653e5fb997d492f5722f31329733","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"d2d57248_88782822","in_reply_to":"c045bffe_f215bb43","updated":"2025-02-26 01:40:22.000000000","message":"Thank you for the review Brian - the bug has been created and can be found here - https://bugs.launchpad.net/neutron/+bug/2099818\n\nLet me know if you have any questions around that or if there\u0027s anything else needed.","commit_id":"25e2dd062d3458d7367de4c910f690e16ec15ddc"},{"author":{"_account_id":35873,"name":"Daniel Failing","display_name":"Daniel Failing","email":"dev@danfai.de","username":"danfai"},"change_message_id":"4e40b931f8a67033cb1f816eb1a3c432b9db4875","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":10,"id":"0a6a6a0a_ea2ec041","updated":"2025-03-12 10:52:13.000000000","message":"This might be a nice functionality to have when migrating from LXB to OVN.\nDuring that we have at least one step where we have to add all neutron entries before AND after enabling ovn on all neutron servers.\n👍","commit_id":"8958c95e3cfe16aab534625e10ccb85d8b95d65a"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"e6c6df7fc6ed34b51a5baa628a4ed70ae9fcd566","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":13,"id":"8d4c407f_99501100","updated":"2025-05-22 19:24:01.000000000","message":"Just adding a -1 since we have not approved the RFE yet. Please see the bug for more info.","commit_id":"00b985e138a98d9c73e836515bc2c1339f94e803"}],"neutron/cmd/ovn/neutron_ovn_db_sync_util.py":[{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"f5cab1252bde7f25da9ad3828661bba229632aff","unresolved":true,"context_lines":[{"line_number":181,"context_line":"        migrate \u003d True"},{"line_number":182,"context_line":"    if mode not in [ovn_const.OVN_DB_SYNC_MODE_LOG,"},{"line_number":183,"context_line":"                    ovn_const.OVN_DB_SYNC_MODE_REPAIR,"},{"line_number":184,"context_line":"                    ovn_const.OVN_DB_SYNC_MODE_ADD]:"},{"line_number":185,"context_line":"        LOG.error("},{"line_number":186,"context_line":"            \u0027Invalid sync mode: [\"%s\"]. Should be \"%s\", \"%s\", \"%s\".\u0027,"},{"line_number":187,"context_line":"            mode,"}],"source_content_type":"text/x-python","patch_set":5,"id":"44c5c444_951d5df2","line":184,"updated":"2025-02-18 21:15:22.000000000","message":"Should probably make a constant that is the valid list in the constants file.","commit_id":"25e2dd062d3458d7367de4c910f690e16ec15ddc"},{"author":{"_account_id":7353,"name":"Kevin Carter","email":"kevin@cloudnull.com","username":"cloudnull"},"change_message_id":"0cedaab4bfb6653e5fb997d492f5722f31329733","unresolved":false,"context_lines":[{"line_number":181,"context_line":"        migrate \u003d True"},{"line_number":182,"context_line":"    if mode not in [ovn_const.OVN_DB_SYNC_MODE_LOG,"},{"line_number":183,"context_line":"                    ovn_const.OVN_DB_SYNC_MODE_REPAIR,"},{"line_number":184,"context_line":"                    ovn_const.OVN_DB_SYNC_MODE_ADD]:"},{"line_number":185,"context_line":"        LOG.error("},{"line_number":186,"context_line":"            \u0027Invalid sync mode: [\"%s\"]. Should be \"%s\", \"%s\", \"%s\".\u0027,"},{"line_number":187,"context_line":"            mode,"}],"source_content_type":"text/x-python","patch_set":5,"id":"f23d4d4e_e73ea776","line":184,"in_reply_to":"44c5c444_951d5df2","updated":"2025-02-26 01:40:22.000000000","message":"Acknowledged","commit_id":"25e2dd062d3458d7367de4c910f690e16ec15ddc"}],"neutron/plugins/ml2/drivers/ovn/mech_driver/ovsdb/ovn_db_sync.py":[{"author":{"_account_id":5890,"name":"Doug Goldstein","email":"cardoe@cardoe.com","username":"cardoe"},"change_message_id":"1a98008886975dab030575f950adb5f2260f74f5","unresolved":true,"context_lines":[{"line_number":227,"context_line":"                            txn.add(self.ovn_api.pg_add_ports("},{"line_number":228,"context_line":"                                pg, n_port[\u0027id\u0027]))"},{"line_number":229,"context_line":"                for pg in remove_pgs:"},{"line_number":230,"context_line":"                    if self.mode \u003d\u003d ovn_const.OVN_DB_SYNC_MODE_REPAIR:"},{"line_number":231,"context_line":"                        txn.add(self.ovn_api.pg_del(pg))"},{"line_number":232,"context_line":""},{"line_number":233,"context_line":"        LOG.debug(\u0027OVN-NB Sync port groups completed @ %s\u0027,"}],"source_content_type":"text/x-python","patch_set":3,"id":"2826a12f_6201791f","line":230,"updated":"2025-02-16 21:25:06.000000000","message":"Since you\u0027re skipping this whole thing, put the if check above the for loop.","commit_id":"a1cc8d6d1524dd00d4669f2657de153d26b79175"},{"author":{"_account_id":7353,"name":"Kevin Carter","email":"kevin@cloudnull.com","username":"cloudnull"},"change_message_id":"0cedaab4bfb6653e5fb997d492f5722f31329733","unresolved":false,"context_lines":[{"line_number":227,"context_line":"                            txn.add(self.ovn_api.pg_add_ports("},{"line_number":228,"context_line":"                                pg, n_port[\u0027id\u0027]))"},{"line_number":229,"context_line":"                for pg in remove_pgs:"},{"line_number":230,"context_line":"                    if self.mode \u003d\u003d ovn_const.OVN_DB_SYNC_MODE_REPAIR:"},{"line_number":231,"context_line":"                        txn.add(self.ovn_api.pg_del(pg))"},{"line_number":232,"context_line":""},{"line_number":233,"context_line":"        LOG.debug(\u0027OVN-NB Sync port groups completed @ %s\u0027,"}],"source_content_type":"text/x-python","patch_set":3,"id":"7156c249_f8a9bac2","line":230,"in_reply_to":"2826a12f_6201791f","updated":"2025-02-26 01:40:22.000000000","message":"Acknowledged","commit_id":"a1cc8d6d1524dd00d4669f2657de153d26b79175"},{"author":{"_account_id":5890,"name":"Doug Goldstein","email":"cardoe@cardoe.com","username":"cardoe"},"change_message_id":"1a98008886975dab030575f950adb5f2260f74f5","unresolved":true,"context_lines":[{"line_number":381,"context_line":"                break"},{"line_number":382,"context_line":""},{"line_number":383,"context_line":"            with self.ovn_api.transaction(check_error\u003dTrue) as txn:"},{"line_number":384,"context_line":"                if self.mode \u003d\u003d ovn_const.OVN_DB_SYNC_MODE_REPAIR:"},{"line_number":385,"context_line":"                    for aclr in ovn_acls:"},{"line_number":386,"context_line":"                        LOG.warning(\u0027ACLs found in OVN NB DB but not in \u0027"},{"line_number":387,"context_line":"                                    \u0027Neutron for port group %s\u0027,"}],"source_content_type":"text/x-python","patch_set":3,"id":"03362727_72363ac5","line":384,"updated":"2025-02-16 21:25:06.000000000","message":"Since you\u0027re skipping the entire operation inside the transaction, put the if check above the transaction creation.","commit_id":"a1cc8d6d1524dd00d4669f2657de153d26b79175"},{"author":{"_account_id":7353,"name":"Kevin Carter","email":"kevin@cloudnull.com","username":"cloudnull"},"change_message_id":"0cedaab4bfb6653e5fb997d492f5722f31329733","unresolved":false,"context_lines":[{"line_number":381,"context_line":"                break"},{"line_number":382,"context_line":""},{"line_number":383,"context_line":"            with self.ovn_api.transaction(check_error\u003dTrue) as txn:"},{"line_number":384,"context_line":"                if self.mode \u003d\u003d ovn_const.OVN_DB_SYNC_MODE_REPAIR:"},{"line_number":385,"context_line":"                    for aclr in ovn_acls:"},{"line_number":386,"context_line":"                        LOG.warning(\u0027ACLs found in OVN NB DB but not in \u0027"},{"line_number":387,"context_line":"                                    \u0027Neutron for port group %s\u0027,"}],"source_content_type":"text/x-python","patch_set":3,"id":"79b207df_448675e7","line":384,"in_reply_to":"03362727_72363ac5","updated":"2025-02-26 01:40:22.000000000","message":"Acknowledged","commit_id":"a1cc8d6d1524dd00d4669f2657de153d26b79175"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"f5cab1252bde7f25da9ad3828661bba229632aff","unresolved":true,"context_lines":[{"line_number":193,"context_line":"                        len(add_pgs), len(remove_pgs))"},{"line_number":194,"context_line":""},{"line_number":195,"context_line":"        if (self.mode in (ovn_const.OVN_DB_SYNC_MODE_REPAIR,"},{"line_number":196,"context_line":"                          ovn_const.OVN_DB_SYNC_MODE_ADD) and"},{"line_number":197,"context_line":"                         (add_pgs or remove_pgs)):"},{"line_number":198,"context_line":"            if add_pgs:"},{"line_number":199,"context_line":"                db_ports \u003d self.core_plugin.get_ports(ctx)"}],"source_content_type":"text/x-python","patch_set":5,"id":"058b3785_3cd49e23","line":196,"updated":"2025-02-18 21:15:22.000000000","message":"Similar comment as other file, even if you just do this one locally in this file.","commit_id":"25e2dd062d3458d7367de4c910f690e16ec15ddc"},{"author":{"_account_id":7353,"name":"Kevin Carter","email":"kevin@cloudnull.com","username":"cloudnull"},"change_message_id":"0cedaab4bfb6653e5fb997d492f5722f31329733","unresolved":false,"context_lines":[{"line_number":193,"context_line":"                        len(add_pgs), len(remove_pgs))"},{"line_number":194,"context_line":""},{"line_number":195,"context_line":"        if (self.mode in (ovn_const.OVN_DB_SYNC_MODE_REPAIR,"},{"line_number":196,"context_line":"                          ovn_const.OVN_DB_SYNC_MODE_ADD) and"},{"line_number":197,"context_line":"                         (add_pgs or remove_pgs)):"},{"line_number":198,"context_line":"            if add_pgs:"},{"line_number":199,"context_line":"                db_ports \u003d self.core_plugin.get_ports(ctx)"}],"source_content_type":"text/x-python","patch_set":5,"id":"59c896a1_bd9b8d0a","line":196,"in_reply_to":"058b3785_3cd49e23","updated":"2025-02-26 01:40:22.000000000","message":"Acknowledged","commit_id":"25e2dd062d3458d7367de4c910f690e16ec15ddc"},{"author":{"_account_id":7353,"name":"Kevin Carter","email":"kevin@cloudnull.com","username":"cloudnull"},"change_message_id":"0cedaab4bfb6653e5fb997d492f5722f31329733","unresolved":true,"context_lines":[{"line_number":193,"context_line":"                        len(add_pgs), len(remove_pgs))"},{"line_number":194,"context_line":""},{"line_number":195,"context_line":"        if (self.mode in ovn_const.OVN_VALID_ADD_OR_REPAIR_MODES and"},{"line_number":196,"context_line":"            (add_pgs or remove_pgs)):"},{"line_number":197,"context_line":"            if add_pgs:"},{"line_number":198,"context_line":"                db_ports \u003d self.core_plugin.get_ports(ctx)"},{"line_number":199,"context_line":"                ovn_ports \u003d {p.name for p in"}],"source_content_type":"text/x-python","patch_set":9,"id":"b4fe5695_c41f4e1a","line":196,"in_reply_to":"66ac5730_eef61f02","updated":"2025-02-26 01:40:22.000000000","message":"\u003e pep8: E129 visually indented line with same indent as next logical line\n\nPlease fix.","commit_id":"d51740439caad71efcd88a3f91bd297fbac3546a"},{"author":{"_account_id":7353,"name":"Kevin Carter","email":"kevin@cloudnull.com","username":"cloudnull"},"change_message_id":"34afcdf0a00996887d6e5778655dba2ba3905c10","unresolved":false,"context_lines":[{"line_number":193,"context_line":"                        len(add_pgs), len(remove_pgs))"},{"line_number":194,"context_line":""},{"line_number":195,"context_line":"        if (self.mode in ovn_const.OVN_VALID_ADD_OR_REPAIR_MODES and"},{"line_number":196,"context_line":"            (add_pgs or remove_pgs)):"},{"line_number":197,"context_line":"            if add_pgs:"},{"line_number":198,"context_line":"                db_ports \u003d self.core_plugin.get_ports(ctx)"},{"line_number":199,"context_line":"                ovn_ports \u003d {p.name for p in"}],"source_content_type":"text/x-python","patch_set":9,"id":"8d832e0b_671ad988","line":196,"in_reply_to":"b4fe5695_c41f4e1a","updated":"2025-02-26 01:40:39.000000000","message":"Done","commit_id":"d51740439caad71efcd88a3f91bd297fbac3546a"},{"author":{"_account_id":7353,"name":"Kevin Carter","email":"kevin@cloudnull.com","username":"cloudnull"},"change_message_id":"34afcdf0a00996887d6e5778655dba2ba3905c10","unresolved":false,"context_lines":[{"line_number":351,"context_line":"                         \u0027remove\u0027: num_acls_to_remove})"},{"line_number":352,"context_line":""},{"line_number":353,"context_line":"        if (self.mode in ovn_const.OVN_VALID_ADD_OR_REPAIR_MODES and"},{"line_number":354,"context_line":"            (num_acls_to_add or num_acls_to_remove)):"},{"line_number":355,"context_line":"            one_time_pg_resync \u003d True"},{"line_number":356,"context_line":"            while True:"},{"line_number":357,"context_line":"                try:"}],"source_content_type":"text/x-python","patch_set":9,"id":"70a0655a_58c33509","line":354,"in_reply_to":"45f6a72f_505e56de","updated":"2025-02-26 01:40:39.000000000","message":"Done","commit_id":"d51740439caad71efcd88a3f91bd297fbac3546a"},{"author":{"_account_id":7353,"name":"Kevin Carter","email":"kevin@cloudnull.com","username":"cloudnull"},"change_message_id":"0cedaab4bfb6653e5fb997d492f5722f31329733","unresolved":true,"context_lines":[{"line_number":351,"context_line":"                         \u0027remove\u0027: num_acls_to_remove})"},{"line_number":352,"context_line":""},{"line_number":353,"context_line":"        if (self.mode in ovn_const.OVN_VALID_ADD_OR_REPAIR_MODES and"},{"line_number":354,"context_line":"            (num_acls_to_add or num_acls_to_remove)):"},{"line_number":355,"context_line":"            one_time_pg_resync \u003d True"},{"line_number":356,"context_line":"            while True:"},{"line_number":357,"context_line":"                try:"}],"source_content_type":"text/x-python","patch_set":9,"id":"45f6a72f_505e56de","line":354,"in_reply_to":"90dff889_8d02a333","updated":"2025-02-26 01:40:22.000000000","message":"\u003e pep8: E129 visually indented line with same indent as next logical line\n\nPlease fix.","commit_id":"d51740439caad71efcd88a3f91bd297fbac3546a"},{"author":{"_account_id":35873,"name":"Daniel Failing","display_name":"Daniel Failing","email":"dev@danfai.de","username":"danfai"},"change_message_id":"4e40b931f8a67033cb1f816eb1a3c432b9db4875","unresolved":true,"context_lines":[{"line_number":379,"context_line":"                        raise"},{"line_number":380,"context_line":"                break"},{"line_number":381,"context_line":""},{"line_number":382,"context_line":"            if self.mode \u003d\u003d ovn_const.OVN_DB_SYNC_MODE_REPAIR:"},{"line_number":383,"context_line":"                with self.ovn_api.transaction(check_error\u003dTrue) as txn:"},{"line_number":384,"context_line":"                    for aclr in ovn_acls:"},{"line_number":385,"context_line":"                        LOG.warning(\u0027ACLs found in OVN NB DB but not in \u0027"}],"source_content_type":"text/x-python","patch_set":10,"id":"b5c8877a_90dadaab","line":382,"updated":"2025-03-12 10:52:13.000000000","message":"Correct me if I\u0027m wrong, while I believe this is the correct behavior for no deletion (only adding things, not deleting), for ACLs I could see a benefit of keeping everything in sync, e.g. if users delete security groups/rules (that didn\u0027t make it to OVN).\n\nMaybe for another patch, to be more flexible in what features are synced fully and which ones are only added.","commit_id":"8958c95e3cfe16aab534625e10ccb85d8b95d65a"},{"author":{"_account_id":7353,"name":"Kevin Carter","email":"kevin@cloudnull.com","username":"cloudnull"},"change_message_id":"3739b2e6f59fabcd1490f7f6a8df6853c86a2ad7","unresolved":false,"context_lines":[{"line_number":379,"context_line":"                        raise"},{"line_number":380,"context_line":"                break"},{"line_number":381,"context_line":""},{"line_number":382,"context_line":"            if self.mode \u003d\u003d ovn_const.OVN_DB_SYNC_MODE_REPAIR:"},{"line_number":383,"context_line":"                with self.ovn_api.transaction(check_error\u003dTrue) as txn:"},{"line_number":384,"context_line":"                    for aclr in ovn_acls:"},{"line_number":385,"context_line":"                        LOG.warning(\u0027ACLs found in OVN NB DB but not in \u0027"}],"source_content_type":"text/x-python","patch_set":10,"id":"1906d3e3_39b8d87e","line":382,"in_reply_to":"b5c8877a_90dadaab","updated":"2025-03-25 22:57:14.000000000","message":"Acknowledged - I think we should create another mode, kinda like what we have for OVS to OVN migrations, that would allow for a more friendly LXB to OVN migration.","commit_id":"8958c95e3cfe16aab534625e10ccb85d8b95d65a"}]}
