)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"1db30a083d9b217351d7ad8e8fbffd9cca291fa3","unresolved":false,"context_lines":[{"line_number":22,"context_line":""},{"line_number":23,"context_line":"This fix prevents calls to the arping utility for IPv6"},{"line_number":24,"context_line":"addresses, thereby eliminating errors reported by arping"},{"line_number":25,"context_line":"for IPv6 addresses."},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"The assumption is that NDP, DAD, and RAs are sufficient"},{"line_number":28,"context_line":"for address resolution and duplicate address detection"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"9a80dd14_febabcbe","line":25,"updated":"2015-03-06 00:02:45.000000000","message":"nit: I think you could have just used this one parapraph :)","commit_id":"7603d2c84c1cc89012901e16a2954f094c82cc74"},{"author":{"_account_id":6695,"name":"Dane LeBlanc","email":"leblancd@cisco.com","username":"leblancd"},"change_message_id":"5c3aefb4e04453149133ab634d199f9691283604","unresolved":false,"context_lines":[{"line_number":22,"context_line":""},{"line_number":23,"context_line":"This fix prevents calls to the arping utility for IPv6"},{"line_number":24,"context_line":"addresses, thereby eliminating errors reported by arping"},{"line_number":25,"context_line":"for IPv6 addresses."},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"The assumption is that NDP, DAD, and RAs are sufficient"},{"line_number":28,"context_line":"for address resolution and duplicate address detection"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"9a80dd14_a723a6a5","line":25,"in_reply_to":"9a80dd14_febabcbe","updated":"2015-03-06 23:35:38.000000000","message":"Yeah, I think I overdid it trying to avoid a \"What about IPv6?\" -1 comment.\nOn the next iteration, I\u0027ll delete the first 2 verbose paragraphs, but leave\nthe paragraph below.","commit_id":"7603d2c84c1cc89012901e16a2954f094c82cc74"}],"neutron/agent/linux/ip_lib.py":[{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"1db30a083d9b217351d7ad8e8fbffd9cca291fa3","unresolved":false,"context_lines":[{"line_number":654,"context_line":"                            \u0027ns\u0027: ns_name})"},{"line_number":655,"context_line":""},{"line_number":656,"context_line":""},{"line_number":657,"context_line":"def send_gratuitous_arp_if_ipv4(ns_name, iface_name, address, count):"},{"line_number":658,"context_line":"    \"\"\"Send a gratuitous arp for an address if it is in the IPv4 family.\"\"\""},{"line_number":659,"context_line":""},{"line_number":660,"context_line":"    def arping():"}],"source_content_type":"text/x-python","patch_set":4,"id":"9a80dd14_be45a4b4","line":657,"updated":"2015-03-06 00:02:45.000000000","message":"nit: I know someone else will ding you for the name, but it\u0027s late here...","commit_id":"7603d2c84c1cc89012901e16a2954f094c82cc74"},{"author":{"_account_id":6695,"name":"Dane LeBlanc","email":"leblancd@cisco.com","username":"leblancd"},"change_message_id":"3394c27e168287314242c31842da666d320c9adb","unresolved":false,"context_lines":[{"line_number":654,"context_line":"                            \u0027ns\u0027: ns_name})"},{"line_number":655,"context_line":""},{"line_number":656,"context_line":""},{"line_number":657,"context_line":"def send_gratuitous_arp_if_ipv4(ns_name, iface_name, address, count):"},{"line_number":658,"context_line":"    \"\"\"Send a gratuitous arp for an address if it is in the IPv4 family.\"\"\""},{"line_number":659,"context_line":""},{"line_number":660,"context_line":"    def arping():"}],"source_content_type":"text/x-python","patch_set":4,"id":"9a80dd14_f6b48983","line":657,"in_reply_to":"9a80dd14_be45a4b4","updated":"2015-03-06 13:53:23.000000000","message":"I\u0027m open to suggestions, though I\u0027d like to avoid names that infer sending of neighborhood advertisements unless we know for sure that will be needed.","commit_id":"7603d2c84c1cc89012901e16a2954f094c82cc74"},{"author":{"_account_id":6695,"name":"Dane LeBlanc","email":"leblancd@cisco.com","username":"leblancd"},"change_message_id":"57ce34a5a4ad7927e8d63bd2852836581d923722","unresolved":false,"context_lines":[{"line_number":654,"context_line":"                            \u0027ns\u0027: ns_name})"},{"line_number":655,"context_line":""},{"line_number":656,"context_line":""},{"line_number":657,"context_line":"def send_gratuitous_arp_if_ipv4(ns_name, iface_name, address, count):"},{"line_number":658,"context_line":"    \"\"\"Send a gratuitous arp for an address if it is in the IPv4 family.\"\"\""},{"line_number":659,"context_line":""},{"line_number":660,"context_line":"    def arping():"}],"source_content_type":"text/x-python","patch_set":4,"id":"9a80dd14_887a2f75","line":657,"in_reply_to":"9a80dd14_f6b48983","updated":"2015-03-07 01:48:58.000000000","message":"Oops.. s/infer/imply/","commit_id":"7603d2c84c1cc89012901e16a2954f094c82cc74"},{"author":{"_account_id":8873,"name":"Assaf Muller","email":"amuller@redhat.com","username":"amuller"},"change_message_id":"f65cf1a08f9b737c2a7a6d103ccaa65b849a38a9","unresolved":false,"context_lines":[{"line_number":681,"context_line":"    # Do not send gratuitous arp for IPv6. For IPv6, the Neighbor Discovery"},{"line_number":682,"context_line":"    # Protocol (NDP), Duplicate Address Discovery (DAD), and (for stateless"},{"line_number":683,"context_line":"    # addresses) router advertisements (RAs) are sufficient for address"},{"line_number":684,"context_line":"    # resolution and duplicate address detection."},{"line_number":685,"context_line":"    if (netaddr.IPAddress(address).version \u003d\u003d 4 and count \u003e 0):"},{"line_number":686,"context_line":"        eventlet.spawn_n(arping)"},{"line_number":687,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"9a80dd14_f888eb72","line":684,"updated":"2015-03-13 03:23:54.000000000","message":"If you happen to need to send another revision, I\u0027d probably swap the order here so that count \u003e 0 is checked first (It\u0027s cheaper to check).","commit_id":"0106988a6f33b946fd7050b526b998de0e832b29"},{"author":{"_account_id":6695,"name":"Dane LeBlanc","email":"leblancd@cisco.com","username":"leblancd"},"change_message_id":"c97913f84a266640cbcc1dadf7514ddc7d02b7dd","unresolved":false,"context_lines":[{"line_number":681,"context_line":"    # Do not send gratuitous arp for IPv6. For IPv6, the Neighbor Discovery"},{"line_number":682,"context_line":"    # Protocol (NDP), Duplicate Address Discovery (DAD), and (for stateless"},{"line_number":683,"context_line":"    # addresses) router advertisements (RAs) are sufficient for address"},{"line_number":684,"context_line":"    # resolution and duplicate address detection."},{"line_number":685,"context_line":"    if (netaddr.IPAddress(address).version \u003d\u003d 4 and count \u003e 0):"},{"line_number":686,"context_line":"        eventlet.spawn_n(arping)"},{"line_number":687,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"9a80dd14_3537d700","line":684,"in_reply_to":"9a80dd14_f888eb72","updated":"2015-03-13 14:04:34.000000000","message":"Good idea. Will do on next revision.","commit_id":"0106988a6f33b946fd7050b526b998de0e832b29"}],"neutron/tests/unit/agent/linux/test_ip_lib.py":[{"author":{"_account_id":6524,"name":"Henry Gessau","email":"HenryG@gessau.net","username":"gessau"},"change_message_id":"9d9efcc5ba55d09c6537a8ee2cc58f57973a3f64","unresolved":false,"context_lines":[{"line_number":1014,"context_line":""},{"line_number":1015,"context_line":"class TestArpPing(TestIPCmdBase):"},{"line_number":1016,"context_line":"    def _test_arping(self, function, address, spawn_n, mIPWrapper,"},{"line_number":1017,"context_line":"                     pass_config_arg\u003dFalse):"},{"line_number":1018,"context_line":"        spawn_n.side_effect \u003d lambda f: f()"},{"line_number":1019,"context_line":"        ARPING_COUNT \u003d 3"},{"line_number":1020,"context_line":"        if pass_config_arg:"}],"source_content_type":"text/x-python","patch_set":8,"id":"3afb71cf_29585087","line":1017,"updated":"2015-06-10 19:37:50.000000000","message":"This is only used from one place with pass_config_arg\u003dTrue so I don\u0027t see the need for this arg?","commit_id":"a5003fd0d7ea08f16dc74dcbd49369b66644cd46"},{"author":{"_account_id":6695,"name":"Dane LeBlanc","email":"leblancd@cisco.com","username":"leblancd"},"change_message_id":"7d75c680fc82ee17ee48735a997cce788edf7d63","unresolved":false,"context_lines":[{"line_number":1014,"context_line":""},{"line_number":1015,"context_line":"class TestArpPing(TestIPCmdBase):"},{"line_number":1016,"context_line":"    def _test_arping(self, function, address, spawn_n, mIPWrapper,"},{"line_number":1017,"context_line":"                     pass_config_arg\u003dFalse):"},{"line_number":1018,"context_line":"        spawn_n.side_effect \u003d lambda f: f()"},{"line_number":1019,"context_line":"        ARPING_COUNT \u003d 3"},{"line_number":1020,"context_line":"        if pass_config_arg:"}],"source_content_type":"text/x-python","patch_set":8,"id":"3afb71cf_80c27251","line":1017,"in_reply_to":"3afb71cf_29585087","updated":"2015-06-10 20:59:34.000000000","message":"Good catch! Carl\u0027s recent patch (patch set eac9fb143cf3e6f4dd2b3413f81dab92d42354ca) removed the only other call to _test_arping. I need to do a little more cleanup (i.e. eliminate _test_arping()).","commit_id":"a5003fd0d7ea08f16dc74dcbd49369b66644cd46"},{"author":{"_account_id":8873,"name":"Assaf Muller","email":"amuller@redhat.com","username":"amuller"},"change_message_id":"eb82d9dba58d9d9511f6a462c458afe53ffd1b15","unresolved":false,"context_lines":[{"line_number":1014,"context_line":""},{"line_number":1015,"context_line":"class TestArpPing(TestIPCmdBase):"},{"line_number":1016,"context_line":"    def _test_arping(self, function, address, spawn_n, mIPWrapper,"},{"line_number":1017,"context_line":"                     pass_config_arg\u003dFalse):"},{"line_number":1018,"context_line":"        spawn_n.side_effect \u003d lambda f: f()"},{"line_number":1019,"context_line":"        ARPING_COUNT \u003d 3"},{"line_number":1020,"context_line":"        if pass_config_arg:"}],"source_content_type":"text/x-python","patch_set":8,"id":"3afb71cf_c41401ea","line":1017,"in_reply_to":"3afb71cf_29585087","updated":"2015-06-10 19:46:59.000000000","message":"Good point!","commit_id":"a5003fd0d7ea08f16dc74dcbd49369b66644cd46"},{"author":{"_account_id":6524,"name":"Henry Gessau","email":"HenryG@gessau.net","username":"gessau"},"change_message_id":"9d9efcc5ba55d09c6537a8ee2cc58f57973a3f64","unresolved":false,"context_lines":[{"line_number":1021,"context_line":"            arg \u003d mock.Mock()"},{"line_number":1022,"context_line":"            arg.send_arp_for_ha \u003d ARPING_COUNT"},{"line_number":1023,"context_line":"        else:"},{"line_number":1024,"context_line":"            arg \u003d ARPING_COUNT"},{"line_number":1025,"context_line":"        function(mock.sentinel.ns_name,"},{"line_number":1026,"context_line":"                 mock.sentinel.iface_name,"},{"line_number":1027,"context_line":"                 address,"}],"source_content_type":"text/x-python","patch_set":8,"id":"3afb71cf_49114c03","line":1024,"updated":"2015-06-10 19:37:50.000000000","message":"I don\u0027t see how send_ip_addr_adv_notif() can work with an int passed to its config arg?","commit_id":"a5003fd0d7ea08f16dc74dcbd49369b66644cd46"},{"author":{"_account_id":6695,"name":"Dane LeBlanc","email":"leblancd@cisco.com","username":"leblancd"},"change_message_id":"7d75c680fc82ee17ee48735a997cce788edf7d63","unresolved":false,"context_lines":[{"line_number":1021,"context_line":"            arg \u003d mock.Mock()"},{"line_number":1022,"context_line":"            arg.send_arp_for_ha \u003d ARPING_COUNT"},{"line_number":1023,"context_line":"        else:"},{"line_number":1024,"context_line":"            arg \u003d ARPING_COUNT"},{"line_number":1025,"context_line":"        function(mock.sentinel.ns_name,"},{"line_number":1026,"context_line":"                 mock.sentinel.iface_name,"},{"line_number":1027,"context_line":"                 address,"}],"source_content_type":"text/x-python","patch_set":8,"id":"3afb71cf_c03d0a2c","line":1024,"in_reply_to":"3afb71cf_49114c03","updated":"2015-06-10 20:59:34.000000000","message":"See my previous comment. I\u0027ll clean this up.","commit_id":"a5003fd0d7ea08f16dc74dcbd49369b66644cd46"},{"author":{"_account_id":6524,"name":"Henry Gessau","email":"HenryG@gessau.net","username":"gessau"},"change_message_id":"9d9efcc5ba55d09c6537a8ee2cc58f57973a3f64","unresolved":false,"context_lines":[{"line_number":1046,"context_line":"    def test_send_ipv4_addr_adv_notif(self, spawn_n, mIPWrapper):"},{"line_number":1047,"context_line":"        self._test_arping("},{"line_number":1048,"context_line":"            ip_lib.send_ip_addr_adv_notif, \u002720.0.0.1\u0027, spawn_n, mIPWrapper,"},{"line_number":1049,"context_line":"            pass_config_arg\u003dTrue)"},{"line_number":1050,"context_line":""},{"line_number":1051,"context_line":"    @mock.patch(\u0027eventlet.spawn_n\u0027)"},{"line_number":1052,"context_line":"    def test_no_ipv6_addr_notif(self, spawn_n):"}],"source_content_type":"text/x-python","patch_set":8,"id":"3afb71cf_29061052","line":1049,"updated":"2015-06-10 19:37:50.000000000","message":"Why the indirection?","commit_id":"a5003fd0d7ea08f16dc74dcbd49369b66644cd46"},{"author":{"_account_id":8873,"name":"Assaf Muller","email":"amuller@redhat.com","username":"amuller"},"change_message_id":"eb82d9dba58d9d9511f6a462c458afe53ffd1b15","unresolved":false,"context_lines":[{"line_number":1046,"context_line":"    def test_send_ipv4_addr_adv_notif(self, spawn_n, mIPWrapper):"},{"line_number":1047,"context_line":"        self._test_arping("},{"line_number":1048,"context_line":"            ip_lib.send_ip_addr_adv_notif, \u002720.0.0.1\u0027, spawn_n, mIPWrapper,"},{"line_number":1049,"context_line":"            pass_config_arg\u003dTrue)"},{"line_number":1050,"context_line":""},{"line_number":1051,"context_line":"    @mock.patch(\u0027eventlet.spawn_n\u0027)"},{"line_number":1052,"context_line":"    def test_no_ipv6_addr_notif(self, spawn_n):"}],"source_content_type":"text/x-python","patch_set":8,"id":"3afb71cf_e4025db3","line":1049,"in_reply_to":"3afb71cf_29061052","updated":"2015-06-10 19:46:59.000000000","message":"He just kept what was gong on before. This is a good chance to remove _test_arping and move it to this test body.","commit_id":"a5003fd0d7ea08f16dc74dcbd49369b66644cd46"},{"author":{"_account_id":6695,"name":"Dane LeBlanc","email":"leblancd@cisco.com","username":"leblancd"},"change_message_id":"7d75c680fc82ee17ee48735a997cce788edf7d63","unresolved":false,"context_lines":[{"line_number":1046,"context_line":"    def test_send_ipv4_addr_adv_notif(self, spawn_n, mIPWrapper):"},{"line_number":1047,"context_line":"        self._test_arping("},{"line_number":1048,"context_line":"            ip_lib.send_ip_addr_adv_notif, \u002720.0.0.1\u0027, spawn_n, mIPWrapper,"},{"line_number":1049,"context_line":"            pass_config_arg\u003dTrue)"},{"line_number":1050,"context_line":""},{"line_number":1051,"context_line":"    @mock.patch(\u0027eventlet.spawn_n\u0027)"},{"line_number":1052,"context_line":"    def test_no_ipv6_addr_notif(self, spawn_n):"}],"source_content_type":"text/x-python","patch_set":8,"id":"3afb71cf_a0768e03","line":1049,"in_reply_to":"3afb71cf_e4025db3","updated":"2015-06-10 20:59:34.000000000","message":"Done","commit_id":"a5003fd0d7ea08f16dc74dcbd49369b66644cd46"}]}
