)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"5ed1398ab0f8c7dd580f4568a1b44570f7b03448","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"2c0aa923_011c051a","updated":"2024-02-21 15:37:12.000000000","message":"recheck neutron-functional-with-uwsgi not related","commit_id":"20a56f9c8b5843e904fbe96e6134ab8d3661c855"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"a8ba624a59fcce9d189f2d183f8c6c06321cb827","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":12,"id":"64b988da_7a9e9489","updated":"2024-03-01 07:05:28.000000000","message":"recheck pep8 solved by https://review.opendev.org/c/openstack/neutron/+/910583","commit_id":"bf725b4e4c7937ca5810209ddd76cb585a899f22"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"6af9cc7d2ae3029df9ea6d01c9b2d0b7b2fa4aaf","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":15,"id":"811a3b7b_713e563e","updated":"2024-03-04 10:55:58.000000000","message":"recheck neutron-functional-with-uwsgi","commit_id":"c87d99bd49e2bbce70fedf25c358994b243d31a8"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"cc63ed4dc1ac28e51990b775a581065020ebd9cb","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":15,"id":"69c0e3f5_b99560b6","updated":"2024-03-04 13:55:49.000000000","message":"recheck openstack-tox-cover","commit_id":"c87d99bd49e2bbce70fedf25c358994b243d31a8"},{"author":{"_account_id":4694,"name":"Miguel Lavalle","email":"miguel@mlavalle.com","username":"minsel"},"change_message_id":"dd87ab9b6c1d9704eb773cf1bc4a34ddfa75fa0b","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":27,"id":"5e013b15_190c6f8e","updated":"2024-04-04 23:51:40.000000000","message":"-1 to bring attention to the inline question","commit_id":"9bb0a16c2b34c7a5d2b4b36f3989c8822552f952"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"9dc7261ef09d75aa772d3d4435aa3682f1972331","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":28,"id":"0099827f_f2ed4a53","updated":"2024-04-11 07:43:31.000000000","message":"LGTM for me and Terry\u0027s comments can be addressed in the follow up patch too.","commit_id":"bd31c233808a64473b1c0d3f770fb3ce8729275a"},{"author":{"_account_id":5756,"name":"Terry Wilson","email":"twilson@redhat.com","username":"otherwiseguy"},"change_message_id":"1ca4f0a10f23860311fdaccf7644fe8c3e5cf067","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":28,"id":"fec8eeda_981a2df2","updated":"2024-04-10 17:24:28.000000000","message":"This looks good to me (some ignorable nits). Everything with the HA_Chassis_Group code feels a bit weird to me with us monitoring the SB DB for changes, then ultimately changing the NB code as a result. Feels backwards from the original idea of OVN, but it is what it is. ;)\n\nThe `ChassisEvent` code in `ovsdb_monitor.py` looks like we could do some cleanup/optimization, but that isn\u0027t part of this patch.","commit_id":"bd31c233808a64473b1c0d3f770fb3ce8729275a"}],"neutron/plugins/ml2/drivers/ovn/mech_driver/ovsdb/ovsdb_monitor.py":[{"author":{"_account_id":4694,"name":"Miguel Lavalle","email":"miguel@mlavalle.com","username":"minsel"},"change_message_id":"dd87ab9b6c1d9704eb773cf1bc4a34ddfa75fa0b","unresolved":true,"context_lines":[{"line_number":691,"context_line":"            row.external_ids[ovn_const.OVN_ROUTER_ID_EXT_ID_KEY])"},{"line_number":692,"context_line":"        if not row.ha_chassis:"},{"line_number":693,"context_line":"            # No GW chassis are present in the environment."},{"line_number":694,"context_line":"            self.driver.nb_ovn.db_remove("},{"line_number":695,"context_line":"                \u0027Logical_Router\u0027, router_name, \u0027options\u0027, \u0027chassis\u0027,"},{"line_number":696,"context_line":"                if_exists\u003dTrue).execute(check_error\u003dTrue)"},{"line_number":697,"context_line":"            return"},{"line_number":698,"context_line":""},{"line_number":699,"context_line":"        highest_prio_hc \u003d None"}],"source_content_type":"text/x-python","patch_set":27,"id":"2f314aa5_6b2288f7","line":696,"range":{"start_line":694,"start_character":0,"end_line":696,"end_character":57},"updated":"2024-04-04 23:51:40.000000000","message":"At this point the router is not pinned to any GW chassis anymore. Why not log this fact? The whole point is to provide HA. If we can\u0027t, I think it would be useful to leave a trace in the log file","commit_id":"9bb0a16c2b34c7a5d2b4b36f3989c8822552f952"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"5b4e182ba2a373bbf27b984edc97663a1210890a","unresolved":false,"context_lines":[{"line_number":691,"context_line":"            row.external_ids[ovn_const.OVN_ROUTER_ID_EXT_ID_KEY])"},{"line_number":692,"context_line":"        if not row.ha_chassis:"},{"line_number":693,"context_line":"            # No GW chassis are present in the environment."},{"line_number":694,"context_line":"            self.driver.nb_ovn.db_remove("},{"line_number":695,"context_line":"                \u0027Logical_Router\u0027, router_name, \u0027options\u0027, \u0027chassis\u0027,"},{"line_number":696,"context_line":"                if_exists\u003dTrue).execute(check_error\u003dTrue)"},{"line_number":697,"context_line":"            return"},{"line_number":698,"context_line":""},{"line_number":699,"context_line":"        highest_prio_hc \u003d None"}],"source_content_type":"text/x-python","patch_set":27,"id":"b5335682_bdab7446","line":696,"range":{"start_line":694,"start_character":0,"end_line":696,"end_character":57},"in_reply_to":"2f314aa5_6b2288f7","updated":"2024-04-08 16:39:12.000000000","message":"Done","commit_id":"9bb0a16c2b34c7a5d2b4b36f3989c8822552f952"},{"author":{"_account_id":5756,"name":"Terry Wilson","email":"twilson@redhat.com","username":"otherwiseguy"},"change_message_id":"1ca4f0a10f23860311fdaccf7644fe8c3e5cf067","unresolved":true,"context_lines":[{"line_number":680,"context_line":"        if ovn_const.OVN_ROUTER_ID_EXT_ID_KEY not in row.external_ids:"},{"line_number":681,"context_line":"            # \"HA_Chassis_Group\" not assigned to a router."},{"line_number":682,"context_line":"            return False"},{"line_number":683,"context_line":"        elif getattr(old, \u0027ha_chassis\u0027, None) is None:"},{"line_number":684,"context_line":"            # No changes in the \"ha_chassis\" list has been done."},{"line_number":685,"context_line":"            return False"},{"line_number":686,"context_line":""}],"source_content_type":"text/x-python","patch_set":28,"id":"0790c355_7ca9a9b0","line":683,"updated":"2024-04-10 17:24:28.000000000","message":"*super nit*, no need for `elif` since returning in the previous if, and could just be `if not hasattr(\u0027ha_chassis\u0027)` or get rid of the nots with `if $key in row.external_ids or hasattr(old, \u0027ha_chassis\u0027): return True`","commit_id":"bd31c233808a64473b1c0d3f770fb3ce8729275a"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"15f6a2ca240329c988bac697e76413c64ce6fa42","unresolved":false,"context_lines":[{"line_number":680,"context_line":"        if ovn_const.OVN_ROUTER_ID_EXT_ID_KEY not in row.external_ids:"},{"line_number":681,"context_line":"            # \"HA_Chassis_Group\" not assigned to a router."},{"line_number":682,"context_line":"            return False"},{"line_number":683,"context_line":"        elif getattr(old, \u0027ha_chassis\u0027, None) is None:"},{"line_number":684,"context_line":"            # No changes in the \"ha_chassis\" list has been done."},{"line_number":685,"context_line":"            return False"},{"line_number":686,"context_line":""}],"source_content_type":"text/x-python","patch_set":28,"id":"aba6cf0b_742cb97a","line":683,"in_reply_to":"0790c355_7ca9a9b0","updated":"2024-04-12 08:25:35.000000000","message":"Done","commit_id":"bd31c233808a64473b1c0d3f770fb3ce8729275a"},{"author":{"_account_id":5756,"name":"Terry Wilson","email":"twilson@redhat.com","username":"otherwiseguy"},"change_message_id":"1ca4f0a10f23860311fdaccf7644fe8c3e5cf067","unresolved":true,"context_lines":[{"line_number":698,"context_line":"                     router_id)"},{"line_number":699,"context_line":"            return"},{"line_number":700,"context_line":""},{"line_number":701,"context_line":"        highest_prio_hc \u003d None"},{"line_number":702,"context_line":"        for hc in row.ha_chassis:"},{"line_number":703,"context_line":"            if not highest_prio_hc or hc.priority \u003e highest_prio_hc.priority:"},{"line_number":704,"context_line":"                highest_prio_hc \u003d hc"},{"line_number":705,"context_line":""},{"line_number":706,"context_line":"        options \u003d {\u0027chassis\u0027: highest_prio_hc.chassis_name}"},{"line_number":707,"context_line":"        self.driver.nb_ovn.db_set("}],"source_content_type":"text/x-python","patch_set":28,"id":"7ced4c8c_3ea60c51","line":704,"range":{"start_line":701,"start_character":0,"end_line":704,"end_character":36},"updated":"2024-04-10 17:24:28.000000000","message":"nit:\n```\n    highest_prio_hc \u003d max(row.ha_chassis, lambda hc: hc.priority)\n```","commit_id":"bd31c233808a64473b1c0d3f770fb3ce8729275a"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"15f6a2ca240329c988bac697e76413c64ce6fa42","unresolved":false,"context_lines":[{"line_number":698,"context_line":"                     router_id)"},{"line_number":699,"context_line":"            return"},{"line_number":700,"context_line":""},{"line_number":701,"context_line":"        highest_prio_hc \u003d None"},{"line_number":702,"context_line":"        for hc in row.ha_chassis:"},{"line_number":703,"context_line":"            if not highest_prio_hc or hc.priority \u003e highest_prio_hc.priority:"},{"line_number":704,"context_line":"                highest_prio_hc \u003d hc"},{"line_number":705,"context_line":""},{"line_number":706,"context_line":"        options \u003d {\u0027chassis\u0027: highest_prio_hc.chassis_name}"},{"line_number":707,"context_line":"        self.driver.nb_ovn.db_set("}],"source_content_type":"text/x-python","patch_set":28,"id":"4aa676ef_32ab655e","line":704,"range":{"start_line":701,"start_character":0,"end_line":704,"end_character":36},"in_reply_to":"7ced4c8c_3ea60c51","updated":"2024-04-12 08:25:35.000000000","message":"Done. I always forget to use these python builtin methods...","commit_id":"bd31c233808a64473b1c0d3f770fb3ce8729275a"}],"neutron/tests/functional/plugins/ml2/drivers/ovn/mech_driver/ovsdb/test_ovsdb_monitor.py":[{"author":{"_account_id":5756,"name":"Terry Wilson","email":"twilson@redhat.com","username":"otherwiseguy"},"change_message_id":"1ca4f0a10f23860311fdaccf7644fe8c3e5cf067","unresolved":true,"context_lines":[{"line_number":550,"context_line":"            hp_chassis_lr \u003d lr.options[\u0027chassis\u0027]"},{"line_number":551,"context_line":"            hcg \u003d self.nb_api.lookup(\u0027HA_Chassis_Group\u0027, ovn_r_name)"},{"line_number":552,"context_line":"            self.assertEqual(num_chassis, len(hcg.ha_chassis))"},{"line_number":553,"context_line":"            hp_chassis_hcg \u003d None"},{"line_number":554,"context_line":"            for hc in hcg.ha_chassis:"},{"line_number":555,"context_line":"                if not hp_chassis_hcg or hc.priority \u003e hp_chassis_hcg.priority:"},{"line_number":556,"context_line":"                    hp_chassis_hcg \u003d hc"},{"line_number":557,"context_line":""},{"line_number":558,"context_line":"            self.assertEqual(hp_chassis_lr, hp_chassis_hcg.chassis_name)"},{"line_number":559,"context_line":""}],"source_content_type":"text/x-python","patch_set":28,"id":"d38bf001_01995362","line":556,"range":{"start_line":553,"start_character":0,"end_line":556,"end_character":39},"updated":"2024-04-10 17:24:28.000000000","message":"similar nit regarding `max()`","commit_id":"bd31c233808a64473b1c0d3f770fb3ce8729275a"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"5ff19fc021934bff303155b147d7d6c4f1b611ca","unresolved":false,"context_lines":[{"line_number":550,"context_line":"            hp_chassis_lr \u003d lr.options[\u0027chassis\u0027]"},{"line_number":551,"context_line":"            hcg \u003d self.nb_api.lookup(\u0027HA_Chassis_Group\u0027, ovn_r_name)"},{"line_number":552,"context_line":"            self.assertEqual(num_chassis, len(hcg.ha_chassis))"},{"line_number":553,"context_line":"            hp_chassis_hcg \u003d None"},{"line_number":554,"context_line":"            for hc in hcg.ha_chassis:"},{"line_number":555,"context_line":"                if not hp_chassis_hcg or hc.priority \u003e hp_chassis_hcg.priority:"},{"line_number":556,"context_line":"                    hp_chassis_hcg \u003d hc"},{"line_number":557,"context_line":""},{"line_number":558,"context_line":"            self.assertEqual(hp_chassis_lr, hp_chassis_hcg.chassis_name)"},{"line_number":559,"context_line":""}],"source_content_type":"text/x-python","patch_set":28,"id":"040657e4_99796f2d","line":556,"range":{"start_line":553,"start_character":0,"end_line":556,"end_character":39},"in_reply_to":"d38bf001_01995362","updated":"2024-04-12 08:27:20.000000000","message":"Done","commit_id":"bd31c233808a64473b1c0d3f770fb3ce8729275a"}]}
