)]}'
{"neutron/plugins/ml2/drivers/ovn/mech_driver/ovsdb/ovn_client.py":[{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"9076b0caea3c56f895330cb618c7cabe54a61e3b","unresolved":true,"context_lines":[{"line_number":590,"context_line":"            txn.add(self._nb_idl.delete_lswitch_port("},{"line_number":591,"context_line":"                port_id, ovn_network_name))"},{"line_number":592,"context_line":""},{"line_number":593,"context_line":"            if port_object:"},{"line_number":594,"context_line":"                port_info \u003d self._get_port_options(port_object)"},{"line_number":595,"context_line":"                port_type \u003d port_info.type"},{"line_number":596,"context_line":"            else:"}],"source_content_type":"text/x-python","patch_set":2,"id":"3cbd2001_2f7b204a","line":593,"range":{"start_line":593,"start_character":12,"end_line":593,"end_character":27},"updated":"2021-03-31 08:23:06.000000000","message":"Using port_object is discouraged and conflicts with https://review.opendev.org/c/openstack/neutron/+/767186/\n\nIsn\u0027t there a better way to do this ? Since we already have the ovn_port object (L582) we can look at it\u0027s type to see if it\u0027s an \"external\" port.","commit_id":"d4815fcdd18e7a4270d8eab760dabebfeed3bb5e"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"2f9387db5abc38c7cbc78645f84c751936529746","unresolved":true,"context_lines":[{"line_number":590,"context_line":"            txn.add(self._nb_idl.delete_lswitch_port("},{"line_number":591,"context_line":"                port_id, ovn_network_name))"},{"line_number":592,"context_line":""},{"line_number":593,"context_line":"            if port_object:"},{"line_number":594,"context_line":"                port_info \u003d self._get_port_options(port_object)"},{"line_number":595,"context_line":"                port_type \u003d port_info.type"},{"line_number":596,"context_line":"            else:"}],"source_content_type":"text/x-python","patch_set":2,"id":"db227377_ff40edac","line":593,"range":{"start_line":593,"start_character":12,"end_line":593,"end_character":27},"in_reply_to":"3cbd2001_2f7b204a","updated":"2021-03-31 09:40:31.000000000","message":"Right, I didn\u0027t realize that we are removing *_object from OVN client calls. I\u0027ll refactor this.","commit_id":"d4815fcdd18e7a4270d8eab760dabebfeed3bb5e"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"e84bba1a78ce7412c10e48b3c49e44f4d879cfac","unresolved":true,"context_lines":[{"line_number":591,"context_line":"                port_id, ovn_network_name))"},{"line_number":592,"context_line":""},{"line_number":593,"context_line":"            if port_object:"},{"line_number":594,"context_line":"                port_info \u003d self._get_port_options(port_object)"},{"line_number":595,"context_line":"                port_type \u003d port_info.type"},{"line_number":596,"context_line":"            else:"},{"line_number":597,"context_line":"                port_type \u003d None"},{"line_number":598,"context_line":"            p_object \u003d ({\u0027id\u0027: port_id, \u0027network_id\u0027: network_id}"}],"source_content_type":"text/x-python","patch_set":2,"id":"68b3933d_3337a520","line":595,"range":{"start_line":594,"start_character":0,"end_line":595,"end_character":42},"updated":"2021-03-31 07:55:13.000000000","message":"nit: port_info is not needed\n\n port_type \u003d self._get_port_options(port_object).type","commit_id":"d4815fcdd18e7a4270d8eab760dabebfeed3bb5e"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"2f9387db5abc38c7cbc78645f84c751936529746","unresolved":false,"context_lines":[{"line_number":591,"context_line":"                port_id, ovn_network_name))"},{"line_number":592,"context_line":""},{"line_number":593,"context_line":"            if port_object:"},{"line_number":594,"context_line":"                port_info \u003d self._get_port_options(port_object)"},{"line_number":595,"context_line":"                port_type \u003d port_info.type"},{"line_number":596,"context_line":"            else:"},{"line_number":597,"context_line":"                port_type \u003d None"},{"line_number":598,"context_line":"            p_object \u003d ({\u0027id\u0027: port_id, \u0027network_id\u0027: network_id}"}],"source_content_type":"text/x-python","patch_set":2,"id":"1aca4fba_f82c2e77","line":595,"range":{"start_line":594,"start_character":0,"end_line":595,"end_character":42},"in_reply_to":"68b3933d_3337a520","updated":"2021-03-31 09:40:31.000000000","message":"Done","commit_id":"d4815fcdd18e7a4270d8eab760dabebfeed3bb5e"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"6814163dfd38f318bb44ddb9af85b55e5911a210","unresolved":true,"context_lines":[{"line_number":597,"context_line":"                port_type \u003d None"},{"line_number":598,"context_line":"            p_object \u003d ({\u0027id\u0027: port_id, \u0027network_id\u0027: network_id}"},{"line_number":599,"context_line":"                        if not port_object else port_object)"},{"line_number":600,"context_line":"            self._qos_driver.delete_port(txn, p_object, port_type\u003dport_type)"},{"line_number":601,"context_line":""},{"line_number":602,"context_line":"            if port_object and self.is_dns_required_for_port(port_object):"},{"line_number":603,"context_line":"                self.add_txns_to_remove_port_dns_records(txn, port_object)"}],"source_content_type":"text/x-python","patch_set":2,"id":"446c41db_a71ba7ff","line":600,"updated":"2021-03-31 10:19:51.000000000","message":"Actually we don\u0027t need to change this. When the port is deleted, \"_update_port_qos_rules\" will try to delete any possible related OVN QoS rule related to this port. Since [1], this method will pass even if the rules does not exist.\n\n[1]https://review.opendev.org/c/openstack/neutron/+/724825","commit_id":"d4815fcdd18e7a4270d8eab760dabebfeed3bb5e"}],"neutron/tests/unit/plugins/ml2/drivers/ovn/mech_driver/ovsdb/extensions/test_qos.py":[{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"e84bba1a78ce7412c10e48b3c49e44f4d879cfac","unresolved":true,"context_lines":[{"line_number":319,"context_line":"        port.qos_policy_id \u003d self.qos_policies[0].id"},{"line_number":320,"context_line":"        self.qos_driver.update_port(mock.ANY, port, original_port,"},{"line_number":321,"context_line":"                                    port_type\u003dovn_const.LSP_TYPE_EXTERNAL)"},{"line_number":322,"context_line":"        self.mock_rules.assert_not_called()"},{"line_number":323,"context_line":""},{"line_number":324,"context_line":"    def test_delete_port(self):"},{"line_number":325,"context_line":"        self.mock_rules.reset_mock()"}],"source_content_type":"text/x-python","patch_set":2,"id":"d411f578_fee0e2cf","line":322,"updated":"2021-03-31 07:55:13.000000000","message":"Would be good to cover create and delete too.","commit_id":"d4815fcdd18e7a4270d8eab760dabebfeed3bb5e"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"54639cbb1066087522d7405cf4a91b6c82392db6","unresolved":false,"context_lines":[{"line_number":319,"context_line":"        port.qos_policy_id \u003d self.qos_policies[0].id"},{"line_number":320,"context_line":"        self.qos_driver.update_port(mock.ANY, port, original_port,"},{"line_number":321,"context_line":"                                    port_type\u003dovn_const.LSP_TYPE_EXTERNAL)"},{"line_number":322,"context_line":"        self.mock_rules.assert_not_called()"},{"line_number":323,"context_line":""},{"line_number":324,"context_line":"    def test_delete_port(self):"},{"line_number":325,"context_line":"        self.mock_rules.reset_mock()"}],"source_content_type":"text/x-python","patch_set":2,"id":"91aa806a_d3c77b40","line":322,"in_reply_to":"b10dba4f_52413133","updated":"2021-03-31 10:50:57.000000000","message":"Based on [1], the deletion of an external port will follow the same path. Because the OVN QoS rule deletion in \"_update_port_qos_rules\" is error resilient (if the QoS rule does not exist, the process continues), we don\u0027t need to handle the external port deletion in a different manner.\n\n[1]https://review.opendev.org/c/openstack/neutron/+/780054/2/neutron/plugins/ml2/drivers/ovn/mech_driver/ovsdb/ovn_client.py#600","commit_id":"d4815fcdd18e7a4270d8eab760dabebfeed3bb5e"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"2f9387db5abc38c7cbc78645f84c751936529746","unresolved":false,"context_lines":[{"line_number":319,"context_line":"        port.qos_policy_id \u003d self.qos_policies[0].id"},{"line_number":320,"context_line":"        self.qos_driver.update_port(mock.ANY, port, original_port,"},{"line_number":321,"context_line":"                                    port_type\u003dovn_const.LSP_TYPE_EXTERNAL)"},{"line_number":322,"context_line":"        self.mock_rules.assert_not_called()"},{"line_number":323,"context_line":""},{"line_number":324,"context_line":"    def test_delete_port(self):"},{"line_number":325,"context_line":"        self.mock_rules.reset_mock()"}],"source_content_type":"text/x-python","patch_set":2,"id":"b10dba4f_52413133","line":322,"in_reply_to":"d411f578_fee0e2cf","updated":"2021-03-31 09:40:31.000000000","message":"Done","commit_id":"d4815fcdd18e7a4270d8eab760dabebfeed3bb5e"}]}
