)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":8851,"name":"Valeriy Ponomaryov","email":"kiparis.kh@gmail.com","username":"vponomaryov"},"change_message_id":"bff2031628f220f24e7460359e602c5dff10c6f8","unresolved":false,"context_lines":[{"line_number":11,"context_line":""},{"line_number":12,"context_line":"APIImpact"},{"line_number":13,"context_line":"Add a new access type named ipv6, supported by the driver."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"Change-Id: Ica242007e77a7e21b2151e5fc32401b501d961b2"},{"line_number":16,"context_line":"Implements: blueprint support-ipv6-access"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"9abb7d3a_7438fe3d","line":14,"updated":"2016-05-31 11:22:09.000000000","message":"No word about change in Huawei driver.","commit_id":"d67d79c94cd1bb988e7942517b18197f52916e6e"},{"author":{"_account_id":15100,"name":"zhongjun","email":"jun.zhongjun2@gmail.com","username":"zhongjun2"},"change_message_id":"56679c8dc6a31f7bdcc6657806ccb9a2c805be1d","unresolved":false,"context_lines":[{"line_number":11,"context_line":""},{"line_number":12,"context_line":"APIImpact"},{"line_number":13,"context_line":"Add a new access type named ipv6, supported by the driver."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"Change-Id: Ica242007e77a7e21b2151e5fc32401b501d961b2"},{"line_number":16,"context_line":"Implements: blueprint support-ipv6-access"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"7aa08908_b46b7db8","line":14,"in_reply_to":"9abb7d3a_7438fe3d","updated":"2016-06-13 07:43:53.000000000","message":"Done","commit_id":"d67d79c94cd1bb988e7942517b18197f52916e6e"},{"author":{"_account_id":14567,"name":"Rodrigo Barbieri","email":"rodrigo.barbieri2010@gmail.com","username":"ganso"},"change_message_id":"c922b31db122e8e7e81c11b0334f8545b21d9055","unresolved":false,"context_lines":[{"line_number":7,"context_line":"Add IPv6 ACL support in Manila"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Add a new access type named ipv6 in allow_access API,"},{"line_number":10,"context_line":"let the manila can support IPv6 ACL."},{"line_number":11,"context_line":"Add ipv6 access support in Huawei driver."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"APIImpact"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":6,"id":"dada55a8_68ec72bb","line":10,"range":{"start_line":10,"start_character":0,"end_line":10,"end_character":3},"updated":"2016-07-26 18:09:32.000000000","message":"allowing","commit_id":"89cfcea0a726b84ff220013102059954e88503ac"},{"author":{"_account_id":14567,"name":"Rodrigo Barbieri","email":"rodrigo.barbieri2010@gmail.com","username":"ganso"},"change_message_id":"c922b31db122e8e7e81c11b0334f8545b21d9055","unresolved":false,"context_lines":[{"line_number":7,"context_line":"Add IPv6 ACL support in Manila"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Add a new access type named ipv6 in allow_access API,"},{"line_number":10,"context_line":"let the manila can support IPv6 ACL."},{"line_number":11,"context_line":"Add ipv6 access support in Huawei driver."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"APIImpact"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":6,"id":"dada55a8_a8302a57","line":10,"range":{"start_line":10,"start_character":15,"end_line":10,"end_character":18},"updated":"2016-07-26 18:09:32.000000000","message":"to","commit_id":"89cfcea0a726b84ff220013102059954e88503ac"},{"author":{"_account_id":15100,"name":"zhongjun","email":"jun.zhongjun2@gmail.com","username":"zhongjun2"},"change_message_id":"a69396bcc91caaea635bace465a436d80b6442dc","unresolved":false,"context_lines":[{"line_number":7,"context_line":"Add IPv6 ACL support in Manila"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Add a new access type named ipv6 in allow_access API,"},{"line_number":10,"context_line":"let the manila can support IPv6 ACL."},{"line_number":11,"context_line":"Add ipv6 access support in Huawei driver."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"APIImpact"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":6,"id":"bacf61ea_22c894a7","line":10,"range":{"start_line":10,"start_character":0,"end_line":10,"end_character":3},"in_reply_to":"dada55a8_68ec72bb","updated":"2016-08-08 14:44:46.000000000","message":"Done","commit_id":"89cfcea0a726b84ff220013102059954e88503ac"},{"author":{"_account_id":15100,"name":"zhongjun","email":"jun.zhongjun2@gmail.com","username":"zhongjun2"},"change_message_id":"a69396bcc91caaea635bace465a436d80b6442dc","unresolved":false,"context_lines":[{"line_number":7,"context_line":"Add IPv6 ACL support in Manila"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Add a new access type named ipv6 in allow_access API,"},{"line_number":10,"context_line":"let the manila can support IPv6 ACL."},{"line_number":11,"context_line":"Add ipv6 access support in Huawei driver."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"APIImpact"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":6,"id":"bacf61ea_02cbd0a4","line":10,"range":{"start_line":10,"start_character":15,"end_line":10,"end_character":18},"in_reply_to":"dada55a8_a8302a57","updated":"2016-08-08 14:44:46.000000000","message":"Done","commit_id":"89cfcea0a726b84ff220013102059954e88503ac"},{"author":{"_account_id":9003,"name":"Tom Barron","email":"tpb@dyncloud.net","username":"tbarron"},"change_message_id":"1b7844624dc907c33c760d450774913d7a30e497","unresolved":false,"context_lines":[{"line_number":10,"context_line":"allowing the manila to support IPv6 ACL."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"APIImpact"},{"line_number":13,"context_line":"Add a new access type named ipv6."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"Change-Id: Ica242007e77a7e21b2151e5fc32401b501d961b2"},{"line_number":16,"context_line":"Implements: blueprint support-ipv6-access"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":20,"id":"3ac371cc_38df6a6a","line":13,"range":{"start_line":13,"start_character":1,"end_line":13,"end_character":33},"updated":"2016-08-17 16:46:44.000000000","message":"You don\u0027t need this line IMO since you just said the same thing at line 9.","commit_id":"302372dc252e111a6b4c4bbf82800b10d70b8168"},{"author":{"_account_id":15100,"name":"zhongjun","email":"jun.zhongjun2@gmail.com","username":"zhongjun2"},"change_message_id":"5abdc9f1100ccd1e3bc1c1e21b9b72ec53247b27","unresolved":false,"context_lines":[{"line_number":10,"context_line":"allowing the manila to support IPv6 ACL."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"APIImpact"},{"line_number":13,"context_line":"Add a new access type named ipv6."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"Change-Id: Ica242007e77a7e21b2151e5fc32401b501d961b2"},{"line_number":16,"context_line":"Implements: blueprint support-ipv6-access"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":20,"id":"3ac371cc_e8d5d9e4","line":13,"range":{"start_line":13,"start_character":1,"end_line":13,"end_character":33},"in_reply_to":"3ac371cc_38df6a6a","updated":"2016-08-18 08:04:50.000000000","message":"Done","commit_id":"302372dc252e111a6b4c4bbf82800b10d70b8168"},{"author":{"_account_id":16203,"name":"zengyingzhe","email":"zengyingzhe@huawei.com","username":"zengyingzhe"},"change_message_id":"08a7820c4533c9630480a9c58c69eb87afd7db61","unresolved":false,"context_lines":[{"line_number":7,"context_line":"Add IPv6 ACL support in Manila"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Add the IPv6 format validation for ip access rule type in"},{"line_number":10,"context_line":"allow_access API, allowing the manila to support IPv6 ACL."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"APIImpact"},{"line_number":13,"context_line":"DocImpact"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":32,"id":"7a8ec9b2_5514bc4b","line":10,"range":{"start_line":10,"start_character":27,"end_line":10,"end_character":37},"updated":"2016-09-22 03:43:32.000000000","message":"Manila","commit_id":"1f104e55113ecfc3ca2b4ff2d753ae5230680983"},{"author":{"_account_id":16203,"name":"zengyingzhe","email":"zengyingzhe@huawei.com","username":"zengyingzhe"},"change_message_id":"7b54cbbfefb9c4add241713c77be83878154b2a1","unresolved":false,"context_lines":[{"line_number":10,"context_line":"https://review.openstack.org/#/c/362786/"},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"The patch list:"},{"line_number":13,"context_line":"    1. Support IPv6 in allow_access\u0026dummy,generic driver(this)"},{"line_number":14,"context_line":"    2. Report IPv4 capability in current drivers"},{"line_number":15,"context_line":"    3. Support IPv6 in huawei driver"},{"line_number":16,"context_line":"    4. Support in manilaclient(328932)"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":48,"id":"3a71b18c_9e10c1aa","line":13,"range":{"start_line":13,"start_character":36,"end_line":13,"end_character":62},"updated":"2016-12-08 01:35:25.000000000","message":"Looks like this patch doesn\u0027t involve in dummy or generic driver.","commit_id":"19848e8f6722818d239bb4751631e20404f40019"},{"author":{"_account_id":14567,"name":"Rodrigo Barbieri","email":"rodrigo.barbieri2010@gmail.com","username":"ganso"},"change_message_id":"15723dd86d837e11438d4fdffa21497aef8439aa","unresolved":false,"context_lines":[{"line_number":14,"context_line":"       include dummy and generic [2]."},{"line_number":15,"context_line":"    3. Support IPv6 in huawei driver"},{"line_number":16,"context_line":"    4. Support in manilaclient [3]."},{"line_number":17,"context_line":"    5. Seneraio tests"},{"line_number":18,"context_line":"    6. Documentation"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"[1] f7202a6cfe32a057f752a4e393f848f8a0211c36"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":55,"id":"da4df55a_d87d981d","line":17,"range":{"start_line":17,"start_character":7,"end_line":17,"end_character":15},"updated":"2016-12-24 22:42:56.000000000","message":"Scenario","commit_id":"f4f845a8620984eb53e9067339e04205ce42f170"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"4998f9b05742e7771edcde34f530a0e75f281c58","unresolved":false,"context_lines":[{"line_number":12,"context_line":"    1. Support IPv6 in allow_access (this)."},{"line_number":13,"context_line":"    2. Support IPv6 in network plugins and drivers,"},{"line_number":14,"context_line":"       include dummy and generic [2]."},{"line_number":15,"context_line":"    3. Support IPv6 in huawei driver"},{"line_number":16,"context_line":"    4. Support in manilaclient [3]."},{"line_number":17,"context_line":"    5. Scenario tests"},{"line_number":18,"context_line":"    6. Documentation"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":59,"id":"5a3905b3_39b88fe5","line":15,"range":{"start_line":15,"start_character":0,"end_line":15,"end_character":36},"updated":"2017-01-20 02:15:14.000000000","message":"this isn\u0027t expected any more, is it?","commit_id":"fb8f04c5481877a7066d43741afc9ea80c7750ef"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"4998f9b05742e7771edcde34f530a0e75f281c58","unresolved":false,"context_lines":[{"line_number":13,"context_line":"    2. Support IPv6 in network plugins and drivers,"},{"line_number":14,"context_line":"       include dummy and generic [2]."},{"line_number":15,"context_line":"    3. Support IPv6 in huawei driver"},{"line_number":16,"context_line":"    4. Support in manilaclient [3]."},{"line_number":17,"context_line":"    5. Scenario tests"},{"line_number":18,"context_line":"    6. Documentation"},{"line_number":19,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":59,"id":"5a3905b3_f98b671c","line":16,"range":{"start_line":16,"start_character":32,"end_line":16,"end_character":33},"updated":"2017-01-20 02:15:14.000000000","message":"this is the right one\n\nI88a1bd60e703bf9b434924ac347bbd74f72cec2b","commit_id":"fb8f04c5481877a7066d43741afc9ea80c7750ef"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"4998f9b05742e7771edcde34f530a0e75f281c58","unresolved":false,"context_lines":[{"line_number":17,"context_line":"    5. Scenario tests"},{"line_number":18,"context_line":"    6. Documentation"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"[1] f7202a6cfe32a057f752a4e393f848f8a0211c36"},{"line_number":21,"context_line":"[2] e10b1028a888e34d5305bb47b647a84a3380a719"},{"line_number":22,"context_line":"[3] 1cde7dd972921008f604bdd536dd55862839b3bf"},{"line_number":23,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":59,"id":"5a3905b3_7978572c","line":20,"range":{"start_line":20,"start_character":0,"end_line":20,"end_character":44},"updated":"2017-01-20 02:15:14.000000000","message":"?","commit_id":"fb8f04c5481877a7066d43741afc9ea80c7750ef"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"4998f9b05742e7771edcde34f530a0e75f281c58","unresolved":false,"context_lines":[{"line_number":18,"context_line":"    6. Documentation"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"[1] f7202a6cfe32a057f752a4e393f848f8a0211c36"},{"line_number":21,"context_line":"[2] e10b1028a888e34d5305bb47b647a84a3380a719"},{"line_number":22,"context_line":"[3] 1cde7dd972921008f604bdd536dd55862839b3bf"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"APIImpact"},{"line_number":25,"context_line":"DocImpact"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":59,"id":"5a3905b3_199af363","line":22,"range":{"start_line":21,"start_character":0,"end_line":22,"end_character":44},"updated":"2017-01-20 02:15:14.000000000","message":"Where do these lead?","commit_id":"fb8f04c5481877a7066d43741afc9ea80c7750ef"}],"doc/source/devref/share_back_ends_feature_support_mapping.rst":[{"author":{"_account_id":11865,"name":"Clinton Knight","email":"cknight@netapp.com","username":"cknight"},"change_message_id":"d87743a0ca60ea6422701174c785a7c3aff6ac4b","unresolved":false,"context_lines":[{"line_number":82,"context_line":"+----------------------------------------+--------------------------------------------------------------------------+------------------------------------------------------------------------+"},{"line_number":83,"context_line":"|                                        |                  Read \u0026 Write                                            |                                Read Only                               |"},{"line_number":84,"context_line":"+             Driver name                +--------------+--------------+----------------+------------+--------------+--------------+--------------+----------------+------------+------------+"},{"line_number":85,"context_line":"|                                        |      IP      |     IPv6     |      USER      |    Cert    |    CephX     |        IP    |     IPv6     |      USER      |    Cert    |    CephX   |"},{"line_number":86,"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\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\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+\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\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\u003d\u003d\u003d\u003d\u003d\u003d+\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d+"},{"line_number":87,"context_line":"|               ZFSonLinux               |    NFS (M)   |       \\-     |       \\-       |     \\-     |      \\-      |    NFS (M)   |       \\-     |       \\-       |     \\-     |     \\-     |"},{"line_number":88,"context_line":"+----------------------------------------+--------------+--------------+----------------+------------+--------------+--------------+--------------+----------------+------------+------------+"}],"source_content_type":"text/x-rst","patch_set":26,"id":"fa7ab95a_131d7a66","line":85,"range":{"start_line":85,"start_character":62,"end_line":85,"end_character":66},"updated":"2016-08-31 13:16:09.000000000","message":"Since the community agreed that IPv6 would go in across the board in Ocata, I\u0027m not sure additional columns here are warranted.","commit_id":"52935c079ddf5e3b02479ba49bc49d9ef2f4446e"},{"author":{"_account_id":15100,"name":"zhongjun","email":"jun.zhongjun2@gmail.com","username":"zhongjun2"},"change_message_id":"efcbb77223192dffa17729f079b26d8f8df05661","unresolved":false,"context_lines":[{"line_number":82,"context_line":"+----------------------------------------+--------------------------------------------------------------------------+------------------------------------------------------------------------+"},{"line_number":83,"context_line":"|                                        |                  Read \u0026 Write                                            |                                Read Only                               |"},{"line_number":84,"context_line":"+             Driver name                +--------------+--------------+----------------+------------+--------------+--------------+--------------+----------------+------------+------------+"},{"line_number":85,"context_line":"|                                        |      IP      |     IPv6     |      USER      |    Cert    |    CephX     |        IP    |     IPv6     |      USER      |    Cert    |    CephX   |"},{"line_number":86,"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\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\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+\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\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\u003d\u003d\u003d\u003d\u003d\u003d+\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d+"},{"line_number":87,"context_line":"|               ZFSonLinux               |    NFS (M)   |       \\-     |       \\-       |     \\-     |      \\-      |    NFS (M)   |       \\-     |       \\-       |     \\-     |     \\-     |"},{"line_number":88,"context_line":"+----------------------------------------+--------------+--------------+----------------+------------+--------------+--------------+--------------+----------------+------------+------------+"}],"source_content_type":"text/x-rst","patch_set":26,"id":"fa7ab95a_c7803bc2","line":85,"range":{"start_line":85,"start_character":62,"end_line":85,"end_character":66},"in_reply_to":"fa7ab95a_131d7a66","updated":"2016-09-02 06:07:39.000000000","message":"Done","commit_id":"52935c079ddf5e3b02479ba49bc49d9ef2f4446e"}],"manila/api/openstack/api_version_request.py":[{"author":{"_account_id":8851,"name":"Valeriy Ponomaryov","email":"kiparis.kh@gmail.com","username":"vponomaryov"},"change_message_id":"e52dfb3cd2791ab0adaaddd482d24625a2faf4b6","unresolved":false,"context_lines":[{"line_number":66,"context_line":"            \u0027migrate_share\u0027 to \u0027migration_start\u0027 and added notify parameter"},{"line_number":67,"context_line":"             to \u0027migration_start\u0027."},{"line_number":68,"context_line":"    * 2.16 - Add user_id in share show/create/manage API."},{"line_number":69,"context_line":"    * 2.17 - Add \"ipv6\" auth type to allow_access"},{"line_number":70,"context_line":"\"\"\""},{"line_number":71,"context_line":""},{"line_number":72,"context_line":"# The minimum and maximum versions of the API supported"}],"source_content_type":"text/x-python","patch_set":6,"id":"7aa08908_491b94ca","line":69,"range":{"start_line":69,"start_character":24,"end_line":69,"end_character":33},"updated":"2016-06-13 12:49:58.000000000","message":"Same as in https://review.openstack.org/#/c/312321/6/manila/api/openstack/rest_api_version_history.rst","commit_id":"89cfcea0a726b84ff220013102059954e88503ac"},{"author":{"_account_id":15100,"name":"zhongjun","email":"jun.zhongjun2@gmail.com","username":"zhongjun2"},"change_message_id":"a69396bcc91caaea635bace465a436d80b6442dc","unresolved":false,"context_lines":[{"line_number":66,"context_line":"            \u0027migrate_share\u0027 to \u0027migration_start\u0027 and added notify parameter"},{"line_number":67,"context_line":"             to \u0027migration_start\u0027."},{"line_number":68,"context_line":"    * 2.16 - Add user_id in share show/create/manage API."},{"line_number":69,"context_line":"    * 2.17 - Add \"ipv6\" auth type to allow_access"},{"line_number":70,"context_line":"\"\"\""},{"line_number":71,"context_line":""},{"line_number":72,"context_line":"# The minimum and maximum versions of the API supported"}],"source_content_type":"text/x-python","patch_set":6,"id":"bacf61ea_c23b789a","line":69,"range":{"start_line":69,"start_character":24,"end_line":69,"end_character":33},"in_reply_to":"7aa08908_491b94ca","updated":"2016-08-08 14:44:46.000000000","message":"Done","commit_id":"89cfcea0a726b84ff220013102059954e88503ac"},{"author":{"_account_id":16203,"name":"zengyingzhe","email":"zengyingzhe@huawei.com","username":"zengyingzhe"},"change_message_id":"e3af9b17fcddb486dd60e9bf928ea0d8c28d951d","unresolved":false,"context_lines":[{"line_number":73,"context_line":"# The default api version request is defined to be the"},{"line_number":74,"context_line":"# the minimum version of the API supported."},{"line_number":75,"context_line":"_MIN_API_VERSION \u003d \"2.0\""},{"line_number":76,"context_line":"_MAX_API_VERSION \u003d \"2.17\""},{"line_number":77,"context_line":"DEFAULT_API_VERSION \u003d _MIN_API_VERSION"},{"line_number":78,"context_line":""},{"line_number":79,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"dada55a8_f60677cc","line":76,"range":{"start_line":76,"start_character":20,"end_line":76,"end_character":24},"updated":"2016-07-21 04:54:51.000000000","message":"Conflict with master, in master branch this version is already up to 2.18","commit_id":"89cfcea0a726b84ff220013102059954e88503ac"},{"author":{"_account_id":15100,"name":"zhongjun","email":"jun.zhongjun2@gmail.com","username":"zhongjun2"},"change_message_id":"a69396bcc91caaea635bace465a436d80b6442dc","unresolved":false,"context_lines":[{"line_number":73,"context_line":"# The default api version request is defined to be the"},{"line_number":74,"context_line":"# the minimum version of the API supported."},{"line_number":75,"context_line":"_MIN_API_VERSION \u003d \"2.0\""},{"line_number":76,"context_line":"_MAX_API_VERSION \u003d \"2.17\""},{"line_number":77,"context_line":"DEFAULT_API_VERSION \u003d _MIN_API_VERSION"},{"line_number":78,"context_line":""},{"line_number":79,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"bacf61ea_82b7c01f","line":76,"range":{"start_line":76,"start_character":20,"end_line":76,"end_character":24},"in_reply_to":"dada55a8_f60677cc","updated":"2016-08-08 14:44:46.000000000","message":"Done","commit_id":"89cfcea0a726b84ff220013102059954e88503ac"},{"author":{"_account_id":11865,"name":"Clinton Knight","email":"cknight@netapp.com","username":"cknight"},"change_message_id":"d87743a0ca60ea6422701174c785a7c3aff6ac4b","unresolved":false,"context_lines":[{"line_number":73,"context_line":"            (list/show/detail/reset-status)."},{"line_number":74,"context_line":"    * 2.20 - Add MTU to the JSON response of share network show API."},{"line_number":75,"context_line":"    * 2.21 - Add access_key to the response of access_list API."},{"line_number":76,"context_line":"    * 2.22 - Add the IPv6 format validation for ip access rule type in"},{"line_number":77,"context_line":"             allow_access API."},{"line_number":78,"context_line":""},{"line_number":79,"context_line":"\"\"\""},{"line_number":80,"context_line":""}],"source_content_type":"text/x-python","patch_set":26,"id":"fa7ab95a_f36496e6","line":77,"range":{"start_line":76,"start_character":13,"end_line":77,"end_character":30},"updated":"2016-08-31 13:16:09.000000000","message":"We will want all API changes needed for IPv6 support to go in a single microversion.  So if other places are found, they will have to go into this patch, and the language here may need to be made a bit more general.","commit_id":"52935c079ddf5e3b02479ba49bc49d9ef2f4446e"},{"author":{"_account_id":15100,"name":"zhongjun","email":"jun.zhongjun2@gmail.com","username":"zhongjun2"},"change_message_id":"efcbb77223192dffa17729f079b26d8f8df05661","unresolved":false,"context_lines":[{"line_number":73,"context_line":"            (list/show/detail/reset-status)."},{"line_number":74,"context_line":"    * 2.20 - Add MTU to the JSON response of share network show API."},{"line_number":75,"context_line":"    * 2.21 - Add access_key to the response of access_list API."},{"line_number":76,"context_line":"    * 2.22 - Add the IPv6 format validation for ip access rule type in"},{"line_number":77,"context_line":"             allow_access API."},{"line_number":78,"context_line":""},{"line_number":79,"context_line":"\"\"\""},{"line_number":80,"context_line":""}],"source_content_type":"text/x-python","patch_set":26,"id":"fa7ab95a_671befca","line":77,"range":{"start_line":76,"start_character":13,"end_line":77,"end_character":30},"in_reply_to":"fa7ab95a_f36496e6","updated":"2016-09-02 06:07:39.000000000","message":"Done","commit_id":"52935c079ddf5e3b02479ba49bc49d9ef2f4446e"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"6f4ded9bafa8d985b6856dbd1b1ead862bdf914b","unresolved":false,"context_lines":[{"line_number":78,"context_line":"            \u0027force_host_copy\u0027 to \u0027force_host_assisted_migration\u0027, removed"},{"line_number":79,"context_line":"            \u0027notify\u0027 parameter and removed previous migrate_share API support."},{"line_number":80,"context_line":"            Updated reset_task_state API to accept \u0027None\u0027 value."},{"line_number":81,"context_line":"    * 2.23 - Enable IPv6 in manila."},{"line_number":82,"context_line":""},{"line_number":83,"context_line":"\"\"\""},{"line_number":84,"context_line":""}],"source_content_type":"text/x-python","patch_set":37,"id":"1a95cdbc_929e4a05","line":81,"range":{"start_line":81,"start_character":13,"end_line":81,"end_character":34},"updated":"2016-10-08 15:44:35.000000000","message":"Which specific APIs are affected?","commit_id":"05de92ca7a9e3132535f1b2184111fb75af61578"},{"author":{"_account_id":23083,"name":"TommyLike","email":"tommylikehu@gmail.com","username":"TommyLike"},"change_message_id":"07c14a88a6ef7cb39974a1d65df7d98735dd2e51","unresolved":false,"context_lines":[{"line_number":78,"context_line":"            \u0027force_host_copy\u0027 to \u0027force_host_assisted_migration\u0027, removed"},{"line_number":79,"context_line":"            \u0027notify\u0027 parameter and removed previous migrate_share API support."},{"line_number":80,"context_line":"            Updated reset_task_state API to accept \u0027None\u0027 value."},{"line_number":81,"context_line":"    * 2.23 - Enable IPv6 in manila."},{"line_number":82,"context_line":""},{"line_number":83,"context_line":"\"\"\""},{"line_number":84,"context_line":""}],"source_content_type":"text/x-python","patch_set":37,"id":"1a95cdbc_efc23752","line":81,"range":{"start_line":81,"start_character":13,"end_line":81,"end_character":34},"in_reply_to":"1a95cdbc_929e4a05","updated":"2016-10-10 08:04:53.000000000","message":"Done","commit_id":"05de92ca7a9e3132535f1b2184111fb75af61578"},{"author":{"_account_id":9003,"name":"Tom Barron","email":"tpb@dyncloud.net","username":"tbarron"},"change_message_id":"77df5e6eedd51649f8682b08b5c3301e225bbfd9","unresolved":false,"context_lines":[{"line_number":102,"context_line":"             access_list API."},{"line_number":103,"context_line":"    * 2.34 - Added \u0027availability_zone_id\u0027 and \u0027consistent_snapshot_support\u0027"},{"line_number":104,"context_line":"             fields to \u0027share_group\u0027 object."},{"line_number":105,"context_line":"\u003c\u003c\u003c\u003c\u003c\u003c\u003c HEAD"},{"line_number":106,"context_line":"    * 2.35 - Added support to retrieve shares filtered by export_location_id"},{"line_number":107,"context_line":"             and export_location_path."},{"line_number":108,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":109,"context_line":"    * 2.36 - Support IPv6 validation in allow_access API to enable IPv6 in"},{"line_number":110,"context_line":"             manila."},{"line_number":111,"context_line":"\u003e\u003e\u003e\u003e\u003e\u003e\u003e 8d5df20... Enable IPv6 in manila(allow access)"},{"line_number":112,"context_line":""},{"line_number":113,"context_line":"\"\"\""},{"line_number":114,"context_line":""}],"source_content_type":"text/x-python","patch_set":75,"id":"3f1d235d_544cd640","line":111,"range":{"start_line":105,"start_character":0,"end_line":111,"end_character":54},"updated":"2017-07-05 18:54:54.000000000","message":"Need to fix this up :)","commit_id":"4a98a2e598359e120fe6ed9b9b0bd9ddaceb5778"},{"author":{"_account_id":15100,"name":"zhongjun","email":"jun.zhongjun2@gmail.com","username":"zhongjun2"},"change_message_id":"e1c9e85b2bed4f340d3ac2d0a80bee247881c74c","unresolved":false,"context_lines":[{"line_number":102,"context_line":"             access_list API."},{"line_number":103,"context_line":"    * 2.34 - Added \u0027availability_zone_id\u0027 and \u0027consistent_snapshot_support\u0027"},{"line_number":104,"context_line":"             fields to \u0027share_group\u0027 object."},{"line_number":105,"context_line":"\u003c\u003c\u003c\u003c\u003c\u003c\u003c HEAD"},{"line_number":106,"context_line":"    * 2.35 - Added support to retrieve shares filtered by export_location_id"},{"line_number":107,"context_line":"             and export_location_path."},{"line_number":108,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":109,"context_line":"    * 2.36 - Support IPv6 validation in allow_access API to enable IPv6 in"},{"line_number":110,"context_line":"             manila."},{"line_number":111,"context_line":"\u003e\u003e\u003e\u003e\u003e\u003e\u003e 8d5df20... Enable IPv6 in manila(allow access)"},{"line_number":112,"context_line":""},{"line_number":113,"context_line":"\"\"\""},{"line_number":114,"context_line":""}],"source_content_type":"text/x-python","patch_set":75,"id":"3f1d235d_817580fc","line":111,"range":{"start_line":105,"start_character":0,"end_line":111,"end_character":54},"in_reply_to":"3f1d235d_544cd640","updated":"2017-07-06 07:01:45.000000000","message":"Done","commit_id":"4a98a2e598359e120fe6ed9b9b0bd9ddaceb5778"}],"manila/api/openstack/rest_api_version_history.rst":[{"author":{"_account_id":8851,"name":"Valeriy Ponomaryov","email":"kiparis.kh@gmail.com","username":"vponomaryov"},"change_message_id":"e52dfb3cd2791ab0adaaddd482d24625a2faf4b6","unresolved":false,"context_lines":[{"line_number":113,"context_line":""},{"line_number":114,"context_line":"2.17"},{"line_number":115,"context_line":"----"},{"line_number":116,"context_line":"  Add \"ipv6\" auth type to allow_access"}],"source_content_type":"text/x-rst","patch_set":6,"id":"7aa08908_c90e648b","line":116,"range":{"start_line":116,"start_character":13,"end_line":116,"end_character":22},"updated":"2016-06-13 12:49:58.000000000","message":"It is \"access type\".","commit_id":"89cfcea0a726b84ff220013102059954e88503ac"},{"author":{"_account_id":15100,"name":"zhongjun","email":"jun.zhongjun2@gmail.com","username":"zhongjun2"},"change_message_id":"a69396bcc91caaea635bace465a436d80b6442dc","unresolved":false,"context_lines":[{"line_number":113,"context_line":""},{"line_number":114,"context_line":"2.17"},{"line_number":115,"context_line":"----"},{"line_number":116,"context_line":"  Add \"ipv6\" auth type to allow_access"}],"source_content_type":"text/x-rst","patch_set":6,"id":"bacf61ea_624d6c3d","line":116,"range":{"start_line":116,"start_character":13,"end_line":116,"end_character":22},"in_reply_to":"7aa08908_c90e648b","updated":"2016-08-08 14:44:46.000000000","message":"Done","commit_id":"89cfcea0a726b84ff220013102059954e88503ac"},{"author":{"_account_id":9003,"name":"Tom Barron","email":"tpb@dyncloud.net","username":"tbarron"},"change_message_id":"1b7844624dc907c33c760d450774913d7a30e497","unresolved":false,"context_lines":[{"line_number":129,"context_line":""},{"line_number":130,"context_line":"2.21"},{"line_number":131,"context_line":"----"},{"line_number":132,"context_line":"  Add \"ipv6\" access type to allow_access"}],"source_content_type":"text/x-rst","patch_set":20,"id":"3ac371cc_58a86677","line":132,"range":{"start_line":132,"start_character":29,"end_line":132,"end_character":40},"updated":"2016-08-17 16:46:44.000000000","message":"nit: add a period","commit_id":"302372dc252e111a6b4c4bbf82800b10d70b8168"},{"author":{"_account_id":15100,"name":"zhongjun","email":"jun.zhongjun2@gmail.com","username":"zhongjun2"},"change_message_id":"5abdc9f1100ccd1e3bc1c1e21b9b72ec53247b27","unresolved":false,"context_lines":[{"line_number":129,"context_line":""},{"line_number":130,"context_line":"2.21"},{"line_number":131,"context_line":"----"},{"line_number":132,"context_line":"  Add \"ipv6\" access type to allow_access"}],"source_content_type":"text/x-rst","patch_set":20,"id":"3ac371cc_a8f6418c","line":132,"range":{"start_line":132,"start_character":29,"end_line":132,"end_character":40},"in_reply_to":"3ac371cc_58a86677","updated":"2016-08-18 08:04:50.000000000","message":"Done","commit_id":"302372dc252e111a6b4c4bbf82800b10d70b8168"},{"author":{"_account_id":16203,"name":"zengyingzhe","email":"zengyingzhe@huawei.com","username":"zengyingzhe"},"change_message_id":"08a7820c4533c9630480a9c58c69eb87afd7db61","unresolved":false,"context_lines":[{"line_number":141,"context_line":""},{"line_number":142,"context_line":"2.23"},{"line_number":143,"context_line":"----"},{"line_number":144,"context_line":"  Enable IPv6 in manila."}],"source_content_type":"text/x-rst","patch_set":32,"id":"7a8ec9b2_a75f930d","line":144,"range":{"start_line":144,"start_character":14,"end_line":144,"end_character":23},"updated":"2016-09-22 03:43:32.000000000","message":"this could be removed. we all know the change is for manila.","commit_id":"1f104e55113ecfc3ca2b4ff2d753ae5230680983"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"6f4ded9bafa8d985b6856dbd1b1ead862bdf914b","unresolved":false,"context_lines":[{"line_number":141,"context_line":""},{"line_number":142,"context_line":"2.23"},{"line_number":143,"context_line":"----"},{"line_number":144,"context_line":"  Enable IPv6."}],"source_content_type":"text/x-rst","patch_set":37,"id":"1a95cdbc_b2a18648","line":144,"range":{"start_line":144,"start_character":2,"end_line":144,"end_character":13},"updated":"2016-10-08 15:44:35.000000000","message":"same","commit_id":"05de92ca7a9e3132535f1b2184111fb75af61578"},{"author":{"_account_id":23083,"name":"TommyLike","email":"tommylikehu@gmail.com","username":"TommyLike"},"change_message_id":"07c14a88a6ef7cb39974a1d65df7d98735dd2e51","unresolved":false,"context_lines":[{"line_number":141,"context_line":""},{"line_number":142,"context_line":"2.23"},{"line_number":143,"context_line":"----"},{"line_number":144,"context_line":"  Enable IPv6."}],"source_content_type":"text/x-rst","patch_set":37,"id":"1a95cdbc_4fafab7c","line":144,"range":{"start_line":144,"start_character":2,"end_line":144,"end_character":13},"in_reply_to":"1a95cdbc_b2a18648","updated":"2016-10-10 08:04:53.000000000","message":"Done","commit_id":"05de92ca7a9e3132535f1b2184111fb75af61578"},{"author":{"_account_id":8851,"name":"Valeriy Ponomaryov","email":"kiparis.kh@gmail.com","username":"vponomaryov"},"change_message_id":"4ec37efe66645c7f6c3ad731fb862dba78192604","unresolved":false,"context_lines":[{"line_number":191,"context_line":"2.32"},{"line_number":192,"context_line":"----"},{"line_number":193,"context_line":"  Added mountable snapshots APIs."},{"line_number":194,"context_line":"  "},{"line_number":195,"context_line":"2.33"},{"line_number":196,"context_line":"----"},{"line_number":197,"context_line":"  Support IPv6 format validation in allow_access API to enable IPv6."}],"source_content_type":"text/x-rst","patch_set":63,"id":"3a461143_15c4b690","line":194,"range":{"start_line":194,"start_character":0,"end_line":194,"end_character":2},"updated":"2017-01-25 14:09:22.000000000","message":"Should be removed","commit_id":"da86424cc4c019e96233db3c1d8f2558823c130e"},{"author":{"_account_id":23083,"name":"TommyLike","email":"tommylikehu@gmail.com","username":"TommyLike"},"change_message_id":"26e2c96a19820c210340154c3556961cfd29b0b7","unresolved":false,"context_lines":[{"line_number":191,"context_line":"2.32"},{"line_number":192,"context_line":"----"},{"line_number":193,"context_line":"  Added mountable snapshots APIs."},{"line_number":194,"context_line":"  "},{"line_number":195,"context_line":"2.33"},{"line_number":196,"context_line":"----"},{"line_number":197,"context_line":"  Support IPv6 format validation in allow_access API to enable IPv6."}],"source_content_type":"text/x-rst","patch_set":63,"id":"3a461143_f0039cb6","line":194,"range":{"start_line":194,"start_character":0,"end_line":194,"end_character":2},"in_reply_to":"3a461143_15c4b690","updated":"2017-01-26 00:59:49.000000000","message":"done","commit_id":"da86424cc4c019e96233db3c1d8f2558823c130e"}],"manila/api/v1/shares.py":[{"author":{"_account_id":13998,"name":"Daniel Gonzalez Nothnagel","email":"daniel.gonzalez.nothnagel@sap.com","username":"dgonzalez"},"change_message_id":"5665668f1c38d1754a5c80f96697944772586ccb","unresolved":false,"context_lines":[{"line_number":458,"context_line":"            try:"},{"line_number":459,"context_line":"                prefix \u003d int(ip_range[1])"},{"line_number":460,"context_line":"                if prefix \u003c 0 or prefix \u003e 128:"},{"line_number":461,"context_line":"                    raise ValueError()"},{"line_number":462,"context_line":"            except ValueError:"},{"line_number":463,"context_line":"                msg \u003d \u0027IP prefix should be in range from 0 to 128\u0027"},{"line_number":464,"context_line":"                raise webob.exc.HTTPBadRequest(explanation\u003dmsg)"}],"source_content_type":"text/x-python","patch_set":2,"id":"1a122d0e_05d367d6","line":461,"range":{"start_line":461,"start_character":20,"end_line":461,"end_character":38},"updated":"2016-05-04 08:21:50.000000000","message":"Instead of raising a ValueError and catching that in the except the line below, couldn\u0027t you just raise a HTTPBadRequest directly?","commit_id":"263626b501e0344f8652d7f2efa262661fa8ac3e"},{"author":{"_account_id":15100,"name":"zhongjun","email":"jun.zhongjun2@gmail.com","username":"zhongjun2"},"change_message_id":"275a958f6d90ba7016b827a370d2146e06001a83","unresolved":false,"context_lines":[{"line_number":458,"context_line":"            try:"},{"line_number":459,"context_line":"                prefix \u003d int(ip_range[1])"},{"line_number":460,"context_line":"                if prefix \u003c 0 or prefix \u003e 128:"},{"line_number":461,"context_line":"                    raise ValueError()"},{"line_number":462,"context_line":"            except ValueError:"},{"line_number":463,"context_line":"                msg \u003d \u0027IP prefix should be in range from 0 to 128\u0027"},{"line_number":464,"context_line":"                raise webob.exc.HTTPBadRequest(explanation\u003dmsg)"}],"source_content_type":"text/x-python","patch_set":2,"id":"9abb7d3a_4ea3269f","line":461,"range":{"start_line":461,"start_character":20,"end_line":461,"end_character":38},"in_reply_to":"1a122d0e_05d367d6","updated":"2016-05-27 10:02:16.000000000","message":"Done","commit_id":"263626b501e0344f8652d7f2efa262661fa8ac3e"},{"author":{"_account_id":8851,"name":"Valeriy Ponomaryov","email":"kiparis.kh@gmail.com","username":"vponomaryov"},"change_message_id":"bff2031628f220f24e7460359e602c5dff10c6f8","unresolved":false,"context_lines":[{"line_number":447,"context_line":"                raise webob.exc.HTTPBadRequest(explanation\u003dexc_str)"},{"line_number":448,"context_line":""},{"line_number":449,"context_line":"    @staticmethod"},{"line_number":450,"context_line":"    def _validate_ipv6_range(ip):"},{"line_number":451,"context_line":"        exc_str \u003d (\u0027Supported ipv6 format examples:\\n\u0027"},{"line_number":452,"context_line":"                   \u0027\\t1000:1000:1000:1000:1000:1000:1000:1000, \u0027"},{"line_number":453,"context_line":"                   \u00271000:1000:1000:1000:1000:1000:1000:1000/56\u0027)"}],"source_content_type":"text/x-python","patch_set":4,"id":"9abb7d3a_196bab86","line":450,"updated":"2016-05-31 11:22:09.000000000","message":"It is v1 API module, and it should not get new features.\n\nMoreover, it is API unrelated thing, that can be used in lots of places. Need to place such code in \"manila.utils\".\n\nAlso, better to use \"netaddr\" lib as in [1].\n\n[1] https://github.com/openstack/manila/blob/5dfbef4f/manila/utils.py#L502","commit_id":"d67d79c94cd1bb988e7942517b18197f52916e6e"},{"author":{"_account_id":15100,"name":"zhongjun","email":"jun.zhongjun2@gmail.com","username":"zhongjun2"},"change_message_id":"56679c8dc6a31f7bdcc6657806ccb9a2c805be1d","unresolved":false,"context_lines":[{"line_number":447,"context_line":"                raise webob.exc.HTTPBadRequest(explanation\u003dexc_str)"},{"line_number":448,"context_line":""},{"line_number":449,"context_line":"    @staticmethod"},{"line_number":450,"context_line":"    def _validate_ipv6_range(ip):"},{"line_number":451,"context_line":"        exc_str \u003d (\u0027Supported ipv6 format examples:\\n\u0027"},{"line_number":452,"context_line":"                   \u0027\\t1000:1000:1000:1000:1000:1000:1000:1000, \u0027"},{"line_number":453,"context_line":"                   \u00271000:1000:1000:1000:1000:1000:1000:1000/56\u0027)"}],"source_content_type":"text/x-python","patch_set":4,"id":"7aa08908_b99c180f","line":450,"in_reply_to":"9abb7d3a_196bab86","updated":"2016-06-13 07:43:53.000000000","message":"Done","commit_id":"d67d79c94cd1bb988e7942517b18197f52916e6e"},{"author":{"_account_id":14567,"name":"Rodrigo Barbieri","email":"rodrigo.barbieri2010@gmail.com","username":"ganso"},"change_message_id":"c922b31db122e8e7e81c11b0334f8545b21d9055","unresolved":false,"context_lines":[{"line_number":478,"context_line":"        access_to \u003d access_data[\u0027access_to\u0027]"},{"line_number":479,"context_line":"        if access_type \u003d\u003d \u0027ip\u0027:"},{"line_number":480,"context_line":"            self._validate_ip_range(access_to)"},{"line_number":481,"context_line":"        elif access_type \u003d\u003d \u0027ipv6\u0027 and enable_ipv6:"},{"line_number":482,"context_line":"            netutils.is_valid_ipv6(access_to)"},{"line_number":483,"context_line":"        elif access_type \u003d\u003d \u0027user\u0027:"},{"line_number":484,"context_line":"            self._validate_username(access_to)"}],"source_content_type":"text/x-python","patch_set":6,"id":"dada55a8_a865ca45","line":481,"range":{"start_line":481,"start_character":13,"end_line":481,"end_character":50},"updated":"2016-07-26 18:09:32.000000000","message":"nit: should be the other way around","commit_id":"89cfcea0a726b84ff220013102059954e88503ac"},{"author":{"_account_id":15100,"name":"zhongjun","email":"jun.zhongjun2@gmail.com","username":"zhongjun2"},"change_message_id":"a5b4b231da78143c8f3b0e573116851d1fc11572","unresolved":false,"context_lines":[{"line_number":478,"context_line":"        access_to \u003d access_data[\u0027access_to\u0027]"},{"line_number":479,"context_line":"        if access_type \u003d\u003d \u0027ip\u0027:"},{"line_number":480,"context_line":"            self._validate_ip_range(access_to)"},{"line_number":481,"context_line":"        elif access_type \u003d\u003d \u0027ipv6\u0027 and enable_ipv6:"},{"line_number":482,"context_line":"            netutils.is_valid_ipv6(access_to)"},{"line_number":483,"context_line":"        elif access_type \u003d\u003d \u0027user\u0027:"},{"line_number":484,"context_line":"            self._validate_username(access_to)"}],"source_content_type":"text/x-python","patch_set":6,"id":"9ad45d7e_7852ff14","line":481,"range":{"start_line":481,"start_character":13,"end_line":481,"end_character":50},"in_reply_to":"dada55a8_a865ca45","updated":"2016-08-09 03:11:10.000000000","message":"Done","commit_id":"89cfcea0a726b84ff220013102059954e88503ac"},{"author":{"_account_id":16203,"name":"zengyingzhe","email":"zengyingzhe@huawei.com","username":"zengyingzhe"},"change_message_id":"e3af9b17fcddb486dd60e9bf928ea0d8c28d951d","unresolved":false,"context_lines":[{"line_number":488,"context_line":"            self._validate_cephx_id(access_to)"},{"line_number":489,"context_line":"        else:"},{"line_number":490,"context_line":"            if enable_ipv6:"},{"line_number":491,"context_line":"                exc_str \u003d _(\"Only \u0027ip\u0027, \u0027ipv6\u0027, \u0027user\u0027, \u0027cert\u0027 or \u0027cephx\u0027 \""},{"line_number":492,"context_line":"                            \"access types are supported.\")"},{"line_number":493,"context_line":"            elif enable_ceph:"},{"line_number":494,"context_line":"                exc_str \u003d _(\"Only \u0027ip\u0027, \u0027user\u0027, \u0027cert\u0027 or \u0027cephx\u0027 access \""}],"source_content_type":"text/x-python","patch_set":6,"id":"dada55a8_367acf77","line":491,"range":{"start_line":491,"start_character":67,"end_line":491,"end_character":72},"updated":"2016-07-21 04:54:51.000000000","message":"I think cephx should not be included here, unless enable_ceph is also true.","commit_id":"89cfcea0a726b84ff220013102059954e88503ac"},{"author":{"_account_id":15100,"name":"zhongjun","email":"jun.zhongjun2@gmail.com","username":"zhongjun2"},"change_message_id":"a5b4b231da78143c8f3b0e573116851d1fc11572","unresolved":false,"context_lines":[{"line_number":488,"context_line":"            self._validate_cephx_id(access_to)"},{"line_number":489,"context_line":"        else:"},{"line_number":490,"context_line":"            if enable_ipv6:"},{"line_number":491,"context_line":"                exc_str \u003d _(\"Only \u0027ip\u0027, \u0027ipv6\u0027, \u0027user\u0027, \u0027cert\u0027 or \u0027cephx\u0027 \""},{"line_number":492,"context_line":"                            \"access types are supported.\")"},{"line_number":493,"context_line":"            elif enable_ceph:"},{"line_number":494,"context_line":"                exc_str \u003d _(\"Only \u0027ip\u0027, \u0027user\u0027, \u0027cert\u0027 or \u0027cephx\u0027 access \""}],"source_content_type":"text/x-python","patch_set":6,"id":"9ad45d7e_386a4781","line":491,"range":{"start_line":491,"start_character":67,"end_line":491,"end_character":72},"in_reply_to":"dada55a8_367acf77","updated":"2016-08-09 03:11:10.000000000","message":"Yes, ganso is right, ipv6 microversion is higher than cephx\u0027s, so, we need include cephx in this sentence.","commit_id":"89cfcea0a726b84ff220013102059954e88503ac"},{"author":{"_account_id":14567,"name":"Rodrigo Barbieri","email":"rodrigo.barbieri2010@gmail.com","username":"ganso"},"change_message_id":"c922b31db122e8e7e81c11b0334f8545b21d9055","unresolved":false,"context_lines":[{"line_number":488,"context_line":"            self._validate_cephx_id(access_to)"},{"line_number":489,"context_line":"        else:"},{"line_number":490,"context_line":"            if enable_ipv6:"},{"line_number":491,"context_line":"                exc_str \u003d _(\"Only \u0027ip\u0027, \u0027ipv6\u0027, \u0027user\u0027, \u0027cert\u0027 or \u0027cephx\u0027 \""},{"line_number":492,"context_line":"                            \"access types are supported.\")"},{"line_number":493,"context_line":"            elif enable_ceph:"},{"line_number":494,"context_line":"                exc_str \u003d _(\"Only \u0027ip\u0027, \u0027user\u0027, \u0027cert\u0027 or \u0027cephx\u0027 access \""}],"source_content_type":"text/x-python","patch_set":6,"id":"dada55a8_6848f2b3","line":491,"range":{"start_line":491,"start_character":67,"end_line":491,"end_character":72},"in_reply_to":"dada55a8_367acf77","updated":"2016-07-26 18:09:32.000000000","message":"ipv6 microversion is higher than cephx\u0027s, so I believe this is correct","commit_id":"89cfcea0a726b84ff220013102059954e88503ac"},{"author":{"_account_id":9003,"name":"Tom Barron","email":"tpb@dyncloud.net","username":"tbarron"},"change_message_id":"1b7844624dc907c33c760d450774913d7a30e497","unresolved":false,"context_lines":[{"line_number":448,"context_line":"                raise webob.exc.HTTPBadRequest(explanation\u003dexc_str)"},{"line_number":449,"context_line":""},{"line_number":450,"context_line":"    @staticmethod"},{"line_number":451,"context_line":"    def _validate_ipv6_range(ipv6_range):"},{"line_number":452,"context_line":"        ipv6_range \u003d ipv6_range.split(\u0027/\u0027)"},{"line_number":453,"context_line":"        exc_str \u003d (\u0027Supported ipv6 format examples:\\n\u0027"},{"line_number":454,"context_line":"                   \u0027\\t2001:2001:2001:2001:2001:2001:2001:2001, \u0027"}],"source_content_type":"text/x-python","patch_set":20,"id":"3ac371cc_64449bb6","line":451,"range":{"start_line":451,"start_character":1,"end_line":451,"end_character":41},"updated":"2016-08-17 16:46:44.000000000","message":"In patch set 4 Valeriry said:\n\n\u003cquote\u003e It is v1 API module, and it should not get new features.\nMoreover, it is API unrelated thing, that can be used in lots of places. Need to place such code in \"manila.utils\".\u003c/quote\u003e\n\nYou replied \u0027Done\u0027 and removed this method in patch set 5, but then re-introduced it - so far as I can see without any explanation - in patch set 11.\n\nThis seems like an issue that should be resolved before this review should merge.","commit_id":"302372dc252e111a6b4c4bbf82800b10d70b8168"},{"author":{"_account_id":15100,"name":"zhongjun","email":"jun.zhongjun2@gmail.com","username":"zhongjun2"},"change_message_id":"5abdc9f1100ccd1e3bc1c1e21b9b72ec53247b27","unresolved":false,"context_lines":[{"line_number":448,"context_line":"                raise webob.exc.HTTPBadRequest(explanation\u003dexc_str)"},{"line_number":449,"context_line":""},{"line_number":450,"context_line":"    @staticmethod"},{"line_number":451,"context_line":"    def _validate_ipv6_range(ipv6_range):"},{"line_number":452,"context_line":"        ipv6_range \u003d ipv6_range.split(\u0027/\u0027)"},{"line_number":453,"context_line":"        exc_str \u003d (\u0027Supported ipv6 format examples:\\n\u0027"},{"line_number":454,"context_line":"                   \u0027\\t2001:2001:2001:2001:2001:2001:2001:2001, \u0027"}],"source_content_type":"text/x-python","patch_set":20,"id":"3ac371cc_230b92d7","line":451,"range":{"start_line":451,"start_character":1,"end_line":451,"end_character":41},"in_reply_to":"3ac371cc_64449bb6","updated":"2016-08-18 08:04:50.000000000","message":"Done","commit_id":"302372dc252e111a6b4c4bbf82800b10d70b8168"},{"author":{"_account_id":9003,"name":"Tom Barron","email":"tpb@dyncloud.net","username":"tbarron"},"change_message_id":"14be43dfcf98d01946020aa83c47a8dead302809","unresolved":false,"context_lines":[{"line_number":487,"context_line":"                    err_msg \u003d encodeutils.exception_to_unicode(error)"},{"line_number":488,"context_line":"                    raise webob.exc.HTTPBadRequest(explanation\u003derr_msg)"},{"line_number":489,"context_line":"            else:"},{"line_number":490,"context_line":"                self._validate_ip_range(access_to)"},{"line_number":491,"context_line":"        elif access_type \u003d\u003d \u0027user\u0027:"},{"line_number":492,"context_line":"            self._validate_username(access_to)"},{"line_number":493,"context_line":"        elif access_type \u003d\u003d \u0027cert\u0027:"}],"source_content_type":"text/x-python","patch_set":26,"id":"fa7ab95a_92033a76","line":490,"range":{"start_line":490,"start_character":15,"end_line":490,"end_character":40},"updated":"2016-08-31 15:28:14.000000000","message":"We should get rid of our roll-your-own validation for IPv4 too, and can do that using the ipaddress module as well.\n\nI wonder whether we should do this in this patch, early in Ocata, or whether we could and should do that as a separate refactor patch.\n\nI could adapt https://review.openstack.org/#/c/357507 (using an ipv4 specific method if appropriate).","commit_id":"52935c079ddf5e3b02479ba49bc49d9ef2f4446e"},{"author":{"_account_id":15100,"name":"zhongjun","email":"jun.zhongjun2@gmail.com","username":"zhongjun2"},"change_message_id":"efcbb77223192dffa17729f079b26d8f8df05661","unresolved":false,"context_lines":[{"line_number":487,"context_line":"                    err_msg \u003d encodeutils.exception_to_unicode(error)"},{"line_number":488,"context_line":"                    raise webob.exc.HTTPBadRequest(explanation\u003derr_msg)"},{"line_number":489,"context_line":"            else:"},{"line_number":490,"context_line":"                self._validate_ip_range(access_to)"},{"line_number":491,"context_line":"        elif access_type \u003d\u003d \u0027user\u0027:"},{"line_number":492,"context_line":"            self._validate_username(access_to)"},{"line_number":493,"context_line":"        elif access_type \u003d\u003d \u0027cert\u0027:"}],"source_content_type":"text/x-python","patch_set":26,"id":"fa7ab95a_c7e59ba4","line":490,"range":{"start_line":490,"start_character":15,"end_line":490,"end_character":40},"in_reply_to":"fa7ab95a_92033a76","updated":"2016-09-02 06:07:39.000000000","message":"Agree with we could and should do that as a separate refactor patch(https://review.openstack.org/#/c/357507 ). How about let we focus this patch on the enable IPv6. Thanks","commit_id":"52935c079ddf5e3b02479ba49bc49d9ef2f4446e"},{"author":{"_account_id":11865,"name":"Clinton Knight","email":"cknight@netapp.com","username":"cknight"},"change_message_id":"e6b8b41218811904242c8797c22c09a6cb7e99a0","unresolved":false,"context_lines":[{"line_number":411,"context_line":"                    err_msg \u003d encodeutils.exception_to_unicode(error)"},{"line_number":412,"context_line":"                    raise webob.exc.HTTPBadRequest(explanation\u003derr_msg)"},{"line_number":413,"context_line":"            else:"},{"line_number":414,"context_line":"                self._validate_ip_range(access_to)"},{"line_number":415,"context_line":"        elif access_type \u003d\u003d \u0027user\u0027:"},{"line_number":416,"context_line":"            self._validate_username(access_to)"},{"line_number":417,"context_line":"        elif access_type \u003d\u003d \u0027cert\u0027:"}],"source_content_type":"text/x-python","patch_set":31,"id":"9a89bdaa_2e880422","line":414,"range":{"start_line":414,"start_character":0,"end_line":414,"end_character":50},"updated":"2016-09-12 12:39:12.000000000","message":"Manila never should have had its own cheesy IPv4 validation code, so this is a perfect opportunity to remove _validate_ip_range.  You can use ipaddress to parse the address and check whether you got an IPv4Address or IPv6Address object.","commit_id":"674e76c6e784470dc2663ff8c6ecb436ef97c347"},{"author":{"_account_id":15100,"name":"zhongjun","email":"jun.zhongjun2@gmail.com","username":"zhongjun2"},"change_message_id":"7b99ade9e49c4c41e3ca64e28c2c95d3f1d6c665","unresolved":false,"context_lines":[{"line_number":411,"context_line":"                    err_msg \u003d encodeutils.exception_to_unicode(error)"},{"line_number":412,"context_line":"                    raise webob.exc.HTTPBadRequest(explanation\u003derr_msg)"},{"line_number":413,"context_line":"            else:"},{"line_number":414,"context_line":"                self._validate_ip_range(access_to)"},{"line_number":415,"context_line":"        elif access_type \u003d\u003d \u0027user\u0027:"},{"line_number":416,"context_line":"            self._validate_username(access_to)"},{"line_number":417,"context_line":"        elif access_type \u003d\u003d \u0027cert\u0027:"}],"source_content_type":"text/x-python","patch_set":31,"id":"7a8ec9b2_f13a8033","line":414,"range":{"start_line":414,"start_character":0,"end_line":414,"end_character":50},"in_reply_to":"9a89bdaa_2e880422","updated":"2016-09-21 07:16:43.000000000","message":"Hi Clinton Knight, I remove our own validation function _validate_ip_range. but I change it to ipaddress.IPv4Network. \n\nBecause if I use ipaddress.ip_address first, then check whether I got an IPv4Address or IPv6Address object,\nit will be ambiguous for user to see \"ipaddress.AddressValueError: \u0027xxx\u0027 does not appear to be an IPv4 or IPv6 network.\", even if we not support enable_ipv6(version \u003c 2.23). \n\nIf we use ipaddress.IPv4Network to check the ip format, it will only see errors about IPv4.","commit_id":"674e76c6e784470dc2663ff8c6ecb436ef97c347"},{"author":{"_account_id":11865,"name":"Clinton Knight","email":"cknight@netapp.com","username":"cknight"},"change_message_id":"0698ab7108607bf4d9e246c60ffd7f26332a2dc2","unresolved":false,"context_lines":[{"line_number":380,"context_line":"        if access_type \u003d\u003d \u0027ip\u0027:"},{"line_number":381,"context_line":"            try:"},{"line_number":382,"context_line":"                if enable_ipv6:"},{"line_number":383,"context_line":"                    ipaddress.ip_network(six.text_type(access_to))"},{"line_number":384,"context_line":"                else:"},{"line_number":385,"context_line":"                    ipaddress.IPv4Network(six.text_type(access_to))"},{"line_number":386,"context_line":"            except ValueError as error:"}],"source_content_type":"text/x-python","patch_set":32,"id":"7a8ec9b2_197b6e29","line":383,"range":{"start_line":383,"start_character":20,"end_line":383,"end_character":40},"updated":"2016-09-21 15:36:55.000000000","message":"Much better, thanks.","commit_id":"1f104e55113ecfc3ca2b4ff2d753ae5230680983"},{"author":{"_account_id":17097,"name":"Tiago Pasqualini da Silva","email":"t.pasqualini@luizalabs.com","username":"tiago.pasqualini"},"change_message_id":"f7201d773a9f199533207f6f49baf8214f99eda5","unresolved":false,"context_lines":[{"line_number":379,"context_line":"        if access_type \u003d\u003d \u0027ip\u0027:"},{"line_number":380,"context_line":"            try:"},{"line_number":381,"context_line":"                if enable_ipv6:"},{"line_number":382,"context_line":"                    ipaddress.ip_network(six.text_type(access_to))"},{"line_number":383,"context_line":"                else:"},{"line_number":384,"context_line":"                    ipaddress.IPv4Network(six.text_type(access_to))"},{"line_number":385,"context_line":"            except ValueError as error:"}],"source_content_type":"text/x-python","patch_set":33,"id":"3a98d1f4_a1c6d497","line":382,"range":{"start_line":382,"start_character":41,"end_line":382,"end_character":65},"updated":"2016-09-30 12:36:45.000000000","message":"access_to is already a string, no need to use six.text_type here.","commit_id":"6acecf96d51bb5f55afa1ae943c142ba6c6e24f7"},{"author":{"_account_id":23083,"name":"TommyLike","email":"tommylikehu@gmail.com","username":"TommyLike"},"change_message_id":"ab2fc5c9bd7cf145416aa02021782e1d1618902e","unresolved":false,"context_lines":[{"line_number":379,"context_line":"        if access_type \u003d\u003d \u0027ip\u0027:"},{"line_number":380,"context_line":"            try:"},{"line_number":381,"context_line":"                if enable_ipv6:"},{"line_number":382,"context_line":"                    ipaddress.ip_network(six.text_type(access_to))"},{"line_number":383,"context_line":"                else:"},{"line_number":384,"context_line":"                    ipaddress.IPv4Network(six.text_type(access_to))"},{"line_number":385,"context_line":"            except ValueError as error:"}],"source_content_type":"text/x-python","patch_set":33,"id":"1a95cdbc_9904b818","line":382,"range":{"start_line":382,"start_character":41,"end_line":382,"end_character":65},"in_reply_to":"3a98d1f4_a1c6d497","updated":"2016-10-08 03:28:52.000000000","message":"I agree with clinton","commit_id":"6acecf96d51bb5f55afa1ae943c142ba6c6e24f7"},{"author":{"_account_id":11865,"name":"Clinton Knight","email":"cknight@netapp.com","username":"cknight"},"change_message_id":"d18f4e69be37466e9ce97fcc97d1254acb2295e8","unresolved":false,"context_lines":[{"line_number":379,"context_line":"        if access_type \u003d\u003d \u0027ip\u0027:"},{"line_number":380,"context_line":"            try:"},{"line_number":381,"context_line":"                if enable_ipv6:"},{"line_number":382,"context_line":"                    ipaddress.ip_network(six.text_type(access_to))"},{"line_number":383,"context_line":"                else:"},{"line_number":384,"context_line":"                    ipaddress.IPv4Network(six.text_type(access_to))"},{"line_number":385,"context_line":"            except ValueError as error:"}],"source_content_type":"text/x-python","patch_set":33,"id":"3a98d1f4_3c58fb89","line":382,"range":{"start_line":382,"start_character":41,"end_line":382,"end_character":65},"in_reply_to":"3a98d1f4_a1c6d497","updated":"2016-10-02 03:18:16.000000000","message":"The ipaddress module insists on receiving unicode strings, so using six.text_type here is preferable to guarantee that.","commit_id":"6acecf96d51bb5f55afa1ae943c142ba6c6e24f7"},{"author":{"_account_id":17097,"name":"Tiago Pasqualini da Silva","email":"t.pasqualini@luizalabs.com","username":"tiago.pasqualini"},"change_message_id":"f7201d773a9f199533207f6f49baf8214f99eda5","unresolved":false,"context_lines":[{"line_number":381,"context_line":"                if enable_ipv6:"},{"line_number":382,"context_line":"                    ipaddress.ip_network(six.text_type(access_to))"},{"line_number":383,"context_line":"                else:"},{"line_number":384,"context_line":"                    ipaddress.IPv4Network(six.text_type(access_to))"},{"line_number":385,"context_line":"            except ValueError as error:"},{"line_number":386,"context_line":"                err_msg \u003d encodeutils.exception_to_unicode(error)"},{"line_number":387,"context_line":"                raise webob.exc.HTTPBadRequest(explanation\u003derr_msg)"}],"source_content_type":"text/x-python","patch_set":33,"id":"3a98d1f4_2139e4a4","line":384,"range":{"start_line":384,"start_character":42,"end_line":384,"end_character":66},"updated":"2016-09-30 12:36:45.000000000","message":"same","commit_id":"6acecf96d51bb5f55afa1ae943c142ba6c6e24f7"},{"author":{"_account_id":23083,"name":"TommyLike","email":"tommylikehu@gmail.com","username":"TommyLike"},"change_message_id":"ab2fc5c9bd7cf145416aa02021782e1d1618902e","unresolved":false,"context_lines":[{"line_number":381,"context_line":"                if enable_ipv6:"},{"line_number":382,"context_line":"                    ipaddress.ip_network(six.text_type(access_to))"},{"line_number":383,"context_line":"                else:"},{"line_number":384,"context_line":"                    ipaddress.IPv4Network(six.text_type(access_to))"},{"line_number":385,"context_line":"            except ValueError as error:"},{"line_number":386,"context_line":"                err_msg \u003d encodeutils.exception_to_unicode(error)"},{"line_number":387,"context_line":"                raise webob.exc.HTTPBadRequest(explanation\u003derr_msg)"}],"source_content_type":"text/x-python","patch_set":33,"id":"1a95cdbc_f405c310","line":384,"range":{"start_line":384,"start_character":42,"end_line":384,"end_character":66},"in_reply_to":"3a98d1f4_2139e4a4","updated":"2016-10-08 03:28:52.000000000","message":"I agree with clinton","commit_id":"6acecf96d51bb5f55afa1ae943c142ba6c6e24f7"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"210f4aab78ce9ac4f33cbf3482dd56fb001661c6","unresolved":false,"context_lines":[{"line_number":19,"context_line":"import re"},{"line_number":20,"context_line":"import string"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"import ipaddress"},{"line_number":23,"context_line":"from oslo_log import log"},{"line_number":24,"context_line":"from oslo_utils import encodeutils"},{"line_number":25,"context_line":"from oslo_utils import strutils"}],"source_content_type":"text/x-python","patch_set":37,"id":"1a95cdbc_bda15748","line":22,"range":{"start_line":22,"start_character":0,"end_line":22,"end_character":16},"updated":"2016-10-08 17:25:34.000000000","message":"this library is only available in python3.3+\n\nWhile we would like to be python3 compliant, we\u0027re not supposed to be dropping support to python2.7+\n\nEither explore an alternative (see neutron\u0027s use of netaddr) or add the requirement from global requirements\n https://github.com/openstack/requirements/blob/master/global-requirements.txt#L66","commit_id":"05de92ca7a9e3132535f1b2184111fb75af61578"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"da475d60f63f49f6034d5e8e2782b4bdef0b1c0f","unresolved":false,"context_lines":[{"line_number":19,"context_line":"import re"},{"line_number":20,"context_line":"import string"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"import ipaddress"},{"line_number":23,"context_line":"from oslo_log import log"},{"line_number":24,"context_line":"from oslo_utils import encodeutils"},{"line_number":25,"context_line":"from oslo_utils import strutils"}],"source_content_type":"text/x-python","patch_set":37,"id":"1a95cdbc_58294189","line":22,"range":{"start_line":22,"start_character":0,"end_line":22,"end_character":16},"in_reply_to":"1a95cdbc_9d11fb5f","updated":"2016-10-08 18:08:48.000000000","message":"Wow, i forgot we went through this on #openstack-manila a couple months ago :) I think we can add the requirements line safely, just to deter any distros not in-sync.\n\nhttp://eavesdrop.openstack.org/irclogs/%23openstack-manila/%23openstack-manila.2016-08-23.log.html","commit_id":"05de92ca7a9e3132535f1b2184111fb75af61578"},{"author":{"_account_id":9003,"name":"Tom Barron","email":"tpb@dyncloud.net","username":"tbarron"},"change_message_id":"2e1977855cb8c688dc5b7ae781865ef506fea444","unresolved":false,"context_lines":[{"line_number":19,"context_line":"import re"},{"line_number":20,"context_line":"import string"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"import ipaddress"},{"line_number":23,"context_line":"from oslo_log import log"},{"line_number":24,"context_line":"from oslo_utils import encodeutils"},{"line_number":25,"context_line":"from oslo_utils import strutils"}],"source_content_type":"text/x-python","patch_set":37,"id":"1a95cdbc_fd5cbf4c","line":22,"range":{"start_line":22,"start_character":0,"end_line":22,"end_character":16},"in_reply_to":"1a95cdbc_bda15748","updated":"2016-10-08 17:49:08.000000000","message":"It\u0027s also available in python 2.7+.\nPython 2.7.12 (default, Sep  2 2016, 14:46:00) \n\n[GCC 6.1.1 20160621 (Red Hat 6.1.1-3)] on linux2\nType \"help\", \"copyright\", \"credits\" or \"license\" for more information.\n\u003e\u003e\u003e import ipaddress\n\u003e\u003e\u003e","commit_id":"05de92ca7a9e3132535f1b2184111fb75af61578"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"a363619c2ea54c2cf4ac1740539b462c0ba5b381","unresolved":false,"context_lines":[{"line_number":19,"context_line":"import re"},{"line_number":20,"context_line":"import string"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"import ipaddress"},{"line_number":23,"context_line":"from oslo_log import log"},{"line_number":24,"context_line":"from oslo_utils import encodeutils"},{"line_number":25,"context_line":"from oslo_utils import strutils"}],"source_content_type":"text/x-python","patch_set":37,"id":"1a95cdbc_9d11fb5f","line":22,"range":{"start_line":22,"start_character":0,"end_line":22,"end_character":16},"in_reply_to":"1a95cdbc_fd5cbf4c","updated":"2016-10-08 17:53:47.000000000","message":"Ah.. Strange, available on the default version 2.7.6 on ubuntu, but not available on the one that ships with mac,  2.7.10. I see no harm in adding the requirement from global requirements, just to be sure.\n\n$ python\nPython 2.7.10 (default, Jul 30 2016, 18:31:42)\n[GCC 4.2.1 Compatible Apple LLVM 8.0.0 (clang-800.0.34)] on darwin\nType \"help\", \"copyright\", \"credits\" or \"license\" for more information.\n\nhttps://pypi.python.org/pypi/ipaddress","commit_id":"05de92ca7a9e3132535f1b2184111fb75af61578"},{"author":{"_account_id":11637,"name":"jay.xu","email":"jay.xu@emc.com","username":"jay.xu"},"change_message_id":"bbb4fe58538e833a8c787d41e20bd1ed50885e63","unresolved":false,"context_lines":[{"line_number":368,"context_line":"                \u0027Ceph IDs may not contain periods\u0027))"},{"line_number":369,"context_line":""},{"line_number":370,"context_line":"    def _allow_access(self, req, id, body, enable_ceph\u003dFalse,"},{"line_number":371,"context_line":"                      enable_ipv6\u003dFalse):"},{"line_number":372,"context_line":"        \"\"\"Add share access rule.\"\"\""},{"line_number":373,"context_line":"        context \u003d req.environ[\u0027manila.context\u0027]"},{"line_number":374,"context_line":"        access_data \u003d body.get(\u0027allow_access\u0027, body.get(\u0027os-allow_access\u0027))"}],"source_content_type":"text/x-python","patch_set":37,"id":"1a95cdbc_a93f4fb2","line":371,"updated":"2016-10-10 03:05:43.000000000","message":"The host with IPv6 address cannot connect to the share server which network is configured as IPv4 address. So when introducing IPv6 support for host ACL, how about validate the consistency of the IP versions (i.e. host IP for ACL and network IP of share server) ? Otherwise, it has to be handled by each driver.","commit_id":"05de92ca7a9e3132535f1b2184111fb75af61578"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"6f4ded9bafa8d985b6856dbd1b1ead862bdf914b","unresolved":false,"context_lines":[{"line_number":376,"context_line":""},{"line_number":377,"context_line":"        access_type \u003d access_data[\u0027access_type\u0027]"},{"line_number":378,"context_line":"        access_to \u003d access_data[\u0027access_to\u0027]"},{"line_number":379,"context_line":"        if access_type \u003d\u003d \u0027ip\u0027:"},{"line_number":380,"context_line":"            try:"},{"line_number":381,"context_line":"                if enable_ipv6:"},{"line_number":382,"context_line":"                    ipaddress.ip_network(six.text_type(access_to))"},{"line_number":383,"context_line":"                else:"},{"line_number":384,"context_line":"                    ipaddress.IPv4Network(six.text_type(access_to))"},{"line_number":385,"context_line":"            except ValueError as error:"},{"line_number":386,"context_line":"                err_msg \u003d encodeutils.exception_to_unicode(error)"},{"line_number":387,"context_line":"                raise webob.exc.HTTPBadRequest(explanation\u003derr_msg)"},{"line_number":388,"context_line":"        elif access_type \u003d\u003d \u0027user\u0027:"},{"line_number":389,"context_line":"            self._validate_username(access_to)"},{"line_number":390,"context_line":"        elif access_type \u003d\u003d \u0027cert\u0027:"}],"source_content_type":"text/x-python","patch_set":37,"id":"1a95cdbc_12587a55","line":387,"range":{"start_line":379,"start_character":8,"end_line":387,"end_character":67},"updated":"2016-10-08 15:44:35.000000000","message":"simplification:\n    \n if access_type \u003d\u003d \u0027ip\u0027:\n    validator \u003d  ipaddress.ip_network if enable_ipv6 else ipaddress.IPv4Network\n    try:\n       validator(six.text_type(access_to))\n    except ValueError as err:\n        err_msg \u003d encodeutils.exception_to_unicode(err)\n        raise webob.exc.HTTPBadRequest(explanation\u003derr_msg)","commit_id":"05de92ca7a9e3132535f1b2184111fb75af61578"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"210f4aab78ce9ac4f33cbf3482dd56fb001661c6","unresolved":false,"context_lines":[{"line_number":376,"context_line":""},{"line_number":377,"context_line":"        access_type \u003d access_data[\u0027access_type\u0027]"},{"line_number":378,"context_line":"        access_to \u003d access_data[\u0027access_to\u0027]"},{"line_number":379,"context_line":"        if access_type \u003d\u003d \u0027ip\u0027:"},{"line_number":380,"context_line":"            try:"},{"line_number":381,"context_line":"                if enable_ipv6:"},{"line_number":382,"context_line":"                    ipaddress.ip_network(six.text_type(access_to))"},{"line_number":383,"context_line":"                else:"},{"line_number":384,"context_line":"                    ipaddress.IPv4Network(six.text_type(access_to))"},{"line_number":385,"context_line":"            except ValueError as error:"},{"line_number":386,"context_line":"                err_msg \u003d encodeutils.exception_to_unicode(error)"},{"line_number":387,"context_line":"                raise webob.exc.HTTPBadRequest(explanation\u003derr_msg)"},{"line_number":388,"context_line":"        elif access_type \u003d\u003d \u0027user\u0027:"},{"line_number":389,"context_line":"            self._validate_username(access_to)"},{"line_number":390,"context_line":"        elif access_type \u003d\u003d \u0027cert\u0027:"}],"source_content_type":"text/x-python","patch_set":37,"id":"1a95cdbc_ddde23dc","line":387,"range":{"start_line":379,"start_character":8,"end_line":387,"end_character":67},"in_reply_to":"1a95cdbc_12587a55","updated":"2016-10-08 17:25:34.000000000","message":"Can we consider lowercasing ipv6 addresses?","commit_id":"05de92ca7a9e3132535f1b2184111fb75af61578"},{"author":{"_account_id":23083,"name":"TommyLike","email":"tommylikehu@gmail.com","username":"TommyLike"},"change_message_id":"07c14a88a6ef7cb39974a1d65df7d98735dd2e51","unresolved":false,"context_lines":[{"line_number":376,"context_line":""},{"line_number":377,"context_line":"        access_type \u003d access_data[\u0027access_type\u0027]"},{"line_number":378,"context_line":"        access_to \u003d access_data[\u0027access_to\u0027]"},{"line_number":379,"context_line":"        if access_type \u003d\u003d \u0027ip\u0027:"},{"line_number":380,"context_line":"            try:"},{"line_number":381,"context_line":"                if enable_ipv6:"},{"line_number":382,"context_line":"                    ipaddress.ip_network(six.text_type(access_to))"},{"line_number":383,"context_line":"                else:"},{"line_number":384,"context_line":"                    ipaddress.IPv4Network(six.text_type(access_to))"},{"line_number":385,"context_line":"            except ValueError as error:"},{"line_number":386,"context_line":"                err_msg \u003d encodeutils.exception_to_unicode(error)"},{"line_number":387,"context_line":"                raise webob.exc.HTTPBadRequest(explanation\u003derr_msg)"},{"line_number":388,"context_line":"        elif access_type \u003d\u003d \u0027user\u0027:"},{"line_number":389,"context_line":"            self._validate_username(access_to)"},{"line_number":390,"context_line":"        elif access_type \u003d\u003d \u0027cert\u0027:"}],"source_content_type":"text/x-python","patch_set":37,"id":"1a95cdbc_0f15a39a","line":387,"range":{"start_line":379,"start_character":8,"end_line":387,"end_character":67},"in_reply_to":"1a95cdbc_12587a55","updated":"2016-10-10 08:04:53.000000000","message":"Done","commit_id":"05de92ca7a9e3132535f1b2184111fb75af61578"},{"author":{"_account_id":16203,"name":"zengyingzhe","email":"zengyingzhe@huawei.com","username":"zengyingzhe"},"change_message_id":"0f067417cdb0c1ecc4c1b5dfa46c522f4268e8a4","unresolved":false,"context_lines":[{"line_number":366,"context_line":"            raise webob.exc.HTTPBadRequest(explanation\u003d_("},{"line_number":367,"context_line":"                \u0027Ceph IDs may not contain periods\u0027))"},{"line_number":368,"context_line":""},{"line_number":369,"context_line":"    def _check_ip_validation_and_consistency(self, context, share,"},{"line_number":370,"context_line":"                                             access_to, enable_ipv6):"},{"line_number":371,"context_line":"        # access_to address\u0027 validation and consistency with share_server"},{"line_number":372,"context_line":"        # will be checked if IPv6 enabled and share server id not none."}],"source_content_type":"text/x-python","patch_set":43,"id":"ba5da102_d5858459","line":369,"updated":"2016-10-29 09:29:09.000000000","message":"I\u0027m not quite sure if we really need this consistency with share_server check, looking for others\u0027 opinions.","commit_id":"32aec1af2634b158b9cc7d1f6acd4e6727aad679"},{"author":{"_account_id":11637,"name":"jay.xu","email":"jay.xu@emc.com","username":"jay.xu"},"change_message_id":"6cf6dc732f5035d7010f2e24fd0433183c08dac3","unresolved":false,"context_lines":[{"line_number":376,"context_line":"                access_type \u003d ipaddress.ip_network(six.text_type(access_to))"},{"line_number":377,"context_line":"                server_id \u003d share.get(\u0027share_server_id\u0027, None)"},{"line_number":378,"context_line":"                if server_id:"},{"line_number":379,"context_line":"                    share_server \u003d self.share_api.get_share_server(context,"},{"line_number":380,"context_line":"                                                                   server_id)"},{"line_number":381,"context_line":"                    server_type \u003d ipaddress.ip_network(six.text_type("},{"line_number":382,"context_line":"                        share_server.get(\u0027host\u0027, None)))"}],"source_content_type":"text/x-python","patch_set":43,"id":"9a629dbe_26823f53","line":379,"updated":"2016-11-08 05:44:48.000000000","message":"The module db is imported, so how about using db api directly instead of share api?","commit_id":"32aec1af2634b158b9cc7d1f6acd4e6727aad679"},{"author":{"_account_id":16203,"name":"zengyingzhe","email":"zengyingzhe@huawei.com","username":"zengyingzhe"},"change_message_id":"0f067417cdb0c1ecc4c1b5dfa46c522f4268e8a4","unresolved":false,"context_lines":[{"line_number":379,"context_line":"                    share_server \u003d self.share_api.get_share_server(context,"},{"line_number":380,"context_line":"                                                                   server_id)"},{"line_number":381,"context_line":"                    server_type \u003d ipaddress.ip_network(six.text_type("},{"line_number":382,"context_line":"                        share_server.get(\u0027host\u0027, None)))"},{"line_number":383,"context_line":"            else:"},{"line_number":384,"context_line":"                ipaddress.IPv4Network(six.text_type(access_to))"},{"line_number":385,"context_line":"        except ValueError as error:"}],"source_content_type":"text/x-python","patch_set":43,"id":"ba5da102_d234bafc","line":382,"range":{"start_line":382,"start_character":41,"end_line":382,"end_character":47},"updated":"2016-10-29 09:29:09.000000000","message":"In \u0027NetworkAllocation\u0027 table, there\u0027s a ip_version field, using it might be better.","commit_id":"32aec1af2634b158b9cc7d1f6acd4e6727aad679"},{"author":{"_account_id":11637,"name":"jay.xu","email":"jay.xu@emc.com","username":"jay.xu"},"change_message_id":"6cf6dc732f5035d7010f2e24fd0433183c08dac3","unresolved":false,"context_lines":[{"line_number":379,"context_line":"                    share_server \u003d self.share_api.get_share_server(context,"},{"line_number":380,"context_line":"                                                                   server_id)"},{"line_number":381,"context_line":"                    server_type \u003d ipaddress.ip_network(six.text_type("},{"line_number":382,"context_line":"                        share_server.get(\u0027host\u0027, None)))"},{"line_number":383,"context_line":"            else:"},{"line_number":384,"context_line":"                ipaddress.IPv4Network(six.text_type(access_to))"},{"line_number":385,"context_line":"        except ValueError as error:"}],"source_content_type":"text/x-python","patch_set":43,"id":"9a629dbe_46873361","line":382,"range":{"start_line":382,"start_character":41,"end_line":382,"end_character":47},"in_reply_to":"ba5da102_d234bafc","updated":"2016-11-08 05:44:48.000000000","message":"+1","commit_id":"32aec1af2634b158b9cc7d1f6acd4e6727aad679"},{"author":{"_account_id":16203,"name":"zengyingzhe","email":"zengyingzhe@huawei.com","username":"zengyingzhe"},"change_message_id":"0f067417cdb0c1ecc4c1b5dfa46c522f4268e8a4","unresolved":false,"context_lines":[{"line_number":386,"context_line":"            err_msg \u003d encodeutils.exception_to_unicode(error)"},{"line_number":387,"context_line":"            raise webob.exc.HTTPBadRequest(explanation\u003derr_msg)"},{"line_number":388,"context_line":"        if (enable_ipv6 and server_type"},{"line_number":389,"context_line":"                and access_type.__class__ !\u003d server_type.__class__):"},{"line_number":390,"context_line":"            err_msg \u003d _(\"access_to\u0027s and share_server\u0027s ip type(IPv4/IPv6) not\""},{"line_number":391,"context_line":"                        \"match.\")"},{"line_number":392,"context_line":"            raise webob.exc.HTTPBadRequest(explanation\u003derr_msg)"}],"source_content_type":"text/x-python","patch_set":43,"id":"ba5da102_1248f286","line":389,"range":{"start_line":389,"start_character":32,"end_line":389,"end_character":41},"updated":"2016-10-29 09:29:09.000000000","message":"why not use the \u0027version\u0027 property?","commit_id":"32aec1af2634b158b9cc7d1f6acd4e6727aad679"},{"author":{"_account_id":16203,"name":"zengyingzhe","email":"zengyingzhe@huawei.com","username":"zengyingzhe"},"change_message_id":"0f067417cdb0c1ecc4c1b5dfa46c522f4268e8a4","unresolved":false,"context_lines":[{"line_number":387,"context_line":"            raise webob.exc.HTTPBadRequest(explanation\u003derr_msg)"},{"line_number":388,"context_line":"        if (enable_ipv6 and server_type"},{"line_number":389,"context_line":"                and access_type.__class__ !\u003d server_type.__class__):"},{"line_number":390,"context_line":"            err_msg \u003d _(\"access_to\u0027s and share_server\u0027s ip type(IPv4/IPv6) not\""},{"line_number":391,"context_line":"                        \"match.\")"},{"line_number":392,"context_line":"            raise webob.exc.HTTPBadRequest(explanation\u003derr_msg)"},{"line_number":393,"context_line":""}],"source_content_type":"text/x-python","patch_set":43,"id":"ba5da102_123f12d7","line":390,"range":{"start_line":390,"start_character":25,"end_line":390,"end_character":55},"updated":"2016-10-29 09:29:09.000000000","message":"print out what access_to and share_server\u0027s IP versions are.","commit_id":"32aec1af2634b158b9cc7d1f6acd4e6727aad679"},{"author":{"_account_id":16203,"name":"zengyingzhe","email":"zengyingzhe@huawei.com","username":"zengyingzhe"},"change_message_id":"7b54cbbfefb9c4add241713c77be83878154b2a1","unresolved":false,"context_lines":[{"line_number":366,"context_line":"            raise webob.exc.HTTPBadRequest(explanation\u003d_("},{"line_number":367,"context_line":"                \u0027Ceph IDs may not contain periods\u0027))"},{"line_number":368,"context_line":""},{"line_number":369,"context_line":"    def _validate_ip(self, context, access_to, enable_ipv6):"},{"line_number":370,"context_line":"        try:"},{"line_number":371,"context_line":"            if enable_ipv6:"},{"line_number":372,"context_line":"                validator \u003d ipaddress.ip_network"}],"source_content_type":"text/x-python","patch_set":48,"id":"3a71b18c_7fbeaaae","line":369,"range":{"start_line":369,"start_character":27,"end_line":369,"end_character":34},"updated":"2016-12-08 01:35:25.000000000","message":"this argument isn\u0027t used anywhere.","commit_id":"19848e8f6722818d239bb4751631e20404f40019"},{"author":{"_account_id":14567,"name":"Rodrigo Barbieri","email":"rodrigo.barbieri2010@gmail.com","username":"ganso"},"change_message_id":"7ff1be102d66e3b55caa6f5256e2e6f0c684a889","unresolved":false,"context_lines":[{"line_number":369,"context_line":"    def _validate_ip(self, access_to, enable_ipv6):"},{"line_number":370,"context_line":"        try:"},{"line_number":371,"context_line":"            if enable_ipv6:"},{"line_number":372,"context_line":"                validator \u003d ipaddress.ip_network"},{"line_number":373,"context_line":"            else:"},{"line_number":374,"context_line":"                validator \u003d ipaddress.IPv4Network"},{"line_number":375,"context_line":"            validator(six.text_type(access_to))"}],"source_content_type":"text/x-python","patch_set":51,"id":"1a6eadb0_98fe1a37","line":372,"range":{"start_line":372,"start_character":16,"end_line":372,"end_character":48},"updated":"2016-12-19 11:10:35.000000000","message":"this will still accept IPv4, so if IPv6 is to be used and the user inputs IPv4, how is this going to be handled?","commit_id":"2e3d6166ff78c0c629e5ab662452c8da5ab1f597"},{"author":{"_account_id":14567,"name":"Rodrigo Barbieri","email":"rodrigo.barbieri2010@gmail.com","username":"ganso"},"change_message_id":"10afb5837bf50eb55eea5140c1ff316fc8c5ae05","unresolved":false,"context_lines":[{"line_number":369,"context_line":"    def _validate_ip(self, access_to, enable_ipv6):"},{"line_number":370,"context_line":"        try:"},{"line_number":371,"context_line":"            if enable_ipv6:"},{"line_number":372,"context_line":"                validator \u003d ipaddress.ip_network"},{"line_number":373,"context_line":"            else:"},{"line_number":374,"context_line":"                validator \u003d ipaddress.IPv4Network"},{"line_number":375,"context_line":"            validator(six.text_type(access_to))"}],"source_content_type":"text/x-python","patch_set":53,"id":"1a6eadb0_e3fbd945","line":372,"range":{"start_line":372,"start_character":16,"end_line":372,"end_character":48},"updated":"2016-12-19 14:39:04.000000000","message":"Please see previous comment about this. I would like to see a clarification","commit_id":"b8e20971cf74fded7ad49816f8aa8a56da59c874"},{"author":{"_account_id":14567,"name":"Rodrigo Barbieri","email":"rodrigo.barbieri2010@gmail.com","username":"ganso"},"change_message_id":"af75c8bf45342d5ad194775e3d86c49e4bd7b0d4","unresolved":false,"context_lines":[{"line_number":369,"context_line":"    def _validate_ip(self, access_to, enable_ipv6):"},{"line_number":370,"context_line":"        try:"},{"line_number":371,"context_line":"            if enable_ipv6:"},{"line_number":372,"context_line":"                validator \u003d ipaddress.ip_network"},{"line_number":373,"context_line":"            else:"},{"line_number":374,"context_line":"                validator \u003d ipaddress.IPv4Network"},{"line_number":375,"context_line":"            validator(six.text_type(access_to))"}],"source_content_type":"text/x-python","patch_set":53,"id":"1a6eadb0_76394541","line":372,"range":{"start_line":372,"start_character":16,"end_line":372,"end_character":48},"in_reply_to":"1a6eadb0_e3fbd945","updated":"2016-12-19 14:54:54.000000000","message":"I understood it now, it is always enabled on microversions 2.24 and later.","commit_id":"b8e20971cf74fded7ad49816f8aa8a56da59c874"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"0ecaaaf3bb3ada87eb00d2198b20a2df627a7fcc","unresolved":false,"context_lines":[{"line_number":19,"context_line":"import re"},{"line_number":20,"context_line":"import string"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"import ipaddress"},{"line_number":23,"context_line":"from oslo_log import log"},{"line_number":24,"context_line":"from oslo_utils import encodeutils"},{"line_number":25,"context_line":"from oslo_utils import strutils"}],"source_content_type":"text/x-python","patch_set":59,"id":"5a3905b3_ce125fb4","line":22,"range":{"start_line":22,"start_character":0,"end_line":22,"end_character":16},"updated":"2017-01-20 02:12:15.000000000","message":"this needs to be part of the first group above.","commit_id":"fb8f04c5481877a7066d43741afc9ea80c7750ef"}],"manila/api/v2/share_snapshots.py":[{"author":{"_account_id":8851,"name":"Valeriy Ponomaryov","email":"kiparis.kh@gmail.com","username":"vponomaryov"},"change_message_id":"4ec37efe66645c7f6c3ad731fb862dba78192604","unresolved":false,"context_lines":[{"line_number":272,"context_line":"    @wsgi.response(202)"},{"line_number":273,"context_line":"    @wsgi.Controller.authorize"},{"line_number":274,"context_line":"    def allow_access(self, req, id, body\u003dNone):"},{"line_number":275,"context_line":"        args \u003d (req, id, body)"},{"line_number":276,"context_line":"        kwargs \u003d {}"},{"line_number":277,"context_line":"        if req.api_version_request \u003e\u003d api_version.APIVersionRequest(\"2.33\"):"},{"line_number":278,"context_line":"            kwargs[\u0027enable_ipv6\u0027] \u003d True"},{"line_number":279,"context_line":""},{"line_number":280,"context_line":"        return self._allow(*args, **kwargs)"},{"line_number":281,"context_line":""},{"line_number":282,"context_line":"    @wsgi.Controller.api_version(\u00272.32\u0027)"},{"line_number":283,"context_line":"    @wsgi.action(\u0027deny_access\u0027)"}],"source_content_type":"text/x-python","patch_set":63,"id":"3a461143_d5b30e09","line":280,"range":{"start_line":275,"start_character":8,"end_line":280,"end_character":43},"updated":"2017-01-25 14:09:22.000000000","message":"enable_ipv6 \u003d False\nif req.api_version_request \u003e\u003d api_version.APIVersionRequest(\"2.33\"):\n    enable_ipv6 \u003d True\nreturn self._allow(req, id, body, enable_ipv6\u003denable_ipv6)","commit_id":"da86424cc4c019e96233db3c1d8f2558823c130e"},{"author":{"_account_id":23083,"name":"TommyLike","email":"tommylikehu@gmail.com","username":"TommyLike"},"change_message_id":"26e2c96a19820c210340154c3556961cfd29b0b7","unresolved":false,"context_lines":[{"line_number":272,"context_line":"    @wsgi.response(202)"},{"line_number":273,"context_line":"    @wsgi.Controller.authorize"},{"line_number":274,"context_line":"    def allow_access(self, req, id, body\u003dNone):"},{"line_number":275,"context_line":"        args \u003d (req, id, body)"},{"line_number":276,"context_line":"        kwargs \u003d {}"},{"line_number":277,"context_line":"        if req.api_version_request \u003e\u003d api_version.APIVersionRequest(\"2.33\"):"},{"line_number":278,"context_line":"            kwargs[\u0027enable_ipv6\u0027] \u003d True"},{"line_number":279,"context_line":""},{"line_number":280,"context_line":"        return self._allow(*args, **kwargs)"},{"line_number":281,"context_line":""},{"line_number":282,"context_line":"    @wsgi.Controller.api_version(\u00272.32\u0027)"},{"line_number":283,"context_line":"    @wsgi.action(\u0027deny_access\u0027)"}],"source_content_type":"text/x-python","patch_set":63,"id":"3a461143_f01abc16","line":280,"range":{"start_line":275,"start_character":8,"end_line":280,"end_character":43},"in_reply_to":"3a461143_d5b30e09","updated":"2017-01-26 00:59:49.000000000","message":"Done","commit_id":"da86424cc4c019e96233db3c1d8f2558823c130e"}],"manila/api/v2/shares.py":[{"author":{"_account_id":11865,"name":"Clinton Knight","email":"cknight@netapp.com","username":"cknight"},"change_message_id":"0698ab7108607bf4d9e246c60ffd7f26332a2dc2","unresolved":false,"context_lines":[{"line_number":230,"context_line":"    @wsgi.action(\u0027allow_access\u0027)"},{"line_number":231,"context_line":"    def allow_access(self, req, id, body):"},{"line_number":232,"context_line":"        \"\"\"Add share access rule.\"\"\""},{"line_number":233,"context_line":"        if req.api_version_request \u003c api_version.APIVersionRequest(\"2.13\"):"},{"line_number":234,"context_line":"            return self._allow_access(req, id, body)"},{"line_number":235,"context_line":"        elif req.api_version_request \u003c api_version.APIVersionRequest(\"2.23\"):"},{"line_number":236,"context_line":"            return self._allow_access(req, id, body, enable_ceph\u003dTrue)"},{"line_number":237,"context_line":"        else:"},{"line_number":238,"context_line":"            return self._allow_access(req, id, body,"},{"line_number":239,"context_line":"                                      enable_ceph\u003dTrue, enable_ipv6\u003dTrue)"},{"line_number":240,"context_line":""},{"line_number":241,"context_line":"    @wsgi.Controller.api_version(\u00272.0\u0027, \u00272.6\u0027)"},{"line_number":242,"context_line":"    @wsgi.action(\u0027os-deny_access\u0027)"}],"source_content_type":"text/x-python","patch_set":32,"id":"7a8ec9b2_857f16df","line":239,"range":{"start_line":233,"start_character":0,"end_line":239,"end_character":73},"updated":"2016-09-21 15:36:55.000000000","message":"Please remind me why we don\u0027t have multiple methods here for the different microversions.","commit_id":"1f104e55113ecfc3ca2b4ff2d753ae5230680983"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"6f4ded9bafa8d985b6856dbd1b1ead862bdf914b","unresolved":false,"context_lines":[{"line_number":241,"context_line":"    @wsgi.action(\u0027allow_access\u0027)"},{"line_number":242,"context_line":"    def allow_access(self, req, id, body):  # pylint: disable\u003dE0102"},{"line_number":243,"context_line":"        \"\"\"Add share access rule.\"\"\""},{"line_number":244,"context_line":"        return self._allow_access(req, id, body,"},{"line_number":245,"context_line":"                                  enable_ceph\u003dTrue, enable_ipv6\u003dTrue)"},{"line_number":246,"context_line":""},{"line_number":247,"context_line":"    @wsgi.Controller.api_version(\u00272.0\u0027, \u00272.6\u0027)"},{"line_number":248,"context_line":"    @wsgi.action(\u0027os-deny_access\u0027)"}],"source_content_type":"text/x-python","patch_set":37,"id":"1a95cdbc_923acae5","line":245,"range":{"start_line":244,"start_character":8,"end_line":245,"end_character":69},"updated":"2016-10-08 15:44:35.000000000","message":"return self._allow_access(\n       req, id, body, enable_ceph\u003dTrue, enable_ipv6\u003dTrue)","commit_id":"05de92ca7a9e3132535f1b2184111fb75af61578"},{"author":{"_account_id":23083,"name":"TommyLike","email":"tommylikehu@gmail.com","username":"TommyLike"},"change_message_id":"07c14a88a6ef7cb39974a1d65df7d98735dd2e51","unresolved":false,"context_lines":[{"line_number":241,"context_line":"    @wsgi.action(\u0027allow_access\u0027)"},{"line_number":242,"context_line":"    def allow_access(self, req, id, body):  # pylint: disable\u003dE0102"},{"line_number":243,"context_line":"        \"\"\"Add share access rule.\"\"\""},{"line_number":244,"context_line":"        return self._allow_access(req, id, body,"},{"line_number":245,"context_line":"                                  enable_ceph\u003dTrue, enable_ipv6\u003dTrue)"},{"line_number":246,"context_line":""},{"line_number":247,"context_line":"    @wsgi.Controller.api_version(\u00272.0\u0027, \u00272.6\u0027)"},{"line_number":248,"context_line":"    @wsgi.action(\u0027os-deny_access\u0027)"}],"source_content_type":"text/x-python","patch_set":37,"id":"1a95cdbc_6f0e278d","line":245,"range":{"start_line":244,"start_character":8,"end_line":245,"end_character":69},"in_reply_to":"1a95cdbc_923acae5","updated":"2016-10-10 08:04:53.000000000","message":"Done","commit_id":"05de92ca7a9e3132535f1b2184111fb75af61578"},{"author":{"_account_id":8851,"name":"Valeriy Ponomaryov","email":"kiparis.kh@gmail.com","username":"vponomaryov"},"change_message_id":"c2260eb65275ce6e042280ae0bf15943c6fc71ec","unresolved":false,"context_lines":[{"line_number":202,"context_line":"    @wsgi.action(\u0027allow_access\u0027)"},{"line_number":203,"context_line":"    def allow_access(self, req, id, body):"},{"line_number":204,"context_line":"        \"\"\"Add share access rule.\"\"\""},{"line_number":205,"context_line":"        if req.api_version_request \u003c api_version.APIVersionRequest(\"2.13\"):"},{"line_number":206,"context_line":"            return self._allow_access(req, id, body)"},{"line_number":207,"context_line":"        else:"},{"line_number":208,"context_line":"            return self._allow_access(req, id, body, enable_ceph\u003dTrue)"},{"line_number":209,"context_line":""},{"line_number":210,"context_line":"    @wsgi.Controller.api_version(\u00272.0\u0027, \u00272.6\u0027)"}],"source_content_type":"text/x-python","patch_set":46,"id":"5a74a57a_2039b5f2","side":"PARENT","line":207,"range":{"start_line":205,"start_character":7,"end_line":207,"end_character":13},"updated":"2016-11-28 12:48:51.000000000","message":"Doing so, you break API. See https://bugs.launchpad.net/manila/+bug/1512403","commit_id":"2ad181cffc5b95d6fe1bae8a587c2c91cf4fac20"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"0ecaaaf3bb3ada87eb00d2198b20a2df627a7fcc","unresolved":false,"context_lines":[{"line_number":318,"context_line":"        \"\"\"Add share access rule.\"\"\""},{"line_number":319,"context_line":"        return self._allow_access(req, id, body)"},{"line_number":320,"context_line":""},{"line_number":321,"context_line":"    @wsgi.Controller.api_version(\u00272.7\u0027, \u00272.12\u0027)"},{"line_number":322,"context_line":"    @wsgi.action(\u0027allow_access\u0027)"},{"line_number":323,"context_line":"    def allow_access(self, req, id, body):"},{"line_number":324,"context_line":"        \"\"\"Add share access rule.\"\"\""},{"line_number":325,"context_line":"        return self._allow_access(req, id, body)"},{"line_number":326,"context_line":""},{"line_number":327,"context_line":"    @wsgi.Controller.api_version(\u00272.13\u0027, \u00272.27\u0027)  # noqa"},{"line_number":328,"context_line":"    @wsgi.action(\u0027allow_access\u0027)"},{"line_number":329,"context_line":"    def allow_access(self, req, id, body):  # pylint: disable\u003dE0102"},{"line_number":330,"context_line":"        return self._allow_access(req, id, body, enable_ceph\u003dTrue)"},{"line_number":331,"context_line":""},{"line_number":332,"context_line":"    @wsgi.Controller.api_version(\u00272.28\u0027)  # noqa"},{"line_number":333,"context_line":"    @wsgi.action(\u0027allow_access\u0027)"},{"line_number":334,"context_line":"    def allow_access(self, req, id, body):  # pylint: disable\u003dE0102"},{"line_number":335,"context_line":"        return self._allow_access("},{"line_number":336,"context_line":"            req, id, body, enable_ceph\u003dTrue, enable_ipv6\u003dTrue)"},{"line_number":337,"context_line":""},{"line_number":338,"context_line":"    @wsgi.Controller.api_version(\u00272.0\u0027, \u00272.6\u0027)"},{"line_number":339,"context_line":"    @wsgi.action(\u0027os-deny_access\u0027)"}],"source_content_type":"text/x-python","patch_set":59,"id":"5a3905b3_8e07771b","line":336,"range":{"start_line":321,"start_character":0,"end_line":336,"end_character":62},"updated":"2017-01-20 02:12:15.000000000","message":"thank you for confirming that the micro versions bug https://bugs.launchpad.net/manila/+bug/1512403 isn\u0027t valid anymore. however, I agree with Valeriy that use of the decorator  when we just add one parameter just leads to code bloat and reduced readability. \n\nPlease see approach in https://review.openstack.org/#/c/369668/28/manila/api/v2/shares.py","commit_id":"fb8f04c5481877a7066d43741afc9ea80c7750ef"}],"manila/share/api.py":[{"author":{"_account_id":14567,"name":"Rodrigo Barbieri","email":"rodrigo.barbieri2010@gmail.com","username":"ganso"},"change_message_id":"7ff1be102d66e3b55caa6f5256e2e6f0c684a889","unresolved":false,"context_lines":[{"line_number":1531,"context_line":"    def get_share_network(self, context, share_net_id):"},{"line_number":1532,"context_line":"        return self.db.share_network_get(context, share_net_id)"},{"line_number":1533,"context_line":""},{"line_number":1534,"context_line":"    def get_share_server(self, context, share_server_id):"},{"line_number":1535,"context_line":"        return self.db.share_server_get(context, share_server_id)"},{"line_number":1536,"context_line":""},{"line_number":1537,"context_line":"    def extend(self, context, share, new_size):"},{"line_number":1538,"context_line":"        policy.check_policy(context, \u0027share\u0027, \u0027extend\u0027)"}],"source_content_type":"text/x-python","patch_set":51,"id":"1a6eadb0_b36139d6","line":1535,"range":{"start_line":1534,"start_character":0,"end_line":1535,"end_character":65},"updated":"2016-12-19 11:10:35.000000000","message":"you added this method but it seems you are not using it","commit_id":"2e3d6166ff78c0c629e5ab662452c8da5ab1f597"}],"manila/share/drivers/huawei/v3/connection.py":[{"author":{"_account_id":8851,"name":"Valeriy Ponomaryov","email":"kiparis.kh@gmail.com","username":"vponomaryov"},"change_message_id":"d88651eb36a859775bc529ad8a98905d9ec2cff3","unresolved":false,"context_lines":[{"line_number":714,"context_line":"                # Use \u0027user\u0027 as \u0027netgroup\u0027 for NFS."},{"line_number":715,"context_line":"                # A group name starts with @."},{"line_number":716,"context_line":"                access_to \u003d \u0027@\u0027 + access_to"},{"line_number":717,"context_line":"            elif access_type !\u003d \u0027ip\u0027 and access_type !\u003d \u0027ipv6\u0027:"},{"line_number":718,"context_line":"                message \u003d _(\u0027Only IP, IPV6 or USER access types \u0027"},{"line_number":719,"context_line":"                            \u0027are allowed for NFS shares.\u0027)"},{"line_number":720,"context_line":"                raise exception.InvalidShareAccess(reason\u003dmessage)"}],"source_content_type":"text/x-python","patch_set":7,"id":"9ad45d7e_362566c2","line":717,"range":{"start_line":717,"start_character":12,"end_line":717,"end_character":63},"updated":"2016-08-08 10:37:26.000000000","message":"elif access_type not in (\u0027ip\u0027, \u0027ipv6\u0027):","commit_id":"c650beb19ee052fa9d23fcd81b7daf9342305122"},{"author":{"_account_id":15100,"name":"zhongjun","email":"jun.zhongjun2@gmail.com","username":"zhongjun2"},"change_message_id":"bc368e3f7d4e9d248bc0e5baec3d0973610fac27","unresolved":false,"context_lines":[{"line_number":714,"context_line":"                # Use \u0027user\u0027 as \u0027netgroup\u0027 for NFS."},{"line_number":715,"context_line":"                # A group name starts with @."},{"line_number":716,"context_line":"                access_to \u003d \u0027@\u0027 + access_to"},{"line_number":717,"context_line":"            elif access_type !\u003d \u0027ip\u0027 and access_type !\u003d \u0027ipv6\u0027:"},{"line_number":718,"context_line":"                message \u003d _(\u0027Only IP, IPV6 or USER access types \u0027"},{"line_number":719,"context_line":"                            \u0027are allowed for NFS shares.\u0027)"},{"line_number":720,"context_line":"                raise exception.InvalidShareAccess(reason\u003dmessage)"}],"source_content_type":"text/x-python","patch_set":7,"id":"9ad45d7e_a2b6263b","line":717,"range":{"start_line":717,"start_character":12,"end_line":717,"end_character":63},"in_reply_to":"9ad45d7e_362566c2","updated":"2016-08-09 03:11:17.000000000","message":"Done","commit_id":"c650beb19ee052fa9d23fcd81b7daf9342305122"},{"author":{"_account_id":16203,"name":"zengyingzhe","email":"zengyingzhe@huawei.com","username":"zengyingzhe"},"change_message_id":"49c43caeaee16aec24dff7ff07dc49decf7604a5","unresolved":false,"context_lines":[{"line_number":679,"context_line":"        access_to \u003d access[\u0027access_to\u0027]"},{"line_number":680,"context_line":"        # Huawei array uses * to represent IP addresses of all clients"},{"line_number":681,"context_line":"        if (share_proto \u003d\u003d \u0027NFS\u0027 and access_type \u003d\u003d \u0027ip\u0027 and"},{"line_number":682,"context_line":"                access_to \u003d\u003d \u00270.0.0.0/0\u0027):"},{"line_number":683,"context_line":"            access_to \u003d \u0027*\u0027"},{"line_number":684,"context_line":"        share \u003d self.helper._get_share_by_name(share_name, share_url_type)"},{"line_number":685,"context_line":"        if not share:"}],"source_content_type":"text/x-python","patch_set":12,"id":"9ad45d7e_8b671fe8","line":682,"updated":"2016-08-11 03:53:25.000000000","message":"And please fix here as well.","commit_id":"2e7c8983daa733a4fe2bd058ff3fbb19c8281e69"},{"author":{"_account_id":15100,"name":"zhongjun","email":"jun.zhongjun2@gmail.com","username":"zhongjun2"},"change_message_id":"de33c89e733d468150a14047db64e55d8f7d91ae","unresolved":false,"context_lines":[{"line_number":679,"context_line":"        access_to \u003d access[\u0027access_to\u0027]"},{"line_number":680,"context_line":"        # Huawei array uses * to represent IP addresses of all clients"},{"line_number":681,"context_line":"        if (share_proto \u003d\u003d \u0027NFS\u0027 and access_type \u003d\u003d \u0027ip\u0027 and"},{"line_number":682,"context_line":"                access_to \u003d\u003d \u00270.0.0.0/0\u0027):"},{"line_number":683,"context_line":"            access_to \u003d \u0027*\u0027"},{"line_number":684,"context_line":"        share \u003d self.helper._get_share_by_name(share_name, share_url_type)"},{"line_number":685,"context_line":"        if not share:"}],"source_content_type":"text/x-python","patch_set":12,"id":"9ad45d7e_b449a0b9","line":682,"in_reply_to":"9ad45d7e_8b671fe8","updated":"2016-08-11 06:56:14.000000000","message":"Done","commit_id":"2e7c8983daa733a4fe2bd058ff3fbb19c8281e69"},{"author":{"_account_id":16203,"name":"zengyingzhe","email":"zengyingzhe@huawei.com","username":"zengyingzhe"},"change_message_id":"24271aa5558dd977c8e8bfd040cdb65a9b15f3ea","unresolved":false,"context_lines":[{"line_number":723,"context_line":"            else:"},{"line_number":724,"context_line":"                access_level \u003d constants.ACCESS_NFS_RO"},{"line_number":725,"context_line":"            # Huawei array uses * to represent IP addresses of all clients"},{"line_number":726,"context_line":"            if access_to \u003d\u003d \u00270.0.0.0/0\u0027:"},{"line_number":727,"context_line":"                access_to \u003d \u0027*\u0027"},{"line_number":728,"context_line":""},{"line_number":729,"context_line":"        elif share_proto \u003d\u003d \u0027CIFS\u0027:"}],"source_content_type":"text/x-python","patch_set":12,"id":"9ad45d7e_8839e5d9","line":726,"updated":"2016-08-11 03:20:59.000000000","message":"Does here need to change as well?","commit_id":"2e7c8983daa733a4fe2bd058ff3fbb19c8281e69"},{"author":{"_account_id":15100,"name":"zhongjun","email":"jun.zhongjun2@gmail.com","username":"zhongjun2"},"change_message_id":"de33c89e733d468150a14047db64e55d8f7d91ae","unresolved":false,"context_lines":[{"line_number":723,"context_line":"            else:"},{"line_number":724,"context_line":"                access_level \u003d constants.ACCESS_NFS_RO"},{"line_number":725,"context_line":"            # Huawei array uses * to represent IP addresses of all clients"},{"line_number":726,"context_line":"            if access_to \u003d\u003d \u00270.0.0.0/0\u0027:"},{"line_number":727,"context_line":"                access_to \u003d \u0027*\u0027"},{"line_number":728,"context_line":""},{"line_number":729,"context_line":"        elif share_proto \u003d\u003d \u0027CIFS\u0027:"}],"source_content_type":"text/x-python","patch_set":12,"id":"9ad45d7e_d4fa5442","line":726,"in_reply_to":"9ad45d7e_8839e5d9","updated":"2016-08-11 06:56:14.000000000","message":"IPv6 also support uses * to represent of all clients","commit_id":"2e7c8983daa733a4fe2bd058ff3fbb19c8281e69"},{"author":{"_account_id":16203,"name":"zengyingzhe","email":"zengyingzhe@huawei.com","username":"zengyingzhe"},"change_message_id":"f3fc57c576c396396cf76b87e0df64bed86d2cb6","unresolved":false,"context_lines":[{"line_number":723,"context_line":"            else:"},{"line_number":724,"context_line":"                access_level \u003d constants.ACCESS_NFS_RO"},{"line_number":725,"context_line":"            # Huawei array uses * to represent IP addresses of all clients"},{"line_number":726,"context_line":"            if access_to \u003d\u003d \u00270.0.0.0/0\u0027:"},{"line_number":727,"context_line":"                access_to \u003d \u0027*\u0027"},{"line_number":728,"context_line":""},{"line_number":729,"context_line":"        elif share_proto \u003d\u003d \u0027CIFS\u0027:"}],"source_content_type":"text/x-python","patch_set":12,"id":"9ad45d7e_1d5d2879","line":726,"in_reply_to":"9ad45d7e_d4fa5442","updated":"2016-08-11 09:28:34.000000000","message":"I meant is that possible that user pass access_to as an IPv6 format, for instance, something like ::/0?","commit_id":"2e7c8983daa733a4fe2bd058ff3fbb19c8281e69"}],"manila/tests/api/v1/test_shares.py":[{"author":{"_account_id":14567,"name":"Rodrigo Barbieri","email":"rodrigo.barbieri2010@gmail.com","username":"ganso"},"change_message_id":"7ff1be102d66e3b55caa6f5256e2e6f0c684a889","unresolved":false,"context_lines":[{"line_number":830,"context_line":"        self.mock_object(self.controller._access_view_builder, \u0027view\u0027,"},{"line_number":831,"context_line":"                         mock.Mock(return_value\u003d{\u0027access\u0027:"},{"line_number":832,"context_line":"                                                 {\u0027fake\u0027: \u0027fake\u0027}}))"},{"line_number":833,"context_line":""},{"line_number":834,"context_line":"        id \u003d \u0027fake_share_id\u0027"},{"line_number":835,"context_line":"        body \u003d {\u0027os-allow_access\u0027: access}"},{"line_number":836,"context_line":"        expected \u003d {\u0027access\u0027: {\u0027fake\u0027: \u0027fake\u0027}}"}],"source_content_type":"text/x-python","patch_set":51,"id":"1a6eadb0_b333f9f5","side":"PARENT","line":833,"range":{"start_line":833,"start_character":0,"end_line":833,"end_character":0},"updated":"2016-12-19 11:10:35.000000000","message":"please remove this change","commit_id":"ad2ce7023303b1b6cd6dc05cd2faf8762d6d4d54"}],"manila/tests/api/v2/test_share_snapshots.py":[{"author":{"_account_id":8851,"name":"Valeriy Ponomaryov","email":"kiparis.kh@gmail.com","username":"vponomaryov"},"change_message_id":"4ec37efe66645c7f6c3ad731fb862dba78192604","unresolved":false,"context_lines":[{"line_number":354,"context_line":"              (\u00271.1.1.1\u0027, \u00272.33\u0027),"},{"line_number":355,"context_line":"              (\u00271001::1001\u0027, \u00272.33\u0027))"},{"line_number":356,"context_line":"    @ddt.unpack"},{"line_number":357,"context_line":"    def test_allow_access(self, ip_address, t_api_version):"},{"line_number":358,"context_line":"        share \u003d db_utils.create_share(mount_snapshot_support\u003dTrue)"},{"line_number":359,"context_line":"        snapshot \u003d db_utils.create_snapshot("},{"line_number":360,"context_line":"            status\u003dconstants.STATUS_AVAILABLE, share_id\u003dshare[\u0027id\u0027])"}],"source_content_type":"text/x-python","patch_set":63,"id":"3a461143_35c7f246","line":357,"range":{"start_line":357,"start_character":44,"end_line":357,"end_character":46},"updated":"2017-01-25 14:09:22.000000000","message":"\"t_\" ?","commit_id":"da86424cc4c019e96233db3c1d8f2558823c130e"},{"author":{"_account_id":23083,"name":"TommyLike","email":"tommylikehu@gmail.com","username":"TommyLike"},"change_message_id":"26e2c96a19820c210340154c3556961cfd29b0b7","unresolved":false,"context_lines":[{"line_number":354,"context_line":"              (\u00271.1.1.1\u0027, \u00272.33\u0027),"},{"line_number":355,"context_line":"              (\u00271001::1001\u0027, \u00272.33\u0027))"},{"line_number":356,"context_line":"    @ddt.unpack"},{"line_number":357,"context_line":"    def test_allow_access(self, ip_address, t_api_version):"},{"line_number":358,"context_line":"        share \u003d db_utils.create_share(mount_snapshot_support\u003dTrue)"},{"line_number":359,"context_line":"        snapshot \u003d db_utils.create_snapshot("},{"line_number":360,"context_line":"            status\u003dconstants.STATUS_AVAILABLE, share_id\u003dshare[\u0027id\u0027])"}],"source_content_type":"text/x-python","patch_set":63,"id":"3a461143_90b098f6","line":357,"range":{"start_line":357,"start_character":44,"end_line":357,"end_character":46},"in_reply_to":"3a461143_35c7f246","updated":"2017-01-26 00:59:49.000000000","message":"Done","commit_id":"da86424cc4c019e96233db3c1d8f2558823c130e"}],"manila/tests/api/v2/test_shares.py":[{"author":{"_account_id":8851,"name":"Valeriy Ponomaryov","email":"kiparis.kh@gmail.com","username":"vponomaryov"},"change_message_id":"bff2031628f220f24e7460359e602c5dff10c6f8","unresolved":false,"context_lines":[{"line_number":1337,"context_line":"                    \u0027access_to\u0027: \u0027AD80:0000:0000:0000:ABAA:0000:00C2:0002\u0027},"},{"line_number":1338,"context_line":"         \"version\": \"2.17\"},"},{"line_number":1339,"context_line":"        {\"access\": {\u0027access_type\u0027: \u0027ipv6\u0027,"},{"line_number":1340,"context_line":"                    \u0027access_to\u0027: \u0027AD80:0000:0000:0000:ABAA:0000:00C2:0002/32\u0027},"},{"line_number":1341,"context_line":"         \"version\": \"2.17\"},"},{"line_number":1342,"context_line":"    )"},{"line_number":1343,"context_line":"    def test_allow_access(self, access, version):"}],"source_content_type":"text/x-python","patch_set":4,"id":"9abb7d3a_a8584a8b","line":1340,"range":{"start_line":1340,"start_character":34,"end_line":1340,"end_character":76},"updated":"2016-05-31 11:22:09.000000000","message":"Better to add border values like 63, 64, 0.","commit_id":"d67d79c94cd1bb988e7942517b18197f52916e6e"},{"author":{"_account_id":15100,"name":"zhongjun","email":"jun.zhongjun2@gmail.com","username":"zhongjun2"},"change_message_id":"56679c8dc6a31f7bdcc6657806ccb9a2c805be1d","unresolved":false,"context_lines":[{"line_number":1337,"context_line":"                    \u0027access_to\u0027: \u0027AD80:0000:0000:0000:ABAA:0000:00C2:0002\u0027},"},{"line_number":1338,"context_line":"         \"version\": \"2.17\"},"},{"line_number":1339,"context_line":"        {\"access\": {\u0027access_type\u0027: \u0027ipv6\u0027,"},{"line_number":1340,"context_line":"                    \u0027access_to\u0027: \u0027AD80:0000:0000:0000:ABAA:0000:00C2:0002/32\u0027},"},{"line_number":1341,"context_line":"         \"version\": \"2.17\"},"},{"line_number":1342,"context_line":"    )"},{"line_number":1343,"context_line":"    def test_allow_access(self, access, version):"}],"source_content_type":"text/x-python","patch_set":4,"id":"7aa08908_d9000437","line":1340,"range":{"start_line":1340,"start_character":34,"end_line":1340,"end_character":76},"in_reply_to":"9abb7d3a_a8584a8b","updated":"2016-06-13 07:43:53.000000000","message":"Done","commit_id":"d67d79c94cd1bb988e7942517b18197f52916e6e"},{"author":{"_account_id":8851,"name":"Valeriy Ponomaryov","email":"kiparis.kh@gmail.com","username":"vponomaryov"},"change_message_id":"bff2031628f220f24e7460359e602c5dff10c6f8","unresolved":false,"context_lines":[{"line_number":1366,"context_line":"        {\u0027access_type\u0027: \u0027cert\u0027, \u0027access_to\u0027: \u0027\u0027},"},{"line_number":1367,"context_line":"        {\u0027access_type\u0027: \u0027cert\u0027, \u0027access_to\u0027: \u0027 \u0027},"},{"line_number":1368,"context_line":"        {\u0027access_type\u0027: \u0027cert\u0027, \u0027access_to\u0027: \u0027x\u0027 * 65},"},{"line_number":1369,"context_line":"        {\u0027access_type\u0027: \u0027ipv6\u0027, \u0027access_to\u0027: \u0027127.0.0.1\u0027},"},{"line_number":1370,"context_line":"    )"},{"line_number":1371,"context_line":"    def test_allow_access_error(self, access):"},{"line_number":1372,"context_line":"        id \u003d \u0027fake_share_id\u0027"}],"source_content_type":"text/x-python","patch_set":4,"id":"9abb7d3a_5465fa1b","line":1369,"range":{"start_line":1369,"start_character":8,"end_line":1369,"end_character":58},"updated":"2016-05-31 11:22:09.000000000","message":"Would be great to add IPV6-like variants too.\n\nFor example: AD80:0000:0000:0000:ABAA:0000:00C2:0002/65","commit_id":"d67d79c94cd1bb988e7942517b18197f52916e6e"},{"author":{"_account_id":15100,"name":"zhongjun","email":"jun.zhongjun2@gmail.com","username":"zhongjun2"},"change_message_id":"56679c8dc6a31f7bdcc6657806ccb9a2c805be1d","unresolved":false,"context_lines":[{"line_number":1366,"context_line":"        {\u0027access_type\u0027: \u0027cert\u0027, \u0027access_to\u0027: \u0027\u0027},"},{"line_number":1367,"context_line":"        {\u0027access_type\u0027: \u0027cert\u0027, \u0027access_to\u0027: \u0027 \u0027},"},{"line_number":1368,"context_line":"        {\u0027access_type\u0027: \u0027cert\u0027, \u0027access_to\u0027: \u0027x\u0027 * 65},"},{"line_number":1369,"context_line":"        {\u0027access_type\u0027: \u0027ipv6\u0027, \u0027access_to\u0027: \u0027127.0.0.1\u0027},"},{"line_number":1370,"context_line":"    )"},{"line_number":1371,"context_line":"    def test_allow_access_error(self, access):"},{"line_number":1372,"context_line":"        id \u003d \u0027fake_share_id\u0027"}],"source_content_type":"text/x-python","patch_set":4,"id":"7aa08908_f9034040","line":1369,"range":{"start_line":1369,"start_character":8,"end_line":1369,"end_character":58},"in_reply_to":"9abb7d3a_5465fa1b","updated":"2016-06-13 07:43:53.000000000","message":"Done","commit_id":"d67d79c94cd1bb988e7942517b18197f52916e6e"},{"author":{"_account_id":15011,"name":"Jeff Seiler","email":"jeff_seiler@dell.com","username":"jseiler"},"change_message_id":"64d9bd1704d195f9783d1ee6a8ce68e9df149bfc","unresolved":false,"context_lines":[{"line_number":1334,"context_line":"        {\"access\": {\u0027access_type\u0027: \u0027cert\u0027, \u0027access_to\u0027: \u0027x\u0027 * 64},"},{"line_number":1335,"context_line":"         \"version\": \"2.7\"},"},{"line_number":1336,"context_line":"        {\"access\": {\u0027access_type\u0027: \u0027ipv6\u0027,"},{"line_number":1337,"context_line":"                    \u0027access_to\u0027: \u0027AD80:0000:0000:0000:ABAA:0000:00C2:0002\u0027},"},{"line_number":1338,"context_line":"         \"version\": \"2.17\"},"},{"line_number":1339,"context_line":"        {\"access\": {\u0027access_type\u0027: \u0027ipv6\u0027,"},{"line_number":1340,"context_line":"                    \u0027access_to\u0027: \u0027AD80:0000:0000:0000:ABAA:0000:00C2:0002/32\u0027},"}],"source_content_type":"text/x-python","patch_set":6,"id":"dada55a8_7b963ef1","line":1337,"range":{"start_line":1337,"start_character":34,"end_line":1337,"end_character":73},"updated":"2016-07-19 19:13:07.000000000","message":"Would it make sense to add some test cases for IPv6 addresses that have zero compression \u0026 leading zero compression.\nFor example, this address: \nAD80:0000:0000:0000:ABAA:0000:00C2:0002\ncould also be tested as:\nad80::abaa:0:c2:2   (compressed address).\n\nI\u0027m not sure if I\u0027m using the correct terminology, but this link explains what I am referring to:\nhttps://ccieme.wordpress.com/2013/08/14/ipv6-introduction-zero-compression-technique/","commit_id":"89cfcea0a726b84ff220013102059954e88503ac"},{"author":{"_account_id":14567,"name":"Rodrigo Barbieri","email":"rodrigo.barbieri2010@gmail.com","username":"ganso"},"change_message_id":"c922b31db122e8e7e81c11b0334f8545b21d9055","unresolved":false,"context_lines":[{"line_number":1334,"context_line":"        {\"access\": {\u0027access_type\u0027: \u0027cert\u0027, \u0027access_to\u0027: \u0027x\u0027 * 64},"},{"line_number":1335,"context_line":"         \"version\": \"2.7\"},"},{"line_number":1336,"context_line":"        {\"access\": {\u0027access_type\u0027: \u0027ipv6\u0027,"},{"line_number":1337,"context_line":"                    \u0027access_to\u0027: \u0027AD80:0000:0000:0000:ABAA:0000:00C2:0002\u0027},"},{"line_number":1338,"context_line":"         \"version\": \"2.17\"},"},{"line_number":1339,"context_line":"        {\"access\": {\u0027access_type\u0027: \u0027ipv6\u0027,"},{"line_number":1340,"context_line":"                    \u0027access_to\u0027: \u0027AD80:0000:0000:0000:ABAA:0000:00C2:0002/32\u0027},"}],"source_content_type":"text/x-python","patch_set":6,"id":"dada55a8_e8b7c282","line":1337,"range":{"start_line":1337,"start_character":34,"end_line":1337,"end_character":73},"in_reply_to":"dada55a8_7b963ef1","updated":"2016-07-26 18:09:32.000000000","message":"+1","commit_id":"89cfcea0a726b84ff220013102059954e88503ac"},{"author":{"_account_id":15100,"name":"zhongjun","email":"jun.zhongjun2@gmail.com","username":"zhongjun2"},"change_message_id":"a69396bcc91caaea635bace465a436d80b6442dc","unresolved":false,"context_lines":[{"line_number":1334,"context_line":"        {\"access\": {\u0027access_type\u0027: \u0027cert\u0027, \u0027access_to\u0027: \u0027x\u0027 * 64},"},{"line_number":1335,"context_line":"         \"version\": \"2.7\"},"},{"line_number":1336,"context_line":"        {\"access\": {\u0027access_type\u0027: \u0027ipv6\u0027,"},{"line_number":1337,"context_line":"                    \u0027access_to\u0027: \u0027AD80:0000:0000:0000:ABAA:0000:00C2:0002\u0027},"},{"line_number":1338,"context_line":"         \"version\": \"2.17\"},"},{"line_number":1339,"context_line":"        {\"access\": {\u0027access_type\u0027: \u0027ipv6\u0027,"},{"line_number":1340,"context_line":"                    \u0027access_to\u0027: \u0027AD80:0000:0000:0000:ABAA:0000:00C2:0002/32\u0027},"}],"source_content_type":"text/x-python","patch_set":6,"id":"bacf61ea_22b25406","line":1337,"range":{"start_line":1337,"start_character":34,"end_line":1337,"end_character":73},"in_reply_to":"dada55a8_7b963ef1","updated":"2016-08-08 14:44:46.000000000","message":"Done","commit_id":"89cfcea0a726b84ff220013102059954e88503ac"},{"author":{"_account_id":8851,"name":"Valeriy Ponomaryov","email":"kiparis.kh@gmail.com","username":"vponomaryov"},"change_message_id":"d88651eb36a859775bc529ad8a98905d9ec2cff3","unresolved":false,"context_lines":[{"line_number":1378,"context_line":"        {\u0027access_type\u0027: \u0027cert\u0027, \u0027access_to\u0027: \u0027\u0027},"},{"line_number":1379,"context_line":"        {\u0027access_type\u0027: \u0027cert\u0027, \u0027access_to\u0027: \u0027 \u0027},"},{"line_number":1380,"context_line":"        {\u0027access_type\u0027: \u0027cert\u0027, \u0027access_to\u0027: \u0027x\u0027 * 65},"},{"line_number":1381,"context_line":"        {\u0027access_type\u0027: \u0027ipv6\u0027, \u0027access_to\u0027: \u0027127.0.0.1\u0027},"},{"line_number":1382,"context_line":"        {\u0027access_type\u0027: \u0027ipv6\u0027,"},{"line_number":1383,"context_line":"         \u0027access_to\u0027: \u0027AD80:0000:0000:0000:ABAA:0000:00C2:0002/65\u0027},"},{"line_number":1384,"context_line":"        {\u0027access_type\u0027: \u0027ipv6\u0027,"},{"line_number":1385,"context_line":"         \u0027access_to\u0027: \u0027AD80:0000:0000:0000:ABAA:0000:00C2:0002*65\u0027},"},{"line_number":1386,"context_line":"    )"},{"line_number":1387,"context_line":"    def test_allow_access_error(self, access):"},{"line_number":1388,"context_line":"        id \u003d \u0027fake_share_id\u0027"}],"source_content_type":"text/x-python","patch_set":7,"id":"9ad45d7e_7606be21","line":1385,"range":{"start_line":1381,"start_character":8,"end_line":1385,"end_character":68},"updated":"2016-08-08 10:37:26.000000000","message":"It should also be tested with 2.19 version which is border unsupported version.","commit_id":"c650beb19ee052fa9d23fcd81b7daf9342305122"},{"author":{"_account_id":15100,"name":"zhongjun","email":"jun.zhongjun2@gmail.com","username":"zhongjun2"},"change_message_id":"bc368e3f7d4e9d248bc0e5baec3d0973610fac27","unresolved":false,"context_lines":[{"line_number":1378,"context_line":"        {\u0027access_type\u0027: \u0027cert\u0027, \u0027access_to\u0027: \u0027\u0027},"},{"line_number":1379,"context_line":"        {\u0027access_type\u0027: \u0027cert\u0027, \u0027access_to\u0027: \u0027 \u0027},"},{"line_number":1380,"context_line":"        {\u0027access_type\u0027: \u0027cert\u0027, \u0027access_to\u0027: \u0027x\u0027 * 65},"},{"line_number":1381,"context_line":"        {\u0027access_type\u0027: \u0027ipv6\u0027, \u0027access_to\u0027: \u0027127.0.0.1\u0027},"},{"line_number":1382,"context_line":"        {\u0027access_type\u0027: \u0027ipv6\u0027,"},{"line_number":1383,"context_line":"         \u0027access_to\u0027: \u0027AD80:0000:0000:0000:ABAA:0000:00C2:0002/65\u0027},"},{"line_number":1384,"context_line":"        {\u0027access_type\u0027: \u0027ipv6\u0027,"},{"line_number":1385,"context_line":"         \u0027access_to\u0027: \u0027AD80:0000:0000:0000:ABAA:0000:00C2:0002*65\u0027},"},{"line_number":1386,"context_line":"    )"},{"line_number":1387,"context_line":"    def test_allow_access_error(self, access):"},{"line_number":1388,"context_line":"        id \u003d \u0027fake_share_id\u0027"}],"source_content_type":"text/x-python","patch_set":7,"id":"9ad45d7e_cd642b4b","line":1385,"range":{"start_line":1381,"start_character":8,"end_line":1385,"end_character":68},"in_reply_to":"9ad45d7e_7606be21","updated":"2016-08-09 03:11:17.000000000","message":"Done","commit_id":"c650beb19ee052fa9d23fcd81b7daf9342305122"},{"author":{"_account_id":16203,"name":"zengyingzhe","email":"zengyingzhe@huawei.com","username":"zengyingzhe"},"change_message_id":"08a7820c4533c9630480a9c58c69eb87afd7db61","unresolved":false,"context_lines":[{"line_number":1345,"context_line":"         \"version\": \"2.23\"},"},{"line_number":1346,"context_line":"        {\"access\": {\u0027access_type\u0027: \u0027ip\u0027, \u0027access_to\u0027: \u0027AD80::/36\u0027},"},{"line_number":1347,"context_line":"         \"version\": \"2.23\"},"},{"line_number":1348,"context_line":"        {\"access\": {\u0027access_type\u0027: \u0027ip\u0027, \u0027access_to\u0027: \u0027AD80:ABAA::/128\u0027},"},{"line_number":1349,"context_line":"         \"version\": \"2.23\"},"},{"line_number":1350,"context_line":"    )"},{"line_number":1351,"context_line":"    def test_allow_access(self, access, version):"}],"source_content_type":"text/x-python","patch_set":32,"id":"7a8ec9b2_e72c3b4c","line":1348,"updated":"2016-09-22 03:43:32.000000000","message":"please add an ipv4 test for microversion \u00272.23\u0027.","commit_id":"1f104e55113ecfc3ca2b4ff2d753ae5230680983"},{"author":{"_account_id":11865,"name":"Clinton Knight","email":"cknight@netapp.com","username":"cknight"},"change_message_id":"0698ab7108607bf4d9e246c60ffd7f26332a2dc2","unresolved":false,"context_lines":[{"line_number":1400,"context_line":"        {\"access\": {\u0027access_type\u0027: \u0027ip\u0027, \u0027access_to\u0027: \u0027ad80::abaa:0:c2:2/64\u0027},"},{"line_number":1401,"context_line":"         \"version\": \"2.23\"},"},{"line_number":1402,"context_line":"    )"},{"line_number":1403,"context_line":"    def test_allow_access_error(self, access, version):"},{"line_number":1404,"context_line":"        id \u003d \u0027fake_share_id\u0027"},{"line_number":1405,"context_line":"        body \u003d {\u0027allow_access\u0027: access}"},{"line_number":1406,"context_line":"        req \u003d fakes.HTTPRequest.blank(\u0027/v2/tenant1/shares/%s/action\u0027 % id,"}],"source_content_type":"text/x-python","patch_set":32,"id":"7a8ec9b2_65bdaa67","line":1403,"range":{"start_line":1403,"start_character":8,"end_line":1403,"end_character":31},"updated":"2016-09-21 15:36:55.000000000","message":"Please add some negative tests for microversions, such as an IPv6 address with microversion 2.22.","commit_id":"1f104e55113ecfc3ca2b4ff2d753ae5230680983"},{"author":{"_account_id":11865,"name":"Clinton Knight","email":"cknight@netapp.com","username":"cknight"},"change_message_id":"0698ab7108607bf4d9e246c60ffd7f26332a2dc2","unresolved":false,"context_lines":[{"line_number":1400,"context_line":"        {\"access\": {\u0027access_type\u0027: \u0027ip\u0027, \u0027access_to\u0027: \u0027ad80::abaa:0:c2:2/64\u0027},"},{"line_number":1401,"context_line":"         \"version\": \"2.23\"},"},{"line_number":1402,"context_line":"    )"},{"line_number":1403,"context_line":"    def test_allow_access_error(self, access, version):"},{"line_number":1404,"context_line":"        id \u003d \u0027fake_share_id\u0027"},{"line_number":1405,"context_line":"        body \u003d {\u0027allow_access\u0027: access}"},{"line_number":1406,"context_line":"        req \u003d fakes.HTTPRequest.blank(\u0027/v2/tenant1/shares/%s/action\u0027 % id,"}],"source_content_type":"text/x-python","patch_set":32,"id":"7a8ec9b2_252d62a8","line":1403,"range":{"start_line":1403,"start_character":8,"end_line":1403,"end_character":31},"updated":"2016-09-21 15:36:55.000000000","message":"Please add some negative version tests such as an IPv6 address with microversion 2.22.","commit_id":"1f104e55113ecfc3ca2b4ff2d753ae5230680983"},{"author":{"_account_id":9003,"name":"Tom Barron","email":"tpb@dyncloud.net","username":"tbarron"},"change_message_id":"03e6dd773aca24a36e1d30fd6365688d24657be4","unresolved":false,"context_lines":[{"line_number":1644,"context_line":"        self.mock_object(share_api.API,"},{"line_number":1645,"context_line":"                         \u0027allow_access\u0027,"},{"line_number":1646,"context_line":"                         mock.Mock(return_value\u003d{\u0027fake\u0027: \u0027fake\u0027}))"},{"line_number":1647,"context_line":"        self.mock_object(share_api.API, \u0027get\u0027,"},{"line_number":1648,"context_line":"                         mock.Mock(return_value\u003d{\u0027id\u0027: \u0027fake_id\u0027}))"},{"line_number":1649,"context_line":"        self.mock_object(self.controller._access_view_builder, \u0027view\u0027,"},{"line_number":1650,"context_line":"                         mock.Mock(return_value\u003d{\u0027access\u0027:"},{"line_number":1651,"context_line":"                                                 {\u0027fake\u0027: \u0027fake\u0027}}))"}],"source_content_type":"text/x-python","patch_set":60,"id":"5a3905b3_77b596ec","line":1648,"range":{"start_line":1647,"start_character":0,"end_line":1648,"end_character":67},"updated":"2017-01-20 18:30:45.000000000","message":"I don\u0027t see a need to mock this.  More to the point, if you do so this test will break after you fix the merge conflict otherwise.","commit_id":"00f400e8d135b34cec76334fd844e5cb57c6ee5b"},{"author":{"_account_id":9003,"name":"Tom Barron","email":"tpb@dyncloud.net","username":"tbarron"},"change_message_id":"03e6dd773aca24a36e1d30fd6365688d24657be4","unresolved":false,"context_lines":[{"line_number":1700,"context_line":"        body \u003d {\u0027allow_access\u0027: access}"},{"line_number":1701,"context_line":"        req \u003d fakes.HTTPRequest.blank(\u0027/v2/tenant1/shares/%s/action\u0027 % id,"},{"line_number":1702,"context_line":"                                      version\u003dversion)"},{"line_number":1703,"context_line":"        self.mock_object(share_api.API, \u0027get\u0027,"},{"line_number":1704,"context_line":"                         mock.Mock(return_value\u003d{\u0027id\u0027: \u0027fake_id\u0027}))"},{"line_number":1705,"context_line":"        self.assertRaises(webob.exc.HTTPBadRequest,"},{"line_number":1706,"context_line":"                          self.controller.allow_access, req, id, body)"},{"line_number":1707,"context_line":""}],"source_content_type":"text/x-python","patch_set":60,"id":"5a3905b3_17c5325a","line":1704,"range":{"start_line":1703,"start_character":0,"end_line":1704,"end_character":67},"updated":"2017-01-20 18:30:45.000000000","message":"ditto","commit_id":"00f400e8d135b34cec76334fd844e5cb57c6ee5b"},{"author":{"_account_id":8851,"name":"Valeriy Ponomaryov","email":"kiparis.kh@gmail.com","username":"vponomaryov"},"change_message_id":"4ec37efe66645c7f6c3ad731fb862dba78192604","unresolved":false,"context_lines":[{"line_number":1937,"context_line":"            \u0027clemsontigers\u0027, \u0027rw\u0027)"},{"line_number":1938,"context_line":""},{"line_number":1939,"context_line":"    @ddt.data(*itertools.product("},{"line_number":1940,"context_line":"        set([\u00272.31\u0027, api_version._MAX_API_VERSION]),"},{"line_number":1941,"context_line":"        (constants.SHARE_INSTANCE_RULES_ERROR,"},{"line_number":1942,"context_line":"         constants.SHARE_INSTANCE_RULES_SYNCING, constants.STATUS_ACTIVE)))"},{"line_number":1943,"context_line":"    @ddt.unpack"}],"source_content_type":"text/x-python","patch_set":63,"id":"3a461143_75d89a1e","line":1940,"range":{"start_line":1940,"start_character":16,"end_line":1940,"end_character":18},"updated":"2017-01-25 14:09:22.000000000","message":"Why do you change it?","commit_id":"da86424cc4c019e96233db3c1d8f2558823c130e"},{"author":{"_account_id":23083,"name":"TommyLike","email":"tommylikehu@gmail.com","username":"TommyLike"},"change_message_id":"26e2c96a19820c210340154c3556961cfd29b0b7","unresolved":false,"context_lines":[{"line_number":1937,"context_line":"            \u0027clemsontigers\u0027, \u0027rw\u0027)"},{"line_number":1938,"context_line":""},{"line_number":1939,"context_line":"    @ddt.data(*itertools.product("},{"line_number":1940,"context_line":"        set([\u00272.31\u0027, api_version._MAX_API_VERSION]),"},{"line_number":1941,"context_line":"        (constants.SHARE_INSTANCE_RULES_ERROR,"},{"line_number":1942,"context_line":"         constants.SHARE_INSTANCE_RULES_SYNCING, constants.STATUS_ACTIVE)))"},{"line_number":1943,"context_line":"    @ddt.unpack"}],"source_content_type":"text/x-python","patch_set":63,"id":"3a461143_70824c02","line":1940,"range":{"start_line":1940,"start_character":16,"end_line":1940,"end_character":18},"in_reply_to":"3a461143_75d89a1e","updated":"2017-01-26 00:59:49.000000000","message":"oops","commit_id":"da86424cc4c019e96233db3c1d8f2558823c130e"},{"author":{"_account_id":9003,"name":"Tom Barron","email":"tpb@dyncloud.net","username":"tbarron"},"change_message_id":"77df5e6eedd51649f8682b08b5c3301e225bbfd9","unresolved":false,"context_lines":[{"line_number":1954,"context_line":"        {\"access\": {\u0027access_type\u0027: \u0027cert\u0027, \u0027access_to\u0027: \u0027x\u0027 * 65},"},{"line_number":1955,"context_line":"         \"version\": \"2.7\"},"},{"line_number":1956,"context_line":"        {\"access\": {\u0027access_type\u0027: \u0027ip\u0027, \u0027access_to\u0027: \u0027ad80::abaa:0:c2:2\u0027},"},{"line_number":1957,"context_line":"         \"version\": \"2.32\"},"},{"line_number":1958,"context_line":"        {\"access\": {\u0027access_type\u0027: \u0027ip\u0027, \u0027access_to\u0027: \u0027127.4.0.3/33\u0027},"},{"line_number":1959,"context_line":"         \"version\": \"2.36\"},"},{"line_number":1960,"context_line":"        {\"access\": {\u0027access_type\u0027: \u0027ip\u0027, \u0027access_to\u0027: \u0027AD80:ABAA::*\u0027},"}],"source_content_type":"text/x-python","patch_set":75,"id":"3f1d235d_346b9a1e","line":1957,"range":{"start_line":1957,"start_character":20,"end_line":1957,"end_character":26},"updated":"2017-07-05 18:54:54.000000000","message":"Probably better to use \"2.35\"","commit_id":"4a98a2e598359e120fe6ed9b9b0bd9ddaceb5778"},{"author":{"_account_id":15100,"name":"zhongjun","email":"jun.zhongjun2@gmail.com","username":"zhongjun2"},"change_message_id":"e1c9e85b2bed4f340d3ac2d0a80bee247881c74c","unresolved":false,"context_lines":[{"line_number":1954,"context_line":"        {\"access\": {\u0027access_type\u0027: \u0027cert\u0027, \u0027access_to\u0027: \u0027x\u0027 * 65},"},{"line_number":1955,"context_line":"         \"version\": \"2.7\"},"},{"line_number":1956,"context_line":"        {\"access\": {\u0027access_type\u0027: \u0027ip\u0027, \u0027access_to\u0027: \u0027ad80::abaa:0:c2:2\u0027},"},{"line_number":1957,"context_line":"         \"version\": \"2.32\"},"},{"line_number":1958,"context_line":"        {\"access\": {\u0027access_type\u0027: \u0027ip\u0027, \u0027access_to\u0027: \u0027127.4.0.3/33\u0027},"},{"line_number":1959,"context_line":"         \"version\": \"2.36\"},"},{"line_number":1960,"context_line":"        {\"access\": {\u0027access_type\u0027: \u0027ip\u0027, \u0027access_to\u0027: \u0027AD80:ABAA::*\u0027},"}],"source_content_type":"text/x-python","patch_set":75,"id":"3f1d235d_c1581889","line":1957,"range":{"start_line":1957,"start_character":20,"end_line":1957,"end_character":26},"in_reply_to":"3f1d235d_346b9a1e","updated":"2017-07-06 07:01:45.000000000","message":"Done","commit_id":"4a98a2e598359e120fe6ed9b9b0bd9ddaceb5778"}],"manila/tests/share/drivers/huawei/test_huawei_nas.py":[{"author":{"_account_id":14567,"name":"Rodrigo Barbieri","email":"rodrigo.barbieri2010@gmail.com","username":"ganso"},"change_message_id":"c922b31db122e8e7e81c11b0334f8545b21d9055","unresolved":false,"context_lines":[{"line_number":2176,"context_line":"              {\u0027access_type\u0027: \u0027ip\u0027, \u0027access_to\u0027: \u00271.2.3.4\u0027,"},{"line_number":2177,"context_line":"               \u0027access_level\u0027: \u0027rw\u0027},"},{"line_number":2178,"context_line":"              {\u0027access_type\u0027: \u0027ipv6\u0027,"},{"line_number":2179,"context_line":"               \u0027access_to\u0027: \u0027AD80:0000:0000:0000:ABAA:0000:00C2:0002\u0027,"},{"line_number":2180,"context_line":"               \u0027access_level\u0027: \u0027ro\u0027},"},{"line_number":2181,"context_line":"              {\u0027access_type\u0027: \u0027ipv6\u0027,"},{"line_number":2182,"context_line":"               \u0027access_to\u0027: \u0027AD80:0000:0000:0000:ABAA:0000:00C2:0002\u0027,"}],"source_content_type":"text/x-python","patch_set":6,"id":"dada55a8_e86ea2fe","line":2179,"range":{"start_line":2179,"start_character":29,"end_line":2179,"end_character":68},"updated":"2016-07-26 18:09:32.000000000","message":"it would be good to have zero compression inputs here as well","commit_id":"89cfcea0a726b84ff220013102059954e88503ac"},{"author":{"_account_id":15100,"name":"zhongjun","email":"jun.zhongjun2@gmail.com","username":"zhongjun2"},"change_message_id":"a69396bcc91caaea635bace465a436d80b6442dc","unresolved":false,"context_lines":[{"line_number":2176,"context_line":"              {\u0027access_type\u0027: \u0027ip\u0027, \u0027access_to\u0027: \u00271.2.3.4\u0027,"},{"line_number":2177,"context_line":"               \u0027access_level\u0027: \u0027rw\u0027},"},{"line_number":2178,"context_line":"              {\u0027access_type\u0027: \u0027ipv6\u0027,"},{"line_number":2179,"context_line":"               \u0027access_to\u0027: \u0027AD80:0000:0000:0000:ABAA:0000:00C2:0002\u0027,"},{"line_number":2180,"context_line":"               \u0027access_level\u0027: \u0027ro\u0027},"},{"line_number":2181,"context_line":"              {\u0027access_type\u0027: \u0027ipv6\u0027,"},{"line_number":2182,"context_line":"               \u0027access_to\u0027: \u0027AD80:0000:0000:0000:ABAA:0000:00C2:0002\u0027,"}],"source_content_type":"text/x-python","patch_set":6,"id":"9ad45d7e_4d6afb1b","line":2179,"range":{"start_line":2179,"start_character":29,"end_line":2179,"end_character":68},"in_reply_to":"dada55a8_e86ea2fe","updated":"2016-08-08 14:44:46.000000000","message":"Done","commit_id":"89cfcea0a726b84ff220013102059954e88503ac"},{"author":{"_account_id":16203,"name":"zengyingzhe","email":"zengyingzhe@huawei.com","username":"zengyingzhe"},"change_message_id":"fb2c615625e9c6bbcdd962c38f5fa623bfbab9b6","unresolved":false,"context_lines":[{"line_number":2193,"context_line":"        self.driver.plugin.helper.login()"},{"line_number":2194,"context_line":"        self.allow_flag \u003d False"},{"line_number":2195,"context_line":"        self.allow_ro_flag \u003d False"},{"line_number":2196,"context_line":"        self.allow_rw_flag \u003d False"},{"line_number":2197,"context_line":"        self.driver.allow_access(self._context,"},{"line_number":2198,"context_line":"                                 self.share_nfs,"},{"line_number":2199,"context_line":"                                 access_ro,"}],"source_content_type":"text/x-python","patch_set":6,"id":"bacf61ea_596c619c","line":2196,"updated":"2016-08-03 07:51:11.000000000","message":"These flags initialization are no use actually, because they are \nattributes of HuaweiShareDriverTestCase instance, not FakeHuaweiNasHelper as wished. If you really want to initialize these flags, please use self.driver.plugin.helper.* form.","commit_id":"89cfcea0a726b84ff220013102059954e88503ac"}],"manila/utils.py":[{"author":{"_account_id":9003,"name":"Tom Barron","email":"tpb@dyncloud.net","username":"tbarron"},"change_message_id":"f0112d0a3a82abd5e8ba120f159d1ca5cf6c98ff","unresolved":false,"context_lines":[{"line_number":690,"context_line":"            time.sleep(tries ** 2)"},{"line_number":691,"context_line":""},{"line_number":692,"context_line":""},{"line_number":693,"context_line":"def validate_ipv6_range(ipv6_range):"},{"line_number":694,"context_line":"    ipv6_range \u003d ipv6_range.split(\u0027/\u0027)"},{"line_number":695,"context_line":"    exc_str \u003d (\u0027Supported ipv6 format examples:\\n\u0027"},{"line_number":696,"context_line":"               \u0027\\t2001:2001:2001:2001:2001:2001:2001:2001, \u0027"}],"source_content_type":"text/x-python","patch_set":22,"id":"3ac371cc_dd1d2874","line":693,"range":{"start_line":693,"start_character":0,"end_line":693,"end_character":36},"updated":"2016-08-18 19:23:54.000000000","message":"Unit tests?","commit_id":"1962bbeeb521d2386cb89275b614e6c0f28077a7"}],"manila_tempest_tests/config.py":[{"author":{"_account_id":8851,"name":"Valeriy Ponomaryov","email":"kiparis.kh@gmail.com","username":"vponomaryov"},"change_message_id":"bff2031628f220f24e7460359e602c5dff10c6f8","unresolved":false,"context_lines":[{"line_number":67,"context_line":"                help\u003d\"Selection of protocols, that should \""},{"line_number":68,"context_line":"                     \"be covered with ip rule tests\"),"},{"line_number":69,"context_line":"    cfg.ListOpt(\"enable_ipv6_rules_for_protocols\","},{"line_number":70,"context_line":"                default\u003d[\"nfs\", \"cifs\", ],"},{"line_number":71,"context_line":"                help\u003d\"Selection of protocols, that should \""},{"line_number":72,"context_line":"                     \"be covered with ipv6 rule tests\"),"},{"line_number":73,"context_line":"    cfg.ListOpt(\"enable_user_rules_for_protocols\","}],"source_content_type":"text/x-python","patch_set":4,"id":"9abb7d3a_943922f5","line":70,"range":{"start_line":70,"start_character":16,"end_line":70,"end_character":42},"updated":"2016-05-31 11:22:09.000000000","message":"Should be disabled by default as it is not supported by lion part of backends.","commit_id":"d67d79c94cd1bb988e7942517b18197f52916e6e"},{"author":{"_account_id":15100,"name":"zhongjun","email":"jun.zhongjun2@gmail.com","username":"zhongjun2"},"change_message_id":"56679c8dc6a31f7bdcc6657806ccb9a2c805be1d","unresolved":false,"context_lines":[{"line_number":67,"context_line":"                help\u003d\"Selection of protocols, that should \""},{"line_number":68,"context_line":"                     \"be covered with ip rule tests\"),"},{"line_number":69,"context_line":"    cfg.ListOpt(\"enable_ipv6_rules_for_protocols\","},{"line_number":70,"context_line":"                default\u003d[\"nfs\", \"cifs\", ],"},{"line_number":71,"context_line":"                help\u003d\"Selection of protocols, that should \""},{"line_number":72,"context_line":"                     \"be covered with ipv6 rule tests\"),"},{"line_number":73,"context_line":"    cfg.ListOpt(\"enable_user_rules_for_protocols\","}],"source_content_type":"text/x-python","patch_set":4,"id":"7aa08908_39a82820","line":70,"range":{"start_line":70,"start_character":16,"end_line":70,"end_character":42},"in_reply_to":"9abb7d3a_943922f5","updated":"2016-06-13 07:43:53.000000000","message":"Done","commit_id":"d67d79c94cd1bb988e7942517b18197f52916e6e"},{"author":{"_account_id":8851,"name":"Valeriy Ponomaryov","email":"kiparis.kh@gmail.com","username":"vponomaryov"},"change_message_id":"e52dfb3cd2791ab0adaaddd482d24625a2faf4b6","unresolved":false,"context_lines":[{"line_number":66,"context_line":"                default\u003d[\"nfs\", \"cifs\", ],"},{"line_number":67,"context_line":"                help\u003d\"Selection of protocols, that should \""},{"line_number":68,"context_line":"                     \"be covered with ip rule tests\"),"},{"line_number":69,"context_line":"    cfg.ListOpt(\"enable_ipv6_rules_for_protocols\","},{"line_number":70,"context_line":"                default\u003d[],"},{"line_number":71,"context_line":"                help\u003d\"Selection of protocols, that should \""},{"line_number":72,"context_line":"                     \"be covered with ipv6 rule tests\"),"},{"line_number":73,"context_line":"    cfg.ListOpt(\"enable_user_rules_for_protocols\","},{"line_number":74,"context_line":"                default\u003d[],"},{"line_number":75,"context_line":"                help\u003d\"Selection of protocols, that should \""}],"source_content_type":"text/x-python","patch_set":6,"id":"7aa08908_c9002469","line":72,"range":{"start_line":69,"start_character":4,"end_line":72,"end_character":56},"updated":"2016-06-13 12:49:58.000000000","message":"Only \"nfs\" protocol can be tested according to current code, all other will be just ignored.","commit_id":"89cfcea0a726b84ff220013102059954e88503ac"},{"author":{"_account_id":14567,"name":"Rodrigo Barbieri","email":"rodrigo.barbieri2010@gmail.com","username":"ganso"},"change_message_id":"c922b31db122e8e7e81c11b0334f8545b21d9055","unresolved":false,"context_lines":[{"line_number":69,"context_line":"    cfg.ListOpt(\"enable_ipv6_rules_for_protocols\","},{"line_number":70,"context_line":"                default\u003d[],"},{"line_number":71,"context_line":"                help\u003d\"Selection of protocols, that should \""},{"line_number":72,"context_line":"                     \"be covered with ipv6 rule tests\"),"},{"line_number":73,"context_line":"    cfg.ListOpt(\"enable_user_rules_for_protocols\","},{"line_number":74,"context_line":"                default\u003d[],"},{"line_number":75,"context_line":"                help\u003d\"Selection of protocols, that should \""}],"source_content_type":"text/x-python","patch_set":6,"id":"dada55a8_6852b236","line":72,"range":{"start_line":72,"start_character":52,"end_line":72,"end_character":54},"updated":"2016-07-26 18:09:32.000000000","message":"period","commit_id":"89cfcea0a726b84ff220013102059954e88503ac"},{"author":{"_account_id":15100,"name":"zhongjun","email":"jun.zhongjun2@gmail.com","username":"zhongjun2"},"change_message_id":"a69396bcc91caaea635bace465a436d80b6442dc","unresolved":false,"context_lines":[{"line_number":69,"context_line":"    cfg.ListOpt(\"enable_ipv6_rules_for_protocols\","},{"line_number":70,"context_line":"                default\u003d[],"},{"line_number":71,"context_line":"                help\u003d\"Selection of protocols, that should \""},{"line_number":72,"context_line":"                     \"be covered with ipv6 rule tests\"),"},{"line_number":73,"context_line":"    cfg.ListOpt(\"enable_user_rules_for_protocols\","},{"line_number":74,"context_line":"                default\u003d[],"},{"line_number":75,"context_line":"                help\u003d\"Selection of protocols, that should \""}],"source_content_type":"text/x-python","patch_set":6,"id":"bacf61ea_956095d0","line":72,"range":{"start_line":72,"start_character":52,"end_line":72,"end_character":54},"in_reply_to":"dada55a8_6852b236","updated":"2016-08-08 14:44:46.000000000","message":"Done","commit_id":"89cfcea0a726b84ff220013102059954e88503ac"},{"author":{"_account_id":8851,"name":"Valeriy Ponomaryov","email":"kiparis.kh@gmail.com","username":"vponomaryov"},"change_message_id":"d88651eb36a859775bc529ad8a98905d9ec2cff3","unresolved":false,"context_lines":[{"line_number":74,"context_line":"                help\u003d\"Selection of protocols, that should \""},{"line_number":75,"context_line":"                     \"be covered with ip rule tests\"),"},{"line_number":76,"context_line":"    cfg.ListOpt(\"enable_ipv6_rules_for_protocols\","},{"line_number":77,"context_line":"                default\u003d[\"nfs\", ],"},{"line_number":78,"context_line":"                help\u003d\"Selection of protocols, that should \""},{"line_number":79,"context_line":"                     \"be covered with ipv6 rule tests.\"),"},{"line_number":80,"context_line":"    cfg.ListOpt(\"enable_user_rules_for_protocols\","}],"source_content_type":"text/x-python","patch_set":7,"id":"9ad45d7e_9667f224","line":77,"range":{"start_line":77,"start_character":25,"end_line":77,"end_character":32},"updated":"2016-08-08 10:37:26.000000000","message":"Since none of drivers support it, we should disable it by default and only enable where it is supported.","commit_id":"c650beb19ee052fa9d23fcd81b7daf9342305122"},{"author":{"_account_id":15100,"name":"zhongjun","email":"jun.zhongjun2@gmail.com","username":"zhongjun2"},"change_message_id":"bc368e3f7d4e9d248bc0e5baec3d0973610fac27","unresolved":false,"context_lines":[{"line_number":74,"context_line":"                help\u003d\"Selection of protocols, that should \""},{"line_number":75,"context_line":"                     \"be covered with ip rule tests\"),"},{"line_number":76,"context_line":"    cfg.ListOpt(\"enable_ipv6_rules_for_protocols\","},{"line_number":77,"context_line":"                default\u003d[\"nfs\", ],"},{"line_number":78,"context_line":"                help\u003d\"Selection of protocols, that should \""},{"line_number":79,"context_line":"                     \"be covered with ipv6 rule tests.\"),"},{"line_number":80,"context_line":"    cfg.ListOpt(\"enable_user_rules_for_protocols\","}],"source_content_type":"text/x-python","patch_set":7,"id":"9ad45d7e_6d541f54","line":77,"range":{"start_line":77,"start_character":25,"end_line":77,"end_character":32},"in_reply_to":"9ad45d7e_9667f224","updated":"2016-08-09 03:11:17.000000000","message":"Done","commit_id":"c650beb19ee052fa9d23fcd81b7daf9342305122"},{"author":{"_account_id":11865,"name":"Clinton Knight","email":"cknight@netapp.com","username":"cknight"},"change_message_id":"d87743a0ca60ea6422701174c785a7c3aff6ac4b","unresolved":false,"context_lines":[{"line_number":73,"context_line":"                default\u003d[\"nfs\", \"cifs\", ],"},{"line_number":74,"context_line":"                help\u003d\"Selection of protocols, that should \""},{"line_number":75,"context_line":"                     \"be covered with ip rule tests\"),"},{"line_number":76,"context_line":"    cfg.ListOpt(\"enable_ipv6_rules_for_protocols\","},{"line_number":77,"context_line":"                default\u003d[\"nfs\", ],"},{"line_number":78,"context_line":"                help\u003d\"Selection of protocols, that should \""},{"line_number":79,"context_line":"                     \"be covered with ipv6 rule tests.\"),"}],"source_content_type":"text/x-python","patch_set":26,"id":"fa7ab95a_d3f872c7","line":76,"range":{"start_line":76,"start_character":17,"end_line":76,"end_character":48},"updated":"2016-08-31 13:16:09.000000000","message":"If we keep the plan to require all drivers to support IPv6 in Ocata, this shouldn\u0027t be necessary.","commit_id":"52935c079ddf5e3b02479ba49bc49d9ef2f4446e"},{"author":{"_account_id":9003,"name":"Tom Barron","email":"tpb@dyncloud.net","username":"tbarron"},"change_message_id":"14be43dfcf98d01946020aa83c47a8dead302809","unresolved":false,"context_lines":[{"line_number":73,"context_line":"                default\u003d[\"nfs\", \"cifs\", ],"},{"line_number":74,"context_line":"                help\u003d\"Selection of protocols, that should \""},{"line_number":75,"context_line":"                     \"be covered with ip rule tests\"),"},{"line_number":76,"context_line":"    cfg.ListOpt(\"enable_ipv6_rules_for_protocols\","},{"line_number":77,"context_line":"                default\u003d[\"nfs\", ],"},{"line_number":78,"context_line":"                help\u003d\"Selection of protocols, that should \""},{"line_number":79,"context_line":"                     \"be covered with ipv6 rule tests.\"),"}],"source_content_type":"text/x-python","patch_set":26,"id":"fa7ab95a_f272c6ac","line":76,"range":{"start_line":76,"start_character":17,"end_line":76,"end_character":48},"in_reply_to":"fa7ab95a_d3f872c7","updated":"2016-08-31 15:28:14.000000000","message":"+1","commit_id":"52935c079ddf5e3b02479ba49bc49d9ef2f4446e"},{"author":{"_account_id":15100,"name":"zhongjun","email":"jun.zhongjun2@gmail.com","username":"zhongjun2"},"change_message_id":"efcbb77223192dffa17729f079b26d8f8df05661","unresolved":false,"context_lines":[{"line_number":73,"context_line":"                default\u003d[\"nfs\", \"cifs\", ],"},{"line_number":74,"context_line":"                help\u003d\"Selection of protocols, that should \""},{"line_number":75,"context_line":"                     \"be covered with ip rule tests\"),"},{"line_number":76,"context_line":"    cfg.ListOpt(\"enable_ipv6_rules_for_protocols\","},{"line_number":77,"context_line":"                default\u003d[\"nfs\", ],"},{"line_number":78,"context_line":"                help\u003d\"Selection of protocols, that should \""},{"line_number":79,"context_line":"                     \"be covered with ipv6 rule tests.\"),"}],"source_content_type":"text/x-python","patch_set":26,"id":"fa7ab95a_e7145f4e","line":76,"range":{"start_line":76,"start_character":17,"end_line":76,"end_character":48},"in_reply_to":"fa7ab95a_d3f872c7","updated":"2016-09-02 06:07:39.000000000","message":"Done","commit_id":"52935c079ddf5e3b02479ba49bc49d9ef2f4446e"}],"manila_tempest_tests/tests/api/test_rules.py":[{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"b1037c5f2b3cf0c98098a6539f51334cc47e92df","unresolved":false,"context_lines":[{"line_number":414,"context_line":"    @test.attr(type\u003d[\"gate\", ])"},{"line_number":415,"context_line":"    @ddt.data(\"AD80:0000:0000:0000:ABAA:0000:00C2:0002\","},{"line_number":416,"context_line":"              \"AD80:0000:0000:0000:ABAA:0000:00C2:0002/36\")"},{"line_number":417,"context_line":"    def test_create_delete_cephx_rule(self, access_to):"},{"line_number":418,"context_line":"        rule \u003d self.shares_v2_client.create_access_rule("},{"line_number":419,"context_line":"            self.share[\"id\"], self.access_type, access_to)"},{"line_number":420,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"1a122d0e_36aa1f86","line":417,"range":{"start_line":417,"start_character":27,"end_line":417,"end_character":32},"updated":"2016-05-04 03:54:51.000000000","message":"ipv6","commit_id":"d8f2568f8f3fd6fca443d49d2a27de265bbf521f"},{"author":{"_account_id":8851,"name":"Valeriy Ponomaryov","email":"kiparis.kh@gmail.com","username":"vponomaryov"},"change_message_id":"bff2031628f220f24e7460359e602c5dff10c6f8","unresolved":false,"context_lines":[{"line_number":420,"context_line":""},{"line_number":421,"context_line":"        self.assertEqual(\u0027rw\u0027, rule[\u0027access_level\u0027])"},{"line_number":422,"context_line":"        for key in (\u0027deleted\u0027, \u0027deleted_at\u0027, \u0027instance_mappings\u0027):"},{"line_number":423,"context_line":"            self.assertNotIn(key, rule.keys())"},{"line_number":424,"context_line":"        self.shares_v2_client.wait_for_access_rule_status("},{"line_number":425,"context_line":"            self.share[\"id\"], rule[\"id\"], \"active\")"},{"line_number":426,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"9abb7d3a_c8394ed9","line":423,"range":{"start_line":423,"start_character":34,"end_line":423,"end_character":45},"updated":"2016-05-31 11:22:09.000000000","message":"Please, use py3 compatible approach, wrap it with \"list\".","commit_id":"d67d79c94cd1bb988e7942517b18197f52916e6e"},{"author":{"_account_id":15100,"name":"zhongjun","email":"jun.zhongjun2@gmail.com","username":"zhongjun2"},"change_message_id":"56679c8dc6a31f7bdcc6657806ccb9a2c805be1d","unresolved":false,"context_lines":[{"line_number":420,"context_line":""},{"line_number":421,"context_line":"        self.assertEqual(\u0027rw\u0027, rule[\u0027access_level\u0027])"},{"line_number":422,"context_line":"        for key in (\u0027deleted\u0027, \u0027deleted_at\u0027, \u0027instance_mappings\u0027):"},{"line_number":423,"context_line":"            self.assertNotIn(key, rule.keys())"},{"line_number":424,"context_line":"        self.shares_v2_client.wait_for_access_rule_status("},{"line_number":425,"context_line":"            self.share[\"id\"], rule[\"id\"], \"active\")"},{"line_number":426,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"7aa08908_f4e865e4","line":423,"range":{"start_line":423,"start_character":34,"end_line":423,"end_character":45},"in_reply_to":"9abb7d3a_c8394ed9","updated":"2016-06-13 07:43:53.000000000","message":"Done","commit_id":"d67d79c94cd1bb988e7942517b18197f52916e6e"},{"author":{"_account_id":8851,"name":"Valeriy Ponomaryov","email":"kiparis.kh@gmail.com","username":"vponomaryov"},"change_message_id":"bff2031628f220f24e7460359e602c5dff10c6f8","unresolved":false,"context_lines":[{"line_number":452,"context_line":"        elif CONF.share.enable_ipv6_rules_for_protocols:"},{"line_number":453,"context_line":"            cls.protocol \u003d CONF.share.enable_ipv6_rules_for_protocols[0]"},{"line_number":454,"context_line":"            cls.access_type \u003d \"ipv6\""},{"line_number":455,"context_line":"            cls.access_to \u003d \"AD80:0000:0000:0000:ABAA:0000:00C2:0002\""},{"line_number":456,"context_line":"        elif CONF.share.enable_user_rules_for_protocols:"},{"line_number":457,"context_line":"            cls.protocol \u003d CONF.share.enable_user_rules_for_protocols[0]"},{"line_number":458,"context_line":"            cls.access_type \u003d \"user\""}],"source_content_type":"text/x-python","patch_set":4,"id":"9abb7d3a_68066287","line":455,"range":{"start_line":455,"start_character":29,"end_line":455,"end_character":68},"updated":"2016-05-31 11:22:09.000000000","message":"Why this?","commit_id":"d67d79c94cd1bb988e7942517b18197f52916e6e"},{"author":{"_account_id":15100,"name":"zhongjun","email":"jun.zhongjun2@gmail.com","username":"zhongjun2"},"change_message_id":"56679c8dc6a31f7bdcc6657806ccb9a2c805be1d","unresolved":false,"context_lines":[{"line_number":452,"context_line":"        elif CONF.share.enable_ipv6_rules_for_protocols:"},{"line_number":453,"context_line":"            cls.protocol \u003d CONF.share.enable_ipv6_rules_for_protocols[0]"},{"line_number":454,"context_line":"            cls.access_type \u003d \"ipv6\""},{"line_number":455,"context_line":"            cls.access_to \u003d \"AD80:0000:0000:0000:ABAA:0000:00C2:0002\""},{"line_number":456,"context_line":"        elif CONF.share.enable_user_rules_for_protocols:"},{"line_number":457,"context_line":"            cls.protocol \u003d CONF.share.enable_user_rules_for_protocols[0]"},{"line_number":458,"context_line":"            cls.access_type \u003d \"user\""}],"source_content_type":"text/x-python","patch_set":4,"id":"7aa08908_14ec11f2","line":455,"range":{"start_line":455,"start_character":29,"end_line":455,"end_character":68},"in_reply_to":"9abb7d3a_68066287","updated":"2016-06-13 07:43:53.000000000","message":"just a sample","commit_id":"d67d79c94cd1bb988e7942517b18197f52916e6e"},{"author":{"_account_id":8851,"name":"Valeriy Ponomaryov","email":"kiparis.kh@gmail.com","username":"vponomaryov"},"change_message_id":"8d00badd718c1e29bdaba52102366a1bea3cf087","unresolved":false,"context_lines":[{"line_number":411,"context_line":"        # Provide access to a client identified by a ipv6 ip."},{"line_number":412,"context_line":"        cls.access_to \u003d \"AD80:0000:0000:0000:ABAA:0000:00C2:0002\""},{"line_number":413,"context_line":""},{"line_number":414,"context_line":"    @test.attr(type\u003d[\"gate\", ])"},{"line_number":415,"context_line":"    @ddt.data(\"AD80:0000:0000:0000:ABAA:0000:00C2:0002\","},{"line_number":416,"context_line":"              \"AD80:0000:0000:0000:ABAA:0000:00C2:0002/36\")"},{"line_number":417,"context_line":"    def test_create_delete_ipv6_rule(self, access_to):"}],"source_content_type":"text/x-python","patch_set":6,"id":"7aa08908_29cc4869","line":414,"range":{"start_line":414,"start_character":4,"end_line":414,"end_character":31},"updated":"2016-06-13 12:46:37.000000000","message":"This should be updated in the same way as in [1].\nFor the moment it is not tested in CI at all. That is why error is not observed.\n\n[1] https://github.com/openstack/manila/commit/05bdaa29","commit_id":"89cfcea0a726b84ff220013102059954e88503ac"},{"author":{"_account_id":14567,"name":"Rodrigo Barbieri","email":"rodrigo.barbieri2010@gmail.com","username":"ganso"},"change_message_id":"c922b31db122e8e7e81c11b0334f8545b21d9055","unresolved":false,"context_lines":[{"line_number":449,"context_line":"            cls.protocol \u003d CONF.share.enable_ip_rules_for_protocols[0]"},{"line_number":450,"context_line":"            cls.access_type \u003d \"ip\""},{"line_number":451,"context_line":"            cls.access_to \u003d \"8.8.8.8\""},{"line_number":452,"context_line":"        elif CONF.share.enable_ipv6_rules_for_protocols:"},{"line_number":453,"context_line":"            cls.protocol \u003d CONF.share.enable_ipv6_rules_for_protocols[0]"},{"line_number":454,"context_line":"            cls.access_type \u003d \"ipv6\""},{"line_number":455,"context_line":"            cls.access_to \u003d \"AD80:0000:0000:0000:ABAA:0000:00C2:0002\""},{"line_number":456,"context_line":"        elif CONF.share.enable_user_rules_for_protocols:"},{"line_number":457,"context_line":"            cls.protocol \u003d CONF.share.enable_user_rules_for_protocols[0]"},{"line_number":458,"context_line":"            cls.access_type \u003d \"user\""}],"source_content_type":"text/x-python","patch_set":6,"id":"dada55a8_031dd961","line":455,"range":{"start_line":452,"start_character":0,"end_line":455,"end_character":69},"updated":"2016-07-26 18:09:32.000000000","message":"you seem to have a dedicated class for IPV6. You could have several subclasses to deal with different protocolsç. This class is not using this set attribute at all","commit_id":"89cfcea0a726b84ff220013102059954e88503ac"},{"author":{"_account_id":16203,"name":"zengyingzhe","email":"zengyingzhe@huawei.com","username":"zengyingzhe"},"change_message_id":"24271aa5558dd977c8e8bfd040cdb65a9b15f3ea","unresolved":false,"context_lines":[{"line_number":403,"context_line":"        if (cls.protocol not in CONF.share.enable_protocols or"},{"line_number":404,"context_line":"                cls.protocol not in"},{"line_number":405,"context_line":"                CONF.share.enable_ipv6_rules_for_protocols):"},{"line_number":406,"context_line":"            msg \u003d (\"Ipv6 rule tests for %s protocol are disabled.\" %"},{"line_number":407,"context_line":"                   cls.protocol)"},{"line_number":408,"context_line":"            raise cls.skipException(msg)"},{"line_number":409,"context_line":"        cls.share \u003d cls.create_share(cls.protocol)"}],"source_content_type":"text/x-python","patch_set":12,"id":"9ad45d7e_e8498161","line":406,"range":{"start_line":406,"start_character":20,"end_line":406,"end_character":24},"updated":"2016-08-11 03:20:59.000000000","message":"IPv6","commit_id":"2e7c8983daa733a4fe2bd058ff3fbb19c8281e69"},{"author":{"_account_id":15100,"name":"zhongjun","email":"jun.zhongjun2@gmail.com","username":"zhongjun2"},"change_message_id":"de33c89e733d468150a14047db64e55d8f7d91ae","unresolved":false,"context_lines":[{"line_number":403,"context_line":"        if (cls.protocol not in CONF.share.enable_protocols or"},{"line_number":404,"context_line":"                cls.protocol not in"},{"line_number":405,"context_line":"                CONF.share.enable_ipv6_rules_for_protocols):"},{"line_number":406,"context_line":"            msg \u003d (\"Ipv6 rule tests for %s protocol are disabled.\" %"},{"line_number":407,"context_line":"                   cls.protocol)"},{"line_number":408,"context_line":"            raise cls.skipException(msg)"},{"line_number":409,"context_line":"        cls.share \u003d cls.create_share(cls.protocol)"}],"source_content_type":"text/x-python","patch_set":12,"id":"9ad45d7e_747ba828","line":406,"range":{"start_line":406,"start_character":20,"end_line":406,"end_character":24},"in_reply_to":"9ad45d7e_e8498161","updated":"2016-08-11 06:56:14.000000000","message":"Done","commit_id":"2e7c8983daa733a4fe2bd058ff3fbb19c8281e69"},{"author":{"_account_id":16203,"name":"zengyingzhe","email":"zengyingzhe@huawei.com","username":"zengyingzhe"},"change_message_id":"24271aa5558dd977c8e8bfd040cdb65a9b15f3ea","unresolved":false,"context_lines":[{"line_number":432,"context_line":""},{"line_number":433,"context_line":"@ddt.ddt"},{"line_number":434,"context_line":"class ShareIPv6RulesForCIFSTest(ShareIPv6RulesForNFSTest):"},{"line_number":435,"context_line":"    protocol \u003d \"cifs\""},{"line_number":436,"context_line":""},{"line_number":437,"context_line":""},{"line_number":438,"context_line":"@ddt.ddt"}],"source_content_type":"text/x-python","patch_set":12,"id":"9ad45d7e_e85341e0","line":435,"updated":"2016-08-11 03:20:59.000000000","message":"CIFS supports the access way of IP?","commit_id":"2e7c8983daa733a4fe2bd058ff3fbb19c8281e69"},{"author":{"_account_id":15100,"name":"zhongjun","email":"jun.zhongjun2@gmail.com","username":"zhongjun2"},"change_message_id":"de33c89e733d468150a14047db64e55d8f7d91ae","unresolved":false,"context_lines":[{"line_number":432,"context_line":""},{"line_number":433,"context_line":"@ddt.ddt"},{"line_number":434,"context_line":"class ShareIPv6RulesForCIFSTest(ShareIPv6RulesForNFSTest):"},{"line_number":435,"context_line":"    protocol \u003d \"cifs\""},{"line_number":436,"context_line":""},{"line_number":437,"context_line":""},{"line_number":438,"context_line":"@ddt.ddt"}],"source_content_type":"text/x-python","patch_set":12,"id":"9ad45d7e_74944842","line":435,"in_reply_to":"9ad45d7e_e85341e0","updated":"2016-08-11 06:56:14.000000000","message":"It is up to share driver.","commit_id":"2e7c8983daa733a4fe2bd058ff3fbb19c8281e69"},{"author":{"_account_id":11865,"name":"Clinton Knight","email":"cknight@netapp.com","username":"cknight"},"change_message_id":"d87743a0ca60ea6422701174c785a7c3aff6ac4b","unresolved":false,"context_lines":[{"line_number":473,"context_line":"    def test_list_access_rules(self, version):"},{"line_number":474,"context_line":"        if (utils.is_microversion_lt(version, \u00272.22\u0027) and"},{"line_number":475,"context_line":"                CONF.share.enable_ipv6_rules_for_protocols):"},{"line_number":476,"context_line":"            msg \u003d (\"API version %s does not support ipv6 access type, \""},{"line_number":477,"context_line":"                   \"need version greater than 2.20.\" % version)"},{"line_number":478,"context_line":"            raise self.skipException(msg)"},{"line_number":479,"context_line":""}],"source_content_type":"text/x-python","patch_set":26,"id":"fa7ab95a_93dc2a48","line":476,"range":{"start_line":476,"start_character":52,"end_line":476,"end_character":68},"updated":"2016-08-31 13:16:09.000000000","message":"There won\u0027t be an ipv6 access type...","commit_id":"52935c079ddf5e3b02479ba49bc49d9ef2f4446e"},{"author":{"_account_id":9003,"name":"Tom Barron","email":"tpb@dyncloud.net","username":"tbarron"},"change_message_id":"14be43dfcf98d01946020aa83c47a8dead302809","unresolved":false,"context_lines":[{"line_number":473,"context_line":"    def test_list_access_rules(self, version):"},{"line_number":474,"context_line":"        if (utils.is_microversion_lt(version, \u00272.22\u0027) and"},{"line_number":475,"context_line":"                CONF.share.enable_ipv6_rules_for_protocols):"},{"line_number":476,"context_line":"            msg \u003d (\"API version %s does not support ipv6 access type, \""},{"line_number":477,"context_line":"                   \"need version greater than 2.20.\" % version)"},{"line_number":478,"context_line":"            raise self.skipException(msg)"},{"line_number":479,"context_line":""}],"source_content_type":"text/x-python","patch_set":26,"id":"fa7ab95a_3210ae4e","line":476,"range":{"start_line":476,"start_character":52,"end_line":476,"end_character":68},"in_reply_to":"fa7ab95a_93dc2a48","updated":"2016-08-31 15:28:14.000000000","message":"+1","commit_id":"52935c079ddf5e3b02479ba49bc49d9ef2f4446e"},{"author":{"_account_id":15100,"name":"zhongjun","email":"jun.zhongjun2@gmail.com","username":"zhongjun2"},"change_message_id":"efcbb77223192dffa17729f079b26d8f8df05661","unresolved":false,"context_lines":[{"line_number":473,"context_line":"    def test_list_access_rules(self, version):"},{"line_number":474,"context_line":"        if (utils.is_microversion_lt(version, \u00272.22\u0027) and"},{"line_number":475,"context_line":"                CONF.share.enable_ipv6_rules_for_protocols):"},{"line_number":476,"context_line":"            msg \u003d (\"API version %s does not support ipv6 access type, \""},{"line_number":477,"context_line":"                   \"need version greater than 2.20.\" % version)"},{"line_number":478,"context_line":"            raise self.skipException(msg)"},{"line_number":479,"context_line":""}],"source_content_type":"text/x-python","patch_set":26,"id":"fa7ab95a_ea118605","line":476,"range":{"start_line":476,"start_character":52,"end_line":476,"end_character":68},"in_reply_to":"fa7ab95a_93dc2a48","updated":"2016-09-02 06:07:39.000000000","message":"Done","commit_id":"52935c079ddf5e3b02479ba49bc49d9ef2f4446e"},{"author":{"_account_id":11865,"name":"Clinton Knight","email":"cknight@netapp.com","username":"cknight"},"change_message_id":"d87743a0ca60ea6422701174c785a7c3aff6ac4b","unresolved":false,"context_lines":[{"line_number":549,"context_line":"    def test_access_rules_deleted_if_share_deleted(self, version):"},{"line_number":550,"context_line":"        if (utils.is_microversion_lt(version, \u00272.22\u0027) and"},{"line_number":551,"context_line":"                CONF.share.enable_ipv6_rules_for_protocols):"},{"line_number":552,"context_line":"            msg \u003d (\"API version %s does not support ipv6 access type, \""},{"line_number":553,"context_line":"                   \"need version greater than 2.20.\" % version)"},{"line_number":554,"context_line":"            raise self.skipException(msg)"},{"line_number":555,"context_line":""}],"source_content_type":"text/x-python","patch_set":26,"id":"fa7ab95a_33c51e5b","line":552,"range":{"start_line":552,"start_character":52,"end_line":552,"end_character":68},"updated":"2016-08-31 13:16:09.000000000","message":"Same","commit_id":"52935c079ddf5e3b02479ba49bc49d9ef2f4446e"},{"author":{"_account_id":9003,"name":"Tom Barron","email":"tpb@dyncloud.net","username":"tbarron"},"change_message_id":"14be43dfcf98d01946020aa83c47a8dead302809","unresolved":false,"context_lines":[{"line_number":549,"context_line":"    def test_access_rules_deleted_if_share_deleted(self, version):"},{"line_number":550,"context_line":"        if (utils.is_microversion_lt(version, \u00272.22\u0027) and"},{"line_number":551,"context_line":"                CONF.share.enable_ipv6_rules_for_protocols):"},{"line_number":552,"context_line":"            msg \u003d (\"API version %s does not support ipv6 access type, \""},{"line_number":553,"context_line":"                   \"need version greater than 2.20.\" % version)"},{"line_number":554,"context_line":"            raise self.skipException(msg)"},{"line_number":555,"context_line":""}],"source_content_type":"text/x-python","patch_set":26,"id":"fa7ab95a_723156ec","line":552,"range":{"start_line":552,"start_character":52,"end_line":552,"end_character":68},"in_reply_to":"fa7ab95a_33c51e5b","updated":"2016-08-31 15:28:14.000000000","message":"+1","commit_id":"52935c079ddf5e3b02479ba49bc49d9ef2f4446e"},{"author":{"_account_id":15100,"name":"zhongjun","email":"jun.zhongjun2@gmail.com","username":"zhongjun2"},"change_message_id":"efcbb77223192dffa17729f079b26d8f8df05661","unresolved":false,"context_lines":[{"line_number":549,"context_line":"    def test_access_rules_deleted_if_share_deleted(self, version):"},{"line_number":550,"context_line":"        if (utils.is_microversion_lt(version, \u00272.22\u0027) and"},{"line_number":551,"context_line":"                CONF.share.enable_ipv6_rules_for_protocols):"},{"line_number":552,"context_line":"            msg \u003d (\"API version %s does not support ipv6 access type, \""},{"line_number":553,"context_line":"                   \"need version greater than 2.20.\" % version)"},{"line_number":554,"context_line":"            raise self.skipException(msg)"},{"line_number":555,"context_line":""}],"source_content_type":"text/x-python","patch_set":26,"id":"fa7ab95a_0afb0ac2","line":552,"range":{"start_line":552,"start_character":52,"end_line":552,"end_character":68},"in_reply_to":"fa7ab95a_33c51e5b","updated":"2016-09-02 06:07:39.000000000","message":"Done","commit_id":"52935c079ddf5e3b02479ba49bc49d9ef2f4446e"},{"author":{"_account_id":16203,"name":"zengyingzhe","email":"zengyingzhe@huawei.com","username":"zengyingzhe"},"change_message_id":"08a7820c4533c9630480a9c58c69eb87afd7db61","unresolved":false,"context_lines":[{"line_number":85,"context_line":"              {\u0027version\u0027: LATEST_MICROVERSION,"},{"line_number":86,"context_line":"               \u0027access_to\u0027: \"ad80::abaa:0:c2:2\"},"},{"line_number":87,"context_line":"              {\u0027version\u0027: LATEST_MICROVERSION, \u0027access_to\u0027: \"AD80:ABAA::\"},"},{"line_number":88,"context_line":"              {\u0027version\u0027: \u00272.23\u0027, \u0027access_to\u0027: \"ad80::abaa:0:c2:2\"},)"},{"line_number":89,"context_line":"    @ddt.unpack"},{"line_number":90,"context_line":"    def test_create_delete_access_rules_with_one_ip(self, version,"},{"line_number":91,"context_line":"                                                    access_to):"}],"source_content_type":"text/x-python","patch_set":32,"id":"7a8ec9b2_e7127bb3","line":88,"updated":"2016-09-22 03:43:32.000000000","message":"Will you add some negative tests in test_rules_negative.py?","commit_id":"1f104e55113ecfc3ca2b4ff2d753ae5230680983"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"6f4ded9bafa8d985b6856dbd1b1ead862bdf914b","unresolved":false,"context_lines":[{"line_number":79,"context_line":"        cls.access_to \u003d \"2.2.2.2\""},{"line_number":80,"context_line":""},{"line_number":81,"context_line":"    @tc.attr(base.TAG_POSITIVE, base.TAG_BACKEND)"},{"line_number":82,"context_line":"    @ddt.data({\u0027version\u0027: \u00271.0\u0027, \u0027access_to\u0027: \"1.1.1.1\"},"},{"line_number":83,"context_line":"              {\u0027version\u0027: \u00272.9\u0027, \u0027access_to\u0027: \"1.1.1.1\"},"},{"line_number":84,"context_line":"              {\u0027version\u0027: LATEST_MICROVERSION, \u0027access_to\u0027: \"1.1.1.1\"},"},{"line_number":85,"context_line":"              {\u0027version\u0027: LATEST_MICROVERSION,"}],"source_content_type":"text/x-python","patch_set":37,"id":"1a95cdbc_dd3d43c5","line":82,"range":{"start_line":82,"start_character":46,"end_line":82,"end_character":55},"updated":"2016-10-08 15:44:35.000000000","message":"utils.rand_ip()","commit_id":"05de92ca7a9e3132535f1b2184111fb75af61578"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"6f4ded9bafa8d985b6856dbd1b1ead862bdf914b","unresolved":false,"context_lines":[{"line_number":80,"context_line":""},{"line_number":81,"context_line":"    @tc.attr(base.TAG_POSITIVE, base.TAG_BACKEND)"},{"line_number":82,"context_line":"    @ddt.data({\u0027version\u0027: \u00271.0\u0027, \u0027access_to\u0027: \"1.1.1.1\"},"},{"line_number":83,"context_line":"              {\u0027version\u0027: \u00272.9\u0027, \u0027access_to\u0027: \"1.1.1.1\"},"},{"line_number":84,"context_line":"              {\u0027version\u0027: LATEST_MICROVERSION, \u0027access_to\u0027: \"1.1.1.1\"},"},{"line_number":85,"context_line":"              {\u0027version\u0027: LATEST_MICROVERSION,"},{"line_number":86,"context_line":"               \u0027access_to\u0027: \"ad80::abaa:0:c2:2\"},"}],"source_content_type":"text/x-python","patch_set":37,"id":"1a95cdbc_fd383fd5","line":83,"range":{"start_line":83,"start_character":47,"end_line":83,"end_character":54},"updated":"2016-10-08 15:44:35.000000000","message":"utils.rand_ip()","commit_id":"05de92ca7a9e3132535f1b2184111fb75af61578"},{"author":{"_account_id":23083,"name":"TommyLike","email":"tommylikehu@gmail.com","username":"TommyLike"},"change_message_id":"07c14a88a6ef7cb39974a1d65df7d98735dd2e51","unresolved":false,"context_lines":[{"line_number":80,"context_line":""},{"line_number":81,"context_line":"    @tc.attr(base.TAG_POSITIVE, base.TAG_BACKEND)"},{"line_number":82,"context_line":"    @ddt.data({\u0027version\u0027: \u00271.0\u0027, \u0027access_to\u0027: \"1.1.1.1\"},"},{"line_number":83,"context_line":"              {\u0027version\u0027: \u00272.9\u0027, \u0027access_to\u0027: \"1.1.1.1\"},"},{"line_number":84,"context_line":"              {\u0027version\u0027: LATEST_MICROVERSION, \u0027access_to\u0027: \"1.1.1.1\"},"},{"line_number":85,"context_line":"              {\u0027version\u0027: LATEST_MICROVERSION,"},{"line_number":86,"context_line":"               \u0027access_to\u0027: \"ad80::abaa:0:c2:2\"},"}],"source_content_type":"text/x-python","patch_set":37,"id":"1a95cdbc_af52ef64","line":83,"range":{"start_line":83,"start_character":47,"end_line":83,"end_character":54},"in_reply_to":"1a95cdbc_fd383fd5","updated":"2016-10-10 08:04:53.000000000","message":"Done","commit_id":"05de92ca7a9e3132535f1b2184111fb75af61578"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"6f4ded9bafa8d985b6856dbd1b1ead862bdf914b","unresolved":false,"context_lines":[{"line_number":81,"context_line":"    @tc.attr(base.TAG_POSITIVE, base.TAG_BACKEND)"},{"line_number":82,"context_line":"    @ddt.data({\u0027version\u0027: \u00271.0\u0027, \u0027access_to\u0027: \"1.1.1.1\"},"},{"line_number":83,"context_line":"              {\u0027version\u0027: \u00272.9\u0027, \u0027access_to\u0027: \"1.1.1.1\"},"},{"line_number":84,"context_line":"              {\u0027version\u0027: LATEST_MICROVERSION, \u0027access_to\u0027: \"1.1.1.1\"},"},{"line_number":85,"context_line":"              {\u0027version\u0027: LATEST_MICROVERSION,"},{"line_number":86,"context_line":"               \u0027access_to\u0027: \"ad80::abaa:0:c2:2\"},"},{"line_number":87,"context_line":"              {\u0027version\u0027: LATEST_MICROVERSION, \u0027access_to\u0027: \"AD80:ABAA::\"},"}],"source_content_type":"text/x-python","patch_set":37,"id":"1a95cdbc_1d340bdc","line":84,"range":{"start_line":84,"start_character":61,"end_line":84,"end_character":68},"updated":"2016-10-08 15:44:35.000000000","message":"utils.rand_ip()","commit_id":"05de92ca7a9e3132535f1b2184111fb75af61578"},{"author":{"_account_id":23083,"name":"TommyLike","email":"tommylikehu@gmail.com","username":"TommyLike"},"change_message_id":"07c14a88a6ef7cb39974a1d65df7d98735dd2e51","unresolved":false,"context_lines":[{"line_number":81,"context_line":"    @tc.attr(base.TAG_POSITIVE, base.TAG_BACKEND)"},{"line_number":82,"context_line":"    @ddt.data({\u0027version\u0027: \u00271.0\u0027, \u0027access_to\u0027: \"1.1.1.1\"},"},{"line_number":83,"context_line":"              {\u0027version\u0027: \u00272.9\u0027, \u0027access_to\u0027: \"1.1.1.1\"},"},{"line_number":84,"context_line":"              {\u0027version\u0027: LATEST_MICROVERSION, \u0027access_to\u0027: \"1.1.1.1\"},"},{"line_number":85,"context_line":"              {\u0027version\u0027: LATEST_MICROVERSION,"},{"line_number":86,"context_line":"               \u0027access_to\u0027: \"ad80::abaa:0:c2:2\"},"},{"line_number":87,"context_line":"              {\u0027version\u0027: LATEST_MICROVERSION, \u0027access_to\u0027: \"AD80:ABAA::\"},"}],"source_content_type":"text/x-python","patch_set":37,"id":"1a95cdbc_cf4d7bc5","line":84,"range":{"start_line":84,"start_character":61,"end_line":84,"end_character":68},"in_reply_to":"1a95cdbc_1d340bdc","updated":"2016-10-10 08:04:53.000000000","message":"Done","commit_id":"05de92ca7a9e3132535f1b2184111fb75af61578"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"6f4ded9bafa8d985b6856dbd1b1ead862bdf914b","unresolved":false,"context_lines":[{"line_number":83,"context_line":"              {\u0027version\u0027: \u00272.9\u0027, \u0027access_to\u0027: \"1.1.1.1\"},"},{"line_number":84,"context_line":"              {\u0027version\u0027: LATEST_MICROVERSION, \u0027access_to\u0027: \"1.1.1.1\"},"},{"line_number":85,"context_line":"              {\u0027version\u0027: LATEST_MICROVERSION,"},{"line_number":86,"context_line":"               \u0027access_to\u0027: \"ad80::abaa:0:c2:2\"},"},{"line_number":87,"context_line":"              {\u0027version\u0027: LATEST_MICROVERSION, \u0027access_to\u0027: \"AD80:ABAA::\"},"},{"line_number":88,"context_line":"              {\u0027version\u0027: \u00272.23\u0027, \u0027access_to\u0027: \"ad80::abaa:0:c2:2\"},)"},{"line_number":89,"context_line":"    @ddt.unpack"}],"source_content_type":"text/x-python","patch_set":37,"id":"1a95cdbc_9d565b04","line":86,"range":{"start_line":86,"start_character":29,"end_line":86,"end_character":47},"updated":"2016-10-08 15:44:35.000000000","message":"add a random_ipv6 generator too..","commit_id":"05de92ca7a9e3132535f1b2184111fb75af61578"},{"author":{"_account_id":23083,"name":"TommyLike","email":"tommylikehu@gmail.com","username":"TommyLike"},"change_message_id":"07c14a88a6ef7cb39974a1d65df7d98735dd2e51","unresolved":false,"context_lines":[{"line_number":83,"context_line":"              {\u0027version\u0027: \u00272.9\u0027, \u0027access_to\u0027: \"1.1.1.1\"},"},{"line_number":84,"context_line":"              {\u0027version\u0027: LATEST_MICROVERSION, \u0027access_to\u0027: \"1.1.1.1\"},"},{"line_number":85,"context_line":"              {\u0027version\u0027: LATEST_MICROVERSION,"},{"line_number":86,"context_line":"               \u0027access_to\u0027: \"ad80::abaa:0:c2:2\"},"},{"line_number":87,"context_line":"              {\u0027version\u0027: LATEST_MICROVERSION, \u0027access_to\u0027: \"AD80:ABAA::\"},"},{"line_number":88,"context_line":"              {\u0027version\u0027: \u00272.23\u0027, \u0027access_to\u0027: \"ad80::abaa:0:c2:2\"},)"},{"line_number":89,"context_line":"    @ddt.unpack"}],"source_content_type":"text/x-python","patch_set":37,"id":"1a95cdbc_de11aa53","line":86,"range":{"start_line":86,"start_character":29,"end_line":86,"end_character":47},"in_reply_to":"1a95cdbc_9d565b04","updated":"2016-10-10 08:04:53.000000000","message":"Done","commit_id":"05de92ca7a9e3132535f1b2184111fb75af61578"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"6f4ded9bafa8d985b6856dbd1b1ead862bdf914b","unresolved":false,"context_lines":[{"line_number":126,"context_line":"                rule_id\u003drule[\"id\"], share_id\u003dself.share[\u0027id\u0027], version\u003dversion)"},{"line_number":127,"context_line":""},{"line_number":128,"context_line":"    @tc.attr(base.TAG_POSITIVE, base.TAG_BACKEND)"},{"line_number":129,"context_line":"    @ddt.data({\u0027version\u0027: \u00271.0\u0027, \u0027access_to\u0027: \"1.2.3.4/32\"},"},{"line_number":130,"context_line":"              {\u0027version\u0027: \u00272.9\u0027, \u0027access_to\u0027: \"1.2.3.4/32\"},"},{"line_number":131,"context_line":"              {\u0027version\u0027: LATEST_MICROVERSION, \u0027access_to\u0027: \"1.2.3.4/32\"},"},{"line_number":132,"context_line":"              {\u0027version\u0027: LATEST_MICROVERSION, \u0027access_to\u0027: \"AD80::/36\"},"}],"source_content_type":"text/x-python","patch_set":37,"id":"1a95cdbc_fdad9fe9","line":129,"range":{"start_line":129,"start_character":47,"end_line":129,"end_character":57},"updated":"2016-10-08 15:44:35.000000000","message":"you can extend the rand_ip() method to take a kwarg called network\u003dFalse\n\n   def rand_ip(network\u003dFalse):\n    \"\"\"This uses the TEST-NET-3 range of reserved IP addresses.\n\n    Using this range, which are reserved solely for use in\n    documentation and example source code, should avoid any potential\n    conflicts in real-world testing.\n    \"\"\"\n    test_net_3 \u003d \u0027203.0.113.\u0027\n    final_octet \u003d six.text_type(random.randint(0, 255))\n    random_ip \u003d test_net_3 + final_octet\n    if network:\n       random_ip \u003d \u0027/\u0027.join(random_ip, six.text_type(random.randrange(2,32,2))\n    return random_ip","commit_id":"05de92ca7a9e3132535f1b2184111fb75af61578"},{"author":{"_account_id":23083,"name":"TommyLike","email":"tommylikehu@gmail.com","username":"TommyLike"},"change_message_id":"07c14a88a6ef7cb39974a1d65df7d98735dd2e51","unresolved":false,"context_lines":[{"line_number":126,"context_line":"                rule_id\u003drule[\"id\"], share_id\u003dself.share[\u0027id\u0027], version\u003dversion)"},{"line_number":127,"context_line":""},{"line_number":128,"context_line":"    @tc.attr(base.TAG_POSITIVE, base.TAG_BACKEND)"},{"line_number":129,"context_line":"    @ddt.data({\u0027version\u0027: \u00271.0\u0027, \u0027access_to\u0027: \"1.2.3.4/32\"},"},{"line_number":130,"context_line":"              {\u0027version\u0027: \u00272.9\u0027, \u0027access_to\u0027: \"1.2.3.4/32\"},"},{"line_number":131,"context_line":"              {\u0027version\u0027: LATEST_MICROVERSION, \u0027access_to\u0027: \"1.2.3.4/32\"},"},{"line_number":132,"context_line":"              {\u0027version\u0027: LATEST_MICROVERSION, \u0027access_to\u0027: \"AD80::/36\"},"}],"source_content_type":"text/x-python","patch_set":37,"id":"1a95cdbc_7e089628","line":129,"range":{"start_line":129,"start_character":47,"end_line":129,"end_character":57},"in_reply_to":"1a95cdbc_fdad9fe9","updated":"2016-10-10 08:04:53.000000000","message":"Done","commit_id":"05de92ca7a9e3132535f1b2184111fb75af61578"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"6f4ded9bafa8d985b6856dbd1b1ead862bdf914b","unresolved":false,"context_lines":[{"line_number":129,"context_line":"    @ddt.data({\u0027version\u0027: \u00271.0\u0027, \u0027access_to\u0027: \"1.2.3.4/32\"},"},{"line_number":130,"context_line":"              {\u0027version\u0027: \u00272.9\u0027, \u0027access_to\u0027: \"1.2.3.4/32\"},"},{"line_number":131,"context_line":"              {\u0027version\u0027: LATEST_MICROVERSION, \u0027access_to\u0027: \"1.2.3.4/32\"},"},{"line_number":132,"context_line":"              {\u0027version\u0027: LATEST_MICROVERSION, \u0027access_to\u0027: \"AD80::/36\"},"},{"line_number":133,"context_line":"              {\u0027version\u0027: LATEST_MICROVERSION, \u0027access_to\u0027: \"AD80:ABAA::/128\"},"},{"line_number":134,"context_line":"              {\u0027version\u0027: \u00272.23\u0027, \u0027access_to\u0027: \"AD80::/36\"},)"},{"line_number":135,"context_line":"    @ddt.unpack"}],"source_content_type":"text/x-python","patch_set":37,"id":"1a95cdbc_1db96b2e","line":132,"range":{"start_line":132,"start_character":61,"end_line":132,"end_character":70},"updated":"2016-10-08 15:44:35.000000000","message":"a random ipv6 network generator would be useful in the same fashion","commit_id":"05de92ca7a9e3132535f1b2184111fb75af61578"},{"author":{"_account_id":23083,"name":"TommyLike","email":"tommylikehu@gmail.com","username":"TommyLike"},"change_message_id":"07c14a88a6ef7cb39974a1d65df7d98735dd2e51","unresolved":false,"context_lines":[{"line_number":129,"context_line":"    @ddt.data({\u0027version\u0027: \u00271.0\u0027, \u0027access_to\u0027: \"1.2.3.4/32\"},"},{"line_number":130,"context_line":"              {\u0027version\u0027: \u00272.9\u0027, \u0027access_to\u0027: \"1.2.3.4/32\"},"},{"line_number":131,"context_line":"              {\u0027version\u0027: LATEST_MICROVERSION, \u0027access_to\u0027: \"1.2.3.4/32\"},"},{"line_number":132,"context_line":"              {\u0027version\u0027: LATEST_MICROVERSION, \u0027access_to\u0027: \"AD80::/36\"},"},{"line_number":133,"context_line":"              {\u0027version\u0027: LATEST_MICROVERSION, \u0027access_to\u0027: \"AD80:ABAA::/128\"},"},{"line_number":134,"context_line":"              {\u0027version\u0027: \u00272.23\u0027, \u0027access_to\u0027: \"AD80::/36\"},)"},{"line_number":135,"context_line":"    @ddt.unpack"}],"source_content_type":"text/x-python","patch_set":37,"id":"1a95cdbc_9e0ba223","line":132,"range":{"start_line":132,"start_character":61,"end_line":132,"end_character":70},"in_reply_to":"1a95cdbc_1db96b2e","updated":"2016-10-10 08:04:53.000000000","message":"Done","commit_id":"05de92ca7a9e3132535f1b2184111fb75af61578"},{"author":{"_account_id":14567,"name":"Rodrigo Barbieri","email":"rodrigo.barbieri2010@gmail.com","username":"ganso"},"change_message_id":"9268448f2855ae6e21bbbad4b811821d9e574530","unresolved":false,"context_lines":[{"line_number":83,"context_line":"               \u0027access_to\u0027: utils.rand_ip()},"},{"line_number":84,"context_line":"              {\u0027version\u0027: \u00272.9\u0027,"},{"line_number":85,"context_line":"               \u0027access_to\u0027: utils.rand_ip()},"},{"line_number":86,"context_line":"              {\u0027version\u0027: LATEST_MICROVERSION,"},{"line_number":87,"context_line":"               \u0027access_to\u0027: utils.rand_ip()},"},{"line_number":88,"context_line":"              {\u0027version\u0027: LATEST_MICROVERSION,"},{"line_number":89,"context_line":"               \u0027access_to\u0027: utils.rand_ipv6_ip()},"}],"source_content_type":"text/x-python","patch_set":53,"id":"1a6eadb0_b6211db7","line":86,"range":{"start_line":86,"start_character":15,"end_line":86,"end_character":46},"updated":"2016-12-19 15:04:34.000000000","message":"put latest last in order","commit_id":"b8e20971cf74fded7ad49816f8aa8a56da59c874"},{"author":{"_account_id":14567,"name":"Rodrigo Barbieri","email":"rodrigo.barbieri2010@gmail.com","username":"ganso"},"change_message_id":"9268448f2855ae6e21bbbad4b811821d9e574530","unresolved":false,"context_lines":[{"line_number":85,"context_line":"               \u0027access_to\u0027: utils.rand_ip()},"},{"line_number":86,"context_line":"              {\u0027version\u0027: LATEST_MICROVERSION,"},{"line_number":87,"context_line":"               \u0027access_to\u0027: utils.rand_ip()},"},{"line_number":88,"context_line":"              {\u0027version\u0027: LATEST_MICROVERSION,"},{"line_number":89,"context_line":"               \u0027access_to\u0027: utils.rand_ipv6_ip()},"},{"line_number":90,"context_line":"              {\u0027version\u0027: LATEST_MICROVERSION,"},{"line_number":91,"context_line":"               \u0027access_to\u0027: utils.rand_ipv6_ip()},"},{"line_number":92,"context_line":"              {\u0027version\u0027: \u00272.24\u0027,"},{"line_number":93,"context_line":"               \u0027access_to\u0027: utils.rand_ipv6_ip()},)"},{"line_number":94,"context_line":"    @ddt.unpack"}],"source_content_type":"text/x-python","patch_set":53,"id":"1a6eadb0_76486588","line":91,"range":{"start_line":88,"start_character":13,"end_line":91,"end_character":50},"updated":"2016-12-19 15:04:34.000000000","message":"repeated case","commit_id":"b8e20971cf74fded7ad49816f8aa8a56da59c874"},{"author":{"_account_id":14567,"name":"Rodrigo Barbieri","email":"rodrigo.barbieri2010@gmail.com","username":"ganso"},"change_message_id":"9268448f2855ae6e21bbbad4b811821d9e574530","unresolved":false,"context_lines":[{"line_number":89,"context_line":"               \u0027access_to\u0027: utils.rand_ipv6_ip()},"},{"line_number":90,"context_line":"              {\u0027version\u0027: LATEST_MICROVERSION,"},{"line_number":91,"context_line":"               \u0027access_to\u0027: utils.rand_ipv6_ip()},"},{"line_number":92,"context_line":"              {\u0027version\u0027: \u00272.24\u0027,"},{"line_number":93,"context_line":"               \u0027access_to\u0027: utils.rand_ipv6_ip()},)"},{"line_number":94,"context_line":"    @ddt.unpack"},{"line_number":95,"context_line":"    def test_create_delete_access_rules_with_one_ip(self, version,"},{"line_number":96,"context_line":"                                                    access_to):"}],"source_content_type":"text/x-python","patch_set":53,"id":"1a6eadb0_563a89e8","line":93,"range":{"start_line":92,"start_character":14,"end_line":93,"end_character":49},"updated":"2016-12-19 15:04:34.000000000","message":"test ipv4 in 2.24 as well","commit_id":"b8e20971cf74fded7ad49816f8aa8a56da59c874"},{"author":{"_account_id":14567,"name":"Rodrigo Barbieri","email":"rodrigo.barbieri2010@gmail.com","username":"ganso"},"change_message_id":"9268448f2855ae6e21bbbad4b811821d9e574530","unresolved":false,"context_lines":[{"line_number":133,"context_line":"    @tc.attr(base.TAG_POSITIVE, base.TAG_BACKEND)"},{"line_number":134,"context_line":"    @ddt.data({\u0027version\u0027: \u00271.0\u0027, \u0027access_to\u0027: utils.rand_ip(True)},"},{"line_number":135,"context_line":"              {\u0027version\u0027: \u00272.9\u0027, \u0027access_to\u0027: utils.rand_ip(True)},"},{"line_number":136,"context_line":"              {\u0027version\u0027: LATEST_MICROVERSION,"},{"line_number":137,"context_line":"               \u0027access_to\u0027: utils.rand_ip(True)},"},{"line_number":138,"context_line":"              {\u0027version\u0027: LATEST_MICROVERSION,"},{"line_number":139,"context_line":"               \u0027access_to\u0027: utils.rand_ipv6_ip(True)},"}],"source_content_type":"text/x-python","patch_set":53,"id":"1a6eadb0_1925a2ad","line":136,"range":{"start_line":136,"start_character":27,"end_line":136,"end_character":46},"updated":"2016-12-19 15:04:34.000000000","message":"put latest last in order","commit_id":"b8e20971cf74fded7ad49816f8aa8a56da59c874"},{"author":{"_account_id":14567,"name":"Rodrigo Barbieri","email":"rodrigo.barbieri2010@gmail.com","username":"ganso"},"change_message_id":"9268448f2855ae6e21bbbad4b811821d9e574530","unresolved":false,"context_lines":[{"line_number":135,"context_line":"              {\u0027version\u0027: \u00272.9\u0027, \u0027access_to\u0027: utils.rand_ip(True)},"},{"line_number":136,"context_line":"              {\u0027version\u0027: LATEST_MICROVERSION,"},{"line_number":137,"context_line":"               \u0027access_to\u0027: utils.rand_ip(True)},"},{"line_number":138,"context_line":"              {\u0027version\u0027: LATEST_MICROVERSION,"},{"line_number":139,"context_line":"               \u0027access_to\u0027: utils.rand_ipv6_ip(True)},"},{"line_number":140,"context_line":"              {\u0027version\u0027: LATEST_MICROVERSION,"},{"line_number":141,"context_line":"               \u0027access_to\u0027: utils.rand_ipv6_ip(True)},"},{"line_number":142,"context_line":"              {\u0027version\u0027: \u00272.24\u0027,"},{"line_number":143,"context_line":"               \u0027access_to\u0027: utils.rand_ipv6_ip(True)},)"},{"line_number":144,"context_line":"    @ddt.unpack"}],"source_content_type":"text/x-python","patch_set":53,"id":"1a6eadb0_99129257","line":141,"range":{"start_line":138,"start_character":4,"end_line":141,"end_character":54},"updated":"2016-12-19 15:04:34.000000000","message":"repeated","commit_id":"b8e20971cf74fded7ad49816f8aa8a56da59c874"},{"author":{"_account_id":14567,"name":"Rodrigo Barbieri","email":"rodrigo.barbieri2010@gmail.com","username":"ganso"},"change_message_id":"9268448f2855ae6e21bbbad4b811821d9e574530","unresolved":false,"context_lines":[{"line_number":139,"context_line":"               \u0027access_to\u0027: utils.rand_ipv6_ip(True)},"},{"line_number":140,"context_line":"              {\u0027version\u0027: LATEST_MICROVERSION,"},{"line_number":141,"context_line":"               \u0027access_to\u0027: utils.rand_ipv6_ip(True)},"},{"line_number":142,"context_line":"              {\u0027version\u0027: \u00272.24\u0027,"},{"line_number":143,"context_line":"               \u0027access_to\u0027: utils.rand_ipv6_ip(True)},)"},{"line_number":144,"context_line":"    @ddt.unpack"},{"line_number":145,"context_line":"    def test_create_delete_access_rule_with_cidr(self, version, access_to):"},{"line_number":146,"context_line":""}],"source_content_type":"text/x-python","patch_set":53,"id":"1a6eadb0_392a5e7f","line":143,"range":{"start_line":142,"start_character":15,"end_line":143,"end_character":55},"updated":"2016-12-19 15:04:34.000000000","message":"test ipv4 in 2.24 as well","commit_id":"b8e20971cf74fded7ad49816f8aa8a56da59c874"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"0ecaaaf3bb3ada87eb00d2198b20a2df627a7fcc","unresolved":false,"context_lines":[{"line_number":134,"context_line":"    @ddt.data({\u0027version\u0027: \u00271.0\u0027, \u0027access_to\u0027: utils.rand_ip(True)},"},{"line_number":135,"context_line":"              {\u0027version\u0027: \u00272.9\u0027, \u0027access_to\u0027: utils.rand_ip(True)},"},{"line_number":136,"context_line":"              {\u0027version\u0027: \u00272.28\u0027,"},{"line_number":137,"context_line":"               \u0027access_to\u0027: utils.rand_ip(True)},"},{"line_number":138,"context_line":"              {\u0027version\u0027: \u00272.28\u0027,"},{"line_number":139,"context_line":"               \u0027access_to\u0027: utils.rand_ipv6_ip(True)},"},{"line_number":140,"context_line":"              {\u0027version\u0027: LATEST_MICROVERSION,"}],"source_content_type":"text/x-python","patch_set":59,"id":"5a3905b3_392a4f2d","line":137,"range":{"start_line":137,"start_character":34,"end_line":137,"end_character":47},"updated":"2017-01-20 02:12:15.000000000","message":"always send kwargs as kwargs, here and above","commit_id":"fb8f04c5481877a7066d43741afc9ea80c7750ef"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"0ecaaaf3bb3ada87eb00d2198b20a2df627a7fcc","unresolved":false,"context_lines":[{"line_number":136,"context_line":"              {\u0027version\u0027: \u00272.28\u0027,"},{"line_number":137,"context_line":"               \u0027access_to\u0027: utils.rand_ip(True)},"},{"line_number":138,"context_line":"              {\u0027version\u0027: \u00272.28\u0027,"},{"line_number":139,"context_line":"               \u0027access_to\u0027: utils.rand_ipv6_ip(True)},"},{"line_number":140,"context_line":"              {\u0027version\u0027: LATEST_MICROVERSION,"},{"line_number":141,"context_line":"               \u0027access_to\u0027: utils.rand_ip(True)},"},{"line_number":142,"context_line":"              {\u0027version\u0027: LATEST_MICROVERSION,"}],"source_content_type":"text/x-python","patch_set":59,"id":"5a3905b3_5921db4c","line":139,"range":{"start_line":139,"start_character":28,"end_line":139,"end_character":51},"updated":"2017-01-20 02:12:15.000000000","message":"same here and below","commit_id":"fb8f04c5481877a7066d43741afc9ea80c7750ef"},{"author":{"_account_id":8851,"name":"Valeriy Ponomaryov","email":"kiparis.kh@gmail.com","username":"vponomaryov"},"change_message_id":"c5498592a04933cbe0d20cc8cffe29bb410fad39","unresolved":false,"context_lines":[{"line_number":90,"context_line":"              {\u0027version\u0027: LATEST_MICROVERSION,"},{"line_number":91,"context_line":"               \u0027access_to\u0027: utils.rand_ip()},"},{"line_number":92,"context_line":"              {\u0027version\u0027: LATEST_MICROVERSION,"},{"line_number":93,"context_line":"               \u0027access_to\u0027: utils.rand_ipv6_ip()},)"},{"line_number":94,"context_line":"    @ddt.unpack"},{"line_number":95,"context_line":"    def test_create_delete_access_rules_with_one_ip(self, version,"},{"line_number":96,"context_line":"                                                    access_to):"}],"source_content_type":"text/x-python","patch_set":63,"id":"3a461143_b51682a5","line":93,"updated":"2017-01-25 14:11:31.000000000","message":"For the moment, you have duplication of tests here. You should have excluded duplicated values. Now \"LATEST_MICROVERSION\" is \"2.33\". Same below.","commit_id":"da86424cc4c019e96233db3c1d8f2558823c130e"},{"author":{"_account_id":23083,"name":"TommyLike","email":"tommylikehu@gmail.com","username":"TommyLike"},"change_message_id":"26e2c96a19820c210340154c3556961cfd29b0b7","unresolved":false,"context_lines":[{"line_number":90,"context_line":"              {\u0027version\u0027: LATEST_MICROVERSION,"},{"line_number":91,"context_line":"               \u0027access_to\u0027: utils.rand_ip()},"},{"line_number":92,"context_line":"              {\u0027version\u0027: LATEST_MICROVERSION,"},{"line_number":93,"context_line":"               \u0027access_to\u0027: utils.rand_ipv6_ip()},)"},{"line_number":94,"context_line":"    @ddt.unpack"},{"line_number":95,"context_line":"    def test_create_delete_access_rules_with_one_ip(self, version,"},{"line_number":96,"context_line":"                                                    access_to):"}],"source_content_type":"text/x-python","patch_set":63,"id":"3a461143_d0cea059","line":93,"in_reply_to":"3a461143_b51682a5","updated":"2017-01-26 00:59:49.000000000","message":"Can we make them stay? the 2.33 and LASTEST_MICROVERSION could be the start and end version check for these testcases.","commit_id":"da86424cc4c019e96233db3c1d8f2558823c130e"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"77ee7fdd3cd8c905edc43b14ae63086ff0809523","unresolved":false,"context_lines":[{"line_number":79,"context_line":"        cls.access_to \u003d \"2.2.2.2\""},{"line_number":80,"context_line":""},{"line_number":81,"context_line":"    @tc.attr(base.TAG_POSITIVE, base.TAG_BACKEND)"},{"line_number":82,"context_line":"    @ddt.data({\u0027version\u0027: \u00271.0\u0027,"},{"line_number":83,"context_line":"               \u0027access_to\u0027: utils.rand_ip()},"},{"line_number":84,"context_line":"              {\u0027version\u0027: \u00272.9\u0027,"},{"line_number":85,"context_line":"               \u0027access_to\u0027: utils.rand_ip()},"},{"line_number":86,"context_line":"              {\u0027version\u0027: \u00272.33\u0027,"},{"line_number":87,"context_line":"               \u0027access_to\u0027: utils.rand_ip()},"},{"line_number":88,"context_line":"              {\u0027version\u0027: \u00272.33\u0027,"},{"line_number":89,"context_line":"               \u0027access_to\u0027: utils.rand_ipv6_ip()},"},{"line_number":90,"context_line":"              {\u0027version\u0027: LATEST_MICROVERSION,"},{"line_number":91,"context_line":"               \u0027access_to\u0027: utils.rand_ip()},"},{"line_number":92,"context_line":"              {\u0027version\u0027: LATEST_MICROVERSION,"},{"line_number":93,"context_line":"               \u0027access_to\u0027: utils.rand_ipv6_ip()},)"},{"line_number":94,"context_line":"    @ddt.unpack"},{"line_number":95,"context_line":"    def test_create_delete_access_rules_with_one_ip(self, version,"},{"line_number":96,"context_line":"                                                    access_to):"}],"source_content_type":"text/x-python","patch_set":65,"id":"3a461143_b792e355","line":93,"range":{"start_line":82,"start_character":14,"end_line":93,"end_character":51},"updated":"2017-01-26 05:52:48.000000000","message":"I guess Valeriy\u0027s point was that for a while \u00272.33\u0027 would be our LATEST_MICROVERSION and we\u0027d be running these tests twice. Ofcourse we can avoid this like this, if it\u0027s worth it\n\n\n        @ddt.data(*itertools.chain(\n\n                itertools.product({\u00271.0\u0027, \u00272.9\u0027, \u00272.33\u0027, LATEST_MICROVERSION}, \n                      {utils.rand_ip()}),\n                itertools.product({\u00272.9\u0027, \u00272.33\u0027, LATEST_MICROVERSION}, \n                     {utils.rand_ipv6_ip()})\n        ))\n        @ddt.unpack\n        def test_create_delete_access_rules_with_one_ip(self, version, access_to):","commit_id":"7e97e7b051f3f610ff2457f79e6f85358a7bd1cc"},{"author":{"_account_id":23083,"name":"TommyLike","email":"tommylikehu@gmail.com","username":"TommyLike"},"change_message_id":"6030aabcb4f7b5293005363f603797e5cd616aac","unresolved":false,"context_lines":[{"line_number":79,"context_line":"        cls.access_to \u003d \"2.2.2.2\""},{"line_number":80,"context_line":""},{"line_number":81,"context_line":"    @tc.attr(base.TAG_POSITIVE, base.TAG_BACKEND)"},{"line_number":82,"context_line":"    @ddt.data({\u0027version\u0027: \u00271.0\u0027,"},{"line_number":83,"context_line":"               \u0027access_to\u0027: utils.rand_ip()},"},{"line_number":84,"context_line":"              {\u0027version\u0027: \u00272.9\u0027,"},{"line_number":85,"context_line":"               \u0027access_to\u0027: utils.rand_ip()},"},{"line_number":86,"context_line":"              {\u0027version\u0027: \u00272.33\u0027,"},{"line_number":87,"context_line":"               \u0027access_to\u0027: utils.rand_ip()},"},{"line_number":88,"context_line":"              {\u0027version\u0027: \u00272.33\u0027,"},{"line_number":89,"context_line":"               \u0027access_to\u0027: utils.rand_ipv6_ip()},"},{"line_number":90,"context_line":"              {\u0027version\u0027: LATEST_MICROVERSION,"},{"line_number":91,"context_line":"               \u0027access_to\u0027: utils.rand_ip()},"},{"line_number":92,"context_line":"              {\u0027version\u0027: LATEST_MICROVERSION,"},{"line_number":93,"context_line":"               \u0027access_to\u0027: utils.rand_ipv6_ip()},)"},{"line_number":94,"context_line":"    @ddt.unpack"},{"line_number":95,"context_line":"    def test_create_delete_access_rules_with_one_ip(self, version,"},{"line_number":96,"context_line":"                                                    access_to):"}],"source_content_type":"text/x-python","patch_set":65,"id":"3a461143_4d269269","line":93,"range":{"start_line":82,"start_character":14,"end_line":93,"end_character":51},"in_reply_to":"3a461143_b792e355","updated":"2017-01-26 07:16:45.000000000","message":"This is unbelievable! thanks gouthamr","commit_id":"7e97e7b051f3f610ff2457f79e6f85358a7bd1cc"},{"author":{"_account_id":14567,"name":"Rodrigo Barbieri","email":"rodrigo.barbieri2010@gmail.com","username":"ganso"},"change_message_id":"99a0c69e677a7794cbb3e8dad6c19c3e7245d785","unresolved":false,"context_lines":[{"line_number":80,"context_line":""},{"line_number":81,"context_line":"    @tc.attr(base.TAG_POSITIVE, base.TAG_BACKEND)"},{"line_number":82,"context_line":"    @ddt.data(*itertools.chain("},{"line_number":83,"context_line":"        itertools.product({\u00271.0\u0027, \u00272.9\u0027, \u00272.33\u0027, LATEST_MICROVERSION},"},{"line_number":84,"context_line":"                          {utils.rand_ip()}),"},{"line_number":85,"context_line":"        itertools.product({\u00272.33\u0027, LATEST_MICROVERSION},"},{"line_number":86,"context_line":"                          {utils.rand_ipv6_ip()})"}],"source_content_type":"text/x-python","patch_set":67,"id":"3a461143_a54f0691","line":83,"range":{"start_line":83,"start_character":8,"end_line":83,"end_character":17},"updated":"2017-01-26 10:55:38.000000000","message":"missing import","commit_id":"b11778ff5161abf8b9ae1ffd6c1916bc632216dc"},{"author":{"_account_id":8851,"name":"Valeriy Ponomaryov","email":"kiparis.kh@gmail.com","username":"vponomaryov"},"change_message_id":"39906365681f355ed618f6dd5d786b5f661eea3f","unresolved":false,"context_lines":[{"line_number":126,"context_line":"                rule_id\u003drule[\"id\"], share_id\u003dself.share[\u0027id\u0027], version\u003dversion)"},{"line_number":127,"context_line":""},{"line_number":128,"context_line":"    @tc.attr(base.TAG_POSITIVE, base.TAG_BACKEND)"},{"line_number":129,"context_line":"    @ddt.data({\u0027version\u0027: \u00271.0\u0027, \u0027access_to\u0027: utils.rand_ip(network\u003dTrue)},"},{"line_number":130,"context_line":"              {\u0027version\u0027: \u00272.9\u0027, \u0027access_to\u0027: utils.rand_ip(network\u003dTrue)},"},{"line_number":131,"context_line":"              {\u0027version\u0027: \u00272.33\u0027,"},{"line_number":132,"context_line":"               \u0027access_to\u0027: utils.rand_ip(network\u003dTrue)},"},{"line_number":133,"context_line":"              {\u0027version\u0027: \u00272.33\u0027,"},{"line_number":134,"context_line":"               \u0027access_to\u0027: utils.rand_ipv6_ip(network\u003dTrue)},"},{"line_number":135,"context_line":"              {\u0027version\u0027: LATEST_MICROVERSION,"},{"line_number":136,"context_line":"               \u0027access_to\u0027: utils.rand_ip(network\u003dTrue)},"},{"line_number":137,"context_line":"              {\u0027version\u0027: LATEST_MICROVERSION,"},{"line_number":138,"context_line":"               \u0027access_to\u0027: utils.rand_ipv6_ip(network\u003dTrue)},)"},{"line_number":139,"context_line":"    @ddt.unpack"},{"line_number":140,"context_line":"    def test_create_delete_access_rule_with_cidr(self, version, access_to):"},{"line_number":141,"context_line":""},{"line_number":142,"context_line":"        # create rule"}],"source_content_type":"text/x-python","patch_set":68,"id":"3a461143_8021d8a1","line":139,"range":{"start_line":129,"start_character":0,"end_line":139,"end_character":15},"updated":"2017-01-27 18:23:45.000000000","message":"This should have been changed too as well as above test.","commit_id":"73c2fea716bfcacf99ba5ad5dce4d43c19ed9ed7"},{"author":{"_account_id":9003,"name":"Tom Barron","email":"tpb@dyncloud.net","username":"tbarron"},"change_message_id":"77df5e6eedd51649f8682b08b5c3301e225bbfd9","unresolved":false,"context_lines":[{"line_number":93,"context_line":""},{"line_number":94,"context_line":"    @tc.attr(base.TAG_POSITIVE, base.TAG_BACKEND)"},{"line_number":95,"context_line":"    @ddt.data(*itertools.chain("},{"line_number":96,"context_line":"        itertools.product({\u00271.0\u0027, \u00272.9\u0027, \u00272.34\u0027, LATEST_MICROVERSION},"},{"line_number":97,"context_line":"                          {utils.rand_ip()}),"},{"line_number":98,"context_line":"        itertools.product({\u00272.34\u0027, LATEST_MICROVERSION},"},{"line_number":99,"context_line":"                          {utils.rand_ipv6_ip()})"}],"source_content_type":"text/x-python","patch_set":75,"id":"3f1d235d_f4de42d8","line":96,"range":{"start_line":96,"start_character":41,"end_line":96,"end_character":47},"updated":"2017-07-05 18:54:54.000000000","message":"2.35 ?","commit_id":"4a98a2e598359e120fe6ed9b9b0bd9ddaceb5778"},{"author":{"_account_id":9003,"name":"Tom Barron","email":"tpb@dyncloud.net","username":"tbarron"},"change_message_id":"77df5e6eedd51649f8682b08b5c3301e225bbfd9","unresolved":false,"context_lines":[{"line_number":93,"context_line":""},{"line_number":94,"context_line":"    @tc.attr(base.TAG_POSITIVE, base.TAG_BACKEND)"},{"line_number":95,"context_line":"    @ddt.data(*itertools.chain("},{"line_number":96,"context_line":"        itertools.product({\u00271.0\u0027, \u00272.9\u0027, \u00272.34\u0027, LATEST_MICROVERSION},"},{"line_number":97,"context_line":"                          {utils.rand_ip()}),"},{"line_number":98,"context_line":"        itertools.product({\u00272.34\u0027, LATEST_MICROVERSION},"},{"line_number":99,"context_line":"                          {utils.rand_ipv6_ip()})"}],"source_content_type":"text/x-python","patch_set":75,"id":"3f1d235d_14f1be95","line":96,"range":{"start_line":96,"start_character":42,"end_line":96,"end_character":47},"updated":"2017-07-05 18:54:54.000000000","message":"Should this be one less than the latest microversion?","commit_id":"4a98a2e598359e120fe6ed9b9b0bd9ddaceb5778"},{"author":{"_account_id":15100,"name":"zhongjun","email":"jun.zhongjun2@gmail.com","username":"zhongjun2"},"change_message_id":"e1c9e85b2bed4f340d3ac2d0a80bee247881c74c","unresolved":false,"context_lines":[{"line_number":93,"context_line":""},{"line_number":94,"context_line":"    @tc.attr(base.TAG_POSITIVE, base.TAG_BACKEND)"},{"line_number":95,"context_line":"    @ddt.data(*itertools.chain("},{"line_number":96,"context_line":"        itertools.product({\u00271.0\u0027, \u00272.9\u0027, \u00272.34\u0027, LATEST_MICROVERSION},"},{"line_number":97,"context_line":"                          {utils.rand_ip()}),"},{"line_number":98,"context_line":"        itertools.product({\u00272.34\u0027, LATEST_MICROVERSION},"},{"line_number":99,"context_line":"                          {utils.rand_ipv6_ip()})"}],"source_content_type":"text/x-python","patch_set":75,"id":"3f1d235d_c1ddb8e0","line":96,"range":{"start_line":96,"start_character":42,"end_line":96,"end_character":47},"in_reply_to":"3f1d235d_14f1be95","updated":"2017-07-06 07:01:45.000000000","message":"Done","commit_id":"4a98a2e598359e120fe6ed9b9b0bd9ddaceb5778"},{"author":{"_account_id":15100,"name":"zhongjun","email":"jun.zhongjun2@gmail.com","username":"zhongjun2"},"change_message_id":"e1c9e85b2bed4f340d3ac2d0a80bee247881c74c","unresolved":false,"context_lines":[{"line_number":93,"context_line":""},{"line_number":94,"context_line":"    @tc.attr(base.TAG_POSITIVE, base.TAG_BACKEND)"},{"line_number":95,"context_line":"    @ddt.data(*itertools.chain("},{"line_number":96,"context_line":"        itertools.product({\u00271.0\u0027, \u00272.9\u0027, \u00272.34\u0027, LATEST_MICROVERSION},"},{"line_number":97,"context_line":"                          {utils.rand_ip()}),"},{"line_number":98,"context_line":"        itertools.product({\u00272.34\u0027, LATEST_MICROVERSION},"},{"line_number":99,"context_line":"                          {utils.rand_ipv6_ip()})"}],"source_content_type":"text/x-python","patch_set":75,"id":"3f1d235d_618ca4d6","line":96,"range":{"start_line":96,"start_character":41,"end_line":96,"end_character":47},"in_reply_to":"3f1d235d_f4de42d8","updated":"2017-07-06 07:01:45.000000000","message":"Done","commit_id":"4a98a2e598359e120fe6ed9b9b0bd9ddaceb5778"},{"author":{"_account_id":9003,"name":"Tom Barron","email":"tpb@dyncloud.net","username":"tbarron"},"change_message_id":"77df5e6eedd51649f8682b08b5c3301e225bbfd9","unresolved":false,"context_lines":[{"line_number":95,"context_line":"    @ddt.data(*itertools.chain("},{"line_number":96,"context_line":"        itertools.product({\u00271.0\u0027, \u00272.9\u0027, \u00272.34\u0027, LATEST_MICROVERSION},"},{"line_number":97,"context_line":"                          {utils.rand_ip()}),"},{"line_number":98,"context_line":"        itertools.product({\u00272.34\u0027, LATEST_MICROVERSION},"},{"line_number":99,"context_line":"                          {utils.rand_ipv6_ip()})"},{"line_number":100,"context_line":"    ))"},{"line_number":101,"context_line":"    @ddt.unpack"}],"source_content_type":"text/x-python","patch_set":75,"id":"3f1d235d_d42c6603","line":98,"range":{"start_line":98,"start_character":26,"end_line":98,"end_character":33},"updated":"2017-07-05 18:54:54.000000000","message":"2.35?","commit_id":"4a98a2e598359e120fe6ed9b9b0bd9ddaceb5778"},{"author":{"_account_id":9003,"name":"Tom Barron","email":"tpb@dyncloud.net","username":"tbarron"},"change_message_id":"77df5e6eedd51649f8682b08b5c3301e225bbfd9","unresolved":false,"context_lines":[{"line_number":95,"context_line":"    @ddt.data(*itertools.chain("},{"line_number":96,"context_line":"        itertools.product({\u00271.0\u0027, \u00272.9\u0027, \u00272.34\u0027, LATEST_MICROVERSION},"},{"line_number":97,"context_line":"                          {utils.rand_ip()}),"},{"line_number":98,"context_line":"        itertools.product({\u00272.34\u0027, LATEST_MICROVERSION},"},{"line_number":99,"context_line":"                          {utils.rand_ipv6_ip()})"},{"line_number":100,"context_line":"    ))"},{"line_number":101,"context_line":"    @ddt.unpack"}],"source_content_type":"text/x-python","patch_set":75,"id":"3f1d235d_d4f1066d","line":98,"range":{"start_line":98,"start_character":27,"end_line":98,"end_character":33},"updated":"2017-07-05 18:54:54.000000000","message":"ditto","commit_id":"4a98a2e598359e120fe6ed9b9b0bd9ddaceb5778"},{"author":{"_account_id":15100,"name":"zhongjun","email":"jun.zhongjun2@gmail.com","username":"zhongjun2"},"change_message_id":"e1c9e85b2bed4f340d3ac2d0a80bee247881c74c","unresolved":false,"context_lines":[{"line_number":95,"context_line":"    @ddt.data(*itertools.chain("},{"line_number":96,"context_line":"        itertools.product({\u00271.0\u0027, \u00272.9\u0027, \u00272.34\u0027, LATEST_MICROVERSION},"},{"line_number":97,"context_line":"                          {utils.rand_ip()}),"},{"line_number":98,"context_line":"        itertools.product({\u00272.34\u0027, LATEST_MICROVERSION},"},{"line_number":99,"context_line":"                          {utils.rand_ipv6_ip()})"},{"line_number":100,"context_line":"    ))"},{"line_number":101,"context_line":"    @ddt.unpack"}],"source_content_type":"text/x-python","patch_set":75,"id":"3f1d235d_a1d87cee","line":98,"range":{"start_line":98,"start_character":26,"end_line":98,"end_character":33},"in_reply_to":"3f1d235d_d42c6603","updated":"2017-07-06 07:01:45.000000000","message":"Done","commit_id":"4a98a2e598359e120fe6ed9b9b0bd9ddaceb5778"},{"author":{"_account_id":15100,"name":"zhongjun","email":"jun.zhongjun2@gmail.com","username":"zhongjun2"},"change_message_id":"e1c9e85b2bed4f340d3ac2d0a80bee247881c74c","unresolved":false,"context_lines":[{"line_number":95,"context_line":"    @ddt.data(*itertools.chain("},{"line_number":96,"context_line":"        itertools.product({\u00271.0\u0027, \u00272.9\u0027, \u00272.34\u0027, LATEST_MICROVERSION},"},{"line_number":97,"context_line":"                          {utils.rand_ip()}),"},{"line_number":98,"context_line":"        itertools.product({\u00272.34\u0027, LATEST_MICROVERSION},"},{"line_number":99,"context_line":"                          {utils.rand_ipv6_ip()})"},{"line_number":100,"context_line":"    ))"},{"line_number":101,"context_line":"    @ddt.unpack"}],"source_content_type":"text/x-python","patch_set":75,"id":"3f1d235d_819100f4","line":98,"range":{"start_line":98,"start_character":27,"end_line":98,"end_character":33},"in_reply_to":"3f1d235d_d4f1066d","updated":"2017-07-06 07:01:45.000000000","message":"Done","commit_id":"4a98a2e598359e120fe6ed9b9b0bd9ddaceb5778"},{"author":{"_account_id":9003,"name":"Tom Barron","email":"tpb@dyncloud.net","username":"tbarron"},"change_message_id":"77df5e6eedd51649f8682b08b5c3301e225bbfd9","unresolved":false,"context_lines":[{"line_number":145,"context_line":""},{"line_number":146,"context_line":"    @tc.attr(base.TAG_POSITIVE, base.TAG_BACKEND)"},{"line_number":147,"context_line":"    @ddt.data(*itertools.chain("},{"line_number":148,"context_line":"        itertools.product({\u00271.0\u0027, \u00272.9\u0027, \u00272.34\u0027, LATEST_MICROVERSION},"},{"line_number":149,"context_line":"                          {utils.rand_ip(network\u003dTrue)}),"},{"line_number":150,"context_line":"        itertools.product({\u00272.34\u0027, LATEST_MICROVERSION},"},{"line_number":151,"context_line":"                          {utils.rand_ipv6_ip(network\u003dTrue)})"}],"source_content_type":"text/x-python","patch_set":75,"id":"3f1d235d_14465ec1","line":148,"range":{"start_line":148,"start_character":41,"end_line":148,"end_character":47},"updated":"2017-07-05 18:54:54.000000000","message":"ditto","commit_id":"4a98a2e598359e120fe6ed9b9b0bd9ddaceb5778"},{"author":{"_account_id":9003,"name":"Tom Barron","email":"tpb@dyncloud.net","username":"tbarron"},"change_message_id":"77df5e6eedd51649f8682b08b5c3301e225bbfd9","unresolved":false,"context_lines":[{"line_number":145,"context_line":""},{"line_number":146,"context_line":"    @tc.attr(base.TAG_POSITIVE, base.TAG_BACKEND)"},{"line_number":147,"context_line":"    @ddt.data(*itertools.chain("},{"line_number":148,"context_line":"        itertools.product({\u00271.0\u0027, \u00272.9\u0027, \u00272.34\u0027, LATEST_MICROVERSION},"},{"line_number":149,"context_line":"                          {utils.rand_ip(network\u003dTrue)}),"},{"line_number":150,"context_line":"        itertools.product({\u00272.34\u0027, LATEST_MICROVERSION},"},{"line_number":151,"context_line":"                          {utils.rand_ipv6_ip(network\u003dTrue)})"}],"source_content_type":"text/x-python","patch_set":75,"id":"3f1d235d_b4f68a62","line":148,"range":{"start_line":148,"start_character":41,"end_line":148,"end_character":48},"updated":"2017-07-05 18:54:54.000000000","message":"ditto","commit_id":"4a98a2e598359e120fe6ed9b9b0bd9ddaceb5778"},{"author":{"_account_id":15100,"name":"zhongjun","email":"jun.zhongjun2@gmail.com","username":"zhongjun2"},"change_message_id":"e1c9e85b2bed4f340d3ac2d0a80bee247881c74c","unresolved":false,"context_lines":[{"line_number":145,"context_line":""},{"line_number":146,"context_line":"    @tc.attr(base.TAG_POSITIVE, base.TAG_BACKEND)"},{"line_number":147,"context_line":"    @ddt.data(*itertools.chain("},{"line_number":148,"context_line":"        itertools.product({\u00271.0\u0027, \u00272.9\u0027, \u00272.34\u0027, LATEST_MICROVERSION},"},{"line_number":149,"context_line":"                          {utils.rand_ip(network\u003dTrue)}),"},{"line_number":150,"context_line":"        itertools.product({\u00272.34\u0027, LATEST_MICROVERSION},"},{"line_number":151,"context_line":"                          {utils.rand_ipv6_ip(network\u003dTrue)})"}],"source_content_type":"text/x-python","patch_set":75,"id":"3f1d235d_019e1006","line":148,"range":{"start_line":148,"start_character":41,"end_line":148,"end_character":47},"in_reply_to":"3f1d235d_14465ec1","updated":"2017-07-06 07:01:45.000000000","message":"Done","commit_id":"4a98a2e598359e120fe6ed9b9b0bd9ddaceb5778"},{"author":{"_account_id":15100,"name":"zhongjun","email":"jun.zhongjun2@gmail.com","username":"zhongjun2"},"change_message_id":"e1c9e85b2bed4f340d3ac2d0a80bee247881c74c","unresolved":false,"context_lines":[{"line_number":145,"context_line":""},{"line_number":146,"context_line":"    @tc.attr(base.TAG_POSITIVE, base.TAG_BACKEND)"},{"line_number":147,"context_line":"    @ddt.data(*itertools.chain("},{"line_number":148,"context_line":"        itertools.product({\u00271.0\u0027, \u00272.9\u0027, \u00272.34\u0027, LATEST_MICROVERSION},"},{"line_number":149,"context_line":"                          {utils.rand_ip(network\u003dTrue)}),"},{"line_number":150,"context_line":"        itertools.product({\u00272.34\u0027, LATEST_MICROVERSION},"},{"line_number":151,"context_line":"                          {utils.rand_ipv6_ip(network\u003dTrue)})"}],"source_content_type":"text/x-python","patch_set":75,"id":"3f1d235d_e1a0b444","line":148,"range":{"start_line":148,"start_character":41,"end_line":148,"end_character":48},"in_reply_to":"3f1d235d_b4f68a62","updated":"2017-07-06 07:01:45.000000000","message":"Done","commit_id":"4a98a2e598359e120fe6ed9b9b0bd9ddaceb5778"},{"author":{"_account_id":9003,"name":"Tom Barron","email":"tpb@dyncloud.net","username":"tbarron"},"change_message_id":"77df5e6eedd51649f8682b08b5c3301e225bbfd9","unresolved":false,"context_lines":[{"line_number":147,"context_line":"    @ddt.data(*itertools.chain("},{"line_number":148,"context_line":"        itertools.product({\u00271.0\u0027, \u00272.9\u0027, \u00272.34\u0027, LATEST_MICROVERSION},"},{"line_number":149,"context_line":"                          {utils.rand_ip(network\u003dTrue)}),"},{"line_number":150,"context_line":"        itertools.product({\u00272.34\u0027, LATEST_MICROVERSION},"},{"line_number":151,"context_line":"                          {utils.rand_ipv6_ip(network\u003dTrue)})"},{"line_number":152,"context_line":"    ))"},{"line_number":153,"context_line":"    @ddt.unpack"}],"source_content_type":"text/x-python","patch_set":75,"id":"3f1d235d_94e70ead","line":150,"range":{"start_line":150,"start_character":27,"end_line":150,"end_character":35},"updated":"2017-07-05 18:54:54.000000000","message":"ditto","commit_id":"4a98a2e598359e120fe6ed9b9b0bd9ddaceb5778"},{"author":{"_account_id":9003,"name":"Tom Barron","email":"tpb@dyncloud.net","username":"tbarron"},"change_message_id":"77df5e6eedd51649f8682b08b5c3301e225bbfd9","unresolved":false,"context_lines":[{"line_number":147,"context_line":"    @ddt.data(*itertools.chain("},{"line_number":148,"context_line":"        itertools.product({\u00271.0\u0027, \u00272.9\u0027, \u00272.34\u0027, LATEST_MICROVERSION},"},{"line_number":149,"context_line":"                          {utils.rand_ip(network\u003dTrue)}),"},{"line_number":150,"context_line":"        itertools.product({\u00272.34\u0027, LATEST_MICROVERSION},"},{"line_number":151,"context_line":"                          {utils.rand_ipv6_ip(network\u003dTrue)})"},{"line_number":152,"context_line":"    ))"},{"line_number":153,"context_line":"    @ddt.unpack"}],"source_content_type":"text/x-python","patch_set":75,"id":"3f1d235d_f442c2aa","line":150,"range":{"start_line":150,"start_character":27,"end_line":150,"end_character":33},"updated":"2017-07-05 18:54:54.000000000","message":"ditto","commit_id":"4a98a2e598359e120fe6ed9b9b0bd9ddaceb5778"},{"author":{"_account_id":15100,"name":"zhongjun","email":"jun.zhongjun2@gmail.com","username":"zhongjun2"},"change_message_id":"e1c9e85b2bed4f340d3ac2d0a80bee247881c74c","unresolved":false,"context_lines":[{"line_number":147,"context_line":"    @ddt.data(*itertools.chain("},{"line_number":148,"context_line":"        itertools.product({\u00271.0\u0027, \u00272.9\u0027, \u00272.34\u0027, LATEST_MICROVERSION},"},{"line_number":149,"context_line":"                          {utils.rand_ip(network\u003dTrue)}),"},{"line_number":150,"context_line":"        itertools.product({\u00272.34\u0027, LATEST_MICROVERSION},"},{"line_number":151,"context_line":"                          {utils.rand_ipv6_ip(network\u003dTrue)})"},{"line_number":152,"context_line":"    ))"},{"line_number":153,"context_line":"    @ddt.unpack"}],"source_content_type":"text/x-python","patch_set":75,"id":"3f1d235d_c18b78c0","line":150,"range":{"start_line":150,"start_character":27,"end_line":150,"end_character":35},"in_reply_to":"3f1d235d_94e70ead","updated":"2017-07-06 07:01:45.000000000","message":"Done","commit_id":"4a98a2e598359e120fe6ed9b9b0bd9ddaceb5778"},{"author":{"_account_id":15100,"name":"zhongjun","email":"jun.zhongjun2@gmail.com","username":"zhongjun2"},"change_message_id":"e1c9e85b2bed4f340d3ac2d0a80bee247881c74c","unresolved":false,"context_lines":[{"line_number":147,"context_line":"    @ddt.data(*itertools.chain("},{"line_number":148,"context_line":"        itertools.product({\u00271.0\u0027, \u00272.9\u0027, \u00272.34\u0027, LATEST_MICROVERSION},"},{"line_number":149,"context_line":"                          {utils.rand_ip(network\u003dTrue)}),"},{"line_number":150,"context_line":"        itertools.product({\u00272.34\u0027, LATEST_MICROVERSION},"},{"line_number":151,"context_line":"                          {utils.rand_ipv6_ip(network\u003dTrue)})"},{"line_number":152,"context_line":"    ))"},{"line_number":153,"context_line":"    @ddt.unpack"}],"source_content_type":"text/x-python","patch_set":75,"id":"3f1d235d_a1863cb8","line":150,"range":{"start_line":150,"start_character":27,"end_line":150,"end_character":33},"in_reply_to":"3f1d235d_f442c2aa","updated":"2017-07-06 07:01:45.000000000","message":"Done","commit_id":"4a98a2e598359e120fe6ed9b9b0bd9ddaceb5778"},{"author":{"_account_id":8851,"name":"Valeriy Ponomaryov","email":"kiparis.kh@gmail.com","username":"vponomaryov"},"change_message_id":"f0f17e65da35c0355912bd29f93092f766f1e7ae","unresolved":false,"context_lines":[{"line_number":93,"context_line":""},{"line_number":94,"context_line":"    @tc.attr(base.TAG_POSITIVE, base.TAG_BACKEND)"},{"line_number":95,"context_line":"    @ddt.data(*itertools.chain("},{"line_number":96,"context_line":"        itertools.product({\u00271.0\u0027, \u00272.9\u0027, \u00272.37\u0027, LATEST_MICROVERSION},"},{"line_number":97,"context_line":"                          {utils.rand_ip()}),"},{"line_number":98,"context_line":"        itertools.product({\u00272.37\u0027, LATEST_MICROVERSION},"},{"line_number":99,"context_line":"                          {utils.rand_ipv6_ip()})"}],"source_content_type":"text/x-python","patch_set":80,"id":"1f1a1f67_075e2b43","line":96,"updated":"2017-07-18 14:35:38.000000000","message":"Why \u00272.27\u0027 and \u00272.28\u0027 versions were removed?","commit_id":"031dd4b33512dff36fa410ef88a1afeb1243f62c"}],"manila_tempest_tests/tests/api/test_rules_negative.py":[{"author":{"_account_id":17097,"name":"Tiago Pasqualini da Silva","email":"t.pasqualini@luizalabs.com","username":"tiago.pasqualini"},"change_message_id":"f7201d773a9f199533207f6f49baf8214f99eda5","unresolved":false,"context_lines":[{"line_number":43,"context_line":"            # create snapshot"},{"line_number":44,"context_line":"            cls.snap \u003d cls.create_snapshot_wait_for_active(cls.share[\"id\"])"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"    @test.attr(type\u003d[base.TAG_NEGATIVE, base.TAG_API_WITH_BACKEND])"},{"line_number":47,"context_line":"    @ddt.data(\u0027shares_client\u0027, \u0027shares_v2_client\u0027)"},{"line_number":48,"context_line":"    def test_create_access_rule_ip_with_wrong_target_1(self, client_name):"},{"line_number":49,"context_line":"        self.assertRaises(lib_exc.BadRequest,"},{"line_number":50,"context_line":"                          getattr(self, client_name).create_access_rule,"},{"line_number":51,"context_line":"                          self.share[\"id\"], \"ip\", \"1.2.3.256\")"},{"line_number":52,"context_line":""},{"line_number":53,"context_line":"    @test.attr(type\u003d[base.TAG_NEGATIVE, base.TAG_API_WITH_BACKEND])"},{"line_number":54,"context_line":"    @ddt.data(\u0027shares_client\u0027, \u0027shares_v2_client\u0027)"},{"line_number":55,"context_line":"    def test_create_access_rule_ip_with_wrong_target_2(self, client_name):"},{"line_number":56,"context_line":"        self.assertRaises(lib_exc.BadRequest,"},{"line_number":57,"context_line":"                          getattr(self, client_name).create_access_rule,"},{"line_number":58,"context_line":"                          self.share[\"id\"], \"ip\", \"1.1.1.-\")"},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"    @test.attr(type\u003d[base.TAG_NEGATIVE, base.TAG_API_WITH_BACKEND])"},{"line_number":61,"context_line":"    @ddt.data(\u0027shares_client\u0027, \u0027shares_v2_client\u0027)"},{"line_number":62,"context_line":"    def test_create_access_rule_ip_with_wrong_target_3(self, client_name):"},{"line_number":63,"context_line":"        self.assertRaises(lib_exc.BadRequest,"},{"line_number":64,"context_line":"                          getattr(self, client_name).create_access_rule,"},{"line_number":65,"context_line":"                          self.share[\"id\"], \"ip\", \"1.2.3.4/33\")"},{"line_number":66,"context_line":""},{"line_number":67,"context_line":"    @test.attr(type\u003d[base.TAG_NEGATIVE, base.TAG_API_WITH_BACKEND])"},{"line_number":68,"context_line":"    @ddt.data(\u0027shares_client\u0027, \u0027shares_v2_client\u0027)"},{"line_number":69,"context_line":"    def test_create_access_rule_ip_with_wrong_target_4(self, client_name):"},{"line_number":70,"context_line":"        self.assertRaises(lib_exc.BadRequest,"},{"line_number":71,"context_line":"                          getattr(self, client_name).create_access_rule,"},{"line_number":72,"context_line":"                          self.share[\"id\"], \"ip\", \"1.2.3.*\")"},{"line_number":73,"context_line":""},{"line_number":74,"context_line":"    @test.attr(type\u003d[base.TAG_NEGATIVE, base.TAG_API_WITH_BACKEND])"},{"line_number":75,"context_line":"    @ddt.data(\u0027shares_client\u0027, \u0027shares_v2_client\u0027)"},{"line_number":76,"context_line":"    def test_create_access_rule_ip_with_wrong_target_5(self, client_name):"},{"line_number":77,"context_line":"        self.assertRaises(lib_exc.BadRequest,"},{"line_number":78,"context_line":"                          getattr(self, client_name).create_access_rule,"},{"line_number":79,"context_line":"                          self.share[\"id\"], \"ip\", \"1.2.3.*/23\")"},{"line_number":80,"context_line":""},{"line_number":81,"context_line":"    @test.attr(type\u003d[base.TAG_NEGATIVE, base.TAG_API_WITH_BACKEND])"},{"line_number":82,"context_line":"    @ddt.data(\u0027shares_client\u0027, \u0027shares_v2_client\u0027)"},{"line_number":83,"context_line":"    def test_create_access_rule_ip_with_wrong_target_6(self, client_name):"},{"line_number":84,"context_line":"        self.assertRaises(lib_exc.BadRequest,"},{"line_number":85,"context_line":"                          getattr(self, client_name).create_access_rule,"},{"line_number":86,"context_line":"                          self.share[\"id\"], \"ip\", \"1.2.3.1|23\")"},{"line_number":87,"context_line":""},{"line_number":88,"context_line":"    @test.attr(type\u003d[base.TAG_NEGATIVE, base.TAG_API_WITH_BACKEND])"},{"line_number":89,"context_line":"    @ddt.data(\u0027shares_client\u0027, \u0027shares_v2_client\u0027)"},{"line_number":90,"context_line":"    def test_create_access_rule_ip_with_wrong_target_7(self, client_name):"},{"line_number":91,"context_line":"        self.assertRaises(lib_exc.BadRequest,"},{"line_number":92,"context_line":"                          getattr(self, client_name).create_access_rule,"},{"line_number":93,"context_line":"                          self.share[\"id\"], \"ip\", \"1.2.3.1/-1\")"},{"line_number":94,"context_line":""},{"line_number":95,"context_line":"    @test.attr(type\u003d[base.TAG_NEGATIVE, base.TAG_API_WITH_BACKEND])"},{"line_number":96,"context_line":"    @ddt.data(\u0027shares_client\u0027, \u0027shares_v2_client\u0027)"},{"line_number":97,"context_line":"    def test_create_access_rule_ip_with_wrong_target_8(self, client_name):"},{"line_number":98,"context_line":"        self.assertRaises(lib_exc.BadRequest,"},{"line_number":99,"context_line":"                          getattr(self, client_name).create_access_rule,"},{"line_number":100,"context_line":"                          self.share[\"id\"], \"ip\", \"1.2.3.1/\")"},{"line_number":101,"context_line":""},{"line_number":102,"context_line":"    @test.attr(type\u003d[base.TAG_NEGATIVE, base.TAG_API_WITH_BACKEND])"},{"line_number":103,"context_line":"    @ddt.data(\u0027shares_client\u0027, \u0027shares_v2_client\u0027)"},{"line_number":104,"context_line":"    def test_create_access_rule_ip_with_wrong_target_9(self, client_name):"},{"line_number":105,"context_line":""},{"line_number":106,"context_line":"        self.assertRaises(lib_exc.BadRequest,"},{"line_number":107,"context_line":"                          getattr(self, client_name).create_access_rule,"},{"line_number":108,"context_line":"                          self.share[\"id\"], \"ip\", \"ad80::abaa:0:c2:2/-3\")"},{"line_number":109,"context_line":""},{"line_number":110,"context_line":"    @test.attr(type\u003d[base.TAG_NEGATIVE, base.TAG_API_WITH_BACKEND])"},{"line_number":111,"context_line":"    @ddt.data(\u0027shares_client\u0027, \u0027shares_v2_client\u0027)"},{"line_number":112,"context_line":"    def test_create_access_rule_ip_with_wrong_target_10(self, client_name):"},{"line_number":113,"context_line":""},{"line_number":114,"context_line":"        self.assertRaises(lib_exc.BadRequest,"},{"line_number":115,"context_line":"                          getattr(self, client_name).create_access_rule,"},{"line_number":116,"context_line":"                          self.share[\"id\"], \"ip\", \"AD80:ABAA::|26\")"},{"line_number":117,"context_line":""},{"line_number":118,"context_line":"    @test.attr(type\u003d[base.TAG_NEGATIVE, base.TAG_API_WITH_BACKEND])"},{"line_number":119,"context_line":"    @ddt.data(\u0027shares_client\u0027, \u0027shares_v2_client\u0027)"}],"source_content_type":"text/x-python","patch_set":33,"id":"3a98d1f4_c125a009","line":116,"range":{"start_line":46,"start_character":0,"end_line":116,"end_character":67},"updated":"2016-09-30 12:36:45.000000000","message":"These are all the same. Since you are adding two new tests here, you could refactor this and change to use ddt.data.","commit_id":"6acecf96d51bb5f55afa1ae943c142ba6c6e24f7"},{"author":{"_account_id":23083,"name":"TommyLike","email":"tommylikehu@gmail.com","username":"TommyLike"},"change_message_id":"ab2fc5c9bd7cf145416aa02021782e1d1618902e","unresolved":false,"context_lines":[{"line_number":43,"context_line":"            # create snapshot"},{"line_number":44,"context_line":"            cls.snap \u003d cls.create_snapshot_wait_for_active(cls.share[\"id\"])"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"    @test.attr(type\u003d[base.TAG_NEGATIVE, base.TAG_API_WITH_BACKEND])"},{"line_number":47,"context_line":"    @ddt.data(\u0027shares_client\u0027, \u0027shares_v2_client\u0027)"},{"line_number":48,"context_line":"    def test_create_access_rule_ip_with_wrong_target_1(self, client_name):"},{"line_number":49,"context_line":"        self.assertRaises(lib_exc.BadRequest,"},{"line_number":50,"context_line":"                          getattr(self, client_name).create_access_rule,"},{"line_number":51,"context_line":"                          self.share[\"id\"], \"ip\", \"1.2.3.256\")"},{"line_number":52,"context_line":""},{"line_number":53,"context_line":"    @test.attr(type\u003d[base.TAG_NEGATIVE, base.TAG_API_WITH_BACKEND])"},{"line_number":54,"context_line":"    @ddt.data(\u0027shares_client\u0027, \u0027shares_v2_client\u0027)"},{"line_number":55,"context_line":"    def test_create_access_rule_ip_with_wrong_target_2(self, client_name):"},{"line_number":56,"context_line":"        self.assertRaises(lib_exc.BadRequest,"},{"line_number":57,"context_line":"                          getattr(self, client_name).create_access_rule,"},{"line_number":58,"context_line":"                          self.share[\"id\"], \"ip\", \"1.1.1.-\")"},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"    @test.attr(type\u003d[base.TAG_NEGATIVE, base.TAG_API_WITH_BACKEND])"},{"line_number":61,"context_line":"    @ddt.data(\u0027shares_client\u0027, \u0027shares_v2_client\u0027)"},{"line_number":62,"context_line":"    def test_create_access_rule_ip_with_wrong_target_3(self, client_name):"},{"line_number":63,"context_line":"        self.assertRaises(lib_exc.BadRequest,"},{"line_number":64,"context_line":"                          getattr(self, client_name).create_access_rule,"},{"line_number":65,"context_line":"                          self.share[\"id\"], \"ip\", \"1.2.3.4/33\")"},{"line_number":66,"context_line":""},{"line_number":67,"context_line":"    @test.attr(type\u003d[base.TAG_NEGATIVE, base.TAG_API_WITH_BACKEND])"},{"line_number":68,"context_line":"    @ddt.data(\u0027shares_client\u0027, \u0027shares_v2_client\u0027)"},{"line_number":69,"context_line":"    def test_create_access_rule_ip_with_wrong_target_4(self, client_name):"},{"line_number":70,"context_line":"        self.assertRaises(lib_exc.BadRequest,"},{"line_number":71,"context_line":"                          getattr(self, client_name).create_access_rule,"},{"line_number":72,"context_line":"                          self.share[\"id\"], \"ip\", \"1.2.3.*\")"},{"line_number":73,"context_line":""},{"line_number":74,"context_line":"    @test.attr(type\u003d[base.TAG_NEGATIVE, base.TAG_API_WITH_BACKEND])"},{"line_number":75,"context_line":"    @ddt.data(\u0027shares_client\u0027, \u0027shares_v2_client\u0027)"},{"line_number":76,"context_line":"    def test_create_access_rule_ip_with_wrong_target_5(self, client_name):"},{"line_number":77,"context_line":"        self.assertRaises(lib_exc.BadRequest,"},{"line_number":78,"context_line":"                          getattr(self, client_name).create_access_rule,"},{"line_number":79,"context_line":"                          self.share[\"id\"], \"ip\", \"1.2.3.*/23\")"},{"line_number":80,"context_line":""},{"line_number":81,"context_line":"    @test.attr(type\u003d[base.TAG_NEGATIVE, base.TAG_API_WITH_BACKEND])"},{"line_number":82,"context_line":"    @ddt.data(\u0027shares_client\u0027, \u0027shares_v2_client\u0027)"},{"line_number":83,"context_line":"    def test_create_access_rule_ip_with_wrong_target_6(self, client_name):"},{"line_number":84,"context_line":"        self.assertRaises(lib_exc.BadRequest,"},{"line_number":85,"context_line":"                          getattr(self, client_name).create_access_rule,"},{"line_number":86,"context_line":"                          self.share[\"id\"], \"ip\", \"1.2.3.1|23\")"},{"line_number":87,"context_line":""},{"line_number":88,"context_line":"    @test.attr(type\u003d[base.TAG_NEGATIVE, base.TAG_API_WITH_BACKEND])"},{"line_number":89,"context_line":"    @ddt.data(\u0027shares_client\u0027, \u0027shares_v2_client\u0027)"},{"line_number":90,"context_line":"    def test_create_access_rule_ip_with_wrong_target_7(self, client_name):"},{"line_number":91,"context_line":"        self.assertRaises(lib_exc.BadRequest,"},{"line_number":92,"context_line":"                          getattr(self, client_name).create_access_rule,"},{"line_number":93,"context_line":"                          self.share[\"id\"], \"ip\", \"1.2.3.1/-1\")"},{"line_number":94,"context_line":""},{"line_number":95,"context_line":"    @test.attr(type\u003d[base.TAG_NEGATIVE, base.TAG_API_WITH_BACKEND])"},{"line_number":96,"context_line":"    @ddt.data(\u0027shares_client\u0027, \u0027shares_v2_client\u0027)"},{"line_number":97,"context_line":"    def test_create_access_rule_ip_with_wrong_target_8(self, client_name):"},{"line_number":98,"context_line":"        self.assertRaises(lib_exc.BadRequest,"},{"line_number":99,"context_line":"                          getattr(self, client_name).create_access_rule,"},{"line_number":100,"context_line":"                          self.share[\"id\"], \"ip\", \"1.2.3.1/\")"},{"line_number":101,"context_line":""},{"line_number":102,"context_line":"    @test.attr(type\u003d[base.TAG_NEGATIVE, base.TAG_API_WITH_BACKEND])"},{"line_number":103,"context_line":"    @ddt.data(\u0027shares_client\u0027, \u0027shares_v2_client\u0027)"},{"line_number":104,"context_line":"    def test_create_access_rule_ip_with_wrong_target_9(self, client_name):"},{"line_number":105,"context_line":""},{"line_number":106,"context_line":"        self.assertRaises(lib_exc.BadRequest,"},{"line_number":107,"context_line":"                          getattr(self, client_name).create_access_rule,"},{"line_number":108,"context_line":"                          self.share[\"id\"], \"ip\", \"ad80::abaa:0:c2:2/-3\")"},{"line_number":109,"context_line":""},{"line_number":110,"context_line":"    @test.attr(type\u003d[base.TAG_NEGATIVE, base.TAG_API_WITH_BACKEND])"},{"line_number":111,"context_line":"    @ddt.data(\u0027shares_client\u0027, \u0027shares_v2_client\u0027)"},{"line_number":112,"context_line":"    def test_create_access_rule_ip_with_wrong_target_10(self, client_name):"},{"line_number":113,"context_line":""},{"line_number":114,"context_line":"        self.assertRaises(lib_exc.BadRequest,"},{"line_number":115,"context_line":"                          getattr(self, client_name).create_access_rule,"},{"line_number":116,"context_line":"                          self.share[\"id\"], \"ip\", \"AD80:ABAA::|26\")"},{"line_number":117,"context_line":""},{"line_number":118,"context_line":"    @test.attr(type\u003d[base.TAG_NEGATIVE, base.TAG_API_WITH_BACKEND])"},{"line_number":119,"context_line":"    @ddt.data(\u0027shares_client\u0027, \u0027shares_v2_client\u0027)"}],"source_content_type":"text/x-python","patch_set":33,"id":"1a95cdbc_34cd6bb7","line":116,"range":{"start_line":46,"start_character":0,"end_line":116,"end_character":67},"in_reply_to":"3a98d1f4_5cd4e7bb","updated":"2016-10-08 03:28:52.000000000","message":"Done","commit_id":"6acecf96d51bb5f55afa1ae943c142ba6c6e24f7"},{"author":{"_account_id":11865,"name":"Clinton Knight","email":"cknight@netapp.com","username":"cknight"},"change_message_id":"d18f4e69be37466e9ce97fcc97d1254acb2295e8","unresolved":false,"context_lines":[{"line_number":43,"context_line":"            # create snapshot"},{"line_number":44,"context_line":"            cls.snap \u003d cls.create_snapshot_wait_for_active(cls.share[\"id\"])"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"    @test.attr(type\u003d[base.TAG_NEGATIVE, base.TAG_API_WITH_BACKEND])"},{"line_number":47,"context_line":"    @ddt.data(\u0027shares_client\u0027, \u0027shares_v2_client\u0027)"},{"line_number":48,"context_line":"    def test_create_access_rule_ip_with_wrong_target_1(self, client_name):"},{"line_number":49,"context_line":"        self.assertRaises(lib_exc.BadRequest,"},{"line_number":50,"context_line":"                          getattr(self, client_name).create_access_rule,"},{"line_number":51,"context_line":"                          self.share[\"id\"], \"ip\", \"1.2.3.256\")"},{"line_number":52,"context_line":""},{"line_number":53,"context_line":"    @test.attr(type\u003d[base.TAG_NEGATIVE, base.TAG_API_WITH_BACKEND])"},{"line_number":54,"context_line":"    @ddt.data(\u0027shares_client\u0027, \u0027shares_v2_client\u0027)"},{"line_number":55,"context_line":"    def test_create_access_rule_ip_with_wrong_target_2(self, client_name):"},{"line_number":56,"context_line":"        self.assertRaises(lib_exc.BadRequest,"},{"line_number":57,"context_line":"                          getattr(self, client_name).create_access_rule,"},{"line_number":58,"context_line":"                          self.share[\"id\"], \"ip\", \"1.1.1.-\")"},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"    @test.attr(type\u003d[base.TAG_NEGATIVE, base.TAG_API_WITH_BACKEND])"},{"line_number":61,"context_line":"    @ddt.data(\u0027shares_client\u0027, \u0027shares_v2_client\u0027)"},{"line_number":62,"context_line":"    def test_create_access_rule_ip_with_wrong_target_3(self, client_name):"},{"line_number":63,"context_line":"        self.assertRaises(lib_exc.BadRequest,"},{"line_number":64,"context_line":"                          getattr(self, client_name).create_access_rule,"},{"line_number":65,"context_line":"                          self.share[\"id\"], \"ip\", \"1.2.3.4/33\")"},{"line_number":66,"context_line":""},{"line_number":67,"context_line":"    @test.attr(type\u003d[base.TAG_NEGATIVE, base.TAG_API_WITH_BACKEND])"},{"line_number":68,"context_line":"    @ddt.data(\u0027shares_client\u0027, \u0027shares_v2_client\u0027)"},{"line_number":69,"context_line":"    def test_create_access_rule_ip_with_wrong_target_4(self, client_name):"},{"line_number":70,"context_line":"        self.assertRaises(lib_exc.BadRequest,"},{"line_number":71,"context_line":"                          getattr(self, client_name).create_access_rule,"},{"line_number":72,"context_line":"                          self.share[\"id\"], \"ip\", \"1.2.3.*\")"},{"line_number":73,"context_line":""},{"line_number":74,"context_line":"    @test.attr(type\u003d[base.TAG_NEGATIVE, base.TAG_API_WITH_BACKEND])"},{"line_number":75,"context_line":"    @ddt.data(\u0027shares_client\u0027, \u0027shares_v2_client\u0027)"},{"line_number":76,"context_line":"    def test_create_access_rule_ip_with_wrong_target_5(self, client_name):"},{"line_number":77,"context_line":"        self.assertRaises(lib_exc.BadRequest,"},{"line_number":78,"context_line":"                          getattr(self, client_name).create_access_rule,"},{"line_number":79,"context_line":"                          self.share[\"id\"], \"ip\", \"1.2.3.*/23\")"},{"line_number":80,"context_line":""},{"line_number":81,"context_line":"    @test.attr(type\u003d[base.TAG_NEGATIVE, base.TAG_API_WITH_BACKEND])"},{"line_number":82,"context_line":"    @ddt.data(\u0027shares_client\u0027, \u0027shares_v2_client\u0027)"},{"line_number":83,"context_line":"    def test_create_access_rule_ip_with_wrong_target_6(self, client_name):"},{"line_number":84,"context_line":"        self.assertRaises(lib_exc.BadRequest,"},{"line_number":85,"context_line":"                          getattr(self, client_name).create_access_rule,"},{"line_number":86,"context_line":"                          self.share[\"id\"], \"ip\", \"1.2.3.1|23\")"},{"line_number":87,"context_line":""},{"line_number":88,"context_line":"    @test.attr(type\u003d[base.TAG_NEGATIVE, base.TAG_API_WITH_BACKEND])"},{"line_number":89,"context_line":"    @ddt.data(\u0027shares_client\u0027, \u0027shares_v2_client\u0027)"},{"line_number":90,"context_line":"    def test_create_access_rule_ip_with_wrong_target_7(self, client_name):"},{"line_number":91,"context_line":"        self.assertRaises(lib_exc.BadRequest,"},{"line_number":92,"context_line":"                          getattr(self, client_name).create_access_rule,"},{"line_number":93,"context_line":"                          self.share[\"id\"], \"ip\", \"1.2.3.1/-1\")"},{"line_number":94,"context_line":""},{"line_number":95,"context_line":"    @test.attr(type\u003d[base.TAG_NEGATIVE, base.TAG_API_WITH_BACKEND])"},{"line_number":96,"context_line":"    @ddt.data(\u0027shares_client\u0027, \u0027shares_v2_client\u0027)"},{"line_number":97,"context_line":"    def test_create_access_rule_ip_with_wrong_target_8(self, client_name):"},{"line_number":98,"context_line":"        self.assertRaises(lib_exc.BadRequest,"},{"line_number":99,"context_line":"                          getattr(self, client_name).create_access_rule,"},{"line_number":100,"context_line":"                          self.share[\"id\"], \"ip\", \"1.2.3.1/\")"},{"line_number":101,"context_line":""},{"line_number":102,"context_line":"    @test.attr(type\u003d[base.TAG_NEGATIVE, base.TAG_API_WITH_BACKEND])"},{"line_number":103,"context_line":"    @ddt.data(\u0027shares_client\u0027, \u0027shares_v2_client\u0027)"},{"line_number":104,"context_line":"    def test_create_access_rule_ip_with_wrong_target_9(self, client_name):"},{"line_number":105,"context_line":""},{"line_number":106,"context_line":"        self.assertRaises(lib_exc.BadRequest,"},{"line_number":107,"context_line":"                          getattr(self, client_name).create_access_rule,"},{"line_number":108,"context_line":"                          self.share[\"id\"], \"ip\", \"ad80::abaa:0:c2:2/-3\")"},{"line_number":109,"context_line":""},{"line_number":110,"context_line":"    @test.attr(type\u003d[base.TAG_NEGATIVE, base.TAG_API_WITH_BACKEND])"},{"line_number":111,"context_line":"    @ddt.data(\u0027shares_client\u0027, \u0027shares_v2_client\u0027)"},{"line_number":112,"context_line":"    def test_create_access_rule_ip_with_wrong_target_10(self, client_name):"},{"line_number":113,"context_line":""},{"line_number":114,"context_line":"        self.assertRaises(lib_exc.BadRequest,"},{"line_number":115,"context_line":"                          getattr(self, client_name).create_access_rule,"},{"line_number":116,"context_line":"                          self.share[\"id\"], \"ip\", \"AD80:ABAA::|26\")"},{"line_number":117,"context_line":""},{"line_number":118,"context_line":"    @test.attr(type\u003d[base.TAG_NEGATIVE, base.TAG_API_WITH_BACKEND])"},{"line_number":119,"context_line":"    @ddt.data(\u0027shares_client\u0027, \u0027shares_v2_client\u0027)"}],"source_content_type":"text/x-python","patch_set":33,"id":"3a98d1f4_5cd4e7bb","line":116,"range":{"start_line":46,"start_character":0,"end_line":116,"end_character":67},"in_reply_to":"3a98d1f4_c125a009","updated":"2016-10-02 03:18:16.000000000","message":"+1\n\nYou can use a combination of ddt and itertools.product to combine all of these into a single test method.  Here is an example from elsewhere:\n\n    @ddt.data(*itertools.product(\n        constants.ExtraSpecs.REQUIRED,\n        strutils.TRUE_STRINGS + strutils.FALSE_STRINGS))\n    @ddt.unpack\n    def test_is_valid_required_extra_spec_valid(self, key, value):\n        \n        result \u003d share_types.is_valid_required_extra_spec(key, value)\n        \n        self.assertTrue(result)","commit_id":"6acecf96d51bb5f55afa1ae943c142ba6c6e24f7"},{"author":{"_account_id":23083,"name":"TommyLike","email":"tommylikehu@gmail.com","username":"TommyLike"},"change_message_id":"ab2fc5c9bd7cf145416aa02021782e1d1618902e","unresolved":false,"context_lines":[{"line_number":43,"context_line":"            # create snapshot"},{"line_number":44,"context_line":"            cls.snap \u003d cls.create_snapshot_wait_for_active(cls.share[\"id\"])"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"    @test.attr(type\u003d[base.TAG_NEGATIVE, base.TAG_API_WITH_BACKEND])"},{"line_number":47,"context_line":"    @ddt.data(\u0027shares_client\u0027, \u0027shares_v2_client\u0027)"},{"line_number":48,"context_line":"    def test_create_access_rule_ip_with_wrong_target_1(self, client_name):"},{"line_number":49,"context_line":"        self.assertRaises(lib_exc.BadRequest,"},{"line_number":50,"context_line":"                          getattr(self, client_name).create_access_rule,"},{"line_number":51,"context_line":"                          self.share[\"id\"], \"ip\", \"1.2.3.256\")"},{"line_number":52,"context_line":""},{"line_number":53,"context_line":"    @test.attr(type\u003d[base.TAG_NEGATIVE, base.TAG_API_WITH_BACKEND])"},{"line_number":54,"context_line":"    @ddt.data(\u0027shares_client\u0027, \u0027shares_v2_client\u0027)"},{"line_number":55,"context_line":"    def test_create_access_rule_ip_with_wrong_target_2(self, client_name):"},{"line_number":56,"context_line":"        self.assertRaises(lib_exc.BadRequest,"},{"line_number":57,"context_line":"                          getattr(self, client_name).create_access_rule,"},{"line_number":58,"context_line":"                          self.share[\"id\"], \"ip\", \"1.1.1.-\")"},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"    @test.attr(type\u003d[base.TAG_NEGATIVE, base.TAG_API_WITH_BACKEND])"},{"line_number":61,"context_line":"    @ddt.data(\u0027shares_client\u0027, \u0027shares_v2_client\u0027)"},{"line_number":62,"context_line":"    def test_create_access_rule_ip_with_wrong_target_3(self, client_name):"},{"line_number":63,"context_line":"        self.assertRaises(lib_exc.BadRequest,"},{"line_number":64,"context_line":"                          getattr(self, client_name).create_access_rule,"},{"line_number":65,"context_line":"                          self.share[\"id\"], \"ip\", \"1.2.3.4/33\")"},{"line_number":66,"context_line":""},{"line_number":67,"context_line":"    @test.attr(type\u003d[base.TAG_NEGATIVE, base.TAG_API_WITH_BACKEND])"},{"line_number":68,"context_line":"    @ddt.data(\u0027shares_client\u0027, \u0027shares_v2_client\u0027)"},{"line_number":69,"context_line":"    def test_create_access_rule_ip_with_wrong_target_4(self, client_name):"},{"line_number":70,"context_line":"        self.assertRaises(lib_exc.BadRequest,"},{"line_number":71,"context_line":"                          getattr(self, client_name).create_access_rule,"},{"line_number":72,"context_line":"                          self.share[\"id\"], \"ip\", \"1.2.3.*\")"},{"line_number":73,"context_line":""},{"line_number":74,"context_line":"    @test.attr(type\u003d[base.TAG_NEGATIVE, base.TAG_API_WITH_BACKEND])"},{"line_number":75,"context_line":"    @ddt.data(\u0027shares_client\u0027, \u0027shares_v2_client\u0027)"},{"line_number":76,"context_line":"    def test_create_access_rule_ip_with_wrong_target_5(self, client_name):"},{"line_number":77,"context_line":"        self.assertRaises(lib_exc.BadRequest,"},{"line_number":78,"context_line":"                          getattr(self, client_name).create_access_rule,"},{"line_number":79,"context_line":"                          self.share[\"id\"], \"ip\", \"1.2.3.*/23\")"},{"line_number":80,"context_line":""},{"line_number":81,"context_line":"    @test.attr(type\u003d[base.TAG_NEGATIVE, base.TAG_API_WITH_BACKEND])"},{"line_number":82,"context_line":"    @ddt.data(\u0027shares_client\u0027, \u0027shares_v2_client\u0027)"},{"line_number":83,"context_line":"    def test_create_access_rule_ip_with_wrong_target_6(self, client_name):"},{"line_number":84,"context_line":"        self.assertRaises(lib_exc.BadRequest,"},{"line_number":85,"context_line":"                          getattr(self, client_name).create_access_rule,"},{"line_number":86,"context_line":"                          self.share[\"id\"], \"ip\", \"1.2.3.1|23\")"},{"line_number":87,"context_line":""},{"line_number":88,"context_line":"    @test.attr(type\u003d[base.TAG_NEGATIVE, base.TAG_API_WITH_BACKEND])"},{"line_number":89,"context_line":"    @ddt.data(\u0027shares_client\u0027, \u0027shares_v2_client\u0027)"},{"line_number":90,"context_line":"    def test_create_access_rule_ip_with_wrong_target_7(self, client_name):"},{"line_number":91,"context_line":"        self.assertRaises(lib_exc.BadRequest,"},{"line_number":92,"context_line":"                          getattr(self, client_name).create_access_rule,"},{"line_number":93,"context_line":"                          self.share[\"id\"], \"ip\", \"1.2.3.1/-1\")"},{"line_number":94,"context_line":""},{"line_number":95,"context_line":"    @test.attr(type\u003d[base.TAG_NEGATIVE, base.TAG_API_WITH_BACKEND])"},{"line_number":96,"context_line":"    @ddt.data(\u0027shares_client\u0027, \u0027shares_v2_client\u0027)"},{"line_number":97,"context_line":"    def test_create_access_rule_ip_with_wrong_target_8(self, client_name):"},{"line_number":98,"context_line":"        self.assertRaises(lib_exc.BadRequest,"},{"line_number":99,"context_line":"                          getattr(self, client_name).create_access_rule,"},{"line_number":100,"context_line":"                          self.share[\"id\"], \"ip\", \"1.2.3.1/\")"},{"line_number":101,"context_line":""},{"line_number":102,"context_line":"    @test.attr(type\u003d[base.TAG_NEGATIVE, base.TAG_API_WITH_BACKEND])"},{"line_number":103,"context_line":"    @ddt.data(\u0027shares_client\u0027, \u0027shares_v2_client\u0027)"},{"line_number":104,"context_line":"    def test_create_access_rule_ip_with_wrong_target_9(self, client_name):"},{"line_number":105,"context_line":""},{"line_number":106,"context_line":"        self.assertRaises(lib_exc.BadRequest,"},{"line_number":107,"context_line":"                          getattr(self, client_name).create_access_rule,"},{"line_number":108,"context_line":"                          self.share[\"id\"], \"ip\", \"ad80::abaa:0:c2:2/-3\")"},{"line_number":109,"context_line":""},{"line_number":110,"context_line":"    @test.attr(type\u003d[base.TAG_NEGATIVE, base.TAG_API_WITH_BACKEND])"},{"line_number":111,"context_line":"    @ddt.data(\u0027shares_client\u0027, \u0027shares_v2_client\u0027)"},{"line_number":112,"context_line":"    def test_create_access_rule_ip_with_wrong_target_10(self, client_name):"},{"line_number":113,"context_line":""},{"line_number":114,"context_line":"        self.assertRaises(lib_exc.BadRequest,"},{"line_number":115,"context_line":"                          getattr(self, client_name).create_access_rule,"},{"line_number":116,"context_line":"                          self.share[\"id\"], \"ip\", \"AD80:ABAA::|26\")"},{"line_number":117,"context_line":""},{"line_number":118,"context_line":"    @test.attr(type\u003d[base.TAG_NEGATIVE, base.TAG_API_WITH_BACKEND])"},{"line_number":119,"context_line":"    @ddt.data(\u0027shares_client\u0027, \u0027shares_v2_client\u0027)"}],"source_content_type":"text/x-python","patch_set":33,"id":"1a95cdbc_14c86fa7","line":116,"range":{"start_line":46,"start_character":0,"end_line":116,"end_character":67},"in_reply_to":"3a98d1f4_c125a009","updated":"2016-10-08 03:28:52.000000000","message":"Done","commit_id":"6acecf96d51bb5f55afa1ae943c142ba6c6e24f7"},{"author":{"_account_id":16203,"name":"zengyingzhe","email":"zengyingzhe@huawei.com","username":"zengyingzhe"},"change_message_id":"9424bb062c127ef3df6c80db1baf9c6561edb312","unresolved":false,"context_lines":[{"line_number":54,"context_line":"              \u00271.2.3.1/-1\u0027,"},{"line_number":55,"context_line":"              \u00271.2.3.1/\u0027,"},{"line_number":56,"context_line":"              \u0027ad80::abaa:0:c2:2/-3\u0027,"},{"line_number":57,"context_line":"              \u0027AD80:ABAA::|26\u0027"},{"line_number":58,"context_line":"              )"},{"line_number":59,"context_line":"    @ddt.unpack"},{"line_number":60,"context_line":"    def test_create_access_rule_ip_with_wrong_targets(self, ip_address):"}],"source_content_type":"text/x-python","patch_set":36,"id":"1a95cdbc_6664a8b8","line":57,"updated":"2016-10-08 07:33:16.000000000","message":"suggest adding the IPv6 case that prefix length larger than 128","commit_id":"2a64ea12726a70b378f2ec35653a01d3021f6be0"},{"author":{"_account_id":16203,"name":"zengyingzhe","email":"zengyingzhe@huawei.com","username":"zengyingzhe"},"change_message_id":"7b54cbbfefb9c4add241713c77be83878154b2a1","unresolved":false,"context_lines":[{"line_number":45,"context_line":""},{"line_number":46,"context_line":"    @tc.attr(base.TAG_NEGATIVE, base.TAG_API_WITH_BACKEND)"},{"line_number":47,"context_line":"    @ddt.data(\u00271.2.3.256\u0027,"},{"line_number":48,"context_line":"              \u00271.2.3.256\u0027,"},{"line_number":49,"context_line":"              \u00271.1.1.-\u0027,"},{"line_number":50,"context_line":"              \u00271.2.3.4/33\u0027,"},{"line_number":51,"context_line":"              \u00271.2.3.*\u0027,"}],"source_content_type":"text/x-python","patch_set":48,"id":"3a71b18c_1e74b1fb","line":48,"range":{"start_line":48,"start_character":15,"end_line":48,"end_character":24},"updated":"2016-12-08 01:35:25.000000000","message":"duplicated to the above line","commit_id":"19848e8f6722818d239bb4751631e20404f40019"},{"author":{"_account_id":16203,"name":"zengyingzhe","email":"zengyingzhe@huawei.com","username":"zengyingzhe"},"change_message_id":"7b54cbbfefb9c4add241713c77be83878154b2a1","unresolved":false,"context_lines":[{"line_number":57,"context_line":"              \u0027AD80:ABAA::|26\u0027,"},{"line_number":58,"context_line":"              \u00272001:DB8:2de:0:0:0:0:e13:200a\u0027,"},{"line_number":59,"context_line":"              )"},{"line_number":60,"context_line":"    def test_create_access_rule_ip_with_wrong_targets(self, ip_address):"},{"line_number":61,"context_line":"        for client_name in [\u0027shares_client\u0027, \u0027shares_v2_client\u0027]:"},{"line_number":62,"context_line":"            self.assertRaises(lib_exc.BadRequest,"},{"line_number":63,"context_line":"                              getattr(self, client_name).create_access_rule,"}],"source_content_type":"text/x-python","patch_set":48,"id":"3a71b18c_1e9031ec","line":60,"range":{"start_line":60,"start_character":8,"end_line":60,"end_character":53},"updated":"2016-12-08 01:35:25.000000000","message":"does this cover the cases that api_version\u003c2.23?","commit_id":"19848e8f6722818d239bb4751631e20404f40019"},{"author":{"_account_id":8851,"name":"Valeriy Ponomaryov","email":"kiparis.kh@gmail.com","username":"vponomaryov"},"change_message_id":"16253fd33d84fe7b35cbc4438df0d5950569d28b","unresolved":false,"context_lines":[{"line_number":56,"context_line":"              \u0027AD80:ABAA::|26\u0027,"},{"line_number":57,"context_line":"              \u00272001:DB8:2de:0:0:0:0:e13:200a\u0027,"},{"line_number":58,"context_line":"              )"},{"line_number":59,"context_line":"    def test_create_access_rule_ip_with_wrong_targets(self, ip_address):"},{"line_number":60,"context_line":"        for client_name in [\u0027shares_client\u0027, \u0027shares_v2_client\u0027]:"},{"line_number":61,"context_line":"            self.assertRaises(lib_exc.BadRequest,"},{"line_number":62,"context_line":"                              getattr(self, client_name).create_access_rule,"}],"source_content_type":"text/x-python","patch_set":63,"id":"3a461143_1502f63e","line":59,"range":{"start_line":59,"start_character":46,"end_line":59,"end_character":53},"updated":"2017-01-25 14:13:23.000000000","message":"It should be singular. It resulting test name will be responsible only for one set of data - one target.","commit_id":"da86424cc4c019e96233db3c1d8f2558823c130e"},{"author":{"_account_id":23083,"name":"TommyLike","email":"tommylikehu@gmail.com","username":"TommyLike"},"change_message_id":"26e2c96a19820c210340154c3556961cfd29b0b7","unresolved":false,"context_lines":[{"line_number":56,"context_line":"              \u0027AD80:ABAA::|26\u0027,"},{"line_number":57,"context_line":"              \u00272001:DB8:2de:0:0:0:0:e13:200a\u0027,"},{"line_number":58,"context_line":"              )"},{"line_number":59,"context_line":"    def test_create_access_rule_ip_with_wrong_targets(self, ip_address):"},{"line_number":60,"context_line":"        for client_name in [\u0027shares_client\u0027, \u0027shares_v2_client\u0027]:"},{"line_number":61,"context_line":"            self.assertRaises(lib_exc.BadRequest,"},{"line_number":62,"context_line":"                              getattr(self, client_name).create_access_rule,"}],"source_content_type":"text/x-python","patch_set":63,"id":"3a461143_b0f8347e","line":59,"range":{"start_line":59,"start_character":46,"end_line":59,"end_character":53},"in_reply_to":"3a461143_1502f63e","updated":"2017-01-26 00:59:49.000000000","message":"Done","commit_id":"da86424cc4c019e96233db3c1d8f2558823c130e"}],"manila_tempest_tests/utils.py":[{"author":{"_account_id":16203,"name":"zengyingzhe","email":"zengyingzhe@huawei.com","username":"zengyingzhe"},"change_message_id":"58595e0bcf2bfd10455cdcb8097b402408814a6b","unresolved":false,"context_lines":[{"line_number":101,"context_line":"    test_net_3 \u003d \u0027203.0.113.\u0027"},{"line_number":102,"context_line":"    address \u003d test_net_3 + six.text_type(random.randint(0, 255))"},{"line_number":103,"context_line":"    if network:"},{"line_number":104,"context_line":"        mask_length \u003d six.text_type(random.randrange(24, 32))"},{"line_number":105,"context_line":"        address \u003d \u0027/\u0027.join((address, mask_length))"},{"line_number":106,"context_line":"        ip_network \u003d ip.IPNetwork(address)"},{"line_number":107,"context_line":"        return \u0027/\u0027.join(six.text_type(ip_network.network), mask_length)"}],"source_content_type":"text/x-python","patch_set":40,"id":"fa6399be_ba14e2e8","line":104,"range":{"start_line":104,"start_character":53,"end_line":104,"end_character":55},"updated":"2016-10-17 07:54:25.000000000","message":"This hard code is quite limiting, why not allow to specify it from method parameter?","commit_id":"e86d4b710e363402ac18bea2e3c8b51b4d80f2e0"},{"author":{"_account_id":16203,"name":"zengyingzhe","email":"zengyingzhe@huawei.com","username":"zengyingzhe"},"change_message_id":"58595e0bcf2bfd10455cdcb8097b402408814a6b","unresolved":false,"context_lines":[{"line_number":101,"context_line":"    test_net_3 \u003d \u0027203.0.113.\u0027"},{"line_number":102,"context_line":"    address \u003d test_net_3 + six.text_type(random.randint(0, 255))"},{"line_number":103,"context_line":"    if network:"},{"line_number":104,"context_line":"        mask_length \u003d six.text_type(random.randrange(24, 32))"},{"line_number":105,"context_line":"        address \u003d \u0027/\u0027.join((address, mask_length))"},{"line_number":106,"context_line":"        ip_network \u003d ip.IPNetwork(address)"},{"line_number":107,"context_line":"        return \u0027/\u0027.join(six.text_type(ip_network.network), mask_length)"}],"source_content_type":"text/x-python","patch_set":40,"id":"fa6399be_fa301a58","line":104,"range":{"start_line":104,"start_character":43,"end_line":104,"end_character":52},"updated":"2016-10-17 07:54:25.000000000","message":"randrange doesn\u0027t include the endpoint, so here 32 is never gonna be returned as a result.","commit_id":"e86d4b710e363402ac18bea2e3c8b51b4d80f2e0"},{"author":{"_account_id":16203,"name":"zengyingzhe","email":"zengyingzhe@huawei.com","username":"zengyingzhe"},"change_message_id":"58595e0bcf2bfd10455cdcb8097b402408814a6b","unresolved":false,"context_lines":[{"line_number":110,"context_line":""},{"line_number":111,"context_line":"def rand_ipv6_ip(network\u003dFalse):"},{"line_number":112,"context_line":"    \"\"\"This uses the IPv6 documentation range of 2001:DB8::/32\"\"\""},{"line_number":113,"context_line":"    ran_add \u003d [\"%x\" % random.randint(0, 16**4) for i in range(6)]"},{"line_number":114,"context_line":"    address \u003d \"2001:0DB8:\" + \":\".join(ran_add)"},{"line_number":115,"context_line":"    if network:"},{"line_number":116,"context_line":"        mask_length \u003d six.text_type(random.randrange(32, 128))"}],"source_content_type":"text/x-python","patch_set":40,"id":"fa6399be_badf82d4","line":113,"range":{"start_line":113,"start_character":29,"end_line":113,"end_character":36},"updated":"2016-10-17 07:54:25.000000000","message":"compared to randrange, randint will include the endpoint, therefor 16**4(0x10000) may be returned, but this is not a valid IPv6 field.","commit_id":"e86d4b710e363402ac18bea2e3c8b51b4d80f2e0"},{"author":{"_account_id":16203,"name":"zengyingzhe","email":"zengyingzhe@huawei.com","username":"zengyingzhe"},"change_message_id":"58595e0bcf2bfd10455cdcb8097b402408814a6b","unresolved":false,"context_lines":[{"line_number":113,"context_line":"    ran_add \u003d [\"%x\" % random.randint(0, 16**4) for i in range(6)]"},{"line_number":114,"context_line":"    address \u003d \"2001:0DB8:\" + \":\".join(ran_add)"},{"line_number":115,"context_line":"    if network:"},{"line_number":116,"context_line":"        mask_length \u003d six.text_type(random.randrange(32, 128))"},{"line_number":117,"context_line":"        address \u003d \u0027/\u0027.join((address, mask_length))"},{"line_number":118,"context_line":"        ip_network \u003d ip.IPNetwork(address)"},{"line_number":119,"context_line":"        return \u0027/\u0027.join(six.text_type(ip_network.network), mask_length)"}],"source_content_type":"text/x-python","patch_set":40,"id":"fa6399be_3aad329b","line":116,"range":{"start_line":116,"start_character":53,"end_line":116,"end_character":55},"updated":"2016-10-17 07:54:25.000000000","message":"ditto","commit_id":"e86d4b710e363402ac18bea2e3c8b51b4d80f2e0"},{"author":{"_account_id":16203,"name":"zengyingzhe","email":"zengyingzhe@huawei.com","username":"zengyingzhe"},"change_message_id":"58595e0bcf2bfd10455cdcb8097b402408814a6b","unresolved":false,"context_lines":[{"line_number":113,"context_line":"    ran_add \u003d [\"%x\" % random.randint(0, 16**4) for i in range(6)]"},{"line_number":114,"context_line":"    address \u003d \"2001:0DB8:\" + \":\".join(ran_add)"},{"line_number":115,"context_line":"    if network:"},{"line_number":116,"context_line":"        mask_length \u003d six.text_type(random.randrange(32, 128))"},{"line_number":117,"context_line":"        address \u003d \u0027/\u0027.join((address, mask_length))"},{"line_number":118,"context_line":"        ip_network \u003d ip.IPNetwork(address)"},{"line_number":119,"context_line":"        return \u0027/\u0027.join(six.text_type(ip_network.network), mask_length)"}],"source_content_type":"text/x-python","patch_set":40,"id":"fa6399be_7a3dea29","line":116,"range":{"start_line":116,"start_character":43,"end_line":116,"end_character":52},"updated":"2016-10-17 07:54:25.000000000","message":"ditto","commit_id":"e86d4b710e363402ac18bea2e3c8b51b4d80f2e0"},{"author":{"_account_id":16203,"name":"zengyingzhe","email":"zengyingzhe@huawei.com","username":"zengyingzhe"},"change_message_id":"7b54cbbfefb9c4add241713c77be83878154b2a1","unresolved":false,"context_lines":[{"line_number":109,"context_line":""},{"line_number":110,"context_line":""},{"line_number":111,"context_line":"def rand_ipv6_ip(network\u003dFalse):"},{"line_number":112,"context_line":"    \"\"\"This uses the IPv6 documentation range of 2001:DB8::/32\"\"\""},{"line_number":113,"context_line":"    ran_add \u003d [\"%x\" % random.randrange(0, 16**4) for i in range(6)]"},{"line_number":114,"context_line":"    address \u003d \"2001:0DB8:\" + \":\".join(ran_add)"},{"line_number":115,"context_line":"    if network:"}],"source_content_type":"text/x-python","patch_set":48,"id":"3a71b18c_3e496d8f","line":112,"range":{"start_line":112,"start_character":60,"end_line":112,"end_character":62},"updated":"2016-12-08 01:35:25.000000000","message":"according to the code, if to create network, the network mask length is 32~128","commit_id":"19848e8f6722818d239bb4751631e20404f40019"}],"releasenotes/notes/add-ipv6-32d89161a9a1e0b4.yaml":[{"author":{"_account_id":16203,"name":"zengyingzhe","email":"zengyingzhe@huawei.com","username":"zengyingzhe"},"change_message_id":"08a7820c4533c9630480a9c58c69eb87afd7db61","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - Enable IPv6 in manila. Add the IPv6 format validation for ip"},{"line_number":4,"context_line":"    access rule type in allow_access API, allowing the manila to"},{"line_number":5,"context_line":"    support IPv6 ACL."}],"source_content_type":"text/x-yaml","patch_set":32,"id":"7a8ec9b2_47b24fe6","line":3,"range":{"start_line":3,"start_character":19,"end_line":3,"end_character":25},"updated":"2016-09-22 03:43:32.000000000","message":"Manila","commit_id":"1f104e55113ecfc3ca2b4ff2d753ae5230680983"},{"author":{"_account_id":16203,"name":"zengyingzhe","email":"zengyingzhe@huawei.com","username":"zengyingzhe"},"change_message_id":"08a7820c4533c9630480a9c58c69eb87afd7db61","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - Enable IPv6 in manila. Add the IPv6 format validation for ip"},{"line_number":4,"context_line":"    access rule type in allow_access API, allowing the manila to"},{"line_number":5,"context_line":"    support IPv6 ACL."}],"source_content_type":"text/x-yaml","patch_set":32,"id":"7a8ec9b2_07bcc7b9","line":4,"range":{"start_line":4,"start_character":51,"end_line":4,"end_character":61},"updated":"2016-09-22 03:43:32.000000000","message":"Manila","commit_id":"1f104e55113ecfc3ca2b4ff2d753ae5230680983"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"6f4ded9bafa8d985b6856dbd1b1ead862bdf914b","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - Enable IPv6 in Manila. Add the IPv6 format validation for ip"},{"line_number":4,"context_line":"    access rule type in allow_access API, allowing the Manila to"},{"line_number":5,"context_line":"    support IPv6 ACL."}],"source_content_type":"text/x-yaml","patch_set":37,"id":"1a95cdbc_1206ba1f","line":5,"range":{"start_line":3,"start_character":4,"end_line":5,"end_character":21},"updated":"2016-10-08 15:44:35.000000000","message":"how about:\n\n- IPv6 addresses are now supported in manila. Users may allow/deny access to IPv6 clients.","commit_id":"05de92ca7a9e3132535f1b2184111fb75af61578"},{"author":{"_account_id":14567,"name":"Rodrigo Barbieri","email":"rodrigo.barbieri2010@gmail.com","username":"ganso"},"change_message_id":"7ff1be102d66e3b55caa6f5256e2e6f0c684a889","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - Enable IPv6 in Manila. Add the IPv6 format validation for ip"},{"line_number":4,"context_line":"    access rule type in allow_access API, allowing the Manila to"},{"line_number":5,"context_line":"    support IPv6 ACL."}],"source_content_type":"text/x-yaml","patch_set":51,"id":"1a6eadb0_13d4ad45","line":4,"range":{"start_line":4,"start_character":51,"end_line":4,"end_character":54},"updated":"2016-12-19 11:10:35.000000000","message":"remove","commit_id":"2e3d6166ff78c0c629e5ab662452c8da5ab1f597"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"0ecaaaf3bb3ada87eb00d2198b20a2df627a7fcc","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - Enable IPv6 in Manila. Add the IPv6 format validation for ip"},{"line_number":4,"context_line":"    access rule type in allow_access API, allowing Manila to"},{"line_number":5,"context_line":"    support IPv6 ACL."}],"source_content_type":"text/x-yaml","patch_set":59,"id":"5a3905b3_6ef40b87","line":5,"range":{"start_line":3,"start_character":4,"end_line":5,"end_character":21},"updated":"2017-01-20 02:12:15.000000000","message":"We write release notes in past tense..\n\n  - IPv6 support has been added for share drivers that operate in\n    \u0027driver_handles_share_servers \u003d False\u0027 mode (without share server management). \n\n  - Access control APIs validate clients represented IPv6 based addresses.","commit_id":"fb8f04c5481877a7066d43741afc9ea80c7750ef"}],"releasenotes/notes/add-ipv6-access-type-32d89161a9a1e0b4.yaml":[{"author":{"_account_id":14567,"name":"Rodrigo Barbieri","email":"rodrigo.barbieri2010@gmail.com","username":"ganso"},"change_message_id":"c922b31db122e8e7e81c11b0334f8545b21d9055","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - Add a new access type named ipv6 in allow_access API."}],"source_content_type":"text/x-yaml","patch_set":6,"id":"dada55a8_a3520d11","line":3,"range":{"start_line":3,"start_character":8,"end_line":3,"end_character":36},"updated":"2016-07-26 18:09:32.000000000","message":"nit: s/a new access type named ipv6/ipv6 access type","commit_id":"89cfcea0a726b84ff220013102059954e88503ac"},{"author":{"_account_id":15100,"name":"zhongjun","email":"jun.zhongjun2@gmail.com","username":"zhongjun2"},"change_message_id":"a69396bcc91caaea635bace465a436d80b6442dc","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - Add a new access type named ipv6 in allow_access API."}],"source_content_type":"text/x-yaml","patch_set":6,"id":"bacf61ea_9dd9e124","line":3,"range":{"start_line":3,"start_character":8,"end_line":3,"end_character":36},"in_reply_to":"dada55a8_a3520d11","updated":"2016-08-08 14:44:46.000000000","message":"Done","commit_id":"89cfcea0a726b84ff220013102059954e88503ac"}]}
