)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"c1b2ee2938c73b48a401fdbcc8eea4cae839c0c4","unresolved":false,"context_lines":[{"line_number":13,"context_line":"to port_two instead of adding port_two to list. So after the loop,"},{"line_number":14,"context_line":"only port_two is left in events [\u0027re_added\u0027]."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"https://github.com/openstack/neutron/blob/master/neutron/plugins/ml2/drivers/openvswitch/agent/ovs_neutron_agent.py#L1630"},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"Change-Id: If8edd29dd741f1688ffcac341fd58173539ba000"},{"line_number":19,"context_line":"Closes-Bug: #1864630"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"1fa4df85_47f053ca","line":16,"updated":"2020-02-26 20:48:36.000000000","message":"You shouldn\u0027t use links to master branch here as it will soon be out of date and will point to something not related to this issue in the file.\nPlease maybe remove this link from here.","commit_id":"e1247df748528480a7f195addbfccc24b5200574"},{"author":{"_account_id":31662,"name":"Cong Nguyen Thanh","email":"ntcong1705@gmail.com","username":"congnt95"},"change_message_id":"4ab8eed4e2168e285fbe8443ac6139bf3dd8fdd0","unresolved":false,"context_lines":[{"line_number":13,"context_line":"to port_two instead of adding port_two to list. So after the loop,"},{"line_number":14,"context_line":"only port_two is left in events [\u0027re_added\u0027]."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"https://github.com/openstack/neutron/blob/master/neutron/plugins/ml2/drivers/openvswitch/agent/ovs_neutron_agent.py#L1630"},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"Change-Id: If8edd29dd741f1688ffcac341fd58173539ba000"},{"line_number":19,"context_line":"Closes-Bug: #1864630"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"1fa4df85_b4636eb1","line":16,"in_reply_to":"1fa4df85_47f053ca","updated":"2020-02-27 08:45:34.000000000","message":"Done","commit_id":"e1247df748528480a7f195addbfccc24b5200574"}],"neutron/plugins/ml2/drivers/openvswitch/agent/ovs_neutron_agent.py":[{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"c1b2ee2938c73b48a401fdbcc8eea4cae839c0c4","unresolved":false,"context_lines":[{"line_number":1634,"context_line":"                                          if e[\u0027name\u0027] \u003d\u003d p]"},{"line_number":1635,"context_line":"                else:"},{"line_number":1636,"context_line":"                    events[\u0027re_added\u0027].extend([e for e in events[\u0027removed\u0027]"},{"line_number":1637,"context_line":"                                              if e[\u0027name\u0027] \u003d\u003d p])"},{"line_number":1638,"context_line":"                events[\u0027removed\u0027] \u003d [e for e in events[\u0027removed\u0027]"},{"line_number":1639,"context_line":"                                     if e[\u0027name\u0027] !\u003d p]"},{"line_number":1640,"context_line":"            else:"}],"source_content_type":"text/x-python","patch_set":1,"id":"1fa4df85_07bc9bda","line":1637,"updated":"2020-02-26 20:48:36.000000000","message":"Can You maybe add new UT or change existing one which is in neutron/tests/unit/plugins/ml2/drivers/openvswitch/agent/test_ovs_neutron_agent.py (test test_process_ports_events_port_removed_and_added) to cover such case?","commit_id":"e1247df748528480a7f195addbfccc24b5200574"},{"author":{"_account_id":31662,"name":"Cong Nguyen Thanh","email":"ntcong1705@gmail.com","username":"congnt95"},"change_message_id":"4ab8eed4e2168e285fbe8443ac6139bf3dd8fdd0","unresolved":false,"context_lines":[{"line_number":1634,"context_line":"                                          if e[\u0027name\u0027] \u003d\u003d p]"},{"line_number":1635,"context_line":"                else:"},{"line_number":1636,"context_line":"                    events[\u0027re_added\u0027].extend([e for e in events[\u0027removed\u0027]"},{"line_number":1637,"context_line":"                                              if e[\u0027name\u0027] \u003d\u003d p])"},{"line_number":1638,"context_line":"                events[\u0027removed\u0027] \u003d [e for e in events[\u0027removed\u0027]"},{"line_number":1639,"context_line":"                                     if e[\u0027name\u0027] !\u003d p]"},{"line_number":1640,"context_line":"            else:"}],"source_content_type":"text/x-python","patch_set":1,"id":"1fa4df85_b4084ed9","line":1637,"in_reply_to":"1fa4df85_07bc9bda","updated":"2020-02-27 08:45:34.000000000","message":"Done","commit_id":"e1247df748528480a7f195addbfccc24b5200574"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"a6b396df5a4d4736f179041186871a14c3a6a1bc","unresolved":false,"context_lines":[{"line_number":1627,"context_line":"        updated_ports.update({p[\u0027name\u0027] for p in events[\u0027modified\u0027]})"},{"line_number":1628,"context_line":""},{"line_number":1629,"context_line":"        ports_re_added \u003d added_ports \u0026 removed_ports"},{"line_number":1630,"context_line":"        for p in ports_re_added:"},{"line_number":1631,"context_line":"            if ovs_lib.BaseOVS().port_exists(p):"},{"line_number":1632,"context_line":"                if \u0027re_added\u0027 not in events:"},{"line_number":1633,"context_line":"                    events[\u0027re_added\u0027] \u003d [e for e in events[\u0027removed\u0027]"}],"source_content_type":"text/x-python","patch_set":3,"id":"1fa4df85_7acf1db0","line":1630,"updated":"2020-02-27 08:15:28.000000000","message":"Thank you very much for catching this bug. I can confirm this is happening.\n\nThis way of updating the event dictionary is not very efficient.\n\nI suggest the following one, to avoid re-creating in every loop the \u0027removed\u0027 and \u0027added\u0027 keys:\n\n    ports_re_added \u003d added_ports \u0026 removed_ports\n    ports_re_added \u003d [p for p in ports_re_added if\n                      ovs_lib.BaseOVS().port_exists(p)]\n    events[\u0027re_added\u0027] \u003d [e for e in events[\u0027removed\u0027]\n                          if e[\u0027name\u0027] in ports_re_added]\n    events[\u0027removed\u0027] \u003d [e for e in events[\u0027removed\u0027] if e[\u0027name\u0027]\n                         not in ports_re_added]\n    ports_removed \u003d [p[\u0027name\u0027] for p in events[\u0027removed\u0027]]\n    events[\u0027added\u0027] \u003d [e for e in events[\u0027added\u0027] if e[\u0027name\u0027] not in\n                       ports_removed]","commit_id":"8d2ee6a0b804332f4c2004be62a441b2ea69341d"},{"author":{"_account_id":31662,"name":"Cong Nguyen Thanh","email":"ntcong1705@gmail.com","username":"congnt95"},"change_message_id":"8a1aadfc117e617f6bfb7343c16ea5544535b917","unresolved":false,"context_lines":[{"line_number":1627,"context_line":"        updated_ports.update({p[\u0027name\u0027] for p in events[\u0027modified\u0027]})"},{"line_number":1628,"context_line":""},{"line_number":1629,"context_line":"        ports_re_added \u003d added_ports \u0026 removed_ports"},{"line_number":1630,"context_line":"        for p in ports_re_added:"},{"line_number":1631,"context_line":"            if ovs_lib.BaseOVS().port_exists(p):"},{"line_number":1632,"context_line":"                if \u0027re_added\u0027 not in events:"},{"line_number":1633,"context_line":"                    events[\u0027re_added\u0027] \u003d [e for e in events[\u0027removed\u0027]"}],"source_content_type":"text/x-python","patch_set":3,"id":"1fa4df85_faeeadb2","line":1630,"in_reply_to":"1fa4df85_7acf1db0","updated":"2020-02-27 08:50:08.000000000","message":"Done","commit_id":"8d2ee6a0b804332f4c2004be62a441b2ea69341d"}],"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":"a6b396df5a4d4736f179041186871a14c3a6a1bc","unresolved":false,"context_lines":[{"line_number":491,"context_line":""},{"line_number":492,"context_line":"        # port was removed and then added"},{"line_number":493,"context_line":"        expected_ports \u003d ovs_agent.PortInfo("},{"line_number":494,"context_line":"                                        added\u003d{port_id_one, port_id_two},"},{"line_number":495,"context_line":"                                        current\u003d{port_id_one, port_id_two},"},{"line_number":496,"context_line":"                                        re_added\u003d{port_id_one, port_id_two})"},{"line_number":497,"context_line":"        with mock.patch.object(ovs_lib.BaseOVS, \"port_exists\","}],"source_content_type":"text/x-python","patch_set":3,"id":"1fa4df85_bfc107e7","line":494,"updated":"2020-02-27 08:15:28.000000000","message":"Please, indent correctly this section.","commit_id":"8d2ee6a0b804332f4c2004be62a441b2ea69341d"},{"author":{"_account_id":31662,"name":"Cong Nguyen Thanh","email":"ntcong1705@gmail.com","username":"congnt95"},"change_message_id":"8a1aadfc117e617f6bfb7343c16ea5544535b917","unresolved":false,"context_lines":[{"line_number":491,"context_line":""},{"line_number":492,"context_line":"        # port was removed and then added"},{"line_number":493,"context_line":"        expected_ports \u003d ovs_agent.PortInfo("},{"line_number":494,"context_line":"                                        added\u003d{port_id_one, port_id_two},"},{"line_number":495,"context_line":"                                        current\u003d{port_id_one, port_id_two},"},{"line_number":496,"context_line":"                                        re_added\u003d{port_id_one, port_id_two})"},{"line_number":497,"context_line":"        with mock.patch.object(ovs_lib.BaseOVS, \"port_exists\","}],"source_content_type":"text/x-python","patch_set":3,"id":"1fa4df85_daf3b19d","line":494,"in_reply_to":"1fa4df85_bfc107e7","updated":"2020-02-27 08:50:08.000000000","message":"Done","commit_id":"8d2ee6a0b804332f4c2004be62a441b2ea69341d"}]}
