)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"66394b670fb71e3f7db96619fe2d29255d06be20","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"28067520_9a60e8ec","updated":"2023-09-05 22:17:35.000000000","message":"I\u0027m not sure how much time to spend looking as we don\u0027t have any other tests using print()","commit_id":"142aee15fe54caed0869035873467f015ea9126c"},{"author":{"_account_id":29074,"name":"Felix Huettner","email":"felix.huettner@digits.schwarz","username":"felix.huettner"},"change_message_id":"1b52853da3a9c0f44c8505f3fafe4e96d87f1826","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"a147b391_d6b692c1","updated":"2023-09-06 07:06:48.000000000","message":"Thanks for the review","commit_id":"142aee15fe54caed0869035873467f015ea9126c"},{"author":{"_account_id":29074,"name":"Felix Huettner","email":"felix.huettner@digits.schwarz","username":"felix.huettner"},"change_message_id":"3f24f89d3c88587ca061bc148d3a19ddf7e4091e","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"9252604d_6764ad4d","updated":"2023-09-06 09:30:01.000000000","message":"recheck: both failed test are somewhere completely different","commit_id":"1c60e21ddd0a95e19bf9745b870137cc65aefeaa"},{"author":{"_account_id":29074,"name":"Felix Huettner","email":"felix.huettner@digits.schwarz","username":"felix.huettner"},"change_message_id":"8967be5ae446c68b05389e24c343d9bb90c2b1e5","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"442ba19d_17598150","updated":"2023-09-11 09:48:07.000000000","message":"recheck: some sqlalchemy error","commit_id":"d69dc4f50d3496511aa4515ca20edf7234a7d893"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"4f1ea815ba9883e994dedbc64225629ae8dc0479","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":11,"id":"3d79a367_962beea8","updated":"2023-10-23 21:06:19.000000000","message":"Thanks for working on this Felix, good to have coverage here.\n\nOne thing I did notice is that the new test takes around 2 minutes, which isn\u0027t good:\n\nneutron.tests.functional.services.ovn_l3.test_plugin.TestRouter.test_gateway_chassis_does_not_become_unbalanced [128.064483s] ... ok\n\n-1 for the time","commit_id":"43db7688aa8c29275b5d758d6a72f25e2e6767b0"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"5276301bfea203f2df188e6ad5a1aab488a2ffe7","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":12,"id":"e91308a7_1f5ef67c","updated":"2023-12-16 23:29:00.000000000","message":"Test time was even worse this time:\n\ntest_gateway_chassis_does_not_become_unbalanced [167.551491s]","commit_id":"978294255aec10a41f10e129e1eda630d891b7d7"}],"neutron/tests/functional/services/ovn_l3/test_plugin.py":[{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"66394b670fb71e3f7db96619fe2d29255d06be20","unresolved":true,"context_lines":[{"line_number":607,"context_line":""},{"line_number":608,"context_line":"        def validate_prio_by_chassis(gateway_count, lrp_count):"},{"line_number":609,"context_line":"            global movement_count"},{"line_number":610,"context_line":"            global cached_chassis_gateway_bindings"},{"line_number":611,"context_line":"            max_lrp_per_gateway \u003d lrp_count / (gateway_count - 1)"},{"line_number":612,"context_line":"            # currently max_lrp_per_gateway would be the ideal value."},{"line_number":613,"context_line":"            # However this is impossible to accheive without rescheduling"}],"source_content_type":"text/x-python","patch_set":2,"id":"af6969c8_cb3fe51d","line":610,"updated":"2023-09-05 22:17:35.000000000","message":"I would have thought this could \"see\" the variable in the outer function?","commit_id":"142aee15fe54caed0869035873467f015ea9126c"},{"author":{"_account_id":29074,"name":"Felix Huettner","email":"felix.huettner@digits.schwarz","username":"felix.huettner"},"change_message_id":"1b52853da3a9c0f44c8505f3fafe4e96d87f1826","unresolved":true,"context_lines":[{"line_number":607,"context_line":""},{"line_number":608,"context_line":"        def validate_prio_by_chassis(gateway_count, lrp_count):"},{"line_number":609,"context_line":"            global movement_count"},{"line_number":610,"context_line":"            global cached_chassis_gateway_bindings"},{"line_number":611,"context_line":"            max_lrp_per_gateway \u003d lrp_count / (gateway_count - 1)"},{"line_number":612,"context_line":"            # currently max_lrp_per_gateway would be the ideal value."},{"line_number":613,"context_line":"            # However this is impossible to accheive without rescheduling"}],"source_content_type":"text/x-python","patch_set":2,"id":"5b00d8b6_4f3c9ff3","line":610,"in_reply_to":"af6969c8_cb3fe51d","updated":"2023-09-06 07:06:48.000000000","message":"i thought so too, but it does not actually do that","commit_id":"142aee15fe54caed0869035873467f015ea9126c"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"66394b670fb71e3f7db96619fe2d29255d06be20","unresolved":true,"context_lines":[{"line_number":644,"context_line":"            for chassis_name in sorted(chassis_prios):"},{"line_number":645,"context_line":"                print(\"%s:\" % chassis_name)"},{"line_number":646,"context_line":"                for prio, count in sorted(chassis_prios[chassis_name].items()):"},{"line_number":647,"context_line":"                    print(\"\\tprio %s: %s routers\" % (prio, count))"},{"line_number":648,"context_line":"                    if count \u003e max_lrp_per_gateway:"},{"line_number":649,"context_line":"                        print(\"Has more routers than it should have: %s/%s\""},{"line_number":650,"context_line":"                              % (count, max_lrp_per_gateway))"}],"source_content_type":"text/x-python","patch_set":2,"id":"1b552c99_618952eb","line":647,"updated":"2023-09-05 22:17:35.000000000","message":"I think you can actually use the LOG facility for this, as a few other functional tests do that.","commit_id":"142aee15fe54caed0869035873467f015ea9126c"},{"author":{"_account_id":29074,"name":"Felix Huettner","email":"felix.huettner@digits.schwarz","username":"felix.huettner"},"change_message_id":"1b52853da3a9c0f44c8505f3fafe4e96d87f1826","unresolved":true,"context_lines":[{"line_number":644,"context_line":"            for chassis_name in sorted(chassis_prios):"},{"line_number":645,"context_line":"                print(\"%s:\" % chassis_name)"},{"line_number":646,"context_line":"                for prio, count in sorted(chassis_prios[chassis_name].items()):"},{"line_number":647,"context_line":"                    print(\"\\tprio %s: %s routers\" % (prio, count))"},{"line_number":648,"context_line":"                    if count \u003e max_lrp_per_gateway:"},{"line_number":649,"context_line":"                        print(\"Has more routers than it should have: %s/%s\""},{"line_number":650,"context_line":"                              % (count, max_lrp_per_gateway))"}],"source_content_type":"text/x-python","patch_set":2,"id":"b211ae6e_dd9178c6","line":647,"in_reply_to":"1b552c99_618952eb","updated":"2023-09-06 07:06:48.000000000","message":"thanks for the hint. I reworked that","commit_id":"142aee15fe54caed0869035873467f015ea9126c"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"66394b670fb71e3f7db96619fe2d29255d06be20","unresolved":true,"context_lines":[{"line_number":647,"context_line":"                    print(\"\\tprio %s: %s routers\" % (prio, count))"},{"line_number":648,"context_line":"                    if count \u003e max_lrp_per_gateway:"},{"line_number":649,"context_line":"                        print(\"Has more routers than it should have: %s/%s\""},{"line_number":650,"context_line":"                              % (count, max_lrp_per_gateway))"},{"line_number":651,"context_line":"                        failed \u003d True"},{"line_number":652,"context_line":"            if failed:"},{"line_number":653,"context_line":"                self.fail(\"One or more routers are not evenly balanced\")"}],"source_content_type":"text/x-python","patch_set":2,"id":"3ac43589_ca2a0c8d","line":650,"updated":"2023-09-05 22:17:35.000000000","message":"Typically this would be an assert:\n\nself.assertLessEqual(count, max_lrp_per_gateway)","commit_id":"142aee15fe54caed0869035873467f015ea9126c"},{"author":{"_account_id":29074,"name":"Felix Huettner","email":"felix.huettner@digits.schwarz","username":"felix.huettner"},"change_message_id":"1b52853da3a9c0f44c8505f3fafe4e96d87f1826","unresolved":true,"context_lines":[{"line_number":647,"context_line":"                    print(\"\\tprio %s: %s routers\" % (prio, count))"},{"line_number":648,"context_line":"                    if count \u003e max_lrp_per_gateway:"},{"line_number":649,"context_line":"                        print(\"Has more routers than it should have: %s/%s\""},{"line_number":650,"context_line":"                              % (count, max_lrp_per_gateway))"},{"line_number":651,"context_line":"                        failed \u003d True"},{"line_number":652,"context_line":"            if failed:"},{"line_number":653,"context_line":"                self.fail(\"One or more routers are not evenly balanced\")"}],"source_content_type":"text/x-python","patch_set":2,"id":"5c1b3c05_eb46783b","line":650,"in_reply_to":"3ac43589_ca2a0c8d","updated":"2023-09-06 07:06:48.000000000","message":"i have move this out to the \"failed\" variable to allow the logger to output all information for that rescheduling run. Otherwise its hard to see where the given routers are scheduled to which makes debugging hard.","commit_id":"142aee15fe54caed0869035873467f015ea9126c"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"ea979760bd4eb9d3a48bbd3421ef784f3103d916","unresolved":true,"context_lines":[{"line_number":606,"context_line":""},{"line_number":607,"context_line":"    def test_gateway_chassis_does_not_become_unbalanced(self):"},{"line_number":608,"context_line":"        self.chassis_event \u003d events.WaitForChassisCreateDeleteEvent()"},{"line_number":609,"context_line":"        self.sb_api.idl.notify_handler.watch_event(self.chassis_event)"},{"line_number":610,"context_line":""},{"line_number":611,"context_line":"        global movement_count"},{"line_number":612,"context_line":"        movement_count \u003d 0"}],"source_content_type":"text/x-python","patch_set":9,"id":"44169961_4a266dfe","line":609,"updated":"2023-09-21 14:42:17.000000000","message":"1) Please don\u0027t use global variables in testing.\n2) Don\u0027t log anything in FT/UT. Tests should pass and will prevent regressions. If not, we need to fix the code (or refactor the test).\n3) Please fix this test, it is not working.\n4) Even failing this test, it is consuming 42 seconds. That is insane for a test. Please reduce this time.\n{5} neutron.tests.functional.services.ovn_l3.test_plugin.TestRouter.test_gateway_chassis_does_not_become_unbalanced [42.304620s] ... FAILED","commit_id":"ca9843b292a87976ab27d1ccb4a08502298b7dc3"},{"author":{"_account_id":29074,"name":"Felix Huettner","email":"felix.huettner@digits.schwarz","username":"felix.huettner"},"change_message_id":"2e71a15fc5e0b10e3ddfcddb30d89d7c1b54f5e7","unresolved":true,"context_lines":[{"line_number":606,"context_line":""},{"line_number":607,"context_line":"    def test_gateway_chassis_does_not_become_unbalanced(self):"},{"line_number":608,"context_line":"        self.chassis_event \u003d events.WaitForChassisCreateDeleteEvent()"},{"line_number":609,"context_line":"        self.sb_api.idl.notify_handler.watch_event(self.chassis_event)"},{"line_number":610,"context_line":""},{"line_number":611,"context_line":"        global movement_count"},{"line_number":612,"context_line":"        movement_count \u003d 0"}],"source_content_type":"text/x-python","patch_set":9,"id":"5bcfb49c_2afb6dc8","line":609,"in_reply_to":"44169961_4a266dfe","updated":"2023-10-04 11:06:11.000000000","message":"1) Fixed\n2) There is a few other functional tests that already do this. However if this test is failing it might have a bunch of different causes that are related to scheduling in one way or the other. Without Logs it is hard to find out what part of the scheduling has issues\n3) fixed, at least i can no longer reproduce the issue locally\n4) it is also faster now","commit_id":"ca9843b292a87976ab27d1ccb4a08502298b7dc3"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"4f1ea815ba9883e994dedbc64225629ae8dc0479","unresolved":true,"context_lines":[{"line_number":560,"context_line":"        # used to schedule the router gateway ports therefore"},{"line_number":561,"context_line":"        # priority values wont be changed. Therefore chassis4 would"},{"line_number":562,"context_line":"        # still have priority 2"},{"line_number":563,"context_line":"        host6 \u003d self.add_fake_chassis(\u0027ovs-host6\u0027, physical_nets\u003d[\u0027physnet4\u0027])"},{"line_number":564,"context_line":""},{"line_number":565,"context_line":"        # Chassis4 should have all ports at Priority 2"},{"line_number":566,"context_line":"        self.assertTrue(self.chassis_event.wait(host6))"}],"source_content_type":"text/x-python","patch_set":11,"id":"d90776c1_cf2594da","line":563,"range":{"start_line":563,"start_character":8,"end_line":563,"end_character":13},"updated":"2023-10-23 21:06:19.000000000","message":"nit: s/chassis6 to follow previous code","commit_id":"43db7688aa8c29275b5d758d6a72f25e2e6767b0"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"4f1ea815ba9883e994dedbc64225629ae8dc0479","unresolved":true,"context_lines":[{"line_number":611,"context_line":"        movement_count \u003d 0"},{"line_number":612,"context_line":"        cached_chassis_gateway_bindings \u003d None"},{"line_number":613,"context_line":""},{"line_number":614,"context_line":"        def validate_prio_by_chassis(gateway_count, lrp_count):"},{"line_number":615,"context_line":"            nonlocal movement_count"},{"line_number":616,"context_line":"            nonlocal cached_chassis_gateway_bindings"},{"line_number":617,"context_line":"            max_lrp_per_gateway \u003d lrp_count / (gateway_count - 1)"}],"source_content_type":"text/x-python","patch_set":11,"id":"e3226eaf_276d83a9","line":614,"range":{"start_line":614,"start_character":37,"end_line":614,"end_character":61},"updated":"2023-10-23 21:06:19.000000000","message":"These arguments are always the same based on below","commit_id":"43db7688aa8c29275b5d758d6a72f25e2e6767b0"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"4f1ea815ba9883e994dedbc64225629ae8dc0479","unresolved":true,"context_lines":[{"line_number":631,"context_line":"                for chassis in chassis_gateway_bindings:"},{"line_number":632,"context_line":"                    if chassis in cached_chassis_gateway_bindings:"},{"line_number":633,"context_line":"                        diffs +\u003d len("},{"line_number":634,"context_line":"                            set(chassis_gateway_bindings[chassis]"},{"line_number":635,"context_line":"                                ).symmetric_difference(set("},{"line_number":636,"context_line":"                                    cached_chassis_gateway_bindings[chassis])))"},{"line_number":637,"context_line":"                    else:"}],"source_content_type":"text/x-python","patch_set":11,"id":"630b1a7c_f18ec4b5","line":634,"range":{"start_line":634,"start_character":32,"end_line":634,"end_character":65},"updated":"2023-10-23 21:06:19.000000000","message":"isn\u0027t this just \u0027chassis\u0027 ?","commit_id":"43db7688aa8c29275b5d758d6a72f25e2e6767b0"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"4f1ea815ba9883e994dedbc64225629ae8dc0479","unresolved":true,"context_lines":[{"line_number":635,"context_line":"                                ).symmetric_difference(set("},{"line_number":636,"context_line":"                                    cached_chassis_gateway_bindings[chassis])))"},{"line_number":637,"context_line":"                    else:"},{"line_number":638,"context_line":"                        diffs +\u003d len(chassis_gateway_bindings[chassis])"},{"line_number":639,"context_line":"                # since there is a diff for add and delete we only need half of"},{"line_number":640,"context_line":"                # them"},{"line_number":641,"context_line":"                movement_count +\u003d int(diffs / 2)"}],"source_content_type":"text/x-python","patch_set":11,"id":"2fe6dd34_e0511d67","line":638,"range":{"start_line":638,"start_character":37,"end_line":638,"end_character":70},"updated":"2023-10-23 21:06:19.000000000","message":"and this too?","commit_id":"43db7688aa8c29275b5d758d6a72f25e2e6767b0"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"4f1ea815ba9883e994dedbc64225629ae8dc0479","unresolved":true,"context_lines":[{"line_number":642,"context_line":"            cached_chassis_gateway_bindings \u003d chassis_gateway_bindings"},{"line_number":643,"context_line":""},{"line_number":644,"context_line":"            chassis_prios \u003d {}"},{"line_number":645,"context_line":"            for chassis_name in chassis_gateway_bindings:"},{"line_number":646,"context_line":"                prios \u003d {}"},{"line_number":647,"context_line":"                for (_, prio) in chassis_gateway_bindings[chassis_name]:"},{"line_number":648,"context_line":"                    prios[prio] \u003d prios.setdefault(prio, 0) + 1"}],"source_content_type":"text/x-python","patch_set":11,"id":"241a2ecc_5b5c50c5","line":645,"range":{"start_line":645,"start_character":16,"end_line":645,"end_character":28},"updated":"2023-10-23 21:06:19.000000000","message":"Can you just name this \u0027chassis\u0027 as it\u0027s the same loop as L632","commit_id":"43db7688aa8c29275b5d758d6a72f25e2e6767b0"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"4f1ea815ba9883e994dedbc64225629ae8dc0479","unresolved":true,"context_lines":[{"line_number":644,"context_line":"            chassis_prios \u003d {}"},{"line_number":645,"context_line":"            for chassis_name in chassis_gateway_bindings:"},{"line_number":646,"context_line":"                prios \u003d {}"},{"line_number":647,"context_line":"                for (_, prio) in chassis_gateway_bindings[chassis_name]:"},{"line_number":648,"context_line":"                    prios[prio] \u003d prios.setdefault(prio, 0) + 1"},{"line_number":649,"context_line":"                chassis_prios[chassis_name] \u003d prios"},{"line_number":650,"context_line":"            for chassis_name in sorted(chassis_prios):"}],"source_content_type":"text/x-python","patch_set":11,"id":"48eac250_27e4f602","line":647,"range":{"start_line":647,"start_character":33,"end_line":647,"end_character":71},"updated":"2023-10-23 21:06:19.000000000","message":"This can just be \u0027chassis\u0027 right?","commit_id":"43db7688aa8c29275b5d758d6a72f25e2e6767b0"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"4f1ea815ba9883e994dedbc64225629ae8dc0479","unresolved":true,"context_lines":[{"line_number":647,"context_line":"                for (_, prio) in chassis_gateway_bindings[chassis_name]:"},{"line_number":648,"context_line":"                    prios[prio] \u003d prios.setdefault(prio, 0) + 1"},{"line_number":649,"context_line":"                chassis_prios[chassis_name] \u003d prios"},{"line_number":650,"context_line":"            for chassis_name in sorted(chassis_prios):"},{"line_number":651,"context_line":"                LOG.info(\"%s:\", chassis_name)"},{"line_number":652,"context_line":"                for prio, count in sorted(chassis_prios[chassis_name].items()):"},{"line_number":653,"context_line":"                    LOG.info(\"\\tprio %s: %s routers\", prio, count)"}],"source_content_type":"text/x-python","patch_set":11,"id":"7a048111_d30ae428","line":650,"range":{"start_line":650,"start_character":16,"end_line":650,"end_character":28},"updated":"2023-10-23 21:06:19.000000000","message":"s/chassis","commit_id":"43db7688aa8c29275b5d758d6a72f25e2e6767b0"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"4f1ea815ba9883e994dedbc64225629ae8dc0479","unresolved":true,"context_lines":[{"line_number":649,"context_line":"                chassis_prios[chassis_name] \u003d prios"},{"line_number":650,"context_line":"            for chassis_name in sorted(chassis_prios):"},{"line_number":651,"context_line":"                LOG.info(\"%s:\", chassis_name)"},{"line_number":652,"context_line":"                for prio, count in sorted(chassis_prios[chassis_name].items()):"},{"line_number":653,"context_line":"                    LOG.info(\"\\tprio %s: %s routers\", prio, count)"},{"line_number":654,"context_line":"                    if count \u003e max_lrp_per_gateway:"},{"line_number":655,"context_line":"                        LOG.info(\"Has more routers than it should have: %s/%s\","}],"source_content_type":"text/x-python","patch_set":11,"id":"427cd3c9_f2665481","line":652,"range":{"start_line":652,"start_character":42,"end_line":652,"end_character":77},"updated":"2023-10-23 21:06:19.000000000","message":"And this can be \u0027chassis.items()\u0027 right?","commit_id":"43db7688aa8c29275b5d758d6a72f25e2e6767b0"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"4f1ea815ba9883e994dedbc64225629ae8dc0479","unresolved":true,"context_lines":[{"line_number":668,"context_line":"            chassis_list.append("},{"line_number":669,"context_line":"                self.add_fake_chassis("},{"line_number":670,"context_line":"                    name, physical_nets\u003d[\u0027physnet1\u0027], name\u003dname,"},{"line_number":671,"context_line":"                    other_config\u003d{\u0027ovn-cms-options\u0027: \u0027enable-chassis-as-gw\u0027}))"},{"line_number":672,"context_line":""},{"line_number":673,"context_line":"        ext1 \u003d self._create_ext_network("},{"line_number":674,"context_line":"            \u0027ext1\u0027, \u0027vlan\u0027, \u0027physnet1\u0027, 1, \"10.0.0.1\", \"10.0.0.0/24\")"}],"source_content_type":"text/x-python","patch_set":11,"id":"2bcffbcf_5149ac3e","line":671,"range":{"start_line":671,"start_character":20,"end_line":671,"end_character":76},"updated":"2023-10-23 21:06:19.000000000","message":"Looks like specifying \u0027enable_chassis_as_gw\u003dTrue\u0027 will do this for you in add_fake_chassis()","commit_id":"43db7688aa8c29275b5d758d6a72f25e2e6767b0"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"4f1ea815ba9883e994dedbc64225629ae8dc0479","unresolved":true,"context_lines":[{"line_number":705,"context_line":"                    i,"},{"line_number":706,"context_line":"                    self.add_fake_chassis("},{"line_number":707,"context_line":"                        name, physical_nets\u003d[\u0027physnet1\u0027], name\u003dname,"},{"line_number":708,"context_line":"                        other_config\u003d{"},{"line_number":709,"context_line":"                            \u0027ovn-cms-options\u0027: \u0027enable-chassis-as-gw\u0027}))"},{"line_number":710,"context_line":"                LOG.info(\"host %s now back\", i)"},{"line_number":711,"context_line":"                self.assertTrue(self.chassis_event.wait(c))"},{"line_number":712,"context_line":"                validate_prio_by_chassis(gateway_count, lrp_count)"}],"source_content_type":"text/x-python","patch_set":11,"id":"c9af8d12_48fb0879","line":709,"range":{"start_line":708,"start_character":24,"end_line":709,"end_character":70},"updated":"2023-10-23 21:06:19.000000000","message":"Here too","commit_id":"43db7688aa8c29275b5d758d6a72f25e2e6767b0"}]}
