)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":7715,"name":"Hirofumi Ichihara","email":"ichihara.hirofumi@gmail.com","username":"Hirofumi-Ichihara"},"change_message_id":"3bcb64e14fc26e9da02b1a64063eef71eae84ffe","unresolved":false,"context_lines":[{"line_number":10,"context_line":"address passed to the neutron server. This allows compressed IPv6"},{"line_number":11,"context_line":"addresses to be stored and remove any leading zeroes in the IPv6"},{"line_number":12,"context_line":"addresses."},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"Change-Id: I1866ca490a53c364c52861b5da3152ee8a48a5e3"},{"line_number":15,"context_line":"Closes-Bug: #1531103"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"5a5ae5dd_4f621caf","line":13,"updated":"2016-02-04 06:20:00.000000000","message":"We can have two opinions.\n\n(1) We shouldn\u0027t rewrite a parameter which users give. It may happen confusions in user side because user\u0027s input is defferent from server\u0027s output.\n(2) We positively adopt the rule because RFC[1] recommends the format.\n\n\nIMO, I agree with (2). However, we should introduce the rule into devref and documentation if we adopt it. And also it\u0027s better to describe the RFC here.\n\n[1]: http://tools.ietf.org/html/rfc5952","commit_id":"7393a7582ebad5c6c8656f526b492e745e7cdae7"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"9e223087d7fc0443ba49c132862cc2ad97dde3c9","unresolved":false,"context_lines":[{"line_number":10,"context_line":"a function to compress the extended IPv6 address passed to"},{"line_number":11,"context_line":"the neutron server. This allows compressed IPv6 addresses"},{"line_number":12,"context_line":"to be stored and remove any leading zeroes in the IPv6"},{"line_number":13,"context_line":"addresses."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"[1]: http://tools.ietf.org/html/rfc5952"},{"line_number":16,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":7,"id":"5aef4532_9dbf2360","line":13,"updated":"2016-03-11 04:28:02.000000000","message":"This change only addresses IPv6 addresses passed as the gateway_ip, not all addresses, so I\u0027m not sure this statement is correct.\n\nAlso, I\u0027ve found that different platforms - Linux vs Mac OSX, return different results from the netaddr library for IPv6 addresses, so you should make sure that any change works there as well, mostly just because people develop on it and having tests fail is annoying.","commit_id":"7b121d0366f7168d9eddd505cf997428af98b1d4"},{"author":{"_account_id":17776,"name":"Reedip","email":"reedip.banerjee@gmail.com","username":"Reedip"},"change_message_id":"65596091996f5cb8938809f2084c89a711835f6f","unresolved":false,"context_lines":[{"line_number":10,"context_line":"a function to compress the extended IPv6 address passed to"},{"line_number":11,"context_line":"the neutron server. This allows compressed IPv6 addresses"},{"line_number":12,"context_line":"to be stored and remove any leading zeroes in the IPv6"},{"line_number":13,"context_line":"addresses."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"[1]: http://tools.ietf.org/html/rfc5952"},{"line_number":16,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":7,"id":"9a061dce_878760d6","line":13,"in_reply_to":"5aef4532_200fc42f","updated":"2016-04-06 05:42:58.000000000","message":"I was checking out Google and found a similar issue:\nhttps://github.com/drkjam/netaddr/issues/82\n\nHowever, this was working in a way on my behalf wrt OSX.\nSo I think we can move forward with this","commit_id":"7b121d0366f7168d9eddd505cf997428af98b1d4"},{"author":{"_account_id":17776,"name":"Reedip","email":"reedip.banerjee@gmail.com","username":"Reedip"},"change_message_id":"0e9ee1803123b433b6bcc277245c16af8d702ae2","unresolved":false,"context_lines":[{"line_number":10,"context_line":"a function to compress the extended IPv6 address passed to"},{"line_number":11,"context_line":"the neutron server. This allows compressed IPv6 addresses"},{"line_number":12,"context_line":"to be stored and remove any leading zeroes in the IPv6"},{"line_number":13,"context_line":"addresses."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"[1]: http://tools.ietf.org/html/rfc5952"},{"line_number":16,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":7,"id":"5aef4532_200fc42f","line":13,"in_reply_to":"5aef4532_9dbf2360","updated":"2016-03-11 04:38:45.000000000","message":"Thats why I wrote that this introduces a function, which now can be used by other developers to allow compression of IPv6 addressing.\n\n\nHowever, I agree with you that there may be some platform dependent changes.\nLet me look into that!","commit_id":"7b121d0366f7168d9eddd505cf997428af98b1d4"},{"author":{"_account_id":10558,"name":"Dustin Lundquist","email":"dustin@null-ptr.net","username":"dlundquist"},"change_message_id":"951058ce15b01e763ea7324aaef9794fd720c30e","unresolved":false,"context_lines":[{"line_number":10,"context_line":"the function to compress the extended IPv6 address passed to"},{"line_number":11,"context_line":"the neutron server. This allows compressed IPv6 addresses"},{"line_number":12,"context_line":"to be stored and remove any leading zeroes in the IPv6"},{"line_number":13,"context_line":"addresses.This patch takes care of the compression of"},{"line_number":14,"context_line":"IPv6 address for gateway-ip."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"[1]: http://tools.ietf.org/html/rfc5952"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":12,"id":"3ac371cc_620416c6","line":13,"updated":"2016-08-19 08:57:11.000000000","message":"This is this the primary change here, can list it before describing what compressing IPv6 addresses is?\n\nnit: missing space after period","commit_id":"4a7bd50b0be1b50f291c6944b84bf74dcc8c2596"},{"author":{"_account_id":17776,"name":"Reedip","email":"reedip.banerjee@gmail.com","username":"Reedip"},"change_message_id":"0941c34b20b9715f86cf238e558ade15380b0c55","unresolved":false,"context_lines":[{"line_number":10,"context_line":"the function to compress the extended IPv6 address passed to"},{"line_number":11,"context_line":"the neutron server. This allows compressed IPv6 addresses"},{"line_number":12,"context_line":"to be stored and remove any leading zeroes in the IPv6"},{"line_number":13,"context_line":"addresses.This patch takes care of the compression of"},{"line_number":14,"context_line":"IPv6 address for gateway-ip."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"[1]: http://tools.ietf.org/html/rfc5952"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":12,"id":"3ac371cc_458761d7","line":13,"in_reply_to":"3ac371cc_620416c6","updated":"2016-08-19 10:00:33.000000000","message":"Will fix it","commit_id":"4a7bd50b0be1b50f291c6944b84bf74dcc8c2596"},{"author":{"_account_id":10558,"name":"Dustin Lundquist","email":"dustin@null-ptr.net","username":"dlundquist"},"change_message_id":"951058ce15b01e763ea7324aaef9794fd720c30e","unresolved":false,"context_lines":[{"line_number":14,"context_line":"IPv6 address for gateway-ip."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"[1]: http://tools.ietf.org/html/rfc5952"},{"line_number":17,"context_line":"Depends-On: Ic9afa5f90fba783748f7c56e8fba02e06af69748"},{"line_number":18,"context_line":"Change-Id: I1866ca490a53c364c52861b5da3152ee8a48a5e3"},{"line_number":19,"context_line":"Closes-Bug: #1531103"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":12,"id":"3ac371cc_62d25636","line":17,"updated":"2016-08-19 08:57:11.000000000","message":"We can\u0027t depend on this until the next neutron-lib release which includes this functionality and proposal bot has updated requirements.txt.","commit_id":"4a7bd50b0be1b50f291c6944b84bf74dcc8c2596"},{"author":{"_account_id":17776,"name":"Reedip","email":"reedip.banerjee@gmail.com","username":"Reedip"},"change_message_id":"0941c34b20b9715f86cf238e558ade15380b0c55","unresolved":false,"context_lines":[{"line_number":14,"context_line":"IPv6 address for gateway-ip."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"[1]: http://tools.ietf.org/html/rfc5952"},{"line_number":17,"context_line":"Depends-On: Ic9afa5f90fba783748f7c56e8fba02e06af69748"},{"line_number":18,"context_line":"Change-Id: I1866ca490a53c364c52861b5da3152ee8a48a5e3"},{"line_number":19,"context_line":"Closes-Bug: #1531103"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":12,"id":"3ac371cc_257865f8","line":17,"in_reply_to":"3ac371cc_62d25636","updated":"2016-08-19 10:00:33.000000000","message":"Hmm, Okay, I will bring the older patch out, and keep this change for the later.\nCan you please provide your comments to my response to your queries?","commit_id":"4a7bd50b0be1b50f291c6944b84bf74dcc8c2596"},{"author":{"_account_id":11159,"name":"Hong Hui Xiao","email":"honghui_xiao@yeah.net","username":"HongHuiXiao"},"change_message_id":"aee4f2eec94b0bcf3302570952ab8746ca2c13f8","unresolved":false,"context_lines":[{"line_number":9,"context_line":"With respect to Section-4 of [1] ,the following patch adds"},{"line_number":10,"context_line":"a function to compress the extended IPv6 address passed to"},{"line_number":11,"context_line":"the neutron server. This allows compressed IPv6 addresses"},{"line_number":12,"context_line":"to be stored and remove any leading zeroes in the IPv6"},{"line_number":13,"context_line":"addresses."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"This patch also takes care of the compression of IPv6 address"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":16,"id":"1ac06dbe_53759961","line":12,"range":{"start_line":12,"start_character":0,"end_line":12,"end_character":54},"updated":"2016-08-24 10:34:43.000000000","message":"Actually, I don\u0027t think this patch is required. For cidr, it will be format at [1]. For gateway_ip, it will be changed to netaddr.IPAddress at [2], and the leading zeros are removed implicitly then.\n\nYou can try to add the gateway_ip and cidr with leading zeros. From the db and output, you will get right ipv6 address.\n\n\n[1] https://github.com/openstack/neutron/blob/385d9c3f58f63d7e29653388b1163d7aa0999afd/neutron/db/db_base_plugin_v2.py#L696\n[2] https://github.com/openstack/neutron/blob/385d9c3f58f63d7e29653388b1163d7aa0999afd/neutron/ipam/requests.py#L62","commit_id":"d533e2e666229c4f20ada7554abac0049ab16417"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"2c0115197ba96c948af1fb7d5ba1727b8b3b607f","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Compress extended ipv6 address"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"With respect to Section-4 of [1] ,the following patch adds"},{"line_number":10,"context_line":"a function to compress the extended IPv6 address passed to"},{"line_number":11,"context_line":"the neutron server. This allows compressed IPv6 addresses"},{"line_number":12,"context_line":"to be stored and remove any leading zeroes in the IPv6"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":22,"id":"fa6399be_a6316f5c","line":9,"updated":"2016-10-14 02:13:46.000000000","message":"nit: s/,the/, the","commit_id":"07dbb83c59d2d3fdb5acdb6bfcecec7e488f4ba0"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"2c0115197ba96c948af1fb7d5ba1727b8b3b607f","unresolved":false,"context_lines":[{"line_number":12,"context_line":"to be stored and remove any leading zeroes in the IPv6"},{"line_number":13,"context_line":"addresses."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"This patch also takes care of the compression of IPv6 address"},{"line_number":16,"context_line":"for gateway-ip."},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"[1]: http://tools.ietf.org/html/rfc5952"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":22,"id":"fa6399be_61490160","line":15,"updated":"2016-10-14 02:13:46.000000000","message":"You don\u0027t need \u0027also\u0027 here right?  This only takes care of compression for gateway-ip.","commit_id":"07dbb83c59d2d3fdb5acdb6bfcecec7e488f4ba0"}],"doc/source/devref/ipv6_address_usage.rst":[{"author":{"_account_id":12860,"name":"Dongcan Ye","email":"yedongcan@yeah.net","username":"yedongcan"},"change_message_id":"9d6966b259c00bc0ded51a554b0f5d6d3882174d","unresolved":false,"context_lines":[{"line_number":26,"context_line":""},{"line_number":27,"context_line":"As there are several ways to mention an IPv6 address, it can lead to a lot of confusion"},{"line_number":28,"context_line":"or problems for user, engineers and operators alike. To reduce the impact of the"},{"line_number":29,"context_line":"mutli-faceted style of writing an IPv6 address, it is proposed that the IPv6 address"},{"line_number":30,"context_line":"in Neutron should be saved in the compressed format."},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"If user passes the IPv6 in the expanded format, it will be compressed at neutron and"}],"source_content_type":"text/x-rst","patch_set":13,"id":"1ac06dbe_0ee7dc11","line":29,"range":{"start_line":29,"start_character":0,"end_line":29,"end_character":5},"updated":"2016-08-23 04:29:48.000000000","message":"nit: multi ?","commit_id":"6ba0c6ef23f793211a22eb89ba11b6f1a187214d"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"2c0115197ba96c948af1fb7d5ba1727b8b3b607f","unresolved":false,"context_lines":[{"line_number":24,"context_line":"Client command extension support"},{"line_number":25,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"As there are several ways to mention an IPv6 address, it can lead to a lot of confusion"},{"line_number":28,"context_line":"or problems for user, engineers and operators alike. To reduce the impact of the"},{"line_number":29,"context_line":"multi-faceted style of writing an IPv6 address, it is proposed that the IPv6 address"},{"line_number":30,"context_line":"in Neutron should be saved in the compressed format."}],"source_content_type":"text/x-rst","patch_set":22,"id":"fa6399be_66bf57aa","line":27,"updated":"2016-10-14 02:13:46.000000000","message":"s/As there/There\ns/mention/display\ns/it/which can lead to confusion","commit_id":"07dbb83c59d2d3fdb5acdb6bfcecec7e488f4ba0"},{"author":{"_account_id":17776,"name":"Reedip","email":"reedip.banerjee@gmail.com","username":"Reedip"},"change_message_id":"ca1ca50e428dbbfc9ed9fad6e1b993323e5f2931","unresolved":false,"context_lines":[{"line_number":24,"context_line":"Client command extension support"},{"line_number":25,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"As there are several ways to mention an IPv6 address, it can lead to a lot of confusion"},{"line_number":28,"context_line":"or problems for user, engineers and operators alike. To reduce the impact of the"},{"line_number":29,"context_line":"multi-faceted style of writing an IPv6 address, it is proposed that the IPv6 address"},{"line_number":30,"context_line":"in Neutron should be saved in the compressed format."}],"source_content_type":"text/x-rst","patch_set":22,"id":"fa6399be_093ea38b","line":27,"in_reply_to":"fa6399be_66bf57aa","updated":"2016-10-14 09:13:05.000000000","message":"Done","commit_id":"07dbb83c59d2d3fdb5acdb6bfcecec7e488f4ba0"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"2c0115197ba96c948af1fb7d5ba1727b8b3b607f","unresolved":false,"context_lines":[{"line_number":25,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"As there are several ways to mention an IPv6 address, it can lead to a lot of confusion"},{"line_number":28,"context_line":"or problems for user, engineers and operators alike. To reduce the impact of the"},{"line_number":29,"context_line":"multi-faceted style of writing an IPv6 address, it is proposed that the IPv6 address"},{"line_number":30,"context_line":"in Neutron should be saved in the compressed format."},{"line_number":31,"context_line":""}],"source_content_type":"text/x-rst","patch_set":22,"id":"fa6399be_a6e32fd8","line":28,"updated":"2016-10-14 02:13:46.000000000","message":"s/or problems for user/for users","commit_id":"07dbb83c59d2d3fdb5acdb6bfcecec7e488f4ba0"},{"author":{"_account_id":17776,"name":"Reedip","email":"reedip.banerjee@gmail.com","username":"Reedip"},"change_message_id":"ca1ca50e428dbbfc9ed9fad6e1b993323e5f2931","unresolved":false,"context_lines":[{"line_number":25,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"As there are several ways to mention an IPv6 address, it can lead to a lot of confusion"},{"line_number":28,"context_line":"or problems for user, engineers and operators alike. To reduce the impact of the"},{"line_number":29,"context_line":"multi-faceted style of writing an IPv6 address, it is proposed that the IPv6 address"},{"line_number":30,"context_line":"in Neutron should be saved in the compressed format."},{"line_number":31,"context_line":""}],"source_content_type":"text/x-rst","patch_set":22,"id":"fa6399be_293fe787","line":28,"in_reply_to":"fa6399be_a6e32fd8","updated":"2016-10-14 09:13:05.000000000","message":"Done","commit_id":"07dbb83c59d2d3fdb5acdb6bfcecec7e488f4ba0"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"2c0115197ba96c948af1fb7d5ba1727b8b3b607f","unresolved":false,"context_lines":[{"line_number":29,"context_line":"multi-faceted style of writing an IPv6 address, it is proposed that the IPv6 address"},{"line_number":30,"context_line":"in Neutron should be saved in the compressed format."},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"If user passes the IPv6 in the expanded format, it will be compressed at neutron and"},{"line_number":33,"context_line":"demonstrated to the user during the list/show operations in the same compressed format."},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"The full document is found at : http://tools.ietf.org/html/rfc5952"}],"source_content_type":"text/x-rst","patch_set":22,"id":"fa6399be_26d0fff5","line":32,"updated":"2016-10-14 02:13:46.000000000","message":"s/user/a user\ns/the IPv6/an IPv6 address\ns/at neutron/by Neutron","commit_id":"07dbb83c59d2d3fdb5acdb6bfcecec7e488f4ba0"},{"author":{"_account_id":17776,"name":"Reedip","email":"reedip.banerjee@gmail.com","username":"Reedip"},"change_message_id":"ca1ca50e428dbbfc9ed9fad6e1b993323e5f2931","unresolved":false,"context_lines":[{"line_number":29,"context_line":"multi-faceted style of writing an IPv6 address, it is proposed that the IPv6 address"},{"line_number":30,"context_line":"in Neutron should be saved in the compressed format."},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"If user passes the IPv6 in the expanded format, it will be compressed at neutron and"},{"line_number":33,"context_line":"demonstrated to the user during the list/show operations in the same compressed format."},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"The full document is found at : http://tools.ietf.org/html/rfc5952"}],"source_content_type":"text/x-rst","patch_set":22,"id":"fa6399be_6922bf53","line":32,"in_reply_to":"fa6399be_26d0fff5","updated":"2016-10-14 09:13:05.000000000","message":"Done","commit_id":"07dbb83c59d2d3fdb5acdb6bfcecec7e488f4ba0"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"2c0115197ba96c948af1fb7d5ba1727b8b3b607f","unresolved":false,"context_lines":[{"line_number":30,"context_line":"in Neutron should be saved in the compressed format."},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"If user passes the IPv6 in the expanded format, it will be compressed at neutron and"},{"line_number":33,"context_line":"demonstrated to the user during the list/show operations in the same compressed format."},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"The full document is found at : http://tools.ietf.org/html/rfc5952"}],"source_content_type":"text/x-rst","patch_set":22,"id":"fa6399be_a60a4f88","line":33,"updated":"2016-10-14 02:13:46.000000000","message":"s/demonstrated/displayed\ns/during the/during","commit_id":"07dbb83c59d2d3fdb5acdb6bfcecec7e488f4ba0"},{"author":{"_account_id":13252,"name":"Dr. Jens Harbott","display_name":"Jens Harbott (frickler)","email":"frickler@offenerstapel.de","username":"jrosenboom"},"change_message_id":"c42991744981f4095f9b0fa8a332a2a5aa0c7a95","unresolved":false,"context_lines":[{"line_number":27,"context_line":"There are several ways to display an IPv6 address, which can lead to a lot of confusion"},{"line_number":28,"context_line":"for user, engineers and operators alike. To reduce the impact of the"},{"line_number":29,"context_line":"multi-faceted style of writing an IPv6 address, it is proposed that the IPv6 address"},{"line_number":30,"context_line":"in Neutron should be saved in the compressed format."},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"If a user passes an IPv6 address in the expanded format, it will be compressed by Neutron and"},{"line_number":33,"context_line":"displayed to the user during list/show operations in the same compressed format."}],"source_content_type":"text/x-rst","patch_set":24,"id":"fa6399be_1d3793ff","line":30,"updated":"2016-10-16 17:50:43.000000000","message":"The RFC talks about \"canonical\" format, which I think is a better term here than compressed, as it is not only about removing leading zeros, but also lowercasing and having a canonical position of the \"::\" part.","commit_id":"63d25b60f9e77854d200e6cb792d769ee5c95e9b"},{"author":{"_account_id":6524,"name":"Henry Gessau","email":"HenryG@gessau.net","username":"gessau"},"change_message_id":"42ca1b398955bbdae2d930c81bb292d0e18f7a76","unresolved":false,"context_lines":[{"line_number":27,"context_line":"There are several ways to display an IPv6 address, which can lead to a lot of confusion"},{"line_number":28,"context_line":"for user, engineers and operators alike. To reduce the impact of the"},{"line_number":29,"context_line":"multi-faceted style of writing an IPv6 address, it is proposed that the IPv6 address"},{"line_number":30,"context_line":"in Neutron should be saved in the compressed format."},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"If a user passes an IPv6 address in the expanded format, it will be compressed by Neutron and"},{"line_number":33,"context_line":"displayed to the user during list/show operations in the same compressed format."}],"source_content_type":"text/x-rst","patch_set":24,"id":"fa6399be_88fb5f78","line":30,"in_reply_to":"fa6399be_1d3793ff","updated":"2016-10-20 01:43:42.000000000","message":"+1 for \"canonical format\". In fact, RFC 5952 [1] uses this term.\n\n[1] https://tools.ietf.org/html/rfc5952","commit_id":"63d25b60f9e77854d200e6cb792d769ee5c95e9b"},{"author":{"_account_id":17776,"name":"Reedip","email":"reedip.banerjee@gmail.com","username":"Reedip"},"change_message_id":"93d6c1c8a162b049eda9aeb95101278df054e1c2","unresolved":false,"context_lines":[{"line_number":27,"context_line":"There are several ways to display an IPv6 address, which can lead to a lot of confusion"},{"line_number":28,"context_line":"for user, engineers and operators alike. To reduce the impact of the"},{"line_number":29,"context_line":"multi-faceted style of writing an IPv6 address, it is proposed that the IPv6 address"},{"line_number":30,"context_line":"in Neutron should be saved in the compressed format."},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"If a user passes an IPv6 address in the expanded format, it will be compressed by Neutron and"},{"line_number":33,"context_line":"displayed to the user during list/show operations in the same compressed format."}],"source_content_type":"text/x-rst","patch_set":24,"id":"da6895a0_93e7e111","line":30,"in_reply_to":"fa6399be_1d3793ff","updated":"2016-10-21 10:12:55.000000000","message":"Done","commit_id":"63d25b60f9e77854d200e6cb792d769ee5c95e9b"},{"author":{"_account_id":13252,"name":"Dr. Jens Harbott","display_name":"Jens Harbott (frickler)","email":"frickler@offenerstapel.de","username":"jrosenboom"},"change_message_id":"c42991744981f4095f9b0fa8a332a2a5aa0c7a95","unresolved":false,"context_lines":[{"line_number":29,"context_line":"multi-faceted style of writing an IPv6 address, it is proposed that the IPv6 address"},{"line_number":30,"context_line":"in Neutron should be saved in the compressed format."},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"If a user passes an IPv6 address in the expanded format, it will be compressed by Neutron and"},{"line_number":33,"context_line":"displayed to the user during list/show operations in the same compressed format."},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"The full document is found at : http://tools.ietf.org/html/rfc5952"}],"source_content_type":"text/x-rst","patch_set":24,"id":"fa6399be_5d3d8bdb","line":32,"updated":"2016-10-16 17:50:43.000000000","message":"There is not \"the\" expanded format, but multiple ways of writing the same address.\n\nAlso applying the above comment, that sentence would become:\n\nIf a user passes an IPv6 address to Neutron, it will be converted to canonical form and ...","commit_id":"63d25b60f9e77854d200e6cb792d769ee5c95e9b"},{"author":{"_account_id":17776,"name":"Reedip","email":"reedip.banerjee@gmail.com","username":"Reedip"},"change_message_id":"93d6c1c8a162b049eda9aeb95101278df054e1c2","unresolved":false,"context_lines":[{"line_number":29,"context_line":"multi-faceted style of writing an IPv6 address, it is proposed that the IPv6 address"},{"line_number":30,"context_line":"in Neutron should be saved in the compressed format."},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"If a user passes an IPv6 address in the expanded format, it will be compressed by Neutron and"},{"line_number":33,"context_line":"displayed to the user during list/show operations in the same compressed format."},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"The full document is found at : http://tools.ietf.org/html/rfc5952"}],"source_content_type":"text/x-rst","patch_set":24,"id":"da6895a0_b3e4e50d","line":32,"in_reply_to":"fa6399be_5d3d8bdb","updated":"2016-10-21 10:12:55.000000000","message":"Done","commit_id":"63d25b60f9e77854d200e6cb792d769ee5c95e9b"}],"neutron/api/v2/attributes.py":[{"author":{"_account_id":11255,"name":"Dustin Lundquist","username":"dustin.lundquist","inactive":true},"change_message_id":"7f0a443eae729b4b9418351b2161662d012a64ba","unresolved":false,"context_lines":[{"line_number":609,"context_line":"            return data"},{"line_number":610,"context_line":"    except netaddr.core.AddrFormatError:"},{"line_number":611,"context_line":"            return data"},{"line_number":612,"context_line":""},{"line_number":613,"context_line":""},{"line_number":614,"context_line":"HEX_ELEM \u003d \u0027[0-9A-Fa-f]\u0027"},{"line_number":615,"context_line":"UUID_PATTERN \u003d \u0027-\u0027.join([HEX_ELEM + \u0027{8}\u0027, HEX_ELEM + \u0027{4}\u0027,"}],"source_content_type":"text/x-python","patch_set":4,"id":"5a5ae5dd_e5cd295e","line":612,"updated":"2016-02-04 07:35:18.000000000","message":"Wouldn\u0027t a malformed IP address be an error?\n\nMaybe we should normalize all IP addresses into their preferred presentation form rather than leaving them as input e.g. 2001:DB8::00:0000:8bB8:127.0.0.1, 3221225994, 192.168.0xa0a, 192.168.2570.","commit_id":"7b1c068111afb3ac0714e22b972f6d794d893053"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"9e223087d7fc0443ba49c132862cc2ad97dde3c9","unresolved":false,"context_lines":[{"line_number":608,"context_line":"        else:"},{"line_number":609,"context_line":"            return data"},{"line_number":610,"context_line":"    except netaddr.core.AddrFormatError:"},{"line_number":611,"context_line":"            return data"},{"line_number":612,"context_line":""},{"line_number":613,"context_line":""},{"line_number":614,"context_line":"HEX_ELEM \u003d \u0027[0-9A-Fa-f]\u0027"}],"source_content_type":"text/x-python","patch_set":7,"id":"5aef4532_fde587dc","line":611,"updated":"2016-03-11 04:28:02.000000000","message":"indentation here is wrong","commit_id":"7b121d0366f7168d9eddd505cf997428af98b1d4"},{"author":{"_account_id":12860,"name":"Dongcan Ye","email":"yedongcan@yeah.net","username":"yedongcan"},"change_message_id":"9d6966b259c00bc0ded51a554b0f5d6d3882174d","unresolved":false,"context_lines":[{"line_number":60,"context_line":"def convert_IP_to_normalized_format(data):"},{"line_number":61,"context_line":"    try:"},{"line_number":62,"context_line":"        ip \u003d netaddr.IPAddress(data)"},{"line_number":63,"context_line":"        if ip.version \u003d\u003d 6:"},{"line_number":64,"context_line":"            return six.u(str(ip.format(dialect\u003dnetaddr.ipv6_compact)))"},{"line_number":65,"context_line":"        else:"},{"line_number":66,"context_line":"            return data"}],"source_content_type":"text/x-python","patch_set":13,"id":"1ac06dbe_eea9a091","line":63,"range":{"start_line":63,"start_character":25,"end_line":63,"end_character":26},"updated":"2016-08-23 04:29:48.000000000","message":"how about constants.IP_VERSION_6?","commit_id":"6ba0c6ef23f793211a22eb89ba11b6f1a187214d"},{"author":{"_account_id":12860,"name":"Dongcan Ye","email":"yedongcan@yeah.net","username":"yedongcan"},"change_message_id":"9d6966b259c00bc0ded51a554b0f5d6d3882174d","unresolved":false,"context_lines":[{"line_number":61,"context_line":"    try:"},{"line_number":62,"context_line":"        ip \u003d netaddr.IPAddress(data)"},{"line_number":63,"context_line":"        if ip.version \u003d\u003d 6:"},{"line_number":64,"context_line":"            return six.u(str(ip.format(dialect\u003dnetaddr.ipv6_compact)))"},{"line_number":65,"context_line":"        else:"},{"line_number":66,"context_line":"            return data"},{"line_number":67,"context_line":"    except netaddr.core.AddrFormatError:"}],"source_content_type":"text/x-python","patch_set":13,"id":"1ac06dbe_f1c861aa","line":64,"updated":"2016-08-23 04:29:48.000000000","message":"IMO, here we can use six.text_type.\nsix.text_type:\nType for representing (Unicode) textual data. This is unicode() in Python 2 and str in Python 3.\n\nI see that six.u() only supports Python 3 versions of 3.3.","commit_id":"6ba0c6ef23f793211a22eb89ba11b6f1a187214d"},{"author":{"_account_id":10558,"name":"Dustin Lundquist","email":"dustin@null-ptr.net","username":"dlundquist"},"change_message_id":"8b881e6c26ed204b8f80fb2f00ea3a8971faecf1","unresolved":false,"context_lines":[{"line_number":57,"context_line":"                                version\u003d\u0027mitaka\u0027, removal_version\u003d\u0027ocata\u0027)"},{"line_number":58,"context_line":""},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"def convert_IP_to_normalized_format(data):"},{"line_number":61,"context_line":"    try:"},{"line_number":62,"context_line":"        ip \u003d netaddr.IPAddress(data)"},{"line_number":63,"context_line":"        if ip.version \u003d\u003d constants.IP_VERSION_6:"}],"source_content_type":"text/x-python","patch_set":14,"id":"1ac06dbe_4095dd30","line":60,"range":{"start_line":60,"start_character":4,"end_line":60,"end_character":35},"updated":"2016-08-23 22:25:11.000000000","message":"Uppercase in function names? It passed pep8, but I\u0027m surprised.","commit_id":"f386d83d6f9d0e0872c513ce8006cb8b9c6d3647"},{"author":{"_account_id":17776,"name":"Reedip","email":"reedip.banerjee@gmail.com","username":"Reedip"},"change_message_id":"7a6c1521823937294b69fd927c71fcce6ec12fdc","unresolved":false,"context_lines":[{"line_number":57,"context_line":"                                version\u003d\u0027mitaka\u0027, removal_version\u003d\u0027ocata\u0027)"},{"line_number":58,"context_line":""},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"def convert_IP_to_normalized_format(data):"},{"line_number":61,"context_line":"    try:"},{"line_number":62,"context_line":"        ip \u003d netaddr.IPAddress(data)"},{"line_number":63,"context_line":"        if ip.version \u003d\u003d constants.IP_VERSION_6:"}],"source_content_type":"text/x-python","patch_set":14,"id":"1ac06dbe_9cb2904a","line":60,"range":{"start_line":60,"start_character":4,"end_line":60,"end_character":35},"in_reply_to":"1ac06dbe_4095dd30","updated":"2016-08-24 05:42:11.000000000","message":"CamelCasing works with pep8, as far as I know.\nAnyways, I am changing it, so that this patch can move forward now.","commit_id":"f386d83d6f9d0e0872c513ce8006cb8b9c6d3647"},{"author":{"_account_id":6524,"name":"Henry Gessau","email":"HenryG@gessau.net","username":"gessau"},"change_message_id":"79c6d3d1c2afd570a1f0c2748964640ba5879eb5","unresolved":false,"context_lines":[{"line_number":64,"context_line":"            return six.text_type(str(ip.format(dialect\u003dnetaddr.ipv6_compact)))"},{"line_number":65,"context_line":"        else:"},{"line_number":66,"context_line":"            return data"},{"line_number":67,"context_line":"    except netaddr.core.AddrFormatError:"},{"line_number":68,"context_line":"        return data"},{"line_number":69,"context_line":""},{"line_number":70,"context_line":""}],"source_content_type":"text/x-python","patch_set":16,"id":"1ac06dbe_4b704772","line":67,"updated":"2016-08-24 09:15:58.000000000","message":"Which operation raises this exception? netaddr.IPAddress() or ip.format()? Only the operation that raises the exception should be inside the try clause.","commit_id":"d533e2e666229c4f20ada7554abac0049ab16417"},{"author":{"_account_id":17776,"name":"Reedip","email":"reedip.banerjee@gmail.com","username":"Reedip"},"change_message_id":"dcbed3be3d9f3b8108506ea160295cb3d467ef96","unresolved":false,"context_lines":[{"line_number":64,"context_line":"            return six.text_type(str(ip.format(dialect\u003dnetaddr.ipv6_compact)))"},{"line_number":65,"context_line":"        else:"},{"line_number":66,"context_line":"            return data"},{"line_number":67,"context_line":"    except netaddr.core.AddrFormatError:"},{"line_number":68,"context_line":"        return data"},{"line_number":69,"context_line":""},{"line_number":70,"context_line":""}],"source_content_type":"text/x-python","patch_set":16,"id":"1ac06dbe_baf30272","line":67,"in_reply_to":"1ac06dbe_4b704772","updated":"2016-08-24 09:48:03.000000000","message":"As per a simple test, it seems that the IPAddress Class raises the error if the format is not correct.\nIf the format is not 4/6 the Line#62 raises the exception.\nIf it is 4/6, then the operation will proceed forward and be handled by the if-else loop.\n\nBut my question: Does it matter if the \"if-else\" loop is outside the try/except block ? \nPlease let me know , maybe this would improve my understanding a bit more.","commit_id":"d533e2e666229c4f20ada7554abac0049ab16417"},{"author":{"_account_id":17776,"name":"Reedip","email":"reedip.banerjee@gmail.com","username":"Reedip"},"change_message_id":"e1c037d3299102fb339fb2319869b2a24bfda823","unresolved":false,"context_lines":[{"line_number":64,"context_line":"            return six.text_type(str(ip.format(dialect\u003dnetaddr.ipv6_compact)))"},{"line_number":65,"context_line":"        else:"},{"line_number":66,"context_line":"            return data"},{"line_number":67,"context_line":"    except netaddr.core.AddrFormatError:"},{"line_number":68,"context_line":"        return data"},{"line_number":69,"context_line":""},{"line_number":70,"context_line":""}],"source_content_type":"text/x-python","patch_set":16,"id":"9a89bdaa_e771cd77","line":67,"in_reply_to":"1ac06dbe_6e170c45","updated":"2016-09-07 06:01:50.000000000","message":"Henry, Thanks.\n\nYour explanation was precise . Really like it :)","commit_id":"d533e2e666229c4f20ada7554abac0049ab16417"},{"author":{"_account_id":6524,"name":"Henry Gessau","email":"HenryG@gessau.net","username":"gessau"},"change_message_id":"0c9c1a55d8e103c949a3ef47fa8caba456489daf","unresolved":false,"context_lines":[{"line_number":64,"context_line":"            return six.text_type(str(ip.format(dialect\u003dnetaddr.ipv6_compact)))"},{"line_number":65,"context_line":"        else:"},{"line_number":66,"context_line":"            return data"},{"line_number":67,"context_line":"    except netaddr.core.AddrFormatError:"},{"line_number":68,"context_line":"        return data"},{"line_number":69,"context_line":""},{"line_number":70,"context_line":""}],"source_content_type":"text/x-python","patch_set":16,"id":"1ac06dbe_6e170c45","line":67,"in_reply_to":"1ac06dbe_baf30272","updated":"2016-08-24 10:54:56.000000000","message":"Converters shouldn\u0027t repeat the work of validators IMO. I think we can require data to be validated before this converter is called. Currently it is done at line 267. Make this clear with a nice docstring for this function. Docstrings are now anyway required for functions that are destined for neutron-lib.\n\nBecause of pre-validation we can put \u0027netaddr.IPAddress(data)\u0027 outside the try. Since you check for v6 you don\u0027t need try for ip.format(). In other words no try is needed IMO. You may need to check for None.","commit_id":"d533e2e666229c4f20ada7554abac0049ab16417"},{"author":{"_account_id":6524,"name":"Henry Gessau","email":"HenryG@gessau.net","username":"gessau"},"change_message_id":"1f8037503126a1b808b08b6b6c8c0979b04a098c","unresolved":false,"context_lines":[{"line_number":13,"context_line":"#    License for the specific language governing permissions and limitations"},{"line_number":14,"context_line":"#    under the License."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"import netaddr"},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"from debtcollector import moves"},{"line_number":19,"context_line":"from neutron_lib.api import converters as lib_converters"}],"source_content_type":"text/x-python","patch_set":19,"id":"9a89bdaa_7ec9b625","line":16,"updated":"2016-09-07 10:29:25.000000000","message":"This is a 3rd-party lib, it goes in the next import section (between lines 18 \u0026 19).","commit_id":"922127ca780c6e09d581740e10de2b799ff668a0"},{"author":{"_account_id":6524,"name":"Henry Gessau","email":"HenryG@gessau.net","username":"gessau"},"change_message_id":"1f8037503126a1b808b08b6b6c8c0979b04a098c","unresolved":false,"context_lines":[{"line_number":62,"context_line":"        else the IPv6 Address is compressed and returned, removing the"},{"line_number":63,"context_line":"        leading zeroes."},{"line_number":64,"context_line":"    \"\"\""},{"line_number":65,"context_line":"    if data:"},{"line_number":66,"context_line":"        ip \u003d netaddr.IPAddress(data)"},{"line_number":67,"context_line":"        if ip.version \u003d\u003d constants.IP_VERSION_6:"},{"line_number":68,"context_line":"            return six.text_type(str(ip.format(dialect\u003dnetaddr.ipv6_compact)))"},{"line_number":69,"context_line":"    return data"},{"line_number":70,"context_line":""},{"line_number":71,"context_line":""},{"line_number":72,"context_line":"_verify_dict_keys \u003d _lib(\u0027_verify_dict_keys\u0027)"}],"source_content_type":"text/x-python","patch_set":19,"id":"9a89bdaa_de7002df","line":69,"range":{"start_line":65,"start_character":0,"end_line":69,"end_character":15},"updated":"2016-09-07 10:29:25.000000000","message":"Much nicer. :)","commit_id":"922127ca780c6e09d581740e10de2b799ff668a0"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"b7f12978e3541aac51de68617197f1a880639bc5","unresolved":false,"context_lines":[{"line_number":205,"context_line":"                        \u0027validate\u0027: {\u0027type:mac_address\u0027: None},"},{"line_number":206,"context_line":"                        \u0027enforce_policy\u0027: True,"},{"line_number":207,"context_line":"                        \u0027is_visible\u0027: True},"},{"line_number":208,"context_line":"        \u0027fixed_ips\u0027: {\u0027allow_post\u0027: True, \u0027allow_put\u0027: True,"},{"line_number":209,"context_line":"                      \u0027default\u0027: constants.ATTR_NOT_SPECIFIED,"},{"line_number":210,"context_line":"                      \u0027convert_list_to\u0027:"},{"line_number":211,"context_line":"                          lib_converters.convert_kvp_list_to_dict,"}],"source_content_type":"text/x-python","patch_set":26,"id":"ba5da102_416456e4","line":208,"updated":"2016-10-30 14:51:18.000000000","message":"what about these?","commit_id":"496979cb87f1226acb26e77a3d693a4065352d1f"},{"author":{"_account_id":17776,"name":"Reedip","email":"reedip.banerjee@gmail.com","username":"Reedip"},"change_message_id":"eedb8865eb81a2a33f8d98dfa6294cad3862a5b0","unresolved":false,"context_lines":[{"line_number":205,"context_line":"                        \u0027validate\u0027: {\u0027type:mac_address\u0027: None},"},{"line_number":206,"context_line":"                        \u0027enforce_policy\u0027: True,"},{"line_number":207,"context_line":"                        \u0027is_visible\u0027: True},"},{"line_number":208,"context_line":"        \u0027fixed_ips\u0027: {\u0027allow_post\u0027: True, \u0027allow_put\u0027: True,"},{"line_number":209,"context_line":"                      \u0027default\u0027: constants.ATTR_NOT_SPECIFIED,"},{"line_number":210,"context_line":"                      \u0027convert_list_to\u0027:"},{"line_number":211,"context_line":"                          lib_converters.convert_kvp_list_to_dict,"}],"source_content_type":"text/x-python","patch_set":26,"id":"ba5da102_d89ba916","line":208,"in_reply_to":"ba5da102_416456e4","updated":"2016-11-02 09:34:58.000000000","message":"I was thinking of merging this change first and the modifying the other options as per requirement.\nDo you think we should do all the change in the same patch ?\nIf so, then I will proceed.","commit_id":"496979cb87f1226acb26e77a3d693a4065352d1f"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"b7f12978e3541aac51de68617197f1a880639bc5","unresolved":false,"context_lines":[{"line_number":256,"context_line":"                      \u0027default\u0027: constants.ATTR_NOT_SPECIFIED,"},{"line_number":257,"context_line":"                      \u0027required_by_policy\u0027: False,"},{"line_number":258,"context_line":"                      \u0027is_visible\u0027: False},"},{"line_number":259,"context_line":"        \u0027cidr\u0027: {\u0027allow_post\u0027: True,"},{"line_number":260,"context_line":"                 \u0027allow_put\u0027: False,"},{"line_number":261,"context_line":"                 \u0027default\u0027: constants.ATTR_NOT_SPECIFIED,"},{"line_number":262,"context_line":"                 \u0027validate\u0027: {\u0027type:subnet_or_none\u0027: None},"}],"source_content_type":"text/x-python","patch_set":26,"id":"ba5da102_61631add","line":259,"updated":"2016-10-30 14:51:18.000000000","message":"ditto","commit_id":"496979cb87f1226acb26e77a3d693a4065352d1f"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"b7f12978e3541aac51de68617197f1a880639bc5","unresolved":false,"context_lines":[{"line_number":267,"context_line":"                       \u0027validate\u0027: {\u0027type:ip_address_or_none\u0027: None},"},{"line_number":268,"context_line":"                       \u0027convert_to\u0027: convert_ip_to_canonical_format,"},{"line_number":269,"context_line":"                       \u0027is_visible\u0027: True},"},{"line_number":270,"context_line":"        \u0027allocation_pools\u0027: {\u0027allow_post\u0027: True, \u0027allow_put\u0027: True,"},{"line_number":271,"context_line":"                             \u0027default\u0027: constants.ATTR_NOT_SPECIFIED,"},{"line_number":272,"context_line":"                             \u0027validate\u0027: {\u0027type:ip_pools\u0027: None},"},{"line_number":273,"context_line":"                             \u0027is_visible\u0027: True},"}],"source_content_type":"text/x-python","patch_set":26,"id":"ba5da102_815e6e10","line":270,"updated":"2016-10-30 14:51:18.000000000","message":"ditto","commit_id":"496979cb87f1226acb26e77a3d693a4065352d1f"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"b7f12978e3541aac51de68617197f1a880639bc5","unresolved":false,"context_lines":[{"line_number":277,"context_line":"                            \u0027default\u0027: constants.ATTR_NOT_SPECIFIED,"},{"line_number":278,"context_line":"                            \u0027validate\u0027: {\u0027type:nameservers\u0027: None},"},{"line_number":279,"context_line":"                            \u0027is_visible\u0027: True},"},{"line_number":280,"context_line":"        \u0027host_routes\u0027: {\u0027allow_post\u0027: True, \u0027allow_put\u0027: True,"},{"line_number":281,"context_line":"                        \u0027convert_to\u0027:"},{"line_number":282,"context_line":"                            lib_converters.convert_none_to_empty_list,"},{"line_number":283,"context_line":"                        \u0027default\u0027: constants.ATTR_NOT_SPECIFIED,"}],"source_content_type":"text/x-python","patch_set":26,"id":"ba5da102_c19ea6b7","line":280,"updated":"2016-10-30 14:51:18.000000000","message":"ditto","commit_id":"496979cb87f1226acb26e77a3d693a4065352d1f"},{"author":{"_account_id":6524,"name":"Henry Gessau","email":"HenryG@gessau.net","username":"gessau"},"change_message_id":"793b64cee6489c31e51c386735c5d0360a8f8857","unresolved":false,"context_lines":[{"line_number":100,"context_line":"convert_none_to_empty_list \u003d _lib(\u0027convert_none_to_empty_list\u0027)"},{"line_number":101,"context_line":"convert_none_to_empty_dict \u003d _lib(\u0027convert_none_to_empty_dict\u0027)"},{"line_number":102,"context_line":"convert_to_list \u003d _lib(\u0027convert_to_list\u0027)"},{"line_number":103,"context_line":"convert_ip_to_canonical_format \u003d _lib(\u0027convert_ip_to_canonical_format\u0027)"},{"line_number":104,"context_line":""},{"line_number":105,"context_line":""},{"line_number":106,"context_line":"_deprecate._moved_global(\u0027MAC_PATTERN\u0027, new_module\u003dlib_validators)"}],"source_content_type":"text/x-python","patch_set":29,"id":"ba5da102_307bd129","line":103,"updated":"2016-11-02 13:39:01.000000000","message":"not needed","commit_id":"8ee15585be5b4fe8ccfa2955c742f95be6f83527"},{"author":{"_account_id":7787,"name":"Kevin Benton","email":"kevin@benton.pub","username":"blak111"},"change_message_id":"577ca300fc7c177c4a5b320bd264567fd12d7b28","unresolved":false,"context_lines":[{"line_number":175,"context_line":"                       \u0027default\u0027: constants.ATTR_NOT_SPECIFIED,"},{"line_number":176,"context_line":"                       \u0027validate\u0027: {\u0027type:ip_address_or_none\u0027: None},"},{"line_number":177,"context_line":"                       \u0027convert_to\u0027:"},{"line_number":178,"context_line":"                           lib_converters.convert_ip_to_canonical_format,"},{"line_number":179,"context_line":"                       \u0027is_visible\u0027: True},"},{"line_number":180,"context_line":"        \u0027allocation_pools\u0027: {\u0027allow_post\u0027: True, \u0027allow_put\u0027: True,"},{"line_number":181,"context_line":"                             \u0027default\u0027: constants.ATTR_NOT_SPECIFIED,"}],"source_content_type":"text/x-python","patch_set":37,"id":"7ffa3b31_565118d8","line":178,"updated":"2017-04-16 04:08:22.000000000","message":"gateway_ip is an IP, not a CIDR","commit_id":"40f2cd7311b862855a7593a0c276b60962ffc597"},{"author":{"_account_id":17776,"name":"Reedip","email":"reedip.banerjee@gmail.com","username":"Reedip"},"change_message_id":"12aa922808f068021485128047e05f14fc31cfc7","unresolved":false,"context_lines":[{"line_number":175,"context_line":"                       \u0027default\u0027: constants.ATTR_NOT_SPECIFIED,"},{"line_number":176,"context_line":"                       \u0027validate\u0027: {\u0027type:ip_address_or_none\u0027: None},"},{"line_number":177,"context_line":"                       \u0027convert_to\u0027:"},{"line_number":178,"context_line":"                           lib_converters.convert_ip_to_canonical_format,"},{"line_number":179,"context_line":"                       \u0027is_visible\u0027: True},"},{"line_number":180,"context_line":"        \u0027allocation_pools\u0027: {\u0027allow_post\u0027: True, \u0027allow_put\u0027: True,"},{"line_number":181,"context_line":"                             \u0027default\u0027: constants.ATTR_NOT_SPECIFIED,"}],"source_content_type":"text/x-python","patch_set":37,"id":"ff0f0b1f_cd92a657","line":178,"in_reply_to":"7ffa3b31_565118d8","updated":"2017-05-23 10:57:54.000000000","message":"Thats why I am using the IP function and not the CIDR one :)","commit_id":"40f2cd7311b862855a7593a0c276b60962ffc597"},{"author":{"_account_id":7787,"name":"Kevin Benton","email":"kevin@benton.pub","username":"blak111"},"change_message_id":"577ca300fc7c177c4a5b320bd264567fd12d7b28","unresolved":false,"context_lines":[{"line_number":180,"context_line":"        \u0027allocation_pools\u0027: {\u0027allow_post\u0027: True, \u0027allow_put\u0027: True,"},{"line_number":181,"context_line":"                             \u0027default\u0027: constants.ATTR_NOT_SPECIFIED,"},{"line_number":182,"context_line":"                             \u0027convert_to\u0027:"},{"line_number":183,"context_line":"                                 lib_converters.convert_ip_to_canonical_format,"},{"line_number":184,"context_line":"                             \u0027validate\u0027: {\u0027type:ip_pools\u0027: None},"},{"line_number":185,"context_line":"                             \u0027is_visible\u0027: True},"},{"line_number":186,"context_line":"        \u0027dns_nameservers\u0027: {\u0027allow_post\u0027: True, \u0027allow_put\u0027: True,"}],"source_content_type":"text/x-python","patch_set":37,"id":"7ffa3b31_3660cca5","line":183,"updated":"2017-04-16 04:08:22.000000000","message":"allocation pools is an ip_pool list, not a CIDR.","commit_id":"40f2cd7311b862855a7593a0c276b60962ffc597"},{"author":{"_account_id":17776,"name":"Reedip","email":"reedip.banerjee@gmail.com","username":"Reedip"},"change_message_id":"12aa922808f068021485128047e05f14fc31cfc7","unresolved":false,"context_lines":[{"line_number":180,"context_line":"        \u0027allocation_pools\u0027: {\u0027allow_post\u0027: True, \u0027allow_put\u0027: True,"},{"line_number":181,"context_line":"                             \u0027default\u0027: constants.ATTR_NOT_SPECIFIED,"},{"line_number":182,"context_line":"                             \u0027convert_to\u0027:"},{"line_number":183,"context_line":"                                 lib_converters.convert_ip_to_canonical_format,"},{"line_number":184,"context_line":"                             \u0027validate\u0027: {\u0027type:ip_pools\u0027: None},"},{"line_number":185,"context_line":"                             \u0027is_visible\u0027: True},"},{"line_number":186,"context_line":"        \u0027dns_nameservers\u0027: {\u0027allow_post\u0027: True, \u0027allow_put\u0027: True,"}],"source_content_type":"text/x-python","patch_set":37,"id":"ff0f0b1f_ed956a41","line":183,"in_reply_to":"7ffa3b31_3660cca5","updated":"2017-05-23 10:57:54.000000000","message":"Thats why I am using the IP function and not the CIDR one :)","commit_id":"40f2cd7311b862855a7593a0c276b60962ffc597"}],"neutron/tests/unit/api/v2/test_attributes.py":[{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"2c0115197ba96c948af1fb7d5ba1727b8b3b607f","unresolved":false,"context_lines":[{"line_number":189,"context_line":"    def test_convert_ipv4_address(self):"},{"line_number":190,"context_line":"        result \u003d attributes.convert_ip_to_normalized_format("},{"line_number":191,"context_line":"            u\"192.168.1.1\")"},{"line_number":192,"context_line":"        self.assertEqual(u\u0027192.168.1.1\u0027, result)"}],"source_content_type":"text/x-python","patch_set":22,"id":"fa6399be_41123d58","line":192,"updated":"2016-10-14 02:13:46.000000000","message":"None is also a valid value to pass","commit_id":"07dbb83c59d2d3fdb5acdb6bfcecec7e488f4ba0"},{"author":{"_account_id":13252,"name":"Dr. Jens Harbott","display_name":"Jens Harbott (frickler)","email":"frickler@offenerstapel.de","username":"jrosenboom"},"change_message_id":"c42991744981f4095f9b0fa8a332a2a5aa0c7a95","unresolved":false,"context_lines":[{"line_number":175,"context_line":"        self.assertEqual(0, mock_plurals.items.call_count)"},{"line_number":176,"context_line":""},{"line_number":177,"context_line":""},{"line_number":178,"context_line":"class TestConvertIPv6Compressed(base.BaseTestCase):"},{"line_number":179,"context_line":""},{"line_number":180,"context_line":"    def test_convert_ipv6_compressed_address(self):"},{"line_number":181,"context_line":"        result \u003d attributes.convert_ip_to_normalized_format(u\u0027fe8::1\u0027)"}],"source_content_type":"text/x-python","patch_set":24,"id":"fa6399be_dd299b9c","line":178,"updated":"2016-10-16 17:50:43.000000000","message":"Either call this normalized like the function you are testing or change everything to \"canonical\".","commit_id":"63d25b60f9e77854d200e6cb792d769ee5c95e9b"},{"author":{"_account_id":13252,"name":"Dr. Jens Harbott","display_name":"Jens Harbott (frickler)","email":"frickler@offenerstapel.de","username":"jrosenboom"},"change_message_id":"c42991744981f4095f9b0fa8a332a2a5aa0c7a95","unresolved":false,"context_lines":[{"line_number":183,"context_line":""},{"line_number":184,"context_line":"    def test_convert_ipv6_extended_addr_to_compressed(self):"},{"line_number":185,"context_line":"        result \u003d attributes.convert_ip_to_normalized_format("},{"line_number":186,"context_line":"            u\"fe8:0:0:0:0:0:0:1\")"},{"line_number":187,"context_line":"        self.assertEqual(u\u0027fe8::1\u0027, result)"},{"line_number":188,"context_line":""},{"line_number":189,"context_line":"    def test_convert_ipv4_address(self):"}],"source_content_type":"text/x-python","patch_set":24,"id":"fa6399be_fd1adf7b","line":186,"updated":"2016-10-16 17:50:43.000000000","message":"Might make sense to add some uppercase letters here too, to check conversion to lower case.","commit_id":"63d25b60f9e77854d200e6cb792d769ee5c95e9b"}],"releasenotes/notes/ipv6_address_usage-ef3d65ad5aa5798b.yaml":[{"author":{"_account_id":12860,"name":"Dongcan Ye","email":"yedongcan@yeah.net","username":"yedongcan"},"change_message_id":"9d6966b259c00bc0ded51a554b0f5d6d3882174d","unresolved":false,"context_lines":[{"line_number":3,"context_line":"  -|"},{"line_number":4,"context_line":"   IPv6 addresses in Neutron will now be stored and displayed in"},{"line_number":5,"context_line":"   compressed address format. Any address provided by the user in"},{"line_number":6,"context_line":"   an explanded format will be converted to compressed format first."},{"line_number":7,"context_line":"   No changes will be done to the addresses already saved in"},{"line_number":8,"context_line":"   the database, only newly entered addresses would be impacted."}],"source_content_type":"text/x-yaml","patch_set":13,"id":"1ac06dbe_6e193022","line":6,"range":{"start_line":6,"start_character":6,"end_line":6,"end_character":15},"updated":"2016-08-23 04:29:48.000000000","message":"nit: expanded?","commit_id":"6ba0c6ef23f793211a22eb89ba11b6f1a187214d"}]}
