)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"224904daed37573ddba59d1e24d25ad6ebc859e3","unresolved":true,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"create port forwarding, should set floating ip status running, delete all port"},{"line_number":10,"context_line":"forwarding, the floating ip status should be down."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Change-Id: I8b3e4bf6b3cac3a95ea76b85dd4882ddafc962c8"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"65735732_9211ba01","line":11,"updated":"2021-01-08 09:19:43.000000000","message":"Please link to related bug here. I guess it is related to https://bugs.launchpad.net/bugs/1910334, right?\nIf yes, please add:\n\nCloses-Bug: #1910334\n\nbelow the commit message","commit_id":"641f9e309595572102d0f8cb56379b0205c8e6da"},{"author":{"_account_id":30380,"name":"ZhouHeng","email":"zhouhenglc@inspur.com","username":"zhouhenglc"},"change_message_id":"df62db67638fd082d9661aa595da4e730afe3c78","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"create port forwarding, should set floating ip status running, delete all port"},{"line_number":10,"context_line":"forwarding, the floating ip status should be down."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Change-Id: I8b3e4bf6b3cac3a95ea76b85dd4882ddafc962c8"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"b6bedefe_83fae431","line":11,"in_reply_to":"65735732_9211ba01","updated":"2021-01-11 01:02:42.000000000","message":"Done","commit_id":"641f9e309595572102d0f8cb56379b0205c8e6da"}],"neutron/services/portforwarding/drivers/ovn/driver.py":[{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"0aa2ad2a7c450ce58ec7e38dcdc9be86c94493cb","unresolved":true,"context_lines":[{"line_number":183,"context_line":"                for pf_payload in payload:"},{"line_number":184,"context_line":"                    self._handler.port_forwarding_created(ovn_txn, ovn_nb,"},{"line_number":185,"context_line":"                        pf_payload.current_pf)"},{"line_number":186,"context_line":"                    self._l3_plugin.update_floatingip_status("},{"line_number":187,"context_line":"                        context, pf_payload.current_pf.floatingip_id,"},{"line_number":188,"context_line":"                        const.FLOATINGIP_STATUS_ACTIVE)"},{"line_number":189,"context_line":"            elif event_type \u003d\u003d events.AFTER_UPDATE:"}],"source_content_type":"text/x-python","patch_set":11,"id":"86c81c89_368ea90b","line":186,"updated":"2021-01-12 12:33:25.000000000","message":"Shouldn\u0027t be this update something to be handled by the PF plugin (PortForwardingPlugin)? This should happen in any case, regardless of the driver (OVN, OVS, etc). Why should the OVN take care of this?\n\nMaybe I\u0027m missing something here.","commit_id":"a37dc71ad6032ee21ccda52a9b1150ecd8e9dfc4"},{"author":{"_account_id":30380,"name":"ZhouHeng","email":"zhouhenglc@inspur.com","username":"zhouhenglc"},"change_message_id":"106761a43bda4008be4855de092be7ff47f8d3c3","unresolved":true,"context_lines":[{"line_number":183,"context_line":"                for pf_payload in payload:"},{"line_number":184,"context_line":"                    self._handler.port_forwarding_created(ovn_txn, ovn_nb,"},{"line_number":185,"context_line":"                        pf_payload.current_pf)"},{"line_number":186,"context_line":"                    self._l3_plugin.update_floatingip_status("},{"line_number":187,"context_line":"                        context, pf_payload.current_pf.floatingip_id,"},{"line_number":188,"context_line":"                        const.FLOATINGIP_STATUS_ACTIVE)"},{"line_number":189,"context_line":"            elif event_type \u003d\u003d events.AFTER_UPDATE:"}],"source_content_type":"text/x-python","patch_set":11,"id":"521eb8f0_edaeb2c5","line":186,"in_reply_to":"279ff0d1_a37c9290","updated":"2021-01-13 00:52:36.000000000","message":"for ovs driver,  the PF plugin notifies the L3 agent, and after L3 agent pf extenstion processing, call rpc set floatingip status.\nthe ovn driver gets the processing results synchronously, and the ovs driver is asynchronous. Therefore, the floatingip status cannot be updated in PF plugin.","commit_id":"a37dc71ad6032ee21ccda52a9b1150ecd8e9dfc4"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"22181a678ddbbdde229f98ebb87c019b8b50cb0e","unresolved":true,"context_lines":[{"line_number":183,"context_line":"                for pf_payload in payload:"},{"line_number":184,"context_line":"                    self._handler.port_forwarding_created(ovn_txn, ovn_nb,"},{"line_number":185,"context_line":"                        pf_payload.current_pf)"},{"line_number":186,"context_line":"                    self._l3_plugin.update_floatingip_status("},{"line_number":187,"context_line":"                        context, pf_payload.current_pf.floatingip_id,"},{"line_number":188,"context_line":"                        const.FLOATINGIP_STATUS_ACTIVE)"},{"line_number":189,"context_line":"            elif event_type \u003d\u003d events.AFTER_UPDATE:"}],"source_content_type":"text/x-python","patch_set":11,"id":"2700cd6a_48e6ec89","line":186,"in_reply_to":"521eb8f0_edaeb2c5","updated":"2021-01-13 08:39:22.000000000","message":"Exactly! That\u0027s what I was missing. The L3 agent calls \"update_floatingip_statuses\" to request to the server the FIP update.\n\nThanks!","commit_id":"a37dc71ad6032ee21ccda52a9b1150ecd8e9dfc4"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"6354fac486a1c93655f387424e0eb689969f9395","unresolved":true,"context_lines":[{"line_number":183,"context_line":"                for pf_payload in payload:"},{"line_number":184,"context_line":"                    self._handler.port_forwarding_created(ovn_txn, ovn_nb,"},{"line_number":185,"context_line":"                        pf_payload.current_pf)"},{"line_number":186,"context_line":"                    self._l3_plugin.update_floatingip_status("},{"line_number":187,"context_line":"                        context, pf_payload.current_pf.floatingip_id,"},{"line_number":188,"context_line":"                        const.FLOATINGIP_STATUS_ACTIVE)"},{"line_number":189,"context_line":"            elif event_type \u003d\u003d events.AFTER_UPDATE:"}],"source_content_type":"text/x-python","patch_set":11,"id":"279ff0d1_a37c9290","line":186,"in_reply_to":"86c81c89_368ea90b","updated":"2021-01-12 13:42:26.000000000","message":"Good point.\nIt looks better to update the status in the plugin layer rather than the driver layer.\nIf a driver reports a success, the plugin can update the status.","commit_id":"a37dc71ad6032ee21ccda52a9b1150ecd8e9dfc4"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"22181a678ddbbdde229f98ebb87c019b8b50cb0e","unresolved":true,"context_lines":[{"line_number":193,"context_line":"            elif event_type \u003d\u003d events.AFTER_DELETE:"},{"line_number":194,"context_line":"                for pf_payload in payload:"},{"line_number":195,"context_line":"                    pfs \u003d _pf_plugin.get_floatingip_port_forwardings("},{"line_number":196,"context_line":"                        context, pf_payload.original_pf.floatingip_id)"},{"line_number":197,"context_line":"                    self._handler.port_forwarding_deleted(ovn_txn, ovn_nb,"},{"line_number":198,"context_line":"                        pf_payload.original_pf)"},{"line_number":199,"context_line":"                    if not pfs:"}],"source_content_type":"text/x-python","patch_set":11,"id":"528ade9d_2a2fefc1","line":196,"updated":"2021-01-13 08:39:22.000000000","message":"Just to avoid unnecessary DB queries, if possible. If the PF is deleted, shouldn\u0027t we expect \"pfs\" to be always None?","commit_id":"a37dc71ad6032ee21ccda52a9b1150ecd8e9dfc4"},{"author":{"_account_id":30380,"name":"ZhouHeng","email":"zhouhenglc@inspur.com","username":"zhouhenglc"},"change_message_id":"8af6436cc252fd736fa7e4a09c9cd8cdb5f81079","unresolved":true,"context_lines":[{"line_number":193,"context_line":"            elif event_type \u003d\u003d events.AFTER_DELETE:"},{"line_number":194,"context_line":"                for pf_payload in payload:"},{"line_number":195,"context_line":"                    pfs \u003d _pf_plugin.get_floatingip_port_forwardings("},{"line_number":196,"context_line":"                        context, pf_payload.original_pf.floatingip_id)"},{"line_number":197,"context_line":"                    self._handler.port_forwarding_deleted(ovn_txn, ovn_nb,"},{"line_number":198,"context_line":"                        pf_payload.original_pf)"},{"line_number":199,"context_line":"                    if not pfs:"}],"source_content_type":"text/x-python","patch_set":11,"id":"8665d11a_6c890cbe","line":196,"in_reply_to":"528ade9d_2a2fefc1","updated":"2021-01-13 08:49:23.000000000","message":"It is possible that the floating IP contains multiple PFs, and delete one this time.","commit_id":"a37dc71ad6032ee21ccda52a9b1150ecd8e9dfc4"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"7eff9ba1458dd7b87c08af3d9cadf6139d49f139","unresolved":true,"context_lines":[{"line_number":193,"context_line":"            elif event_type \u003d\u003d events.AFTER_DELETE:"},{"line_number":194,"context_line":"                for pf_payload in payload:"},{"line_number":195,"context_line":"                    pfs \u003d _pf_plugin.get_floatingip_port_forwardings("},{"line_number":196,"context_line":"                        context, pf_payload.original_pf.floatingip_id)"},{"line_number":197,"context_line":"                    self._handler.port_forwarding_deleted(ovn_txn, ovn_nb,"},{"line_number":198,"context_line":"                        pf_payload.original_pf)"},{"line_number":199,"context_line":"                    if not pfs:"}],"source_content_type":"text/x-python","patch_set":11,"id":"c8739aee_7f385885","line":196,"in_reply_to":"8665d11a_6c890cbe","updated":"2021-01-13 11:41:46.000000000","message":"Right! thanks for the reply","commit_id":"a37dc71ad6032ee21ccda52a9b1150ecd8e9dfc4"}],"neutron/tests/unit/services/portforwarding/drivers/ovn/test_driver.py":[{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"224904daed37573ddba59d1e24d25ad6ebc859e3","unresolved":true,"context_lines":[{"line_number":291,"context_line":"        fake_payload \u003d [self._fake_pf_payload_entry(None, id)"},{"line_number":292,"context_line":"                        for id in range(1, 4)]"},{"line_number":293,"context_line":"        self.pf_plugin.get_floatingip_port_forwardings \u003d mock.Mock("},{"line_number":294,"context_line":"            return_value\u003d[])"},{"line_number":295,"context_line":"        self._handle_notification_common(events.AFTER_DELETE, fake_payload,"},{"line_number":296,"context_line":"                                         fip_objs)"},{"line_number":297,"context_line":"        calls \u003d [mock.call(mock.ANY, self.l3_plugin._ovn, entry.original_pf)"}],"source_content_type":"text/x-python","patch_set":3,"id":"bbdbfdc0_3d6d48a9","line":294,"updated":"2021-01-08 09:19:43.000000000","message":"Maybe You can add some test which will ensure that status of FIP is actually updated?","commit_id":"641f9e309595572102d0f8cb56379b0205c8e6da"},{"author":{"_account_id":30380,"name":"ZhouHeng","email":"zhouhenglc@inspur.com","username":"zhouhenglc"},"change_message_id":"df62db67638fd082d9661aa595da4e730afe3c78","unresolved":false,"context_lines":[{"line_number":291,"context_line":"        fake_payload \u003d [self._fake_pf_payload_entry(None, id)"},{"line_number":292,"context_line":"                        for id in range(1, 4)]"},{"line_number":293,"context_line":"        self.pf_plugin.get_floatingip_port_forwardings \u003d mock.Mock("},{"line_number":294,"context_line":"            return_value\u003d[])"},{"line_number":295,"context_line":"        self._handle_notification_common(events.AFTER_DELETE, fake_payload,"},{"line_number":296,"context_line":"                                         fip_objs)"},{"line_number":297,"context_line":"        calls \u003d [mock.call(mock.ANY, self.l3_plugin._ovn, entry.original_pf)"}],"source_content_type":"text/x-python","patch_set":3,"id":"805d9f1d_8e922f60","line":294,"in_reply_to":"bbdbfdc0_3d6d48a9","updated":"2021-01-11 01:02:42.000000000","message":"Done","commit_id":"641f9e309595572102d0f8cb56379b0205c8e6da"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"1a9ddb87bb5cf6a2c131c0e75096e21396e2f15a","unresolved":true,"context_lines":[{"line_number":296,"context_line":"        fake_payload \u003d [self._fake_pf_payload_entry(None, id)"},{"line_number":297,"context_line":"                        for id in range(1, 4)]"},{"line_number":298,"context_line":"        self.pf_plugin.get_floatingip_port_forwardings \u003d mock.Mock("},{"line_number":299,"context_line":"            return_value\u003d[])"},{"line_number":300,"context_line":"        self._handle_notification_common(events.AFTER_DELETE, fake_payload,"},{"line_number":301,"context_line":"                                         fip_objs)"},{"line_number":302,"context_line":"        calls \u003d [mock.call(mock.ANY, self.l3_plugin._ovn, entry.original_pf)"}],"source_content_type":"text/x-python","patch_set":8,"id":"85708cfd_f35091ea","line":299,"updated":"2021-01-12 11:31:24.000000000","message":"Could you use mock.patch rather than assigning mock.Mock to a method?","commit_id":"ddc03632498176b1bf171d25a785e1b003061a64"},{"author":{"_account_id":30380,"name":"ZhouHeng","email":"zhouhenglc@inspur.com","username":"zhouhenglc"},"change_message_id":"d01962c39751f0d76847b40ef6c3b9458785e120","unresolved":false,"context_lines":[{"line_number":296,"context_line":"        fake_payload \u003d [self._fake_pf_payload_entry(None, id)"},{"line_number":297,"context_line":"                        for id in range(1, 4)]"},{"line_number":298,"context_line":"        self.pf_plugin.get_floatingip_port_forwardings \u003d mock.Mock("},{"line_number":299,"context_line":"            return_value\u003d[])"},{"line_number":300,"context_line":"        self._handle_notification_common(events.AFTER_DELETE, fake_payload,"},{"line_number":301,"context_line":"                                         fip_objs)"},{"line_number":302,"context_line":"        calls \u003d [mock.call(mock.ANY, self.l3_plugin._ovn, entry.original_pf)"}],"source_content_type":"text/x-python","patch_set":8,"id":"beeade93_3aa0262f","line":299,"in_reply_to":"85708cfd_f35091ea","updated":"2021-01-12 11:51:21.000000000","message":"Done","commit_id":"ddc03632498176b1bf171d25a785e1b003061a64"}]}
