)]}'
{"neutron/agent/l3/agent.py":[{"author":{"_account_id":5948,"name":"Oleg Bondarev","email":"obondarev@mirantis.com","username":"obondarev"},"change_message_id":"ddc8520ded4b1bc7b715c84430aec7170816a580","unresolved":true,"context_lines":[{"line_number":705,"context_line":"                             payload\u003devents.DBEventPayload("},{"line_number":706,"context_line":"                                 self.context,"},{"line_number":707,"context_line":"                                 resource_id\u003drouter[\u0027id\u0027],"},{"line_number":708,"context_line":"                                 states\u003d(ri,)))"},{"line_number":709,"context_line":"            self.l3_ext_manager.update_router(self.context, router)"},{"line_number":710,"context_line":""},{"line_number":711,"context_line":"    def _resync_router(self, router_update,"}],"source_content_type":"text/x-python","patch_set":4,"id":"297a6e39_5c051f08","line":708,"range":{"start_line":708,"start_character":33,"end_line":708,"end_character":45},"updated":"2021-08-03 07:11:15.000000000","message":"states\u003d(None, ri) - for AFTER_UPDATE event handler may expect old state, we better be explicit here, to be on the safe side","commit_id":"83ca7743e0e23f5015bcc8140364174760ac246c"},{"author":{"_account_id":32667,"name":"Mamatisa Nurmatov","email":"nurmatov.mamatisa@huawei.com","username":"isabek"},"change_message_id":"af33abdb924c196d5278aedee53e59cbb4e5e7ab","unresolved":false,"context_lines":[{"line_number":705,"context_line":"                             payload\u003devents.DBEventPayload("},{"line_number":706,"context_line":"                                 self.context,"},{"line_number":707,"context_line":"                                 resource_id\u003drouter[\u0027id\u0027],"},{"line_number":708,"context_line":"                                 states\u003d(ri,)))"},{"line_number":709,"context_line":"            self.l3_ext_manager.update_router(self.context, router)"},{"line_number":710,"context_line":""},{"line_number":711,"context_line":"    def _resync_router(self, router_update,"}],"source_content_type":"text/x-python","patch_set":4,"id":"6b9b3441_dbed6c80","line":708,"range":{"start_line":708,"start_character":33,"end_line":708,"end_character":45},"in_reply_to":"297a6e39_5c051f08","updated":"2021-08-03 07:36:35.000000000","message":"Done","commit_id":"83ca7743e0e23f5015bcc8140364174760ac246c"}],"neutron/agent/linux/pd.py":[{"author":{"_account_id":5948,"name":"Oleg Bondarev","email":"obondarev@mirantis.com","username":"obondarev"},"change_message_id":"033d324ee97dc26a2c2211ddfce9215ea5cc971b","unresolved":true,"context_lines":[{"line_number":354,"context_line":""},{"line_number":355,"context_line":"@runtime.synchronized(\"l3-agent-pd\")"},{"line_number":356,"context_line":"def remove_router(resource, event, l3_agent, payload):"},{"line_number":357,"context_line":"    router_id \u003d payload.latest_state.router_id"},{"line_number":358,"context_line":"    router \u003d l3_agent.pd.routers.get(router_id)"},{"line_number":359,"context_line":"    l3_agent.pd.delete_router_pd(router)"},{"line_number":360,"context_line":"    del l3_agent.pd.routers[router_id][\u0027subnets\u0027]"}],"source_content_type":"text/x-python","patch_set":2,"id":"52ec9a00_aa7a8809","line":357,"range":{"start_line":357,"start_character":16,"end_line":357,"end_character":46},"updated":"2021-08-02 09:30:42.000000000","message":"payload.resource_id?","commit_id":"3a90e207614858b67ba2955a9207992e75f069c4"},{"author":{"_account_id":32667,"name":"Mamatisa Nurmatov","email":"nurmatov.mamatisa@huawei.com","username":"isabek"},"change_message_id":"a7a933af115c49cf41cf2deead1fa0ce032c77ac","unresolved":false,"context_lines":[{"line_number":354,"context_line":""},{"line_number":355,"context_line":"@runtime.synchronized(\"l3-agent-pd\")"},{"line_number":356,"context_line":"def remove_router(resource, event, l3_agent, payload):"},{"line_number":357,"context_line":"    router_id \u003d payload.latest_state.router_id"},{"line_number":358,"context_line":"    router \u003d l3_agent.pd.routers.get(router_id)"},{"line_number":359,"context_line":"    l3_agent.pd.delete_router_pd(router)"},{"line_number":360,"context_line":"    del l3_agent.pd.routers[router_id][\u0027subnets\u0027]"}],"source_content_type":"text/x-python","patch_set":2,"id":"4409a08e_d52c5120","line":357,"range":{"start_line":357,"start_character":16,"end_line":357,"end_character":46},"in_reply_to":"52ec9a00_aa7a8809","updated":"2021-08-02 11:02:02.000000000","message":"Done","commit_id":"3a90e207614858b67ba2955a9207992e75f069c4"}],"neutron/db/l3_dvr_db.py":[{"author":{"_account_id":5948,"name":"Oleg Bondarev","email":"obondarev@mirantis.com","username":"obondarev"},"change_message_id":"033d324ee97dc26a2c2211ddfce9215ea5cc971b","unresolved":true,"context_lines":[{"line_number":208,"context_line":"        context \u003d payload.context"},{"line_number":209,"context_line":"        router \u003d payload.latest_state"},{"line_number":210,"context_line":"        router_db \u003d payload.metadata[\u0027router_db\u0027]"},{"line_number":211,"context_line":"        old_router \u003d payload.states[0]"},{"line_number":212,"context_line":""},{"line_number":213,"context_line":"        if (old_router and old_router[\u0027distributed\u0027] and not"},{"line_number":214,"context_line":"                router[\u0027distributed\u0027]):"}],"source_content_type":"text/x-python","patch_set":2,"id":"11a6108a_d71462d8","line":211,"range":{"start_line":211,"start_character":21,"end_line":211,"end_character":38},"updated":"2021-08-02 09:30:42.000000000","message":"please check that payload.states has at least 2 entries, otherwise router and old_router could be same object (if publisher only sets one state).","commit_id":"3a90e207614858b67ba2955a9207992e75f069c4"},{"author":{"_account_id":32667,"name":"Mamatisa Nurmatov","email":"nurmatov.mamatisa@huawei.com","username":"isabek"},"change_message_id":"a7a933af115c49cf41cf2deead1fa0ce032c77ac","unresolved":false,"context_lines":[{"line_number":208,"context_line":"        context \u003d payload.context"},{"line_number":209,"context_line":"        router \u003d payload.latest_state"},{"line_number":210,"context_line":"        router_db \u003d payload.metadata[\u0027router_db\u0027]"},{"line_number":211,"context_line":"        old_router \u003d payload.states[0]"},{"line_number":212,"context_line":""},{"line_number":213,"context_line":"        if (old_router and old_router[\u0027distributed\u0027] and not"},{"line_number":214,"context_line":"                router[\u0027distributed\u0027]):"}],"source_content_type":"text/x-python","patch_set":2,"id":"9370104a_880d0f22","line":211,"range":{"start_line":211,"start_character":21,"end_line":211,"end_character":38},"in_reply_to":"11a6108a_d71462d8","updated":"2021-08-02 11:02:02.000000000","message":"Done","commit_id":"3a90e207614858b67ba2955a9207992e75f069c4"},{"author":{"_account_id":5948,"name":"Oleg Bondarev","email":"obondarev@mirantis.com","username":"obondarev"},"change_message_id":"033d324ee97dc26a2c2211ddfce9215ea5cc971b","unresolved":true,"context_lines":[{"line_number":225,"context_line":""},{"line_number":226,"context_line":"        if (router.get(l3_apidef.EXTERNAL_GW_INFO) and"},{"line_number":227,"context_line":"                not router[\u0027distributed\u0027]):"},{"line_number":228,"context_line":"            old_router \u003d payload.states[0]"},{"line_number":229,"context_line":"            if old_router and old_router[\u0027distributed\u0027]:"},{"line_number":230,"context_line":"                self.delete_csnat_router_interface_ports("},{"line_number":231,"context_line":"                    context.elevated(), router_db)"}],"source_content_type":"text/x-python","patch_set":2,"id":"ba028ed2_7f778cd5","line":228,"range":{"start_line":228,"start_character":12,"end_line":228,"end_character":42},"updated":"2021-08-02 09:30:42.000000000","message":"ditto","commit_id":"3a90e207614858b67ba2955a9207992e75f069c4"},{"author":{"_account_id":32667,"name":"Mamatisa Nurmatov","email":"nurmatov.mamatisa@huawei.com","username":"isabek"},"change_message_id":"a7a933af115c49cf41cf2deead1fa0ce032c77ac","unresolved":false,"context_lines":[{"line_number":225,"context_line":""},{"line_number":226,"context_line":"        if (router.get(l3_apidef.EXTERNAL_GW_INFO) and"},{"line_number":227,"context_line":"                not router[\u0027distributed\u0027]):"},{"line_number":228,"context_line":"            old_router \u003d payload.states[0]"},{"line_number":229,"context_line":"            if old_router and old_router[\u0027distributed\u0027]:"},{"line_number":230,"context_line":"                self.delete_csnat_router_interface_ports("},{"line_number":231,"context_line":"                    context.elevated(), router_db)"}],"source_content_type":"text/x-python","patch_set":2,"id":"ce0fa43c_7d89ea35","line":228,"range":{"start_line":228,"start_character":12,"end_line":228,"end_character":42},"in_reply_to":"ba028ed2_7f778cd5","updated":"2021-08-02 11:02:02.000000000","message":"Done","commit_id":"3a90e207614858b67ba2955a9207992e75f069c4"},{"author":{"_account_id":5948,"name":"Oleg Bondarev","email":"obondarev@mirantis.com","username":"obondarev"},"change_message_id":"033d324ee97dc26a2c2211ddfce9215ea5cc971b","unresolved":true,"context_lines":[{"line_number":247,"context_line":"        if event \u003d\u003d events.AFTER_UPDATE:"},{"line_number":248,"context_line":"            # after an update, we check to see if it was a migration or a"},{"line_number":249,"context_line":"            # gateway attachment"},{"line_number":250,"context_line":"            old_router \u003d payload.states[0]"},{"line_number":251,"context_line":"            do_create \u003d (not old_router[\u0027distributed\u0027] or"},{"line_number":252,"context_line":"                         not old_router.get(l3_apidef.EXTERNAL_GW_INFO))"},{"line_number":253,"context_line":"            if not do_create:"}],"source_content_type":"text/x-python","patch_set":2,"id":"0eb537f5_20f3a499","line":250,"range":{"start_line":250,"start_character":12,"end_line":250,"end_character":42},"updated":"2021-08-02 09:30:42.000000000","message":"ditto","commit_id":"3a90e207614858b67ba2955a9207992e75f069c4"},{"author":{"_account_id":32667,"name":"Mamatisa Nurmatov","email":"nurmatov.mamatisa@huawei.com","username":"isabek"},"change_message_id":"a7a933af115c49cf41cf2deead1fa0ce032c77ac","unresolved":false,"context_lines":[{"line_number":247,"context_line":"        if event \u003d\u003d events.AFTER_UPDATE:"},{"line_number":248,"context_line":"            # after an update, we check to see if it was a migration or a"},{"line_number":249,"context_line":"            # gateway attachment"},{"line_number":250,"context_line":"            old_router \u003d payload.states[0]"},{"line_number":251,"context_line":"            do_create \u003d (not old_router[\u0027distributed\u0027] or"},{"line_number":252,"context_line":"                         not old_router.get(l3_apidef.EXTERNAL_GW_INFO))"},{"line_number":253,"context_line":"            if not do_create:"}],"source_content_type":"text/x-python","patch_set":2,"id":"87534a87_a75bb86b","line":250,"range":{"start_line":250,"start_character":12,"end_line":250,"end_character":42},"in_reply_to":"0eb537f5_20f3a499","updated":"2021-08-02 11:02:02.000000000","message":"Done","commit_id":"3a90e207614858b67ba2955a9207992e75f069c4"},{"author":{"_account_id":5948,"name":"Oleg Bondarev","email":"obondarev@mirantis.com","username":"obondarev"},"change_message_id":"ddc8520ded4b1bc7b715c84430aec7170816a580","unresolved":true,"context_lines":[{"line_number":208,"context_line":"        context \u003d payload.context"},{"line_number":209,"context_line":"        router \u003d payload.latest_state"},{"line_number":210,"context_line":"        router_db \u003d payload.metadata[\u0027router_db\u0027]"},{"line_number":211,"context_line":"        old_router \u003d payload.states[0] if (len(payload.states)) \u003e 1 else None"},{"line_number":212,"context_line":""},{"line_number":213,"context_line":"        if (old_router and old_router[\u0027distributed\u0027] and not"},{"line_number":214,"context_line":"                router[\u0027distributed\u0027]):"}],"source_content_type":"text/x-python","patch_set":4,"id":"edd11be0_77d33a1f","line":211,"range":{"start_line":211,"start_character":42,"end_line":211,"end_character":67},"updated":"2021-08-03 07:11:15.000000000","message":"(len(payload.states) \u003e 1)","commit_id":"83ca7743e0e23f5015bcc8140364174760ac246c"},{"author":{"_account_id":32667,"name":"Mamatisa Nurmatov","email":"nurmatov.mamatisa@huawei.com","username":"isabek"},"change_message_id":"af33abdb924c196d5278aedee53e59cbb4e5e7ab","unresolved":false,"context_lines":[{"line_number":208,"context_line":"        context \u003d payload.context"},{"line_number":209,"context_line":"        router \u003d payload.latest_state"},{"line_number":210,"context_line":"        router_db \u003d payload.metadata[\u0027router_db\u0027]"},{"line_number":211,"context_line":"        old_router \u003d payload.states[0] if (len(payload.states)) \u003e 1 else None"},{"line_number":212,"context_line":""},{"line_number":213,"context_line":"        if (old_router and old_router[\u0027distributed\u0027] and not"},{"line_number":214,"context_line":"                router[\u0027distributed\u0027]):"}],"source_content_type":"text/x-python","patch_set":4,"id":"0f9816d3_bb331df9","line":211,"range":{"start_line":211,"start_character":42,"end_line":211,"end_character":67},"in_reply_to":"edd11be0_77d33a1f","updated":"2021-08-03 07:36:35.000000000","message":"Done","commit_id":"83ca7743e0e23f5015bcc8140364174760ac246c"},{"author":{"_account_id":5948,"name":"Oleg Bondarev","email":"obondarev@mirantis.com","username":"obondarev"},"change_message_id":"ddc8520ded4b1bc7b715c84430aec7170816a580","unresolved":true,"context_lines":[{"line_number":225,"context_line":""},{"line_number":226,"context_line":"        if (router.get(l3_apidef.EXTERNAL_GW_INFO) and"},{"line_number":227,"context_line":"                not router[\u0027distributed\u0027]):"},{"line_number":228,"context_line":"            old_router \u003d payload.states[0] if (len(payload.states)) \u003e 1 \\"},{"line_number":229,"context_line":"                else None"},{"line_number":230,"context_line":"            if old_router and old_router[\u0027distributed\u0027]:"},{"line_number":231,"context_line":"                self.delete_csnat_router_interface_ports("}],"source_content_type":"text/x-python","patch_set":4,"id":"6c2823fa_b51bcf47","line":228,"range":{"start_line":228,"start_character":46,"end_line":228,"end_character":71},"updated":"2021-08-03 07:11:15.000000000","message":"same here","commit_id":"83ca7743e0e23f5015bcc8140364174760ac246c"},{"author":{"_account_id":32667,"name":"Mamatisa Nurmatov","email":"nurmatov.mamatisa@huawei.com","username":"isabek"},"change_message_id":"af33abdb924c196d5278aedee53e59cbb4e5e7ab","unresolved":false,"context_lines":[{"line_number":225,"context_line":""},{"line_number":226,"context_line":"        if (router.get(l3_apidef.EXTERNAL_GW_INFO) and"},{"line_number":227,"context_line":"                not router[\u0027distributed\u0027]):"},{"line_number":228,"context_line":"            old_router \u003d payload.states[0] if (len(payload.states)) \u003e 1 \\"},{"line_number":229,"context_line":"                else None"},{"line_number":230,"context_line":"            if old_router and old_router[\u0027distributed\u0027]:"},{"line_number":231,"context_line":"                self.delete_csnat_router_interface_ports("}],"source_content_type":"text/x-python","patch_set":4,"id":"f7f4ff83_d590f088","line":228,"range":{"start_line":228,"start_character":46,"end_line":228,"end_character":71},"in_reply_to":"6c2823fa_b51bcf47","updated":"2021-08-03 07:36:35.000000000","message":"Done","commit_id":"83ca7743e0e23f5015bcc8140364174760ac246c"},{"author":{"_account_id":5948,"name":"Oleg Bondarev","email":"obondarev@mirantis.com","username":"obondarev"},"change_message_id":"ddc8520ded4b1bc7b715c84430aec7170816a580","unresolved":true,"context_lines":[{"line_number":248,"context_line":"        if event \u003d\u003d events.AFTER_UPDATE:"},{"line_number":249,"context_line":"            # after an update, we check to see if it was a migration or a"},{"line_number":250,"context_line":"            # gateway attachment"},{"line_number":251,"context_line":"            old_router \u003d payload.states[0] if (len(payload.states)) \u003e 1 \\"},{"line_number":252,"context_line":"                else None"},{"line_number":253,"context_line":"            do_create \u003d (not old_router[\u0027distributed\u0027] or"},{"line_number":254,"context_line":"                         not old_router.get(l3_apidef.EXTERNAL_GW_INFO))"},{"line_number":255,"context_line":"            if not do_create:"}],"source_content_type":"text/x-python","patch_set":4,"id":"41ee63d8_8a74fecb","line":252,"range":{"start_line":251,"start_character":25,"end_line":252,"end_character":25},"updated":"2021-08-03 07:11:15.000000000","message":"Consider:\n \n old_router \u003d (payload.states[0] if (len(payload.states) \u003e 1)\n               else None)","commit_id":"83ca7743e0e23f5015bcc8140364174760ac246c"},{"author":{"_account_id":32667,"name":"Mamatisa Nurmatov","email":"nurmatov.mamatisa@huawei.com","username":"isabek"},"change_message_id":"af33abdb924c196d5278aedee53e59cbb4e5e7ab","unresolved":false,"context_lines":[{"line_number":248,"context_line":"        if event \u003d\u003d events.AFTER_UPDATE:"},{"line_number":249,"context_line":"            # after an update, we check to see if it was a migration or a"},{"line_number":250,"context_line":"            # gateway attachment"},{"line_number":251,"context_line":"            old_router \u003d payload.states[0] if (len(payload.states)) \u003e 1 \\"},{"line_number":252,"context_line":"                else None"},{"line_number":253,"context_line":"            do_create \u003d (not old_router[\u0027distributed\u0027] or"},{"line_number":254,"context_line":"                         not old_router.get(l3_apidef.EXTERNAL_GW_INFO))"},{"line_number":255,"context_line":"            if not do_create:"}],"source_content_type":"text/x-python","patch_set":4,"id":"7e7f3185_b83b73fe","line":252,"range":{"start_line":251,"start_character":25,"end_line":252,"end_character":25},"in_reply_to":"41ee63d8_8a74fecb","updated":"2021-08-03 07:36:35.000000000","message":"Done","commit_id":"83ca7743e0e23f5015bcc8140364174760ac246c"}],"neutron/db/l3_hamode_db.py":[{"author":{"_account_id":5948,"name":"Oleg Bondarev","email":"obondarev@mirantis.com","username":"obondarev"},"change_message_id":"033d324ee97dc26a2c2211ddfce9215ea5cc971b","unresolved":true,"context_lines":[{"line_number":461,"context_line":"        \"\"\"Event handler to react to changes after HA flag has been updated.\"\"\""},{"line_number":462,"context_line":"        context \u003d payload.context"},{"line_number":463,"context_line":"        router_id \u003d payload.resource_id"},{"line_number":464,"context_line":"        old_router \u003d payload.states[0]"},{"line_number":465,"context_line":"        router \u003d payload.latest_state"},{"line_number":466,"context_line":"        router_db \u003d payload.metadata[\u0027router_db\u0027]"},{"line_number":467,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"3f68ecca_e155452c","line":464,"range":{"start_line":464,"start_character":21,"end_line":464,"end_character":38},"updated":"2021-08-02 09:30:42.000000000","message":"same here","commit_id":"3a90e207614858b67ba2955a9207992e75f069c4"},{"author":{"_account_id":32667,"name":"Mamatisa Nurmatov","email":"nurmatov.mamatisa@huawei.com","username":"isabek"},"change_message_id":"a7a933af115c49cf41cf2deead1fa0ce032c77ac","unresolved":false,"context_lines":[{"line_number":461,"context_line":"        \"\"\"Event handler to react to changes after HA flag has been updated.\"\"\""},{"line_number":462,"context_line":"        context \u003d payload.context"},{"line_number":463,"context_line":"        router_id \u003d payload.resource_id"},{"line_number":464,"context_line":"        old_router \u003d payload.states[0]"},{"line_number":465,"context_line":"        router \u003d payload.latest_state"},{"line_number":466,"context_line":"        router_db \u003d payload.metadata[\u0027router_db\u0027]"},{"line_number":467,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"8a06bb51_bdb56940","line":464,"range":{"start_line":464,"start_character":21,"end_line":464,"end_character":38},"in_reply_to":"3f68ecca_e155452c","updated":"2021-08-02 11:02:02.000000000","message":"Done","commit_id":"3a90e207614858b67ba2955a9207992e75f069c4"}],"neutron/tests/unit/agent/linux/test_pd.py":[{"author":{"_account_id":5948,"name":"Oleg Bondarev","email":"obondarev@mirantis.com","username":"obondarev"},"change_message_id":"ddc8520ded4b1bc7b715c84430aec7170816a580","unresolved":true,"context_lines":[{"line_number":48,"context_line":""},{"line_number":49,"context_line":"        # clear namespace name, update entry"},{"line_number":50,"context_line":"        pd_router[\u0027ns_name\u0027] \u003d None"},{"line_number":51,"context_line":"        pd.update_router(None, None, l3_agent,"},{"line_number":52,"context_line":"                         payload\u003devents.DBEventPayload("},{"line_number":53,"context_line":"                             mock.ANY, states\u003d(router,)))"},{"line_number":54,"context_line":"        pd_router \u003d l3_agent.pd.routers.get(router.router_id)"},{"line_number":55,"context_line":"        self.assertEqual(ns_name, pd_router.get(\u0027ns_name\u0027))"},{"line_number":56,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"5b5e828b_1de24e3d","line":53,"range":{"start_line":51,"start_character":25,"end_line":53,"end_character":56},"updated":"2021-08-03 07:11:15.000000000","message":"why not pass resource_id here as well? It should be passed everywhere if possible","commit_id":"83ca7743e0e23f5015bcc8140364174760ac246c"},{"author":{"_account_id":32667,"name":"Mamatisa Nurmatov","email":"nurmatov.mamatisa@huawei.com","username":"isabek"},"change_message_id":"af33abdb924c196d5278aedee53e59cbb4e5e7ab","unresolved":false,"context_lines":[{"line_number":48,"context_line":""},{"line_number":49,"context_line":"        # clear namespace name, update entry"},{"line_number":50,"context_line":"        pd_router[\u0027ns_name\u0027] \u003d None"},{"line_number":51,"context_line":"        pd.update_router(None, None, l3_agent,"},{"line_number":52,"context_line":"                         payload\u003devents.DBEventPayload("},{"line_number":53,"context_line":"                             mock.ANY, states\u003d(router,)))"},{"line_number":54,"context_line":"        pd_router \u003d l3_agent.pd.routers.get(router.router_id)"},{"line_number":55,"context_line":"        self.assertEqual(ns_name, pd_router.get(\u0027ns_name\u0027))"},{"line_number":56,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"c68fac48_50bc7463","line":53,"range":{"start_line":51,"start_character":25,"end_line":53,"end_character":56},"in_reply_to":"5b5e828b_1de24e3d","updated":"2021-08-03 07:36:35.000000000","message":"Done","commit_id":"83ca7743e0e23f5015bcc8140364174760ac246c"},{"author":{"_account_id":5948,"name":"Oleg Bondarev","email":"obondarev@mirantis.com","username":"obondarev"},"change_message_id":"ddc8520ded4b1bc7b715c84430aec7170816a580","unresolved":true,"context_lines":[{"line_number":104,"context_line":""},{"line_number":105,"context_line":"        with mock.patch.object(pd.LOG, \u0027exception\u0027) as log:"},{"line_number":106,"context_line":"            pd.update_router(None, None, l3_agent,"},{"line_number":107,"context_line":"                             payload\u003devents.DBEventPayload("},{"line_number":108,"context_line":"                                 mock.ANY, states\u003d(router,)))"},{"line_number":109,"context_line":""},{"line_number":110,"context_line":"            self.assertTrue(log.called)"},{"line_number":111,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"9f9c13ac_67dd2fe8","line":108,"range":{"start_line":107,"start_character":44,"end_line":108,"end_character":61},"updated":"2021-08-03 07:11:15.000000000","message":"ditto","commit_id":"83ca7743e0e23f5015bcc8140364174760ac246c"},{"author":{"_account_id":32667,"name":"Mamatisa Nurmatov","email":"nurmatov.mamatisa@huawei.com","username":"isabek"},"change_message_id":"af33abdb924c196d5278aedee53e59cbb4e5e7ab","unresolved":false,"context_lines":[{"line_number":104,"context_line":""},{"line_number":105,"context_line":"        with mock.patch.object(pd.LOG, \u0027exception\u0027) as log:"},{"line_number":106,"context_line":"            pd.update_router(None, None, l3_agent,"},{"line_number":107,"context_line":"                             payload\u003devents.DBEventPayload("},{"line_number":108,"context_line":"                                 mock.ANY, states\u003d(router,)))"},{"line_number":109,"context_line":""},{"line_number":110,"context_line":"            self.assertTrue(log.called)"},{"line_number":111,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"62b4ca69_cdbe0ded","line":108,"range":{"start_line":107,"start_character":44,"end_line":108,"end_character":61},"in_reply_to":"9f9c13ac_67dd2fe8","updated":"2021-08-03 07:36:35.000000000","message":"Done","commit_id":"83ca7743e0e23f5015bcc8140364174760ac246c"}]}
