)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":6951,"name":"Brandon Logan","email":"brandon.logan@rackspace.com","username":"brandon-logan"},"change_message_id":"6bfbf1abeab057478b7ce360d525a3b1518c2a30","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Do not prohibit VXLAN over IPv6"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"9fc45cee in introduced a regression prohibiting using VXLAN over"},{"line_number":10,"context_line":"IPv6. Relax restriction on local_ip, but validate that both"},{"line_number":11,"context_line":"local_ip and vxlan_group of the same address family. Move existing"},{"line_number":12,"context_line":"validation of vxlan_group into validate_vxlan_group_with_local_ip()"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":6,"id":"da6ed579_aa4fbd69","line":9,"updated":"2016-01-14 05:30:32.000000000","message":"i think it\u0027d be better to link the Change-Id of this commit so I can be lazy and click on the link gerrit makes :)\n\nit\u0027s a nit though","commit_id":"d889e21e6b444f836bc20bf84e83aa77a5a40df3"}],"neutron/plugins/ml2/drivers/linuxbridge/agent/common/config.py":[{"author":{"_account_id":11159,"name":"Hong Hui Xiao","email":"honghui_xiao@yeah.net","username":"HongHuiXiao"},"change_message_id":"530f95e5d50e53f9ac518d4867c0896e793c6185","unresolved":false,"context_lines":[{"line_number":40,"context_line":"                      \"To reserve a unique group for each possible \""},{"line_number":41,"context_line":"                      \"(24-bit) VNI, use a /8 such as 239.0.0.0/8. This \""},{"line_number":42,"context_line":"                      \"setting must be the same on all the agents.\")),"},{"line_number":43,"context_line":"    cfg.IPOpt(\u0027local_ip\u0027,"},{"line_number":44,"context_line":"              help\u003d_(\"Local IP address of the VXLAN endpoints.\")),"},{"line_number":45,"context_line":"    cfg.BoolOpt(\u0027l2_population\u0027, default\u003dFalse,"},{"line_number":46,"context_line":"                help\u003d_(\"Extension to use alongside ml2 plugin\u0027s l2population \""}],"source_content_type":"text/x-python","patch_set":2,"id":"fa69d971_72d5dee2","line":43,"updated":"2016-01-07 02:44:37.000000000","message":"nit: this could be in one line.","commit_id":"28281fa6f6c9c022a3592e11f4d1fa5f491b70d4"},{"author":{"_account_id":11255,"name":"Dustin Lundquist","username":"dustin.lundquist","inactive":true},"change_message_id":"410470e83dd2af02aed44814af2213164a908648","unresolved":false,"context_lines":[{"line_number":40,"context_line":"                      \"To reserve a unique group for each possible \""},{"line_number":41,"context_line":"                      \"(24-bit) VNI, use a /8 such as 239.0.0.0/8. This \""},{"line_number":42,"context_line":"                      \"setting must be the same on all the agents.\")),"},{"line_number":43,"context_line":"    cfg.IPOpt(\u0027local_ip\u0027,"},{"line_number":44,"context_line":"              help\u003d_(\"Local IP address of the VXLAN endpoints.\")),"},{"line_number":45,"context_line":"    cfg.BoolOpt(\u0027l2_population\u0027, default\u003dFalse,"},{"line_number":46,"context_line":"                help\u003d_(\"Extension to use alongside ml2 plugin\u0027s l2population \""}],"source_content_type":"text/x-python","patch_set":2,"id":"fa69d971_6da95b7b","line":43,"in_reply_to":"fa69d971_72d5dee2","updated":"2016-01-07 18:25:05.000000000","message":"fixed","commit_id":"28281fa6f6c9c022a3592e11f4d1fa5f491b70d4"}],"neutron/plugins/ml2/drivers/linuxbridge/agent/linuxbridge_neutron_agent.py":[{"author":{"_account_id":7715,"name":"Hirofumi Ichihara","email":"ichihara.hirofumi@gmail.com","username":"Hirofumi-Ichihara"},"change_message_id":"051005d3c71234cfc48c9ec60d29fa5df8a80c0e","unresolved":false,"context_lines":[{"line_number":76,"context_line":"        self.local_ip \u003d cfg.CONF.VXLAN.local_ip"},{"line_number":77,"context_line":"        self.vxlan_mode \u003d lconst.VXLAN_NONE"},{"line_number":78,"context_line":"        if cfg.CONF.VXLAN.enable_vxlan:"},{"line_number":79,"context_line":"            if cfg.CONF.VXLAN.vxlan_group and self.local_ip:"},{"line_number":80,"context_line":"                self.validate_vxlan_group_with_local_ip()"},{"line_number":81,"context_line":"            device \u003d self.get_local_ip_device(self.local_ip)"},{"line_number":82,"context_line":"            self.local_int \u003d device.name"}],"source_content_type":"text/x-python","patch_set":1,"id":"fa69d971_5556ebce","line":79,"range":{"start_line":79,"start_character":46,"end_line":79,"end_character":59},"updated":"2016-01-05 04:56:35.000000000","message":"This \"local_ip\" check isn\u0027t needed if you move these under get_local_ip_device()","commit_id":"86e9b76547b50df3b4e1383f94da7807a0c5b112"},{"author":{"_account_id":11255,"name":"Dustin Lundquist","username":"dustin.lundquist","inactive":true},"change_message_id":"676de2335b020fae7f1aa7cee8b04a804345e558","unresolved":false,"context_lines":[{"line_number":76,"context_line":"        self.local_ip \u003d cfg.CONF.VXLAN.local_ip"},{"line_number":77,"context_line":"        self.vxlan_mode \u003d lconst.VXLAN_NONE"},{"line_number":78,"context_line":"        if cfg.CONF.VXLAN.enable_vxlan:"},{"line_number":79,"context_line":"            if cfg.CONF.VXLAN.vxlan_group and self.local_ip:"},{"line_number":80,"context_line":"                self.validate_vxlan_group_with_local_ip()"},{"line_number":81,"context_line":"            device \u003d self.get_local_ip_device(self.local_ip)"},{"line_number":82,"context_line":"            self.local_int \u003d device.name"}],"source_content_type":"text/x-python","patch_set":1,"id":"fa69d971_0f46be7a","line":79,"range":{"start_line":79,"start_character":46,"end_line":79,"end_character":59},"in_reply_to":"fa69d971_5556ebce","updated":"2016-01-07 00:57:14.000000000","message":"It is needed since local_ip is None in many of the existing tests.","commit_id":"86e9b76547b50df3b4e1383f94da7807a0c5b112"},{"author":{"_account_id":7715,"name":"Hirofumi Ichihara","email":"ichihara.hirofumi@gmail.com","username":"Hirofumi-Ichihara"},"change_message_id":"051005d3c71234cfc48c9ec60d29fa5df8a80c0e","unresolved":false,"context_lines":[{"line_number":105,"context_line":"            ip_addr \u003d netaddr.IPAddress(self.local_ip)"},{"line_number":106,"context_line":"            # Ensure the configured group address/range is valid and multicast"},{"line_number":107,"context_line":"            group_net \u003d netaddr.IPNetwork(cfg.CONF.VXLAN.vxlan_group)"},{"line_number":108,"context_line":"            if not group_net.is_multicast():"},{"line_number":109,"context_line":"                raise ValueError()"},{"line_number":110,"context_line":"            if not ip_addr.version \u003d\u003d group_net.version:"},{"line_number":111,"context_line":"                raise ValueError()"}],"source_content_type":"text/x-python","patch_set":1,"id":"fa69d971_55802bf7","line":108,"range":{"start_line":108,"start_character":12,"end_line":108,"end_character":44},"updated":"2016-01-05 04:56:35.000000000","message":"There is the same check in get_vxlan_group(). If we check it here, we should remove the check in get_vxlan_group().","commit_id":"86e9b76547b50df3b4e1383f94da7807a0c5b112"},{"author":{"_account_id":7715,"name":"Hirofumi Ichihara","email":"ichihara.hirofumi@gmail.com","username":"Hirofumi-Ichihara"},"change_message_id":"a1334035f541d47da22bf466e6229b8d14e09a16","unresolved":false,"context_lines":[{"line_number":79,"context_line":"        self.vxlan_mode \u003d lconst.VXLAN_NONE"},{"line_number":80,"context_line":"        if cfg.CONF.VXLAN.enable_vxlan:"},{"line_number":81,"context_line":"            device \u003d self.get_local_ip_device(self.local_ip)"},{"line_number":82,"context_line":"            if cfg.CONF.VXLAN.vxlan_group and self.local_ip:"},{"line_number":83,"context_line":"                self.validate_vxlan_group_with_local_ip()"},{"line_number":84,"context_line":"            self.local_int \u003d device.name"},{"line_number":85,"context_line":"            self.check_vxlan_support()"}],"source_content_type":"text/x-python","patch_set":2,"id":"fa69d971_eab47882","line":82,"range":{"start_line":82,"start_character":46,"end_line":82,"end_character":59},"updated":"2016-01-07 01:14:00.000000000","message":"If local_ip is None, neutron excuses \"sys.exit(1)\" in get_local_ip_device() above. So the check is unnecessary.","commit_id":"28281fa6f6c9c022a3592e11f4d1fa5f491b70d4"},{"author":{"_account_id":11255,"name":"Dustin Lundquist","username":"dustin.lundquist","inactive":true},"change_message_id":"131d4cc248654fb569f2334a691cf9ec3e5d7651","unresolved":false,"context_lines":[{"line_number":79,"context_line":"        self.vxlan_mode \u003d lconst.VXLAN_NONE"},{"line_number":80,"context_line":"        if cfg.CONF.VXLAN.enable_vxlan:"},{"line_number":81,"context_line":"            device \u003d self.get_local_ip_device(self.local_ip)"},{"line_number":82,"context_line":"            if cfg.CONF.VXLAN.vxlan_group and self.local_ip:"},{"line_number":83,"context_line":"                self.validate_vxlan_group_with_local_ip()"},{"line_number":84,"context_line":"            self.local_int \u003d device.name"},{"line_number":85,"context_line":"            self.check_vxlan_support()"}],"source_content_type":"text/x-python","patch_set":2,"id":"fa69d971_2c7f0de1","line":82,"range":{"start_line":82,"start_character":46,"end_line":82,"end_character":59},"in_reply_to":"fa69d971_eab47882","updated":"2016-01-07 01:37:54.000000000","message":"This isn\u0027t the case within the unit tests, I\u0027ll revisit this and try initializing local_ip within test setUp().","commit_id":"28281fa6f6c9c022a3592e11f4d1fa5f491b70d4"}],"neutron/tests/unit/plugins/ml2/drivers/linuxbridge/agent/test_linuxbridge_neutron_agent.py":[{"author":{"_account_id":11159,"name":"Hong Hui Xiao","email":"honghui_xiao@yeah.net","username":"HongHuiXiao"},"change_message_id":"530f95e5d50e53f9ac518d4867c0896e793c6185","unresolved":false,"context_lines":[{"line_number":526,"context_line":"            exit.assert_called_once_with(1)"},{"line_number":527,"context_line":""},{"line_number":528,"context_line":"    def test_vxlan_group_validation_with_mismatched_local_ip(self):"},{"line_number":529,"context_line":"        self._test_vxlan_group_validation(LOCAL_IP, VXLAN_GROUPV6);"},{"line_number":530,"context_line":""},{"line_number":531,"context_line":"    def test_vxlan_group_validation_with_unicast_group(self):"},{"line_number":532,"context_line":"        self._test_vxlan_group_validation(LOCAL_IP, \u0027240.0.0.0\u0027);"}],"source_content_type":"text/x-python","patch_set":2,"id":"fa69d971_3231a65a","line":529,"updated":"2016-01-07 02:44:37.000000000","message":"tailing semicolon","commit_id":"28281fa6f6c9c022a3592e11f4d1fa5f491b70d4"},{"author":{"_account_id":11255,"name":"Dustin Lundquist","username":"dustin.lundquist","inactive":true},"change_message_id":"410470e83dd2af02aed44814af2213164a908648","unresolved":false,"context_lines":[{"line_number":526,"context_line":"            exit.assert_called_once_with(1)"},{"line_number":527,"context_line":""},{"line_number":528,"context_line":"    def test_vxlan_group_validation_with_mismatched_local_ip(self):"},{"line_number":529,"context_line":"        self._test_vxlan_group_validation(LOCAL_IP, VXLAN_GROUPV6);"},{"line_number":530,"context_line":""},{"line_number":531,"context_line":"    def test_vxlan_group_validation_with_unicast_group(self):"},{"line_number":532,"context_line":"        self._test_vxlan_group_validation(LOCAL_IP, \u0027240.0.0.0\u0027);"}],"source_content_type":"text/x-python","patch_set":2,"id":"fa69d971_cd972739","line":529,"in_reply_to":"fa69d971_3231a65a","updated":"2016-01-07 18:25:05.000000000","message":"fixed","commit_id":"28281fa6f6c9c022a3592e11f4d1fa5f491b70d4"},{"author":{"_account_id":11159,"name":"Hong Hui Xiao","email":"honghui_xiao@yeah.net","username":"HongHuiXiao"},"change_message_id":"530f95e5d50e53f9ac518d4867c0896e793c6185","unresolved":false,"context_lines":[{"line_number":529,"context_line":"        self._test_vxlan_group_validation(LOCAL_IP, VXLAN_GROUPV6);"},{"line_number":530,"context_line":""},{"line_number":531,"context_line":"    def test_vxlan_group_validation_with_unicast_group(self):"},{"line_number":532,"context_line":"        self._test_vxlan_group_validation(LOCAL_IP, \u0027240.0.0.0\u0027);"},{"line_number":533,"context_line":""},{"line_number":534,"context_line":"    def test_vxlan_group_validation_with_invalid_cidr(self):"},{"line_number":535,"context_line":"        self._test_vxlan_group_validation(LOCAL_IP, \u0027224.0.0.1/\u0027);"}],"source_content_type":"text/x-python","patch_set":2,"id":"fa69d971_f236ae4f","line":532,"updated":"2016-01-07 02:44:37.000000000","message":"ditto","commit_id":"28281fa6f6c9c022a3592e11f4d1fa5f491b70d4"},{"author":{"_account_id":11255,"name":"Dustin Lundquist","username":"dustin.lundquist","inactive":true},"change_message_id":"410470e83dd2af02aed44814af2213164a908648","unresolved":false,"context_lines":[{"line_number":529,"context_line":"        self._test_vxlan_group_validation(LOCAL_IP, VXLAN_GROUPV6);"},{"line_number":530,"context_line":""},{"line_number":531,"context_line":"    def test_vxlan_group_validation_with_unicast_group(self):"},{"line_number":532,"context_line":"        self._test_vxlan_group_validation(LOCAL_IP, \u0027240.0.0.0\u0027);"},{"line_number":533,"context_line":""},{"line_number":534,"context_line":"    def test_vxlan_group_validation_with_invalid_cidr(self):"},{"line_number":535,"context_line":"        self._test_vxlan_group_validation(LOCAL_IP, \u0027224.0.0.1/\u0027);"}],"source_content_type":"text/x-python","patch_set":2,"id":"fa69d971_ed854b07","line":532,"in_reply_to":"fa69d971_f236ae4f","updated":"2016-01-07 18:25:05.000000000","message":"fixed","commit_id":"28281fa6f6c9c022a3592e11f4d1fa5f491b70d4"},{"author":{"_account_id":11159,"name":"Hong Hui Xiao","email":"honghui_xiao@yeah.net","username":"HongHuiXiao"},"change_message_id":"530f95e5d50e53f9ac518d4867c0896e793c6185","unresolved":false,"context_lines":[{"line_number":532,"context_line":"        self._test_vxlan_group_validation(LOCAL_IP, \u0027240.0.0.0\u0027);"},{"line_number":533,"context_line":""},{"line_number":534,"context_line":"    def test_vxlan_group_validation_with_invalid_cidr(self):"},{"line_number":535,"context_line":"        self._test_vxlan_group_validation(LOCAL_IP, \u0027224.0.0.1/\u0027);"},{"line_number":536,"context_line":""},{"line_number":537,"context_line":"    def test_vxlan_group_validation_with_v6_unicast_group(self):"},{"line_number":538,"context_line":"        self._test_vxlan_group_validation(LOCAL_IPV6, \u00272001:db8::\u0027);"}],"source_content_type":"text/x-python","patch_set":2,"id":"fa69d971_72439eaf","line":535,"updated":"2016-01-07 02:44:37.000000000","message":"ditto","commit_id":"28281fa6f6c9c022a3592e11f4d1fa5f491b70d4"},{"author":{"_account_id":11255,"name":"Dustin Lundquist","username":"dustin.lundquist","inactive":true},"change_message_id":"410470e83dd2af02aed44814af2213164a908648","unresolved":false,"context_lines":[{"line_number":532,"context_line":"        self._test_vxlan_group_validation(LOCAL_IP, \u0027240.0.0.0\u0027);"},{"line_number":533,"context_line":""},{"line_number":534,"context_line":"    def test_vxlan_group_validation_with_invalid_cidr(self):"},{"line_number":535,"context_line":"        self._test_vxlan_group_validation(LOCAL_IP, \u0027224.0.0.1/\u0027);"},{"line_number":536,"context_line":""},{"line_number":537,"context_line":"    def test_vxlan_group_validation_with_v6_unicast_group(self):"},{"line_number":538,"context_line":"        self._test_vxlan_group_validation(LOCAL_IPV6, \u00272001:db8::\u0027);"}],"source_content_type":"text/x-python","patch_set":2,"id":"fa69d971_4d757730","line":535,"in_reply_to":"fa69d971_72439eaf","updated":"2016-01-07 18:25:05.000000000","message":"fixed","commit_id":"28281fa6f6c9c022a3592e11f4d1fa5f491b70d4"},{"author":{"_account_id":11159,"name":"Hong Hui Xiao","email":"honghui_xiao@yeah.net","username":"HongHuiXiao"},"change_message_id":"530f95e5d50e53f9ac518d4867c0896e793c6185","unresolved":false,"context_lines":[{"line_number":535,"context_line":"        self._test_vxlan_group_validation(LOCAL_IP, \u0027224.0.0.1/\u0027);"},{"line_number":536,"context_line":""},{"line_number":537,"context_line":"    def test_vxlan_group_validation_with_v6_unicast_group(self):"},{"line_number":538,"context_line":"        self._test_vxlan_group_validation(LOCAL_IPV6, \u00272001:db8::\u0027);"},{"line_number":539,"context_line":""},{"line_number":540,"context_line":"    def test_get_existing_bridge_name(self):"},{"line_number":541,"context_line":"        phy_net \u003d \u0027physnet0\u0027"}],"source_content_type":"text/x-python","patch_set":2,"id":"fa69d971_1215829a","line":538,"updated":"2016-01-07 02:44:37.000000000","message":"ditto","commit_id":"28281fa6f6c9c022a3592e11f4d1fa5f491b70d4"},{"author":{"_account_id":11255,"name":"Dustin Lundquist","username":"dustin.lundquist","inactive":true},"change_message_id":"410470e83dd2af02aed44814af2213164a908648","unresolved":false,"context_lines":[{"line_number":535,"context_line":"        self._test_vxlan_group_validation(LOCAL_IP, \u0027224.0.0.1/\u0027);"},{"line_number":536,"context_line":""},{"line_number":537,"context_line":"    def test_vxlan_group_validation_with_v6_unicast_group(self):"},{"line_number":538,"context_line":"        self._test_vxlan_group_validation(LOCAL_IPV6, \u00272001:db8::\u0027);"},{"line_number":539,"context_line":""},{"line_number":540,"context_line":"    def test_get_existing_bridge_name(self):"},{"line_number":541,"context_line":"        phy_net \u003d \u0027physnet0\u0027"}],"source_content_type":"text/x-python","patch_set":2,"id":"fa69d971_2d936351","line":538,"in_reply_to":"fa69d971_1215829a","updated":"2016-01-07 18:25:05.000000000","message":"fixed","commit_id":"28281fa6f6c9c022a3592e11f4d1fa5f491b70d4"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"6503ef542f3b7f1a8c1ccabc7fc26a2ff3f02da8","unresolved":false,"context_lines":[{"line_number":31,"context_line":"from neutron.tests import base"},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"LOCAL_IP \u003d \u0027192.168.0.33\u0027"},{"line_number":34,"context_line":"LOCAL_IPV6 \u003d \u00272001:db8:1:33\u0027"},{"line_number":35,"context_line":"VXLAN_GROUPV6 \u003d \u0027ff05::/120\u0027"},{"line_number":36,"context_line":"PORT_1 \u003d \u0027abcdef01-12ddssdfds-fdsfsd\u0027"},{"line_number":37,"context_line":"DEVICE_1 \u003d \u0027tapabcdef01-12\u0027"}],"source_content_type":"text/x-python","patch_set":4,"id":"fa69d971_cfc4f160","line":34,"updated":"2016-01-07 23:14:14.000000000","message":"This is not a valid IPv6 address, you need to either have all the octets, or use a double-colon, something like 2001:db8:1::33  Unless I\u0027m missing something...","commit_id":"f668127e8060210320b61b1c1520d3223f58652c"},{"author":{"_account_id":9515,"name":"Matthew Kassawara","email":"mkassawara@gmail.com","username":"ionosphere80"},"change_message_id":"1f2aeabed4b585fd26439114baf423f535676fa0","unresolved":false,"context_lines":[{"line_number":31,"context_line":"from neutron.tests import base"},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"LOCAL_IP \u003d \u0027192.168.0.33\u0027"},{"line_number":34,"context_line":"LOCAL_IPV6 \u003d \u00272001:db8:1:33\u0027"},{"line_number":35,"context_line":"VXLAN_GROUPV6 \u003d \u0027ff05::/120\u0027"},{"line_number":36,"context_line":"PORT_1 \u003d \u0027abcdef01-12ddssdfds-fdsfsd\u0027"},{"line_number":37,"context_line":"DEVICE_1 \u003d \u0027tapabcdef01-12\u0027"}],"source_content_type":"text/x-python","patch_set":4,"id":"fa69d971_efa2159a","line":34,"in_reply_to":"fa69d971_cfc4f160","updated":"2016-01-07 23:16:10.000000000","message":"+1","commit_id":"f668127e8060210320b61b1c1520d3223f58652c"},{"author":{"_account_id":11255,"name":"Dustin Lundquist","username":"dustin.lundquist","inactive":true},"change_message_id":"5880a89e3af30967015035b8491bb0d2b50a17ac","unresolved":false,"context_lines":[{"line_number":31,"context_line":"from neutron.tests import base"},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"LOCAL_IP \u003d \u0027192.168.0.33\u0027"},{"line_number":34,"context_line":"LOCAL_IPV6 \u003d \u00272001:db8:1:33\u0027"},{"line_number":35,"context_line":"VXLAN_GROUPV6 \u003d \u0027ff05::/120\u0027"},{"line_number":36,"context_line":"PORT_1 \u003d \u0027abcdef01-12ddssdfds-fdsfsd\u0027"},{"line_number":37,"context_line":"DEVICE_1 \u003d \u0027tapabcdef01-12\u0027"}],"source_content_type":"text/x-python","patch_set":4,"id":"fa69d971_28616705","line":34,"in_reply_to":"fa69d971_efa2159a","updated":"2016-01-11 21:03:38.000000000","message":"Done","commit_id":"f668127e8060210320b61b1c1520d3223f58652c"}]}
