)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"83736ffb853010a7ba86a9068105416ed349ea2b","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Jakub Libosvar \u003clibosvar@redhat.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2016-02-23 10:58:52 +0000"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"security-groups: Add ivp6 support to ovs firewall"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Closes-bug: 1547616"},{"line_number":10,"context_line":"Change-Id: I8f925afa50f36d073f52bd03954939ca14c505d7"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"bae84128_52fb20c1","line":7,"range":{"start_line":7,"start_character":21,"end_line":7,"end_character":25},"updated":"2016-02-23 11:30:42.000000000","message":"Yes, the first driver in the world supporting ivp6 :) Thanks Daniel Mellado :)","commit_id":"a0a6b0b07ad4b2e7278398e9fa5c218d84925966"}],"neutron/agent/linux/openvswitch_firewall/rules.py":[{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"433a2c3ac0249ef547621989cd28485363a3883d","unresolved":false,"context_lines":[{"line_number":25,"context_line":""},{"line_number":26,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"FORBIDDEN_PREFIXES \u003d (\"0.0.0.0/0\", \"::/0\")"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"def is_valid_prefix(ip_prefix):"}],"source_content_type":"text/x-python","patch_set":1,"id":"bae84128_70185c85","line":28,"updated":"2016-02-19 19:16:11.000000000","message":"There are IPv4_ANY and IPv6_ANY in common/constants.py","commit_id":"bcd6d2ceb69b507472de5bfc631be3a525af5c34"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"eceddaddfba2e1eab6ec358cb5e34590a2936e8c","unresolved":false,"context_lines":[{"line_number":25,"context_line":""},{"line_number":26,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"FORBIDDEN_PREFIXES \u003d (\"0.0.0.0/0\", \"::/0\")"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"def is_valid_prefix(ip_prefix):"}],"source_content_type":"text/x-python","patch_set":1,"id":"bae84128_da3ccc31","line":28,"in_reply_to":"bae84128_70185c85","updated":"2016-02-20 16:27:02.000000000","message":"Done","commit_id":"bcd6d2ceb69b507472de5bfc631be3a525af5c34"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"433a2c3ac0249ef547621989cd28485363a3883d","unresolved":false,"context_lines":[{"line_number":36,"context_line":""},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"def ip_version(ip_prefix):"},{"line_number":39,"context_line":"    return netaddr.IPNetwork(ip_prefix).version"},{"line_number":40,"context_line":""},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"def create_flows_from_rule_and_port(rule, port):"}],"source_content_type":"text/x-python","patch_set":1,"id":"bae84128_307894f2","line":39,"updated":"2016-02-19 19:16:11.000000000","message":"There is already a get_ip_version() in ip_lib.py","commit_id":"bcd6d2ceb69b507472de5bfc631be3a525af5c34"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"eceddaddfba2e1eab6ec358cb5e34590a2936e8c","unresolved":false,"context_lines":[{"line_number":36,"context_line":""},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"def ip_version(ip_prefix):"},{"line_number":39,"context_line":"    return netaddr.IPNetwork(ip_prefix).version"},{"line_number":40,"context_line":""},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"def create_flows_from_rule_and_port(rule, port):"}],"source_content_type":"text/x-python","patch_set":1,"id":"bae84128_fa26f014","line":39,"in_reply_to":"bae84128_307894f2","updated":"2016-02-20 16:27:02.000000000","message":"Done","commit_id":"bcd6d2ceb69b507472de5bfc631be3a525af5c34"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"433a2c3ac0249ef547621989cd28485363a3883d","unresolved":false,"context_lines":[{"line_number":52,"context_line":"    }"},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"    if is_valid_prefix(dst_ip_prefix):"},{"line_number":55,"context_line":"        if ip_version(dst_ip_prefix) \u003d\u003d 4:"},{"line_number":56,"context_line":"            flow_template[\"nw_dst\"] \u003d dst_ip_prefix"},{"line_number":57,"context_line":"        elif ip_version(dst_ip_prefix) \u003d\u003d 6:"},{"line_number":58,"context_line":"            flow_template[\"ipv6_dst\"] \u003d dst_ip_prefix"}],"source_content_type":"text/x-python","patch_set":1,"id":"bae84128_50c1d8e3","line":55,"updated":"2016-02-19 19:16:11.000000000","message":"nit: should use constants.IP_VERSION_4 since it\u0027s a new occurrence of \u00274\u0027","commit_id":"bcd6d2ceb69b507472de5bfc631be3a525af5c34"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"eceddaddfba2e1eab6ec358cb5e34590a2936e8c","unresolved":false,"context_lines":[{"line_number":52,"context_line":"    }"},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"    if is_valid_prefix(dst_ip_prefix):"},{"line_number":55,"context_line":"        if ip_version(dst_ip_prefix) \u003d\u003d 4:"},{"line_number":56,"context_line":"            flow_template[\"nw_dst\"] \u003d dst_ip_prefix"},{"line_number":57,"context_line":"        elif ip_version(dst_ip_prefix) \u003d\u003d 6:"},{"line_number":58,"context_line":"            flow_template[\"ipv6_dst\"] \u003d dst_ip_prefix"}],"source_content_type":"text/x-python","patch_set":1,"id":"bae84128_da868cb8","line":55,"in_reply_to":"bae84128_50c1d8e3","updated":"2016-02-20 16:27:02.000000000","message":"Hehe, I find it a little bit funny we have a constant for number 4 :)","commit_id":"bcd6d2ceb69b507472de5bfc631be3a525af5c34"}],"neutron/tests/functional/agent/test_firewall.py":[{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"773363542ea6d5e181d7754178c82e00a85f22bb","unresolved":false,"context_lines":[{"line_number":517,"context_line":""},{"line_number":518,"context_line":"class FirewallTestCaseIPv6(BaseFirewallTestCase):"},{"line_number":519,"context_line":"    scenarios \u003d [(\u0027OVS Firewall Driver\u0027, {\u0027initialize\u0027: \u0027initialize_ovs\u0027})]"},{"line_number":520,"context_line":"    ip_cidr \u003d \u0027aaaa::1/64\u0027"},{"line_number":521,"context_line":""},{"line_number":522,"context_line":"    def test_icmp_from_specific_address(self):"},{"line_number":523,"context_line":"        sg_rules \u003d [{\u0027ethertype\u0027: constants.IPv6,"}],"source_content_type":"text/x-python","patch_set":4,"id":"7af24918_98af067d","line":520,"updated":"2016-03-07 00:32:10.000000000","message":"nit: 2001:db8:aaaa::1/64","commit_id":"a0a6b0b07ad4b2e7278398e9fa5c218d84925966"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"09982d13df920518b1949b8661de89a169315f3b","unresolved":false,"context_lines":[{"line_number":517,"context_line":""},{"line_number":518,"context_line":"class FirewallTestCaseIPv6(BaseFirewallTestCase):"},{"line_number":519,"context_line":"    scenarios \u003d [(\u0027OVS Firewall Driver\u0027, {\u0027initialize\u0027: \u0027initialize_ovs\u0027})]"},{"line_number":520,"context_line":"    ip_cidr \u003d \u0027aaaa::1/64\u0027"},{"line_number":521,"context_line":""},{"line_number":522,"context_line":"    def test_icmp_from_specific_address(self):"},{"line_number":523,"context_line":"        sg_rules \u003d [{\u0027ethertype\u0027: constants.IPv6,"}],"source_content_type":"text/x-python","patch_set":4,"id":"5aef4532_437c9a20","line":520,"in_reply_to":"7af24918_98af067d","updated":"2016-03-07 07:54:07.000000000","message":"Done","commit_id":"a0a6b0b07ad4b2e7278398e9fa5c218d84925966"}],"neutron/tests/unit/agent/linux/openvswitch_firewall/test_rules.py":[{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"773363542ea6d5e181d7754178c82e00a85f22bb","unresolved":false,"context_lines":[{"line_number":130,"context_line":"            \u0027ethertype\u0027: constants.IPv6,"},{"line_number":131,"context_line":"            \u0027direction\u0027: firewall.INGRESS_DIRECTION,"},{"line_number":132,"context_line":"            \u0027source_ip_prefix\u0027: \u0027ff::/24\u0027,"},{"line_number":133,"context_line":"            \u0027dest_ip_prefix\u0027: \u0027aaaa::1/32\u0027,"},{"line_number":134,"context_line":"        }"},{"line_number":135,"context_line":"        expected_template \u003d {"},{"line_number":136,"context_line":"            \u0027priority\u0027: 70,"}],"source_content_type":"text/x-python","patch_set":4,"id":"7af24918_d8d06efa","line":133,"updated":"2016-03-07 00:32:10.000000000","message":"ditto","commit_id":"a0a6b0b07ad4b2e7278398e9fa5c218d84925966"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"09982d13df920518b1949b8661de89a169315f3b","unresolved":false,"context_lines":[{"line_number":130,"context_line":"            \u0027ethertype\u0027: constants.IPv6,"},{"line_number":131,"context_line":"            \u0027direction\u0027: firewall.INGRESS_DIRECTION,"},{"line_number":132,"context_line":"            \u0027source_ip_prefix\u0027: \u0027ff::/24\u0027,"},{"line_number":133,"context_line":"            \u0027dest_ip_prefix\u0027: \u0027aaaa::1/32\u0027,"},{"line_number":134,"context_line":"        }"},{"line_number":135,"context_line":"        expected_template \u003d {"},{"line_number":136,"context_line":"            \u0027priority\u0027: 70,"}],"source_content_type":"text/x-python","patch_set":4,"id":"5aef4532_c38eea26","line":133,"in_reply_to":"7af24918_d8d06efa","updated":"2016-03-07 07:54:07.000000000","message":"Done","commit_id":"a0a6b0b07ad4b2e7278398e9fa5c218d84925966"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"773363542ea6d5e181d7754178c82e00a85f22bb","unresolved":false,"context_lines":[{"line_number":137,"context_line":"            \u0027dl_type\u0027: constants.ETHERTYPE_IPV6,"},{"line_number":138,"context_line":"            \u0027reg5\u0027: self.port.ofport,"},{"line_number":139,"context_line":"            \u0027ipv6_src\u0027: \u0027ff::/24\u0027,"},{"line_number":140,"context_line":"            \u0027ipv6_dst\u0027: \u0027aaaa::1/32\u0027,"},{"line_number":141,"context_line":"        }"},{"line_number":142,"context_line":"        self._test_create_flows_from_rule_and_port_helper(rule,"},{"line_number":143,"context_line":"                                                          expected_template)"}],"source_content_type":"text/x-python","patch_set":4,"id":"7af24918_b8cda25f","line":140,"updated":"2016-03-07 00:32:10.000000000","message":"ditto","commit_id":"a0a6b0b07ad4b2e7278398e9fa5c218d84925966"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"09982d13df920518b1949b8661de89a169315f3b","unresolved":false,"context_lines":[{"line_number":137,"context_line":"            \u0027dl_type\u0027: constants.ETHERTYPE_IPV6,"},{"line_number":138,"context_line":"            \u0027reg5\u0027: self.port.ofport,"},{"line_number":139,"context_line":"            \u0027ipv6_src\u0027: \u0027ff::/24\u0027,"},{"line_number":140,"context_line":"            \u0027ipv6_dst\u0027: \u0027aaaa::1/32\u0027,"},{"line_number":141,"context_line":"        }"},{"line_number":142,"context_line":"        self._test_create_flows_from_rule_and_port_helper(rule,"},{"line_number":143,"context_line":"                                                          expected_template)"}],"source_content_type":"text/x-python","patch_set":4,"id":"5aef4532_a393de4e","line":140,"in_reply_to":"7af24918_b8cda25f","updated":"2016-03-07 07:54:07.000000000","message":"Done","commit_id":"a0a6b0b07ad4b2e7278398e9fa5c218d84925966"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"773363542ea6d5e181d7754178c82e00a85f22bb","unresolved":false,"context_lines":[{"line_number":146,"context_line":"        rule \u003d {"},{"line_number":147,"context_line":"            \u0027ethertype\u0027: constants.IPv6,"},{"line_number":148,"context_line":"            \u0027direction\u0027: firewall.INGRESS_DIRECTION,"},{"line_number":149,"context_line":"            \u0027source_ip_prefix\u0027: \u0027ff::/24\u0027,"},{"line_number":150,"context_line":"            \u0027dest_ip_prefix\u0027: \u0027::/0\u0027,"},{"line_number":151,"context_line":"        }"},{"line_number":152,"context_line":"        expected_template \u003d {"}],"source_content_type":"text/x-python","patch_set":4,"id":"7af24918_f8d72aeb","line":149,"updated":"2016-03-07 00:32:10.000000000","message":"Is there some significance to ff::/24 ?","commit_id":"a0a6b0b07ad4b2e7278398e9fa5c218d84925966"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"09982d13df920518b1949b8661de89a169315f3b","unresolved":false,"context_lines":[{"line_number":146,"context_line":"        rule \u003d {"},{"line_number":147,"context_line":"            \u0027ethertype\u0027: constants.IPv6,"},{"line_number":148,"context_line":"            \u0027direction\u0027: firewall.INGRESS_DIRECTION,"},{"line_number":149,"context_line":"            \u0027source_ip_prefix\u0027: \u0027ff::/24\u0027,"},{"line_number":150,"context_line":"            \u0027dest_ip_prefix\u0027: \u0027::/0\u0027,"},{"line_number":151,"context_line":"        }"},{"line_number":152,"context_line":"        expected_template \u003d {"}],"source_content_type":"text/x-python","patch_set":4,"id":"5aef4532_c3870a11","line":149,"in_reply_to":"7af24918_f8d72aeb","updated":"2016-03-07 07:54:07.000000000","message":"No, I\u0027m IPv6 n00b, the value here just must be an address, that returns 6 from netaddr.IPNetwork(ip).version call.","commit_id":"a0a6b0b07ad4b2e7278398e9fa5c218d84925966"}]}
