)]}'
{"neutron/db/securitygroups_rpc_base.py":[{"author":{"_account_id":6685,"name":"Baodong (Robert) Li","email":"baoli@cisco.com","username":"baoli"},"change_message_id":"a40835a82991816dc4824649471584253aab0c11","unresolved":false,"context_lines":[{"line_number":219,"context_line":"                and not netaddr.IPAddress(ip).is_link_local()):"},{"line_number":220,"context_line":"                mac_address \u003d port[\u0027mac_address\u0027]"},{"line_number":221,"context_line":"                ip \u003d str(ipv6.get_ipv6_addr_by_EUI64(q_const.IPV6_LLA_PREFIX,"},{"line_number":222,"context_line":"                    mac_address))"},{"line_number":223,"context_line":"            ips[port[\u0027network_id\u0027]].append(ip)"},{"line_number":224,"context_line":""},{"line_number":225,"context_line":"        return ips"}],"source_content_type":"text/x-python","patch_set":2,"id":"baada198_9bcbbda3","line":222,"updated":"2014-07-23 13:37:22.000000000","message":"Now that RAs are coming from the router ns, this routine and its caller should be changed to keep in sync with that.\n\nAlso, why the  SLAAC address needs to be recalculated here?","commit_id":"74ab7a27b8816ea19e0dc9ae56e21cf384329239"},{"author":{"_account_id":7183,"name":"Xu Han Peng","email":"xuhanp@linux.vnet.ibm.com","username":"xuhanp"},"change_message_id":"2f41a4d54a77bb907e72db7f9335ce3a0b86dec7","unresolved":false,"context_lines":[{"line_number":219,"context_line":"                and not netaddr.IPAddress(ip).is_link_local()):"},{"line_number":220,"context_line":"                mac_address \u003d port[\u0027mac_address\u0027]"},{"line_number":221,"context_line":"                ip \u003d str(ipv6.get_ipv6_addr_by_EUI64(q_const.IPV6_LLA_PREFIX,"},{"line_number":222,"context_line":"                    mac_address))"},{"line_number":223,"context_line":"            ips[port[\u0027network_id\u0027]].append(ip)"},{"line_number":224,"context_line":""},{"line_number":225,"context_line":"        return ips"}],"source_content_type":"text/x-python","patch_set":2,"id":"baada198_d49326fe","line":222,"in_reply_to":"baada198_9bcbbda3","updated":"2014-07-24 08:12:06.000000000","message":"Robert, although the RAs are coming from router NS on L3 node, this security group is taking effect on compute node. I don\u0027t think we need to worry about namespace here. Agree?\n\nThe ip_address here is the dhcp port which could be a SLAAC address or an allocated IP from the subnet. What we are looking for is the link local IPv6 address of the DHCP port. That\u0027s why we are using the LLA prefix and mac address to calculate this address. \n\nLet me know if you still have comments.","commit_id":"74ab7a27b8816ea19e0dc9ae56e21cf384329239"},{"author":{"_account_id":6685,"name":"Baodong (Robert) Li","email":"baoli@cisco.com","username":"baoli"},"change_message_id":"a1ecfcae7d1ca3ad04d8d9f47713d75ebc4769a2","unresolved":false,"context_lines":[{"line_number":219,"context_line":"                and not netaddr.IPAddress(ip).is_link_local()):"},{"line_number":220,"context_line":"                mac_address \u003d port[\u0027mac_address\u0027]"},{"line_number":221,"context_line":"                ip \u003d str(ipv6.get_ipv6_addr_by_EUI64(q_const.IPV6_LLA_PREFIX,"},{"line_number":222,"context_line":"                    mac_address))"},{"line_number":223,"context_line":"            ips[port[\u0027network_id\u0027]].append(ip)"},{"line_number":224,"context_line":""},{"line_number":225,"context_line":"        return ips"}],"source_content_type":"text/x-python","patch_set":2,"id":"baada198_5f8e467a","line":222,"in_reply_to":"baada198_d49326fe","updated":"2014-07-24 13:45:39.000000000","message":"Xu Han, thanks for the detailed reply. I misread the usage of this IP address. It\u0027s good to go.","commit_id":"74ab7a27b8816ea19e0dc9ae56e21cf384329239"},{"author":{"_account_id":2592,"name":"Mark McClain","email":"mark@mcclain.xyz","username":"markmcclain"},"change_message_id":"8cdfff2cf8978e795390148495e86eb997c9dd7a","unresolved":false,"context_lines":[{"line_number":318,"context_line":"        dhcp_ips \u003d ips.get(port[\u0027network_id\u0027])"},{"line_number":319,"context_line":"        for dhcp_ip in dhcp_ips:"},{"line_number":320,"context_line":"            if netaddr.IPAddress(dhcp_ip).version \u003d\u003d 4:"},{"line_number":321,"context_line":"                spt \u003d 67"},{"line_number":322,"context_line":"                dpt \u003d 68"},{"line_number":323,"context_line":"                ethertype \u003d q_const.IPv4"},{"line_number":324,"context_line":"            elif netaddr.IPAddress(dhcp_ip).version \u003d\u003d 6:"}],"source_content_type":"text/x-python","patch_set":2,"id":"baada198_bb142ca0","line":321,"updated":"2014-07-22 19:01:40.000000000","message":"these should be module level constants vs values embedded in the code\nI would suggest creating namedtuple declared in the file to hold all three values","commit_id":"74ab7a27b8816ea19e0dc9ae56e21cf384329239"},{"author":{"_account_id":7183,"name":"Xu Han Peng","email":"xuhanp@linux.vnet.ibm.com","username":"xuhanp"},"change_message_id":"3e1e5342d50b3ef67a93b145672ff62a0d8c65f4","unresolved":false,"context_lines":[{"line_number":318,"context_line":"        dhcp_ips \u003d ips.get(port[\u0027network_id\u0027])"},{"line_number":319,"context_line":"        for dhcp_ip in dhcp_ips:"},{"line_number":320,"context_line":"            if netaddr.IPAddress(dhcp_ip).version \u003d\u003d 4:"},{"line_number":321,"context_line":"                spt \u003d 67"},{"line_number":322,"context_line":"                dpt \u003d 68"},{"line_number":323,"context_line":"                ethertype \u003d q_const.IPv4"},{"line_number":324,"context_line":"            elif netaddr.IPAddress(dhcp_ip).version \u003d\u003d 6:"}],"source_content_type":"text/x-python","patch_set":2,"id":"baada198_c059d6fe","line":321,"in_reply_to":"baada198_bb142ca0","updated":"2014-07-23 06:48:37.000000000","message":"Done","commit_id":"74ab7a27b8816ea19e0dc9ae56e21cf384329239"},{"author":{"_account_id":2031,"name":"Nachi Ueno","email":"nati.ueno@gmail.com","username":"nati-ueno"},"change_message_id":"af233f55276b324491ca98d4acc1e6fd127c4935","unresolved":false,"context_lines":[{"line_number":321,"context_line":"        dhcp_ips \u003d ips.get(port[\u0027network_id\u0027])"},{"line_number":322,"context_line":"        for dhcp_ip in dhcp_ips:"},{"line_number":323,"context_line":"            if netaddr.IPAddress(dhcp_ip).version \u003d\u003d 4:"},{"line_number":324,"context_line":"                spt \u003d DHCP_RULE_PORT[q_const.IPv4][\u0027spt\u0027]"},{"line_number":325,"context_line":"                dpt \u003d DHCP_RULE_PORT[q_const.IPv4][\u0027dpt\u0027]"},{"line_number":326,"context_line":"                ethertype \u003d q_const.IPv4"},{"line_number":327,"context_line":"            elif netaddr.IPAddress(dhcp_ip).version \u003d\u003d 6:"}],"source_content_type":"text/x-python","patch_set":3,"id":"1abeadc6_c208252b","line":324,"updated":"2014-08-25 16:03:55.000000000","message":"i prefer self descriptive name here.","commit_id":"03187944cf02d1f2f15b785e61d8d923b027c01d"},{"author":{"_account_id":7183,"name":"Xu Han Peng","email":"xuhanp@linux.vnet.ibm.com","username":"xuhanp"},"change_message_id":"2c0af1abff500c9c29262d982fe8dbca4cc1594b","unresolved":false,"context_lines":[{"line_number":321,"context_line":"        dhcp_ips \u003d ips.get(port[\u0027network_id\u0027])"},{"line_number":322,"context_line":"        for dhcp_ip in dhcp_ips:"},{"line_number":323,"context_line":"            if netaddr.IPAddress(dhcp_ip).version \u003d\u003d 4:"},{"line_number":324,"context_line":"                spt \u003d DHCP_RULE_PORT[q_const.IPv4][\u0027spt\u0027]"},{"line_number":325,"context_line":"                dpt \u003d DHCP_RULE_PORT[q_const.IPv4][\u0027dpt\u0027]"},{"line_number":326,"context_line":"                ethertype \u003d q_const.IPv4"},{"line_number":327,"context_line":"            elif netaddr.IPAddress(dhcp_ip).version \u003d\u003d 6:"}],"source_content_type":"text/x-python","patch_set":3,"id":"1abeadc6_de1c63c4","line":324,"in_reply_to":"1abeadc6_c208252b","updated":"2014-08-26 08:09:09.000000000","message":"Will change to source_port and des_port in next patch.","commit_id":"03187944cf02d1f2f15b785e61d8d923b027c01d"},{"author":{"_account_id":6524,"name":"Henry Gessau","email":"HenryG@gessau.net","username":"gessau"},"change_message_id":"c88c7ea625c50b599ee8e1f01fc27d48ee809bd0","unresolved":false,"context_lines":[{"line_number":222,"context_line":"                and not netaddr.IPAddress(ip).is_link_local()):"},{"line_number":223,"context_line":"                mac_address \u003d port[\u0027mac_address\u0027]"},{"line_number":224,"context_line":"                ip \u003d str(ipv6.get_ipv6_addr_by_EUI64(q_const.IPV6_LLA_PREFIX,"},{"line_number":225,"context_line":"                    mac_address))"},{"line_number":226,"context_line":"            ips[port[\u0027network_id\u0027]].append(ip)"},{"line_number":227,"context_line":""},{"line_number":228,"context_line":"        return ips"}],"source_content_type":"text/x-python","patch_set":4,"id":"1abeadc6_6220f69b","line":225,"updated":"2014-08-26 21:43:55.000000000","message":"Could this LLA already be in the query list, as well as a non-local address? If so then this would result in the LLA being duplicated in the list for the network.","commit_id":"d9450d13f0395c27e5cd74286adb92e508dc3162"},{"author":{"_account_id":7183,"name":"Xu Han Peng","email":"xuhanp@linux.vnet.ibm.com","username":"xuhanp"},"change_message_id":"65ab2a5bc3a6d004d5cf2bcc2f6234259612af56","unresolved":false,"context_lines":[{"line_number":222,"context_line":"                and not netaddr.IPAddress(ip).is_link_local()):"},{"line_number":223,"context_line":"                mac_address \u003d port[\u0027mac_address\u0027]"},{"line_number":224,"context_line":"                ip \u003d str(ipv6.get_ipv6_addr_by_EUI64(q_const.IPV6_LLA_PREFIX,"},{"line_number":225,"context_line":"                    mac_address))"},{"line_number":226,"context_line":"            ips[port[\u0027network_id\u0027]].append(ip)"},{"line_number":227,"context_line":""},{"line_number":228,"context_line":"        return ips"}],"source_content_type":"text/x-python","patch_set":4,"id":"1abeadc6_5f8747d7","line":225,"in_reply_to":"1abeadc6_6220f69b","updated":"2014-08-27 02:58:14.000000000","message":"I guess it\u0027s only possible when the DHCP port is in two subnets of one network and one of the subnet has the link local prefix. Not sure how can this happen, but I can adjust line 226 to avoid this.","commit_id":"d9450d13f0395c27e5cd74286adb92e508dc3162"},{"author":{"_account_id":8873,"name":"Assaf Muller","email":"amuller@redhat.com","username":"amuller"},"change_message_id":"70e4f803b8526aaea2c1eda9ee751559d41d990f","unresolved":false,"context_lines":[{"line_number":381,"context_line":""},{"line_number":382,"context_line":"    def _add_ingress_dhcp_rule(self, port, ips):"},{"line_number":383,"context_line":"        dhcp_ips \u003d ips.get(port[\u0027network_id\u0027])"},{"line_number":384,"context_line":"        for dhcp_ip in dhcp_ips:"},{"line_number":385,"context_line":"            if netaddr.IPAddress(dhcp_ip).version \u003d\u003d 4:"},{"line_number":386,"context_line":"                source_port \u003d DHCP_RULE_PORT[q_const.IPv4][\u0027source_port\u0027]"},{"line_number":387,"context_line":"                dest_port \u003d DHCP_RULE_PORT[q_const.IPv4][\u0027dest_port\u0027]"}],"source_content_type":"text/x-python","patch_set":6,"id":"fa98f980_d001dfaf","line":384,"updated":"2014-09-06 09:12:24.000000000","message":"Consider this simplification:\n\nChange DHCP_RULE_PORT to use 4 and 6 as keys. Add \u0027ethertype\u0027 as a key for both 4 and 6 with a value of q_const.IPv4 and q_const.IPv6 respectively.\n\nDHCP_RULE_PORT \u003d {4: (67, 68, q_const.IPv4), 6: (547, 546, q_const.IPv6)}\n\nThis code transforms to:\n\nsource_port, dest_port, ethertype \u003d DHCP_RULE_PORT[netaddr.IPAddress(dhcp_ip).version]\n\nAlso, you don\u0027t need the else and return on lines 393 and 394. We\u0027ll all be long gone when IPv8 comes out :)","commit_id":"de18ea677f492ef4183a27c4838334aa88265f4d"},{"author":{"_account_id":7183,"name":"Xu Han Peng","email":"xuhanp@linux.vnet.ibm.com","username":"xuhanp"},"change_message_id":"e8a68bd0c5b12117ba8a3aadd77fc6bdfe65d59b","unresolved":false,"context_lines":[{"line_number":381,"context_line":""},{"line_number":382,"context_line":"    def _add_ingress_dhcp_rule(self, port, ips):"},{"line_number":383,"context_line":"        dhcp_ips \u003d ips.get(port[\u0027network_id\u0027])"},{"line_number":384,"context_line":"        for dhcp_ip in dhcp_ips:"},{"line_number":385,"context_line":"            if netaddr.IPAddress(dhcp_ip).version \u003d\u003d 4:"},{"line_number":386,"context_line":"                source_port \u003d DHCP_RULE_PORT[q_const.IPv4][\u0027source_port\u0027]"},{"line_number":387,"context_line":"                dest_port \u003d DHCP_RULE_PORT[q_const.IPv4][\u0027dest_port\u0027]"}],"source_content_type":"text/x-python","patch_set":6,"id":"fa98f980_6002ba70","line":384,"in_reply_to":"fa98f980_d001dfaf","updated":"2014-09-10 10:49:41.000000000","message":"Done","commit_id":"de18ea677f492ef4183a27c4838334aa88265f4d"},{"author":{"_account_id":105,"name":"Kyle Mestery","email":"mestery@mestery.com","username":"mestery"},"change_message_id":"884537dff70ec7aee12b575999d6d47aa3515ac9","unresolved":false,"context_lines":[{"line_number":381,"context_line":""},{"line_number":382,"context_line":"    def _add_ingress_dhcp_rule(self, port, ips):"},{"line_number":383,"context_line":"        dhcp_ips \u003d ips.get(port[\u0027network_id\u0027])"},{"line_number":384,"context_line":"        for dhcp_ip in dhcp_ips:"},{"line_number":385,"context_line":"            if netaddr.IPAddress(dhcp_ip).version \u003d\u003d 4:"},{"line_number":386,"context_line":"                source_port \u003d DHCP_RULE_PORT[q_const.IPv4][\u0027source_port\u0027]"},{"line_number":387,"context_line":"                dest_port \u003d DHCP_RULE_PORT[q_const.IPv4][\u0027dest_port\u0027]"}],"source_content_type":"text/x-python","patch_set":6,"id":"fa98f980_8574299d","line":384,"in_reply_to":"fa98f980_d001dfaf","updated":"2014-09-09 14:53:46.000000000","message":"Famous last words Assaf. :)","commit_id":"de18ea677f492ef4183a27c4838334aa88265f4d"}],"neutron/tests/unit/bigswitch/test_base.py":[{"author":{"_account_id":7515,"name":"Jian LI","email":"ljianbj@cn.ibm.com","username":"leejian0612"},"change_message_id":"2741e8c95ed3ebd190fce9c10c7c034b14691ef0","unresolved":false,"context_lines":[{"line_number":52,"context_line":"                              os.path.join(etc_path, \u0027ssl\u0027), \u0027RESTPROXY\u0027)"},{"line_number":53,"context_line":"        # The mock interferes with HTTP(S) connection caching"},{"line_number":54,"context_line":"        cfg.CONF.set_override(\u0027cache_connections\u0027, False, \u0027RESTPROXY\u0027)"},{"line_number":55,"context_line":"        cfg.CONF.set_override(\u0027add_meta_server_route\u0027, False, \u0027RESTPROXY\u0027)"},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"    def setup_patches(self):"},{"line_number":58,"context_line":"        self.plugin_notifier_p \u003d mock.patch(NOTIFIER)"}],"source_content_type":"text/x-python","patch_set":2,"id":"baada198_4f5ed113","line":55,"updated":"2014-07-02 02:55:14.000000000","message":"when add_meta_server_route is true, it will add a default route to forward metadata request from VMs to the dhcp servers ,this is useful especially when there is no a gateway port in ipv4 version, so I think it\u0027s more reasonable to forbit it when the network ,which the dhcp server belong to, only hava ipv6 subnets!","commit_id":"74ab7a27b8816ea19e0dc9ae56e21cf384329239"}],"neutron/tests/unit/test_security_groups_rpc.py":[{"author":{"_account_id":8873,"name":"Assaf Muller","email":"amuller@redhat.com","username":"amuller"},"change_message_id":"370b976c3b960b65a95f758c4ff409805466f67e","unresolved":false,"context_lines":[{"line_number":531,"context_line":"                             \u0027source_ip_prefix\u0027: fake_gateway,"},{"line_number":532,"context_line":"                             \u0027source_port_range_min\u0027: const.ICMPV6_TYPE_RA},"},{"line_number":533,"context_line":"                            {\u0027direction\u0027: \u0027ingress\u0027,"},{"line_number":534,"context_line":"                             \u0027ethertype\u0027: const.IPv6,"},{"line_number":535,"context_line":"                             \u0027port_range_max\u0027: 546,"},{"line_number":536,"context_line":"                             \u0027port_range_min\u0027: 546,"},{"line_number":537,"context_line":"                             \u0027protocol\u0027: const.PROTO_NAME_UDP,"}],"source_content_type":"text/x-python","patch_set":6,"id":"fa98f980_5025ef59","line":534,"updated":"2014-09-06 09:13:45.000000000","message":"You might want to reuse const values here.","commit_id":"de18ea677f492ef4183a27c4838334aa88265f4d"},{"author":{"_account_id":7183,"name":"Xu Han Peng","email":"xuhanp@linux.vnet.ibm.com","username":"xuhanp"},"change_message_id":"e8a68bd0c5b12117ba8a3aadd77fc6bdfe65d59b","unresolved":false,"context_lines":[{"line_number":531,"context_line":"                             \u0027source_ip_prefix\u0027: fake_gateway,"},{"line_number":532,"context_line":"                             \u0027source_port_range_min\u0027: const.ICMPV6_TYPE_RA},"},{"line_number":533,"context_line":"                            {\u0027direction\u0027: \u0027ingress\u0027,"},{"line_number":534,"context_line":"                             \u0027ethertype\u0027: const.IPv6,"},{"line_number":535,"context_line":"                             \u0027port_range_max\u0027: 546,"},{"line_number":536,"context_line":"                             \u0027port_range_min\u0027: 546,"},{"line_number":537,"context_line":"                             \u0027protocol\u0027: const.PROTO_NAME_UDP,"}],"source_content_type":"text/x-python","patch_set":6,"id":"fa98f980_60ec7a90","line":534,"in_reply_to":"fa98f980_5025ef59","updated":"2014-09-10 10:49:41.000000000","message":"Done","commit_id":"de18ea677f492ef4183a27c4838334aa88265f4d"}]}
