)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"c2a1e2aff8f06f57fe28a89b8970475cf279d473","unresolved":false,"context_lines":[{"line_number":21,"context_line":"environment variable \"OVERRIDE_IP_FOR_NFS_ACCESS\" with the"},{"line_number":22,"context_line":"intended value before running devstack."},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"This change is enabled and tested alongside a change on"},{"line_number":25,"context_line":"manila-tempest-plugin project."},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"Change-Id: I4ca727f92618998242af18908bbbda6bb5f86303"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":6,"id":"7f96bb07_9b67f6e9","line":25,"range":{"start_line":24,"start_character":0,"end_line":25,"end_character":30},"updated":"2018-01-18 06:33:51.000000000","message":"Could you add the change ID here? Either in this sentence, or with:\n\nNeeded-By: \u003cmanila-tempest-plugin Change-ID\u003e","commit_id":"5d61382aab10fa069f90f739327820c6980713ca"},{"author":{"_account_id":14567,"name":"Rodrigo Barbieri","email":"rodrigo.barbieri2010@gmail.com","username":"ganso"},"change_message_id":"d760917fd7efc3bc10c673c1ad9254bb48bf73f4","unresolved":false,"context_lines":[{"line_number":21,"context_line":"environment variable \"OVERRIDE_IP_FOR_NFS_ACCESS\" with the"},{"line_number":22,"context_line":"intended value before running devstack."},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"This change is enabled and tested alongside a change on"},{"line_number":25,"context_line":"manila-tempest-plugin project."},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"Change-Id: I4ca727f92618998242af18908bbbda6bb5f86303"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":6,"id":"7f96bb07_0a286794","line":25,"range":{"start_line":24,"start_character":0,"end_line":25,"end_character":30},"in_reply_to":"7f96bb07_9b67f6e9","updated":"2018-01-18 11:11:14.000000000","message":"hmm I didn\u0027t know this \"needed-by\" tag, will add. First I will upload the one with depends-on to debug the changes.","commit_id":"5d61382aab10fa069f90f739327820c6980713ca"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"c2a1e2aff8f06f57fe28a89b8970475cf279d473","unresolved":false,"context_lines":[{"line_number":23,"context_line":""},{"line_number":24,"context_line":"This change is enabled and tested alongside a change on"},{"line_number":25,"context_line":"manila-tempest-plugin project."},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"Change-Id: I4ca727f92618998242af18908bbbda6bb5f86303"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":6,"id":"7f96bb07_5bb2ce4a","line":26,"range":{"start_line":26,"start_character":0,"end_line":26,"end_character":0},"updated":"2018-01-18 06:33:51.000000000","message":"I suppose there is another manila patch? \n\none that flips the options in https://review.openstack.org/#/c/529142/6/contrib/ci/pre_test_hook.sh@146\nhttps://review.openstack.org/#/c/529142/6/playbooks/legacy/manila-tempest-minimal-dsvm-lvm-centos-7/run.yaml@59","commit_id":"5d61382aab10fa069f90f739327820c6980713ca"},{"author":{"_account_id":14567,"name":"Rodrigo Barbieri","email":"rodrigo.barbieri2010@gmail.com","username":"ganso"},"change_message_id":"d760917fd7efc3bc10c673c1ad9254bb48bf73f4","unresolved":false,"context_lines":[{"line_number":23,"context_line":""},{"line_number":24,"context_line":"This change is enabled and tested alongside a change on"},{"line_number":25,"context_line":"manila-tempest-plugin project."},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"Change-Id: I4ca727f92618998242af18908bbbda6bb5f86303"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":6,"id":"7f96bb07_aa1cd377","line":26,"range":{"start_line":26,"start_character":0,"end_line":26,"end_character":0},"in_reply_to":"7f96bb07_5bb2ce4a","updated":"2018-01-18 11:11:14.000000000","message":"exactly, it will depend on this and the one in manila-tempest-plugin","commit_id":"5d61382aab10fa069f90f739327820c6980713ca"}],"manila/share/utils.py":[{"author":{"_account_id":15100,"name":"zhongjun","email":"jun.zhongjun2@gmail.com","username":"zhongjun2"},"change_message_id":"bc5dd3ceed16ede1620549502dbb23eb4a9c9fee","unresolved":false,"context_lines":[{"line_number":156,"context_line":"    return migration.version()"},{"line_number":157,"context_line":""},{"line_number":158,"context_line":""},{"line_number":159,"context_line":"ipv6_regex \u003d re.compile(r\u0027(:.+:/|\\\\.+:.+\\\\)\u0027)"},{"line_number":160,"context_line":""},{"line_number":161,"context_line":""},{"line_number":162,"context_line":"def is_ipv6_export_location(ip):"},{"line_number":163,"context_line":"    return ipv6_regex.search(ip) is not None"}],"source_content_type":"text/x-python","patch_set":12,"id":"7f96bb07_ff49c231","line":162,"range":{"start_line":159,"start_character":0,"end_line":162,"end_character":32},"updated":"2018-01-23 11:22:48.000000000","message":"The ipv6 export location patch could be [2001:db8::60fe:5bff:febc:912]:/home/abhitesh, so how about \u0027[]\u0027?","commit_id":"f54407506eb48f2744ad4c9e3b145d0332436497"},{"author":{"_account_id":2417,"name":"Ben Swartzlander","email":"ben@swartzlander.org","username":"bswartz"},"change_message_id":"0037b9ce6fed850032f96b7afb8f2b5b392ebb72","unresolved":false,"context_lines":[{"line_number":156,"context_line":"    return migration.version()"},{"line_number":157,"context_line":""},{"line_number":158,"context_line":""},{"line_number":159,"context_line":"ipv6_regex \u003d re.compile(r\u0027(:.+:/|\\\\.+:.+\\\\)\u0027)"},{"line_number":160,"context_line":""},{"line_number":161,"context_line":""},{"line_number":162,"context_line":"def is_ipv6_export_location(ip):"},{"line_number":163,"context_line":"    return ipv6_regex.search(ip) is not None"}],"source_content_type":"text/x-python","patch_set":12,"id":"7f96bb07_894ac152","line":162,"range":{"start_line":159,"start_character":0,"end_line":162,"end_character":32},"in_reply_to":"7f96bb07_e36e0495","updated":"2018-01-23 15:44:12.000000000","message":"I also don\u0027t like this method. It needs to first figure out what kind of export location it\u0027s looking at (NFS, CIFS, etc) then parse the export location, extract the IP address, then figure out what kind of address it has.\n\nFor one thing, I suspect this would fail to notice IPv6 CIFS shares. Because \":\" is an illegal character is CIFS shares, actual IPv6 CIFS share look like this:\n\n \\\\fd87--1.ipv6-literal.net\\share-name","commit_id":"f54407506eb48f2744ad4c9e3b145d0332436497"},{"author":{"_account_id":14567,"name":"Rodrigo Barbieri","email":"rodrigo.barbieri2010@gmail.com","username":"ganso"},"change_message_id":"5da0e73f35824d417ad2ea3d1d48c2657f78f084","unresolved":false,"context_lines":[{"line_number":156,"context_line":"    return migration.version()"},{"line_number":157,"context_line":""},{"line_number":158,"context_line":""},{"line_number":159,"context_line":"ipv6_regex \u003d re.compile(r\u0027(:.+:/|\\\\.+:.+\\\\)\u0027)"},{"line_number":160,"context_line":""},{"line_number":161,"context_line":""},{"line_number":162,"context_line":"def is_ipv6_export_location(ip):"},{"line_number":163,"context_line":"    return ipv6_regex.search(ip) is not None"}],"source_content_type":"text/x-python","patch_set":12,"id":"7f96bb07_e36e0495","line":162,"range":{"start_line":159,"start_character":0,"end_line":162,"end_character":32},"in_reply_to":"7f96bb07_ff49c231","updated":"2018-01-23 15:15:44.000000000","message":"For the purpose of identifying ipv6 vs ipv4 addresses, the above regex work independently of \"[]\". I\u0027ll add unit tests to cover this. Thanks!","commit_id":"f54407506eb48f2744ad4c9e3b145d0332436497"},{"author":{"_account_id":2417,"name":"Ben Swartzlander","email":"ben@swartzlander.org","username":"bswartz"},"change_message_id":"ad64128c0b2a81b72a228f3583a7bd2c60465bc6","unresolved":false,"context_lines":[{"line_number":154,"context_line":"    return migration.version()"},{"line_number":155,"context_line":""},{"line_number":156,"context_line":""},{"line_number":157,"context_line":"def is_not_proper_ipv4_export_location(export, protocol):"},{"line_number":158,"context_line":"    \"\"\"Verifies if the export location is possibly in IPv6 format."},{"line_number":159,"context_line":""},{"line_number":160,"context_line":"    When returning True, this helper function ensures that the export location"}],"source_content_type":"text/x-python","patch_set":13,"id":"5f93b717_4074f099","line":157,"range":{"start_line":157,"start_character":3,"end_line":157,"end_character":38},"updated":"2018-01-24 15:59:12.000000000","message":"Boolean functions shouldn\u0027t have \"not\" in their name. It\u0027s better to call this is_proper_ipv4_export_location() and to invert the return value, then invert all the call sites.","commit_id":"c21156de094c996521d929700e259930e767e620"},{"author":{"_account_id":14567,"name":"Rodrigo Barbieri","email":"rodrigo.barbieri2010@gmail.com","username":"ganso"},"change_message_id":"b5148f966db5b7e1add1acd438c7ae7d5510dedc","unresolved":false,"context_lines":[{"line_number":154,"context_line":"    return migration.version()"},{"line_number":155,"context_line":""},{"line_number":156,"context_line":""},{"line_number":157,"context_line":"def is_not_proper_ipv4_export_location(export, protocol):"},{"line_number":158,"context_line":"    \"\"\"Verifies if the export location is possibly in IPv6 format."},{"line_number":159,"context_line":""},{"line_number":160,"context_line":"    When returning True, this helper function ensures that the export location"}],"source_content_type":"text/x-python","patch_set":13,"id":"5f93b717_f7caa04d","line":157,"range":{"start_line":157,"start_character":3,"end_line":157,"end_character":38},"in_reply_to":"5f93b717_4074f099","updated":"2018-01-24 18:59:10.000000000","message":"Done","commit_id":"c21156de094c996521d929700e259930e767e620"},{"author":{"_account_id":2417,"name":"Ben Swartzlander","email":"ben@swartzlander.org","username":"bswartz"},"change_message_id":"ad64128c0b2a81b72a228f3583a7bd2c60465bc6","unresolved":false,"context_lines":[{"line_number":170,"context_line":"    if protocol \u003d\u003d \u0027nfs\u0027:"},{"line_number":171,"context_line":"        return \u0027:/\u0027 in export and export.split(\u0027:/\u0027)[0].count(\u0027:\u0027) \u003e 1"},{"line_number":172,"context_line":"    elif protocol \u003d\u003d \u0027cifs\u0027:"},{"line_number":173,"context_line":"        ip \u003d export.split(\u0027\\\\\u0027)[2]"},{"line_number":174,"context_line":"        return export.startswith(r\u0027\\\\\u0027) and ("},{"line_number":175,"context_line":"            ip.count(\u0027:\u0027) \u003e 1 or ip.endswith(\u0027ipv6-literal.net\u0027))"},{"line_number":176,"context_line":"    else:"}],"source_content_type":"text/x-python","patch_set":13,"id":"5f93b717_400dd035","line":173,"range":{"start_line":173,"start_character":13,"end_line":173,"end_character":34},"updated":"2018-01-24 15:59:12.000000000","message":"Will throw IndexError on malformed CIFS share. Move this inside the startswith(r\u0027\\\\\u0027) test.","commit_id":"c21156de094c996521d929700e259930e767e620"},{"author":{"_account_id":14567,"name":"Rodrigo Barbieri","email":"rodrigo.barbieri2010@gmail.com","username":"ganso"},"change_message_id":"b5148f966db5b7e1add1acd438c7ae7d5510dedc","unresolved":false,"context_lines":[{"line_number":170,"context_line":"    if protocol \u003d\u003d \u0027nfs\u0027:"},{"line_number":171,"context_line":"        return \u0027:/\u0027 in export and export.split(\u0027:/\u0027)[0].count(\u0027:\u0027) \u003e 1"},{"line_number":172,"context_line":"    elif protocol \u003d\u003d \u0027cifs\u0027:"},{"line_number":173,"context_line":"        ip \u003d export.split(\u0027\\\\\u0027)[2]"},{"line_number":174,"context_line":"        return export.startswith(r\u0027\\\\\u0027) and ("},{"line_number":175,"context_line":"            ip.count(\u0027:\u0027) \u003e 1 or ip.endswith(\u0027ipv6-literal.net\u0027))"},{"line_number":176,"context_line":"    else:"}],"source_content_type":"text/x-python","patch_set":13,"id":"5f93b717_17c86c53","line":173,"range":{"start_line":173,"start_character":13,"end_line":173,"end_character":34},"in_reply_to":"5f93b717_400dd035","updated":"2018-01-24 18:59:10.000000000","message":"Done","commit_id":"c21156de094c996521d929700e259930e767e620"}],"manila/tests/share/test_share_utils.py":[{"author":{"_account_id":2417,"name":"Ben Swartzlander","email":"ben@swartzlander.org","username":"bswartz"},"change_message_id":"ad64128c0b2a81b72a228f3583a7bd2c60465bc6","unresolved":false,"context_lines":[{"line_number":174,"context_line":"               \u0027expected\u0027: True},"},{"line_number":175,"context_line":"              {\u0027exp\u0027: \u0027fd01::1:/my_export_location\u0027, \u0027proto\u0027: \u0027nfs\u0027,"},{"line_number":176,"context_line":"               \u0027expected\u0027: True},"},{"line_number":177,"context_line":"              {\u0027exp\u0027: \u0027\\\\\\\\fd01::1\\\\foo\\\\bar\u0027, \u0027proto\u0027: \u0027cifs\u0027,"},{"line_number":178,"context_line":"               \u0027expected\u0027: True},"},{"line_number":179,"context_line":"              {\u0027exp\u0027: \u0027\\\\\\\\[fd01::1]\\\\foo\\\\bar\u0027, \u0027proto\u0027: \u0027cifs\u0027,"},{"line_number":180,"context_line":"               \u0027expected\u0027: True},"},{"line_number":181,"context_line":"              {\u0027exp\u0027: \u0027[fad0:88::133]:/my_export_location\u0027, \u0027proto\u0027: \u0027nfs\u0027,"}],"source_content_type":"text/x-python","patch_set":13,"id":"5f93b717_5d629b18","line":178,"range":{"start_line":177,"start_character":14,"end_line":178,"end_character":33},"updated":"2018-01-24 15:59:12.000000000","message":"This is invalid IPv6","commit_id":"c21156de094c996521d929700e259930e767e620"},{"author":{"_account_id":2417,"name":"Ben Swartzlander","email":"ben@swartzlander.org","username":"bswartz"},"change_message_id":"ad64128c0b2a81b72a228f3583a7bd2c60465bc6","unresolved":false,"context_lines":[{"line_number":186,"context_line":"               \u0027expected\u0027: True},"},{"line_number":187,"context_line":"              {\u0027exp\u0027: \u0027\\\\\\\\fad0-88--133.ipv6-literal.net\\\\foo\\\\bar\u0027,"},{"line_number":188,"context_line":"               \u0027proto\u0027: \u0027cifs\u0027, \u0027expected\u0027: True},"},{"line_number":189,"context_line":"              {\u0027exp\u0027: \u0027\\\\\\\\[fd01--1.ipv6-literal.net]\\\\foo\\\\bar\u0027,"},{"line_number":190,"context_line":"               \u0027proto\u0027: \u0027cifs\u0027, \u0027expected\u0027: True},"},{"line_number":191,"context_line":"              {\u0027exp\u0027: \u0027172.24.5.1:8080/my_export_location\u0027, \u0027proto\u0027: \u0027other\u0027,"},{"line_number":192,"context_line":"               \u0027expected\u0027: False},"},{"line_number":193,"context_line":"              {\u0027exp\u0027: \u0027172.24.5.1:8080:/my_export_location\u0027, \u0027proto\u0027: \u0027other\u0027,"}],"source_content_type":"text/x-python","patch_set":13,"id":"5f93b717_3d71cfe1","line":190,"range":{"start_line":189,"start_character":13,"end_line":190,"end_character":50},"updated":"2018-01-24 15:59:12.000000000","message":"This is invalid IPv6","commit_id":"c21156de094c996521d929700e259930e767e620"}]}
