)]}'
{"nova/tests/test_libvirt.py":[{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"2dc35c88ad717aea5970c67714892de98f0e126c","unresolved":false,"context_lines":[{"line_number":3299,"context_line":"            return dhcp_server"},{"line_number":3300,"context_line":""},{"line_number":3301,"context_line":"        for vif in network_info:"},{"line_number":3302,"context_line":"        # TODO(ijw)"},{"line_number":3303,"context_line":"            if dhcp_server(vif):"},{"line_number":3304,"context_line":"                allow_dhcp \u003d True"},{"line_number":3305,"context_line":"                break"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAALH%2F%2FhmU%3D","line":3302,"updated":"2012-09-04 14:41:12.000000000","message":"Are there any TODO remaining? If so, could you describe what you think? Otherwise please remove it.","commit_id":"7faf8f1b10a8390ca9a568294b6be6f9258a3e1d"},{"author":{"_account_id":3217,"name":"Ian Wells","username":"ijw-ubuntu"},"change_message_id":"ba39862681b6b2222c5c1d099061f3fdf465fcb3","unresolved":false,"context_lines":[{"line_number":3299,"context_line":"            return dhcp_server"},{"line_number":3300,"context_line":""},{"line_number":3301,"context_line":"        for vif in network_info:"},{"line_number":3302,"context_line":"        # TODO(ijw)"},{"line_number":3303,"context_line":"            if dhcp_server(vif):"},{"line_number":3304,"context_line":"                allow_dhcp \u003d True"},{"line_number":3305,"context_line":"                break"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAALH%2F%2FhaA%3D","line":3302,"in_reply_to":"AAAALH%2F%2FhmU%3D","updated":"2012-09-04 17:06:29.000000000","message":"Done","commit_id":"7faf8f1b10a8390ca9a568294b6be6f9258a3e1d"}],"nova/tests/utils.py":[{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"2dc35c88ad717aea5970c67714892de98f0e126c","unresolved":false,"context_lines":[{"line_number":72,"context_line":"    return instance_ref"},{"line_number":73,"context_line":""},{"line_number":74,"context_line":""},{"line_number":75,"context_line":"def get_test_network_info(count\u003d1):"},{"line_number":76,"context_line":"    \"\"\"Create a plausible network_info for virtualisation tests."},{"line_number":77,"context_line":""},{"line_number":78,"context_line":"    The actual content of this network_info is not significant - it is"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAALH%2F%2FhlM%3D","line":75,"updated":"2012-09-04 14:41:12.000000000","message":"Please consider using netaddr module. It is useful to manipulate IP addresses. fake_addr() and addr_from_cidr() are no longer required if you use netaddr. Please see below for details.","commit_id":"7faf8f1b10a8390ca9a568294b6be6f9258a3e1d"},{"author":{"_account_id":3217,"name":"Ian Wells","username":"ijw-ubuntu"},"change_message_id":"ba39862681b6b2222c5c1d099061f3fdf465fcb3","unresolved":false,"context_lines":[{"line_number":72,"context_line":"    return instance_ref"},{"line_number":73,"context_line":""},{"line_number":74,"context_line":""},{"line_number":75,"context_line":"def get_test_network_info(count\u003d1):"},{"line_number":76,"context_line":"    \"\"\"Create a plausible network_info for virtualisation tests."},{"line_number":77,"context_line":""},{"line_number":78,"context_line":"    The actual content of this network_info is not significant - it is"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAALH%2F%2FhZ8%3D","line":75,"in_reply_to":"AAAALH%2F%2FhlM%3D","updated":"2012-09-04 17:06:29.000000000","message":"Done","commit_id":"7faf8f1b10a8390ca9a568294b6be6f9258a3e1d"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"2dc35c88ad717aea5970c67714892de98f0e126c","unresolved":false,"context_lines":[{"line_number":114,"context_line":""},{"line_number":115,"context_line":"    def new_subnet(cidr, is_ipv6):"},{"line_number":116,"context_line":"        dns \u003d fake_addr(cidr, \u0027253\u0027, is_ipv6)"},{"line_number":117,"context_line":"        gateway \u003d fake_addr(cidr, \u0027254\u0027, is_ipv6)"},{"line_number":118,"context_line":""},{"line_number":119,"context_line":"        return model.Subnet(cidr\u003dcidr,"},{"line_number":120,"context_line":"                            dns\u003d[dns],"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAALH%2F%2FhlY%3D","line":117,"updated":"2012-09-04 14:41:12.000000000","message":"str(netaddr.IPAddress(netaddr.IPNetwork(\u002710.56.2.0/24\u0027).last - 1)) will return \u002710.56.2.254\u0027. IPv6 address can be handled transparently and is_ipv6 flag is no longer required.","commit_id":"7faf8f1b10a8390ca9a568294b6be6f9258a3e1d"},{"author":{"_account_id":3217,"name":"Ian Wells","username":"ijw-ubuntu"},"change_message_id":"ba39862681b6b2222c5c1d099061f3fdf465fcb3","unresolved":false,"context_lines":[{"line_number":114,"context_line":""},{"line_number":115,"context_line":"    def new_subnet(cidr, is_ipv6):"},{"line_number":116,"context_line":"        dns \u003d fake_addr(cidr, \u0027253\u0027, is_ipv6)"},{"line_number":117,"context_line":"        gateway \u003d fake_addr(cidr, \u0027254\u0027, is_ipv6)"},{"line_number":118,"context_line":""},{"line_number":119,"context_line":"        return model.Subnet(cidr\u003dcidr,"},{"line_number":120,"context_line":"                            dns\u003d[dns],"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAALH%2F%2FhZw%3D","line":117,"in_reply_to":"AAAALH%2F%2FhlY%3D","updated":"2012-09-04 17:06:29.000000000","message":"Done","commit_id":"7faf8f1b10a8390ca9a568294b6be6f9258a3e1d"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"2dc35c88ad717aea5970c67714892de98f0e126c","unresolved":false,"context_lines":[{"line_number":119,"context_line":"        return model.Subnet(cidr\u003dcidr,"},{"line_number":120,"context_line":"                            dns\u003d[dns],"},{"line_number":121,"context_line":"                            gateway\u003dgateway,"},{"line_number":122,"context_line":"                            version\u003d6 if is_ipv6 else 4,"},{"line_number":123,"context_line":"                            ips\u003d[new_ip(addr_from_cidr(cidr), is_ipv6)])"},{"line_number":124,"context_line":""},{"line_number":125,"context_line":"    # TODO(IJW): CIDR is address: blank non-sig cidr bits before"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAALH%2F%2FhlQ%3D","line":122,"updated":"2012-09-04 14:41:12.000000000","message":"When using netaddr, you can get ip_version by\n\"netaddr.IPNetwork(\u002710.56.2.0/24\u0027).version\" or \"netaddr.IPAddress(\u00271.2.3.4\u0027).version\".","commit_id":"7faf8f1b10a8390ca9a568294b6be6f9258a3e1d"},{"author":{"_account_id":3217,"name":"Ian Wells","username":"ijw-ubuntu"},"change_message_id":"ba39862681b6b2222c5c1d099061f3fdf465fcb3","unresolved":false,"context_lines":[{"line_number":119,"context_line":"        return model.Subnet(cidr\u003dcidr,"},{"line_number":120,"context_line":"                            dns\u003d[dns],"},{"line_number":121,"context_line":"                            gateway\u003dgateway,"},{"line_number":122,"context_line":"                            version\u003d6 if is_ipv6 else 4,"},{"line_number":123,"context_line":"                            ips\u003d[new_ip(addr_from_cidr(cidr), is_ipv6)])"},{"line_number":124,"context_line":""},{"line_number":125,"context_line":"    # TODO(IJW): CIDR is address: blank non-sig cidr bits before"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAALH%2F%2FhZs%3D","line":122,"in_reply_to":"AAAALH%2F%2FhlQ%3D","updated":"2012-09-04 17:06:29.000000000","message":"I haven\u0027t bothered since the v4 and v6 input lists are separate.  A good recommendation if anyone wants to make this test case more complex, but not worth it right now.","commit_id":"7faf8f1b10a8390ca9a568294b6be6f9258a3e1d"},{"author":{"_account_id":67,"name":"Vish Ishaya","email":"vishvananda@gmail.com","username":"vishvananda"},"change_message_id":"13fd142a4795fc277a3f8fa80ca84f2177cd4def","unresolved":false,"context_lines":[{"line_number":14,"context_line":"#    License for the specific language governing permissions and limitations"},{"line_number":15,"context_line":"#"},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"import netaddr"},{"line_number":18,"context_line":"import nova.context"},{"line_number":19,"context_line":"import nova.db"},{"line_number":20,"context_line":"import nova.flags"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAALH%2F%2Fgs4%3D","line":17,"updated":"2012-09-05 13:10:44.000000000","message":"should have an extra line here","commit_id":"b87d8de1b3018503cad1bb87d9205068b1ec45ed"},{"author":{"_account_id":3217,"name":"Ian Wells","username":"ijw-ubuntu"},"change_message_id":"726f73ed41a56dc4f5cb96cc2c07ed9d8479455b","unresolved":false,"context_lines":[{"line_number":14,"context_line":"#    License for the specific language governing permissions and limitations"},{"line_number":15,"context_line":"#"},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"import netaddr"},{"line_number":18,"context_line":"import nova.context"},{"line_number":19,"context_line":"import nova.db"},{"line_number":20,"context_line":"import nova.flags"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAALH%2F%2Fgss%3D","line":17,"in_reply_to":"AAAALH%2F%2Fgs4%3D","updated":"2012-09-05 13:17:27.000000000","message":"Done","commit_id":"b87d8de1b3018503cad1bb87d9205068b1ec45ed"}],"nova/virt/libvirt/firewall.py":[{"author":{"_account_id":3217,"name":"Ian Wells","username":"ijw-ubuntu"},"change_message_id":"14884eb2a264ff33a06e3e06b7b9519613eec69b","unresolved":false,"context_lines":[{"line_number":44,"context_line":"    # Second, only the first subnet is checked now we\u0027re on the"},{"line_number":45,"context_line":"    # new net model."},{"line_number":46,"context_line":"    # Third, none of the other drivers seem to have firewall exceptions"},{"line_number":47,"context_line":"    # for DHCP, only libvirt."},{"line_number":48,"context_line":"    # I\u0027ve just preserved this existing behaviour but it probably"},{"line_number":49,"context_line":"    # wants to change following discussion."},{"line_number":50,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAALH%2F%2Fk88%3D","line":47,"updated":"2012-08-29 22:29:05.000000000","message":"Aha.  XenAPI uses nova.virt.firewall, hence my confusion.  It does have DHCP rules: they\u0027re not specific to interfaces but are specific to source IP addresses (unlike here) and they don\u0027t use the gateway address as a fallback (also unlike here; I copied that from the previous implementation).","commit_id":"c944c531ef06e44ec3e1d92065c5adc87c152b1c"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"4867850b173190397d22d007c7df7039ab3568f0","unresolved":false,"context_lines":[{"line_number":48,"context_line":"    # I\u0027ve just preserved this existing behaviour but it probably"},{"line_number":49,"context_line":"    # wants to change following discussion."},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"    def get_ip(ip):"},{"line_number":52,"context_line":"        if not ip:"},{"line_number":53,"context_line":"            return None"},{"line_number":54,"context_line":"        return ip[\u0027address\u0027]"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAALH%2F%2FkwI%3D","line":51,"updated":"2012-08-30 03:52:55.000000000","message":"This function seems not be called.","commit_id":"c944c531ef06e44ec3e1d92065c5adc87c152b1c"},{"author":{"_account_id":3217,"name":"Ian Wells","username":"ijw-ubuntu"},"change_message_id":"3e19dcc5ff6a4c75bfe3199643d9892d9736e9c1","unresolved":false,"context_lines":[{"line_number":48,"context_line":"    # I\u0027ve just preserved this existing behaviour but it probably"},{"line_number":49,"context_line":"    # wants to change following discussion."},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"    def get_ip(ip):"},{"line_number":52,"context_line":"        if not ip:"},{"line_number":53,"context_line":"            return None"},{"line_number":54,"context_line":"        return ip[\u0027address\u0027]"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAALH%2F%2FkmI%3D","line":51,"in_reply_to":"AAAALH%2F%2FkwI%3D","updated":"2012-08-30 11:19:42.000000000","message":"It\u0027s supposed to be get_ip(subnet[\u0027gateway\u0027]) below - gateway is a FixedIP and dhcp_server is not, oddly.  Will fix.","commit_id":"c944c531ef06e44ec3e1d92065c5adc87c152b1c"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"4867850b173190397d22d007c7df7039ab3568f0","unresolved":false,"context_lines":[{"line_number":57,"context_line":"        if vif[\u0027network\u0027] and vif[\u0027network\u0027][\u0027subnets\u0027]:"},{"line_number":58,"context_line":"            for subnet in vif[\u0027network\u0027][\u0027subnets\u0027]:"},{"line_number":59,"context_line":"                if subnet[\u0027version\u0027] \u003d\u003d 4:"},{"line_number":60,"context_line":"                    if subnet.get_meta(\u0027dhcp_server\u0027, subnet[\u0027gateway\u0027]):"},{"line_number":61,"context_line":"                        return True"},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"    return False"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAALH%2F%2FkwA%3D","line":60,"updated":"2012-08-30 03:52:55.000000000","message":"Why do we need to pass subnet[\u0027gateway\u0027] as default for get_meta?","commit_id":"c944c531ef06e44ec3e1d92065c5adc87c152b1c"},{"author":{"_account_id":3217,"name":"Ian Wells","username":"ijw-ubuntu"},"change_message_id":"ffb094752f5c909a8b0fca74129604e0a27436b0","unresolved":false,"context_lines":[{"line_number":57,"context_line":"        if vif[\u0027network\u0027] and vif[\u0027network\u0027][\u0027subnets\u0027]:"},{"line_number":58,"context_line":"            for subnet in vif[\u0027network\u0027][\u0027subnets\u0027]:"},{"line_number":59,"context_line":"                if subnet[\u0027version\u0027] \u003d\u003d 4:"},{"line_number":60,"context_line":"                    if subnet.get_meta(\u0027dhcp_server\u0027, subnet[\u0027gateway\u0027]):"},{"line_number":61,"context_line":"                        return True"},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"    return False"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAALH%2F%2FiVU%3D","line":60,"in_reply_to":"AAAALH%2F%2FkmM%3D","updated":"2012-09-04 14:27:14.000000000","message":"Filed a bug on the original behaviour.","commit_id":"c944c531ef06e44ec3e1d92065c5adc87c152b1c"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"5d5e81154e1dd6eb643c08ce435bfeaa435b56aa","unresolved":false,"context_lines":[{"line_number":57,"context_line":"        if vif[\u0027network\u0027] and vif[\u0027network\u0027][\u0027subnets\u0027]:"},{"line_number":58,"context_line":"            for subnet in vif[\u0027network\u0027][\u0027subnets\u0027]:"},{"line_number":59,"context_line":"                if subnet[\u0027version\u0027] \u003d\u003d 4:"},{"line_number":60,"context_line":"                    if subnet.get_meta(\u0027dhcp_server\u0027, subnet[\u0027gateway\u0027]):"},{"line_number":61,"context_line":"                        return True"},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"    return False"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAALH%2F%2Fhnw%3D","line":60,"in_reply_to":"AAAALH%2F%2FkmM%3D","updated":"2012-09-04 14:19:57.000000000","message":"Sound reasonable. If it is a problem to be fixed, we can handle it as a separate bug.","commit_id":"c944c531ef06e44ec3e1d92065c5adc87c152b1c"},{"author":{"_account_id":3217,"name":"Ian Wells","username":"ijw-ubuntu"},"change_message_id":"3e19dcc5ff6a4c75bfe3199643d9892d9736e9c1","unresolved":false,"context_lines":[{"line_number":57,"context_line":"        if vif[\u0027network\u0027] and vif[\u0027network\u0027][\u0027subnets\u0027]:"},{"line_number":58,"context_line":"            for subnet in vif[\u0027network\u0027][\u0027subnets\u0027]:"},{"line_number":59,"context_line":"                if subnet[\u0027version\u0027] \u003d\u003d 4:"},{"line_number":60,"context_line":"                    if subnet.get_meta(\u0027dhcp_server\u0027, subnet[\u0027gateway\u0027]):"},{"line_number":61,"context_line":"                        return True"},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"    return False"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAALH%2F%2FkmM%3D","line":60,"in_reply_to":"AAAALH%2F%2FkwA%3D","updated":"2012-08-30 11:19:42.000000000","message":"This is, as I say, a direct copy of the legacy code in network/model.py, def NetworkInfo.legacy().  I don\u0027t know why it\u0027s done that way but I was trying not to change any behaviour.","commit_id":"c944c531ef06e44ec3e1d92065c5adc87c152b1c"}],"nova/virt/libvirt/vif.py":[{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"4867850b173190397d22d007c7df7039ab3568f0","unresolved":false,"context_lines":[{"line_number":86,"context_line":"                return None"},{"line_number":87,"context_line":"            return ip[\u0027address\u0027]"},{"line_number":88,"context_line":""},{"line_number":89,"context_line":"        conf.add_filter_param(\"IP\", get_ip(subnet_v4[\u0027ips\u0027][0]))"},{"line_number":90,"context_line":""},{"line_number":91,"context_line":"        gateway \u003d get_ip(subnet_v4[\u0027gateway\u0027])"},{"line_number":92,"context_line":"        dhcp_server \u003d subnet_v4.get_meta(\u0027dhcp_server\u0027, gateway)"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAALH%2F%2FkvQ%3D","line":89,"updated":"2012-08-30 03:52:55.000000000","message":"I think we need to consider the case subnet_v4 is None.\n\nIn my understanding, LibvirtBridgeDriver is used with Flat(DHCP) and VLAN manager and we cannot use both IPv4 and IPv6 for one network.\nIf my understanding is correct, either of subnet_v4 and subnet_v6 is None here. Can we map both IPv4 and IPv6 to one network when quantum is not enabled?","commit_id":"c944c531ef06e44ec3e1d92065c5adc87c152b1c"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"5d5e81154e1dd6eb643c08ce435bfeaa435b56aa","unresolved":false,"context_lines":[{"line_number":86,"context_line":"                return None"},{"line_number":87,"context_line":"            return ip[\u0027address\u0027]"},{"line_number":88,"context_line":""},{"line_number":89,"context_line":"        conf.add_filter_param(\"IP\", get_ip(subnet_v4[\u0027ips\u0027][0]))"},{"line_number":90,"context_line":""},{"line_number":91,"context_line":"        gateway \u003d get_ip(subnet_v4[\u0027gateway\u0027])"},{"line_number":92,"context_line":"        dhcp_server \u003d subnet_v4.get_meta(\u0027dhcp_server\u0027, gateway)"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAALH%2F%2FhnY%3D","line":89,"in_reply_to":"AAAALH%2F%2FklQ%3D","updated":"2012-09-04 14:19:57.000000000","message":"I also noticed that the current nova does not support IPv6 only network and IPv4 network is always required. So I agree with your direction at the moment.","commit_id":"c944c531ef06e44ec3e1d92065c5adc87c152b1c"},{"author":{"_account_id":3217,"name":"Ian Wells","username":"ijw-ubuntu"},"change_message_id":"ffb094752f5c909a8b0fca74129604e0a27436b0","unresolved":false,"context_lines":[{"line_number":86,"context_line":"                return None"},{"line_number":87,"context_line":"            return ip[\u0027address\u0027]"},{"line_number":88,"context_line":""},{"line_number":89,"context_line":"        conf.add_filter_param(\"IP\", get_ip(subnet_v4[\u0027ips\u0027][0]))"},{"line_number":90,"context_line":""},{"line_number":91,"context_line":"        gateway \u003d get_ip(subnet_v4[\u0027gateway\u0027])"},{"line_number":92,"context_line":"        dhcp_server \u003d subnet_v4.get_meta(\u0027dhcp_server\u0027, gateway)"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAALH%2F%2FiVQ%3D","line":89,"in_reply_to":"AAAALH%2F%2FklQ%3D","updated":"2012-09-04 14:27:14.000000000","message":"I\u0027ve changed this to take the first subnet of any type, anyway.  For a bridged network, I think this will be fine.","commit_id":"c944c531ef06e44ec3e1d92065c5adc87c152b1c"},{"author":{"_account_id":3217,"name":"Ian Wells","username":"ijw-ubuntu"},"change_message_id":"3e19dcc5ff6a4c75bfe3199643d9892d9736e9c1","unresolved":false,"context_lines":[{"line_number":86,"context_line":"                return None"},{"line_number":87,"context_line":"            return ip[\u0027address\u0027]"},{"line_number":88,"context_line":""},{"line_number":89,"context_line":"        conf.add_filter_param(\"IP\", get_ip(subnet_v4[\u0027ips\u0027][0]))"},{"line_number":90,"context_line":""},{"line_number":91,"context_line":"        gateway \u003d get_ip(subnet_v4[\u0027gateway\u0027])"},{"line_number":92,"context_line":"        dhcp_server \u003d subnet_v4.get_meta(\u0027dhcp_server\u0027, gateway)"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAALH%2F%2FklQ%3D","line":89,"in_reply_to":"AAAALH%2F%2FkvQ%3D","updated":"2012-08-30 11:19:42.000000000","message":"I think this is a mistake in my assumptions (see below).  I assumed what we were using DHCP for v4 only, but we appear to be using IPv4 DHCP for everything.  I\u0027ll change the above to take the first subnet regardless of type.","commit_id":"c944c531ef06e44ec3e1d92065c5adc87c152b1c"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"4867850b173190397d22d007c7df7039ab3568f0","unresolved":false,"context_lines":[{"line_number":89,"context_line":"        conf.add_filter_param(\"IP\", get_ip(subnet_v4[\u0027ips\u0027][0]))"},{"line_number":90,"context_line":""},{"line_number":91,"context_line":"        gateway \u003d get_ip(subnet_v4[\u0027gateway\u0027])"},{"line_number":92,"context_line":"        dhcp_server \u003d subnet_v4.get_meta(\u0027dhcp_server\u0027, gateway)"},{"line_number":93,"context_line":"        if dhcp_server:"},{"line_number":94,"context_line":"            conf.add_filter_param(\"DHCPSERVER\", dhcp_server)"},{"line_number":95,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAALH%2F%2Fkvk%3D","line":92,"updated":"2012-08-30 03:52:55.000000000","message":"I am not sure why we need to use gateway as a default value of dhcp_server.","commit_id":"c944c531ef06e44ec3e1d92065c5adc87c152b1c"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"5d5e81154e1dd6eb643c08ce435bfeaa435b56aa","unresolved":false,"context_lines":[{"line_number":89,"context_line":"        conf.add_filter_param(\"IP\", get_ip(subnet_v4[\u0027ips\u0027][0]))"},{"line_number":90,"context_line":""},{"line_number":91,"context_line":"        gateway \u003d get_ip(subnet_v4[\u0027gateway\u0027])"},{"line_number":92,"context_line":"        dhcp_server \u003d subnet_v4.get_meta(\u0027dhcp_server\u0027, gateway)"},{"line_number":93,"context_line":"        if dhcp_server:"},{"line_number":94,"context_line":"            conf.add_filter_param(\"DHCPSERVER\", dhcp_server)"},{"line_number":95,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAALH%2F%2FhnU%3D","line":92,"in_reply_to":"AAAALH%2F%2FkmA%3D","updated":"2012-09-04 14:19:57.000000000","message":"Agree with you.","commit_id":"c944c531ef06e44ec3e1d92065c5adc87c152b1c"},{"author":{"_account_id":3217,"name":"Ian Wells","username":"ijw-ubuntu"},"change_message_id":"3e19dcc5ff6a4c75bfe3199643d9892d9736e9c1","unresolved":false,"context_lines":[{"line_number":89,"context_line":"        conf.add_filter_param(\"IP\", get_ip(subnet_v4[\u0027ips\u0027][0]))"},{"line_number":90,"context_line":""},{"line_number":91,"context_line":"        gateway \u003d get_ip(subnet_v4[\u0027gateway\u0027])"},{"line_number":92,"context_line":"        dhcp_server \u003d subnet_v4.get_meta(\u0027dhcp_server\u0027, gateway)"},{"line_number":93,"context_line":"        if dhcp_server:"},{"line_number":94,"context_line":"            conf.add_filter_param(\"DHCPSERVER\", dhcp_server)"},{"line_number":95,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAALH%2F%2FkmA%3D","line":92,"in_reply_to":"AAAALH%2F%2Fkvk%3D","updated":"2012-08-30 11:19:42.000000000","message":"See comment in firewall.py.  (I think it\u0027s wrong too, happy to fix with agreement but I didn\u0027t want to both change behaviour and fix  the original bug at the same time)","commit_id":"c944c531ef06e44ec3e1d92065c5adc87c152b1c"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"4867850b173190397d22d007c7df7039ab3568f0","unresolved":false,"context_lines":[{"line_number":91,"context_line":"        gateway \u003d get_ip(subnet_v4[\u0027gateway\u0027])"},{"line_number":92,"context_line":"        dhcp_server \u003d subnet_v4.get_meta(\u0027dhcp_server\u0027, gateway)"},{"line_number":93,"context_line":"        if dhcp_server:"},{"line_number":94,"context_line":"            conf.add_filter_param(\"DHCPSERVER\", dhcp_server)"},{"line_number":95,"context_line":""},{"line_number":96,"context_line":"        if FLAGS.use_ipv6:"},{"line_number":97,"context_line":"            gateway_v6 \u003d get_ip(subnet_v6[\u0027gateway\u0027])"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAALH%2F%2FkvA%3D","line":94,"updated":"2012-08-30 03:52:55.000000000","message":"L.89 to 94 are IPv4 specific in the new code. On the other hand, the original code (L.66-68) seems handle IPv4 and IPv6 case. Is it ok?","commit_id":"c944c531ef06e44ec3e1d92065c5adc87c152b1c"},{"author":{"_account_id":3217,"name":"Ian Wells","username":"ijw-ubuntu"},"change_message_id":"3e19dcc5ff6a4c75bfe3199643d9892d9736e9c1","unresolved":false,"context_lines":[{"line_number":97,"context_line":"            gateway_v6 \u003d get_ip(subnet_v6[\u0027gateway\u0027])"},{"line_number":98,"context_line":"            conf.add_filter_param(\"RASERVER\","},{"line_number":99,"context_line":"                                  gateway_v6 + \"/128\")"},{"line_number":100,"context_line":""},{"line_number":101,"context_line":"        if FLAGS.allow_same_net_traffic:"},{"line_number":102,"context_line":"            net, mask \u003d netutils.get_net_and_mask(subnet_v4[\u0027cidr\u0027])"},{"line_number":103,"context_line":"            conf.add_filter_param(\"PROJNET\", net)"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAALH%2F%2Fkl0%3D","line":100,"updated":"2012-08-30 11:19:42.000000000","message":"This is the source of my thinking about DHCP: I assumed this RASERVER was supposed to cover NDP for the IPv6 case.  Looking into it, I notice that it\u0027s not actually used in any of the filters so is probably dead code.","commit_id":"c944c531ef06e44ec3e1d92065c5adc87c152b1c"},{"author":{"_account_id":3217,"name":"Ian Wells","username":"ijw-ubuntu"},"change_message_id":"ffb094752f5c909a8b0fca74129604e0a27436b0","unresolved":false,"context_lines":[{"line_number":97,"context_line":"            gateway_v6 \u003d get_ip(subnet_v6[\u0027gateway\u0027])"},{"line_number":98,"context_line":"            conf.add_filter_param(\"RASERVER\","},{"line_number":99,"context_line":"                                  gateway_v6 + \"/128\")"},{"line_number":100,"context_line":""},{"line_number":101,"context_line":"        if FLAGS.allow_same_net_traffic:"},{"line_number":102,"context_line":"            net, mask \u003d netutils.get_net_and_mask(subnet_v4[\u0027cidr\u0027])"},{"line_number":103,"context_line":"            conf.add_filter_param(\"PROJNET\", net)"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAALH%2F%2FhmQ%3D","line":100,"in_reply_to":"AAAALH%2F%2Fhno%3D","updated":"2012-09-04 14:27:14.000000000","message":"I thin it\u0027s wise to remove the dead code, but I\u0027ll do it in a separate change when this is committed.","commit_id":"c944c531ef06e44ec3e1d92065c5adc87c152b1c"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"5d5e81154e1dd6eb643c08ce435bfeaa435b56aa","unresolved":false,"context_lines":[{"line_number":97,"context_line":"            gateway_v6 \u003d get_ip(subnet_v6[\u0027gateway\u0027])"},{"line_number":98,"context_line":"            conf.add_filter_param(\"RASERVER\","},{"line_number":99,"context_line":"                                  gateway_v6 + \"/128\")"},{"line_number":100,"context_line":""},{"line_number":101,"context_line":"        if FLAGS.allow_same_net_traffic:"},{"line_number":102,"context_line":"            net, mask \u003d netutils.get_net_and_mask(subnet_v4[\u0027cidr\u0027])"},{"line_number":103,"context_line":"            conf.add_filter_param(\"PROJNET\", net)"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAALH%2F%2Fhno%3D","line":100,"in_reply_to":"AAAALH%2F%2Fkl0%3D","updated":"2012-09-04 14:19:57.000000000","message":"It seems to be a dead code. RASERVER is not referred in any other place (by grepping the code).","commit_id":"c944c531ef06e44ec3e1d92065c5adc87c152b1c"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"4867850b173190397d22d007c7df7039ab3568f0","unresolved":false,"context_lines":[{"line_number":152,"context_line":"    \"\"\"Return the interface ID ffrom this VIF object.\"\"\""},{"line_number":153,"context_line":""},{"line_number":154,"context_line":"    iface_id \u003d vif[\u0027id\u0027]"},{"line_number":155,"context_line":"    return iface_id"},{"line_number":156,"context_line":""},{"line_number":157,"context_line":""},{"line_number":158,"context_line":"def _get_dev_name(vif):"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAALH%2F%2Fkv8%3D","line":155,"updated":"2012-08-30 03:52:55.000000000","message":"How about using \"return vif[\u0027id\u0027]\"?","commit_id":"c944c531ef06e44ec3e1d92065c5adc87c152b1c"},{"author":{"_account_id":3217,"name":"Ian Wells","username":"ijw-ubuntu"},"change_message_id":"3e19dcc5ff6a4c75bfe3199643d9892d9736e9c1","unresolved":false,"context_lines":[{"line_number":152,"context_line":"    \"\"\"Return the interface ID ffrom this VIF object.\"\"\""},{"line_number":153,"context_line":""},{"line_number":154,"context_line":"    iface_id \u003d vif[\u0027id\u0027]"},{"line_number":155,"context_line":"    return iface_id"},{"line_number":156,"context_line":""},{"line_number":157,"context_line":""},{"line_number":158,"context_line":"def _get_dev_name(vif):"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAALH%2F%2Fklk%3D","line":155,"in_reply_to":"AAAALH%2F%2Fkv8%3D","updated":"2012-08-30 11:19:42.000000000","message":"Done","commit_id":"c944c531ef06e44ec3e1d92065c5adc87c152b1c"}]}
