)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"99324e2fc76fd70d55cb2b411cdbccf3c3df1ff3","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Sync deleted SmartNIC ports on Neutron OVS agent restart"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"On Neutron OVS agent restart, remove the ports that was deleted"},{"line_number":10,"context_line":"from the server and yet present in OVS db."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Change-Id: If166560193c73bf674537ef076f2f38847fbf2c5"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"3fa7e38b_15af779d","line":9,"updated":"2019-12-09 10:10:59.000000000","message":"On agent resync. This is happening not only when the agent restarts, but when a new bridge is created.","commit_id":"b91f9e13377a36d72d4cf8f3dda945903c9abdf7"},{"author":{"_account_id":22948,"name":"Hamdy Khader","email":"hamdyk@mellanox.com","username":"hamdyk"},"change_message_id":"548643801592c0ab02ba7e5caf9e881eef5854c6","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Sync deleted SmartNIC ports on Neutron OVS agent restart"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"On Neutron OVS agent restart, remove the ports that was deleted"},{"line_number":10,"context_line":"from the server and yet present in OVS db."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Change-Id: If166560193c73bf674537ef076f2f38847fbf2c5"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"3fa7e38b_369dc756","line":9,"in_reply_to":"3fa7e38b_15af779d","updated":"2019-12-10 12:34:38.000000000","message":"Done","commit_id":"b91f9e13377a36d72d4cf8f3dda945903c9abdf7"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"99324e2fc76fd70d55cb2b411cdbccf3c3df1ff3","unresolved":false,"context_lines":[{"line_number":10,"context_line":"from the server and yet present in OVS db."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Change-Id: If166560193c73bf674537ef076f2f38847fbf2c5"},{"line_number":13,"context_line":"Closes-Bug: #1855260"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"3fa7e38b_559e4f69","line":13,"updated":"2019-12-09 10:10:59.000000000","message":"Because you have a follow up patch related to the same bug, this should be Partial-Bug","commit_id":"b91f9e13377a36d72d4cf8f3dda945903c9abdf7"},{"author":{"_account_id":22948,"name":"Hamdy Khader","email":"hamdyk@mellanox.com","username":"hamdyk"},"change_message_id":"548643801592c0ab02ba7e5caf9e881eef5854c6","unresolved":false,"context_lines":[{"line_number":10,"context_line":"from the server and yet present in OVS db."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Change-Id: If166560193c73bf674537ef076f2f38847fbf2c5"},{"line_number":13,"context_line":"Closes-Bug: #1855260"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"3fa7e38b_96b59bd2","line":13,"in_reply_to":"3fa7e38b_559e4f69","updated":"2019-12-10 12:34:38.000000000","message":"Done","commit_id":"b91f9e13377a36d72d4cf8f3dda945903c9abdf7"}],"neutron/plugins/ml2/drivers/openvswitch/agent/ovs_neutron_agent.py":[{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"7e413cfca5701e5b2b077004927ca9755ca66c38","unresolved":false,"context_lines":[{"line_number":512,"context_line":"            return"},{"line_number":513,"context_line":"        for port_binding in port_data.get(\u0027bindings\u0027, []):"},{"line_number":514,"context_line":"            if port_binding[\u0027vnic_type\u0027] \u003d\u003d portbindings.VNIC_SMARTNIC:"},{"line_number":515,"context_line":"                if (not port_binding[\u0027host\u0027] and port_binding[\u0027vif_type\u0027] \u003d\u003d"},{"line_number":516,"context_line":"                        portbindings.VIF_TYPE_UNBOUND):"},{"line_number":517,"context_line":"                    ovs_port \u003d self.int_br.get_vif_port_by_id(port[\u0027id\u0027])"},{"line_number":518,"context_line":"                    if ovs_port:"},{"line_number":519,"context_line":"                        LOG.debug(\u0027Removing Smart NIC port: %s\u0027, port[\u0027id\u0027])"}],"source_content_type":"text/x-python","patch_set":1,"id":"3fa7e38b_bae559dd","line":516,"range":{"start_line":515,"start_character":20,"end_line":516,"end_character":53},"updated":"2019-12-05 12:44:13.000000000","message":"Why do you need both conditions? Why not using only VIF_TYPE_UNBOUND?","commit_id":"a6e37d2c826ab2fc177711a43ecfb3b9d184d250"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"7e413cfca5701e5b2b077004927ca9755ca66c38","unresolved":false,"context_lines":[{"line_number":516,"context_line":"                        portbindings.VIF_TYPE_UNBOUND):"},{"line_number":517,"context_line":"                    ovs_port \u003d self.int_br.get_vif_port_by_id(port[\u0027id\u0027])"},{"line_number":518,"context_line":"                    if ovs_port:"},{"line_number":519,"context_line":"                        LOG.debug(\u0027Removing Smart NIC port: %s\u0027, port[\u0027id\u0027])"},{"line_number":520,"context_line":"                        self.updated_smartnic_ports.append({"},{"line_number":521,"context_line":"                            \u0027mac\u0027: port_data[\u0027mac_address\u0027],"},{"line_number":522,"context_line":"                            \u0027vm_uuid\u0027: port_data[\u0027device_id\u0027],"}],"source_content_type":"text/x-python","patch_set":1,"id":"3fa7e38b_ba331961","line":519,"range":{"start_line":519,"start_character":24,"end_line":519,"end_character":76},"updated":"2019-12-05 12:44:13.000000000","message":"Hmmm, here you are not removing the port but adding it to the processing list. IMO, you can add this info message but in \"process_smartnic_ports\".","commit_id":"a6e37d2c826ab2fc177711a43ecfb3b9d184d250"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"7e413cfca5701e5b2b077004927ca9755ca66c38","unresolved":false,"context_lines":[{"line_number":517,"context_line":"                    ovs_port \u003d self.int_br.get_vif_port_by_id(port[\u0027id\u0027])"},{"line_number":518,"context_line":"                    if ovs_port:"},{"line_number":519,"context_line":"                        LOG.debug(\u0027Removing Smart NIC port: %s\u0027, port[\u0027id\u0027])"},{"line_number":520,"context_line":"                        self.updated_smartnic_ports.append({"},{"line_number":521,"context_line":"                            \u0027mac\u0027: port_data[\u0027mac_address\u0027],"},{"line_number":522,"context_line":"                            \u0027vm_uuid\u0027: port_data[\u0027device_id\u0027],"},{"line_number":523,"context_line":"                            \u0027iface_name\u0027: ovs_port.port_name,"},{"line_number":524,"context_line":"                            \u0027iface_id\u0027: port_data[\u0027id\u0027],"},{"line_number":525,"context_line":"                            \u0027vif_type\u0027: port_binding[\u0027vif_type\u0027]})"},{"line_number":526,"context_line":"                elif port_binding[\u0027host\u0027] \u003d\u003d self.conf.host:"},{"line_number":527,"context_line":"                    self._add_port_to_updated_smartnic_ports(port_data,"},{"line_number":528,"context_line":"                                                             port_binding)"}],"source_content_type":"text/x-python","patch_set":1,"id":"3fa7e38b_5af7858d","line":525,"range":{"start_line":520,"start_character":24,"end_line":525,"end_character":66},"updated":"2019-12-05 12:44:13.000000000","message":"Why don\u0027t you use \"_add_port_to_updated_smartnic_ports\"? For example, you can add \"iface_name\" as a keyword arg; if present, use it instead of local_kink info.","commit_id":"a6e37d2c826ab2fc177711a43ecfb3b9d184d250"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"77ebe5cbd6752714deb9f0f5bd634b59165cebca","unresolved":false,"context_lines":[{"line_number":643,"context_line":"    def process_smartnic_ports(self):"},{"line_number":644,"context_line":"        smartnic_ports \u003d self.plugin_rpc.get_ports_by_vnic_type_and_host("},{"line_number":645,"context_line":"            self.context, portbindings.VNIC_SMARTNIC, self.conf.host)"},{"line_number":646,"context_line":"        ports \u003d self.int_br.get_vif_port_set()"},{"line_number":647,"context_line":""},{"line_number":648,"context_line":"        def _process_added_ports(smartnic_ports, ports):"},{"line_number":649,"context_line":"            for smartnic_port in smartnic_ports:"}],"source_content_type":"text/x-python","patch_set":2,"id":"3fa7e38b_71c93f58","line":646,"range":{"start_line":646,"start_character":8,"end_line":646,"end_character":13},"updated":"2019-12-05 19:34:12.000000000","message":"This really is port IDs, wonder whether we should rename it while this is being fixed.","commit_id":"7245502abf8564285b7be3ee33ee20031bdfa5b6"},{"author":{"_account_id":22948,"name":"Hamdy Khader","email":"hamdyk@mellanox.com","username":"hamdyk"},"change_message_id":"f80c2df60238af3bf160043c913523a0a7f83cbe","unresolved":false,"context_lines":[{"line_number":643,"context_line":"    def process_smartnic_ports(self):"},{"line_number":644,"context_line":"        smartnic_ports \u003d self.plugin_rpc.get_ports_by_vnic_type_and_host("},{"line_number":645,"context_line":"            self.context, portbindings.VNIC_SMARTNIC, self.conf.host)"},{"line_number":646,"context_line":"        ports \u003d self.int_br.get_vif_port_set()"},{"line_number":647,"context_line":""},{"line_number":648,"context_line":"        def _process_added_ports(smartnic_ports, ports):"},{"line_number":649,"context_line":"            for smartnic_port in smartnic_ports:"}],"source_content_type":"text/x-python","patch_set":2,"id":"3fa7e38b_87da641a","line":646,"range":{"start_line":646,"start_character":8,"end_line":646,"end_character":13},"in_reply_to":"3fa7e38b_71c93f58","updated":"2019-12-08 14:23:02.000000000","message":"will change it since we are hovering around it.","commit_id":"7245502abf8564285b7be3ee33ee20031bdfa5b6"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"77ebe5cbd6752714deb9f0f5bd634b59165cebca","unresolved":false,"context_lines":[{"line_number":656,"context_line":"        def _process_removed_ports(smartnic_ports, ports):"},{"line_number":657,"context_line":"            smartnic_port_ids \u003d set(smartnic_port[\u0027id\u0027]"},{"line_number":658,"context_line":"                                    for smartnic_port in smartnic_ports)"},{"line_number":659,"context_line":"            ports_to_remove \u003d ports - smartnic_port_ids"},{"line_number":660,"context_line":"            for port_id in ports_to_remove:"},{"line_number":661,"context_line":"                port \u003d self.int_br.get_vif_port_by_id(port_id)"},{"line_number":662,"context_line":"                self.int_br.delete_port(port.port_name)"}],"source_content_type":"text/x-python","patch_set":2,"id":"3fa7e38b_516e8364","line":659,"updated":"2019-12-05 19:34:12.000000000","message":"Too bad we didn\u0027t just need the IDs when adding,\n(ports_to_add - smartnic_port_ids - ports) would have made it easy...","commit_id":"7245502abf8564285b7be3ee33ee20031bdfa5b6"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"99324e2fc76fd70d55cb2b411cdbccf3c3df1ff3","unresolved":false,"context_lines":[{"line_number":646,"context_line":"        port_ids \u003d self.int_br.get_vif_port_set()"},{"line_number":647,"context_line":""},{"line_number":648,"context_line":"        def _process_added_ports(smartnic_ports, port_ids):"},{"line_number":649,"context_line":"            for smartnic_port in smartnic_ports:"},{"line_number":650,"context_line":"                if smartnic_port[\u0027id\u0027] not in port_ids:"},{"line_number":651,"context_line":"                    self._add_port_to_updated_smartnic_ports("},{"line_number":652,"context_line":"                        smartnic_port,"}],"source_content_type":"text/x-python","patch_set":4,"id":"3fa7e38b_1508d7d5","line":649,"updated":"2019-12-09 10:10:59.000000000","message":"Something similar to Brian\u0027s comment in PS2. You can make smartnic_ports a set in L644.\n\nHere you can do:\n  for port in smartnic_port - port_ids:\n    self._add_port_to_updated_smartnic_ports(...)","commit_id":"b91f9e13377a36d72d4cf8f3dda945903c9abdf7"},{"author":{"_account_id":22948,"name":"Hamdy Khader","email":"hamdyk@mellanox.com","username":"hamdyk"},"change_message_id":"548643801592c0ab02ba7e5caf9e881eef5854c6","unresolved":false,"context_lines":[{"line_number":646,"context_line":"        port_ids \u003d self.int_br.get_vif_port_set()"},{"line_number":647,"context_line":""},{"line_number":648,"context_line":"        def _process_added_ports(smartnic_ports, port_ids):"},{"line_number":649,"context_line":"            for smartnic_port in smartnic_ports:"},{"line_number":650,"context_line":"                if smartnic_port[\u0027id\u0027] not in port_ids:"},{"line_number":651,"context_line":"                    self._add_port_to_updated_smartnic_ports("},{"line_number":652,"context_line":"                        smartnic_port,"}],"source_content_type":"text/x-python","patch_set":4,"id":"3fa7e38b_056e5763","line":649,"in_reply_to":"3fa7e38b_1508d7d5","updated":"2019-12-10 12:34:38.000000000","message":"Done","commit_id":"b91f9e13377a36d72d4cf8f3dda945903c9abdf7"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"99324e2fc76fd70d55cb2b411cdbccf3c3df1ff3","unresolved":false,"context_lines":[{"line_number":655,"context_line":""},{"line_number":656,"context_line":"        def _process_removed_ports(smartnic_ports, port_ids):"},{"line_number":657,"context_line":"            smartnic_port_ids \u003d set(smartnic_port[\u0027id\u0027]"},{"line_number":658,"context_line":"                                    for smartnic_port in smartnic_ports)"},{"line_number":659,"context_line":"            ports_to_remove \u003d port_ids - smartnic_port_ids"},{"line_number":660,"context_line":"            for port_id in ports_to_remove:"},{"line_number":661,"context_line":"                port \u003d self.int_br.get_vif_port_by_id(port_id)"}],"source_content_type":"text/x-python","patch_set":4,"id":"3fa7e38b_f5f2dbe2","line":658,"updated":"2019-12-09 10:10:59.000000000","message":"As commented before, you can do this in L644","commit_id":"b91f9e13377a36d72d4cf8f3dda945903c9abdf7"},{"author":{"_account_id":22948,"name":"Hamdy Khader","email":"hamdyk@mellanox.com","username":"hamdyk"},"change_message_id":"548643801592c0ab02ba7e5caf9e881eef5854c6","unresolved":false,"context_lines":[{"line_number":655,"context_line":""},{"line_number":656,"context_line":"        def _process_removed_ports(smartnic_ports, port_ids):"},{"line_number":657,"context_line":"            smartnic_port_ids \u003d set(smartnic_port[\u0027id\u0027]"},{"line_number":658,"context_line":"                                    for smartnic_port in smartnic_ports)"},{"line_number":659,"context_line":"            ports_to_remove \u003d port_ids - smartnic_port_ids"},{"line_number":660,"context_line":"            for port_id in ports_to_remove:"},{"line_number":661,"context_line":"                port \u003d self.int_br.get_vif_port_by_id(port_id)"}],"source_content_type":"text/x-python","patch_set":4,"id":"3fa7e38b_a58c232e","line":658,"in_reply_to":"3fa7e38b_f5f2dbe2","updated":"2019-12-10 12:34:38.000000000","message":"Done","commit_id":"b91f9e13377a36d72d4cf8f3dda945903c9abdf7"},{"author":{"_account_id":28714,"name":"Adrian Chiris","email":"adrianc@nvidia.com","username":"adrianc"},"change_message_id":"b8bbcc3b349648509a277e4922bfd244e6cdf5b4","unresolved":false,"context_lines":[{"line_number":659,"context_line":"            ports_to_remove \u003d port_ids - smartnic_port_ids"},{"line_number":660,"context_line":"            for port_id in ports_to_remove:"},{"line_number":661,"context_line":"                port \u003d self.int_br.get_vif_port_by_id(port_id)"},{"line_number":662,"context_line":"                self.int_br.delete_port(port.port_name)"},{"line_number":663,"context_line":""},{"line_number":664,"context_line":"        _process_added_ports(smartnic_ports, port_ids)"},{"line_number":665,"context_line":"        _process_removed_ports(smartnic_ports, port_ids)"}],"source_content_type":"text/x-python","patch_set":4,"id":"3fa7e38b_b56d4368","line":662,"range":{"start_line":662,"start_character":17,"end_line":662,"end_character":55},"updated":"2019-12-09 09:44:39.000000000","message":"so, here you are deleting the port using self.int_br.delete_port() and at L#541 (treat_smartnic_port) you are invoking os_vif.unplug ?\n\nthis seems confusing to me, i prefer to be consistent and have one path to remove ports from the bridge.","commit_id":"b91f9e13377a36d72d4cf8f3dda945903c9abdf7"},{"author":{"_account_id":28714,"name":"Adrian Chiris","email":"adrianc@nvidia.com","username":"adrianc"},"change_message_id":"37ae19dafa87953f8e6752899a0b1e1b828722cc","unresolved":false,"context_lines":[{"line_number":674,"context_line":"            for port_id in removed_port_ids:"},{"line_number":675,"context_line":"                port \u003d self.int_br.get_vif_port_by_id(port_id)"},{"line_number":676,"context_line":"                if port:"},{"line_number":677,"context_line":"                    self.int_br.delete_port(port.port_name)"},{"line_number":678,"context_line":""},{"line_number":679,"context_line":"        _process_added_ports(smartnic_ports_map, smartnic_port_ids - port_ids)"},{"line_number":680,"context_line":"        _process_removed_ports(port_ids - smartnic_port_ids)"}],"source_content_type":"text/x-python","patch_set":6,"id":"3fa7e38b_1e2a5a7d","line":677,"range":{"start_line":677,"start_character":20,"end_line":677,"end_character":59},"updated":"2019-12-29 11:06:30.000000000","message":"In [1] we use os-vif to plug and unplug smartnic ports.\ni think we should do the same here for consistency.\n\nalso _process_added_ports() adds an entry to self.updated_smartnic_ports which is processed later (by treat_smartnic_port()) in the the main loop.\n\ncan we do the same for removed ports ?\n\n[1]https://github.com/openstack/neutron/blob/68f89c79c803a3c9420e2a8df7a56499e88091ad/neutron/plugins/ml2/drivers/openvswitch/agent/ovs_neutron_agent.py#L561","commit_id":"906a1998259f39e13da08d4cc68f2ef7ba201061"}],"neutron/tests/unit/plugins/ml2/drivers/openvswitch/agent/test_ovs_neutron_agent.py":[{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"99324e2fc76fd70d55cb2b411cdbccf3c3df1ff3","unresolved":false,"context_lines":[{"line_number":2601,"context_line":"    def test_process_smartnic_ports_remove(self):"},{"line_number":2602,"context_line":"        port_id_int_br \u003d \"407a79e0-e0be-4b7d-92a6-513b2161011a\""},{"line_number":2603,"context_line":"        self.agent.int_br \u003d mock.Mock()"},{"line_number":2604,"context_line":"        self.agent.int_br.get_vif_port_set.return_value \u003d {port_id_int_br}"},{"line_number":2605,"context_line":"        ovs_port \u003d mock.Mock()"},{"line_number":2606,"context_line":"        ovs_port.port_name \u003d \"port-name\""},{"line_number":2607,"context_line":"        self.agent.int_br.get_vif_port_by_id.return_value \u003d ovs_port"}],"source_content_type":"text/x-python","patch_set":4,"id":"3fa7e38b_15e3f7a1","line":2604,"range":{"start_line":2604,"start_character":26,"end_line":2604,"end_character":42},"updated":"2019-12-09 10:10:59.000000000","message":"Why don\u0027t you mock this method only? Same as you do with \"get_ports_by_vnic_type_and_host\".","commit_id":"b91f9e13377a36d72d4cf8f3dda945903c9abdf7"},{"author":{"_account_id":22948,"name":"Hamdy Khader","email":"hamdyk@mellanox.com","username":"hamdyk"},"change_message_id":"548643801592c0ab02ba7e5caf9e881eef5854c6","unresolved":false,"context_lines":[{"line_number":2601,"context_line":"    def test_process_smartnic_ports_remove(self):"},{"line_number":2602,"context_line":"        port_id_int_br \u003d \"407a79e0-e0be-4b7d-92a6-513b2161011a\""},{"line_number":2603,"context_line":"        self.agent.int_br \u003d mock.Mock()"},{"line_number":2604,"context_line":"        self.agent.int_br.get_vif_port_set.return_value \u003d {port_id_int_br}"},{"line_number":2605,"context_line":"        ovs_port \u003d mock.Mock()"},{"line_number":2606,"context_line":"        ovs_port.port_name \u003d \"port-name\""},{"line_number":2607,"context_line":"        self.agent.int_br.get_vif_port_by_id.return_value \u003d ovs_port"}],"source_content_type":"text/x-python","patch_set":4,"id":"3fa7e38b_c0302da1","line":2604,"range":{"start_line":2604,"start_character":26,"end_line":2604,"end_character":42},"in_reply_to":"3fa7e38b_15e3f7a1","updated":"2019-12-10 12:34:38.000000000","message":"Done","commit_id":"b91f9e13377a36d72d4cf8f3dda945903c9abdf7"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"99324e2fc76fd70d55cb2b411cdbccf3c3df1ff3","unresolved":false,"context_lines":[{"line_number":2608,"context_line":""},{"line_number":2609,"context_line":"        with mock.patch.object(self.agent.plugin_rpc,"},{"line_number":2610,"context_line":"                               \"get_ports_by_vnic_type_and_host\","},{"line_number":2611,"context_line":"                               return_value\u003d[]):"},{"line_number":2612,"context_line":"            self.agent.process_smartnic_ports()"},{"line_number":2613,"context_line":"            self.assertEqual([], self.agent.updated_smartnic_ports)"},{"line_number":2614,"context_line":"            self.agent.int_br.delete_port.assert_called_with("}],"source_content_type":"text/x-python","patch_set":4,"id":"3fa7e38b_d500ff37","line":2611,"range":{"start_line":2611,"start_character":44,"end_line":2611,"end_character":46},"updated":"2019-12-09 10:10:59.000000000","message":"In order to better test the logic, you can return several ports in \"get_vif_port_set\" and \"get_ports_by_vnic_type_and_host\", not just one and [].","commit_id":"b91f9e13377a36d72d4cf8f3dda945903c9abdf7"},{"author":{"_account_id":22948,"name":"Hamdy Khader","email":"hamdyk@mellanox.com","username":"hamdyk"},"change_message_id":"548643801592c0ab02ba7e5caf9e881eef5854c6","unresolved":false,"context_lines":[{"line_number":2608,"context_line":""},{"line_number":2609,"context_line":"        with mock.patch.object(self.agent.plugin_rpc,"},{"line_number":2610,"context_line":"                               \"get_ports_by_vnic_type_and_host\","},{"line_number":2611,"context_line":"                               return_value\u003d[]):"},{"line_number":2612,"context_line":"            self.agent.process_smartnic_ports()"},{"line_number":2613,"context_line":"            self.assertEqual([], self.agent.updated_smartnic_ports)"},{"line_number":2614,"context_line":"            self.agent.int_br.delete_port.assert_called_with("}],"source_content_type":"text/x-python","patch_set":4,"id":"3fa7e38b_a02bb130","line":2611,"range":{"start_line":2611,"start_character":44,"end_line":2611,"end_character":46},"in_reply_to":"3fa7e38b_d500ff37","updated":"2019-12-10 12:34:38.000000000","message":"Done","commit_id":"b91f9e13377a36d72d4cf8f3dda945903c9abdf7"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"06b2b9277631b6853c3c584a0c92e72eb61695a2","unresolved":false,"context_lines":[{"line_number":2635,"context_line":"                                  return_value\u003dport_ids_int_br),\\"},{"line_number":2636,"context_line":"                mock.patch.object(self.agent.int_br,"},{"line_number":2637,"context_line":"                                  \"get_vif_port_by_id\","},{"line_number":2638,"context_line":"                                  return_value\u003dovs_port), \\"},{"line_number":2639,"context_line":"                mock.patch.object(self.agent.int_br,"},{"line_number":2640,"context_line":"                                  \"delete_port\") as mock_del:"},{"line_number":2641,"context_line":"            self.agent.process_smartnic_ports()"}],"source_content_type":"text/x-python","patch_set":5,"id":"3fa7e38b_15c09a2a","line":2638,"updated":"2019-12-12 14:50:41.000000000","message":"maybe You could also ensure that this mock was called with \"407a79e0-e0be-4b7d-92a6-513b2161011a\" ?","commit_id":"3ff208bb7f56dbc26f7101b61386f07c98f29785"},{"author":{"_account_id":25241,"name":"waleed mousa","email":"waleedm@nvidia.com","username":"waleedm"},"change_message_id":"4ac851d4ecdde1b3de381fbd8c52761b84e8dc35","unresolved":false,"context_lines":[{"line_number":2635,"context_line":"                                  return_value\u003dport_ids_int_br),\\"},{"line_number":2636,"context_line":"                mock.patch.object(self.agent.int_br,"},{"line_number":2637,"context_line":"                                  \"get_vif_port_by_id\","},{"line_number":2638,"context_line":"                                  return_value\u003dovs_port), \\"},{"line_number":2639,"context_line":"                mock.patch.object(self.agent.int_br,"},{"line_number":2640,"context_line":"                                  \"delete_port\") as mock_del:"},{"line_number":2641,"context_line":"            self.agent.process_smartnic_ports()"}],"source_content_type":"text/x-python","patch_set":5,"id":"3fa7e38b_cb89e6c7","line":2638,"in_reply_to":"3fa7e38b_15c09a2a","updated":"2019-12-15 11:01:20.000000000","message":"Done","commit_id":"3ff208bb7f56dbc26f7101b61386f07c98f29785"}]}
