)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"41b35940a768e088e4f49a6fd0ca9f5d643c91c1","unresolved":false,"context_lines":[{"line_number":10,"context_line":"in particular for IPv6. Most applications and tools can work much better"},{"line_number":11,"context_line":"with the \"/prefixlen\" based CIDR notation."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"However, in the interest of backwards compatibility, changing the"},{"line_number":14,"context_line":"existing field should be avoided, so instead we add a new field to the"},{"line_number":15,"context_line":"output in the network metadata information accordingly."},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"Change-Id: I6fd2f1e50191b4fe1ab6c9d41065691f7cba60cb"},{"line_number":18,"context_line":"Partial-Bug: 1676363"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"bff0334d_c46fe725","line":15,"range":{"start_line":13,"start_character":0,"end_line":15,"end_character":55},"updated":"2017-04-12 12:54:27.000000000","message":"Good call","commit_id":"be6616cbde0370a66d5857515b5e1cc7c28a77ad"}],"nova/tests/unit/network/test_network_info.py":[{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"028b4b33faa7bdebe48d41d38b1df31c436ead90","unresolved":false,"context_lines":[{"line_number":890,"context_line":"                \u0027type\u0027: \u0027ipv4\u0027,"},{"line_number":891,"context_line":"                \u0027ip_address\u0027: \u002710.10.0.2\u0027,"},{"line_number":892,"context_line":"                \u0027netmask\u0027: \u0027255.255.255.0\u0027,"},{"line_number":893,"context_line":"                \u0027prefixlen\u0027: \u002724\u0027,"},{"line_number":894,"context_line":"                \u0027routes\u0027: ["},{"line_number":895,"context_line":"                    {"},{"line_number":896,"context_line":"                        \u0027network\u0027: \u00270.0.0.0\u0027,"}],"source_content_type":"text/x-python","patch_set":2,"id":"bff0334d_63c151e5","line":893,"updated":"2017-04-11 18:30:17.000000000","message":"why are netmask and prefixlen duplicated in the top-most block here instead of staying in the routes blocks below? Also, it seems odd (incorrect?) to have a static IPv4 address of 10.10.0.2 and a netmask of 255.255.255.0. A class A subnet would usually have a netmask of 255.0.0.0 and a prefixlen of 8, no?","commit_id":"0910fcb21c8ca979bfca2597423864ecccf20ac1"},{"author":{"_account_id":13252,"name":"Dr. Jens Harbott","display_name":"Jens Harbott (frickler)","email":"frickler@offenerstapel.de","username":"jrosenboom"},"change_message_id":"76708a258abec40ea4a3d4042f0d26d791a06a6f","unresolved":false,"context_lines":[{"line_number":890,"context_line":"                \u0027type\u0027: \u0027ipv4\u0027,"},{"line_number":891,"context_line":"                \u0027ip_address\u0027: \u002710.10.0.2\u0027,"},{"line_number":892,"context_line":"                \u0027netmask\u0027: \u0027255.255.255.0\u0027,"},{"line_number":893,"context_line":"                \u0027prefixlen\u0027: \u002724\u0027,"},{"line_number":894,"context_line":"                \u0027routes\u0027: ["},{"line_number":895,"context_line":"                    {"},{"line_number":896,"context_line":"                        \u0027network\u0027: \u00270.0.0.0\u0027,"}],"source_content_type":"text/x-python","patch_set":2,"id":"bff0334d_7aa0c490","line":893,"in_reply_to":"bff0334d_63c151e5","updated":"2017-04-12 05:25:07.000000000","message":"a) this is the netmask belonging to the IP address, creating a directly connected route when configured on an interface, so that the host knows which other hosts it can expect to reach in the same L2 domain without having to go via a router\nb) the netmask was there before, I only added the matching prefixlen\nc) classful routing has been obsoleted more than 20 years ago [1], since that time any netmask may be used with any IP address\n\nI do agree that all of these samples could be improved upon, in particular the route for 0.0.0.0/24 below, which is pretty nonsensical, but that wouldn\u0027t seem to fit into the scope of this patch\n\n[1] https://tools.ietf.org/html/rfc1519","commit_id":"0910fcb21c8ca979bfca2597423864ecccf20ac1"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"028b4b33faa7bdebe48d41d38b1df31c436ead90","unresolved":false,"context_lines":[{"line_number":894,"context_line":"                \u0027routes\u0027: ["},{"line_number":895,"context_line":"                    {"},{"line_number":896,"context_line":"                        \u0027network\u0027: \u00270.0.0.0\u0027,"},{"line_number":897,"context_line":"                        \u0027netmask\u0027: \u00270.0.0.0\u0027,"},{"line_number":898,"context_line":"                        \u0027prefixlen\u0027: \u00270\u0027,"},{"line_number":899,"context_line":"                        \u0027gateway\u0027: \u002710.10.0.1\u0027"},{"line_number":900,"context_line":"                    },"}],"source_content_type":"text/x-python","patch_set":2,"id":"bff0334d_43c40df5","line":897,"updated":"2017-04-11 18:30:17.000000000","message":"seems strange to have no netmask for a class A subnet (RFC1918 24-bit block/class A subnet is 10.0.0.0/8). or am I missing something obvious here?","commit_id":"0910fcb21c8ca979bfca2597423864ecccf20ac1"},{"author":{"_account_id":13252,"name":"Dr. Jens Harbott","display_name":"Jens Harbott (frickler)","email":"frickler@offenerstapel.de","username":"jrosenboom"},"change_message_id":"76708a258abec40ea4a3d4042f0d26d791a06a6f","unresolved":false,"context_lines":[{"line_number":894,"context_line":"                \u0027routes\u0027: ["},{"line_number":895,"context_line":"                    {"},{"line_number":896,"context_line":"                        \u0027network\u0027: \u00270.0.0.0\u0027,"},{"line_number":897,"context_line":"                        \u0027netmask\u0027: \u00270.0.0.0\u0027,"},{"line_number":898,"context_line":"                        \u0027prefixlen\u0027: \u00270\u0027,"},{"line_number":899,"context_line":"                        \u0027gateway\u0027: \u002710.10.0.1\u0027"},{"line_number":900,"context_line":"                    },"}],"source_content_type":"text/x-python","patch_set":2,"id":"bff0334d_bab3ece8","line":897,"in_reply_to":"bff0334d_43c40df5","updated":"2017-04-12 05:25:07.000000000","message":"no, this is the default route. you would configure this on your host via\n\nip route add default via 10.10.0.1\n\nwhere \"default\" is a shorthand for \"0.0.0.0/0.0.0.0\" or \"0.0.0.0/0\" in CIDR notation, i.e. you could as well do\n\nip route add 0/0 via 10.10.0.1\n\nFor this, it doesn\u0027t matter how you reach the gateway for this route.","commit_id":"0910fcb21c8ca979bfca2597423864ecccf20ac1"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"028b4b33faa7bdebe48d41d38b1df31c436ead90","unresolved":false,"context_lines":[{"line_number":895,"context_line":"                    {"},{"line_number":896,"context_line":"                        \u0027network\u0027: \u00270.0.0.0\u0027,"},{"line_number":897,"context_line":"                        \u0027netmask\u0027: \u00270.0.0.0\u0027,"},{"line_number":898,"context_line":"                        \u0027prefixlen\u0027: \u00270\u0027,"},{"line_number":899,"context_line":"                        \u0027gateway\u0027: \u002710.10.0.1\u0027"},{"line_number":900,"context_line":"                    },"},{"line_number":901,"context_line":"                    {"}],"source_content_type":"text/x-python","patch_set":2,"id":"bff0334d_23b7c988","line":898,"updated":"2017-04-11 18:30:17.000000000","message":"wouldn\u0027t this be 8 for a class A subnet?","commit_id":"0910fcb21c8ca979bfca2597423864ecccf20ac1"},{"author":{"_account_id":13252,"name":"Dr. Jens Harbott","display_name":"Jens Harbott (frickler)","email":"frickler@offenerstapel.de","username":"jrosenboom"},"change_message_id":"76708a258abec40ea4a3d4042f0d26d791a06a6f","unresolved":false,"context_lines":[{"line_number":895,"context_line":"                    {"},{"line_number":896,"context_line":"                        \u0027network\u0027: \u00270.0.0.0\u0027,"},{"line_number":897,"context_line":"                        \u0027netmask\u0027: \u00270.0.0.0\u0027,"},{"line_number":898,"context_line":"                        \u0027prefixlen\u0027: \u00270\u0027,"},{"line_number":899,"context_line":"                        \u0027gateway\u0027: \u002710.10.0.1\u0027"},{"line_number":900,"context_line":"                    },"},{"line_number":901,"context_line":"                    {"}],"source_content_type":"text/x-python","patch_set":2,"id":"bff0334d_5af2a09b","line":898,"in_reply_to":"bff0334d_23b7c988","updated":"2017-04-12 05:25:07.000000000","message":"see above","commit_id":"0910fcb21c8ca979bfca2597423864ecccf20ac1"}],"nova/virt/netutils.py":[{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"015653607ddd231c2abd3a5b8d73a1834cd37fcc","unresolved":false,"context_lines":[{"line_number":278,"context_line":"        \u0027link\u0027: link_id,"},{"line_number":279,"context_line":"        \u0027ip_address\u0027: address,"},{"line_number":280,"context_line":"        \u0027netmask\u0027: netmask,"},{"line_number":281,"context_line":"        \u0027prefixlen\u0027: str(netaddr.IPNetwork(subnet[\u0027cidr\u0027]).prefixlen),"},{"line_number":282,"context_line":"        \u0027routes\u0027: _get_default_route(version, subnet),"},{"line_number":283,"context_line":"        \u0027network_id\u0027: vif[\u0027network\u0027][\u0027id\u0027]"},{"line_number":284,"context_line":"    }"}],"source_content_type":"text/x-python","patch_set":2,"id":"bff0334d_1e089a25","line":281,"updated":"2017-04-11 18:36:04.000000000","message":"Also, any reason we want this to be a string instead of an integer? I think it\u0027s probably best to have a len/size be an integer...","commit_id":"0910fcb21c8ca979bfca2597423864ecccf20ac1"},{"author":{"_account_id":13252,"name":"Dr. Jens Harbott","display_name":"Jens Harbott (frickler)","email":"frickler@offenerstapel.de","username":"jrosenboom"},"change_message_id":"76708a258abec40ea4a3d4042f0d26d791a06a6f","unresolved":false,"context_lines":[{"line_number":278,"context_line":"        \u0027link\u0027: link_id,"},{"line_number":279,"context_line":"        \u0027ip_address\u0027: address,"},{"line_number":280,"context_line":"        \u0027netmask\u0027: netmask,"},{"line_number":281,"context_line":"        \u0027prefixlen\u0027: str(netaddr.IPNetwork(subnet[\u0027cidr\u0027]).prefixlen),"},{"line_number":282,"context_line":"        \u0027routes\u0027: _get_default_route(version, subnet),"},{"line_number":283,"context_line":"        \u0027network_id\u0027: vif[\u0027network\u0027][\u0027id\u0027]"},{"line_number":284,"context_line":"    }"}],"source_content_type":"text/x-python","patch_set":2,"id":"bff0334d_9ab4a881","line":281,"in_reply_to":"bff0334d_1e089a25","updated":"2017-04-12 05:25:07.000000000","message":"The idea was to have the same data type for everything, otherwise one could also say that IP addresses should be presented as 32- or 128-bit integers, which would be their natural form.\n\nBut I agree that prefixlen contains even smaller integers, so it may indeed be reasonable to leave them that way, update coming.","commit_id":"0910fcb21c8ca979bfca2597423864ecccf20ac1"}]}
