)]}'
{"neutron/agent/linux/ip_lib.py":[{"author":{"_account_id":9531,"name":"liuyulong","display_name":"LIU Yulong","email":"i@liuyulong.me","username":"LIU-Yulong"},"change_message_id":"cbc6f873ce432f4ec67db9cfbe65861927cbc703","unresolved":false,"context_lines":[{"line_number":1505,"context_line":"                cache_devices[device[\u0027index\u0027]] \u003d get_attr(device,"},{"line_number":1506,"context_line":"                                                          \u0027IFLA_IFNAME\u0027)"},{"line_number":1507,"context_line":"        pool \u003d eventlet.GreenPool(1)"},{"line_number":1508,"context_line":"        gt \u003d pool.spawn(read_ip_updates, _queue)"},{"line_number":1509,"context_line":"        event_started.send()"},{"line_number":1510,"context_line":"        while not event_stop.ready():"},{"line_number":1511,"context_line":"            eventlet.sleep(0)"}],"source_content_type":"text/x-python","patch_set":3,"id":"9fb8cfa7_262026f7","line":1508,"range":{"start_line":1508,"start_character":8,"end_line":1508,"end_character":10},"updated":"2019-06-13 15:04:28.000000000","message":"This is a bit blurry, so what about \"ip_updates_thread\" or \"read_ip_ipdates_thread\", or something similar?","commit_id":"7f0515fdefced5b982753905ae978216124381e1"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"a3e7dcf39d77232db70f3f5dda6cc1f0a94bc83c","unresolved":false,"context_lines":[{"line_number":1505,"context_line":"                cache_devices[device[\u0027index\u0027]] \u003d get_attr(device,"},{"line_number":1506,"context_line":"                                                          \u0027IFLA_IFNAME\u0027)"},{"line_number":1507,"context_line":"        pool \u003d eventlet.GreenPool(1)"},{"line_number":1508,"context_line":"        gt \u003d pool.spawn(read_ip_updates, _queue)"},{"line_number":1509,"context_line":"        event_started.send()"},{"line_number":1510,"context_line":"        while not event_stop.ready():"},{"line_number":1511,"context_line":"            eventlet.sleep(0)"}],"source_content_type":"text/x-python","patch_set":3,"id":"9fb8cfa7_302057ac","line":1508,"range":{"start_line":1508,"start_character":8,"end_line":1508,"end_character":10},"in_reply_to":"9fb8cfa7_262026f7","updated":"2019-06-13 16:19:14.000000000","message":"Done","commit_id":"7f0515fdefced5b982753905ae978216124381e1"},{"author":{"_account_id":21798,"name":"Bernard Cafarelli","email":"bcafarel@redhat.com","username":"bcafarel"},"change_message_id":"f954c9f58133e23e42cf0940352139b473d66e4c","unresolved":false,"context_lines":[{"line_number":1505,"context_line":"                cache_devices[device[\u0027index\u0027]] \u003d get_attr(device,"},{"line_number":1506,"context_line":"                                                          \u0027IFLA_IFNAME\u0027)"},{"line_number":1507,"context_line":"        pool \u003d eventlet.GreenPool(1)"},{"line_number":1508,"context_line":"        ip_updates_thread \u003d pool.spawn(read_ip_updates, _queue)"},{"line_number":1509,"context_line":"        event_started.send()"},{"line_number":1510,"context_line":"        while not event_stop.ready():"},{"line_number":1511,"context_line":"            eventlet.sleep(0)"}],"source_content_type":"text/x-python","patch_set":4,"id":"9fb8cfa7_00cda183","line":1508,"range":{"start_line":1508,"start_character":8,"end_line":1508,"end_character":25},"updated":"2019-06-16 11:39:24.000000000","message":"Maybe comment in code why we need to read in separate thread (something like your LP comment \"ip.get() is reading a bufferless socket\"). I would be lost without context","commit_id":"f206520a432b37b57ebf2f220a33f43b259c7f55"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"8e85a0bbcb8dd26251fc09f88da0f08c13c53664","unresolved":false,"context_lines":[{"line_number":1505,"context_line":"                cache_devices[device[\u0027index\u0027]] \u003d get_attr(device,"},{"line_number":1506,"context_line":"                                                          \u0027IFLA_IFNAME\u0027)"},{"line_number":1507,"context_line":"        pool \u003d eventlet.GreenPool(1)"},{"line_number":1508,"context_line":"        ip_updates_thread \u003d pool.spawn(read_ip_updates, _queue)"},{"line_number":1509,"context_line":"        event_started.send()"},{"line_number":1510,"context_line":"        while not event_stop.ready():"},{"line_number":1511,"context_line":"            eventlet.sleep(0)"}],"source_content_type":"text/x-python","patch_set":4,"id":"9fb8cfa7_13908f4e","line":1508,"range":{"start_line":1508,"start_character":8,"end_line":1508,"end_character":25},"in_reply_to":"9fb8cfa7_00cda183","updated":"2019-06-17 12:58:28.000000000","message":"I\u0027ll comment this in the function \"read_ip_updates\", thanks!","commit_id":"f206520a432b37b57ebf2f220a33f43b259c7f55"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"e1f740c27608a17cf1330592dca26c8c6f2aaadb","unresolved":false,"context_lines":[{"line_number":1512,"context_line":"            try:"},{"line_number":1513,"context_line":"                ip_address \u003d _queue.get(timeout\u003d2)"},{"line_number":1514,"context_line":"            except eventlet.queue.Empty:"},{"line_number":1515,"context_line":"                ip_address \u003d None"},{"line_number":1516,"context_line":"            if not ip_address:"},{"line_number":1517,"context_line":"                continue"},{"line_number":1518,"context_line":"            if \u0027index\u0027 in ip_address and \u0027prefixlen\u0027 in ip_address:"},{"line_number":1519,"context_line":"                index \u003d ip_address[\u0027index\u0027]"}],"source_content_type":"text/x-python","patch_set":4,"id":"9fb8cfa7_36ea66ac","line":1516,"range":{"start_line":1515,"start_character":16,"end_line":1516,"end_character":30},"updated":"2019-06-17 08:26:14.000000000","message":"You can remove those 2 lines and do \"continue\" directly in \"except\" block, no?","commit_id":"f206520a432b37b57ebf2f220a33f43b259c7f55"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"8e85a0bbcb8dd26251fc09f88da0f08c13c53664","unresolved":false,"context_lines":[{"line_number":1512,"context_line":"            try:"},{"line_number":1513,"context_line":"                ip_address \u003d _queue.get(timeout\u003d2)"},{"line_number":1514,"context_line":"            except eventlet.queue.Empty:"},{"line_number":1515,"context_line":"                ip_address \u003d None"},{"line_number":1516,"context_line":"            if not ip_address:"},{"line_number":1517,"context_line":"                continue"},{"line_number":1518,"context_line":"            if \u0027index\u0027 in ip_address and \u0027prefixlen\u0027 in ip_address:"},{"line_number":1519,"context_line":"                index \u003d ip_address[\u0027index\u0027]"}],"source_content_type":"text/x-python","patch_set":4,"id":"9fb8cfa7_13cbaf72","line":1516,"range":{"start_line":1515,"start_character":16,"end_line":1516,"end_character":30},"in_reply_to":"9fb8cfa7_36ea66ac","updated":"2019-06-17 12:58:28.000000000","message":"You are right!","commit_id":"f206520a432b37b57ebf2f220a33f43b259c7f55"},{"author":{"_account_id":21798,"name":"Bernard Cafarelli","email":"bcafarel@redhat.com","username":"bcafarel"},"change_message_id":"f954c9f58133e23e42cf0940352139b473d66e4c","unresolved":false,"context_lines":[{"line_number":1525,"context_line":"                cache_devices[index] \u003d name"},{"line_number":1526,"context_line":"                queue.put(_parse_ip_address(ip_address, name))"},{"line_number":1527,"context_line":""},{"line_number":1528,"context_line":"        ip_updates_thread.kill()"},{"line_number":1529,"context_line":""},{"line_number":1530,"context_line":"    except OSError as e:"},{"line_number":1531,"context_line":"        if e.errno \u003d\u003d errno.ENOENT:"}],"source_content_type":"text/x-python","patch_set":4,"id":"9fb8cfa7_80a671c0","line":1528,"range":{"start_line":1528,"start_character":8,"end_line":1528,"end_character":32},"updated":"2019-06-16 11:39:24.000000000","message":"Should this be moved in finally block? aka can it happen to have a dangling thread on some exception","commit_id":"f206520a432b37b57ebf2f220a33f43b259c7f55"}],"neutron/tests/functional/agent/linux/bin/ip_monitor.py":[{"author":{"_account_id":9531,"name":"liuyulong","display_name":"LIU Yulong","email":"i@liuyulong.me","username":"LIU-Yulong"},"change_message_id":"cbc6f873ce432f4ec67db9cfbe65861927cbc703","unresolved":false,"context_lines":[{"line_number":45,"context_line":"    event_started.wait()"},{"line_number":46,"context_line":"    with open(temp_file, \u0027w\u0027) as f:"},{"line_number":47,"context_line":"        f.write(\u0027\u0027)"},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"    while not event_stop.ready():"},{"line_number":50,"context_line":"        eventlet.sleep(0)"},{"line_number":51,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":3,"id":"9fb8cfa7_c6290a37","line":48,"updated":"2019-06-13 15:04:28.000000000","message":"not necessary","commit_id":"7f0515fdefced5b982753905ae978216124381e1"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"a3e7dcf39d77232db70f3f5dda6cc1f0a94bc83c","unresolved":false,"context_lines":[{"line_number":45,"context_line":"    event_started.wait()"},{"line_number":46,"context_line":"    with open(temp_file, \u0027w\u0027) as f:"},{"line_number":47,"context_line":"        f.write(\u0027\u0027)"},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"    while not event_stop.ready():"},{"line_number":50,"context_line":"        eventlet.sleep(0)"},{"line_number":51,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":3,"id":"9fb8cfa7_101d1373","line":48,"in_reply_to":"9fb8cfa7_c6290a37","updated":"2019-06-13 16:19:14.000000000","message":"My bad, I was making some tests and I left this line","commit_id":"7f0515fdefced5b982753905ae978216124381e1"}],"neutron/tests/functional/agent/linux/test_ip_lib.py":[{"author":{"_account_id":9531,"name":"liuyulong","display_name":"LIU Yulong","email":"i@liuyulong.me","username":"LIU-Yulong"},"change_message_id":"cbc6f873ce432f4ec67db9cfbe65861927cbc703","unresolved":false,"context_lines":[{"line_number":788,"context_line":"            self.ip_wrapper.add_dummy(device)"},{"line_number":789,"context_line":"        utils.wait_until_true(lambda: self._read_file({}), timeout\u003d30)"},{"line_number":790,"context_line":"        ip_addresses \u003d ["},{"line_number":791,"context_line":"            {\u0027cidr\u0027: \u0027192.168.251.21/24\u0027, \u0027event\u0027: \u0027added\u0027,"},{"line_number":792,"context_line":"             \u0027name\u0027: self.devices[0]},"},{"line_number":793,"context_line":"            {\u0027cidr\u0027: \u0027192.168.251.22/24\u0027, \u0027event\u0027: \u0027added\u0027,"},{"line_number":794,"context_line":"             \u0027name\u0027: self.devices[1]}]"}],"source_content_type":"text/x-python","patch_set":3,"id":"9fb8cfa7_86a0f291","line":791,"range":{"start_line":791,"start_character":32,"end_line":791,"end_character":33},"updated":"2019-06-13 15:04:28.000000000","message":"Why this IP change is necessary? It has conflicts with other cases?","commit_id":"7f0515fdefced5b982753905ae978216124381e1"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"a3e7dcf39d77232db70f3f5dda6cc1f0a94bc83c","unresolved":false,"context_lines":[{"line_number":788,"context_line":"            self.ip_wrapper.add_dummy(device)"},{"line_number":789,"context_line":"        utils.wait_until_true(lambda: self._read_file({}), timeout\u003d30)"},{"line_number":790,"context_line":"        ip_addresses \u003d ["},{"line_number":791,"context_line":"            {\u0027cidr\u0027: \u0027192.168.251.21/24\u0027, \u0027event\u0027: \u0027added\u0027,"},{"line_number":792,"context_line":"             \u0027name\u0027: self.devices[0]},"},{"line_number":793,"context_line":"            {\u0027cidr\u0027: \u0027192.168.251.22/24\u0027, \u0027event\u0027: \u0027added\u0027,"},{"line_number":794,"context_line":"             \u0027name\u0027: self.devices[1]}]"}],"source_content_type":"text/x-python","patch_set":3,"id":"9fb8cfa7_1a4f7293","line":791,"range":{"start_line":791,"start_character":32,"end_line":791,"end_character":33},"in_reply_to":"9fb8cfa7_86a0f291","updated":"2019-06-13 16:19:14.000000000","message":"Yes, in the case of namespace\u003dNone, we can have conflicts with those IP addresses.","commit_id":"7f0515fdefced5b982753905ae978216124381e1"},{"author":{"_account_id":9531,"name":"liuyulong","display_name":"LIU Yulong","email":"i@liuyulong.me","username":"LIU-Yulong"},"change_message_id":"cbc6f873ce432f4ec67db9cfbe65861927cbc703","unresolved":false,"context_lines":[{"line_number":804,"context_line":"        self._check_read_file(ip_addresses)"},{"line_number":805,"context_line":""},{"line_number":806,"context_line":"    def test_add_multiple_ips(self):"},{"line_number":807,"context_line":"        # NOTE(ralonsoh): testing [1], adding multiple IPs."},{"line_number":808,"context_line":"        # [1] https://bugs.launchpad.net/neutron/+bug/1832307"},{"line_number":809,"context_line":"        utils.wait_until_true(lambda: self._read_file({}), timeout\u003d30)"},{"line_number":810,"context_line":"        self.ip_wrapper.add_dummy(self.devices[0])"},{"line_number":811,"context_line":"        ip_addresses \u003d []"}],"source_content_type":"text/x-python","patch_set":3,"id":"9fb8cfa7_26e346a6","line":808,"range":{"start_line":807,"start_character":7,"end_line":808,"end_character":61},"updated":"2019-06-13 15:04:28.000000000","message":"We already have \"Closes-Bug: #1832307\" in commit message.","commit_id":"7f0515fdefced5b982753905ae978216124381e1"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"a3e7dcf39d77232db70f3f5dda6cc1f0a94bc83c","unresolved":false,"context_lines":[{"line_number":804,"context_line":"        self._check_read_file(ip_addresses)"},{"line_number":805,"context_line":""},{"line_number":806,"context_line":"    def test_add_multiple_ips(self):"},{"line_number":807,"context_line":"        # NOTE(ralonsoh): testing [1], adding multiple IPs."},{"line_number":808,"context_line":"        # [1] https://bugs.launchpad.net/neutron/+bug/1832307"},{"line_number":809,"context_line":"        utils.wait_until_true(lambda: self._read_file({}), timeout\u003d30)"},{"line_number":810,"context_line":"        self.ip_wrapper.add_dummy(self.devices[0])"},{"line_number":811,"context_line":"        ip_addresses \u003d []"}],"source_content_type":"text/x-python","patch_set":3,"id":"9fb8cfa7_3a52763c","line":808,"range":{"start_line":807,"start_character":7,"end_line":808,"end_character":61},"in_reply_to":"9fb8cfa7_26e346a6","updated":"2019-06-13 16:19:14.000000000","message":"I would like to remark that this test was implemented to check this issue is not going to happen again.","commit_id":"7f0515fdefced5b982753905ae978216124381e1"},{"author":{"_account_id":9531,"name":"liuyulong","display_name":"LIU Yulong","email":"i@liuyulong.me","username":"LIU-Yulong"},"change_message_id":"cbc6f873ce432f4ec67db9cfbe65861927cbc703","unresolved":false,"context_lines":[{"line_number":811,"context_line":"        ip_addresses \u003d []"},{"line_number":812,"context_line":"        for i in range(250):"},{"line_number":813,"context_line":"            _cidr \u003d str(netaddr.IPNetwork(\u0027192.168.252.1/32\u0027).ip + i) + \u0027/32\u0027"},{"line_number":814,"context_line":"            ip_addresses.append({\u0027cidr\u0027: _cidr, \u0027event\u0027: \u0027added\u0027,"},{"line_number":815,"context_line":"                                 \u0027name\u0027: self.devices[0]})"},{"line_number":816,"context_line":""},{"line_number":817,"context_line":"        self._handle_ip_addresses(\u0027added\u0027, ip_addresses)"}],"source_content_type":"text/x-python","patch_set":3,"id":"9fb8cfa7_26582654","line":814,"range":{"start_line":814,"start_character":58,"end_line":814,"end_character":63},"updated":"2019-06-13 15:04:28.000000000","message":"How about add a quickly \u0027removed loop\u0027 below to test the IP remove?","commit_id":"7f0515fdefced5b982753905ae978216124381e1"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"a3e7dcf39d77232db70f3f5dda6cc1f0a94bc83c","unresolved":false,"context_lines":[{"line_number":811,"context_line":"        ip_addresses \u003d []"},{"line_number":812,"context_line":"        for i in range(250):"},{"line_number":813,"context_line":"            _cidr \u003d str(netaddr.IPNetwork(\u0027192.168.252.1/32\u0027).ip + i) + \u0027/32\u0027"},{"line_number":814,"context_line":"            ip_addresses.append({\u0027cidr\u0027: _cidr, \u0027event\u0027: \u0027added\u0027,"},{"line_number":815,"context_line":"                                 \u0027name\u0027: self.devices[0]})"},{"line_number":816,"context_line":""},{"line_number":817,"context_line":"        self._handle_ip_addresses(\u0027added\u0027, ip_addresses)"}],"source_content_type":"text/x-python","patch_set":3,"id":"9fb8cfa7_da447a76","line":814,"range":{"start_line":814,"start_character":58,"end_line":814,"end_character":63},"in_reply_to":"9fb8cfa7_26582654","updated":"2019-06-13 16:19:14.000000000","message":"Done","commit_id":"7f0515fdefced5b982753905ae978216124381e1"},{"author":{"_account_id":9531,"name":"liuyulong","display_name":"LIU Yulong","email":"i@liuyulong.me","username":"LIU-Yulong"},"change_message_id":"e634e7ca264063591c49fa549a7bd3da01ee8005","unresolved":false,"context_lines":[{"line_number":803,"context_line":"        self._handle_ip_addresses(\u0027added\u0027, [ip_addresses[-1]])"},{"line_number":804,"context_line":"        self._check_read_file(ip_addresses)"},{"line_number":805,"context_line":""},{"line_number":806,"context_line":"    def test_add_and_remove_multiple_ips(self):"},{"line_number":807,"context_line":"        # NOTE(ralonsoh): testing [1], adding multiple IPs."},{"line_number":808,"context_line":"        # [1] https://bugs.launchpad.net/neutron/+bug/1832307"},{"line_number":809,"context_line":"        utils.wait_until_true(lambda: self._read_file({}), timeout\u003d30)"}],"source_content_type":"text/x-python","patch_set":6,"id":"9fb8cfa7_91a8e5db","line":806,"range":{"start_line":806,"start_character":8,"end_line":806,"end_character":40},"updated":"2019-06-18 09:50:30.000000000","message":"{0} neutron.tests.functional.agent.linux.test_ip_lib.IpMonitorTestCase.test_add_and_remove_multiple_ips(namespace) [38.706141s] ... ok\n\nThis takes a bit long time.","commit_id":"a20f4c08c421da2e2d0341d03d71654a82d87a21"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"ad96712ad35e6d0bc8e9d9a3284575b27e2bcf23","unresolved":false,"context_lines":[{"line_number":803,"context_line":"        self._handle_ip_addresses(\u0027added\u0027, [ip_addresses[-1]])"},{"line_number":804,"context_line":"        self._check_read_file(ip_addresses)"},{"line_number":805,"context_line":""},{"line_number":806,"context_line":"    def test_add_and_remove_multiple_ips(self):"},{"line_number":807,"context_line":"        # NOTE(ralonsoh): testing [1], adding multiple IPs."},{"line_number":808,"context_line":"        # [1] https://bugs.launchpad.net/neutron/+bug/1832307"},{"line_number":809,"context_line":"        utils.wait_until_true(lambda: self._read_file({}), timeout\u003d30)"}],"source_content_type":"text/x-python","patch_set":6,"id":"9fb8cfa7_ec74e800","line":806,"range":{"start_line":806,"start_character":8,"end_line":806,"end_character":40},"in_reply_to":"9fb8cfa7_91a8e5db","updated":"2019-06-18 11:07:51.000000000","message":"I know, but this test will ensure the problem reported is not going to happen again. In this test we are adding and then deleting 250 addresses.","commit_id":"a20f4c08c421da2e2d0341d03d71654a82d87a21"}]}
