)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":19144,"name":"José Mello","email":"jose.eduardo.jr@gmail.com","username":"jose-eduardo-jr"},"change_message_id":"195fe21cf9cc4e58094573ac29cbb2919671b6e4","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     tpsilva \u003ctiago.pasqualini@gmail.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2016-06-13 15:05:47 -0300"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Add Hitachi HSP driver"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This patch adds the Hitachi HSP driver."},{"line_number":10,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"7aa08908_3352e367","line":7,"range":{"start_line":7,"start_character":0,"end_line":7,"end_character":22},"updated":"2016-06-13 20:01:46.000000000","message":"Please add WIP","commit_id":"4550281f865d0a856959b81274ca0f16bf94d470"},{"author":{"_account_id":14567,"name":"Rodrigo Barbieri","email":"rodrigo.barbieri2010@gmail.com","username":"ganso"},"change_message_id":"59534128417b1a2b383c87997680d3fde9cc0225","unresolved":false,"context_lines":[{"line_number":9,"context_line":"This patch adds the Hitachi HSP driver."},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"The driver is still under development. Early reviews are welcome."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Change-Id: Ie3028cbff56873721dc51ff4d7fccf7fb7e99611"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"7aa08908_6c001003","line":12,"updated":"2016-06-13 18:31:12.000000000","message":"add a blueprint","commit_id":"4550281f865d0a856959b81274ca0f16bf94d470"},{"author":{"_account_id":15100,"name":"zhongjun","email":"jun.zhongjun2@gmail.com","username":"zhongjun2"},"change_message_id":"20b3efa0a0bfec898573d7bdcc4bd1491eae93dd","unresolved":false,"context_lines":[{"line_number":9,"context_line":"This patch adds the Hitachi HSP driver."},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"The driver is still under development. Early reviews are welcome."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Change-Id: Ie3028cbff56873721dc51ff4d7fccf7fb7e99611"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"7aa08908_f7795d94","line":12,"in_reply_to":"7aa08908_6c001003","updated":"2016-06-14 02:23:15.000000000","message":"+1","commit_id":"4550281f865d0a856959b81274ca0f16bf94d470"},{"author":{"_account_id":17097,"name":"Tiago Pasqualini da Silva","email":"t.pasqualini@luizalabs.com","username":"tiago.pasqualini"},"change_message_id":"6eae1a42ab9a0c21ecb1c9f8856ca393384c8397","unresolved":false,"context_lines":[{"line_number":9,"context_line":"This patch adds the Hitachi HSP driver."},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"The driver is still under development. Early reviews are welcome."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Change-Id: Ie3028cbff56873721dc51ff4d7fccf7fb7e99611"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"5a9d85d2_b004b6c6","line":12,"in_reply_to":"7aa08908_f7795d94","updated":"2016-06-18 19:36:14.000000000","message":"Done","commit_id":"4550281f865d0a856959b81274ca0f16bf94d470"},{"author":{"_account_id":11865,"name":"Clinton Knight","email":"cknight@netapp.com","username":"cknight"},"change_message_id":"7d433f3cecd1d9febbc3d2b94dd2b879597898d2","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This patch adds the Hitachi HSP driver."},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"Unit tests will be added on a future patch."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Implements: blueprint hsp-driver"},{"line_number":14,"context_line":"Change-Id: Ie3028cbff56873721dc51ff4d7fccf7fb7e99611"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":6,"id":"3aaa91ec_949bac65","line":11,"range":{"start_line":11,"start_character":0,"end_line":11,"end_character":43},"updated":"2016-06-24 15:12:04.000000000","message":"What does this mean?  If you mean \"unit tests will be added to a future patch set on this commit\", no problem.  They cannot be a separate patch.  But I would just mark this patch as WIP and remove this comment from the commit message.","commit_id":"0a5df6e2cd45d798269799ac8f18bbb2d0c396fc"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"e4ce2717d54dda3a62dd21f7a2a77f428593dedb","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This patch adds the Hitachi HSP driver."},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"Co-Author: Marcus V R Nascimento \u003cmarcusvrn@gmail.com\u003e"},{"line_number":12,"context_line":"Implements: blueprint hsp-driver"},{"line_number":13,"context_line":"Change-Id: Ie3028cbff56873721dc51ff4d7fccf7fb7e99611"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":11,"id":"bacf61ea_cfde4a10","line":11,"range":{"start_line":11,"start_character":0,"end_line":11,"end_character":9},"updated":"2016-07-31 21:15:54.000000000","message":"Co-Authored-By:","commit_id":"cfec736f0f194b65b871e791927820ef9f29868e"},{"author":{"_account_id":17097,"name":"Tiago Pasqualini da Silva","email":"t.pasqualini@luizalabs.com","username":"tiago.pasqualini"},"change_message_id":"0cc7f08c6809ae893d69bc21e62d26c3b8a9981b","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This patch adds the Hitachi HSP driver."},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"Co-Author: Marcus V R Nascimento \u003cmarcusvrn@gmail.com\u003e"},{"line_number":12,"context_line":"Implements: blueprint hsp-driver"},{"line_number":13,"context_line":"Change-Id: Ie3028cbff56873721dc51ff4d7fccf7fb7e99611"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":11,"id":"bacf61ea_df61a3d4","line":11,"range":{"start_line":11,"start_character":0,"end_line":11,"end_character":9},"in_reply_to":"bacf61ea_cfde4a10","updated":"2016-08-01 21:18:42.000000000","message":"Done","commit_id":"cfec736f0f194b65b871e791927820ef9f29868e"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"0e7ea8845a3b6b37d9271f38650fac23ef65bdc9","unresolved":false,"context_lines":[{"line_number":7,"context_line":"Add Hitachi HSP driver"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This patch adds the Hitachi HSP driver."},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"Co-Authored-By: Marcus V R Nascimento \u003cmarcusvrn@gmail.com\u003e"},{"line_number":12,"context_line":"Implements: blueprint hsp-driver"},{"line_number":13,"context_line":"Change-Id: Ie3028cbff56873721dc51ff4d7fccf7fb7e99611"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":26,"id":"3ac371cc_e12ae12b","line":10,"range":{"start_line":10,"start_character":0,"end_line":10,"end_character":0},"updated":"2016-08-14 15:27:40.000000000","message":"DocImpact","commit_id":"e0fbcc2114191bfe759ccd54722653bf9983c3fc"}],"doc/source/devref/share_back_ends_feature_support_mapping.rst":[{"author":{"_account_id":19144,"name":"José Mello","email":"jose.eduardo.jr@gmail.com","username":"jose-eduardo-jr"},"change_message_id":"195fe21cf9cc4e58094573ac29cbb2919671b6e4","unresolved":false,"context_lines":[{"line_number":51,"context_line":"+----------------------------------------+-----------------------+-----------------------+--------------+--------------+------------------------+----------------------------+--------------------------+"},{"line_number":52,"context_line":"|              Hitachi HNAS              |           L           |           L           |       L      |       M      |            L           |              L             |            \\-            |"},{"line_number":53,"context_line":"+----------------------------------------+-----------------------+-----------------------+--------------+--------------+------------------------+----------------------------+--------------------------+"},{"line_number":54,"context_line":"|              Hitachi HSP               |           N           |          \\-           |      \\-      |      \\-      |           \\-           |             \\-             |            \\-            |"},{"line_number":55,"context_line":"+----------------------------------------+-----------------------+-----------------------+--------------+--------------+------------------------+----------------------------+--------------------------+"},{"line_number":56,"context_line":"|                HPE 3PAR                |           K           |          \\-           |      \\-      |      \\-      |            K           |              K             |            \\-            |"},{"line_number":57,"context_line":"+----------------------------------------+-----------------------+-----------------------+--------------+--------------+------------------------+----------------------------+--------------------------+"}],"source_content_type":"text/x-rst","patch_set":1,"id":"7aa08908_139c070d","line":54,"range":{"start_line":54,"start_character":13,"end_line":54,"end_character":27},"updated":"2016-06-13 20:01:46.000000000","message":"Two additional features should be in Newton:\nManage/Unmanage Share\nExtend/Shrink Share","commit_id":"4550281f865d0a856959b81274ca0f16bf94d470"},{"author":{"_account_id":17097,"name":"Tiago Pasqualini da Silva","email":"t.pasqualini@luizalabs.com","username":"tiago.pasqualini"},"change_message_id":"6eae1a42ab9a0c21ecb1c9f8856ca393384c8397","unresolved":false,"context_lines":[{"line_number":51,"context_line":"+----------------------------------------+-----------------------+-----------------------+--------------+--------------+------------------------+----------------------------+--------------------------+"},{"line_number":52,"context_line":"|              Hitachi HNAS              |           L           |           L           |       L      |       M      |            L           |              L             |            \\-            |"},{"line_number":53,"context_line":"+----------------------------------------+-----------------------+-----------------------+--------------+--------------+------------------------+----------------------------+--------------------------+"},{"line_number":54,"context_line":"|              Hitachi HSP               |           N           |          \\-           |      \\-      |      \\-      |           \\-           |             \\-             |            \\-            |"},{"line_number":55,"context_line":"+----------------------------------------+-----------------------+-----------------------+--------------+--------------+------------------------+----------------------------+--------------------------+"},{"line_number":56,"context_line":"|                HPE 3PAR                |           K           |          \\-           |      \\-      |      \\-      |            K           |              K             |            \\-            |"},{"line_number":57,"context_line":"+----------------------------------------+-----------------------+-----------------------+--------------+--------------+------------------------+----------------------------+--------------------------+"}],"source_content_type":"text/x-rst","patch_set":1,"id":"5a9d85d2_8d3521f9","line":54,"range":{"start_line":54,"start_character":13,"end_line":54,"end_character":27},"in_reply_to":"7aa08908_139c070d","updated":"2016-06-18 19:36:14.000000000","message":"I made it consistent with the current implementation. It\u0027s updated on the next patch.","commit_id":"4550281f865d0a856959b81274ca0f16bf94d470"}],"manila/exception.py":[{"author":{"_account_id":19144,"name":"José Mello","email":"jose.eduardo.jr@gmail.com","username":"jose-eduardo-jr"},"change_message_id":"195fe21cf9cc4e58094573ac29cbb2919671b6e4","unresolved":false,"context_lines":[{"line_number":784,"context_line":"    message \u003d _(\"Could not communicate with storage array.\")"},{"line_number":785,"context_line":""},{"line_number":786,"context_line":""},{"line_number":787,"context_line":"class HSPBackendException(ManilaException):"},{"line_number":788,"context_line":"    message \u003d _(\"HSP Backend Exception: %(msg)s\")"}],"source_content_type":"text/x-python","patch_set":1,"id":"7aa08908_f3b7bb82","line":787,"range":{"start_line":787,"start_character":0,"end_line":787,"end_character":43},"updated":"2016-06-13 20:01:46.000000000","message":"Please add the comment above to identify Hitachi Scaleout Platform Storage Driver","commit_id":"4550281f865d0a856959b81274ca0f16bf94d470"},{"author":{"_account_id":17097,"name":"Tiago Pasqualini da Silva","email":"t.pasqualini@luizalabs.com","username":"tiago.pasqualini"},"change_message_id":"6eae1a42ab9a0c21ecb1c9f8856ca393384c8397","unresolved":false,"context_lines":[{"line_number":784,"context_line":"    message \u003d _(\"Could not communicate with storage array.\")"},{"line_number":785,"context_line":""},{"line_number":786,"context_line":""},{"line_number":787,"context_line":"class HSPBackendException(ManilaException):"},{"line_number":788,"context_line":"    message \u003d _(\"HSP Backend Exception: %(msg)s\")"}],"source_content_type":"text/x-python","patch_set":1,"id":"5a9d85d2_cd3f29d5","line":787,"range":{"start_line":787,"start_character":0,"end_line":787,"end_character":43},"in_reply_to":"7aa08908_f3b7bb82","updated":"2016-06-18 19:36:14.000000000","message":"Done","commit_id":"4550281f865d0a856959b81274ca0f16bf94d470"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"61f19250152138b1da3b379495dbd08bc26fbf61","unresolved":false,"context_lines":[{"line_number":790,"context_line":""},{"line_number":791,"context_line":""},{"line_number":792,"context_line":"class HSPItemNotFoundException(ManilaException):"},{"line_number":793,"context_line":"    message \u003d _(\"HSP Item  Not Found Exception: %(msg)s\")"}],"source_content_type":"text/x-python","patch_set":3,"id":"5a9d85d2_b387a011","line":793,"range":{"start_line":793,"start_character":25,"end_line":793,"end_character":27},"updated":"2016-06-18 23:12:50.000000000","message":"s/\"  \"/\" \"","commit_id":"bb2d7eae547d4a8bf65fe91970be288e76da4518"},{"author":{"_account_id":17097,"name":"Tiago Pasqualini da Silva","email":"t.pasqualini@luizalabs.com","username":"tiago.pasqualini"},"change_message_id":"2c95ec9773af514298bf181d826add28f245017c","unresolved":false,"context_lines":[{"line_number":790,"context_line":""},{"line_number":791,"context_line":""},{"line_number":792,"context_line":"class HSPItemNotFoundException(ManilaException):"},{"line_number":793,"context_line":"    message \u003d _(\"HSP Item  Not Found Exception: %(msg)s\")"}],"source_content_type":"text/x-python","patch_set":3,"id":"5a9d85d2_73d87df0","line":793,"range":{"start_line":793,"start_character":25,"end_line":793,"end_character":27},"in_reply_to":"5a9d85d2_b387a011","updated":"2016-06-20 13:00:17.000000000","message":"Done","commit_id":"bb2d7eae547d4a8bf65fe91970be288e76da4518"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"3cafd5b06703728bbd33d55b09d1355205b3adf6","unresolved":false,"context_lines":[{"line_number":785,"context_line":""},{"line_number":786,"context_line":""},{"line_number":787,"context_line":"# Hitachi Scaleout Platform driver"},{"line_number":788,"context_line":"class HSPBackendException(ManilaException):"},{"line_number":789,"context_line":"    message \u003d _(\"HSP Backend Exception: %(msg)s\")"},{"line_number":790,"context_line":""},{"line_number":791,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"1aa78d24_29b9c679","line":788,"updated":"2016-07-06 21:12:16.000000000","message":"Better inherit from ShareBackendException","commit_id":"0a5df6e2cd45d798269799ac8f18bbb2d0c396fc"},{"author":{"_account_id":17097,"name":"Tiago Pasqualini da Silva","email":"t.pasqualini@luizalabs.com","username":"tiago.pasqualini"},"change_message_id":"ef1ce939d52d2b0d98f344606aaea00290bb874c","unresolved":false,"context_lines":[{"line_number":785,"context_line":""},{"line_number":786,"context_line":""},{"line_number":787,"context_line":"# Hitachi Scaleout Platform driver"},{"line_number":788,"context_line":"class HSPBackendException(ManilaException):"},{"line_number":789,"context_line":"    message \u003d _(\"HSP Backend Exception: %(msg)s\")"},{"line_number":790,"context_line":""},{"line_number":791,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"1aa78d24_309090ec","line":788,"in_reply_to":"1aa78d24_29b9c679","updated":"2016-07-11 19:04:33.000000000","message":"Done","commit_id":"0a5df6e2cd45d798269799ac8f18bbb2d0c396fc"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"3cafd5b06703728bbd33d55b09d1355205b3adf6","unresolved":false,"context_lines":[{"line_number":789,"context_line":"    message \u003d _(\"HSP Backend Exception: %(msg)s\")"},{"line_number":790,"context_line":""},{"line_number":791,"context_line":""},{"line_number":792,"context_line":"class HSPItemNotFoundException(ManilaException):"},{"line_number":793,"context_line":"    message \u003d _(\"HSP Item Not Found Exception: %(msg)s\")"}],"source_content_type":"text/x-python","patch_set":6,"id":"1aa78d24_89b27a92","line":792,"updated":"2016-07-06 21:12:16.000000000","message":"Better inherit from NotFound","commit_id":"0a5df6e2cd45d798269799ac8f18bbb2d0c396fc"},{"author":{"_account_id":17097,"name":"Tiago Pasqualini da Silva","email":"t.pasqualini@luizalabs.com","username":"tiago.pasqualini"},"change_message_id":"ef1ce939d52d2b0d98f344606aaea00290bb874c","unresolved":false,"context_lines":[{"line_number":789,"context_line":"    message \u003d _(\"HSP Backend Exception: %(msg)s\")"},{"line_number":790,"context_line":""},{"line_number":791,"context_line":""},{"line_number":792,"context_line":"class HSPItemNotFoundException(ManilaException):"},{"line_number":793,"context_line":"    message \u003d _(\"HSP Item Not Found Exception: %(msg)s\")"}],"source_content_type":"text/x-python","patch_set":6,"id":"1aa78d24_90bb4475","line":792,"in_reply_to":"1aa78d24_89b27a92","updated":"2016-07-11 19:04:33.000000000","message":"Done","commit_id":"0a5df6e2cd45d798269799ac8f18bbb2d0c396fc"}],"manila/opts.py":[{"author":{"_account_id":19144,"name":"José Mello","email":"jose.eduardo.jr@gmail.com","username":"jose-eduardo-jr"},"change_message_id":"195fe21cf9cc4e58094573ac29cbb2919671b6e4","unresolved":false,"context_lines":[{"line_number":125,"context_line":"    glusterfs_directory_mapped_opts,"},{"line_number":126,"context_line":"    manila.share.drivers.glusterfs.layout_volume.glusterfs_volume_mapped_opts,"},{"line_number":127,"context_line":"    manila.share.drivers.hdfs.hdfs_native.hdfs_native_share_opts,"},{"line_number":128,"context_line":"    manila.share.drivers.hitachi.hds_hnas.hds_hnas_opts,"},{"line_number":129,"context_line":"    manila.share.drivers.hitachi.hsp.hitachi_hsp_opts,"},{"line_number":130,"context_line":"    manila.share.drivers.hpe.hpe_3par_driver.HPE3PAR_OPTS,"},{"line_number":131,"context_line":"    manila.share.drivers.huawei.huawei_nas.huawei_opts,"},{"line_number":132,"context_line":"    manila.share.drivers.ibm.gpfs.gpfs_share_opts,"}],"source_content_type":"text/x-python","patch_set":1,"id":"7aa08908_b36893f6","line":129,"range":{"start_line":128,"start_character":5,"end_line":129,"end_character":54},"updated":"2016-06-13 20:01:46.000000000","message":"What should be the naming standard for the Hitachi drivers ?","commit_id":"4550281f865d0a856959b81274ca0f16bf94d470"},{"author":{"_account_id":17097,"name":"Tiago Pasqualini da Silva","email":"t.pasqualini@luizalabs.com","username":"tiago.pasqualini"},"change_message_id":"6eae1a42ab9a0c21ecb1c9f8856ca393384c8397","unresolved":false,"context_lines":[{"line_number":125,"context_line":"    glusterfs_directory_mapped_opts,"},{"line_number":126,"context_line":"    manila.share.drivers.glusterfs.layout_volume.glusterfs_volume_mapped_opts,"},{"line_number":127,"context_line":"    manila.share.drivers.hdfs.hdfs_native.hdfs_native_share_opts,"},{"line_number":128,"context_line":"    manila.share.drivers.hitachi.hds_hnas.hds_hnas_opts,"},{"line_number":129,"context_line":"    manila.share.drivers.hitachi.hsp.hitachi_hsp_opts,"},{"line_number":130,"context_line":"    manila.share.drivers.hpe.hpe_3par_driver.HPE3PAR_OPTS,"},{"line_number":131,"context_line":"    manila.share.drivers.huawei.huawei_nas.huawei_opts,"},{"line_number":132,"context_line":"    manila.share.drivers.ibm.gpfs.gpfs_share_opts,"}],"source_content_type":"text/x-python","patch_set":1,"id":"5a9d85d2_0d22d1b9","line":129,"range":{"start_line":128,"start_character":5,"end_line":129,"end_character":54},"in_reply_to":"7aa08908_b36893f6","updated":"2016-06-18 19:36:14.000000000","message":"It should be all Hitachi. The HNAS driver will be renamed on a future patch.","commit_id":"4550281f865d0a856959b81274ca0f16bf94d470"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"8efbfad33118df6e35f1af37bedb414b190cd871","unresolved":false,"context_lines":[{"line_number":128,"context_line":"    manila.share.drivers.glusterfs.layout_volume.glusterfs_volume_mapped_opts,"},{"line_number":129,"context_line":"    manila.share.drivers.hdfs.hdfs_native.hdfs_native_share_opts,"},{"line_number":130,"context_line":"    manila.share.drivers.hitachi.hds_hnas.hds_hnas_opts,"},{"line_number":131,"context_line":"    manila.share.drivers.hitachi.hsp.hitachi_hsp_opts,"},{"line_number":132,"context_line":"    manila.share.drivers.hpe.hpe_3par_driver.HPE3PAR_OPTS,"},{"line_number":133,"context_line":"    manila.share.drivers.huawei.huawei_nas.huawei_opts,"},{"line_number":134,"context_line":"    manila.share.drivers.ibm.gpfs.gpfs_share_opts,"}],"source_content_type":"text/x-python","patch_set":25,"id":"9ad45d7e_6d7a83be","line":131,"range":{"start_line":131,"start_character":33,"end_line":131,"end_character":37},"updated":"2016-08-12 00:34:47.000000000","message":"hsp.hsp","commit_id":"be17f7f4b3ec3312b9631db369e60c612c89fbcf"},{"author":{"_account_id":17097,"name":"Tiago Pasqualini da Silva","email":"t.pasqualini@luizalabs.com","username":"tiago.pasqualini"},"change_message_id":"54a693dcd2d6f3b7857d0f764865a9dbb97ad4d4","unresolved":false,"context_lines":[{"line_number":128,"context_line":"    manila.share.drivers.glusterfs.layout_volume.glusterfs_volume_mapped_opts,"},{"line_number":129,"context_line":"    manila.share.drivers.hdfs.hdfs_native.hdfs_native_share_opts,"},{"line_number":130,"context_line":"    manila.share.drivers.hitachi.hds_hnas.hds_hnas_opts,"},{"line_number":131,"context_line":"    manila.share.drivers.hitachi.hsp.hitachi_hsp_opts,"},{"line_number":132,"context_line":"    manila.share.drivers.hpe.hpe_3par_driver.HPE3PAR_OPTS,"},{"line_number":133,"context_line":"    manila.share.drivers.huawei.huawei_nas.huawei_opts,"},{"line_number":134,"context_line":"    manila.share.drivers.ibm.gpfs.gpfs_share_opts,"}],"source_content_type":"text/x-python","patch_set":25,"id":"9ad45d7e_8f917455","line":131,"range":{"start_line":131,"start_character":33,"end_line":131,"end_character":37},"in_reply_to":"9ad45d7e_50dbd47b","updated":"2016-08-12 19:55:11.000000000","message":"Changed on next patch.","commit_id":"be17f7f4b3ec3312b9631db369e60c612c89fbcf"},{"author":{"_account_id":14567,"name":"Rodrigo Barbieri","email":"rodrigo.barbieri2010@gmail.com","username":"ganso"},"change_message_id":"c1bbfea4e14abe4492fe18e186dd20c5ac4497be","unresolved":false,"context_lines":[{"line_number":128,"context_line":"    manila.share.drivers.glusterfs.layout_volume.glusterfs_volume_mapped_opts,"},{"line_number":129,"context_line":"    manila.share.drivers.hdfs.hdfs_native.hdfs_native_share_opts,"},{"line_number":130,"context_line":"    manila.share.drivers.hitachi.hds_hnas.hds_hnas_opts,"},{"line_number":131,"context_line":"    manila.share.drivers.hitachi.hsp.hitachi_hsp_opts,"},{"line_number":132,"context_line":"    manila.share.drivers.hpe.hpe_3par_driver.HPE3PAR_OPTS,"},{"line_number":133,"context_line":"    manila.share.drivers.huawei.huawei_nas.huawei_opts,"},{"line_number":134,"context_line":"    manila.share.drivers.ibm.gpfs.gpfs_share_opts,"}],"source_content_type":"text/x-python","patch_set":25,"id":"9ad45d7e_50dbd47b","line":131,"range":{"start_line":131,"start_character":33,"end_line":131,"end_character":37},"in_reply_to":"9ad45d7e_6d7a83be","updated":"2016-08-12 00:45:51.000000000","message":"Tiago, please rename it to hsp/driver.py as we discussed downstream.","commit_id":"be17f7f4b3ec3312b9631db369e60c612c89fbcf"}],"manila/share/drivers/hitachi/hsp.py":[{"author":{"_account_id":14567,"name":"Rodrigo Barbieri","email":"rodrigo.barbieri2010@gmail.com","username":"ganso"},"change_message_id":"59534128417b1a2b383c87997680d3fde9cc0225","unresolved":false,"context_lines":[{"line_number":34,"context_line":"               help\u003d\"HSP username to perform tasks such as create-file-systems\""},{"line_number":35,"context_line":"                    \" and shares.\"),"},{"line_number":36,"context_line":"    cfg.StrOpt(\u0027hitachi_hsp_password\u0027,"},{"line_number":37,"context_line":"               help\u003d\"HSP password for the username provided.\"),"},{"line_number":38,"context_line":"    cfg.IntOpt(\u0027hitachi_hsp_job_timeout\u0027,"},{"line_number":39,"context_line":"               help\u003d\"The time (in seconds) to wait for a job such as create \""},{"line_number":40,"context_line":"                    \"file-system to finish before aborting.\"),"}],"source_content_type":"text/x-python","patch_set":1,"id":"7aa08908_9f52c011","line":37,"range":{"start_line":37,"start_character":15,"end_line":37,"end_character":63},"updated":"2016-06-13 18:31:12.000000000","message":"add secret\u003dTrue","commit_id":"4550281f865d0a856959b81274ca0f16bf94d470"},{"author":{"_account_id":17097,"name":"Tiago Pasqualini da Silva","email":"t.pasqualini@luizalabs.com","username":"tiago.pasqualini"},"change_message_id":"6eae1a42ab9a0c21ecb1c9f8856ca393384c8397","unresolved":false,"context_lines":[{"line_number":34,"context_line":"               help\u003d\"HSP username to perform tasks such as create-file-systems\""},{"line_number":35,"context_line":"                    \" and shares.\"),"},{"line_number":36,"context_line":"    cfg.StrOpt(\u0027hitachi_hsp_password\u0027,"},{"line_number":37,"context_line":"               help\u003d\"HSP password for the username provided.\"),"},{"line_number":38,"context_line":"    cfg.IntOpt(\u0027hitachi_hsp_job_timeout\u0027,"},{"line_number":39,"context_line":"               help\u003d\"The time (in seconds) to wait for a job such as create \""},{"line_number":40,"context_line":"                    \"file-system to finish before aborting.\"),"}],"source_content_type":"text/x-python","patch_set":1,"id":"5a9d85d2_4d2cd9ab","line":37,"range":{"start_line":37,"start_character":15,"end_line":37,"end_character":63},"in_reply_to":"7aa08908_9f52c011","updated":"2016-06-18 19:36:14.000000000","message":"Done","commit_id":"4550281f865d0a856959b81274ca0f16bf94d470"},{"author":{"_account_id":14567,"name":"Rodrigo Barbieri","email":"rodrigo.barbieri2010@gmail.com","username":"ganso"},"change_message_id":"59534128417b1a2b383c87997680d3fde9cc0225","unresolved":false,"context_lines":[{"line_number":36,"context_line":"    cfg.StrOpt(\u0027hitachi_hsp_password\u0027,"},{"line_number":37,"context_line":"               help\u003d\"HSP password for the username provided.\"),"},{"line_number":38,"context_line":"    cfg.IntOpt(\u0027hitachi_hsp_job_timeout\u0027,"},{"line_number":39,"context_line":"               help\u003d\"The time (in seconds) to wait for a job such as create \""},{"line_number":40,"context_line":"                    \"file-system to finish before aborting.\"),"},{"line_number":41,"context_line":"]"},{"line_number":42,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"7aa08908_ff6ae4b3","line":39,"range":{"start_line":39,"start_character":59,"end_line":39,"end_character":61},"updated":"2016-06-13 18:31:12.000000000","message":"add a comma here","commit_id":"4550281f865d0a856959b81274ca0f16bf94d470"},{"author":{"_account_id":17097,"name":"Tiago Pasqualini da Silva","email":"t.pasqualini@luizalabs.com","username":"tiago.pasqualini"},"change_message_id":"6eae1a42ab9a0c21ecb1c9f8856ca393384c8397","unresolved":false,"context_lines":[{"line_number":36,"context_line":"    cfg.StrOpt(\u0027hitachi_hsp_password\u0027,"},{"line_number":37,"context_line":"               help\u003d\"HSP password for the username provided.\"),"},{"line_number":38,"context_line":"    cfg.IntOpt(\u0027hitachi_hsp_job_timeout\u0027,"},{"line_number":39,"context_line":"               help\u003d\"The time (in seconds) to wait for a job such as create \""},{"line_number":40,"context_line":"                    \"file-system to finish before aborting.\"),"},{"line_number":41,"context_line":"]"},{"line_number":42,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"5a9d85d2_706c0e9d","line":39,"range":{"start_line":39,"start_character":59,"end_line":39,"end_character":61},"in_reply_to":"7aa08908_ff6ae4b3","updated":"2016-06-18 19:36:14.000000000","message":"Done","commit_id":"4550281f865d0a856959b81274ca0f16bf94d470"},{"author":{"_account_id":14567,"name":"Rodrigo Barbieri","email":"rodrigo.barbieri2010@gmail.com","username":"ganso"},"change_message_id":"59534128417b1a2b383c87997680d3fde9cc0225","unresolved":false,"context_lines":[{"line_number":37,"context_line":"               help\u003d\"HSP password for the username provided.\"),"},{"line_number":38,"context_line":"    cfg.IntOpt(\u0027hitachi_hsp_job_timeout\u0027,"},{"line_number":39,"context_line":"               help\u003d\"The time (in seconds) to wait for a job such as create \""},{"line_number":40,"context_line":"                    \"file-system to finish before aborting.\"),"},{"line_number":41,"context_line":"]"},{"line_number":42,"context_line":""},{"line_number":43,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"7aa08908_3f690cbf","line":40,"range":{"start_line":40,"start_character":31,"end_line":40,"end_character":33},"updated":"2016-06-13 18:31:12.000000000","message":"another comma here","commit_id":"4550281f865d0a856959b81274ca0f16bf94d470"},{"author":{"_account_id":17097,"name":"Tiago Pasqualini da Silva","email":"t.pasqualini@luizalabs.com","username":"tiago.pasqualini"},"change_message_id":"6eae1a42ab9a0c21ecb1c9f8856ca393384c8397","unresolved":false,"context_lines":[{"line_number":37,"context_line":"               help\u003d\"HSP password for the username provided.\"),"},{"line_number":38,"context_line":"    cfg.IntOpt(\u0027hitachi_hsp_job_timeout\u0027,"},{"line_number":39,"context_line":"               help\u003d\"The time (in seconds) to wait for a job such as create \""},{"line_number":40,"context_line":"                    \"file-system to finish before aborting.\"),"},{"line_number":41,"context_line":"]"},{"line_number":42,"context_line":""},{"line_number":43,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"5a9d85d2_5069128b","line":40,"range":{"start_line":40,"start_character":31,"end_line":40,"end_character":33},"in_reply_to":"7aa08908_3f690cbf","updated":"2016-06-18 19:36:14.000000000","message":"Done","commit_id":"4550281f865d0a856959b81274ca0f16bf94d470"},{"author":{"_account_id":19144,"name":"José Mello","email":"jose.eduardo.jr@gmail.com","username":"jose-eduardo-jr"},"change_message_id":"195fe21cf9cc4e58094573ac29cbb2919671b6e4","unresolved":false,"context_lines":[{"line_number":62,"context_line":"                                       hsp_password, job_timeout)"},{"line_number":63,"context_line":""},{"line_number":64,"context_line":"    def _update_share_stats(self, data\u003dNone):"},{"line_number":65,"context_line":"        LOG.debug(\"Updating Backend Capability Information - Hitachi HSP.\")"},{"line_number":66,"context_line":""},{"line_number":67,"context_line":"        reserved \u003d self.configuration.safe_get(\u0027reserved_share_percentage\u0027)"},{"line_number":68,"context_line":"        total_space, free_space \u003d self.hsp.get_stats()"}],"source_content_type":"text/x-python","patch_set":1,"id":"7aa08908_133887ed","line":65,"range":{"start_line":65,"start_character":61,"end_line":65,"end_character":72},"updated":"2016-06-13 20:01:46.000000000","message":"We need to confirm if this will be the used naming, or just HSP, or \"Hitachi Scale-Out Platform\"","commit_id":"4550281f865d0a856959b81274ca0f16bf94d470"},{"author":{"_account_id":19144,"name":"José Mello","email":"jose.eduardo.jr@gmail.com","username":"jose-eduardo-jr"},"change_message_id":"195fe21cf9cc4e58094573ac29cbb2919671b6e4","unresolved":false,"context_lines":[{"line_number":70,"context_line":"        data \u003d {"},{"line_number":71,"context_line":"            \u0027share_backend_name\u0027: self.backend_name,"},{"line_number":72,"context_line":"            \u0027driver_handles_share_servers\u0027: self.driver_handles_share_servers,"},{"line_number":73,"context_line":"            \u0027vendor_name\u0027: \u0027Hitachi\u0027,"},{"line_number":74,"context_line":"            \u0027driver_version\u0027: \u00271.0.0\u0027,"},{"line_number":75,"context_line":"            \u0027storage_protocol\u0027: \u0027NFS\u0027,"},{"line_number":76,"context_line":"            \u0027total_capacity_gb\u0027: total_space,"}],"source_content_type":"text/x-python","patch_set":1,"id":"7aa08908_ee21909f","line":73,"range":{"start_line":73,"start_character":28,"end_line":73,"end_character":35},"updated":"2016-06-13 20:01:46.000000000","message":"Hitachi or HDS ? Please confirm the naming standard (HNAS uses \"HDS\")","commit_id":"4550281f865d0a856959b81274ca0f16bf94d470"},{"author":{"_account_id":17097,"name":"Tiago Pasqualini da Silva","email":"t.pasqualini@luizalabs.com","username":"tiago.pasqualini"},"change_message_id":"6eae1a42ab9a0c21ecb1c9f8856ca393384c8397","unresolved":false,"context_lines":[{"line_number":70,"context_line":"        data \u003d {"},{"line_number":71,"context_line":"            \u0027share_backend_name\u0027: self.backend_name,"},{"line_number":72,"context_line":"            \u0027driver_handles_share_servers\u0027: self.driver_handles_share_servers,"},{"line_number":73,"context_line":"            \u0027vendor_name\u0027: \u0027Hitachi\u0027,"},{"line_number":74,"context_line":"            \u0027driver_version\u0027: \u00271.0.0\u0027,"},{"line_number":75,"context_line":"            \u0027storage_protocol\u0027: \u0027NFS\u0027,"},{"line_number":76,"context_line":"            \u0027total_capacity_gb\u0027: total_space,"}],"source_content_type":"text/x-python","patch_set":1,"id":"5a9d85d2_8d1c0179","line":73,"range":{"start_line":73,"start_character":28,"end_line":73,"end_character":35},"in_reply_to":"7aa08908_ee21909f","updated":"2016-06-18 19:36:14.000000000","message":"Hitachi. Drivers that use HDS will be renamed.","commit_id":"4550281f865d0a856959b81274ca0f16bf94d470"},{"author":{"_account_id":15100,"name":"zhongjun","email":"jun.zhongjun2@gmail.com","username":"zhongjun2"},"change_message_id":"20b3efa0a0bfec898573d7bdcc4bd1491eae93dd","unresolved":false,"context_lines":[{"line_number":77,"context_line":"            \u0027free_capacity_gb\u0027: free_space,"},{"line_number":78,"context_line":"            \u0027reserved_percentage\u0027: reserved,"},{"line_number":79,"context_line":"            \u0027qos\u0027: False,"},{"line_number":80,"context_line":"            \u0027thin_provisioning\u0027: True,"},{"line_number":81,"context_line":"        }"},{"line_number":82,"context_line":""},{"line_number":83,"context_line":"        LOG.info(_LI(\"Hitachi HSP Capabilities: %(data)s.\"),"}],"source_content_type":"text/x-python","patch_set":1,"id":"7aa08908_d700a1ad","line":80,"range":{"start_line":80,"start_character":13,"end_line":80,"end_character":30},"updated":"2016-06-14 02:23:15.000000000","message":"If thin_provisioning is true, Does you need to add \u0027max_over_subscription_ratio\u0027?","commit_id":"4550281f865d0a856959b81274ca0f16bf94d470"},{"author":{"_account_id":19144,"name":"José Mello","email":"jose.eduardo.jr@gmail.com","username":"jose-eduardo-jr"},"change_message_id":"195fe21cf9cc4e58094573ac29cbb2919671b6e4","unresolved":false,"context_lines":[{"line_number":80,"context_line":"            \u0027thin_provisioning\u0027: True,"},{"line_number":81,"context_line":"        }"},{"line_number":82,"context_line":""},{"line_number":83,"context_line":"        LOG.info(_LI(\"Hitachi HSP Capabilities: %(data)s.\"),"},{"line_number":84,"context_line":"                 {\u0027data\u0027: six.text_type(data)})"},{"line_number":85,"context_line":"        super(HitachiHSPDriver, self)._update_share_stats(data)"},{"line_number":86,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"7aa08908_2e38b8d2","line":83,"range":{"start_line":83,"start_character":22,"end_line":83,"end_character":33},"updated":"2016-06-13 20:01:46.000000000","message":"Same question on naming standard","commit_id":"4550281f865d0a856959b81274ca0f16bf94d470"},{"author":{"_account_id":15100,"name":"zhongjun","email":"jun.zhongjun2@gmail.com","username":"zhongjun2"},"change_message_id":"20b3efa0a0bfec898573d7bdcc4bd1491eae93dd","unresolved":false,"context_lines":[{"line_number":84,"context_line":"                 {\u0027data\u0027: six.text_type(data)})"},{"line_number":85,"context_line":"        super(HitachiHSPDriver, self)._update_share_stats(data)"},{"line_number":86,"context_line":""},{"line_number":87,"context_line":"    def create_share(self, context, share, share_server\u003dNone):"},{"line_number":88,"context_line":"        LOG.debug(\"Creating share in HSP: %(shr)s\", {\u0027shr\u0027: share[\u0027id\u0027]})"},{"line_number":89,"context_line":""},{"line_number":90,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":1,"id":"7aa08908_d7eee1eb","line":87,"range":{"start_line":87,"start_character":36,"end_line":87,"end_character":41},"updated":"2016-06-14 02:23:15.000000000","message":"In code line 75, Hitachi HSP driver only support NFS protocol, but you not check whether the share protocol is supported in create share.\n\nPlease check the share[\u0027share_proto\u0027] before create share.","commit_id":"4550281f865d0a856959b81274ca0f16bf94d470"},{"author":{"_account_id":17097,"name":"Tiago Pasqualini da Silva","email":"t.pasqualini@luizalabs.com","username":"tiago.pasqualini"},"change_message_id":"6eae1a42ab9a0c21ecb1c9f8856ca393384c8397","unresolved":false,"context_lines":[{"line_number":84,"context_line":"                 {\u0027data\u0027: six.text_type(data)})"},{"line_number":85,"context_line":"        super(HitachiHSPDriver, self)._update_share_stats(data)"},{"line_number":86,"context_line":""},{"line_number":87,"context_line":"    def create_share(self, context, share, share_server\u003dNone):"},{"line_number":88,"context_line":"        LOG.debug(\"Creating share in HSP: %(shr)s\", {\u0027shr\u0027: share[\u0027id\u0027]})"},{"line_number":89,"context_line":""},{"line_number":90,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":1,"id":"5a9d85d2_cd160955","line":87,"range":{"start_line":87,"start_character":36,"end_line":87,"end_character":41},"in_reply_to":"7aa08908_d7eee1eb","updated":"2016-06-18 19:36:14.000000000","message":"Done","commit_id":"4550281f865d0a856959b81274ca0f16bf94d470"},{"author":{"_account_id":14567,"name":"Rodrigo Barbieri","email":"rodrigo.barbieri2010@gmail.com","username":"ganso"},"change_message_id":"59534128417b1a2b383c87997680d3fde9cc0225","unresolved":false,"context_lines":[{"line_number":91,"context_line":"            self.hsp.add_file_system(share[\u0027id\u0027], share[\u0027size\u0027])"},{"line_number":92,"context_line":"            filesystem_id \u003d self.hsp.get_file_systems(share[\u0027id\u0027])[0][\u0027id\u0027]"},{"line_number":93,"context_line":"            self.hsp.add_share(share[\u0027id\u0027], filesystem_id)"},{"line_number":94,"context_line":"        except Exception as e:"},{"line_number":95,"context_line":"            with excutils.save_and_reraise_exception():"},{"line_number":96,"context_line":"                LOG.exception(six.text_type(e))"},{"line_number":97,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"7aa08908_df7d686e","line":94,"range":{"start_line":94,"start_character":15,"end_line":94,"end_character":24},"updated":"2016-06-13 18:31:12.000000000","message":"HSPBackendException","commit_id":"4550281f865d0a856959b81274ca0f16bf94d470"},{"author":{"_account_id":17097,"name":"Tiago Pasqualini da Silva","email":"t.pasqualini@luizalabs.com","username":"tiago.pasqualini"},"change_message_id":"6eae1a42ab9a0c21ecb1c9f8856ca393384c8397","unresolved":false,"context_lines":[{"line_number":91,"context_line":"            self.hsp.add_file_system(share[\u0027id\u0027], share[\u0027size\u0027])"},{"line_number":92,"context_line":"            filesystem_id \u003d self.hsp.get_file_systems(share[\u0027id\u0027])[0][\u0027id\u0027]"},{"line_number":93,"context_line":"            self.hsp.add_share(share[\u0027id\u0027], filesystem_id)"},{"line_number":94,"context_line":"        except Exception as e:"},{"line_number":95,"context_line":"            with excutils.save_and_reraise_exception():"},{"line_number":96,"context_line":"                LOG.exception(six.text_type(e))"},{"line_number":97,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"5a9d85d2_2d0ced41","line":94,"range":{"start_line":94,"start_character":15,"end_line":94,"end_character":24},"in_reply_to":"7aa08908_df7d686e","updated":"2016-06-18 19:36:14.000000000","message":"This was removed...","commit_id":"4550281f865d0a856959b81274ca0f16bf94d470"},{"author":{"_account_id":14567,"name":"Rodrigo Barbieri","email":"rodrigo.barbieri2010@gmail.com","username":"ganso"},"change_message_id":"59534128417b1a2b383c87997680d3fde9cc0225","unresolved":false,"context_lines":[{"line_number":93,"context_line":"            self.hsp.add_share(share[\u0027id\u0027], filesystem_id)"},{"line_number":94,"context_line":"        except Exception as e:"},{"line_number":95,"context_line":"            with excutils.save_and_reraise_exception():"},{"line_number":96,"context_line":"                LOG.exception(six.text_type(e))"},{"line_number":97,"context_line":""},{"line_number":98,"context_line":"        uri \u003d self.hsp_host + \u0027:/\u0027 + share[\u0027id\u0027]"},{"line_number":99,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"7aa08908_bfe97c1c","line":96,"range":{"start_line":96,"start_character":30,"end_line":96,"end_character":46},"updated":"2016-06-13 18:31:12.000000000","message":"create a friendly message","commit_id":"4550281f865d0a856959b81274ca0f16bf94d470"},{"author":{"_account_id":17097,"name":"Tiago Pasqualini da Silva","email":"t.pasqualini@luizalabs.com","username":"tiago.pasqualini"},"change_message_id":"6eae1a42ab9a0c21ecb1c9f8856ca393384c8397","unresolved":false,"context_lines":[{"line_number":93,"context_line":"            self.hsp.add_share(share[\u0027id\u0027], filesystem_id)"},{"line_number":94,"context_line":"        except Exception as e:"},{"line_number":95,"context_line":"            with excutils.save_and_reraise_exception():"},{"line_number":96,"context_line":"                LOG.exception(six.text_type(e))"},{"line_number":97,"context_line":""},{"line_number":98,"context_line":"        uri \u003d self.hsp_host + \u0027:/\u0027 + share[\u0027id\u0027]"},{"line_number":99,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"5a9d85d2_0d093132","line":96,"range":{"start_line":96,"start_character":30,"end_line":96,"end_character":46},"in_reply_to":"7aa08908_bfe97c1c","updated":"2016-06-18 19:36:14.000000000","message":"Same","commit_id":"4550281f865d0a856959b81274ca0f16bf94d470"},{"author":{"_account_id":14567,"name":"Rodrigo Barbieri","email":"rodrigo.barbieri2010@gmail.com","username":"ganso"},"change_message_id":"59534128417b1a2b383c87997680d3fde9cc0225","unresolved":false,"context_lines":[{"line_number":95,"context_line":"            with excutils.save_and_reraise_exception():"},{"line_number":96,"context_line":"                LOG.exception(six.text_type(e))"},{"line_number":97,"context_line":""},{"line_number":98,"context_line":"        uri \u003d self.hsp_host + \u0027:/\u0027 + share[\u0027id\u0027]"},{"line_number":99,"context_line":""},{"line_number":100,"context_line":"        LOG.debug(\"Share created successfully on path: %(uri)s.\","},{"line_number":101,"context_line":"                  {\u0027uri\u0027: uri})"}],"source_content_type":"text/x-python","patch_set":1,"id":"7aa08908_1fc25085","line":98,"range":{"start_line":98,"start_character":14,"end_line":98,"end_character":27},"updated":"2016-06-13 18:31:12.000000000","message":"you shouldn\u0027t use the management host here","commit_id":"4550281f865d0a856959b81274ca0f16bf94d470"},{"author":{"_account_id":14567,"name":"Rodrigo Barbieri","email":"rodrigo.barbieri2010@gmail.com","username":"ganso"},"change_message_id":"59534128417b1a2b383c87997680d3fde9cc0225","unresolved":false,"context_lines":[{"line_number":105,"context_line":"        LOG.debug(\"Deleting share in HSP: %(shr)s.\", {\u0027shr\u0027: share[\u0027id\u0027]})"},{"line_number":106,"context_line":""},{"line_number":107,"context_line":"        try:"},{"line_number":108,"context_line":"            filesystem_id \u003d self.hsp.get_file_systems(share[\u0027id\u0027])[0][\u0027id\u0027]"},{"line_number":109,"context_line":"            share_id \u003d self.hsp.get_share(filesystem_id)[0][\u0027id\u0027]"},{"line_number":110,"context_line":""},{"line_number":111,"context_line":"            self.hsp.delete_share(share_id)"}],"source_content_type":"text/x-python","patch_set":1,"id":"7aa08908_3f274c13","line":108,"range":{"start_line":108,"start_character":11,"end_line":108,"end_character":75},"updated":"2016-06-13 18:31:12.000000000","message":"I understand you needed to obtain the filesystem_id in create_share because you are actually polling, but here you already have it derived from the share[\u0027id\u0027]","commit_id":"4550281f865d0a856959b81274ca0f16bf94d470"},{"author":{"_account_id":17097,"name":"Tiago Pasqualini da Silva","email":"t.pasqualini@luizalabs.com","username":"tiago.pasqualini"},"change_message_id":"6eae1a42ab9a0c21ecb1c9f8856ca393384c8397","unresolved":false,"context_lines":[{"line_number":105,"context_line":"        LOG.debug(\"Deleting share in HSP: %(shr)s.\", {\u0027shr\u0027: share[\u0027id\u0027]})"},{"line_number":106,"context_line":""},{"line_number":107,"context_line":"        try:"},{"line_number":108,"context_line":"            filesystem_id \u003d self.hsp.get_file_systems(share[\u0027id\u0027])[0][\u0027id\u0027]"},{"line_number":109,"context_line":"            share_id \u003d self.hsp.get_share(filesystem_id)[0][\u0027id\u0027]"},{"line_number":110,"context_line":""},{"line_number":111,"context_line":"            self.hsp.delete_share(share_id)"}],"source_content_type":"text/x-python","patch_set":1,"id":"5a9d85d2_6d06f521","line":108,"range":{"start_line":108,"start_character":11,"end_line":108,"end_character":75},"in_reply_to":"7aa08908_3f274c13","updated":"2016-06-18 19:36:14.000000000","message":"Three completely different properties: filesystem_id !\u003d hsp_share_id !\u003d share[\u0027id\u0027]. Renamed share_id to hsp_share_id to avoid confusion.","commit_id":"4550281f865d0a856959b81274ca0f16bf94d470"},{"author":{"_account_id":14567,"name":"Rodrigo Barbieri","email":"rodrigo.barbieri2010@gmail.com","username":"ganso"},"change_message_id":"59534128417b1a2b383c87997680d3fde9cc0225","unresolved":false,"context_lines":[{"line_number":106,"context_line":""},{"line_number":107,"context_line":"        try:"},{"line_number":108,"context_line":"            filesystem_id \u003d self.hsp.get_file_systems(share[\u0027id\u0027])[0][\u0027id\u0027]"},{"line_number":109,"context_line":"            share_id \u003d self.hsp.get_share(filesystem_id)[0][\u0027id\u0027]"},{"line_number":110,"context_line":""},{"line_number":111,"context_line":"            self.hsp.delete_share(share_id)"},{"line_number":112,"context_line":"            self.hsp.delete_file_system(filesystem_id)"}],"source_content_type":"text/x-python","patch_set":1,"id":"7aa08908_1f24100b","line":109,"range":{"start_line":109,"start_character":12,"end_line":109,"end_character":65},"updated":"2016-06-13 18:31:12.000000000","message":"same as above","commit_id":"4550281f865d0a856959b81274ca0f16bf94d470"},{"author":{"_account_id":14567,"name":"Rodrigo Barbieri","email":"rodrigo.barbieri2010@gmail.com","username":"ganso"},"change_message_id":"59534128417b1a2b383c87997680d3fde9cc0225","unresolved":false,"context_lines":[{"line_number":110,"context_line":""},{"line_number":111,"context_line":"            self.hsp.delete_share(share_id)"},{"line_number":112,"context_line":"            self.hsp.delete_file_system(filesystem_id)"},{"line_number":113,"context_line":"        except Exception as e:"},{"line_number":114,"context_line":"            LOG.exception(six.text_type(e))"},{"line_number":115,"context_line":""},{"line_number":116,"context_line":"        LOG.debug(\"Export and share successfully deleted: %(shr)s.\","}],"source_content_type":"text/x-python","patch_set":1,"id":"7aa08908_7feef4ed","line":113,"range":{"start_line":113,"start_character":6,"end_line":113,"end_character":30},"updated":"2016-06-13 18:31:12.000000000","message":"what if it is not found?","commit_id":"4550281f865d0a856959b81274ca0f16bf94d470"},{"author":{"_account_id":17097,"name":"Tiago Pasqualini da Silva","email":"t.pasqualini@luizalabs.com","username":"tiago.pasqualini"},"change_message_id":"6eae1a42ab9a0c21ecb1c9f8856ca393384c8397","unresolved":false,"context_lines":[{"line_number":110,"context_line":""},{"line_number":111,"context_line":"            self.hsp.delete_share(share_id)"},{"line_number":112,"context_line":"            self.hsp.delete_file_system(filesystem_id)"},{"line_number":113,"context_line":"        except Exception as e:"},{"line_number":114,"context_line":"            LOG.exception(six.text_type(e))"},{"line_number":115,"context_line":""},{"line_number":116,"context_line":"        LOG.debug(\"Export and share successfully deleted: %(shr)s.\","}],"source_content_type":"text/x-python","patch_set":1,"id":"5a9d85d2_b0fe7603","line":113,"range":{"start_line":113,"start_character":6,"end_line":113,"end_character":30},"in_reply_to":"7aa08908_7feef4ed","updated":"2016-06-18 19:36:14.000000000","message":"This was changed. Not found exceptions are swallowed now.","commit_id":"4550281f865d0a856959b81274ca0f16bf94d470"},{"author":{"_account_id":14567,"name":"Rodrigo Barbieri","email":"rodrigo.barbieri2010@gmail.com","username":"ganso"},"change_message_id":"59534128417b1a2b383c87997680d3fde9cc0225","unresolved":false,"context_lines":[{"line_number":111,"context_line":"            self.hsp.delete_share(share_id)"},{"line_number":112,"context_line":"            self.hsp.delete_file_system(filesystem_id)"},{"line_number":113,"context_line":"        except Exception as e:"},{"line_number":114,"context_line":"            LOG.exception(six.text_type(e))"},{"line_number":115,"context_line":""},{"line_number":116,"context_line":"        LOG.debug(\"Export and share successfully deleted: %(shr)s.\","},{"line_number":117,"context_line":"                  {\u0027shr\u0027: share[\u0027id\u0027]})"}],"source_content_type":"text/x-python","patch_set":1,"id":"7aa08908_3f210c4e","line":114,"range":{"start_line":114,"start_character":26,"end_line":114,"end_character":42},"updated":"2016-06-13 18:31:12.000000000","message":"add a friendly message","commit_id":"4550281f865d0a856959b81274ca0f16bf94d470"},{"author":{"_account_id":14567,"name":"Rodrigo Barbieri","email":"rodrigo.barbieri2010@gmail.com","username":"ganso"},"change_message_id":"59534128417b1a2b383c87997680d3fde9cc0225","unresolved":false,"context_lines":[{"line_number":122,"context_line":"        LOG.debug(\"Updating access rules for share: %(shr)s.\","},{"line_number":123,"context_line":"                  {\u0027shr\u0027: share[\u0027id\u0027]})"},{"line_number":124,"context_line":""},{"line_number":125,"context_line":"        filesystem_id \u003d self.hsp.get_file_systems(share[\u0027id\u0027])[0][\u0027id\u0027]"},{"line_number":126,"context_line":"        share_id \u003d self.hsp.get_share(filesystem_id)[0][\u0027id\u0027]"},{"line_number":127,"context_line":""},{"line_number":128,"context_line":"        if not (add_rules or delete_rules):"},{"line_number":129,"context_line":"            current_rules \u003d self.hsp.get_access_rules(share_id)"}],"source_content_type":"text/x-python","patch_set":1,"id":"7aa08908_df8448d4","line":126,"range":{"start_line":125,"start_character":8,"end_line":126,"end_character":61},"updated":"2016-06-13 18:31:12.000000000","message":"same as above, I believe you do not need to obtain those IDs","commit_id":"4550281f865d0a856959b81274ca0f16bf94d470"},{"author":{"_account_id":17097,"name":"Tiago Pasqualini da Silva","email":"t.pasqualini@luizalabs.com","username":"tiago.pasqualini"},"change_message_id":"6eae1a42ab9a0c21ecb1c9f8856ca393384c8397","unresolved":false,"context_lines":[{"line_number":122,"context_line":"        LOG.debug(\"Updating access rules for share: %(shr)s.\","},{"line_number":123,"context_line":"                  {\u0027shr\u0027: share[\u0027id\u0027]})"},{"line_number":124,"context_line":""},{"line_number":125,"context_line":"        filesystem_id \u003d self.hsp.get_file_systems(share[\u0027id\u0027])[0][\u0027id\u0027]"},{"line_number":126,"context_line":"        share_id \u003d self.hsp.get_share(filesystem_id)[0][\u0027id\u0027]"},{"line_number":127,"context_line":""},{"line_number":128,"context_line":"        if not (add_rules or delete_rules):"},{"line_number":129,"context_line":"            current_rules \u003d self.hsp.get_access_rules(share_id)"}],"source_content_type":"text/x-python","patch_set":1,"id":"5a9d85d2_90037a0d","line":126,"range":{"start_line":125,"start_character":8,"end_line":126,"end_character":61},"in_reply_to":"7aa08908_df8448d4","updated":"2016-06-18 19:36:14.000000000","message":"Yes, I do :)","commit_id":"4550281f865d0a856959b81274ca0f16bf94d470"},{"author":{"_account_id":15100,"name":"zhongjun","email":"jun.zhongjun2@gmail.com","username":"zhongjun2"},"change_message_id":"20b3efa0a0bfec898573d7bdcc4bd1491eae93dd","unresolved":false,"context_lines":[{"line_number":131,"context_line":"                self.hsp.delete_access_rule(share_id,"},{"line_number":132,"context_line":"                                            rule[\u0027host-specification\u0027])"},{"line_number":133,"context_line":"            for rule in access_rules:"},{"line_number":134,"context_line":"                self.hsp.add_access_rule("},{"line_number":135,"context_line":"                    share_id, rule[\u0027access_to\u0027],"},{"line_number":136,"context_line":"                    (rule[\u0027access_level\u0027] \u003d\u003d constants.ACCESS_LEVEL_RW))"},{"line_number":137,"context_line":"        else:"},{"line_number":138,"context_line":"            for rule in delete_rules:"},{"line_number":139,"context_line":"                self.hsp.delete_access_rule(share_id, rule[\u0027access_to\u0027])"}],"source_content_type":"text/x-python","patch_set":1,"id":"7aa08908_370e458c","line":136,"range":{"start_line":134,"start_character":16,"end_line":136,"end_character":72},"updated":"2016-06-14 02:23:15.000000000","message":"Do you need to check access[\u0027access_type\u0027] and share[\u0027share_proto\u0027]? If access_type is equal to \u0027user\u0027, \u0027ip\u0027, or \u0027cert\u0027, Is this function can cover all of this access type?","commit_id":"4550281f865d0a856959b81274ca0f16bf94d470"},{"author":{"_account_id":17097,"name":"Tiago Pasqualini da Silva","email":"t.pasqualini@luizalabs.com","username":"tiago.pasqualini"},"change_message_id":"6eae1a42ab9a0c21ecb1c9f8856ca393384c8397","unresolved":false,"context_lines":[{"line_number":131,"context_line":"                self.hsp.delete_access_rule(share_id,"},{"line_number":132,"context_line":"                                            rule[\u0027host-specification\u0027])"},{"line_number":133,"context_line":"            for rule in access_rules:"},{"line_number":134,"context_line":"                self.hsp.add_access_rule("},{"line_number":135,"context_line":"                    share_id, rule[\u0027access_to\u0027],"},{"line_number":136,"context_line":"                    (rule[\u0027access_level\u0027] \u003d\u003d constants.ACCESS_LEVEL_RW))"},{"line_number":137,"context_line":"        else:"},{"line_number":138,"context_line":"            for rule in delete_rules:"},{"line_number":139,"context_line":"                self.hsp.delete_access_rule(share_id, rule[\u0027access_to\u0027])"}],"source_content_type":"text/x-python","patch_set":1,"id":"5a9d85d2_d00d0239","line":136,"range":{"start_line":134,"start_character":16,"end_line":136,"end_character":72},"in_reply_to":"7aa08908_370e458c","updated":"2016-06-18 19:36:14.000000000","message":"Changed to verify access_type. share_proto not needed since it would fail on create_share.","commit_id":"4550281f865d0a856959b81274ca0f16bf94d470"},{"author":{"_account_id":14567,"name":"Rodrigo Barbieri","email":"rodrigo.barbieri2010@gmail.com","username":"ganso"},"change_message_id":"59534128417b1a2b383c87997680d3fde9cc0225","unresolved":false,"context_lines":[{"line_number":137,"context_line":"        else:"},{"line_number":138,"context_line":"            for rule in delete_rules:"},{"line_number":139,"context_line":"                self.hsp.delete_access_rule(share_id, rule[\u0027access_to\u0027])"},{"line_number":140,"context_line":"            for rule in add_rules:"},{"line_number":141,"context_line":"                self.hsp.add_access_rule("},{"line_number":142,"context_line":"                    share_id, rule[\u0027access_to\u0027],"},{"line_number":143,"context_line":"                    (rule[\u0027access_level\u0027] \u003d\u003d constants.ACCESS_LEVEL_RW))"},{"line_number":144,"context_line":""},{"line_number":145,"context_line":"        LOG.debug(\"Successfully updated share %(shr)s rules.\","},{"line_number":146,"context_line":"                  {\u0027shr\u0027: share[\u0027id\u0027]})"}],"source_content_type":"text/x-python","patch_set":1,"id":"7aa08908_9f9ac012","line":143,"range":{"start_line":140,"start_character":0,"end_line":143,"end_character":72},"updated":"2016-06-13 18:31:12.000000000","message":"this looks exactly like the above block, you could refactor. Create a method that receives a list and adds whatever is in the list","commit_id":"4550281f865d0a856959b81274ca0f16bf94d470"},{"author":{"_account_id":17097,"name":"Tiago Pasqualini da Silva","email":"t.pasqualini@luizalabs.com","username":"tiago.pasqualini"},"change_message_id":"6eae1a42ab9a0c21ecb1c9f8856ca393384c8397","unresolved":false,"context_lines":[{"line_number":137,"context_line":"        else:"},{"line_number":138,"context_line":"            for rule in delete_rules:"},{"line_number":139,"context_line":"                self.hsp.delete_access_rule(share_id, rule[\u0027access_to\u0027])"},{"line_number":140,"context_line":"            for rule in add_rules:"},{"line_number":141,"context_line":"                self.hsp.add_access_rule("},{"line_number":142,"context_line":"                    share_id, rule[\u0027access_to\u0027],"},{"line_number":143,"context_line":"                    (rule[\u0027access_level\u0027] \u003d\u003d constants.ACCESS_LEVEL_RW))"},{"line_number":144,"context_line":""},{"line_number":145,"context_line":"        LOG.debug(\"Successfully updated share %(shr)s rules.\","},{"line_number":146,"context_line":"                  {\u0027shr\u0027: share[\u0027id\u0027]})"}],"source_content_type":"text/x-python","patch_set":1,"id":"5a9d85d2_3013a65e","line":143,"range":{"start_line":140,"start_character":0,"end_line":143,"end_character":72},"in_reply_to":"7aa08908_9f9ac012","updated":"2016-06-18 19:36:14.000000000","message":"Done","commit_id":"4550281f865d0a856959b81274ca0f16bf94d470"},{"author":{"_account_id":15100,"name":"zhongjun","email":"jun.zhongjun2@gmail.com","username":"zhongjun2"},"change_message_id":"45e50f751a091e2605e802fb7bcf6abc336382e8","unresolved":false,"context_lines":[{"line_number":83,"context_line":"            \u0027free_capacity_gb\u0027: free_space / units.Gi,"},{"line_number":84,"context_line":"            \u0027reserved_percentage\u0027: reserved,"},{"line_number":85,"context_line":"            \u0027qos\u0027: False,"},{"line_number":86,"context_line":"            \u0027thin_provisioning\u0027: True,"},{"line_number":87,"context_line":"        }"},{"line_number":88,"context_line":""},{"line_number":89,"context_line":"        LOG.info(_LI(\"Hitachi HSP Capabilities: %(data)s.\"),"}],"source_content_type":"text/x-python","patch_set":3,"id":"5a9d85d2_fc8295c7","line":86,"range":{"start_line":86,"start_character":12,"end_line":86,"end_character":38},"updated":"2016-06-19 10:28:39.000000000","message":"If thin_provisioning is true, Does you need to add \u0027max_over_subscription_ratio\u0027?","commit_id":"bb2d7eae547d4a8bf65fe91970be288e76da4518"},{"author":{"_account_id":17097,"name":"Tiago Pasqualini da Silva","email":"t.pasqualini@luizalabs.com","username":"tiago.pasqualini"},"change_message_id":"2c95ec9773af514298bf181d826add28f245017c","unresolved":false,"context_lines":[{"line_number":83,"context_line":"            \u0027free_capacity_gb\u0027: free_space / units.Gi,"},{"line_number":84,"context_line":"            \u0027reserved_percentage\u0027: reserved,"},{"line_number":85,"context_line":"            \u0027qos\u0027: False,"},{"line_number":86,"context_line":"            \u0027thin_provisioning\u0027: True,"},{"line_number":87,"context_line":"        }"},{"line_number":88,"context_line":""},{"line_number":89,"context_line":"        LOG.info(_LI(\"Hitachi HSP Capabilities: %(data)s.\"),"}],"source_content_type":"text/x-python","patch_set":3,"id":"5a9d85d2_2ecfa8b1","line":86,"range":{"start_line":86,"start_character":12,"end_line":86,"end_character":38},"in_reply_to":"5a9d85d2_fc8295c7","updated":"2016-06-20 13:00:17.000000000","message":"It will use the default value, which is 20.","commit_id":"bb2d7eae547d4a8bf65fe91970be288e76da4518"},{"author":{"_account_id":14567,"name":"Rodrigo Barbieri","email":"rodrigo.barbieri2010@gmail.com","username":"ganso"},"change_message_id":"1f746a9a2f42f98a3436c4684ead8d31cbc84700","unresolved":false,"context_lines":[{"line_number":99,"context_line":""},{"line_number":100,"context_line":"        self.hsp.add_file_system(share[\u0027id\u0027], share[\u0027size\u0027] * units.Gi)"},{"line_number":101,"context_line":"        filesystem_id \u003d self.hsp.get_file_system(share[\u0027id\u0027])[\u0027id\u0027]"},{"line_number":102,"context_line":"        self.hsp.add_share(share[\u0027id\u0027], filesystem_id)"},{"line_number":103,"context_line":""},{"line_number":104,"context_line":"        uri \u003d self.hsp_host + \u0027:/\u0027 + share[\u0027id\u0027]"},{"line_number":105,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"5a9d85d2_5a82b601","line":102,"range":{"start_line":102,"start_character":8,"end_line":102,"end_character":54},"updated":"2016-06-20 11:35:40.000000000","message":"if this operation fails, you should remove the filesystem. We do the same in HNAS driver.","commit_id":"bb2d7eae547d4a8bf65fe91970be288e76da4518"},{"author":{"_account_id":17097,"name":"Tiago Pasqualini da Silva","email":"t.pasqualini@luizalabs.com","username":"tiago.pasqualini"},"change_message_id":"2c95ec9773af514298bf181d826add28f245017c","unresolved":false,"context_lines":[{"line_number":99,"context_line":""},{"line_number":100,"context_line":"        self.hsp.add_file_system(share[\u0027id\u0027], share[\u0027size\u0027] * units.Gi)"},{"line_number":101,"context_line":"        filesystem_id \u003d self.hsp.get_file_system(share[\u0027id\u0027])[\u0027id\u0027]"},{"line_number":102,"context_line":"        self.hsp.add_share(share[\u0027id\u0027], filesystem_id)"},{"line_number":103,"context_line":""},{"line_number":104,"context_line":"        uri \u003d self.hsp_host + \u0027:/\u0027 + share[\u0027id\u0027]"},{"line_number":105,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"5a9d85d2_0edd8c14","line":102,"range":{"start_line":102,"start_character":8,"end_line":102,"end_character":54},"in_reply_to":"5a9d85d2_5a82b601","updated":"2016-06-20 13:00:17.000000000","message":"Yes. thank you.","commit_id":"bb2d7eae547d4a8bf65fe91970be288e76da4518"},{"author":{"_account_id":14567,"name":"Rodrigo Barbieri","email":"rodrigo.barbieri2010@gmail.com","username":"ganso"},"change_message_id":"106488324a4c90bd653b4be8e2e61653b33ddb89","unresolved":false,"context_lines":[{"line_number":101,"context_line":"        filesystem_id \u003d self.hsp.get_file_system(share[\u0027id\u0027])[\u0027id\u0027]"},{"line_number":102,"context_line":"        self.hsp.add_share(share[\u0027id\u0027], filesystem_id)"},{"line_number":103,"context_line":""},{"line_number":104,"context_line":"        uri \u003d self.hsp_host + \u0027:/\u0027 + share[\u0027id\u0027]"},{"line_number":105,"context_line":""},{"line_number":106,"context_line":"        LOG.debug(\"Share created successfully on path: %(uri)s.\","},{"line_number":107,"context_line":"                  {\u0027uri\u0027: uri})"}],"source_content_type":"text/x-python","patch_set":3,"id":"5a9d85d2_fd99dc20","line":104,"range":{"start_line":104,"start_character":30,"end_line":104,"end_character":34},"updated":"2016-06-20 11:40:52.000000000","message":"use join","commit_id":"bb2d7eae547d4a8bf65fe91970be288e76da4518"},{"author":{"_account_id":14567,"name":"Rodrigo Barbieri","email":"rodrigo.barbieri2010@gmail.com","username":"ganso"},"change_message_id":"106488324a4c90bd653b4be8e2e61653b33ddb89","unresolved":false,"context_lines":[{"line_number":101,"context_line":"        filesystem_id \u003d self.hsp.get_file_system(share[\u0027id\u0027])[\u0027id\u0027]"},{"line_number":102,"context_line":"        self.hsp.add_share(share[\u0027id\u0027], filesystem_id)"},{"line_number":103,"context_line":""},{"line_number":104,"context_line":"        uri \u003d self.hsp_host + \u0027:/\u0027 + share[\u0027id\u0027]"},{"line_number":105,"context_line":""},{"line_number":106,"context_line":"        LOG.debug(\"Share created successfully on path: %(uri)s.\","},{"line_number":107,"context_line":"                  {\u0027uri\u0027: uri})"}],"source_content_type":"text/x-python","patch_set":3,"id":"5a9d85d2_fdc0bce2","line":104,"range":{"start_line":104,"start_character":19,"end_line":104,"end_character":27},"updated":"2016-06-20 11:40:52.000000000","message":"we should figure out an IP different than the management IP to use here.","commit_id":"bb2d7eae547d4a8bf65fe91970be288e76da4518"},{"author":{"_account_id":17097,"name":"Tiago Pasqualini da Silva","email":"t.pasqualini@luizalabs.com","username":"tiago.pasqualini"},"change_message_id":"2c95ec9773af514298bf181d826add28f245017c","unresolved":false,"context_lines":[{"line_number":101,"context_line":"        filesystem_id \u003d self.hsp.get_file_system(share[\u0027id\u0027])[\u0027id\u0027]"},{"line_number":102,"context_line":"        self.hsp.add_share(share[\u0027id\u0027], filesystem_id)"},{"line_number":103,"context_line":""},{"line_number":104,"context_line":"        uri \u003d self.hsp_host + \u0027:/\u0027 + share[\u0027id\u0027]"},{"line_number":105,"context_line":""},{"line_number":106,"context_line":"        LOG.debug(\"Share created successfully on path: %(uri)s.\","},{"line_number":107,"context_line":"                  {\u0027uri\u0027: uri})"}],"source_content_type":"text/x-python","patch_set":3,"id":"5a9d85d2_6ec1b080","line":104,"range":{"start_line":104,"start_character":30,"end_line":104,"end_character":34},"in_reply_to":"5a9d85d2_fd99dc20","updated":"2016-06-20 13:00:17.000000000","message":"Why? It\u0027s only two variables... I don\u0027t see the point of adding them to a list just to use join.","commit_id":"bb2d7eae547d4a8bf65fe91970be288e76da4518"},{"author":{"_account_id":17097,"name":"Tiago Pasqualini da Silva","email":"t.pasqualini@luizalabs.com","username":"tiago.pasqualini"},"change_message_id":"2c95ec9773af514298bf181d826add28f245017c","unresolved":false,"context_lines":[{"line_number":101,"context_line":"        filesystem_id \u003d self.hsp.get_file_system(share[\u0027id\u0027])[\u0027id\u0027]"},{"line_number":102,"context_line":"        self.hsp.add_share(share[\u0027id\u0027], filesystem_id)"},{"line_number":103,"context_line":""},{"line_number":104,"context_line":"        uri \u003d self.hsp_host + \u0027:/\u0027 + share[\u0027id\u0027]"},{"line_number":105,"context_line":""},{"line_number":106,"context_line":"        LOG.debug(\"Share created successfully on path: %(uri)s.\","},{"line_number":107,"context_line":"                  {\u0027uri\u0027: uri})"}],"source_content_type":"text/x-python","patch_set":3,"id":"5a9d85d2_ee3be09a","line":104,"range":{"start_line":104,"start_character":19,"end_line":104,"end_character":27},"in_reply_to":"5a9d85d2_fdc0bce2","updated":"2016-06-20 13:00:17.000000000","message":"Yes, we need to check if this will be configured or will be retrieved from API.","commit_id":"bb2d7eae547d4a8bf65fe91970be288e76da4518"},{"author":{"_account_id":14567,"name":"Rodrigo Barbieri","email":"rodrigo.barbieri2010@gmail.com","username":"ganso"},"change_message_id":"1f746a9a2f42f98a3436c4684ead8d31cbc84700","unresolved":false,"context_lines":[{"line_number":143,"context_line":"            self._add_access_rules(hsp_share_id, access_rules)"},{"line_number":144,"context_line":"        else:"},{"line_number":145,"context_line":"            for rule in delete_rules:"},{"line_number":146,"context_line":"                self.hsp.delete_access_rule(hsp_share_id, rule[\u0027access_to\u0027])"},{"line_number":147,"context_line":""},{"line_number":148,"context_line":"            self._add_access_rules(hsp_share_id, access_rules)"},{"line_number":149,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"5a9d85d2_5ae8f67c","line":146,"range":{"start_line":146,"start_character":16,"end_line":146,"end_character":76},"updated":"2016-06-20 11:35:40.000000000","message":"you should check and ignore rules that not NFS","commit_id":"bb2d7eae547d4a8bf65fe91970be288e76da4518"},{"author":{"_account_id":17097,"name":"Tiago Pasqualini da Silva","email":"t.pasqualini@luizalabs.com","username":"tiago.pasqualini"},"change_message_id":"2c95ec9773af514298bf181d826add28f245017c","unresolved":false,"context_lines":[{"line_number":143,"context_line":"            self._add_access_rules(hsp_share_id, access_rules)"},{"line_number":144,"context_line":"        else:"},{"line_number":145,"context_line":"            for rule in delete_rules:"},{"line_number":146,"context_line":"                self.hsp.delete_access_rule(hsp_share_id, rule[\u0027access_to\u0027])"},{"line_number":147,"context_line":""},{"line_number":148,"context_line":"            self._add_access_rules(hsp_share_id, access_rules)"},{"line_number":149,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"5a9d85d2_ae5278db","line":146,"range":{"start_line":146,"start_character":16,"end_line":146,"end_character":76},"in_reply_to":"5a9d85d2_5ae8f67c","updated":"2016-06-20 13:00:17.000000000","message":"Why? Non NFS share will fail on creation.","commit_id":"bb2d7eae547d4a8bf65fe91970be288e76da4518"},{"author":{"_account_id":14567,"name":"Rodrigo Barbieri","email":"rodrigo.barbieri2010@gmail.com","username":"ganso"},"change_message_id":"6cf1035c10a173e6e46e9671b667d5c4ef5d3108","unresolved":false,"context_lines":[{"line_number":143,"context_line":"            self._add_access_rules(hsp_share_id, access_rules)"},{"line_number":144,"context_line":"        else:"},{"line_number":145,"context_line":"            for rule in delete_rules:"},{"line_number":146,"context_line":"                self.hsp.delete_access_rule(hsp_share_id, rule[\u0027access_to\u0027])"},{"line_number":147,"context_line":""},{"line_number":148,"context_line":"            self._add_access_rules(hsp_share_id, access_rules)"},{"line_number":149,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"5a9d85d2_94a50e06","line":146,"range":{"start_line":146,"start_character":16,"end_line":146,"end_character":76},"in_reply_to":"5a9d85d2_ae5278db","updated":"2016-06-20 13:33:29.000000000","message":"Sorry, I meant if rule type is \u0027ip\u0027","commit_id":"bb2d7eae547d4a8bf65fe91970be288e76da4518"},{"author":{"_account_id":15100,"name":"zhongjun","email":"jun.zhongjun2@gmail.com","username":"zhongjun2"},"change_message_id":"45e50f751a091e2605e802fb7bcf6abc336382e8","unresolved":false,"context_lines":[{"line_number":145,"context_line":"            for rule in delete_rules:"},{"line_number":146,"context_line":"                self.hsp.delete_access_rule(hsp_share_id, rule[\u0027access_to\u0027])"},{"line_number":147,"context_line":""},{"line_number":148,"context_line":"            self._add_access_rules(hsp_share_id, access_rules)"},{"line_number":149,"context_line":""},{"line_number":150,"context_line":"        LOG.debug(\"Successfully updated share %(shr)s rules.\","},{"line_number":151,"context_line":"                  {\u0027shr\u0027: share[\u0027id\u0027]})"}],"source_content_type":"text/x-python","patch_set":3,"id":"5a9d85d2_9ccb911e","line":148,"range":{"start_line":148,"start_character":12,"end_line":148,"end_character":62},"updated":"2016-06-19 10:28:39.000000000","message":"2. Adding/Deleting of several access rules - \u0027access_rules\u0027 contains all access_rules, \u0027add_rules\u0027 and \u0027delete_rules\u0027 contain rules which should be added/deleted. Driver can ignore rules in \u0027access_rules\u0027 and apply only rules from \u0027add_rules\u0027 and \u0027delete_rules\u0027.\n\nSo, Do you need to change access_rules to add_rules?","commit_id":"bb2d7eae547d4a8bf65fe91970be288e76da4518"},{"author":{"_account_id":14567,"name":"Rodrigo Barbieri","email":"rodrigo.barbieri2010@gmail.com","username":"ganso"},"change_message_id":"1f746a9a2f42f98a3436c4684ead8d31cbc84700","unresolved":false,"context_lines":[{"line_number":145,"context_line":"            for rule in delete_rules:"},{"line_number":146,"context_line":"                self.hsp.delete_access_rule(hsp_share_id, rule[\u0027access_to\u0027])"},{"line_number":147,"context_line":""},{"line_number":148,"context_line":"            self._add_access_rules(hsp_share_id, access_rules)"},{"line_number":149,"context_line":""},{"line_number":150,"context_line":"        LOG.debug(\"Successfully updated share %(shr)s rules.\","},{"line_number":151,"context_line":"                  {\u0027shr\u0027: share[\u0027id\u0027]})"}],"source_content_type":"text/x-python","patch_set":3,"id":"5a9d85d2_1a2b0eed","line":148,"range":{"start_line":148,"start_character":49,"end_line":148,"end_character":61},"updated":"2016-06-20 11:35:40.000000000","message":"indeed, this parameter is incorrect, it should be \"add rules\".","commit_id":"bb2d7eae547d4a8bf65fe91970be288e76da4518"},{"author":{"_account_id":17097,"name":"Tiago Pasqualini da Silva","email":"t.pasqualini@luizalabs.com","username":"tiago.pasqualini"},"change_message_id":"2c95ec9773af514298bf181d826add28f245017c","unresolved":false,"context_lines":[{"line_number":145,"context_line":"            for rule in delete_rules:"},{"line_number":146,"context_line":"                self.hsp.delete_access_rule(hsp_share_id, rule[\u0027access_to\u0027])"},{"line_number":147,"context_line":""},{"line_number":148,"context_line":"            self._add_access_rules(hsp_share_id, access_rules)"},{"line_number":149,"context_line":""},{"line_number":150,"context_line":"        LOG.debug(\"Successfully updated share %(shr)s rules.\","},{"line_number":151,"context_line":"                  {\u0027shr\u0027: share[\u0027id\u0027]})"}],"source_content_type":"text/x-python","patch_set":3,"id":"5a9d85d2_ee62c0ac","line":148,"range":{"start_line":148,"start_character":49,"end_line":148,"end_character":61},"in_reply_to":"5a9d85d2_1a2b0eed","updated":"2016-06-20 13:00:17.000000000","message":"It\u0027s wrong. Fixed.","commit_id":"bb2d7eae547d4a8bf65fe91970be288e76da4518"},{"author":{"_account_id":15100,"name":"zhongjun","email":"jun.zhongjun2@gmail.com","username":"zhongjun2"},"change_message_id":"45e50f751a091e2605e802fb7bcf6abc336382e8","unresolved":false,"context_lines":[{"line_number":178,"context_line":"            raise exception.HSPBackendException(msg\u003dmsg)"},{"line_number":179,"context_line":""},{"line_number":180,"context_line":"        LOG.info(_LI(\"Share %(shr_id)s successfully extended to \""},{"line_number":181,"context_line":"                     \"%(shr_size)s.\"),"},{"line_number":182,"context_line":"                 {\u0027shr_id\u0027: share[\u0027id\u0027],"},{"line_number":183,"context_line":"                  \u0027shr_size\u0027: six.text_type(new_size)})"},{"line_number":184,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"5a9d85d2_bcedad90","line":181,"range":{"start_line":181,"start_character":34,"end_line":181,"end_character":35},"updated":"2016-06-19 10:28:39.000000000","message":"How about add \u0027GB\u0027.","commit_id":"bb2d7eae547d4a8bf65fe91970be288e76da4518"},{"author":{"_account_id":17097,"name":"Tiago Pasqualini da Silva","email":"t.pasqualini@luizalabs.com","username":"tiago.pasqualini"},"change_message_id":"2c95ec9773af514298bf181d826add28f245017c","unresolved":false,"context_lines":[{"line_number":178,"context_line":"            raise exception.HSPBackendException(msg\u003dmsg)"},{"line_number":179,"context_line":""},{"line_number":180,"context_line":"        LOG.info(_LI(\"Share %(shr_id)s successfully extended to \""},{"line_number":181,"context_line":"                     \"%(shr_size)s.\"),"},{"line_number":182,"context_line":"                 {\u0027shr_id\u0027: share[\u0027id\u0027],"},{"line_number":183,"context_line":"                  \u0027shr_size\u0027: six.text_type(new_size)})"},{"line_number":184,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"5a9d85d2_cead448a","line":181,"range":{"start_line":181,"start_character":34,"end_line":181,"end_character":35},"in_reply_to":"5a9d85d2_3abb6a74","updated":"2016-06-20 13:00:17.000000000","message":"Done","commit_id":"bb2d7eae547d4a8bf65fe91970be288e76da4518"},{"author":{"_account_id":14567,"name":"Rodrigo Barbieri","email":"rodrigo.barbieri2010@gmail.com","username":"ganso"},"change_message_id":"1f746a9a2f42f98a3436c4684ead8d31cbc84700","unresolved":false,"context_lines":[{"line_number":178,"context_line":"            raise exception.HSPBackendException(msg\u003dmsg)"},{"line_number":179,"context_line":""},{"line_number":180,"context_line":"        LOG.info(_LI(\"Share %(shr_id)s successfully extended to \""},{"line_number":181,"context_line":"                     \"%(shr_size)s.\"),"},{"line_number":182,"context_line":"                 {\u0027shr_id\u0027: share[\u0027id\u0027],"},{"line_number":183,"context_line":"                  \u0027shr_size\u0027: six.text_type(new_size)})"},{"line_number":184,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"5a9d85d2_3abb6a74","line":181,"range":{"start_line":181,"start_character":34,"end_line":181,"end_character":35},"in_reply_to":"5a9d85d2_bcedad90","updated":"2016-06-20 11:35:40.000000000","message":"I would say just \"G\"","commit_id":"bb2d7eae547d4a8bf65fe91970be288e76da4518"},{"author":{"_account_id":15100,"name":"zhongjun","email":"jun.zhongjun2@gmail.com","username":"zhongjun2"},"change_message_id":"45e50f751a091e2605e802fb7bcf6abc336382e8","unresolved":false,"context_lines":[{"line_number":180,"context_line":"        LOG.info(_LI(\"Share %(shr_id)s successfully extended to \""},{"line_number":181,"context_line":"                     \"%(shr_size)s.\"),"},{"line_number":182,"context_line":"                 {\u0027shr_id\u0027: share[\u0027id\u0027],"},{"line_number":183,"context_line":"                  \u0027shr_size\u0027: six.text_type(new_size)})"},{"line_number":184,"context_line":""},{"line_number":185,"context_line":"    def shrink_share(self, share, new_size, share_server\u003dNone):"},{"line_number":186,"context_line":"        LOG.debug(\"Shrinking share in HSP: %(shr_id)s.\","}],"source_content_type":"text/x-python","patch_set":3,"id":"5a9d85d2_7ce505a7","line":183,"range":{"start_line":183,"start_character":30,"end_line":183,"end_character":43},"updated":"2016-06-19 10:28:39.000000000","message":"Not need to use \"six.text_type\".","commit_id":"bb2d7eae547d4a8bf65fe91970be288e76da4518"},{"author":{"_account_id":17097,"name":"Tiago Pasqualini da Silva","email":"t.pasqualini@luizalabs.com","username":"tiago.pasqualini"},"change_message_id":"2c95ec9773af514298bf181d826add28f245017c","unresolved":false,"context_lines":[{"line_number":180,"context_line":"        LOG.info(_LI(\"Share %(shr_id)s successfully extended to \""},{"line_number":181,"context_line":"                     \"%(shr_size)s.\"),"},{"line_number":182,"context_line":"                 {\u0027shr_id\u0027: share[\u0027id\u0027],"},{"line_number":183,"context_line":"                  \u0027shr_size\u0027: six.text_type(new_size)})"},{"line_number":184,"context_line":""},{"line_number":185,"context_line":"    def shrink_share(self, share, new_size, share_server\u003dNone):"},{"line_number":186,"context_line":"        LOG.debug(\"Shrinking share in HSP: %(shr_id)s.\","}],"source_content_type":"text/x-python","patch_set":3,"id":"5a9d85d2_8e95fc41","line":183,"range":{"start_line":183,"start_character":30,"end_line":183,"end_character":43},"in_reply_to":"5a9d85d2_7ce505a7","updated":"2016-06-20 13:00:17.000000000","message":"Indeed. Thanks.","commit_id":"bb2d7eae547d4a8bf65fe91970be288e76da4518"},{"author":{"_account_id":15100,"name":"zhongjun","email":"jun.zhongjun2@gmail.com","username":"zhongjun2"},"change_message_id":"45e50f751a091e2605e802fb7bcf6abc336382e8","unresolved":false,"context_lines":[{"line_number":196,"context_line":"                share_id\u003dshare[\u0027id\u0027])"},{"line_number":197,"context_line":""},{"line_number":198,"context_line":"        LOG.info(_LI(\"Share %(shr_id)s successfully shrunk to \""},{"line_number":199,"context_line":"                     \"%(shr_size)sG.\"),"},{"line_number":200,"context_line":"                 {\u0027shr_id\u0027: share[\u0027id\u0027],"},{"line_number":201,"context_line":"                  \u0027shr_size\u0027: six.text_type(new_size)})"},{"line_number":202,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"5a9d85d2_7cfce53e","line":199,"range":{"start_line":199,"start_character":34,"end_line":199,"end_character":35},"updated":"2016-06-19 10:28:39.000000000","message":"s/G/GB?","commit_id":"bb2d7eae547d4a8bf65fe91970be288e76da4518"},{"author":{"_account_id":17097,"name":"Tiago Pasqualini da Silva","email":"t.pasqualini@luizalabs.com","username":"tiago.pasqualini"},"change_message_id":"2c95ec9773af514298bf181d826add28f245017c","unresolved":false,"context_lines":[{"line_number":196,"context_line":"                share_id\u003dshare[\u0027id\u0027])"},{"line_number":197,"context_line":""},{"line_number":198,"context_line":"        LOG.info(_LI(\"Share %(shr_id)s successfully shrunk to \""},{"line_number":199,"context_line":"                     \"%(shr_size)sG.\"),"},{"line_number":200,"context_line":"                 {\u0027shr_id\u0027: share[\u0027id\u0027],"},{"line_number":201,"context_line":"                  \u0027shr_size\u0027: six.text_type(new_size)})"},{"line_number":202,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"5a9d85d2_0eb62cdc","line":199,"range":{"start_line":199,"start_character":34,"end_line":199,"end_character":35},"in_reply_to":"5a9d85d2_3a408a56","updated":"2016-06-20 13:00:17.000000000","message":"Done","commit_id":"bb2d7eae547d4a8bf65fe91970be288e76da4518"},{"author":{"_account_id":14567,"name":"Rodrigo Barbieri","email":"rodrigo.barbieri2010@gmail.com","username":"ganso"},"change_message_id":"1f746a9a2f42f98a3436c4684ead8d31cbc84700","unresolved":false,"context_lines":[{"line_number":196,"context_line":"                share_id\u003dshare[\u0027id\u0027])"},{"line_number":197,"context_line":""},{"line_number":198,"context_line":"        LOG.info(_LI(\"Share %(shr_id)s successfully shrunk to \""},{"line_number":199,"context_line":"                     \"%(shr_size)sG.\"),"},{"line_number":200,"context_line":"                 {\u0027shr_id\u0027: share[\u0027id\u0027],"},{"line_number":201,"context_line":"                  \u0027shr_size\u0027: six.text_type(new_size)})"},{"line_number":202,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"5a9d85d2_3a408a56","line":199,"range":{"start_line":199,"start_character":34,"end_line":199,"end_character":35},"in_reply_to":"5a9d85d2_7cfce53e","updated":"2016-06-20 11:35:40.000000000","message":"-1","commit_id":"bb2d7eae547d4a8bf65fe91970be288e76da4518"},{"author":{"_account_id":15100,"name":"zhongjun","email":"jun.zhongjun2@gmail.com","username":"zhongjun2"},"change_message_id":"45e50f751a091e2605e802fb7bcf6abc336382e8","unresolved":false,"context_lines":[{"line_number":198,"context_line":"        LOG.info(_LI(\"Share %(shr_id)s successfully shrunk to \""},{"line_number":199,"context_line":"                     \"%(shr_size)sG.\"),"},{"line_number":200,"context_line":"                 {\u0027shr_id\u0027: share[\u0027id\u0027],"},{"line_number":201,"context_line":"                  \u0027shr_size\u0027: six.text_type(new_size)})"},{"line_number":202,"context_line":""},{"line_number":203,"context_line":"    def manage_existing(self, share, driver_options):"},{"line_number":204,"context_line":"        LOG.debug(\"Managing share in HSP: %(shr_id)s.\","}],"source_content_type":"text/x-python","patch_set":3,"id":"5a9d85d2_1cffa135","line":201,"range":{"start_line":201,"start_character":30,"end_line":201,"end_character":43},"updated":"2016-06-19 10:28:39.000000000","message":"Not need to use \"six.text_type\".","commit_id":"bb2d7eae547d4a8bf65fe91970be288e76da4518"},{"author":{"_account_id":17097,"name":"Tiago Pasqualini da Silva","email":"t.pasqualini@luizalabs.com","username":"tiago.pasqualini"},"change_message_id":"2c95ec9773af514298bf181d826add28f245017c","unresolved":false,"context_lines":[{"line_number":198,"context_line":"        LOG.info(_LI(\"Share %(shr_id)s successfully shrunk to \""},{"line_number":199,"context_line":"                     \"%(shr_size)sG.\"),"},{"line_number":200,"context_line":"                 {\u0027shr_id\u0027: share[\u0027id\u0027],"},{"line_number":201,"context_line":"                  \u0027shr_size\u0027: six.text_type(new_size)})"},{"line_number":202,"context_line":""},{"line_number":203,"context_line":"    def manage_existing(self, share, driver_options):"},{"line_number":204,"context_line":"        LOG.debug(\"Managing share in HSP: %(shr_id)s.\","}],"source_content_type":"text/x-python","patch_set":3,"id":"5a9d85d2_ce9f045e","line":201,"range":{"start_line":201,"start_character":30,"end_line":201,"end_character":43},"in_reply_to":"5a9d85d2_1cffa135","updated":"2016-06-20 13:00:17.000000000","message":"Done","commit_id":"bb2d7eae547d4a8bf65fe91970be288e76da4518"},{"author":{"_account_id":14567,"name":"Rodrigo Barbieri","email":"rodrigo.barbieri2010@gmail.com","username":"ganso"},"change_message_id":"1f746a9a2f42f98a3436c4684ead8d31cbc84700","unresolved":false,"context_lines":[{"line_number":210,"context_line":"            hsp_share \u003d self.hsp.get_share(name\u003dshare_name.strip(\u0027/\u0027))"},{"line_number":211,"context_line":"        except exception.HSPItemNotFoundException:"},{"line_number":212,"context_line":"            msg \u003d _(\"The share %s trying to be managed was not found on \""},{"line_number":213,"context_line":"                    \"backend\") % share[\u0027id\u0027]"},{"line_number":214,"context_line":"            raise exception.ManageInvalidShare(reason\u003dmsg)"},{"line_number":215,"context_line":""},{"line_number":216,"context_line":"        self.hsp.rename_file_system(hsp_share[\u0027properties\u0027][\u0027file-system-id\u0027],"}],"source_content_type":"text/x-python","patch_set":3,"id":"5a9d85d2_bd73d44c","line":213,"range":{"start_line":213,"start_character":27,"end_line":213,"end_character":29},"updated":"2016-06-20 11:35:40.000000000","message":"period","commit_id":"bb2d7eae547d4a8bf65fe91970be288e76da4518"},{"author":{"_account_id":17097,"name":"Tiago Pasqualini da Silva","email":"t.pasqualini@luizalabs.com","username":"tiago.pasqualini"},"change_message_id":"2c95ec9773af514298bf181d826add28f245017c","unresolved":false,"context_lines":[{"line_number":210,"context_line":"            hsp_share \u003d self.hsp.get_share(name\u003dshare_name.strip(\u0027/\u0027))"},{"line_number":211,"context_line":"        except exception.HSPItemNotFoundException:"},{"line_number":212,"context_line":"            msg \u003d _(\"The share %s trying to be managed was not found on \""},{"line_number":213,"context_line":"                    \"backend\") % share[\u0027id\u0027]"},{"line_number":214,"context_line":"            raise exception.ManageInvalidShare(reason\u003dmsg)"},{"line_number":215,"context_line":""},{"line_number":216,"context_line":"        self.hsp.rename_file_system(hsp_share[\u0027properties\u0027][\u0027file-system-id\u0027],"}],"source_content_type":"text/x-python","patch_set":3,"id":"5a9d85d2_6ea09091","line":213,"range":{"start_line":213,"start_character":27,"end_line":213,"end_character":29},"in_reply_to":"5a9d85d2_bd73d44c","updated":"2016-06-20 13:00:17.000000000","message":"Done","commit_id":"bb2d7eae547d4a8bf65fe91970be288e76da4518"},{"author":{"_account_id":14567,"name":"Rodrigo Barbieri","email":"rodrigo.barbieri2010@gmail.com","username":"ganso"},"change_message_id":"1f746a9a2f42f98a3436c4684ead8d31cbc84700","unresolved":false,"context_lines":[{"line_number":213,"context_line":"                    \"backend\") % share[\u0027id\u0027]"},{"line_number":214,"context_line":"            raise exception.ManageInvalidShare(reason\u003dmsg)"},{"line_number":215,"context_line":""},{"line_number":216,"context_line":"        self.hsp.rename_file_system(hsp_share[\u0027properties\u0027][\u0027file-system-id\u0027],"},{"line_number":217,"context_line":"                                    share[\u0027id\u0027])"},{"line_number":218,"context_line":"        file_system \u003d self.hsp.get_file_system(share[\u0027id\u0027])"},{"line_number":219,"context_line":""},{"line_number":220,"context_line":"        LOG.info(_LI(\"Share %(shr_path)s was successfully managed with ID \""}],"source_content_type":"text/x-python","patch_set":3,"id":"5a9d85d2_1d74a89a","line":217,"range":{"start_line":216,"start_character":8,"end_line":217,"end_character":48},"updated":"2016-06-20 11:35:40.000000000","message":"have you checked if this is disruptive?","commit_id":"bb2d7eae547d4a8bf65fe91970be288e76da4518"},{"author":{"_account_id":17097,"name":"Tiago Pasqualini da Silva","email":"t.pasqualini@luizalabs.com","username":"tiago.pasqualini"},"change_message_id":"2c95ec9773af514298bf181d826add28f245017c","unresolved":false,"context_lines":[{"line_number":213,"context_line":"                    \"backend\") % share[\u0027id\u0027]"},{"line_number":214,"context_line":"            raise exception.ManageInvalidShare(reason\u003dmsg)"},{"line_number":215,"context_line":""},{"line_number":216,"context_line":"        self.hsp.rename_file_system(hsp_share[\u0027properties\u0027][\u0027file-system-id\u0027],"},{"line_number":217,"context_line":"                                    share[\u0027id\u0027])"},{"line_number":218,"context_line":"        file_system \u003d self.hsp.get_file_system(share[\u0027id\u0027])"},{"line_number":219,"context_line":""},{"line_number":220,"context_line":"        LOG.info(_LI(\"Share %(shr_path)s was successfully managed with ID \""}],"source_content_type":"text/x-python","patch_set":3,"id":"5a9d85d2_ee93e04d","line":217,"range":{"start_line":216,"start_character":8,"end_line":217,"end_character":48},"in_reply_to":"5a9d85d2_1d74a89a","updated":"2016-06-20 13:00:17.000000000","message":"It\u0027s not. Renaming the share is disruptive, but I\u0027m only renaming the filesystem.","commit_id":"bb2d7eae547d4a8bf65fe91970be288e76da4518"},{"author":{"_account_id":14567,"name":"Rodrigo Barbieri","email":"rodrigo.barbieri2010@gmail.com","username":"ganso"},"change_message_id":"6cf1035c10a173e6e46e9671b667d5c4ef5d3108","unresolved":false,"context_lines":[{"line_number":213,"context_line":"                    \"backend\") % share[\u0027id\u0027]"},{"line_number":214,"context_line":"            raise exception.ManageInvalidShare(reason\u003dmsg)"},{"line_number":215,"context_line":""},{"line_number":216,"context_line":"        self.hsp.rename_file_system(hsp_share[\u0027properties\u0027][\u0027file-system-id\u0027],"},{"line_number":217,"context_line":"                                    share[\u0027id\u0027])"},{"line_number":218,"context_line":"        file_system \u003d self.hsp.get_file_system(share[\u0027id\u0027])"},{"line_number":219,"context_line":""},{"line_number":220,"context_line":"        LOG.info(_LI(\"Share %(shr_path)s was successfully managed with ID \""}],"source_content_type":"text/x-python","patch_set":3,"id":"5a9d85d2_14911e9a","line":217,"range":{"start_line":216,"start_character":8,"end_line":217,"end_character":48},"in_reply_to":"5a9d85d2_ee93e04d","updated":"2016-06-20 13:33:29.000000000","message":"got it","commit_id":"bb2d7eae547d4a8bf65fe91970be288e76da4518"},{"author":{"_account_id":14567,"name":"Rodrigo Barbieri","email":"rodrigo.barbieri2010@gmail.com","username":"ganso"},"change_message_id":"060baa93852ac37b8f21b627e97960a85cd3e48c","unresolved":false,"context_lines":[{"line_number":106,"context_line":"        except exception.HSPBackendException as e:"},{"line_number":107,"context_line":"            with excutils.save_and_reraise_exception():"},{"line_number":108,"context_line":"                self.hsp.delete_file_system(filesystem_id)"},{"line_number":109,"context_line":"                msg \u003d six.text_type(e)"},{"line_number":110,"context_line":"                LOG.exception(msg)"},{"line_number":111,"context_line":""},{"line_number":112,"context_line":"        uri \u003d self.hsp_host + \u0027:/\u0027 + share[\u0027id\u0027]"}],"source_content_type":"text/x-python","patch_set":5,"id":"3aaa91ec_585e4a46","line":109,"range":{"start_line":109,"start_character":16,"end_line":109,"end_character":38},"updated":"2016-06-21 20:34:31.000000000","message":"create a friendly message here instead of printing whatever error the REST API returns.","commit_id":"8e8f00e04e04e2ca109f1cdb5fb05a1091f2ebf4"},{"author":{"_account_id":17097,"name":"Tiago Pasqualini da Silva","email":"t.pasqualini@luizalabs.com","username":"tiago.pasqualini"},"change_message_id":"cd8c274d7f7e8fcc4322a1b3ac94598a55222ed0","unresolved":false,"context_lines":[{"line_number":106,"context_line":"        except exception.HSPBackendException as e:"},{"line_number":107,"context_line":"            with excutils.save_and_reraise_exception():"},{"line_number":108,"context_line":"                self.hsp.delete_file_system(filesystem_id)"},{"line_number":109,"context_line":"                msg \u003d six.text_type(e)"},{"line_number":110,"context_line":"                LOG.exception(msg)"},{"line_number":111,"context_line":""},{"line_number":112,"context_line":"        uri \u003d self.hsp_host + \u0027:/\u0027 + share[\u0027id\u0027]"}],"source_content_type":"text/x-python","patch_set":5,"id":"3aaa91ec_e910e450","line":109,"range":{"start_line":109,"start_character":16,"end_line":109,"end_character":38},"in_reply_to":"3aaa91ec_585e4a46","updated":"2016-06-22 12:32:26.000000000","message":"The API message is already friendly enough IMO. I can add some stuff to the message though.","commit_id":"8e8f00e04e04e2ca109f1cdb5fb05a1091f2ebf4"},{"author":{"_account_id":10058,"name":"Erlon R. Cruz","email":"erlon.rodrigues.cruz@canonical.com","username":"sombrafam"},"change_message_id":"9eb227129f7e8487bc2f264ff66281cebfc32733","unresolved":false,"context_lines":[{"line_number":22,"context_line":""},{"line_number":23,"context_line":"from manila.common import constants"},{"line_number":24,"context_line":"from manila import exception"},{"line_number":25,"context_line":"from manila.i18n import _"},{"line_number":26,"context_line":"from manila.i18n import _LE"},{"line_number":27,"context_line":"from manila.i18n import _LI"},{"line_number":28,"context_line":"from manila.share import driver"},{"line_number":29,"context_line":"from manila.share.drivers.hitachi import rest"},{"line_number":30,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"3aaa91ec_e6eff4e6","line":27,"range":{"start_line":25,"start_character":0,"end_line":27,"end_character":27},"updated":"2016-06-24 12:07:00.000000000","message":"Not big deal, but this 3 can go in a single line.","commit_id":"0a5df6e2cd45d798269799ac8f18bbb2d0c396fc"},{"author":{"_account_id":10058,"name":"Erlon R. Cruz","email":"erlon.rodrigues.cruz@canonical.com","username":"sombrafam"},"change_message_id":"9eb227129f7e8487bc2f264ff66281cebfc32733","unresolved":false,"context_lines":[{"line_number":40,"context_line":"    cfg.StrOpt(\u0027hitachi_hsp_password\u0027,"},{"line_number":41,"context_line":"               secret\u003dTrue,"},{"line_number":42,"context_line":"               help\u003d\"HSP password for the username provided.\"),"},{"line_number":43,"context_line":"    cfg.IntOpt(\u0027hitachi_hsp_job_timeout\u0027,"},{"line_number":44,"context_line":"               help\u003d\"The time (in seconds) to wait for a job, such as create \""},{"line_number":45,"context_line":"                    \"file-system, to finish before aborting.\"),"},{"line_number":46,"context_line":"]"}],"source_content_type":"text/x-python","patch_set":6,"id":"3aaa91ec_e6c6d466","line":43,"updated":"2016-06-24 12:07:00.000000000","message":"default\u003d???","commit_id":"0a5df6e2cd45d798269799ac8f18bbb2d0c396fc"},{"author":{"_account_id":17097,"name":"Tiago Pasqualini da Silva","email":"t.pasqualini@luizalabs.com","username":"tiago.pasqualini"},"change_message_id":"ef1ce939d52d2b0d98f344606aaea00290bb874c","unresolved":false,"context_lines":[{"line_number":40,"context_line":"    cfg.StrOpt(\u0027hitachi_hsp_password\u0027,"},{"line_number":41,"context_line":"               secret\u003dTrue,"},{"line_number":42,"context_line":"               help\u003d\"HSP password for the username provided.\"),"},{"line_number":43,"context_line":"    cfg.IntOpt(\u0027hitachi_hsp_job_timeout\u0027,"},{"line_number":44,"context_line":"               help\u003d\"The time (in seconds) to wait for a job, such as create \""},{"line_number":45,"context_line":"                    \"file-system, to finish before aborting.\"),"},{"line_number":46,"context_line":"]"}],"source_content_type":"text/x-python","patch_set":6,"id":"1aa78d24_9941750e","line":43,"in_reply_to":"3aaa91ec_e6c6d466","updated":"2016-07-11 19:04:33.000000000","message":"Done","commit_id":"0a5df6e2cd45d798269799ac8f18bbb2d0c396fc"},{"author":{"_account_id":8851,"name":"Valeriy Ponomaryov","email":"kiparis.kh@gmail.com","username":"vponomaryov"},"change_message_id":"bf03fccf5920a9e2c5f0d355c5891632b1f79024","unresolved":false,"context_lines":[{"line_number":53,"context_line":"    \"\"\""},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"    def __init__(self, *args, **kwargs):"},{"line_number":56,"context_line":"        super(HitachiHSPDriver, self).__init__(False, *args, **kwargs)"},{"line_number":57,"context_line":""},{"line_number":58,"context_line":"        self.configuration.append_config_values(hitachi_hsp_opts)"},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"        self.backend_name \u003d self.configuration.safe_get(\u0027share_backend_name\u0027)"},{"line_number":61,"context_line":"        self.hsp_host \u003d self.configuration.safe_get(\u0027hitachi_hsp_host\u0027)"}],"source_content_type":"text/x-python","patch_set":6,"id":"3aaa91ec_f7c99979","line":58,"range":{"start_line":56,"start_character":8,"end_line":58,"end_character":65},"updated":"2016-06-23 13:36:50.000000000","message":"https://github.com/openstack/manila/blob/bf24cdba/manila/share/drivers/zfsonlinux/driver.py#L136","commit_id":"0a5df6e2cd45d798269799ac8f18bbb2d0c396fc"},{"author":{"_account_id":17097,"name":"Tiago Pasqualini da Silva","email":"t.pasqualini@luizalabs.com","username":"tiago.pasqualini"},"change_message_id":"ef1ce939d52d2b0d98f344606aaea00290bb874c","unresolved":false,"context_lines":[{"line_number":53,"context_line":"    \"\"\""},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"    def __init__(self, *args, **kwargs):"},{"line_number":56,"context_line":"        super(HitachiHSPDriver, self).__init__(False, *args, **kwargs)"},{"line_number":57,"context_line":""},{"line_number":58,"context_line":"        self.configuration.append_config_values(hitachi_hsp_opts)"},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"        self.backend_name \u003d self.configuration.safe_get(\u0027share_backend_name\u0027)"},{"line_number":61,"context_line":"        self.hsp_host \u003d self.configuration.safe_get(\u0027hitachi_hsp_host\u0027)"}],"source_content_type":"text/x-python","patch_set":6,"id":"1aa78d24_99269566","line":58,"range":{"start_line":56,"start_character":8,"end_line":58,"end_character":65},"in_reply_to":"3aaa91ec_f7c99979","updated":"2016-07-11 19:04:33.000000000","message":"Done","commit_id":"0a5df6e2cd45d798269799ac8f18bbb2d0c396fc"},{"author":{"_account_id":10058,"name":"Erlon R. Cruz","email":"erlon.rodrigues.cruz@canonical.com","username":"sombrafam"},"change_message_id":"9eb227129f7e8487bc2f264ff66281cebfc32733","unresolved":false,"context_lines":[{"line_number":62,"context_line":"        hsp_username \u003d self.configuration.safe_get(\u0027hitachi_hsp_username\u0027)"},{"line_number":63,"context_line":"        hsp_password \u003d self.configuration.safe_get(\u0027hitachi_hsp_password\u0027)"},{"line_number":64,"context_line":"        job_timeout \u003d self.configuration.safe_get(\u0027hitachi_hsp_job_timeout\u0027)"},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"        self.hsp \u003d rest.HSPRestBackend(self.hsp_host, hsp_username,"},{"line_number":67,"context_line":"                                       hsp_password, job_timeout)"},{"line_number":68,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"3aaa91ec_c6bf58a8","line":65,"updated":"2016-06-24 12:07:00.000000000","message":"LOG.info(_LI(\"Hitachi HSP Driver %(ver)s\"), ver)\nYou need to print the driver version so we know what version the user is using in case of support needed.","commit_id":"0a5df6e2cd45d798269799ac8f18bbb2d0c396fc"},{"author":{"_account_id":17097,"name":"Tiago Pasqualini da Silva","email":"t.pasqualini@luizalabs.com","username":"tiago.pasqualini"},"change_message_id":"ef1ce939d52d2b0d98f344606aaea00290bb874c","unresolved":false,"context_lines":[{"line_number":62,"context_line":"        hsp_username \u003d self.configuration.safe_get(\u0027hitachi_hsp_username\u0027)"},{"line_number":63,"context_line":"        hsp_password \u003d self.configuration.safe_get(\u0027hitachi_hsp_password\u0027)"},{"line_number":64,"context_line":"        job_timeout \u003d self.configuration.safe_get(\u0027hitachi_hsp_job_timeout\u0027)"},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"        self.hsp \u003d rest.HSPRestBackend(self.hsp_host, hsp_username,"},{"line_number":67,"context_line":"                                       hsp_password, job_timeout)"},{"line_number":68,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"1aa78d24_dcf92bca","line":65,"in_reply_to":"3aaa91ec_c6bf58a8","updated":"2016-07-11 19:04:33.000000000","message":"The version is reported on the _update_share_stats method and the stats are logged in line 91.","commit_id":"0a5df6e2cd45d798269799ac8f18bbb2d0c396fc"},{"author":{"_account_id":10058,"name":"Erlon R. Cruz","email":"erlon.rodrigues.cruz@canonical.com","username":"sombrafam"},"change_message_id":"9eb227129f7e8487bc2f264ff66281cebfc32733","unresolved":false,"context_lines":[{"line_number":69,"context_line":"    def _update_share_stats(self, data\u003dNone):"},{"line_number":70,"context_line":"        LOG.debug(\"Updating Backend Capability Information - Hitachi HSP.\")"},{"line_number":71,"context_line":""},{"line_number":72,"context_line":"        reserved \u003d self.configuration.safe_get(\u0027reserved_share_percentage\u0027)"},{"line_number":73,"context_line":"        hsp_cluster \u003d self.hsp.get_clusters()"},{"line_number":74,"context_line":""},{"line_number":75,"context_line":"        total_space \u003d hsp_cluster[\u0027properties\u0027][\u0027total-storage-capacity\u0027]"}],"source_content_type":"text/x-python","patch_set":6,"id":"3aaa91ec_26629c3e","line":72,"range":{"start_line":72,"start_character":48,"end_line":72,"end_character":73},"updated":"2016-06-24 12:07:00.000000000","message":"Does this always have a safe value?","commit_id":"0a5df6e2cd45d798269799ac8f18bbb2d0c396fc"},{"author":{"_account_id":17097,"name":"Tiago Pasqualini da Silva","email":"t.pasqualini@luizalabs.com","username":"tiago.pasqualini"},"change_message_id":"ef1ce939d52d2b0d98f344606aaea00290bb874c","unresolved":false,"context_lines":[{"line_number":69,"context_line":"    def _update_share_stats(self, data\u003dNone):"},{"line_number":70,"context_line":"        LOG.debug(\"Updating Backend Capability Information - Hitachi HSP.\")"},{"line_number":71,"context_line":""},{"line_number":72,"context_line":"        reserved \u003d self.configuration.safe_get(\u0027reserved_share_percentage\u0027)"},{"line_number":73,"context_line":"        hsp_cluster \u003d self.hsp.get_clusters()"},{"line_number":74,"context_line":""},{"line_number":75,"context_line":"        total_space \u003d hsp_cluster[\u0027properties\u0027][\u0027total-storage-capacity\u0027]"}],"source_content_type":"text/x-python","patch_set":6,"id":"1aa78d24_9c268366","line":72,"range":{"start_line":72,"start_character":48,"end_line":72,"end_character":73},"in_reply_to":"3aaa91ec_26629c3e","updated":"2016-07-11 19:04:33.000000000","message":"It defaults to zero on driver\u0027s base class.","commit_id":"0a5df6e2cd45d798269799ac8f18bbb2d0c396fc"},{"author":{"_account_id":10058,"name":"Erlon R. Cruz","email":"erlon.rodrigues.cruz@canonical.com","username":"sombrafam"},"change_message_id":"9eb227129f7e8487bc2f264ff66281cebfc32733","unresolved":false,"context_lines":[{"line_number":77,"context_line":""},{"line_number":78,"context_line":"        data \u003d {"},{"line_number":79,"context_line":"            \u0027share_backend_name\u0027: self.backend_name,"},{"line_number":80,"context_line":"            \u0027driver_handles_share_servers\u0027: self.driver_handles_share_servers,"},{"line_number":81,"context_line":"            \u0027vendor_name\u0027: \u0027Hitachi\u0027,"},{"line_number":82,"context_line":"            \u0027driver_version\u0027: \u00271.0.0\u0027,"},{"line_number":83,"context_line":"            \u0027storage_protocol\u0027: \u0027NFS\u0027,"}],"source_content_type":"text/x-python","patch_set":6,"id":"3aaa91ec_012dca94","line":80,"range":{"start_line":80,"start_character":44,"end_line":80,"end_character":77},"updated":"2016-06-24 12:07:00.000000000","message":"Why not just say \u0027False\u0027 so we don\u0027t have to figure out the default value?","commit_id":"0a5df6e2cd45d798269799ac8f18bbb2d0c396fc"},{"author":{"_account_id":17097,"name":"Tiago Pasqualini da Silva","email":"t.pasqualini@luizalabs.com","username":"tiago.pasqualini"},"change_message_id":"ef1ce939d52d2b0d98f344606aaea00290bb874c","unresolved":false,"context_lines":[{"line_number":77,"context_line":""},{"line_number":78,"context_line":"        data \u003d {"},{"line_number":79,"context_line":"            \u0027share_backend_name\u0027: self.backend_name,"},{"line_number":80,"context_line":"            \u0027driver_handles_share_servers\u0027: self.driver_handles_share_servers,"},{"line_number":81,"context_line":"            \u0027vendor_name\u0027: \u0027Hitachi\u0027,"},{"line_number":82,"context_line":"            \u0027driver_version\u0027: \u00271.0.0\u0027,"},{"line_number":83,"context_line":"            \u0027storage_protocol\u0027: \u0027NFS\u0027,"}],"source_content_type":"text/x-python","patch_set":6,"id":"1aa78d24_bce25fff","line":80,"range":{"start_line":80,"start_character":44,"end_line":80,"end_character":77},"in_reply_to":"3aaa91ec_012dca94","updated":"2016-07-11 19:04:33.000000000","message":"So that when/if it changes to [True, False] we don\u0027t need to change in two different places.","commit_id":"0a5df6e2cd45d798269799ac8f18bbb2d0c396fc"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"3cafd5b06703728bbd33d55b09d1355205b3adf6","unresolved":false,"context_lines":[{"line_number":85,"context_line":"            \u0027free_capacity_gb\u0027: free_space / units.Gi,"},{"line_number":86,"context_line":"            \u0027reserved_percentage\u0027: reserved,"},{"line_number":87,"context_line":"            \u0027qos\u0027: False,"},{"line_number":88,"context_line":"            \u0027thin_provisioning\u0027: True,"},{"line_number":89,"context_line":"        }"},{"line_number":90,"context_line":""},{"line_number":91,"context_line":"        LOG.info(_LI(\"Hitachi HSP Capabilities: %(data)s.\"),"}],"source_content_type":"text/x-python","patch_set":6,"id":"1aa78d24_6495b585","line":88,"updated":"2016-07-06 21:12:16.000000000","message":"For scheduler to work properly, you should also report \u0027provisioned_capacity_gb\u0027 since you support thin_provisioning\u003dTrue.","commit_id":"0a5df6e2cd45d798269799ac8f18bbb2d0c396fc"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"a9c6bf1216fce4ef063dfaa5c65d7627d1c057f1","unresolved":false,"context_lines":[{"line_number":85,"context_line":"            \u0027free_capacity_gb\u0027: free_space / units.Gi,"},{"line_number":86,"context_line":"            \u0027reserved_percentage\u0027: reserved,"},{"line_number":87,"context_line":"            \u0027qos\u0027: False,"},{"line_number":88,"context_line":"            \u0027thin_provisioning\u0027: True,"},{"line_number":89,"context_line":"        }"},{"line_number":90,"context_line":""},{"line_number":91,"context_line":"        LOG.info(_LI(\"Hitachi HSP Capabilities: %(data)s.\"),"}],"source_content_type":"text/x-python","patch_set":6,"id":"bacf61ea_c74138ab","line":88,"in_reply_to":"1aa78d24_3f2e61fa","updated":"2016-07-29 16:58:16.000000000","message":"Scheduler is supposed to do an estimate but it won\u0027t know if someone creates a share outside of Manila.  So the best way is for driver to report it.  By the way, the scheduler\u0027s estimation part is being added to Manila (not in current code base yet).","commit_id":"0a5df6e2cd45d798269799ac8f18bbb2d0c396fc"},{"author":{"_account_id":17097,"name":"Tiago Pasqualini da Silva","email":"t.pasqualini@luizalabs.com","username":"tiago.pasqualini"},"change_message_id":"ef1ce939d52d2b0d98f344606aaea00290bb874c","unresolved":false,"context_lines":[{"line_number":85,"context_line":"            \u0027free_capacity_gb\u0027: free_space / units.Gi,"},{"line_number":86,"context_line":"            \u0027reserved_percentage\u0027: reserved,"},{"line_number":87,"context_line":"            \u0027qos\u0027: False,"},{"line_number":88,"context_line":"            \u0027thin_provisioning\u0027: True,"},{"line_number":89,"context_line":"        }"},{"line_number":90,"context_line":""},{"line_number":91,"context_line":"        LOG.info(_LI(\"Hitachi HSP Capabilities: %(data)s.\"),"}],"source_content_type":"text/x-python","patch_set":6,"id":"1aa78d24_3f2e61fa","line":88,"in_reply_to":"1aa78d24_6495b585","updated":"2016-07-11 19:04:33.000000000","message":"Won\u0027t it use the default value?","commit_id":"0a5df6e2cd45d798269799ac8f18bbb2d0c396fc"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"ad311d615e99fcf266f258ccda4c24a2fecc1608","unresolved":false,"context_lines":[{"line_number":86,"context_line":"            \u0027reserved_percentage\u0027: reserved,"},{"line_number":87,"context_line":"            \u0027qos\u0027: False,"},{"line_number":88,"context_line":"            \u0027thin_provisioning\u0027: True,"},{"line_number":89,"context_line":"        }"},{"line_number":90,"context_line":""},{"line_number":91,"context_line":"        LOG.info(_LI(\"Hitachi HSP Capabilities: %(data)s.\"),"},{"line_number":92,"context_line":"                 {\u0027data\u0027: six.text_type(data)})"}],"source_content_type":"text/x-python","patch_set":6,"id":"1aa78d24_5f53206b","line":89,"updated":"2016-07-06 21:40:54.000000000","message":"Please also report max_over_subscription_ratio.","commit_id":"0a5df6e2cd45d798269799ac8f18bbb2d0c396fc"},{"author":{"_account_id":17097,"name":"Tiago Pasqualini da Silva","email":"t.pasqualini@luizalabs.com","username":"tiago.pasqualini"},"change_message_id":"ef1ce939d52d2b0d98f344606aaea00290bb874c","unresolved":false,"context_lines":[{"line_number":86,"context_line":"            \u0027reserved_percentage\u0027: reserved,"},{"line_number":87,"context_line":"            \u0027qos\u0027: False,"},{"line_number":88,"context_line":"            \u0027thin_provisioning\u0027: True,"},{"line_number":89,"context_line":"        }"},{"line_number":90,"context_line":""},{"line_number":91,"context_line":"        LOG.info(_LI(\"Hitachi HSP Capabilities: %(data)s.\"),"},{"line_number":92,"context_line":"                 {\u0027data\u0027: six.text_type(data)})"}],"source_content_type":"text/x-python","patch_set":6,"id":"1aa78d24_ff1b39c8","line":89,"in_reply_to":"1aa78d24_5f53206b","updated":"2016-07-11 19:04:33.000000000","message":"Done","commit_id":"0a5df6e2cd45d798269799ac8f18bbb2d0c396fc"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"3cafd5b06703728bbd33d55b09d1355205b3adf6","unresolved":false,"context_lines":[{"line_number":97,"context_line":""},{"line_number":98,"context_line":"        if share[\u0027share_proto\u0027].lower() !\u003d \u0027nfs\u0027:"},{"line_number":99,"context_line":"            msg \u003d _(\"Only NFS protocol is currently supported.\")"},{"line_number":100,"context_line":"            raise exception.ShareBackendException(msg\u003dmsg)"},{"line_number":101,"context_line":""},{"line_number":102,"context_line":"        self.hsp.add_file_system(share[\u0027id\u0027], share[\u0027size\u0027] * units.Gi)"},{"line_number":103,"context_line":"        filesystem_id \u003d self.hsp.get_file_system(share[\u0027id\u0027])[\u0027id\u0027]"}],"source_content_type":"text/x-python","patch_set":6,"id":"1aa78d24_64f815c4","line":100,"updated":"2016-07-06 21:12:16.000000000","message":"Better to use InvalidShare here.","commit_id":"0a5df6e2cd45d798269799ac8f18bbb2d0c396fc"},{"author":{"_account_id":17097,"name":"Tiago Pasqualini da Silva","email":"t.pasqualini@luizalabs.com","username":"tiago.pasqualini"},"change_message_id":"ef1ce939d52d2b0d98f344606aaea00290bb874c","unresolved":false,"context_lines":[{"line_number":97,"context_line":""},{"line_number":98,"context_line":"        if share[\u0027share_proto\u0027].lower() !\u003d \u0027nfs\u0027:"},{"line_number":99,"context_line":"            msg \u003d _(\"Only NFS protocol is currently supported.\")"},{"line_number":100,"context_line":"            raise exception.ShareBackendException(msg\u003dmsg)"},{"line_number":101,"context_line":""},{"line_number":102,"context_line":"        self.hsp.add_file_system(share[\u0027id\u0027], share[\u0027size\u0027] * units.Gi)"},{"line_number":103,"context_line":"        filesystem_id \u003d self.hsp.get_file_system(share[\u0027id\u0027])[\u0027id\u0027]"}],"source_content_type":"text/x-python","patch_set":6,"id":"1aa78d24_9f8315cc","line":100,"in_reply_to":"1aa78d24_64f815c4","updated":"2016-07-11 19:04:33.000000000","message":"Done","commit_id":"0a5df6e2cd45d798269799ac8f18bbb2d0c396fc"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"3cafd5b06703728bbd33d55b09d1355205b3adf6","unresolved":false,"context_lines":[{"line_number":107,"context_line":"        except exception.HSPBackendException as e:"},{"line_number":108,"context_line":"            with excutils.save_and_reraise_exception():"},{"line_number":109,"context_line":"                self.hsp.delete_file_system(filesystem_id)"},{"line_number":110,"context_line":"                msg \u003d (_LE(\"Could not create share on HSP: %s\") %"},{"line_number":111,"context_line":"                       six.text_type(e))"},{"line_number":112,"context_line":"                LOG.exception(msg)"},{"line_number":113,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"1aa78d24_e4a7e5ba","line":110,"updated":"2016-07-06 21:12:16.000000000","message":"% -\u003e ,","commit_id":"0a5df6e2cd45d798269799ac8f18bbb2d0c396fc"},{"author":{"_account_id":17097,"name":"Tiago Pasqualini da Silva","email":"t.pasqualini@luizalabs.com","username":"tiago.pasqualini"},"change_message_id":"ef1ce939d52d2b0d98f344606aaea00290bb874c","unresolved":false,"context_lines":[{"line_number":107,"context_line":"        except exception.HSPBackendException as e:"},{"line_number":108,"context_line":"            with excutils.save_and_reraise_exception():"},{"line_number":109,"context_line":"                self.hsp.delete_file_system(filesystem_id)"},{"line_number":110,"context_line":"                msg \u003d (_LE(\"Could not create share on HSP: %s\") %"},{"line_number":111,"context_line":"                       six.text_type(e))"},{"line_number":112,"context_line":"                LOG.exception(msg)"},{"line_number":113,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"1aa78d24_22048abe","line":110,"in_reply_to":"1aa78d24_e4a7e5ba","updated":"2016-07-11 19:04:33.000000000","message":"Changing % to , will change the behavior. Instead of formatting the string, it will make msg a tuple. I did not understand this comment.","commit_id":"0a5df6e2cd45d798269799ac8f18bbb2d0c396fc"},{"author":{"_account_id":8851,"name":"Valeriy Ponomaryov","email":"kiparis.kh@gmail.com","username":"vponomaryov"},"change_message_id":"6803cf2be948d09a004f16e5d9944d9a1e7f39c6","unresolved":false,"context_lines":[{"line_number":31,"context_line":"LOG \u003d log.getLogger(__name__)"},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"hitachi_hsp_opts \u003d ["},{"line_number":34,"context_line":"    cfg.StrOpt(\u0027hitachi_hsp_host\u0027,"},{"line_number":35,"context_line":"               help\u003d\"HSP management host for communication between Manila \""},{"line_number":36,"context_line":"                    \"controller and HSP.\"),"},{"line_number":37,"context_line":"    cfg.StrOpt(\u0027hitachi_hsp_username\u0027,"},{"line_number":38,"context_line":"               help\u003d\"HSP username to perform tasks such as create-file-systems\""},{"line_number":39,"context_line":"                    \" and shares.\"),"},{"line_number":40,"context_line":"    cfg.StrOpt(\u0027hitachi_hsp_password\u0027,"},{"line_number":41,"context_line":"               secret\u003dTrue,"},{"line_number":42,"context_line":"               help\u003d\"HSP password for the username provided.\"),"},{"line_number":43,"context_line":"    cfg.IntOpt(\u0027hitachi_hsp_job_timeout\u0027,"},{"line_number":44,"context_line":"               default\u003d300,"},{"line_number":45,"context_line":"               help\u003d\"The time (in seconds) to wait for a job, such as create \""}],"source_content_type":"text/x-python","patch_set":8,"id":"dada55a8_945d174b","line":42,"range":{"start_line":34,"start_character":4,"end_line":42,"end_character":63},"updated":"2016-07-22 16:25:50.000000000","message":"You may want to add \"required\u003dTrue\" attribute that will force admin to set it up when this driver is used.","commit_id":"a37e140676c2aee5dd95aa7fa30f87b990acff57"},{"author":{"_account_id":17097,"name":"Tiago Pasqualini da Silva","email":"t.pasqualini@luizalabs.com","username":"tiago.pasqualini"},"change_message_id":"97a1ac010ca1ff73571e673f77027849e9d251e4","unresolved":false,"context_lines":[{"line_number":31,"context_line":"LOG \u003d log.getLogger(__name__)"},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"hitachi_hsp_opts \u003d ["},{"line_number":34,"context_line":"    cfg.StrOpt(\u0027hitachi_hsp_host\u0027,"},{"line_number":35,"context_line":"               help\u003d\"HSP management host for communication between Manila \""},{"line_number":36,"context_line":"                    \"controller and HSP.\"),"},{"line_number":37,"context_line":"    cfg.StrOpt(\u0027hitachi_hsp_username\u0027,"},{"line_number":38,"context_line":"               help\u003d\"HSP username to perform tasks such as create-file-systems\""},{"line_number":39,"context_line":"                    \" and shares.\"),"},{"line_number":40,"context_line":"    cfg.StrOpt(\u0027hitachi_hsp_password\u0027,"},{"line_number":41,"context_line":"               secret\u003dTrue,"},{"line_number":42,"context_line":"               help\u003d\"HSP password for the username provided.\"),"},{"line_number":43,"context_line":"    cfg.IntOpt(\u0027hitachi_hsp_job_timeout\u0027,"},{"line_number":44,"context_line":"               default\u003d300,"},{"line_number":45,"context_line":"               help\u003d\"The time (in seconds) to wait for a job, such as create \""}],"source_content_type":"text/x-python","patch_set":8,"id":"dada55a8_fce99ab8","line":42,"range":{"start_line":34,"start_character":4,"end_line":42,"end_character":63},"in_reply_to":"dada55a8_945d174b","updated":"2016-07-25 17:47:55.000000000","message":"Done","commit_id":"a37e140676c2aee5dd95aa7fa30f87b990acff57"},{"author":{"_account_id":8851,"name":"Valeriy Ponomaryov","email":"kiparis.kh@gmail.com","username":"vponomaryov"},"change_message_id":"6803cf2be948d09a004f16e5d9944d9a1e7f39c6","unresolved":false,"context_lines":[{"line_number":59,"context_line":""},{"line_number":60,"context_line":"        self.backend_name \u003d self.configuration.safe_get(\u0027share_backend_name\u0027)"},{"line_number":61,"context_line":"        self.hsp_host \u003d self.configuration.safe_get(\u0027hitachi_hsp_host\u0027)"},{"line_number":62,"context_line":"        hsp_username \u003d self.configuration.safe_get(\u0027hitachi_hsp_username\u0027)"},{"line_number":63,"context_line":"        hsp_password \u003d self.configuration.safe_get(\u0027hitachi_hsp_password\u0027)"},{"line_number":64,"context_line":"        job_timeout \u003d self.configuration.safe_get(\u0027hitachi_hsp_job_timeout\u0027)"},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"        self.hsp \u003d rest.HSPRestBackend(self.hsp_host, hsp_username,"},{"line_number":67,"context_line":"                                       hsp_password, job_timeout)"},{"line_number":68,"context_line":""},{"line_number":69,"context_line":"    def _update_share_stats(self, data\u003dNone):"},{"line_number":70,"context_line":"        LOG.debug(\"Updating Backend Capability Information - Hitachi HSP.\")"}],"source_content_type":"text/x-python","patch_set":8,"id":"dada55a8_af47224a","line":67,"range":{"start_line":62,"start_character":8,"end_line":67,"end_character":65},"updated":"2016-07-22 16:25:50.000000000","message":"I do not insist, but it is better to avoid initializing redundant links to objects:\n\"\"\"\nself.hsp \u003d rest.HSPRestBackend(\n    self.hsp_host,\n    self.configuration.safe_get(\u0027hitachi_hsp_username\u0027),\n    self.configuration.safe_get(\u0027hitachi_hsp_password\u0027),\n    self.configuration.safe_get(\u0027hitachi_hsp_job_timeout\u0027),\n)\n\n\"\"\"","commit_id":"a37e140676c2aee5dd95aa7fa30f87b990acff57"},{"author":{"_account_id":17097,"name":"Tiago Pasqualini da Silva","email":"t.pasqualini@luizalabs.com","username":"tiago.pasqualini"},"change_message_id":"97a1ac010ca1ff73571e673f77027849e9d251e4","unresolved":false,"context_lines":[{"line_number":59,"context_line":""},{"line_number":60,"context_line":"        self.backend_name \u003d self.configuration.safe_get(\u0027share_backend_name\u0027)"},{"line_number":61,"context_line":"        self.hsp_host \u003d self.configuration.safe_get(\u0027hitachi_hsp_host\u0027)"},{"line_number":62,"context_line":"        hsp_username \u003d self.configuration.safe_get(\u0027hitachi_hsp_username\u0027)"},{"line_number":63,"context_line":"        hsp_password \u003d self.configuration.safe_get(\u0027hitachi_hsp_password\u0027)"},{"line_number":64,"context_line":"        job_timeout \u003d self.configuration.safe_get(\u0027hitachi_hsp_job_timeout\u0027)"},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"        self.hsp \u003d rest.HSPRestBackend(self.hsp_host, hsp_username,"},{"line_number":67,"context_line":"                                       hsp_password, job_timeout)"},{"line_number":68,"context_line":""},{"line_number":69,"context_line":"    def _update_share_stats(self, data\u003dNone):"},{"line_number":70,"context_line":"        LOG.debug(\"Updating Backend Capability Information - Hitachi HSP.\")"}],"source_content_type":"text/x-python","patch_set":8,"id":"dada55a8_5c7c2620","line":67,"range":{"start_line":62,"start_character":8,"end_line":67,"end_character":65},"in_reply_to":"dada55a8_af47224a","updated":"2016-07-25 17:47:55.000000000","message":"Done","commit_id":"a37e140676c2aee5dd95aa7fa30f87b990acff57"},{"author":{"_account_id":8851,"name":"Valeriy Ponomaryov","email":"kiparis.kh@gmail.com","username":"vponomaryov"},"change_message_id":"6803cf2be948d09a004f16e5d9944d9a1e7f39c6","unresolved":false,"context_lines":[{"line_number":79,"context_line":""},{"line_number":80,"context_line":"        data \u003d {"},{"line_number":81,"context_line":"            \u0027share_backend_name\u0027: self.backend_name,"},{"line_number":82,"context_line":"            \u0027driver_handles_share_servers\u0027: self.driver_handles_share_servers,"},{"line_number":83,"context_line":"            \u0027vendor_name\u0027: \u0027Hitachi\u0027,"},{"line_number":84,"context_line":"            \u0027driver_version\u0027: \u00271.0.0\u0027,"},{"line_number":85,"context_line":"            \u0027storage_protocol\u0027: \u0027NFS\u0027,"}],"source_content_type":"text/x-python","patch_set":8,"id":"dada55a8_2f5cd2ec","line":82,"range":{"start_line":82,"start_character":12,"end_line":82,"end_character":78},"updated":"2016-07-22 16:25:50.000000000","message":"It is redundant, see [1].\n\n[1] https://github.com/openstack/manila/blob/34fcf4af/manila/share/driver.py#L800","commit_id":"a37e140676c2aee5dd95aa7fa30f87b990acff57"},{"author":{"_account_id":17097,"name":"Tiago Pasqualini da Silva","email":"t.pasqualini@luizalabs.com","username":"tiago.pasqualini"},"change_message_id":"97a1ac010ca1ff73571e673f77027849e9d251e4","unresolved":false,"context_lines":[{"line_number":79,"context_line":""},{"line_number":80,"context_line":"        data \u003d {"},{"line_number":81,"context_line":"            \u0027share_backend_name\u0027: self.backend_name,"},{"line_number":82,"context_line":"            \u0027driver_handles_share_servers\u0027: self.driver_handles_share_servers,"},{"line_number":83,"context_line":"            \u0027vendor_name\u0027: \u0027Hitachi\u0027,"},{"line_number":84,"context_line":"            \u0027driver_version\u0027: \u00271.0.0\u0027,"},{"line_number":85,"context_line":"            \u0027storage_protocol\u0027: \u0027NFS\u0027,"}],"source_content_type":"text/x-python","patch_set":8,"id":"dada55a8_1cfe2e6b","line":82,"range":{"start_line":82,"start_character":12,"end_line":82,"end_character":78},"in_reply_to":"dada55a8_2f5cd2ec","updated":"2016-07-25 17:47:55.000000000","message":"Done","commit_id":"a37e140676c2aee5dd95aa7fa30f87b990acff57"},{"author":{"_account_id":8851,"name":"Valeriy Ponomaryov","email":"kiparis.kh@gmail.com","username":"vponomaryov"},"change_message_id":"6803cf2be948d09a004f16e5d9944d9a1e7f39c6","unresolved":false,"context_lines":[{"line_number":118,"context_line":""},{"line_number":119,"context_line":"        LOG.debug(\"Share created successfully on path: %(uri)s.\","},{"line_number":120,"context_line":"                  {\u0027uri\u0027: uri})"},{"line_number":121,"context_line":"        return uri"},{"line_number":122,"context_line":""},{"line_number":123,"context_line":"    def delete_share(self, context, share, share_server\u003dNone):"},{"line_number":124,"context_line":"        LOG.debug(\"Deleting share in HSP: %(shr)s.\", {\u0027shr\u0027: share[\u0027id\u0027]})"}],"source_content_type":"text/x-python","patch_set":8,"id":"dada55a8_4f34a649","line":121,"range":{"start_line":121,"start_character":15,"end_line":121,"end_character":18},"updated":"2016-07-22 16:25:50.000000000","message":"Please, use new dict-approach for returning data. Just string exists for compatibility reasons.\n\nExample: https://github.com/openstack/manila/blob/02a9a2c3/manila/share/drivers/zfsonlinux/utils.py#L202\n\nHandling code: https://github.com/openstack/manila/blob/34fcf4af/manila/db/sqlalchemy/api.py#L2413","commit_id":"a37e140676c2aee5dd95aa7fa30f87b990acff57"},{"author":{"_account_id":17097,"name":"Tiago Pasqualini da Silva","email":"t.pasqualini@luizalabs.com","username":"tiago.pasqualini"},"change_message_id":"97a1ac010ca1ff73571e673f77027849e9d251e4","unresolved":false,"context_lines":[{"line_number":118,"context_line":""},{"line_number":119,"context_line":"        LOG.debug(\"Share created successfully on path: %(uri)s.\","},{"line_number":120,"context_line":"                  {\u0027uri\u0027: uri})"},{"line_number":121,"context_line":"        return uri"},{"line_number":122,"context_line":""},{"line_number":123,"context_line":"    def delete_share(self, context, share, share_server\u003dNone):"},{"line_number":124,"context_line":"        LOG.debug(\"Deleting share in HSP: %(shr)s.\", {\u0027shr\u0027: share[\u0027id\u0027]})"}],"source_content_type":"text/x-python","patch_set":8,"id":"dada55a8_dc7816fb","line":121,"range":{"start_line":121,"start_character":15,"end_line":121,"end_character":18},"in_reply_to":"dada55a8_4f34a649","updated":"2016-07-25 17:47:55.000000000","message":"Done","commit_id":"a37e140676c2aee5dd95aa7fa30f87b990acff57"},{"author":{"_account_id":8851,"name":"Valeriy Ponomaryov","email":"kiparis.kh@gmail.com","username":"vponomaryov"},"change_message_id":"6803cf2be948d09a004f16e5d9944d9a1e7f39c6","unresolved":false,"context_lines":[{"line_number":130,"context_line":"            self.hsp.delete_share(hsp_share_id)"},{"line_number":131,"context_line":"            self.hsp.delete_file_system(filesystem_id)"},{"line_number":132,"context_line":"        except exception.HSPItemNotFoundException:"},{"line_number":133,"context_line":"            LOG.info(_LI(\"Share already removed from backend.\"))"},{"line_number":134,"context_line":""},{"line_number":135,"context_line":"        LOG.debug(\"Export and share successfully deleted: %(shr)s.\","},{"line_number":136,"context_line":"                  {\u0027shr\u0027: share[\u0027id\u0027]})"}],"source_content_type":"text/x-python","patch_set":8,"id":"dada55a8_2a5b2030","line":133,"range":{"start_line":133,"start_character":21,"end_line":133,"end_character":64},"updated":"2016-07-22 16:25:50.000000000","message":"Which share?","commit_id":"a37e140676c2aee5dd95aa7fa30f87b990acff57"},{"author":{"_account_id":17097,"name":"Tiago Pasqualini da Silva","email":"t.pasqualini@luizalabs.com","username":"tiago.pasqualini"},"change_message_id":"97a1ac010ca1ff73571e673f77027849e9d251e4","unresolved":false,"context_lines":[{"line_number":130,"context_line":"            self.hsp.delete_share(hsp_share_id)"},{"line_number":131,"context_line":"            self.hsp.delete_file_system(filesystem_id)"},{"line_number":132,"context_line":"        except exception.HSPItemNotFoundException:"},{"line_number":133,"context_line":"            LOG.info(_LI(\"Share already removed from backend.\"))"},{"line_number":134,"context_line":""},{"line_number":135,"context_line":"        LOG.debug(\"Export and share successfully deleted: %(shr)s.\","},{"line_number":136,"context_line":"                  {\u0027shr\u0027: share[\u0027id\u0027]})"}],"source_content_type":"text/x-python","patch_set":8,"id":"dada55a8_b2d58b1c","line":133,"range":{"start_line":133,"start_character":21,"end_line":133,"end_character":64},"in_reply_to":"dada55a8_2a5b2030","updated":"2016-07-25 17:47:55.000000000","message":"Done","commit_id":"a37e140676c2aee5dd95aa7fa30f87b990acff57"},{"author":{"_account_id":8851,"name":"Valeriy Ponomaryov","email":"kiparis.kh@gmail.com","username":"vponomaryov"},"change_message_id":"6803cf2be948d09a004f16e5d9944d9a1e7f39c6","unresolved":false,"context_lines":[{"line_number":228,"context_line":"                    \"backend.\") % share[\u0027id\u0027]"},{"line_number":229,"context_line":"            raise exception.ManageInvalidShare(reason\u003dmsg)"},{"line_number":230,"context_line":""},{"line_number":231,"context_line":"        self.hsp.rename_file_system(hsp_share[\u0027properties\u0027][\u0027file-system-id\u0027],"},{"line_number":232,"context_line":"                                    share[\u0027id\u0027])"},{"line_number":233,"context_line":"        file_system \u003d self.hsp.get_file_system(share[\u0027id\u0027])"},{"line_number":234,"context_line":""},{"line_number":235,"context_line":"        LOG.info(_LI(\"Share %(shr_path)s was successfully managed with ID \""}],"source_content_type":"text/x-python","patch_set":8,"id":"dada55a8_8a532c6c","line":232,"range":{"start_line":231,"start_character":8,"end_line":232,"end_character":48},"updated":"2016-07-22 16:25:50.000000000","message":"You my want to store old share name in driver private storage. It will allow admin to find out what was renamed to what.","commit_id":"a37e140676c2aee5dd95aa7fa30f87b990acff57"},{"author":{"_account_id":17097,"name":"Tiago Pasqualini da Silva","email":"t.pasqualini@luizalabs.com","username":"tiago.pasqualini"},"change_message_id":"50f34b010e2711588e0ba87972dd75c9084771bb","unresolved":false,"context_lines":[{"line_number":228,"context_line":"                    \"backend.\") % share[\u0027id\u0027]"},{"line_number":229,"context_line":"            raise exception.ManageInvalidShare(reason\u003dmsg)"},{"line_number":230,"context_line":""},{"line_number":231,"context_line":"        self.hsp.rename_file_system(hsp_share[\u0027properties\u0027][\u0027file-system-id\u0027],"},{"line_number":232,"context_line":"                                    share[\u0027id\u0027])"},{"line_number":233,"context_line":"        file_system \u003d self.hsp.get_file_system(share[\u0027id\u0027])"},{"line_number":234,"context_line":""},{"line_number":235,"context_line":"        LOG.info(_LI(\"Share %(shr_path)s was successfully managed with ID \""}],"source_content_type":"text/x-python","patch_set":8,"id":"dada55a8_254ae5ac","line":232,"range":{"start_line":231,"start_character":8,"end_line":232,"end_character":48},"in_reply_to":"dada55a8_854d9174","updated":"2016-07-25 17:58:21.000000000","message":"Ah, private storage API?","commit_id":"a37e140676c2aee5dd95aa7fa30f87b990acff57"},{"author":{"_account_id":17097,"name":"Tiago Pasqualini da Silva","email":"t.pasqualini@luizalabs.com","username":"tiago.pasqualini"},"change_message_id":"97a1ac010ca1ff73571e673f77027849e9d251e4","unresolved":false,"context_lines":[{"line_number":228,"context_line":"                    \"backend.\") % share[\u0027id\u0027]"},{"line_number":229,"context_line":"            raise exception.ManageInvalidShare(reason\u003dmsg)"},{"line_number":230,"context_line":""},{"line_number":231,"context_line":"        self.hsp.rename_file_system(hsp_share[\u0027properties\u0027][\u0027file-system-id\u0027],"},{"line_number":232,"context_line":"                                    share[\u0027id\u0027])"},{"line_number":233,"context_line":"        file_system \u003d self.hsp.get_file_system(share[\u0027id\u0027])"},{"line_number":234,"context_line":""},{"line_number":235,"context_line":"        LOG.info(_LI(\"Share %(shr_path)s was successfully managed with ID \""}],"source_content_type":"text/x-python","patch_set":8,"id":"dada55a8_854d9174","line":232,"range":{"start_line":231,"start_character":8,"end_line":232,"end_character":48},"in_reply_to":"dada55a8_8a532c6c","updated":"2016-07-25 17:47:55.000000000","message":"How will the admin check that?","commit_id":"a37e140676c2aee5dd95aa7fa30f87b990acff57"},{"author":{"_account_id":8851,"name":"Valeriy Ponomaryov","email":"kiparis.kh@gmail.com","username":"vponomaryov"},"change_message_id":"6803cf2be948d09a004f16e5d9944d9a1e7f39c6","unresolved":false,"context_lines":[{"line_number":238,"context_line":"                  \u0027shr_id\u0027: share[\u0027id\u0027]})"},{"line_number":239,"context_line":""},{"line_number":240,"context_line":"        return {\u0027size\u0027: file_system[\u0027properties\u0027][\u0027quota\u0027] / units.Gi,"},{"line_number":241,"context_line":"                \u0027export_locations\u0027: [share[\u0027export_locations\u0027][0][\u0027path\u0027]]}"},{"line_number":242,"context_line":""},{"line_number":243,"context_line":"    def unmanage(self, share):"},{"line_number":244,"context_line":"        LOG.info(_LI(\"The share with current path %(shr_path)s and ID \""}],"source_content_type":"text/x-python","patch_set":8,"id":"dada55a8_4a43f46c","line":241,"range":{"start_line":241,"start_character":36,"end_line":241,"end_character":74},"updated":"2016-07-22 16:25:50.000000000","message":"Same here. List of dicts is preferred. \n\nExample: https://review.openstack.org/#/c/333994/4/manila/share/drivers/zfsonlinux/driver.py","commit_id":"a37e140676c2aee5dd95aa7fa30f87b990acff57"},{"author":{"_account_id":17097,"name":"Tiago Pasqualini da Silva","email":"t.pasqualini@luizalabs.com","username":"tiago.pasqualini"},"change_message_id":"97a1ac010ca1ff73571e673f77027849e9d251e4","unresolved":false,"context_lines":[{"line_number":238,"context_line":"                  \u0027shr_id\u0027: share[\u0027id\u0027]})"},{"line_number":239,"context_line":""},{"line_number":240,"context_line":"        return {\u0027size\u0027: file_system[\u0027properties\u0027][\u0027quota\u0027] / units.Gi,"},{"line_number":241,"context_line":"                \u0027export_locations\u0027: [share[\u0027export_locations\u0027][0][\u0027path\u0027]]}"},{"line_number":242,"context_line":""},{"line_number":243,"context_line":"    def unmanage(self, share):"},{"line_number":244,"context_line":"        LOG.info(_LI(\"The share with current path %(shr_path)s and ID \""}],"source_content_type":"text/x-python","patch_set":8,"id":"dada55a8_4adc4612","line":241,"range":{"start_line":241,"start_character":36,"end_line":241,"end_character":74},"in_reply_to":"dada55a8_4a43f46c","updated":"2016-07-25 17:47:55.000000000","message":"Done","commit_id":"a37e140676c2aee5dd95aa7fa30f87b990acff57"},{"author":{"_account_id":19683,"name":"Jose Falavinha","email":"jose.falavinha@fit-tecnologia.org.br","username":"jose.falavinha"},"change_message_id":"1467356f03171a7a002a0afb893fcd49c2205a28","unresolved":false,"context_lines":[{"line_number":37,"context_line":"                    \"controller and HSP.\"),"},{"line_number":38,"context_line":"    cfg.StrOpt(\u0027hitachi_hsp_username\u0027,"},{"line_number":39,"context_line":"               required\u003dTrue,"},{"line_number":40,"context_line":"               help\u003d\"HSP username to perform tasks such as create-file-systems\""},{"line_number":41,"context_line":"                    \" and shares.\"),"},{"line_number":42,"context_line":"    cfg.StrOpt(\u0027hitachi_hsp_password\u0027,"},{"line_number":43,"context_line":"               required\u003dTrue,"}],"source_content_type":"text/x-python","patch_set":11,"id":"dada55a8_525fa140","line":40,"range":{"start_line":40,"start_character":59,"end_line":40,"end_character":78},"updated":"2016-07-26 17:55:33.000000000","message":"Just text: \"such as create file systems \" \n           \"and shares.\"\n\n(Note the space before \")","commit_id":"cfec736f0f194b65b871e791927820ef9f29868e"},{"author":{"_account_id":17097,"name":"Tiago Pasqualini da Silva","email":"t.pasqualini@luizalabs.com","username":"tiago.pasqualini"},"change_message_id":"0cc7f08c6809ae893d69bc21e62d26c3b8a9981b","unresolved":false,"context_lines":[{"line_number":37,"context_line":"                    \"controller and HSP.\"),"},{"line_number":38,"context_line":"    cfg.StrOpt(\u0027hitachi_hsp_username\u0027,"},{"line_number":39,"context_line":"               required\u003dTrue,"},{"line_number":40,"context_line":"               help\u003d\"HSP username to perform tasks such as create-file-systems\""},{"line_number":41,"context_line":"                    \" and shares.\"),"},{"line_number":42,"context_line":"    cfg.StrOpt(\u0027hitachi_hsp_password\u0027,"},{"line_number":43,"context_line":"               required\u003dTrue,"}],"source_content_type":"text/x-python","patch_set":11,"id":"bacf61ea_be3834d4","line":40,"range":{"start_line":40,"start_character":59,"end_line":40,"end_character":78},"in_reply_to":"dada55a8_525fa140","updated":"2016-08-01 21:18:42.000000000","message":"Done","commit_id":"cfec736f0f194b65b871e791927820ef9f29868e"},{"author":{"_account_id":19683,"name":"Jose Falavinha","email":"jose.falavinha@fit-tecnologia.org.br","username":"jose.falavinha"},"change_message_id":"1467356f03171a7a002a0afb893fcd49c2205a28","unresolved":false,"context_lines":[{"line_number":46,"context_line":"    cfg.IntOpt(\u0027hitachi_hsp_job_timeout\u0027,"},{"line_number":47,"context_line":"               default\u003d300,"},{"line_number":48,"context_line":"               help\u003d\"The time (in seconds) to wait for a job, such as create \""},{"line_number":49,"context_line":"                    \"file-system, to finish before aborting.\"),"},{"line_number":50,"context_line":"]"},{"line_number":51,"context_line":""},{"line_number":52,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"dada55a8_2d11ec52","line":49,"range":{"start_line":49,"start_character":21,"end_line":49,"end_character":32},"updated":"2016-07-26 17:55:33.000000000","message":"Just text: \"file system\", you do not need the \"-\" since you are not using the exact command line name","commit_id":"cfec736f0f194b65b871e791927820ef9f29868e"},{"author":{"_account_id":17097,"name":"Tiago Pasqualini da Silva","email":"t.pasqualini@luizalabs.com","username":"tiago.pasqualini"},"change_message_id":"0cc7f08c6809ae893d69bc21e62d26c3b8a9981b","unresolved":false,"context_lines":[{"line_number":46,"context_line":"    cfg.IntOpt(\u0027hitachi_hsp_job_timeout\u0027,"},{"line_number":47,"context_line":"               default\u003d300,"},{"line_number":48,"context_line":"               help\u003d\"The time (in seconds) to wait for a job, such as create \""},{"line_number":49,"context_line":"                    \"file-system, to finish before aborting.\"),"},{"line_number":50,"context_line":"]"},{"line_number":51,"context_line":""},{"line_number":52,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"bacf61ea_9e561004","line":49,"range":{"start_line":49,"start_character":21,"end_line":49,"end_character":32},"in_reply_to":"dada55a8_2d11ec52","updated":"2016-08-01 21:18:42.000000000","message":"Done","commit_id":"cfec736f0f194b65b871e791927820ef9f29868e"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"4cdf4f66d6a7e23dbbfef54247fab14dbd078973","unresolved":false,"context_lines":[{"line_number":93,"context_line":"            \u0027reserved_percentage\u0027: reserved,"},{"line_number":94,"context_line":"            \u0027qos\u0027: False,"},{"line_number":95,"context_line":"            \u0027thin_provisioning\u0027: True,"},{"line_number":96,"context_line":"            \u0027max_over_subscription_ratio\u0027: max_over_subscription_ratio,"},{"line_number":97,"context_line":"        }"},{"line_number":98,"context_line":""},{"line_number":99,"context_line":"        LOG.info(_LI(\"Hitachi HSP Capabilities: %(data)s.\"),"}],"source_content_type":"text/x-python","patch_set":11,"id":"bacf61ea_a7cd2487","line":96,"updated":"2016-07-29 16:58:31.000000000","message":"There\u0027s a provisioned_capacity_gb, which is sum of all shares provisioned on the backend in GB.  Can you report that too?","commit_id":"cfec736f0f194b65b871e791927820ef9f29868e"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"e4ce2717d54dda3a62dd21f7a2a77f428593dedb","unresolved":false,"context_lines":[{"line_number":116,"context_line":"            with excutils.save_and_reraise_exception():"},{"line_number":117,"context_line":"                self.hsp.delete_file_system(filesystem_id)"},{"line_number":118,"context_line":"                msg \u003d (_LE(\"Could not create share on HSP: %s\") %"},{"line_number":119,"context_line":"                       six.text_type(e))"},{"line_number":120,"context_line":"                LOG.exception(msg)"},{"line_number":121,"context_line":""},{"line_number":122,"context_line":"        uri \u003d self.hsp_host + \u0027:/\u0027 + share[\u0027id\u0027]"}],"source_content_type":"text/x-python","patch_set":11,"id":"bacf61ea_cf13eab6","line":119,"range":{"start_line":119,"start_character":23,"end_line":119,"end_character":39},"updated":"2016-07-31 21:15:54.000000000","message":"http://docs.openstack.org/developer/oslo.i18n/guidelines.html#avoid-forcing-the-translation-of-translatable-variables","commit_id":"cfec736f0f194b65b871e791927820ef9f29868e"},{"author":{"_account_id":17097,"name":"Tiago Pasqualini da Silva","email":"t.pasqualini@luizalabs.com","username":"tiago.pasqualini"},"change_message_id":"0cc7f08c6809ae893d69bc21e62d26c3b8a9981b","unresolved":false,"context_lines":[{"line_number":116,"context_line":"            with excutils.save_and_reraise_exception():"},{"line_number":117,"context_line":"                self.hsp.delete_file_system(filesystem_id)"},{"line_number":118,"context_line":"                msg \u003d (_LE(\"Could not create share on HSP: %s\") %"},{"line_number":119,"context_line":"                       six.text_type(e))"},{"line_number":120,"context_line":"                LOG.exception(msg)"},{"line_number":121,"context_line":""},{"line_number":122,"context_line":"        uri \u003d self.hsp_host + \u0027:/\u0027 + share[\u0027id\u0027]"}],"source_content_type":"text/x-python","patch_set":11,"id":"bacf61ea_1e6220d8","line":119,"range":{"start_line":119,"start_character":23,"end_line":119,"end_character":39},"in_reply_to":"bacf61ea_cf13eab6","updated":"2016-08-01 21:18:42.000000000","message":"Done","commit_id":"cfec736f0f194b65b871e791927820ef9f29868e"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"e4ce2717d54dda3a62dd21f7a2a77f428593dedb","unresolved":false,"context_lines":[{"line_number":159,"context_line":""},{"line_number":160,"context_line":"        if not (add_rules or delete_rules):"},{"line_number":161,"context_line":"            current_rules \u003d self.hsp.get_access_rules(hsp_share_id)"},{"line_number":162,"context_line":"            for rule in current_rules:"},{"line_number":163,"context_line":"                self.hsp.delete_access_rule(hsp_share_id,"},{"line_number":164,"context_line":"                                            rule[\u0027host-specification\u0027])"},{"line_number":165,"context_line":""},{"line_number":166,"context_line":"            self._add_access_rules(hsp_share_id, access_rules)"},{"line_number":167,"context_line":"        else:"},{"line_number":168,"context_line":"            for rule in delete_rules:"},{"line_number":169,"context_line":"                if rule[\u0027access_type\u0027].lower() !\u003d \u0027ip\u0027:"}],"source_content_type":"text/x-python","patch_set":11,"id":"bacf61ea_cf7acaf0","line":166,"range":{"start_line":162,"start_character":0,"end_line":166,"end_character":62},"updated":"2016-07-31 21:15:54.000000000","message":"Will this cause a temporary eviction? if yes, Is this eviction necessary? \n\nWhy not read current rules, iterate over them and remove only ones that shouldn\u0027t exist?","commit_id":"cfec736f0f194b65b871e791927820ef9f29868e"},{"author":{"_account_id":17097,"name":"Tiago Pasqualini da Silva","email":"t.pasqualini@luizalabs.com","username":"tiago.pasqualini"},"change_message_id":"0cc7f08c6809ae893d69bc21e62d26c3b8a9981b","unresolved":false,"context_lines":[{"line_number":159,"context_line":""},{"line_number":160,"context_line":"        if not (add_rules or delete_rules):"},{"line_number":161,"context_line":"            current_rules \u003d self.hsp.get_access_rules(hsp_share_id)"},{"line_number":162,"context_line":"            for rule in current_rules:"},{"line_number":163,"context_line":"                self.hsp.delete_access_rule(hsp_share_id,"},{"line_number":164,"context_line":"                                            rule[\u0027host-specification\u0027])"},{"line_number":165,"context_line":""},{"line_number":166,"context_line":"            self._add_access_rules(hsp_share_id, access_rules)"},{"line_number":167,"context_line":"        else:"},{"line_number":168,"context_line":"            for rule in delete_rules:"},{"line_number":169,"context_line":"                if rule[\u0027access_type\u0027].lower() !\u003d \u0027ip\u0027:"}],"source_content_type":"text/x-python","patch_set":11,"id":"bacf61ea_bce15d2c","line":166,"range":{"start_line":162,"start_character":0,"end_line":166,"end_character":62},"in_reply_to":"bacf61ea_cf7acaf0","updated":"2016-08-01 21:18:42.000000000","message":"I will check that and send this fix on a future patchset.","commit_id":"cfec736f0f194b65b871e791927820ef9f29868e"},{"author":{"_account_id":19683,"name":"Jose Falavinha","email":"jose.falavinha@fit-tecnologia.org.br","username":"jose.falavinha"},"change_message_id":"1467356f03171a7a002a0afb893fcd49c2205a28","unresolved":false,"context_lines":[{"line_number":165,"context_line":""},{"line_number":166,"context_line":"            self._add_access_rules(hsp_share_id, access_rules)"},{"line_number":167,"context_line":"        else:"},{"line_number":168,"context_line":"            for rule in delete_rules:"},{"line_number":169,"context_line":"                if rule[\u0027access_type\u0027].lower() !\u003d \u0027ip\u0027:"},{"line_number":170,"context_line":"                    continue"},{"line_number":171,"context_line":"                self.hsp.delete_access_rule(hsp_share_id, rule[\u0027access_to\u0027])"},{"line_number":172,"context_line":""},{"line_number":173,"context_line":"            self._add_access_rules(hsp_share_id, add_rules)"},{"line_number":174,"context_line":""},{"line_number":175,"context_line":"        LOG.debug(\"Successfully updated share %(shr)s rules.\","},{"line_number":176,"context_line":"                  {\u0027shr\u0027: share[\u0027id\u0027]})"}],"source_content_type":"text/x-python","patch_set":11,"id":"dada55a8_ed6eb4fe","line":173,"range":{"start_line":168,"start_character":12,"end_line":173,"end_character":59},"updated":"2016-07-26 17:55:33.000000000","message":"it does not matter if one of them (add_rules or delete_rules) is empty?","commit_id":"cfec736f0f194b65b871e791927820ef9f29868e"},{"author":{"_account_id":17097,"name":"Tiago Pasqualini da Silva","email":"t.pasqualini@luizalabs.com","username":"tiago.pasqualini"},"change_message_id":"0cc7f08c6809ae893d69bc21e62d26c3b8a9981b","unresolved":false,"context_lines":[{"line_number":165,"context_line":""},{"line_number":166,"context_line":"            self._add_access_rules(hsp_share_id, access_rules)"},{"line_number":167,"context_line":"        else:"},{"line_number":168,"context_line":"            for rule in delete_rules:"},{"line_number":169,"context_line":"                if rule[\u0027access_type\u0027].lower() !\u003d \u0027ip\u0027:"},{"line_number":170,"context_line":"                    continue"},{"line_number":171,"context_line":"                self.hsp.delete_access_rule(hsp_share_id, rule[\u0027access_to\u0027])"},{"line_number":172,"context_line":""},{"line_number":173,"context_line":"            self._add_access_rules(hsp_share_id, add_rules)"},{"line_number":174,"context_line":""},{"line_number":175,"context_line":"        LOG.debug(\"Successfully updated share %(shr)s rules.\","},{"line_number":176,"context_line":"                  {\u0027shr\u0027: share[\u0027id\u0027]})"}],"source_content_type":"text/x-python","patch_set":11,"id":"bacf61ea_dee0882b","line":173,"range":{"start_line":168,"start_character":12,"end_line":173,"end_character":59},"in_reply_to":"dada55a8_ed6eb4fe","updated":"2016-08-01 21:18:42.000000000","message":"The for statement already checks that, not necessary.","commit_id":"cfec736f0f194b65b871e791927820ef9f29868e"},{"author":{"_account_id":16203,"name":"zengyingzhe","email":"zengyingzhe@huawei.com","username":"zengyingzhe"},"change_message_id":"f8572bf340c470b04c283759e051bb93b52cb145","unresolved":false,"context_lines":[{"line_number":216,"context_line":""},{"line_number":217,"context_line":"        if new_size \u003e usage:"},{"line_number":218,"context_line":"            self.hsp.resize_file_system(file_system[\u0027id\u0027], new_size * units.Gi)"},{"line_number":219,"context_line":"        else:"},{"line_number":220,"context_line":"            raise exception.ShareShrinkingPossibleDataLoss("},{"line_number":221,"context_line":"                share_id\u003dshare[\u0027id\u0027])"},{"line_number":222,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"bacf61ea_864a7824","line":219,"updated":"2016-08-01 05:52:21.000000000","message":"suggest adding a log here to indicate how much capacity is used already.","commit_id":"cfec736f0f194b65b871e791927820ef9f29868e"},{"author":{"_account_id":17097,"name":"Tiago Pasqualini da Silva","email":"t.pasqualini@luizalabs.com","username":"tiago.pasqualini"},"change_message_id":"0cc7f08c6809ae893d69bc21e62d26c3b8a9981b","unresolved":false,"context_lines":[{"line_number":216,"context_line":""},{"line_number":217,"context_line":"        if new_size \u003e usage:"},{"line_number":218,"context_line":"            self.hsp.resize_file_system(file_system[\u0027id\u0027], new_size * units.Gi)"},{"line_number":219,"context_line":"        else:"},{"line_number":220,"context_line":"            raise exception.ShareShrinkingPossibleDataLoss("},{"line_number":221,"context_line":"                share_id\u003dshare[\u0027id\u0027])"},{"line_number":222,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"bacf61ea_7c94058a","line":219,"in_reply_to":"bacf61ea_864a7824","updated":"2016-08-01 21:18:42.000000000","message":"Added above. Thanks.","commit_id":"cfec736f0f194b65b871e791927820ef9f29868e"},{"author":{"_account_id":8851,"name":"Valeriy Ponomaryov","email":"kiparis.kh@gmail.com","username":"vponomaryov"},"change_message_id":"073757f2b68d53717cee3438bbc35152efab6756","unresolved":false,"context_lines":[{"line_number":238,"context_line":"                    \"backend.\") % share[\u0027id\u0027]"},{"line_number":239,"context_line":"            raise exception.ManageInvalidShare(reason\u003dmsg)"},{"line_number":240,"context_line":""},{"line_number":241,"context_line":"        original_name \u003d hsp_share[\u0027properties\u0027][\u0027file-system-name\u0027]"},{"line_number":242,"context_line":"        self.private_storage.update(share[\u0027id\u0027],"},{"line_number":243,"context_line":"                                    original_name)"},{"line_number":244,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"dada55a8_cf6f4329","line":241,"range":{"start_line":241,"start_character":8,"end_line":241,"end_character":67},"updated":"2016-07-27 10:51:41.000000000","message":"I suspect it is dict?\n\nIf I am not mistaken, you write here \"%Some_key_for_name%: %name%\", but really useful would be:\n\n{\n    \"old_name\": \"FOO\",\n    \"new_name\": \"BAR\",\n}","commit_id":"cfec736f0f194b65b871e791927820ef9f29868e"},{"author":{"_account_id":17097,"name":"Tiago Pasqualini da Silva","email":"t.pasqualini@luizalabs.com","username":"tiago.pasqualini"},"change_message_id":"0cc7f08c6809ae893d69bc21e62d26c3b8a9981b","unresolved":false,"context_lines":[{"line_number":238,"context_line":"                    \"backend.\") % share[\u0027id\u0027]"},{"line_number":239,"context_line":"            raise exception.ManageInvalidShare(reason\u003dmsg)"},{"line_number":240,"context_line":""},{"line_number":241,"context_line":"        original_name \u003d hsp_share[\u0027properties\u0027][\u0027file-system-name\u0027]"},{"line_number":242,"context_line":"        self.private_storage.update(share[\u0027id\u0027],"},{"line_number":243,"context_line":"                                    original_name)"},{"line_number":244,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"bacf61ea_dc3371f4","line":241,"range":{"start_line":241,"start_character":8,"end_line":241,"end_character":67},"in_reply_to":"dada55a8_cf6f4329","updated":"2016-08-01 21:18:42.000000000","message":"Yep, it only accepts dicts, my mistake. I like your suggestion, though, changed that.","commit_id":"cfec736f0f194b65b871e791927820ef9f29868e"},{"author":{"_account_id":16203,"name":"zengyingzhe","email":"zengyingzhe@huawei.com","username":"zengyingzhe"},"change_message_id":"f8572bf340c470b04c283759e051bb93b52cb145","unresolved":false,"context_lines":[{"line_number":239,"context_line":"            raise exception.ManageInvalidShare(reason\u003dmsg)"},{"line_number":240,"context_line":""},{"line_number":241,"context_line":"        original_name \u003d hsp_share[\u0027properties\u0027][\u0027file-system-name\u0027]"},{"line_number":242,"context_line":"        self.private_storage.update(share[\u0027id\u0027],"},{"line_number":243,"context_line":"                                    original_name)"},{"line_number":244,"context_line":""},{"line_number":245,"context_line":"        self.hsp.rename_file_system(hsp_share[\u0027properties\u0027][\u0027file-system-id\u0027],"}],"source_content_type":"text/x-python","patch_set":11,"id":"bacf61ea_c9012308","line":242,"updated":"2016-08-01 05:52:21.000000000","message":"it would be better that move this step after the following self.hsp steps done, in case some errors happen.","commit_id":"cfec736f0f194b65b871e791927820ef9f29868e"},{"author":{"_account_id":17097,"name":"Tiago Pasqualini da Silva","email":"t.pasqualini@luizalabs.com","username":"tiago.pasqualini"},"change_message_id":"0cc7f08c6809ae893d69bc21e62d26c3b8a9981b","unresolved":false,"context_lines":[{"line_number":239,"context_line":"            raise exception.ManageInvalidShare(reason\u003dmsg)"},{"line_number":240,"context_line":""},{"line_number":241,"context_line":"        original_name \u003d hsp_share[\u0027properties\u0027][\u0027file-system-name\u0027]"},{"line_number":242,"context_line":"        self.private_storage.update(share[\u0027id\u0027],"},{"line_number":243,"context_line":"                                    original_name)"},{"line_number":244,"context_line":""},{"line_number":245,"context_line":"        self.hsp.rename_file_system(hsp_share[\u0027properties\u0027][\u0027file-system-id\u0027],"}],"source_content_type":"text/x-python","patch_set":11,"id":"bacf61ea_3c59ed35","line":242,"in_reply_to":"bacf61ea_c9012308","updated":"2016-08-01 21:18:42.000000000","message":"Done","commit_id":"cfec736f0f194b65b871e791927820ef9f29868e"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"e4ce2717d54dda3a62dd21f7a2a77f428593dedb","unresolved":false,"context_lines":[{"line_number":266,"context_line":"                \u0027export_locations\u0027: export_locations}"},{"line_number":267,"context_line":""},{"line_number":268,"context_line":"    def unmanage(self, share):"},{"line_number":269,"context_line":"        original_name \u003d self.private_storage.get(share[\u0027id\u0027])"},{"line_number":270,"context_line":""},{"line_number":271,"context_line":"        LOG.debug(\"Filesystem %(name)s that was originally named \""},{"line_number":272,"context_line":"                  \"%(original_name)s will no longer be managed.\","}],"source_content_type":"text/x-python","patch_set":11,"id":"bacf61ea_cfef6a85","line":269,"range":{"start_line":269,"start_character":8,"end_line":269,"end_character":61},"updated":"2016-07-31 21:15:54.000000000","message":"I thought the purpose of storing this was to rename the share as part of unmanaging it from manila.","commit_id":"cfec736f0f194b65b871e791927820ef9f29868e"},{"author":{"_account_id":17097,"name":"Tiago Pasqualini da Silva","email":"t.pasqualini@luizalabs.com","username":"tiago.pasqualini"},"change_message_id":"0cc7f08c6809ae893d69bc21e62d26c3b8a9981b","unresolved":false,"context_lines":[{"line_number":266,"context_line":"                \u0027export_locations\u0027: export_locations}"},{"line_number":267,"context_line":""},{"line_number":268,"context_line":"    def unmanage(self, share):"},{"line_number":269,"context_line":"        original_name \u003d self.private_storage.get(share[\u0027id\u0027])"},{"line_number":270,"context_line":""},{"line_number":271,"context_line":"        LOG.debug(\"Filesystem %(name)s that was originally named \""},{"line_number":272,"context_line":"                  \"%(original_name)s will no longer be managed.\","}],"source_content_type":"text/x-python","patch_set":11,"id":"bacf61ea_1e0340b9","line":269,"range":{"start_line":269,"start_character":8,"end_line":269,"end_character":61},"in_reply_to":"bacf61ea_cfef6a85","updated":"2016-08-01 21:18:42.000000000","message":"We discussed this here and I agree with your suggestion, but this would make unmanage disruptive.","commit_id":"cfec736f0f194b65b871e791927820ef9f29868e"},{"author":{"_account_id":16203,"name":"zengyingzhe","email":"zengyingzhe@huawei.com","username":"zengyingzhe"},"change_message_id":"f8572bf340c470b04c283759e051bb93b52cb145","unresolved":false,"context_lines":[{"line_number":273,"context_line":"                  {\u0027original_name\u0027: original_name,"},{"line_number":274,"context_line":"                   \u0027name\u0027: share[\u0027id\u0027]})"},{"line_number":275,"context_line":""},{"line_number":276,"context_line":"        self.private_storage.delete(share[\u0027id\u0027])"},{"line_number":277,"context_line":""},{"line_number":278,"context_line":"        LOG.info(_LI(\"The share with current path %(shr_path)s and ID \""},{"line_number":279,"context_line":"                     \"%(shr_id)s is no longer being managed.\"),"}],"source_content_type":"text/x-python","patch_set":11,"id":"bacf61ea_cc46514e","line":276,"updated":"2016-08-01 05:52:21.000000000","message":"why didn\u0027t rename the file system back?","commit_id":"cfec736f0f194b65b871e791927820ef9f29868e"},{"author":{"_account_id":17097,"name":"Tiago Pasqualini da Silva","email":"t.pasqualini@luizalabs.com","username":"tiago.pasqualini"},"change_message_id":"0cc7f08c6809ae893d69bc21e62d26c3b8a9981b","unresolved":false,"context_lines":[{"line_number":273,"context_line":"                  {\u0027original_name\u0027: original_name,"},{"line_number":274,"context_line":"                   \u0027name\u0027: share[\u0027id\u0027]})"},{"line_number":275,"context_line":""},{"line_number":276,"context_line":"        self.private_storage.delete(share[\u0027id\u0027])"},{"line_number":277,"context_line":""},{"line_number":278,"context_line":"        LOG.info(_LI(\"The share with current path %(shr_path)s and ID \""},{"line_number":279,"context_line":"                     \"%(shr_id)s is no longer being managed.\"),"}],"source_content_type":"text/x-python","patch_set":11,"id":"bacf61ea_5e2f783e","line":276,"in_reply_to":"bacf61ea_cc46514e","updated":"2016-08-01 21:18:42.000000000","message":"Please see my answer above.","commit_id":"cfec736f0f194b65b871e791927820ef9f29868e"},{"author":{"_account_id":11865,"name":"Clinton Knight","email":"cknight@netapp.com","username":"cknight"},"change_message_id":"a39528850f5079a2758f3193cba99516c96f045d","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright (c) 2016 Hitachi Data Systems, Inc."},{"line_number":2,"context_line":"# All Rights Reserved."},{"line_number":3,"context_line":"#"},{"line_number":4,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"}],"source_content_type":"text/x-python","patch_set":18,"id":"9ad45d7e_88c18131","line":1,"range":{"start_line":1,"start_character":0,"end_line":1,"end_character":1},"updated":"2016-08-08 17:52:23.000000000","message":"This new driver has been added to manila/share/drivers/hitachi, and it is not clear that this directory now contains 2 independent drivers.  Please add a subdirectory (hsp) to contain the new driver, and plan to move hds_hnas to its own subdirectory in a separate patch.","commit_id":"4ab1c18df2fb2381883a9ef54716cb1fa180b7cb"},{"author":{"_account_id":17097,"name":"Tiago Pasqualini da Silva","email":"t.pasqualini@luizalabs.com","username":"tiago.pasqualini"},"change_message_id":"ce0ade264d04f1c59f453c80164b38bacbdb493d","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright (c) 2016 Hitachi Data Systems, Inc."},{"line_number":2,"context_line":"# All Rights Reserved."},{"line_number":3,"context_line":"#"},{"line_number":4,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"}],"source_content_type":"text/x-python","patch_set":18,"id":"9ad45d7e_607b13f6","line":1,"range":{"start_line":1,"start_character":0,"end_line":1,"end_character":1},"in_reply_to":"9ad45d7e_88c18131","updated":"2016-08-10 12:11:59.000000000","message":"Done","commit_id":"4ab1c18df2fb2381883a9ef54716cb1fa180b7cb"},{"author":{"_account_id":11865,"name":"Clinton Knight","email":"cknight@netapp.com","username":"cknight"},"change_message_id":"a39528850f5079a2758f3193cba99516c96f045d","unresolved":false,"context_lines":[{"line_number":78,"context_line":"        total_space \u003d hsp_cluster[\u0027properties\u0027][\u0027total-storage-capacity\u0027]"},{"line_number":79,"context_line":"        free_space \u003d hsp_cluster[\u0027properties\u0027][\u0027total-storage-available\u0027]"},{"line_number":80,"context_line":""},{"line_number":81,"context_line":"        data \u003d {"},{"line_number":82,"context_line":"            \u0027share_backend_name\u0027: self.backend_name,"},{"line_number":83,"context_line":"            \u0027vendor_name\u0027: \u0027Hitachi\u0027,"},{"line_number":84,"context_line":"            \u0027driver_version\u0027: \u00271.0.0\u0027,"}],"source_content_type":"text/x-python","patch_set":18,"id":"9ad45d7e_28b4d5f0","line":81,"range":{"start_line":81,"start_character":8,"end_line":81,"end_character":12},"updated":"2016-08-08 17:52:23.000000000","message":"Why not include the other common capabilities (dedupe, compression), even if they are False?","commit_id":"4ab1c18df2fb2381883a9ef54716cb1fa180b7cb"},{"author":{"_account_id":17097,"name":"Tiago Pasqualini da Silva","email":"t.pasqualini@luizalabs.com","username":"tiago.pasqualini"},"change_message_id":"ce0ade264d04f1c59f453c80164b38bacbdb493d","unresolved":false,"context_lines":[{"line_number":78,"context_line":"        total_space \u003d hsp_cluster[\u0027properties\u0027][\u0027total-storage-capacity\u0027]"},{"line_number":79,"context_line":"        free_space \u003d hsp_cluster[\u0027properties\u0027][\u0027total-storage-available\u0027]"},{"line_number":80,"context_line":""},{"line_number":81,"context_line":"        data \u003d {"},{"line_number":82,"context_line":"            \u0027share_backend_name\u0027: self.backend_name,"},{"line_number":83,"context_line":"            \u0027vendor_name\u0027: \u0027Hitachi\u0027,"},{"line_number":84,"context_line":"            \u0027driver_version\u0027: \u00271.0.0\u0027,"}],"source_content_type":"text/x-python","patch_set":18,"id":"9ad45d7e_715be8f6","line":81,"range":{"start_line":81,"start_character":8,"end_line":81,"end_character":12},"in_reply_to":"9ad45d7e_28b4d5f0","updated":"2016-08-10 12:11:59.000000000","message":"Done","commit_id":"4ab1c18df2fb2381883a9ef54716cb1fa180b7cb"},{"author":{"_account_id":11865,"name":"Clinton Knight","email":"cknight@netapp.com","username":"cknight"},"change_message_id":"a39528850f5079a2758f3193cba99516c96f045d","unresolved":false,"context_lines":[{"line_number":83,"context_line":"            \u0027vendor_name\u0027: \u0027Hitachi\u0027,"},{"line_number":84,"context_line":"            \u0027driver_version\u0027: \u00271.0.0\u0027,"},{"line_number":85,"context_line":"            \u0027storage_protocol\u0027: \u0027NFS\u0027,"},{"line_number":86,"context_line":"            \u0027total_capacity_gb\u0027: total_space / units.Gi,"},{"line_number":87,"context_line":"            \u0027free_capacity_gb\u0027: free_space / units.Gi,"},{"line_number":88,"context_line":"            \u0027reserved_percentage\u0027: reserved,"},{"line_number":89,"context_line":"            \u0027qos\u0027: False,"},{"line_number":90,"context_line":"            \u0027thin_provisioning\u0027: True,"}],"source_content_type":"text/x-python","patch_set":18,"id":"9ad45d7e_2841750c","line":87,"range":{"start_line":86,"start_character":12,"end_line":87,"end_character":54},"updated":"2016-08-08 17:52:23.000000000","message":"Please report capacity using the pools mechanism, even if you only have one pool.","commit_id":"4ab1c18df2fb2381883a9ef54716cb1fa180b7cb"},{"author":{"_account_id":17097,"name":"Tiago Pasqualini da Silva","email":"t.pasqualini@luizalabs.com","username":"tiago.pasqualini"},"change_message_id":"ce0ade264d04f1c59f453c80164b38bacbdb493d","unresolved":false,"context_lines":[{"line_number":83,"context_line":"            \u0027vendor_name\u0027: \u0027Hitachi\u0027,"},{"line_number":84,"context_line":"            \u0027driver_version\u0027: \u00271.0.0\u0027,"},{"line_number":85,"context_line":"            \u0027storage_protocol\u0027: \u0027NFS\u0027,"},{"line_number":86,"context_line":"            \u0027total_capacity_gb\u0027: total_space / units.Gi,"},{"line_number":87,"context_line":"            \u0027free_capacity_gb\u0027: free_space / units.Gi,"},{"line_number":88,"context_line":"            \u0027reserved_percentage\u0027: reserved,"},{"line_number":89,"context_line":"            \u0027qos\u0027: False,"},{"line_number":90,"context_line":"            \u0027thin_provisioning\u0027: True,"}],"source_content_type":"text/x-python","patch_set":18,"id":"9ad45d7e_f11b58c8","line":87,"range":{"start_line":86,"start_character":12,"end_line":87,"end_character":54},"in_reply_to":"9ad45d7e_2841750c","updated":"2016-08-10 12:11:59.000000000","message":"Done","commit_id":"4ab1c18df2fb2381883a9ef54716cb1fa180b7cb"},{"author":{"_account_id":11865,"name":"Clinton Knight","email":"cknight@netapp.com","username":"cknight"},"change_message_id":"a39528850f5079a2758f3193cba99516c96f045d","unresolved":false,"context_lines":[{"line_number":117,"context_line":""},{"line_number":118,"context_line":"        LOG.debug(\"Share created successfully on path: %(uri)s.\","},{"line_number":119,"context_line":"                  {\u0027uri\u0027: uri})"},{"line_number":120,"context_line":"        return {"},{"line_number":121,"context_line":"            \"path\": uri,"},{"line_number":122,"context_line":"            \"metadata\": {},"},{"line_number":123,"context_line":"            \"is_admin_only\": False,"},{"line_number":124,"context_line":"        }"},{"line_number":125,"context_line":""},{"line_number":126,"context_line":"    def delete_share(self, context, share, share_server\u003dNone):"},{"line_number":127,"context_line":"        LOG.debug(\"Deleting share in HSP: %(shr)s.\", {\u0027shr\u0027: share[\u0027id\u0027]})"}],"source_content_type":"text/x-python","patch_set":18,"id":"9ad45d7e_dbc85c77","line":124,"range":{"start_line":120,"start_character":15,"end_line":124,"end_character":9},"updated":"2016-08-08 17:52:23.000000000","message":"Ideally this would be list of dicts, as you did in manage_existing.","commit_id":"4ab1c18df2fb2381883a9ef54716cb1fa180b7cb"},{"author":{"_account_id":17097,"name":"Tiago Pasqualini da Silva","email":"t.pasqualini@luizalabs.com","username":"tiago.pasqualini"},"change_message_id":"ce0ade264d04f1c59f453c80164b38bacbdb493d","unresolved":false,"context_lines":[{"line_number":117,"context_line":""},{"line_number":118,"context_line":"        LOG.debug(\"Share created successfully on path: %(uri)s.\","},{"line_number":119,"context_line":"                  {\u0027uri\u0027: uri})"},{"line_number":120,"context_line":"        return {"},{"line_number":121,"context_line":"            \"path\": uri,"},{"line_number":122,"context_line":"            \"metadata\": {},"},{"line_number":123,"context_line":"            \"is_admin_only\": False,"},{"line_number":124,"context_line":"        }"},{"line_number":125,"context_line":""},{"line_number":126,"context_line":"    def delete_share(self, context, share, share_server\u003dNone):"},{"line_number":127,"context_line":"        LOG.debug(\"Deleting share in HSP: %(shr)s.\", {\u0027shr\u0027: share[\u0027id\u0027]})"}],"source_content_type":"text/x-python","patch_set":18,"id":"9ad45d7e_440aa422","line":124,"range":{"start_line":120,"start_character":15,"end_line":124,"end_character":9},"in_reply_to":"9ad45d7e_dbc85c77","updated":"2016-08-10 12:11:59.000000000","message":"Done","commit_id":"4ab1c18df2fb2381883a9ef54716cb1fa180b7cb"},{"author":{"_account_id":11865,"name":"Clinton Knight","email":"cknight@netapp.com","username":"cknight"},"change_message_id":"a39528850f5079a2758f3193cba99516c96f045d","unresolved":false,"context_lines":[{"line_number":126,"context_line":"    def delete_share(self, context, share, share_server\u003dNone):"},{"line_number":127,"context_line":"        LOG.debug(\"Deleting share in HSP: %(shr)s.\", {\u0027shr\u0027: share[\u0027id\u0027]})"},{"line_number":128,"context_line":""},{"line_number":129,"context_line":"        try:"},{"line_number":130,"context_line":"            filesystem_id \u003d self.hsp.get_file_system(share[\u0027id\u0027])[\u0027id\u0027]"},{"line_number":131,"context_line":"            hsp_share_id \u003d self.hsp.get_share(filesystem_id)[\u0027id\u0027]"},{"line_number":132,"context_line":""},{"line_number":133,"context_line":"            self.hsp.delete_share(hsp_share_id)"},{"line_number":134,"context_line":"            self.hsp.delete_file_system(filesystem_id)"},{"line_number":135,"context_line":"        except exception.HSPItemNotFoundException:"},{"line_number":136,"context_line":"            LOG.info(_LI(\"Share %(shr)s already removed from backend.\"),"},{"line_number":137,"context_line":"                     {\u0027shr\u0027: share[\u0027id\u0027]})"}],"source_content_type":"text/x-python","patch_set":18,"id":"9ad45d7e_3399e66f","line":134,"range":{"start_line":129,"start_character":8,"end_line":134,"end_character":54},"updated":"2016-08-08 17:52:23.000000000","message":"Is it possible the share doesn\u0027t exist, but the filesystem does, perhaps due to changes outside Manila?  It seems for maximum resiliency you should have 2 separate try-except blocks here to handle these cases separately.","commit_id":"4ab1c18df2fb2381883a9ef54716cb1fa180b7cb"},{"author":{"_account_id":17097,"name":"Tiago Pasqualini da Silva","email":"t.pasqualini@luizalabs.com","username":"tiago.pasqualini"},"change_message_id":"ce0ade264d04f1c59f453c80164b38bacbdb493d","unresolved":false,"context_lines":[{"line_number":126,"context_line":"    def delete_share(self, context, share, share_server\u003dNone):"},{"line_number":127,"context_line":"        LOG.debug(\"Deleting share in HSP: %(shr)s.\", {\u0027shr\u0027: share[\u0027id\u0027]})"},{"line_number":128,"context_line":""},{"line_number":129,"context_line":"        try:"},{"line_number":130,"context_line":"            filesystem_id \u003d self.hsp.get_file_system(share[\u0027id\u0027])[\u0027id\u0027]"},{"line_number":131,"context_line":"            hsp_share_id \u003d self.hsp.get_share(filesystem_id)[\u0027id\u0027]"},{"line_number":132,"context_line":""},{"line_number":133,"context_line":"            self.hsp.delete_share(hsp_share_id)"},{"line_number":134,"context_line":"            self.hsp.delete_file_system(filesystem_id)"},{"line_number":135,"context_line":"        except exception.HSPItemNotFoundException:"},{"line_number":136,"context_line":"            LOG.info(_LI(\"Share %(shr)s already removed from backend.\"),"},{"line_number":137,"context_line":"                     {\u0027shr\u0027: share[\u0027id\u0027]})"}],"source_content_type":"text/x-python","patch_set":18,"id":"9ad45d7e_84fadcbb","line":134,"range":{"start_line":129,"start_character":8,"end_line":134,"end_character":54},"in_reply_to":"9ad45d7e_3399e66f","updated":"2016-08-10 12:11:59.000000000","message":"The HSPItemNotFoundException is thrown by the get_file_system and get_share methods from HSPRestBackend, so the driver will search for the filesystem and then search for the share. If the filesystem is not found, the exception is thrown, so the logic you suggested is already implemented. Additionally, the delete_share and delete_file_system methods can throw an HSPBackendException that might get to the manager, but this is expected behavior.","commit_id":"4ab1c18df2fb2381883a9ef54716cb1fa180b7cb"},{"author":{"_account_id":11865,"name":"Clinton Knight","email":"cknight@netapp.com","username":"cknight"},"change_message_id":"a39528850f5079a2758f3193cba99516c96f045d","unresolved":false,"context_lines":[{"line_number":191,"context_line":"                self.hsp.delete_access_rule(hsp_share_id, rule[\u0027access_to\u0027])"},{"line_number":192,"context_line":""},{"line_number":193,"context_line":"            for rule in add_rules:"},{"line_number":194,"context_line":"                if rule[\u0027access_type\u0027].lower() !\u003d \u0027ip\u0027:"},{"line_number":195,"context_line":"                    msg \u003d _(\"Only IP access type currently supported.\")"},{"line_number":196,"context_line":"                    raise exception.InvalidShareAccess(reason\u003dmsg)"},{"line_number":197,"context_line":""},{"line_number":198,"context_line":"                self.hsp.add_access_rule("},{"line_number":199,"context_line":"                    hsp_share_id, rule[\u0027access_to\u0027],"},{"line_number":200,"context_line":"                    (rule[\u0027access_level\u0027] \u003d\u003d constants.ACCESS_LEVEL_RW))"},{"line_number":201,"context_line":""},{"line_number":202,"context_line":"        LOG.debug(\"Successfully updated share %(shr)s rules.\","},{"line_number":203,"context_line":"                  {\u0027shr\u0027: share[\u0027id\u0027]})"}],"source_content_type":"text/x-python","patch_set":18,"id":"9ad45d7e_18315a0c","line":200,"range":{"start_line":194,"start_character":0,"end_line":200,"end_character":72},"updated":"2016-08-08 17:52:23.000000000","message":"This highlighted block wasn\u0027t covered by a unit test.  Note that this method is rather long, over 50 lines.  Breaking it up into private methods, perhaps one for recovery mode and one for normal rules, would simplify writing more complete unit tests.","commit_id":"4ab1c18df2fb2381883a9ef54716cb1fa180b7cb"},{"author":{"_account_id":17097,"name":"Tiago Pasqualini da Silva","email":"t.pasqualini@luizalabs.com","username":"tiago.pasqualini"},"change_message_id":"ce0ade264d04f1c59f453c80164b38bacbdb493d","unresolved":false,"context_lines":[{"line_number":191,"context_line":"                self.hsp.delete_access_rule(hsp_share_id, rule[\u0027access_to\u0027])"},{"line_number":192,"context_line":""},{"line_number":193,"context_line":"            for rule in add_rules:"},{"line_number":194,"context_line":"                if rule[\u0027access_type\u0027].lower() !\u003d \u0027ip\u0027:"},{"line_number":195,"context_line":"                    msg \u003d _(\"Only IP access type currently supported.\")"},{"line_number":196,"context_line":"                    raise exception.InvalidShareAccess(reason\u003dmsg)"},{"line_number":197,"context_line":""},{"line_number":198,"context_line":"                self.hsp.add_access_rule("},{"line_number":199,"context_line":"                    hsp_share_id, rule[\u0027access_to\u0027],"},{"line_number":200,"context_line":"                    (rule[\u0027access_level\u0027] \u003d\u003d constants.ACCESS_LEVEL_RW))"},{"line_number":201,"context_line":""},{"line_number":202,"context_line":"        LOG.debug(\"Successfully updated share %(shr)s rules.\","},{"line_number":203,"context_line":"                  {\u0027shr\u0027: share[\u0027id\u0027]})"}],"source_content_type":"text/x-python","patch_set":18,"id":"9ad45d7e_c404d4c1","line":200,"range":{"start_line":194,"start_character":0,"end_line":200,"end_character":72},"in_reply_to":"9ad45d7e_18315a0c","updated":"2016-08-10 12:11:59.000000000","message":"Done","commit_id":"4ab1c18df2fb2381883a9ef54716cb1fa180b7cb"}],"manila/share/drivers/hitachi/hsp/hsp.py":[{"author":{"_account_id":11865,"name":"Clinton Knight","email":"cknight@netapp.com","username":"cknight"},"change_message_id":"a340074b00b9d3dccbd86d807b74dbfe0a2786cd","unresolved":false,"context_lines":[{"line_number":73,"context_line":"        if not self.private_storage.get(self.cluster_id):"},{"line_number":74,"context_line":"            self.private_storage.update(self.cluster_id, {\u0027provisioned\u0027: 0})"},{"line_number":75,"context_line":""},{"line_number":76,"context_line":"    def _update_provisioned_capacity(self, difference, remove\u003dFalse):"},{"line_number":77,"context_line":"        provisioned \u003d self.private_storage.get("},{"line_number":78,"context_line":"            self.cluster_id)[\u0027provisioned\u0027]"},{"line_number":79,"context_line":""}],"source_content_type":"text/x-python","patch_set":20,"id":"9ad45d7e_cf58238d","line":76,"range":{"start_line":76,"start_character":55,"end_line":76,"end_character":67},"updated":"2016-08-10 15:36:17.000000000","message":"Why not just allow \u0027difference\u0027 to be a negative number?  You just have to multiply the size by -1 in delete_share and unmanage.","commit_id":"c6e3e50391610c8cbe68b558f512bdecd5db9e47"},{"author":{"_account_id":17097,"name":"Tiago Pasqualini da Silva","email":"t.pasqualini@luizalabs.com","username":"tiago.pasqualini"},"change_message_id":"0c64347b1314f74fc09cabfe0679be49ea76e53e","unresolved":false,"context_lines":[{"line_number":73,"context_line":"        if not self.private_storage.get(self.cluster_id):"},{"line_number":74,"context_line":"            self.private_storage.update(self.cluster_id, {\u0027provisioned\u0027: 0})"},{"line_number":75,"context_line":""},{"line_number":76,"context_line":"    def _update_provisioned_capacity(self, difference, remove\u003dFalse):"},{"line_number":77,"context_line":"        provisioned \u003d self.private_storage.get("},{"line_number":78,"context_line":"            self.cluster_id)[\u0027provisioned\u0027]"},{"line_number":79,"context_line":""}],"source_content_type":"text/x-python","patch_set":20,"id":"9ad45d7e_781a9b7e","line":76,"range":{"start_line":76,"start_character":55,"end_line":76,"end_character":67},"in_reply_to":"9ad45d7e_cf58238d","updated":"2016-08-10 15:50:46.000000000","message":"That was actually my first idea, but I thought that multiplying the size by -1 in delete and unmanage would be less intuitive than this boolean flag. But I am ok with either implementation.","commit_id":"c6e3e50391610c8cbe68b558f512bdecd5db9e47"},{"author":{"_account_id":11865,"name":"Clinton Knight","email":"cknight@netapp.com","username":"cknight"},"change_message_id":"a340074b00b9d3dccbd86d807b74dbfe0a2786cd","unresolved":false,"context_lines":[{"line_number":153,"context_line":"    def delete_share(self, context, share, share_server\u003dNone):"},{"line_number":154,"context_line":"        LOG.debug(\"Deleting share in HSP: %(shr)s.\", {\u0027shr\u0027: share[\u0027id\u0027]})"},{"line_number":155,"context_line":""},{"line_number":156,"context_line":"        try:"},{"line_number":157,"context_line":"            filesystem_id \u003d self.hsp.get_file_system(share[\u0027id\u0027])[\u0027id\u0027]"},{"line_number":158,"context_line":"            hsp_share_id \u003d self.hsp.get_share(filesystem_id)[\u0027id\u0027]"},{"line_number":159,"context_line":""},{"line_number":160,"context_line":"            self.hsp.delete_share(hsp_share_id)"},{"line_number":161,"context_line":"            self.hsp.delete_file_system(filesystem_id)"},{"line_number":162,"context_line":"        except exception.HSPItemNotFoundException:"},{"line_number":163,"context_line":"            LOG.info(_LI(\"Share %(shr)s already removed from backend.\"),"},{"line_number":164,"context_line":"                     {\u0027shr\u0027: share[\u0027id\u0027]})"}],"source_content_type":"text/x-python","patch_set":20,"id":"9ad45d7e_f2250c09","line":161,"range":{"start_line":156,"start_character":8,"end_line":161,"end_character":54},"updated":"2016-08-10 15:36:17.000000000","message":"Let me rephrase my earlier question...  Consider the case (again, due to tampering outside Manila) where the share doesn\u0027t exist but the filesystem does.  In this case the driver will report success but not delete the filesystem.  Is that what you want?","commit_id":"c6e3e50391610c8cbe68b558f512bdecd5db9e47"},{"author":{"_account_id":17097,"name":"Tiago Pasqualini da Silva","email":"t.pasqualini@luizalabs.com","username":"tiago.pasqualini"},"change_message_id":"0c64347b1314f74fc09cabfe0679be49ea76e53e","unresolved":false,"context_lines":[{"line_number":153,"context_line":"    def delete_share(self, context, share, share_server\u003dNone):"},{"line_number":154,"context_line":"        LOG.debug(\"Deleting share in HSP: %(shr)s.\", {\u0027shr\u0027: share[\u0027id\u0027]})"},{"line_number":155,"context_line":""},{"line_number":156,"context_line":"        try:"},{"line_number":157,"context_line":"            filesystem_id \u003d self.hsp.get_file_system(share[\u0027id\u0027])[\u0027id\u0027]"},{"line_number":158,"context_line":"            hsp_share_id \u003d self.hsp.get_share(filesystem_id)[\u0027id\u0027]"},{"line_number":159,"context_line":""},{"line_number":160,"context_line":"            self.hsp.delete_share(hsp_share_id)"},{"line_number":161,"context_line":"            self.hsp.delete_file_system(filesystem_id)"},{"line_number":162,"context_line":"        except exception.HSPItemNotFoundException:"},{"line_number":163,"context_line":"            LOG.info(_LI(\"Share %(shr)s already removed from backend.\"),"},{"line_number":164,"context_line":"                     {\u0027shr\u0027: share[\u0027id\u0027]})"}],"source_content_type":"text/x-python","patch_set":20,"id":"9ad45d7e_e37b8026","line":161,"range":{"start_line":156,"start_character":8,"end_line":161,"end_character":54},"in_reply_to":"9ad45d7e_f2250c09","updated":"2016-08-10 15:50:46.000000000","message":"Right, I was missing the second GET call to the backend, that\u0027s why I haven\u0027t changed that, sorry. I am going to split this in two different try-except blocks. Thank you.","commit_id":"c6e3e50391610c8cbe68b558f512bdecd5db9e47"},{"author":{"_account_id":11865,"name":"Clinton Knight","email":"cknight@netapp.com","username":"cknight"},"change_message_id":"a151d402bf1184c450a4868e14ef52e358c3e2a3","unresolved":false,"context_lines":[{"line_number":73,"context_line":"        if not self.private_storage.get(self.cluster_id):"},{"line_number":74,"context_line":"            self.private_storage.update(self.cluster_id, {\u0027provisioned\u0027: 0})"},{"line_number":75,"context_line":""},{"line_number":76,"context_line":"    def _update_provisioned_capacity(self, difference, remove\u003dFalse):"},{"line_number":77,"context_line":"        provisioned \u003d int(self.private_storage.get("},{"line_number":78,"context_line":"            self.cluster_id)[\u0027provisioned\u0027])"},{"line_number":79,"context_line":""}],"source_content_type":"text/x-python","patch_set":21,"id":"9ad45d7e_3805c313","line":76,"range":{"start_line":76,"start_character":4,"end_line":76,"end_character":69},"updated":"2016-08-10 15:40:20.000000000","message":"This provisioned capacity tracking wasn\u0027t in earlier patch sets.  The driver can\u0027t query the database, so not unlike the quota system, I think this is guaranteed to become outdated over time (consider race conditions, HA m-shr services, etc).  There is an effort underway to do this in the scheduler, which has all the necessary info.  I don\u0027t think this should be in the driver.","commit_id":"51109a6d87ebad93516548ab5be0f524c5d73656"},{"author":{"_account_id":17097,"name":"Tiago Pasqualini da Silva","email":"t.pasqualini@luizalabs.com","username":"tiago.pasqualini"},"change_message_id":"862e29d77e01d9d0e73e869bd53b172212c2ce7b","unresolved":false,"context_lines":[{"line_number":73,"context_line":"        if not self.private_storage.get(self.cluster_id):"},{"line_number":74,"context_line":"            self.private_storage.update(self.cluster_id, {\u0027provisioned\u0027: 0})"},{"line_number":75,"context_line":""},{"line_number":76,"context_line":"    def _update_provisioned_capacity(self, difference, remove\u003dFalse):"},{"line_number":77,"context_line":"        provisioned \u003d int(self.private_storage.get("},{"line_number":78,"context_line":"            self.cluster_id)[\u0027provisioned\u0027])"},{"line_number":79,"context_line":""}],"source_content_type":"text/x-python","patch_set":21,"id":"9ad45d7e_8b0bb68d","line":76,"range":{"start_line":76,"start_character":4,"end_line":76,"end_character":69},"in_reply_to":"9ad45d7e_3805c313","updated":"2016-08-10 17:18:09.000000000","message":"Removed, thanks.","commit_id":"51109a6d87ebad93516548ab5be0f524c5d73656"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"7a8612d19efd13932e75602789e8c84ac0c66660","unresolved":false,"context_lines":[{"line_number":73,"context_line":"        if not self.private_storage.get(self.cluster_id):"},{"line_number":74,"context_line":"            self.private_storage.update(self.cluster_id, {\u0027provisioned\u0027: 0})"},{"line_number":75,"context_line":""},{"line_number":76,"context_line":"    def _update_provisioned_capacity(self, difference, remove\u003dFalse):"},{"line_number":77,"context_line":"        provisioned \u003d int(self.private_storage.get("},{"line_number":78,"context_line":"            self.cluster_id)[\u0027provisioned\u0027])"},{"line_number":79,"context_line":""}],"source_content_type":"text/x-python","patch_set":21,"id":"9ad45d7e_2bfbaa7a","line":76,"range":{"start_line":76,"start_character":4,"end_line":76,"end_character":69},"in_reply_to":"9ad45d7e_3805c313","updated":"2016-08-10 17:18:39.000000000","message":"There are drivers that can get this info from backend directly.  I was suggesting drivers to report this if this info is available from the backend.\n\nUpdating based on Manila db in the driver is not a good idea.  Since you can\u0027t get this from backend directly, don\u0027t report provisioned_capacity_gb.  This data will be estimated by Manila.\n\nThere\u0027s a patch trying to fix this in Manila:\nhttps://review.openstack.org/#/c/351034/","commit_id":"51109a6d87ebad93516548ab5be0f524c5d73656"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"af1a0be775e6cf127de3b7d1c127a5a778fce58b","unresolved":false,"context_lines":[{"line_number":67,"context_line":"            self.configuration.safe_get(\u0027hitachi_hsp_password\u0027)"},{"line_number":68,"context_line":"        )"},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"        # Init private storage entry for provisioned_capacity"},{"line_number":71,"context_line":"        self.cluster_id \u003d self.hsp.get_cluster()[\u0027id\u0027]"},{"line_number":72,"context_line":"        if not self.private_storage.get(self.cluster_id):"},{"line_number":73,"context_line":"            self.private_storage.update(self.cluster_id, {\u0027provisioned\u0027: 0})"},{"line_number":74,"context_line":""},{"line_number":75,"context_line":"    def _update_share_stats(self, data\u003dNone):"},{"line_number":76,"context_line":"        LOG.debug(\"Updating Backend Capability Information - Hitachi HSP.\")"}],"source_content_type":"text/x-python","patch_set":23,"id":"9ad45d7e_1e6cf4cc","line":73,"range":{"start_line":70,"start_character":8,"end_line":73,"end_character":76},"updated":"2016-08-11 13:24:37.000000000","message":"Don\u0027t need this anymore, do you?","commit_id":"a93a88c5802ed1511b7cc8f7b385742556427907"},{"author":{"_account_id":17097,"name":"Tiago Pasqualini da Silva","email":"t.pasqualini@luizalabs.com","username":"tiago.pasqualini"},"change_message_id":"83bb42f3c34e3b18341fbc265e8b5f2777d7ebe3","unresolved":false,"context_lines":[{"line_number":67,"context_line":"            self.configuration.safe_get(\u0027hitachi_hsp_password\u0027)"},{"line_number":68,"context_line":"        )"},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"        # Init private storage entry for provisioned_capacity"},{"line_number":71,"context_line":"        self.cluster_id \u003d self.hsp.get_cluster()[\u0027id\u0027]"},{"line_number":72,"context_line":"        if not self.private_storage.get(self.cluster_id):"},{"line_number":73,"context_line":"            self.private_storage.update(self.cluster_id, {\u0027provisioned\u0027: 0})"},{"line_number":74,"context_line":""},{"line_number":75,"context_line":"    def _update_share_stats(self, data\u003dNone):"},{"line_number":76,"context_line":"        LOG.debug(\"Updating Backend Capability Information - Hitachi HSP.\")"}],"source_content_type":"text/x-python","patch_set":23,"id":"9ad45d7e_09678eb7","line":73,"range":{"start_line":70,"start_character":8,"end_line":73,"end_character":76},"in_reply_to":"9ad45d7e_1e6cf4cc","updated":"2016-08-11 19:17:47.000000000","message":"Done","commit_id":"a93a88c5802ed1511b7cc8f7b385742556427907"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"af1a0be775e6cf127de3b7d1c127a5a778fce58b","unresolved":false,"context_lines":[{"line_number":102,"context_line":"        }"},{"line_number":103,"context_line":""},{"line_number":104,"context_line":"        LOG.info(_LI(\"Hitachi HSP Capabilities: %(data)s.\"),"},{"line_number":105,"context_line":"                 {\u0027data\u0027: six.text_type(data)})"},{"line_number":106,"context_line":"        super(HitachiHSPDriver, self)._update_share_stats(data)"},{"line_number":107,"context_line":""},{"line_number":108,"context_line":"    def create_share(self, context, share, share_server\u003dNone):"}],"source_content_type":"text/x-python","patch_set":23,"id":"9ad45d7e_3e50d8d3","line":105,"range":{"start_line":105,"start_character":26,"end_line":105,"end_character":45},"updated":"2016-08-11 13:24:37.000000000","message":"http://docs.openstack.org/developer/oslo.i18n/guidelines.html#avoid-forcing-the-translation-of-translatable-variables","commit_id":"a93a88c5802ed1511b7cc8f7b385742556427907"},{"author":{"_account_id":17097,"name":"Tiago Pasqualini da Silva","email":"t.pasqualini@luizalabs.com","username":"tiago.pasqualini"},"change_message_id":"83bb42f3c34e3b18341fbc265e8b5f2777d7ebe3","unresolved":false,"context_lines":[{"line_number":102,"context_line":"        }"},{"line_number":103,"context_line":""},{"line_number":104,"context_line":"        LOG.info(_LI(\"Hitachi HSP Capabilities: %(data)s.\"),"},{"line_number":105,"context_line":"                 {\u0027data\u0027: six.text_type(data)})"},{"line_number":106,"context_line":"        super(HitachiHSPDriver, self)._update_share_stats(data)"},{"line_number":107,"context_line":""},{"line_number":108,"context_line":"    def create_share(self, context, share, share_server\u003dNone):"}],"source_content_type":"text/x-python","patch_set":23,"id":"9ad45d7e_490b46d6","line":105,"range":{"start_line":105,"start_character":26,"end_line":105,"end_character":45},"in_reply_to":"9ad45d7e_3e50d8d3","updated":"2016-08-11 19:17:47.000000000","message":"Done","commit_id":"a93a88c5802ed1511b7cc8f7b385742556427907"},{"author":{"_account_id":11865,"name":"Clinton Knight","email":"cknight@netapp.com","username":"cknight"},"change_message_id":"fbdba2d46346f3c2fbc7c21708353347e1491212","unresolved":false,"context_lines":[{"line_number":102,"context_line":"        }"},{"line_number":103,"context_line":""},{"line_number":104,"context_line":"        LOG.info(_LI(\"Hitachi HSP Capabilities: %(data)s.\"),"},{"line_number":105,"context_line":"                 {\u0027data\u0027: six.text_type(data)})"},{"line_number":106,"context_line":"        super(HitachiHSPDriver, self)._update_share_stats(data)"},{"line_number":107,"context_line":""},{"line_number":108,"context_line":"    def create_share(self, context, share, share_server\u003dNone):"}],"source_content_type":"text/x-python","patch_set":23,"id":"9ad45d7e_245559c5","line":105,"range":{"start_line":105,"start_character":26,"end_line":105,"end_character":45},"in_reply_to":"9ad45d7e_3e50d8d3","updated":"2016-08-11 17:57:30.000000000","message":"How is this data translatable?","commit_id":"a93a88c5802ed1511b7cc8f7b385742556427907"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"af1a0be775e6cf127de3b7d1c127a5a778fce58b","unresolved":false,"context_lines":[{"line_number":117,"context_line":""},{"line_number":118,"context_line":"        try:"},{"line_number":119,"context_line":"            self.hsp.add_share(share[\u0027id\u0027], filesystem_id)"},{"line_number":120,"context_line":"        except exception.HSPBackendException as e:"},{"line_number":121,"context_line":"            with excutils.save_and_reraise_exception():"},{"line_number":122,"context_line":"                self.hsp.delete_file_system(filesystem_id)"},{"line_number":123,"context_line":"                msg \u003d _LE(\"Could not create share on HSP: %s\")"}],"source_content_type":"text/x-python","patch_set":23,"id":"9ad45d7e_5e766c3e","line":120,"range":{"start_line":120,"start_character":45,"end_line":120,"end_character":49},"updated":"2016-08-11 13:24:37.000000000","message":"not necessary","commit_id":"a93a88c5802ed1511b7cc8f7b385742556427907"},{"author":{"_account_id":17097,"name":"Tiago Pasqualini da Silva","email":"t.pasqualini@luizalabs.com","username":"tiago.pasqualini"},"change_message_id":"83bb42f3c34e3b18341fbc265e8b5f2777d7ebe3","unresolved":false,"context_lines":[{"line_number":117,"context_line":""},{"line_number":118,"context_line":"        try:"},{"line_number":119,"context_line":"            self.hsp.add_share(share[\u0027id\u0027], filesystem_id)"},{"line_number":120,"context_line":"        except exception.HSPBackendException as e:"},{"line_number":121,"context_line":"            with excutils.save_and_reraise_exception():"},{"line_number":122,"context_line":"                self.hsp.delete_file_system(filesystem_id)"},{"line_number":123,"context_line":"                msg \u003d _LE(\"Could not create share on HSP: %s\")"}],"source_content_type":"text/x-python","patch_set":23,"id":"9ad45d7e_493226a8","line":120,"range":{"start_line":120,"start_character":45,"end_line":120,"end_character":49},"in_reply_to":"9ad45d7e_5e766c3e","updated":"2016-08-11 19:17:47.000000000","message":"Done","commit_id":"a93a88c5802ed1511b7cc8f7b385742556427907"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"af1a0be775e6cf127de3b7d1c127a5a778fce58b","unresolved":false,"context_lines":[{"line_number":120,"context_line":"        except exception.HSPBackendException as e:"},{"line_number":121,"context_line":"            with excutils.save_and_reraise_exception():"},{"line_number":122,"context_line":"                self.hsp.delete_file_system(filesystem_id)"},{"line_number":123,"context_line":"                msg \u003d _LE(\"Could not create share on HSP: %s\")"},{"line_number":124,"context_line":"                LOG.exception(msg, e)"},{"line_number":125,"context_line":""},{"line_number":126,"context_line":"        uri \u003d self.hsp_host + \u0027:/\u0027 + share[\u0027id\u0027]"},{"line_number":127,"context_line":""}],"source_content_type":"text/x-python","patch_set":23,"id":"9ad45d7e_be84c80a","line":124,"range":{"start_line":123,"start_character":58,"end_line":124,"end_character":36},"updated":"2016-08-11 13:24:37.000000000","message":"LOG.exception prints the traceback, no need to put the exception obj in it again..","commit_id":"a93a88c5802ed1511b7cc8f7b385742556427907"},{"author":{"_account_id":11865,"name":"Clinton Knight","email":"cknight@netapp.com","username":"cknight"},"change_message_id":"fbdba2d46346f3c2fbc7c21708353347e1491212","unresolved":false,"context_lines":[{"line_number":120,"context_line":"        except exception.HSPBackendException as e:"},{"line_number":121,"context_line":"            with excutils.save_and_reraise_exception():"},{"line_number":122,"context_line":"                self.hsp.delete_file_system(filesystem_id)"},{"line_number":123,"context_line":"                msg \u003d _LE(\"Could not create share on HSP: %s\")"},{"line_number":124,"context_line":"                LOG.exception(msg, e)"},{"line_number":125,"context_line":""},{"line_number":126,"context_line":"        uri \u003d self.hsp_host + \u0027:/\u0027 + share[\u0027id\u0027]"},{"line_number":127,"context_line":""}],"source_content_type":"text/x-python","patch_set":23,"id":"9ad45d7e_a45789c8","line":124,"range":{"start_line":123,"start_character":58,"end_line":124,"end_character":36},"in_reply_to":"9ad45d7e_be84c80a","updated":"2016-08-11 17:57:30.000000000","message":"+1","commit_id":"a93a88c5802ed1511b7cc8f7b385742556427907"},{"author":{"_account_id":17097,"name":"Tiago Pasqualini da Silva","email":"t.pasqualini@luizalabs.com","username":"tiago.pasqualini"},"change_message_id":"83bb42f3c34e3b18341fbc265e8b5f2777d7ebe3","unresolved":false,"context_lines":[{"line_number":120,"context_line":"        except exception.HSPBackendException as e:"},{"line_number":121,"context_line":"            with excutils.save_and_reraise_exception():"},{"line_number":122,"context_line":"                self.hsp.delete_file_system(filesystem_id)"},{"line_number":123,"context_line":"                msg \u003d _LE(\"Could not create share on HSP: %s\")"},{"line_number":124,"context_line":"                LOG.exception(msg, e)"},{"line_number":125,"context_line":""},{"line_number":126,"context_line":"        uri \u003d self.hsp_host + \u0027:/\u0027 + share[\u0027id\u0027]"},{"line_number":127,"context_line":""}],"source_content_type":"text/x-python","patch_set":23,"id":"9ad45d7e_09fe6ead","line":124,"range":{"start_line":123,"start_character":58,"end_line":124,"end_character":36},"in_reply_to":"9ad45d7e_be84c80a","updated":"2016-08-11 19:17:47.000000000","message":"Done","commit_id":"a93a88c5802ed1511b7cc8f7b385742556427907"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"af1a0be775e6cf127de3b7d1c127a5a778fce58b","unresolved":false,"context_lines":[{"line_number":220,"context_line":"    def _get_complement(self, rules_a, rules_b):"},{"line_number":221,"context_line":"        \"\"\"Returns the rules of list A that are not on list B\"\"\""},{"line_number":222,"context_line":"        complement \u003d []"},{"line_number":223,"context_line":"        for rule, is_rw in six.iteritems(rules_a):"},{"line_number":224,"context_line":"            if rule not in rules_b or rules_b[rule] !\u003d is_rw:"},{"line_number":225,"context_line":"                complement.append((rule, is_rw))"},{"line_number":226,"context_line":""}],"source_content_type":"text/x-python","patch_set":23,"id":"9ad45d7e_fe5c804c","line":223,"range":{"start_line":223,"start_character":27,"end_line":223,"end_character":49},"updated":"2016-08-11 13:24:37.000000000","message":"a huge discussion happened a year ago: https://openstack.nimeyo.com/48235/openstack-dev-all-python3-use-of-six-iteritems\n\nprobably rules_a.items() should work?","commit_id":"a93a88c5802ed1511b7cc8f7b385742556427907"},{"author":{"_account_id":11865,"name":"Clinton Knight","email":"cknight@netapp.com","username":"cknight"},"change_message_id":"fbdba2d46346f3c2fbc7c21708353347e1491212","unresolved":false,"context_lines":[{"line_number":220,"context_line":"    def _get_complement(self, rules_a, rules_b):"},{"line_number":221,"context_line":"        \"\"\"Returns the rules of list A that are not on list B\"\"\""},{"line_number":222,"context_line":"        complement \u003d []"},{"line_number":223,"context_line":"        for rule, is_rw in six.iteritems(rules_a):"},{"line_number":224,"context_line":"            if rule not in rules_b or rules_b[rule] !\u003d is_rw:"},{"line_number":225,"context_line":"                complement.append((rule, is_rw))"},{"line_number":226,"context_line":""}],"source_content_type":"text/x-python","patch_set":23,"id":"9ad45d7e_24f1d9cd","line":223,"range":{"start_line":223,"start_character":27,"end_line":223,"end_character":49},"in_reply_to":"9ad45d7e_fe5c804c","updated":"2016-08-11 17:57:30.000000000","message":"+1\n\nI don\u0027t see any other instances of six.iteritems in the Hitachi drivers.","commit_id":"a93a88c5802ed1511b7cc8f7b385742556427907"},{"author":{"_account_id":17097,"name":"Tiago Pasqualini da Silva","email":"t.pasqualini@luizalabs.com","username":"tiago.pasqualini"},"change_message_id":"83bb42f3c34e3b18341fbc265e8b5f2777d7ebe3","unresolved":false,"context_lines":[{"line_number":220,"context_line":"    def _get_complement(self, rules_a, rules_b):"},{"line_number":221,"context_line":"        \"\"\"Returns the rules of list A that are not on list B\"\"\""},{"line_number":222,"context_line":"        complement \u003d []"},{"line_number":223,"context_line":"        for rule, is_rw in six.iteritems(rules_a):"},{"line_number":224,"context_line":"            if rule not in rules_b or rules_b[rule] !\u003d is_rw:"},{"line_number":225,"context_line":"                complement.append((rule, is_rw))"},{"line_number":226,"context_line":""}],"source_content_type":"text/x-python","patch_set":23,"id":"9ad45d7e_c91e160b","line":223,"range":{"start_line":223,"start_character":27,"end_line":223,"end_character":49},"in_reply_to":"9ad45d7e_fe5c804c","updated":"2016-08-11 19:17:47.000000000","message":"Done","commit_id":"a93a88c5802ed1511b7cc8f7b385742556427907"},{"author":{"_account_id":14567,"name":"Rodrigo Barbieri","email":"rodrigo.barbieri2010@gmail.com","username":"ganso"},"change_message_id":"c1bbfea4e14abe4492fe18e186dd20c5ac4497be","unresolved":false,"context_lines":[{"line_number":113,"context_line":"        except exception.HSPBackendException:"},{"line_number":114,"context_line":"            with excutils.save_and_reraise_exception():"},{"line_number":115,"context_line":"                self.hsp.delete_file_system(filesystem_id)"},{"line_number":116,"context_line":"                msg \u003d _LE(\"Could not create share on HSP.\")"},{"line_number":117,"context_line":"                LOG.exception(msg)"},{"line_number":118,"context_line":""},{"line_number":119,"context_line":"        uri \u003d self.hsp_host + \u0027:/\u0027 + share[\u0027id\u0027]"}],"source_content_type":"text/x-python","patch_set":25,"id":"9ad45d7e_b06b3084","line":116,"range":{"start_line":116,"start_character":28,"end_line":116,"end_character":55},"updated":"2016-08-12 00:45:51.000000000","message":"which share id?","commit_id":"be17f7f4b3ec3312b9631db369e60c612c89fbcf"},{"author":{"_account_id":17097,"name":"Tiago Pasqualini da Silva","email":"t.pasqualini@luizalabs.com","username":"tiago.pasqualini"},"change_message_id":"54a693dcd2d6f3b7857d0f764865a9dbb97ad4d4","unresolved":false,"context_lines":[{"line_number":113,"context_line":"        except exception.HSPBackendException:"},{"line_number":114,"context_line":"            with excutils.save_and_reraise_exception():"},{"line_number":115,"context_line":"                self.hsp.delete_file_system(filesystem_id)"},{"line_number":116,"context_line":"                msg \u003d _LE(\"Could not create share on HSP.\")"},{"line_number":117,"context_line":"                LOG.exception(msg)"},{"line_number":118,"context_line":""},{"line_number":119,"context_line":"        uri \u003d self.hsp_host + \u0027:/\u0027 + share[\u0027id\u0027]"}],"source_content_type":"text/x-python","patch_set":25,"id":"9ad45d7e_cf9b6c71","line":116,"range":{"start_line":116,"start_character":28,"end_line":116,"end_character":55},"in_reply_to":"9ad45d7e_b06b3084","updated":"2016-08-12 19:55:11.000000000","message":"Done","commit_id":"be17f7f4b3ec3312b9631db369e60c612c89fbcf"}],"manila/share/drivers/hitachi/hsp/rest.py":[{"author":{"_account_id":11865,"name":"Clinton Knight","email":"cknight@netapp.com","username":"cknight"},"change_message_id":"a340074b00b9d3dccbd86d807b74dbfe0a2786cd","unresolved":false,"context_lines":[{"line_number":176,"context_line":""},{"line_number":177,"context_line":"        try:"},{"line_number":178,"context_line":"            rules \u003d rules[\u0027list\u0027]"},{"line_number":179,"context_line":"        except TypeError:"},{"line_number":180,"context_line":"            rules \u003d []"},{"line_number":181,"context_line":"        return rules"},{"line_number":182,"context_line":""}],"source_content_type":"text/x-python","patch_set":20,"id":"9ad45d7e_f2018c39","line":179,"range":{"start_line":179,"start_character":15,"end_line":179,"end_character":24},"updated":"2016-08-10 15:36:17.000000000","message":"KeyError\n\nor better yet, replace 5 lines with 1:\n\n    return rules.get(\u0027list\u0027, [])","commit_id":"c6e3e50391610c8cbe68b558f512bdecd5db9e47"},{"author":{"_account_id":17097,"name":"Tiago Pasqualini da Silva","email":"t.pasqualini@luizalabs.com","username":"tiago.pasqualini"},"change_message_id":"0c64347b1314f74fc09cabfe0679be49ea76e53e","unresolved":false,"context_lines":[{"line_number":176,"context_line":""},{"line_number":177,"context_line":"        try:"},{"line_number":178,"context_line":"            rules \u003d rules[\u0027list\u0027]"},{"line_number":179,"context_line":"        except TypeError:"},{"line_number":180,"context_line":"            rules \u003d []"},{"line_number":181,"context_line":"        return rules"},{"line_number":182,"context_line":""}],"source_content_type":"text/x-python","patch_set":20,"id":"9ad45d7e_a3cd08b9","line":179,"range":{"start_line":179,"start_character":15,"end_line":179,"end_character":24},"in_reply_to":"9ad45d7e_f2018c39","updated":"2016-08-10 15:50:46.000000000","message":"Same as below, rules can be None.","commit_id":"c6e3e50391610c8cbe68b558f512bdecd5db9e47"},{"author":{"_account_id":11865,"name":"Clinton Knight","email":"cknight@netapp.com","username":"cknight"},"change_message_id":"a340074b00b9d3dccbd86d807b74dbfe0a2786cd","unresolved":false,"context_lines":[{"line_number":186,"context_line":""},{"line_number":187,"context_line":"        try:"},{"line_number":188,"context_line":"            return clusters[\u0027list\u0027][0]"},{"line_number":189,"context_line":"        except TypeError:"},{"line_number":190,"context_line":"            msg \u003d _(\"No cluster was found on HSP.\")"},{"line_number":191,"context_line":"            raise exception.HSPBackendException(msg\u003dmsg)"},{"line_number":192,"context_line":""}],"source_content_type":"text/x-python","patch_set":20,"id":"9ad45d7e_b2eb9477","line":189,"range":{"start_line":189,"start_character":15,"end_line":189,"end_character":24},"updated":"2016-08-10 15:36:17.000000000","message":"You acknowledged this should be a KeyError, but it wasn\u0027t changed.  If it were me, I would catch both KeyError and IndexError in case the list is either missing or empty.  There are other places in this file where the data returned from the backend is indexed without any error checking; maybe that\u0027s OK, but getting a KeyError in a log isn\u0027t as helpful as a specific exception explaining what was wrong.","commit_id":"c6e3e50391610c8cbe68b558f512bdecd5db9e47"},{"author":{"_account_id":11865,"name":"Clinton Knight","email":"cknight@netapp.com","username":"cknight"},"change_message_id":"da90f97dbdf2ac3837b0c10e5fa3d55159814778","unresolved":false,"context_lines":[{"line_number":186,"context_line":""},{"line_number":187,"context_line":"        try:"},{"line_number":188,"context_line":"            return clusters[\u0027list\u0027][0]"},{"line_number":189,"context_line":"        except TypeError:"},{"line_number":190,"context_line":"            msg \u003d _(\"No cluster was found on HSP.\")"},{"line_number":191,"context_line":"            raise exception.HSPBackendException(msg\u003dmsg)"},{"line_number":192,"context_line":""}],"source_content_type":"text/x-python","patch_set":20,"id":"9ad45d7e_81a8b78e","line":189,"range":{"start_line":189,"start_character":15,"end_line":189,"end_character":24},"in_reply_to":"9ad45d7e_438fec74","updated":"2016-08-10 18:20:55.000000000","message":"OK, so theoretically the return value could be None, or {}, or {\u0027list\u0027: []}, each of which would raise a different exception (TypeError, KeyError, IndexError).  It seems that unless you really trust your backend, you should catch all 3, i.e. \"except (TypeError, LookupError)\".","commit_id":"c6e3e50391610c8cbe68b558f512bdecd5db9e47"},{"author":{"_account_id":17097,"name":"Tiago Pasqualini da Silva","email":"t.pasqualini@luizalabs.com","username":"tiago.pasqualini"},"change_message_id":"2b1a05a9e8152af84a45325833be854e266aa76d","unresolved":false,"context_lines":[{"line_number":186,"context_line":""},{"line_number":187,"context_line":"        try:"},{"line_number":188,"context_line":"            return clusters[\u0027list\u0027][0]"},{"line_number":189,"context_line":"        except TypeError:"},{"line_number":190,"context_line":"            msg \u003d _(\"No cluster was found on HSP.\")"},{"line_number":191,"context_line":"            raise exception.HSPBackendException(msg\u003dmsg)"},{"line_number":192,"context_line":""}],"source_content_type":"text/x-python","patch_set":20,"id":"9ad45d7e_0b94b840","line":189,"range":{"start_line":189,"start_character":15,"end_line":189,"end_character":24},"in_reply_to":"9ad45d7e_81a8b78e","updated":"2016-08-11 12:49:02.000000000","message":"Done","commit_id":"c6e3e50391610c8cbe68b558f512bdecd5db9e47"},{"author":{"_account_id":17097,"name":"Tiago Pasqualini da Silva","email":"t.pasqualini@luizalabs.com","username":"tiago.pasqualini"},"change_message_id":"0c64347b1314f74fc09cabfe0679be49ea76e53e","unresolved":false,"context_lines":[{"line_number":186,"context_line":""},{"line_number":187,"context_line":"        try:"},{"line_number":188,"context_line":"            return clusters[\u0027list\u0027][0]"},{"line_number":189,"context_line":"        except TypeError:"},{"line_number":190,"context_line":"            msg \u003d _(\"No cluster was found on HSP.\")"},{"line_number":191,"context_line":"            raise exception.HSPBackendException(msg\u003dmsg)"},{"line_number":192,"context_line":""}],"source_content_type":"text/x-python","patch_set":20,"id":"9ad45d7e_438fec74","line":189,"range":{"start_line":189,"start_character":15,"end_line":189,"end_character":24},"in_reply_to":"9ad45d7e_b2eb9477","updated":"2016-08-10 15:50:46.000000000","message":"Yeah, actually I should have updated the comment, but I forgot. It should be TypeError because the _send_get method might return None instead of an empty dictionary.","commit_id":"c6e3e50391610c8cbe68b558f512bdecd5db9e47"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"af1a0be775e6cf127de3b7d1c127a5a778fce58b","unresolved":false,"context_lines":[{"line_number":21,"context_line":"from manila import utils"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"requests.packages.urllib3.disable_warnings()"},{"line_number":25,"context_line":""},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"class HSPRestBackend(object):"}],"source_content_type":"text/x-python","patch_set":23,"id":"9ad45d7e_011f7908","line":24,"range":{"start_line":24,"start_character":0,"end_line":24,"end_character":44},"updated":"2016-08-11 13:24:37.000000000","message":"suggest adding a comment line above.. \n\n# Suppress the Insecure request warnings\n\nCinder actually does this in the manager.. i think that\u0027s a sane approach; \n\nhttps://github.com/openstack/cinder/blob/b91cb177/cinder/volume/manager.py#L121\n\nWe can do that if we agree our REST API enabled backends need it..","commit_id":"a93a88c5802ed1511b7cc8f7b385742556427907"},{"author":{"_account_id":17097,"name":"Tiago Pasqualini da Silva","email":"t.pasqualini@luizalabs.com","username":"tiago.pasqualini"},"change_message_id":"83bb42f3c34e3b18341fbc265e8b5f2777d7ebe3","unresolved":false,"context_lines":[{"line_number":21,"context_line":"from manila import utils"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"requests.packages.urllib3.disable_warnings()"},{"line_number":25,"context_line":""},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"class HSPRestBackend(object):"}],"source_content_type":"text/x-python","patch_set":23,"id":"9ad45d7e_e9a67aac","line":24,"range":{"start_line":24,"start_character":0,"end_line":24,"end_character":44},"in_reply_to":"9ad45d7e_011f7908","updated":"2016-08-11 19:17:47.000000000","message":"Done","commit_id":"a93a88c5802ed1511b7cc8f7b385742556427907"},{"author":{"_account_id":11865,"name":"Clinton Knight","email":"cknight@netapp.com","username":"cknight"},"change_message_id":"fbdba2d46346f3c2fbc7c21708353347e1491212","unresolved":false,"context_lines":[{"line_number":21,"context_line":"from manila import utils"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"requests.packages.urllib3.disable_warnings()"},{"line_number":25,"context_line":""},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"class HSPRestBackend(object):"}],"source_content_type":"text/x-python","patch_set":23,"id":"9ad45d7e_e4fb4177","line":24,"range":{"start_line":24,"start_character":0,"end_line":24,"end_character":44},"in_reply_to":"9ad45d7e_011f7908","updated":"2016-08-11 17:57:30.000000000","message":"I would agree our REST API backends need it.  Those warnings are annoying and useless.","commit_id":"a93a88c5802ed1511b7cc8f7b385742556427907"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"af1a0be775e6cf127de3b7d1c127a5a778fce58b","unresolved":false,"context_lines":[{"line_number":89,"context_line":""},{"line_number":90,"context_line":"        filesystems \u003d self._send_get(url)"},{"line_number":91,"context_line":""},{"line_number":92,"context_line":"        if filesystems is not None:"},{"line_number":93,"context_line":"            return filesystems[\u0027list\u0027][0]"},{"line_number":94,"context_line":"        else:"},{"line_number":95,"context_line":"            msg \u003d _(\"Filesystem does not exist or is not available.\")"},{"line_number":96,"context_line":"            raise exception.HSPItemNotFoundException(msg\u003dmsg)"},{"line_number":97,"context_line":""},{"line_number":98,"context_line":"    def delete_file_system(self, filesystem_id):"}],"source_content_type":"text/x-python","patch_set":23,"id":"9ad45d7e_6181158f","line":95,"range":{"start_line":92,"start_character":0,"end_line":95,"end_character":69},"updated":"2016-08-11 13:24:37.000000000","message":"try:\n     return filesystems[\u0027list\u0027][0]\nexcept TypeError, KeyError:\n     msg \u003d _(\"Filesystem does not exist or is not available.\")\n     raise exception.HSPItemNotFoundException(msg\u003dmsg)","commit_id":"a93a88c5802ed1511b7cc8f7b385742556427907"},{"author":{"_account_id":11865,"name":"Clinton Knight","email":"cknight@netapp.com","username":"cknight"},"change_message_id":"fbdba2d46346f3c2fbc7c21708353347e1491212","unresolved":false,"context_lines":[{"line_number":89,"context_line":""},{"line_number":90,"context_line":"        filesystems \u003d self._send_get(url)"},{"line_number":91,"context_line":""},{"line_number":92,"context_line":"        if filesystems is not None:"},{"line_number":93,"context_line":"            return filesystems[\u0027list\u0027][0]"},{"line_number":94,"context_line":"        else:"},{"line_number":95,"context_line":"            msg \u003d _(\"Filesystem does not exist or is not available.\")"},{"line_number":96,"context_line":"            raise exception.HSPItemNotFoundException(msg\u003dmsg)"},{"line_number":97,"context_line":""},{"line_number":98,"context_line":"    def delete_file_system(self, filesystem_id):"}],"source_content_type":"text/x-python","patch_set":23,"id":"9ad45d7e_24e559a7","line":95,"range":{"start_line":92,"start_character":0,"end_line":95,"end_character":69},"in_reply_to":"9ad45d7e_6181158f","updated":"2016-08-11 17:57:30.000000000","message":"+1  (You have used this pattern in some places, but not others).\n\nAnd please use (TypeError, KeyError, IndexError) everywhere appropriate.  For brevity and uniformity, you could use (TypeError, LookupError) instead.","commit_id":"a93a88c5802ed1511b7cc8f7b385742556427907"},{"author":{"_account_id":17097,"name":"Tiago Pasqualini da Silva","email":"t.pasqualini@luizalabs.com","username":"tiago.pasqualini"},"change_message_id":"83bb42f3c34e3b18341fbc265e8b5f2777d7ebe3","unresolved":false,"context_lines":[{"line_number":89,"context_line":""},{"line_number":90,"context_line":"        filesystems \u003d self._send_get(url)"},{"line_number":91,"context_line":""},{"line_number":92,"context_line":"        if filesystems is not None:"},{"line_number":93,"context_line":"            return filesystems[\u0027list\u0027][0]"},{"line_number":94,"context_line":"        else:"},{"line_number":95,"context_line":"            msg \u003d _(\"Filesystem does not exist or is not available.\")"},{"line_number":96,"context_line":"            raise exception.HSPItemNotFoundException(msg\u003dmsg)"},{"line_number":97,"context_line":""},{"line_number":98,"context_line":"    def delete_file_system(self, filesystem_id):"}],"source_content_type":"text/x-python","patch_set":23,"id":"9ad45d7e_69e0cacd","line":95,"range":{"start_line":92,"start_character":0,"end_line":95,"end_character":69},"in_reply_to":"9ad45d7e_6181158f","updated":"2016-08-11 19:17:47.000000000","message":"Done","commit_id":"a93a88c5802ed1511b7cc8f7b385742556427907"}],"manila/share/drivers/hitachi/rest.py":[{"author":{"_account_id":15100,"name":"zhongjun","email":"jun.zhongjun2@gmail.com","username":"zhongjun2"},"change_message_id":"20b3efa0a0bfec898573d7bdcc4bd1491eae93dd","unresolved":false,"context_lines":[{"line_number":26,"context_line":"        self.host \u003d hsp_host"},{"line_number":27,"context_line":"        self.username \u003d hsp_username"},{"line_number":28,"context_line":"        self.password \u003d hsp_password"},{"line_number":29,"context_line":"        self.job_timeout \u003d job_timeout"},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"    def _get_authorization_header(self):"},{"line_number":32,"context_line":"        return \u0027Basic \u0027 + base64.b64encode(self.username + \":\" + self.password"}],"source_content_type":"text/x-python","patch_set":1,"id":"7aa08908_b77b55bd","line":29,"range":{"start_line":29,"start_character":8,"end_line":29,"end_character":38},"updated":"2016-06-14 02:23:15.000000000","message":"This parameter is not used.","commit_id":"4550281f865d0a856959b81274ca0f16bf94d470"},{"author":{"_account_id":17097,"name":"Tiago Pasqualini da Silva","email":"t.pasqualini@luizalabs.com","username":"tiago.pasqualini"},"change_message_id":"6eae1a42ab9a0c21ecb1c9f8856ca393384c8397","unresolved":false,"context_lines":[{"line_number":26,"context_line":"        self.host \u003d hsp_host"},{"line_number":27,"context_line":"        self.username \u003d hsp_username"},{"line_number":28,"context_line":"        self.password \u003d hsp_password"},{"line_number":29,"context_line":"        self.job_timeout \u003d job_timeout"},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"    def _get_authorization_header(self):"},{"line_number":32,"context_line":"        return \u0027Basic \u0027 + base64.b64encode(self.username + \":\" + self.password"}],"source_content_type":"text/x-python","patch_set":1,"id":"5a9d85d2_10378ae4","line":29,"range":{"start_line":29,"start_character":8,"end_line":29,"end_character":38},"in_reply_to":"7aa08908_b77b55bd","updated":"2016-06-18 19:36:14.000000000","message":"It will be :)","commit_id":"4550281f865d0a856959b81274ca0f16bf94d470"},{"author":{"_account_id":14567,"name":"Rodrigo Barbieri","email":"rodrigo.barbieri2010@gmail.com","username":"ganso"},"change_message_id":"59534128417b1a2b383c87997680d3fde9cc0225","unresolved":false,"context_lines":[{"line_number":29,"context_line":"        self.job_timeout \u003d job_timeout"},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"    def _get_authorization_header(self):"},{"line_number":32,"context_line":"        return \u0027Basic \u0027 + base64.b64encode(self.username + \":\" + self.password"},{"line_number":33,"context_line":"                                           ).encode(\"utf-8\").decode(\"ascii\")"},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"    def _send_post(self, url, payload\u003dNone):"}],"source_content_type":"text/x-python","patch_set":1,"id":"7aa08908_bf4a1c81","line":32,"range":{"start_line":32,"start_character":43,"end_line":32,"end_character":78},"updated":"2016-06-13 18:31:12.000000000","message":"\u0027:\u0027.join(())","commit_id":"4550281f865d0a856959b81274ca0f16bf94d470"},{"author":{"_account_id":17097,"name":"Tiago Pasqualini da Silva","email":"t.pasqualini@luizalabs.com","username":"tiago.pasqualini"},"change_message_id":"6eae1a42ab9a0c21ecb1c9f8856ca393384c8397","unresolved":false,"context_lines":[{"line_number":29,"context_line":"        self.job_timeout \u003d job_timeout"},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"    def _get_authorization_header(self):"},{"line_number":32,"context_line":"        return \u0027Basic \u0027 + base64.b64encode(self.username + \":\" + self.password"},{"line_number":33,"context_line":"                                           ).encode(\"utf-8\").decode(\"ascii\")"},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"    def _send_post(self, url, payload\u003dNone):"}],"source_content_type":"text/x-python","patch_set":1,"id":"5a9d85d2_701d2e66","line":32,"range":{"start_line":32,"start_character":43,"end_line":32,"end_character":78},"in_reply_to":"7aa08908_bf4a1c81","updated":"2016-06-18 19:36:14.000000000","message":"This was removed...","commit_id":"4550281f865d0a856959b81274ca0f16bf94d470"},{"author":{"_account_id":13998,"name":"Daniel Gonzalez Nothnagel","email":"daniel.gonzalez.nothnagel@sap.com","username":"dgonzalez"},"change_message_id":"041a5bb8b72e793defa0e2f599cefb9380504acc","unresolved":false,"context_lines":[{"line_number":32,"context_line":"        return \u0027Basic \u0027 + base64.b64encode(self.username + \":\" + self.password"},{"line_number":33,"context_line":"                                           ).encode(\"utf-8\").decode(\"ascii\")"},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"    def _send_post(self, url, payload\u003dNone):"},{"line_number":36,"context_line":"        headers \u003d {\"Authorization\": self._get_authorization_header()}"},{"line_number":37,"context_line":"        resp \u003d requests.post(url, headers\u003dheaders, data\u003dpayload, verify\u003dFalse)"},{"line_number":38,"context_line":"        return resp.status_code, resp.headers, resp.content"},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"    def _send_get(self, url, payload\u003dNone):"},{"line_number":41,"context_line":"        headers \u003d {\"Authorization\": self._get_authorization_header()}"},{"line_number":42,"context_line":"        resp \u003d requests.get(url, headers\u003dheaders, data\u003dpayload, verify\u003dFalse)"},{"line_number":43,"context_line":"        return resp.status_code, resp.content"},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"    def _send_delete(self, url, payload\u003dNone):"},{"line_number":46,"context_line":"        headers \u003d {\"Authorization\": self._get_authorization_header()}"},{"line_number":47,"context_line":"        resp \u003d requests.delete(url, headers\u003dheaders, data\u003dpayload,"},{"line_number":48,"context_line":"                               verify\u003dFalse)"},{"line_number":49,"context_line":"        return resp.status_code, resp.headers, resp.content"},{"line_number":50,"context_line":"    "},{"line_number":51,"context_line":"    def add_file_system(self, name, quota):"},{"line_number":52,"context_line":"        url \u003d \"https://%s/hspapi/file-systems/\" % self.host"}],"source_content_type":"text/x-python","patch_set":1,"id":"7aa08908_3cb25307","line":49,"range":{"start_line":35,"start_character":4,"end_line":49,"end_character":59},"updated":"2016-06-15 12:33:10.000000000","message":"These three methods are all basically the same.\n\nMaybe you could create a common utility function which takes the HTTP method function, url and payload as parameter and gets called from these three methods with the corresponding HTTP method function.\n\nThis would reduce code duplication.","commit_id":"4550281f865d0a856959b81274ca0f16bf94d470"},{"author":{"_account_id":17097,"name":"Tiago Pasqualini da Silva","email":"t.pasqualini@luizalabs.com","username":"tiago.pasqualini"},"change_message_id":"6eae1a42ab9a0c21ecb1c9f8856ca393384c8397","unresolved":false,"context_lines":[{"line_number":32,"context_line":"        return \u0027Basic \u0027 + base64.b64encode(self.username + \":\" + self.password"},{"line_number":33,"context_line":"                                           ).encode(\"utf-8\").decode(\"ascii\")"},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"    def _send_post(self, url, payload\u003dNone):"},{"line_number":36,"context_line":"        headers \u003d {\"Authorization\": self._get_authorization_header()}"},{"line_number":37,"context_line":"        resp \u003d requests.post(url, headers\u003dheaders, data\u003dpayload, verify\u003dFalse)"},{"line_number":38,"context_line":"        return resp.status_code, resp.headers, resp.content"},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"    def _send_get(self, url, payload\u003dNone):"},{"line_number":41,"context_line":"        headers \u003d {\"Authorization\": self._get_authorization_header()}"},{"line_number":42,"context_line":"        resp \u003d requests.get(url, headers\u003dheaders, data\u003dpayload, verify\u003dFalse)"},{"line_number":43,"context_line":"        return resp.status_code, resp.content"},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"    def _send_delete(self, url, payload\u003dNone):"},{"line_number":46,"context_line":"        headers \u003d {\"Authorization\": self._get_authorization_header()}"},{"line_number":47,"context_line":"        resp \u003d requests.delete(url, headers\u003dheaders, data\u003dpayload,"},{"line_number":48,"context_line":"                               verify\u003dFalse)"},{"line_number":49,"context_line":"        return resp.status_code, resp.headers, resp.content"},{"line_number":50,"context_line":"    "},{"line_number":51,"context_line":"    def add_file_system(self, name, quota):"},{"line_number":52,"context_line":"        url \u003d \"https://%s/hspapi/file-systems/\" % self.host"}],"source_content_type":"text/x-python","patch_set":1,"id":"5a9d85d2_501ab26f","line":49,"range":{"start_line":35,"start_character":4,"end_line":49,"end_character":59},"in_reply_to":"7aa08908_3cb25307","updated":"2016-06-18 19:36:14.000000000","message":"This was changed...","commit_id":"4550281f865d0a856959b81274ca0f16bf94d470"},{"author":{"_account_id":14567,"name":"Rodrigo Barbieri","email":"rodrigo.barbieri2010@gmail.com","username":"ganso"},"change_message_id":"59534128417b1a2b383c87997680d3fde9cc0225","unresolved":false,"context_lines":[{"line_number":47,"context_line":"        resp \u003d requests.delete(url, headers\u003dheaders, data\u003dpayload,"},{"line_number":48,"context_line":"                               verify\u003dFalse)"},{"line_number":49,"context_line":"        return resp.status_code, resp.headers, resp.content"},{"line_number":50,"context_line":"    "},{"line_number":51,"context_line":"    def add_file_system(self, name, quota):"},{"line_number":52,"context_line":"        url \u003d \"https://%s/hspapi/file-systems/\" % self.host"},{"line_number":53,"context_line":"        payload \u003d {"}],"source_content_type":"text/x-python","patch_set":1,"id":"7aa08908_7f90b4ed","line":50,"range":{"start_line":50,"start_character":0,"end_line":50,"end_character":4},"updated":"2016-06-13 18:31:12.000000000","message":"remove this space","commit_id":"4550281f865d0a856959b81274ca0f16bf94d470"},{"author":{"_account_id":15100,"name":"zhongjun","email":"jun.zhongjun2@gmail.com","username":"zhongjun2"},"change_message_id":"20b3efa0a0bfec898573d7bdcc4bd1491eae93dd","unresolved":false,"context_lines":[{"line_number":51,"context_line":"    def add_file_system(self, name, quota):"},{"line_number":52,"context_line":"        url \u003d \"https://%s/hspapi/file-systems/\" % self.host"},{"line_number":53,"context_line":"        payload \u003d {"},{"line_number":54,"context_line":"            \u0027quota\u0027: quota * 1024 * 1024 * 1024,"},{"line_number":55,"context_line":"            \u0027auto-access\u0027: False,"},{"line_number":56,"context_line":"            \u0027enabled\u0027: True,"},{"line_number":57,"context_line":"            \u0027description\u0027: \u0027\u0027,"}],"source_content_type":"text/x-python","patch_set":1,"id":"7aa08908_17c86921","line":54,"range":{"start_line":54,"start_character":29,"end_line":54,"end_character":47},"updated":"2016-06-14 02:23:15.000000000","message":"Could use units.Gi(from oslo_utils import units) instead of 1024 * 1024 * 1024.","commit_id":"4550281f865d0a856959b81274ca0f16bf94d470"},{"author":{"_account_id":17097,"name":"Tiago Pasqualini da Silva","email":"t.pasqualini@luizalabs.com","username":"tiago.pasqualini"},"change_message_id":"6eae1a42ab9a0c21ecb1c9f8856ca393384c8397","unresolved":false,"context_lines":[{"line_number":51,"context_line":"    def add_file_system(self, name, quota):"},{"line_number":52,"context_line":"        url \u003d \"https://%s/hspapi/file-systems/\" % self.host"},{"line_number":53,"context_line":"        payload \u003d {"},{"line_number":54,"context_line":"            \u0027quota\u0027: quota * 1024 * 1024 * 1024,"},{"line_number":55,"context_line":"            \u0027auto-access\u0027: False,"},{"line_number":56,"context_line":"            \u0027enabled\u0027: True,"},{"line_number":57,"context_line":"            \u0027description\u0027: \u0027\u0027,"}],"source_content_type":"text/x-python","patch_set":1,"id":"5a9d85d2_70340ede","line":54,"range":{"start_line":54,"start_character":29,"end_line":54,"end_character":47},"in_reply_to":"7aa08908_17c86921","updated":"2016-06-18 19:36:14.000000000","message":"Done","commit_id":"4550281f865d0a856959b81274ca0f16bf94d470"},{"author":{"_account_id":14567,"name":"Rodrigo Barbieri","email":"rodrigo.barbieri2010@gmail.com","username":"ganso"},"change_message_id":"59534128417b1a2b383c87997680d3fde9cc0225","unresolved":false,"context_lines":[{"line_number":86,"context_line":"                msg\u003djson.loads(resp_data)[\u0027messages\u0027][0][\u0027message\u0027])"},{"line_number":87,"context_line":""},{"line_number":88,"context_line":"    def delete_file_system(self, filesystem_id):"},{"line_number":89,"context_line":"        url \u003d \"https://%s/hspapi/file-systems/%s\" % (self. host, filesystem_id)"},{"line_number":90,"context_line":"        code, resp_headers, resp_data \u003d self._send_delete(url)"},{"line_number":91,"context_line":""},{"line_number":92,"context_line":"        if code \u003d\u003d 202:"}],"source_content_type":"text/x-python","patch_set":1,"id":"7aa08908_df3c48e3","line":89,"range":{"start_line":89,"start_character":58,"end_line":89,"end_character":59},"updated":"2016-06-13 18:31:12.000000000","message":"remove this space","commit_id":"4550281f865d0a856959b81274ca0f16bf94d470"},{"author":{"_account_id":17097,"name":"Tiago Pasqualini da Silva","email":"t.pasqualini@luizalabs.com","username":"tiago.pasqualini"},"change_message_id":"6eae1a42ab9a0c21ecb1c9f8856ca393384c8397","unresolved":false,"context_lines":[{"line_number":86,"context_line":"                msg\u003djson.loads(resp_data)[\u0027messages\u0027][0][\u0027message\u0027])"},{"line_number":87,"context_line":""},{"line_number":88,"context_line":"    def delete_file_system(self, filesystem_id):"},{"line_number":89,"context_line":"        url \u003d \"https://%s/hspapi/file-systems/%s\" % (self. host, filesystem_id)"},{"line_number":90,"context_line":"        code, resp_headers, resp_data \u003d self._send_delete(url)"},{"line_number":91,"context_line":""},{"line_number":92,"context_line":"        if code \u003d\u003d 202:"}],"source_content_type":"text/x-python","patch_set":1,"id":"5a9d85d2_f01f5e59","line":89,"range":{"start_line":89,"start_character":58,"end_line":89,"end_character":59},"in_reply_to":"7aa08908_df3c48e3","updated":"2016-06-18 19:36:14.000000000","message":"Done","commit_id":"4550281f865d0a856959b81274ca0f16bf94d470"},{"author":{"_account_id":14567,"name":"Rodrigo Barbieri","email":"rodrigo.barbieri2010@gmail.com","username":"ganso"},"change_message_id":"59534128417b1a2b383c87997680d3fde9cc0225","unresolved":false,"context_lines":[{"line_number":192,"context_line":"        else:"},{"line_number":193,"context_line":"            raise exception.HSPBackendException("},{"line_number":194,"context_line":"                msg\u003djson.loads(resp_data)[\u0027messages\u0027][0][\u0027message\u0027])"},{"line_number":195,"context_line":"    "},{"line_number":196,"context_line":"    def _wait_job_status(self, job_url, target_status):"},{"line_number":197,"context_line":"        status \u003d None"},{"line_number":198,"context_line":"        retries \u003d 0"}],"source_content_type":"text/x-python","patch_set":1,"id":"7aa08908_5f005802","line":195,"range":{"start_line":195,"start_character":0,"end_line":195,"end_character":4},"updated":"2016-06-13 18:31:12.000000000","message":"remove this space","commit_id":"4550281f865d0a856959b81274ca0f16bf94d470"},{"author":{"_account_id":19144,"name":"José Mello","email":"jose.eduardo.jr@gmail.com","username":"jose-eduardo-jr"},"change_message_id":"195fe21cf9cc4e58094573ac29cbb2919671b6e4","unresolved":false,"context_lines":[{"line_number":198,"context_line":"        retries \u003d 0"},{"line_number":199,"context_line":""},{"line_number":200,"context_line":"        # TODO(tpsilva): add timeout logic"},{"line_number":201,"context_line":"        while status !\u003d target_status:"},{"line_number":202,"context_line":"            resp_code, resp_data \u003d self._send_get(job_url)"},{"line_number":203,"context_line":"            resp_json \u003d json.loads(resp_data)"},{"line_number":204,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"7aa08908_6e5c8019","line":201,"range":{"start_line":201,"start_character":8,"end_line":201,"end_character":37},"updated":"2016-06-13 20:01:46.000000000","message":"infinite loop ?","commit_id":"4550281f865d0a856959b81274ca0f16bf94d470"},{"author":{"_account_id":17097,"name":"Tiago Pasqualini da Silva","email":"t.pasqualini@luizalabs.com","username":"tiago.pasqualini"},"change_message_id":"6eae1a42ab9a0c21ecb1c9f8856ca393384c8397","unresolved":false,"context_lines":[{"line_number":198,"context_line":"        retries \u003d 0"},{"line_number":199,"context_line":""},{"line_number":200,"context_line":"        # TODO(tpsilva): add timeout logic"},{"line_number":201,"context_line":"        while status !\u003d target_status:"},{"line_number":202,"context_line":"            resp_code, resp_data \u003d self._send_get(job_url)"},{"line_number":203,"context_line":"            resp_json \u003d json.loads(resp_data)"},{"line_number":204,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"5a9d85d2_d024e2b0","line":201,"range":{"start_line":201,"start_character":8,"end_line":201,"end_character":37},"in_reply_to":"7aa08908_573831ee","updated":"2016-06-18 19:36:14.000000000","message":"Yes, I added in the next patch.","commit_id":"4550281f865d0a856959b81274ca0f16bf94d470"},{"author":{"_account_id":15100,"name":"zhongjun","email":"jun.zhongjun2@gmail.com","username":"zhongjun2"},"change_message_id":"20b3efa0a0bfec898573d7bdcc4bd1491eae93dd","unresolved":false,"context_lines":[{"line_number":198,"context_line":"        retries \u003d 0"},{"line_number":199,"context_line":""},{"line_number":200,"context_line":"        # TODO(tpsilva): add timeout logic"},{"line_number":201,"context_line":"        while status !\u003d target_status:"},{"line_number":202,"context_line":"            resp_code, resp_data \u003d self._send_get(job_url)"},{"line_number":203,"context_line":"            resp_json \u003d json.loads(resp_data)"},{"line_number":204,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"7aa08908_573831ee","line":201,"range":{"start_line":201,"start_character":8,"end_line":201,"end_character":37},"in_reply_to":"7aa08908_6e5c8019","updated":"2016-06-14 02:23:15.000000000","message":"+1 I saw you define the job_timeout, Does you means use the job_timeout in this logic later?","commit_id":"4550281f865d0a856959b81274ca0f16bf94d470"},{"author":{"_account_id":14567,"name":"Rodrigo Barbieri","email":"rodrigo.barbieri2010@gmail.com","username":"ganso"},"change_message_id":"1f746a9a2f42f98a3436c4684ead8d31cbc84700","unresolved":false,"context_lines":[{"line_number":48,"context_line":""},{"line_number":49,"context_line":"        if resp.status_code \u003d\u003d 200:"},{"line_number":50,"context_line":"            if resp.content \u003d\u003d \u0027null\u0027:"},{"line_number":51,"context_line":"                return None"},{"line_number":52,"context_line":"            else:"},{"line_number":53,"context_line":"                return resp.json()"},{"line_number":54,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":3,"id":"5a9d85d2_bde4743b","line":51,"range":{"start_line":51,"start_character":16,"end_line":51,"end_character":27},"updated":"2016-06-20 11:35:40.000000000","message":"nit: you could convert this to an empty list so when HSP API is fixed it returns the same result as the \"else\" clause below","commit_id":"bb2d7eae547d4a8bf65fe91970be288e76da4518"},{"author":{"_account_id":17097,"name":"Tiago Pasqualini da Silva","email":"t.pasqualini@luizalabs.com","username":"tiago.pasqualini"},"change_message_id":"2c95ec9773af514298bf181d826add28f245017c","unresolved":false,"context_lines":[{"line_number":48,"context_line":""},{"line_number":49,"context_line":"        if resp.status_code \u003d\u003d 200:"},{"line_number":50,"context_line":"            if resp.content \u003d\u003d \u0027null\u0027:"},{"line_number":51,"context_line":"                return None"},{"line_number":52,"context_line":"            else:"},{"line_number":53,"context_line":"                return resp.json()"},{"line_number":54,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":3,"id":"5a9d85d2_09e9061b","line":51,"range":{"start_line":51,"start_character":16,"end_line":51,"end_character":27},"in_reply_to":"5a9d85d2_bde4743b","updated":"2016-06-20 13:00:17.000000000","message":"Actually, the API has some metadata along with the list. I think it\u0027s better to wait and see how they will implement this.","commit_id":"bb2d7eae547d4a8bf65fe91970be288e76da4518"},{"author":{"_account_id":14567,"name":"Rodrigo Barbieri","email":"rodrigo.barbieri2010@gmail.com","username":"ganso"},"change_message_id":"1f746a9a2f42f98a3436c4684ead8d31cbc84700","unresolved":false,"context_lines":[{"line_number":91,"context_line":"        if filesystems is not None:"},{"line_number":92,"context_line":"            return filesystems[\u0027list\u0027][0]"},{"line_number":93,"context_line":"        else:"},{"line_number":94,"context_line":"            msg \u003d _(\"Filesystem does not exist or is not available\")"},{"line_number":95,"context_line":"            raise exception.HSPItemNotFoundException(msg\u003dmsg)"},{"line_number":96,"context_line":""},{"line_number":97,"context_line":"    def delete_file_system(self, filesystem_id):"}],"source_content_type":"text/x-python","patch_set":3,"id":"5a9d85d2_1d05c8c1","line":94,"range":{"start_line":94,"start_character":65,"end_line":94,"end_character":67},"updated":"2016-06-20 11:35:40.000000000","message":"period","commit_id":"bb2d7eae547d4a8bf65fe91970be288e76da4518"},{"author":{"_account_id":17097,"name":"Tiago Pasqualini da Silva","email":"t.pasqualini@luizalabs.com","username":"tiago.pasqualini"},"change_message_id":"2c95ec9773af514298bf181d826add28f245017c","unresolved":false,"context_lines":[{"line_number":91,"context_line":"        if filesystems is not None:"},{"line_number":92,"context_line":"            return filesystems[\u0027list\u0027][0]"},{"line_number":93,"context_line":"        else:"},{"line_number":94,"context_line":"            msg \u003d _(\"Filesystem does not exist or is not available\")"},{"line_number":95,"context_line":"            raise exception.HSPItemNotFoundException(msg\u003dmsg)"},{"line_number":96,"context_line":""},{"line_number":97,"context_line":"    def delete_file_system(self, filesystem_id):"}],"source_content_type":"text/x-python","patch_set":3,"id":"5a9d85d2_29f842e5","line":94,"range":{"start_line":94,"start_character":65,"end_line":94,"end_character":67},"in_reply_to":"5a9d85d2_1d05c8c1","updated":"2016-06-20 13:00:17.000000000","message":"Done","commit_id":"bb2d7eae547d4a8bf65fe91970be288e76da4518"},{"author":{"_account_id":14567,"name":"Rodrigo Barbieri","email":"rodrigo.barbieri2010@gmail.com","username":"ganso"},"change_message_id":"1f746a9a2f42f98a3436c4684ead8d31cbc84700","unresolved":false,"context_lines":[{"line_number":139,"context_line":"        if share is not None:"},{"line_number":140,"context_line":"            return share[\u0027list\u0027][0]"},{"line_number":141,"context_line":"        else:"},{"line_number":142,"context_line":"            msg \u003d _(\"Share does not exist or is not available\")"},{"line_number":143,"context_line":"            raise exception.HSPItemNotFoundException(msg\u003dmsg)"},{"line_number":144,"context_line":""},{"line_number":145,"context_line":"    def delete_share(self, share_id):"}],"source_content_type":"text/x-python","patch_set":3,"id":"5a9d85d2_7df68cd8","line":142,"range":{"start_line":142,"start_character":60,"end_line":142,"end_character":62},"updated":"2016-06-20 11:35:40.000000000","message":"period","commit_id":"bb2d7eae547d4a8bf65fe91970be288e76da4518"},{"author":{"_account_id":17097,"name":"Tiago Pasqualini da Silva","email":"t.pasqualini@luizalabs.com","username":"tiago.pasqualini"},"change_message_id":"2c95ec9773af514298bf181d826add28f245017c","unresolved":false,"context_lines":[{"line_number":139,"context_line":"        if share is not None:"},{"line_number":140,"context_line":"            return share[\u0027list\u0027][0]"},{"line_number":141,"context_line":"        else:"},{"line_number":142,"context_line":"            msg \u003d _(\"Share does not exist or is not available\")"},{"line_number":143,"context_line":"            raise exception.HSPItemNotFoundException(msg\u003dmsg)"},{"line_number":144,"context_line":""},{"line_number":145,"context_line":"    def delete_share(self, share_id):"}],"source_content_type":"text/x-python","patch_set":3,"id":"5a9d85d2_09d0e652","line":142,"range":{"start_line":142,"start_character":60,"end_line":142,"end_character":62},"in_reply_to":"5a9d85d2_7df68cd8","updated":"2016-06-20 13:00:17.000000000","message":"Done","commit_id":"bb2d7eae547d4a8bf65fe91970be288e76da4518"},{"author":{"_account_id":14567,"name":"Rodrigo Barbieri","email":"rodrigo.barbieri2010@gmail.com","username":"ganso"},"change_message_id":"1f746a9a2f42f98a3436c4684ead8d31cbc84700","unresolved":false,"context_lines":[{"line_number":150,"context_line":"        url \u003d \"https://%s/hspapi/shares/%s/\" % (self.host, share_id)"},{"line_number":151,"context_line":"        payload \u003d {"},{"line_number":152,"context_line":"            \"action\": \"add-access-rule\","},{"line_number":153,"context_line":"            \"name\": share_id + host_to,"},{"line_number":154,"context_line":"            \"host-specification\": host_to,"},{"line_number":155,"context_line":"            \"read-write\": read_write,"},{"line_number":156,"context_line":"        }"}],"source_content_type":"text/x-python","patch_set":3,"id":"5a9d85d2_5ddd9041","line":153,"range":{"start_line":153,"start_character":20,"end_line":153,"end_character":38},"updated":"2016-06-20 11:35:40.000000000","message":"maybe include a separator to improve readibility in the backend? If you do, please use join, like \u0027-\u0027.join(())","commit_id":"bb2d7eae547d4a8bf65fe91970be288e76da4518"},{"author":{"_account_id":17097,"name":"Tiago Pasqualini da Silva","email":"t.pasqualini@luizalabs.com","username":"tiago.pasqualini"},"change_message_id":"2c95ec9773af514298bf181d826add28f245017c","unresolved":false,"context_lines":[{"line_number":150,"context_line":"        url \u003d \"https://%s/hspapi/shares/%s/\" % (self.host, share_id)"},{"line_number":151,"context_line":"        payload \u003d {"},{"line_number":152,"context_line":"            \"action\": \"add-access-rule\","},{"line_number":153,"context_line":"            \"name\": share_id + host_to,"},{"line_number":154,"context_line":"            \"host-specification\": host_to,"},{"line_number":155,"context_line":"            \"read-write\": read_write,"},{"line_number":156,"context_line":"        }"}],"source_content_type":"text/x-python","patch_set":3,"id":"5a9d85d2_e9d47a48","line":153,"range":{"start_line":153,"start_character":20,"end_line":153,"end_character":38},"in_reply_to":"5a9d85d2_5ddd9041","updated":"2016-06-20 13:00:17.000000000","message":"I like the idea, but the share_id is already not quite readable","commit_id":"bb2d7eae547d4a8bf65fe91970be288e76da4518"},{"author":{"_account_id":14567,"name":"Rodrigo Barbieri","email":"rodrigo.barbieri2010@gmail.com","username":"ganso"},"change_message_id":"106488324a4c90bd653b4be8e2e61653b33ddb89","unresolved":false,"context_lines":[{"line_number":161,"context_line":"        url \u003d \"https://%s/hspapi/shares/%s/\" % (self.host, share_id)"},{"line_number":162,"context_line":"        payload \u003d {"},{"line_number":163,"context_line":"            \"action\": \"delete-access-rule\","},{"line_number":164,"context_line":"            \"name\": share_id + host_to,"},{"line_number":165,"context_line":"        }"},{"line_number":166,"context_line":""},{"line_number":167,"context_line":"        self._send_post(url, payload\u003djson.dumps(payload))"}],"source_content_type":"text/x-python","patch_set":3,"id":"5a9d85d2_bdf91450","line":164,"range":{"start_line":164,"start_character":20,"end_line":164,"end_character":38},"updated":"2016-06-20 11:40:52.000000000","message":"update here if you do the change suggested above","commit_id":"bb2d7eae547d4a8bf65fe91970be288e76da4518"},{"author":{"_account_id":14567,"name":"Rodrigo Barbieri","email":"rodrigo.barbieri2010@gmail.com","username":"ganso"},"change_message_id":"1f746a9a2f42f98a3436c4684ead8d31cbc84700","unresolved":false,"context_lines":[{"line_number":168,"context_line":""},{"line_number":169,"context_line":"    def get_access_rules(self, share_id):"},{"line_number":170,"context_line":"        url \u003d (\"https://%s/hspapi/shares/%s/access-rules\" %"},{"line_number":171,"context_line":"               (self.host, share_id))"},{"line_number":172,"context_line":"        rules \u003d self._send_get(url)"},{"line_number":173,"context_line":""},{"line_number":174,"context_line":"        if rules is not None:"}],"source_content_type":"text/x-python","patch_set":3,"id":"5a9d85d2_5db470f1","line":171,"range":{"start_line":171,"start_character":15,"end_line":171,"end_character":37},"updated":"2016-06-20 11:35:40.000000000","message":"update here if you do the change suggested above.","commit_id":"bb2d7eae547d4a8bf65fe91970be288e76da4518"},{"author":{"_account_id":8851,"name":"Valeriy Ponomaryov","email":"kiparis.kh@gmail.com","username":"vponomaryov"},"change_message_id":"bf03fccf5920a9e2c5f0d355c5891632b1f79024","unresolved":false,"context_lines":[{"line_number":139,"context_line":"        if share is not None:"},{"line_number":140,"context_line":"            return share[\u0027list\u0027][0]"},{"line_number":141,"context_line":"        else:"},{"line_number":142,"context_line":"            msg \u003d _(\"Share does not exist or is not available.\")"},{"line_number":143,"context_line":"            raise exception.HSPItemNotFoundException(msg\u003dmsg)"},{"line_number":144,"context_line":""},{"line_number":145,"context_line":"    def delete_share(self, share_id):"}],"source_content_type":"text/x-python","patch_set":6,"id":"3aaa91ec_7ab110e1","line":142,"range":{"start_line":142,"start_character":21,"end_line":142,"end_character":62},"updated":"2016-06-23 13:36:50.000000000","message":"Better to add ID/Name here. Same in other places.","commit_id":"0a5df6e2cd45d798269799ac8f18bbb2d0c396fc"},{"author":{"_account_id":17097,"name":"Tiago Pasqualini da Silva","email":"t.pasqualini@luizalabs.com","username":"tiago.pasqualini"},"change_message_id":"ef1ce939d52d2b0d98f344606aaea00290bb874c","unresolved":false,"context_lines":[{"line_number":139,"context_line":"        if share is not None:"},{"line_number":140,"context_line":"            return share[\u0027list\u0027][0]"},{"line_number":141,"context_line":"        else:"},{"line_number":142,"context_line":"            msg \u003d _(\"Share does not exist or is not available.\")"},{"line_number":143,"context_line":"            raise exception.HSPItemNotFoundException(msg\u003dmsg)"},{"line_number":144,"context_line":""},{"line_number":145,"context_line":"    def delete_share(self, share_id):"}],"source_content_type":"text/x-python","patch_set":6,"id":"1aa78d24_a4d998f5","line":142,"range":{"start_line":142,"start_character":21,"end_line":142,"end_character":62},"in_reply_to":"3aaa91ec_7ab110e1","updated":"2016-07-11 19:04:33.000000000","message":"Done","commit_id":"0a5df6e2cd45d798269799ac8f18bbb2d0c396fc"},{"author":{"_account_id":8851,"name":"Valeriy Ponomaryov","email":"kiparis.kh@gmail.com","username":"vponomaryov"},"change_message_id":"bf03fccf5920a9e2c5f0d355c5891632b1f79024","unresolved":false,"context_lines":[{"line_number":183,"context_line":"        if clusters is not None:"},{"line_number":184,"context_line":"            return clusters[\u0027list\u0027][0]"},{"line_number":185,"context_line":"        else:"},{"line_number":186,"context_line":"            msg \u003d _(\"Cluster not found.\")"},{"line_number":187,"context_line":"            raise exception.HSPBackendException(msg\u003dmsg)"},{"line_number":188,"context_line":""},{"line_number":189,"context_line":"    def _wait_job_status(self, job_url, target_status):"}],"source_content_type":"text/x-python","patch_set":6,"id":"3aaa91ec_9acddc5f","line":186,"range":{"start_line":186,"start_character":21,"end_line":186,"end_character":39},"updated":"2016-06-23 13:36:50.000000000","message":"Which cluster?","commit_id":"0a5df6e2cd45d798269799ac8f18bbb2d0c396fc"},{"author":{"_account_id":17097,"name":"Tiago Pasqualini da Silva","email":"t.pasqualini@luizalabs.com","username":"tiago.pasqualini"},"change_message_id":"ef1ce939d52d2b0d98f344606aaea00290bb874c","unresolved":false,"context_lines":[{"line_number":183,"context_line":"        if clusters is not None:"},{"line_number":184,"context_line":"            return clusters[\u0027list\u0027][0]"},{"line_number":185,"context_line":"        else:"},{"line_number":186,"context_line":"            msg \u003d _(\"Cluster not found.\")"},{"line_number":187,"context_line":"            raise exception.HSPBackendException(msg\u003dmsg)"},{"line_number":188,"context_line":""},{"line_number":189,"context_line":"    def _wait_job_status(self, job_url, target_status):"}],"source_content_type":"text/x-python","patch_set":6,"id":"1aa78d24_e4df20d4","line":186,"range":{"start_line":186,"start_character":21,"end_line":186,"end_character":39},"in_reply_to":"3aaa91ec_9acddc5f","updated":"2016-07-11 19:04:33.000000000","message":"Changed message.","commit_id":"0a5df6e2cd45d798269799ac8f18bbb2d0c396fc"},{"author":{"_account_id":8851,"name":"Valeriy Ponomaryov","email":"kiparis.kh@gmail.com","username":"vponomaryov"},"change_message_id":"bf03fccf5920a9e2c5f0d355c5891632b1f79024","unresolved":false,"context_lines":[{"line_number":186,"context_line":"            msg \u003d _(\"Cluster not found.\")"},{"line_number":187,"context_line":"            raise exception.HSPBackendException(msg\u003dmsg)"},{"line_number":188,"context_line":""},{"line_number":189,"context_line":"    def _wait_job_status(self, job_url, target_status):"},{"line_number":190,"context_line":"        status \u003d None"},{"line_number":191,"context_line":"        retries \u003d 0"},{"line_number":192,"context_line":"        starttime \u003d time.time()"}],"source_content_type":"text/x-python","patch_set":6,"id":"3aaa91ec_dae1249c","line":189,"range":{"start_line":189,"start_character":4,"end_line":189,"end_character":55},"updated":"2016-06-23 13:36:50.000000000","message":"Have you considered usage of existing utils [1]?\n\n[1] https://github.com/openstack/manila/blob/bf24cdba/manila/utils.py#L548","commit_id":"0a5df6e2cd45d798269799ac8f18bbb2d0c396fc"},{"author":{"_account_id":17097,"name":"Tiago Pasqualini da Silva","email":"t.pasqualini@luizalabs.com","username":"tiago.pasqualini"},"change_message_id":"ef1ce939d52d2b0d98f344606aaea00290bb874c","unresolved":false,"context_lines":[{"line_number":186,"context_line":"            msg \u003d _(\"Cluster not found.\")"},{"line_number":187,"context_line":"            raise exception.HSPBackendException(msg\u003dmsg)"},{"line_number":188,"context_line":""},{"line_number":189,"context_line":"    def _wait_job_status(self, job_url, target_status):"},{"line_number":190,"context_line":"        status \u003d None"},{"line_number":191,"context_line":"        retries \u003d 0"},{"line_number":192,"context_line":"        starttime \u003d time.time()"}],"source_content_type":"text/x-python","patch_set":6,"id":"1aa78d24_ca6e6b2e","line":189,"range":{"start_line":189,"start_character":4,"end_line":189,"end_character":55},"in_reply_to":"3aaa91ec_815d3a49","updated":"2016-07-11 19:04:33.000000000","message":"I will check and send the changes on a future patch, thanks","commit_id":"0a5df6e2cd45d798269799ac8f18bbb2d0c396fc"},{"author":{"_account_id":10058,"name":"Erlon R. Cruz","email":"erlon.rodrigues.cruz@canonical.com","username":"sombrafam"},"change_message_id":"9eb227129f7e8487bc2f264ff66281cebfc32733","unresolved":false,"context_lines":[{"line_number":186,"context_line":"            msg \u003d _(\"Cluster not found.\")"},{"line_number":187,"context_line":"            raise exception.HSPBackendException(msg\u003dmsg)"},{"line_number":188,"context_line":""},{"line_number":189,"context_line":"    def _wait_job_status(self, job_url, target_status):"},{"line_number":190,"context_line":"        status \u003d None"},{"line_number":191,"context_line":"        retries \u003d 0"},{"line_number":192,"context_line":"        starttime \u003d time.time()"}],"source_content_type":"text/x-python","patch_set":6,"id":"3aaa91ec_815d3a49","line":189,"range":{"start_line":189,"start_character":4,"end_line":189,"end_character":55},"in_reply_to":"3aaa91ec_dae1249c","updated":"2016-06-24 12:07:00.000000000","message":"+1","commit_id":"0a5df6e2cd45d798269799ac8f18bbb2d0c396fc"},{"author":{"_account_id":8851,"name":"Valeriy Ponomaryov","email":"kiparis.kh@gmail.com","username":"vponomaryov"},"change_message_id":"bf03fccf5920a9e2c5f0d355c5891632b1f79024","unresolved":false,"context_lines":[{"line_number":205,"context_line":""},{"line_number":206,"context_line":"            now \u003d time.time()"},{"line_number":207,"context_line":"            if now \u003e deadline:"},{"line_number":208,"context_line":"                msg \u003d _(\"Timeout while waiting for job to complete.\")"},{"line_number":209,"context_line":"                raise exception.HSPBackendException(msg\u003dmsg)"},{"line_number":210,"context_line":""},{"line_number":211,"context_line":"            retries +\u003d 1"}],"source_content_type":"text/x-python","patch_set":6,"id":"3aaa91ec_3a2ca801","line":208,"range":{"start_line":208,"start_character":51,"end_line":208,"end_character":55},"updated":"2016-06-23 13:36:50.000000000","message":"Number/ID of a job?","commit_id":"0a5df6e2cd45d798269799ac8f18bbb2d0c396fc"},{"author":{"_account_id":17097,"name":"Tiago Pasqualini da Silva","email":"t.pasqualini@luizalabs.com","username":"tiago.pasqualini"},"change_message_id":"ef1ce939d52d2b0d98f344606aaea00290bb874c","unresolved":false,"context_lines":[{"line_number":205,"context_line":""},{"line_number":206,"context_line":"            now \u003d time.time()"},{"line_number":207,"context_line":"            if now \u003e deadline:"},{"line_number":208,"context_line":"                msg \u003d _(\"Timeout while waiting for job to complete.\")"},{"line_number":209,"context_line":"                raise exception.HSPBackendException(msg\u003dmsg)"},{"line_number":210,"context_line":""},{"line_number":211,"context_line":"            retries +\u003d 1"}],"source_content_type":"text/x-python","patch_set":6,"id":"1aa78d24_afa17196","line":208,"range":{"start_line":208,"start_character":51,"end_line":208,"end_character":55},"in_reply_to":"3aaa91ec_3a2ca801","updated":"2016-07-11 19:04:33.000000000","message":"Done","commit_id":"0a5df6e2cd45d798269799ac8f18bbb2d0c396fc"},{"author":{"_account_id":8851,"name":"Valeriy Ponomaryov","email":"kiparis.kh@gmail.com","username":"vponomaryov"},"change_message_id":"6803cf2be948d09a004f16e5d9944d9a1e7f39c6","unresolved":false,"context_lines":[{"line_number":209,"context_line":"                raise exception.HSPBackendException("},{"line_number":210,"context_line":"                    msg\u003dmsg)"},{"line_number":211,"context_line":""},{"line_number":212,"context_line":"            now \u003d time.time()"},{"line_number":213,"context_line":"            if now \u003e deadline:"},{"line_number":214,"context_line":"                msg \u003d _(\"Timeout while waiting for job %s to complete.\")"},{"line_number":215,"context_line":"                args \u003d resp_json[\u0027id\u0027]"},{"line_number":216,"context_line":"                raise exception.HSPBackendException(msg\u003dmsg % args)"}],"source_content_type":"text/x-python","patch_set":8,"id":"dada55a8_455767ca","line":213,"range":{"start_line":212,"start_character":12,"end_line":213,"end_character":30},"updated":"2016-07-22 16:25:50.000000000","message":"Why do you need object link init?\n\n\"\"\"\nif time.time() \u003e deadline:\n\"\"\"","commit_id":"a37e140676c2aee5dd95aa7fa30f87b990acff57"},{"author":{"_account_id":17097,"name":"Tiago Pasqualini da Silva","email":"t.pasqualini@luizalabs.com","username":"tiago.pasqualini"},"change_message_id":"97a1ac010ca1ff73571e673f77027849e9d251e4","unresolved":false,"context_lines":[{"line_number":209,"context_line":"                raise exception.HSPBackendException("},{"line_number":210,"context_line":"                    msg\u003dmsg)"},{"line_number":211,"context_line":""},{"line_number":212,"context_line":"            now \u003d time.time()"},{"line_number":213,"context_line":"            if now \u003e deadline:"},{"line_number":214,"context_line":"                msg \u003d _(\"Timeout while waiting for job %s to complete.\")"},{"line_number":215,"context_line":"                args \u003d resp_json[\u0027id\u0027]"},{"line_number":216,"context_line":"                raise exception.HSPBackendException(msg\u003dmsg % args)"}],"source_content_type":"text/x-python","patch_set":8,"id":"dada55a8_6a630a42","line":213,"range":{"start_line":212,"start_character":12,"end_line":213,"end_character":30},"in_reply_to":"dada55a8_455767ca","updated":"2016-07-25 17:47:55.000000000","message":"Done","commit_id":"a37e140676c2aee5dd95aa7fa30f87b990acff57"},{"author":{"_account_id":19683,"name":"Jose Falavinha","email":"jose.falavinha@fit-tecnologia.org.br","username":"jose.falavinha"},"change_message_id":"1467356f03171a7a002a0afb893fcd49c2205a28","unresolved":false,"context_lines":[{"line_number":25,"context_line":""},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"class HSPRestBackend(object):"},{"line_number":28,"context_line":"    def __init__(self, hsp_host, hsp_username, hsp_password, job_timeout):"},{"line_number":29,"context_line":"        self.host \u003d hsp_host"},{"line_number":30,"context_line":"        self.username \u003d hsp_username"},{"line_number":31,"context_line":"        self.password \u003d hsp_password"},{"line_number":32,"context_line":"        self.job_timeout \u003d job_timeout"},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"    def _send_post(self, url, payload\u003dNone):"},{"line_number":35,"context_line":"        resp \u003d requests.post(url, auth\u003d(self.username, self.password),"}],"source_content_type":"text/x-python","patch_set":11,"id":"dada55a8_2d0a8c26","line":32,"range":{"start_line":28,"start_character":3,"end_line":32,"end_character":38},"updated":"2016-07-26 17:55:33.000000000","message":"To follow the standard, should it be hsp_job_timeout?","commit_id":"cfec736f0f194b65b871e791927820ef9f29868e"},{"author":{"_account_id":17097,"name":"Tiago Pasqualini da Silva","email":"t.pasqualini@luizalabs.com","username":"tiago.pasqualini"},"change_message_id":"0cc7f08c6809ae893d69bc21e62d26c3b8a9981b","unresolved":false,"context_lines":[{"line_number":25,"context_line":""},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"class HSPRestBackend(object):"},{"line_number":28,"context_line":"    def __init__(self, hsp_host, hsp_username, hsp_password, job_timeout):"},{"line_number":29,"context_line":"        self.host \u003d hsp_host"},{"line_number":30,"context_line":"        self.username \u003d hsp_username"},{"line_number":31,"context_line":"        self.password \u003d hsp_password"},{"line_number":32,"context_line":"        self.job_timeout \u003d job_timeout"},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"    def _send_post(self, url, payload\u003dNone):"},{"line_number":35,"context_line":"        resp \u003d requests.post(url, auth\u003d(self.username, self.password),"}],"source_content_type":"text/x-python","patch_set":11,"id":"bacf61ea_e3de97db","line":32,"range":{"start_line":28,"start_character":3,"end_line":32,"end_character":38},"in_reply_to":"dada55a8_2d0a8c26","updated":"2016-08-01 21:18:42.000000000","message":"Done","commit_id":"cfec736f0f194b65b871e791927820ef9f29868e"},{"author":{"_account_id":15100,"name":"zhongjun","email":"jun.zhongjun2@gmail.com","username":"zhongjun2"},"change_message_id":"12cd8560454774205ea487ea7e02e65331fa3daa","unresolved":false,"context_lines":[{"line_number":128,"context_line":"        self._send_post(url, payload\u003djson.dumps(payload))"},{"line_number":129,"context_line":""},{"line_number":130,"context_line":"    def get_share(self, fs_id\u003dNone, name\u003dNone):"},{"line_number":131,"context_line":"        if fs_id is not None:"},{"line_number":132,"context_line":"            url \u003d (\u0027https://%s/hspapi/shares/list?file-system-id\u003d%s\u0027 %"},{"line_number":133,"context_line":"                   (self.host, fs_id))"},{"line_number":134,"context_line":"        elif name is not None:"},{"line_number":135,"context_line":"            url \u003d (\u0027https://%s/hspapi/shares/list?name\u003d%s\u0027 %"},{"line_number":136,"context_line":"                   (self.host, name))"},{"line_number":137,"context_line":"        share \u003d self._send_get(url)"}],"source_content_type":"text/x-python","patch_set":11,"id":"bacf61ea_666b04f2","line":134,"range":{"start_line":131,"start_character":8,"end_line":134,"end_character":30},"updated":"2016-08-01 04:42:34.000000000","message":"How about if fs_id and name are exist at the same time? Even if this assumption is not used in currently code.","commit_id":"cfec736f0f194b65b871e791927820ef9f29868e"},{"author":{"_account_id":17097,"name":"Tiago Pasqualini da Silva","email":"t.pasqualini@luizalabs.com","username":"tiago.pasqualini"},"change_message_id":"0cc7f08c6809ae893d69bc21e62d26c3b8a9981b","unresolved":false,"context_lines":[{"line_number":128,"context_line":"        self._send_post(url, payload\u003djson.dumps(payload))"},{"line_number":129,"context_line":""},{"line_number":130,"context_line":"    def get_share(self, fs_id\u003dNone, name\u003dNone):"},{"line_number":131,"context_line":"        if fs_id is not None:"},{"line_number":132,"context_line":"            url \u003d (\u0027https://%s/hspapi/shares/list?file-system-id\u003d%s\u0027 %"},{"line_number":133,"context_line":"                   (self.host, fs_id))"},{"line_number":134,"context_line":"        elif name is not None:"},{"line_number":135,"context_line":"            url \u003d (\u0027https://%s/hspapi/shares/list?name\u003d%s\u0027 %"},{"line_number":136,"context_line":"                   (self.host, name))"},{"line_number":137,"context_line":"        share \u003d self._send_get(url)"}],"source_content_type":"text/x-python","patch_set":11,"id":"bacf61ea_632e27fc","line":134,"range":{"start_line":131,"start_character":8,"end_line":134,"end_character":30},"in_reply_to":"bacf61ea_666b04f2","updated":"2016-08-01 21:18:42.000000000","message":"They should not be used at the same time","commit_id":"cfec736f0f194b65b871e791927820ef9f29868e"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"e4ce2717d54dda3a62dd21f7a2a77f428593dedb","unresolved":false,"context_lines":[{"line_number":177,"context_line":"               (self.host, share_id))"},{"line_number":178,"context_line":"        rules \u003d self._send_get(url)"},{"line_number":179,"context_line":""},{"line_number":180,"context_line":"        if rules is not None:"},{"line_number":181,"context_line":"            return rules[\u0027list\u0027]"},{"line_number":182,"context_line":"        else:"},{"line_number":183,"context_line":"            return []"},{"line_number":184,"context_line":""},{"line_number":185,"context_line":"    def get_clusters(self):"},{"line_number":186,"context_line":"        url \u003d \"https://%s/hspapi/clusters/list\" % self.host"}],"source_content_type":"text/x-python","patch_set":11,"id":"bacf61ea_4fb25a95","line":183,"range":{"start_line":180,"start_character":8,"end_line":183,"end_character":21},"updated":"2016-07-31 21:15:54.000000000","message":"Easier to ask for forgiveness:\n\n\n\n  try:\n      rules \u003d rules[\u0027list\u0027]\n  except TypeError:\n      rules \u003d []\n\n  return rules","commit_id":"cfec736f0f194b65b871e791927820ef9f29868e"},{"author":{"_account_id":17097,"name":"Tiago Pasqualini da Silva","email":"t.pasqualini@luizalabs.com","username":"tiago.pasqualini"},"change_message_id":"0cc7f08c6809ae893d69bc21e62d26c3b8a9981b","unresolved":false,"context_lines":[{"line_number":177,"context_line":"               (self.host, share_id))"},{"line_number":178,"context_line":"        rules \u003d self._send_get(url)"},{"line_number":179,"context_line":""},{"line_number":180,"context_line":"        if rules is not None:"},{"line_number":181,"context_line":"            return rules[\u0027list\u0027]"},{"line_number":182,"context_line":"        else:"},{"line_number":183,"context_line":"            return []"},{"line_number":184,"context_line":""},{"line_number":185,"context_line":"    def get_clusters(self):"},{"line_number":186,"context_line":"        url \u003d \"https://%s/hspapi/clusters/list\" % self.host"}],"source_content_type":"text/x-python","patch_set":11,"id":"bacf61ea_8337db4b","line":183,"range":{"start_line":180,"start_character":8,"end_line":183,"end_character":21},"in_reply_to":"bacf61ea_4fb25a95","updated":"2016-08-01 21:18:42.000000000","message":"Done","commit_id":"cfec736f0f194b65b871e791927820ef9f29868e"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"e4ce2717d54dda3a62dd21f7a2a77f428593dedb","unresolved":false,"context_lines":[{"line_number":186,"context_line":"        url \u003d \"https://%s/hspapi/clusters/list\" % self.host"},{"line_number":187,"context_line":"        clusters \u003d self._send_get(url)"},{"line_number":188,"context_line":""},{"line_number":189,"context_line":"        if clusters is not None:"},{"line_number":190,"context_line":"            return clusters[\u0027list\u0027][0]"},{"line_number":191,"context_line":"        else:"},{"line_number":192,"context_line":"            msg \u003d _(\"No cluster was found on HSP.\")"},{"line_number":193,"context_line":"            raise exception.HSPBackendException(msg\u003dmsg)"},{"line_number":194,"context_line":""},{"line_number":195,"context_line":"    def _wait_job_status(self, job_url, target_status):"},{"line_number":196,"context_line":"        status \u003d None"}],"source_content_type":"text/x-python","patch_set":11,"id":"bacf61ea_0fb4e27f","line":193,"range":{"start_line":189,"start_character":0,"end_line":193,"end_character":56},"updated":"2016-07-31 21:15:54.000000000","message":"Easier to ask for forgiveness:\n\n  try:\n      return clusters[\u0027list\u0027][0]\n  except TypeError:\n     msg \u003d _(\"No cluster was found on HSP.\")\n     raise exception.HSPBackendException(msg\u003dmsg)","commit_id":"cfec736f0f194b65b871e791927820ef9f29868e"},{"author":{"_account_id":17097,"name":"Tiago Pasqualini da Silva","email":"t.pasqualini@luizalabs.com","username":"tiago.pasqualini"},"change_message_id":"0cc7f08c6809ae893d69bc21e62d26c3b8a9981b","unresolved":false,"context_lines":[{"line_number":186,"context_line":"        url \u003d \"https://%s/hspapi/clusters/list\" % self.host"},{"line_number":187,"context_line":"        clusters \u003d self._send_get(url)"},{"line_number":188,"context_line":""},{"line_number":189,"context_line":"        if clusters is not None:"},{"line_number":190,"context_line":"            return clusters[\u0027list\u0027][0]"},{"line_number":191,"context_line":"        else:"},{"line_number":192,"context_line":"            msg \u003d _(\"No cluster was found on HSP.\")"},{"line_number":193,"context_line":"            raise exception.HSPBackendException(msg\u003dmsg)"},{"line_number":194,"context_line":""},{"line_number":195,"context_line":"    def _wait_job_status(self, job_url, target_status):"},{"line_number":196,"context_line":"        status \u003d None"}],"source_content_type":"text/x-python","patch_set":11,"id":"bacf61ea_c36b931c","line":193,"range":{"start_line":189,"start_character":0,"end_line":193,"end_character":56},"in_reply_to":"bacf61ea_0fb4e27f","updated":"2016-08-01 21:18:42.000000000","message":"Done","commit_id":"cfec736f0f194b65b871e791927820ef9f29868e"},{"author":{"_account_id":15100,"name":"zhongjun","email":"jun.zhongjun2@gmail.com","username":"zhongjun2"},"change_message_id":"12cd8560454774205ea487ea7e02e65331fa3daa","unresolved":false,"context_lines":[{"line_number":206,"context_line":"            if status \u003d\u003d \u0027ERROR\u0027:"},{"line_number":207,"context_line":"                msg \u003d (_(\"HSP job failed: %s.\") %"},{"line_number":208,"context_line":"                       resp_json[\u0027messages\u0027][0][\u0027message\u0027])"},{"line_number":209,"context_line":"                raise exception.HSPBackendException("},{"line_number":210,"context_line":"                    msg\u003dmsg)"},{"line_number":211,"context_line":""},{"line_number":212,"context_line":"            if time.time() \u003e deadline:"},{"line_number":213,"context_line":"                msg \u003d _(\"Timeout while waiting for job %s to complete.\")"}],"source_content_type":"text/x-python","patch_set":11,"id":"bacf61ea_862438c5","line":210,"range":{"start_line":209,"start_character":16,"end_line":210,"end_character":28},"updated":"2016-08-01 04:42:34.000000000","message":"This could be one line.","commit_id":"cfec736f0f194b65b871e791927820ef9f29868e"},{"author":{"_account_id":17097,"name":"Tiago Pasqualini da Silva","email":"t.pasqualini@luizalabs.com","username":"tiago.pasqualini"},"change_message_id":"0cc7f08c6809ae893d69bc21e62d26c3b8a9981b","unresolved":false,"context_lines":[{"line_number":206,"context_line":"            if status \u003d\u003d \u0027ERROR\u0027:"},{"line_number":207,"context_line":"                msg \u003d (_(\"HSP job failed: %s.\") %"},{"line_number":208,"context_line":"                       resp_json[\u0027messages\u0027][0][\u0027message\u0027])"},{"line_number":209,"context_line":"                raise exception.HSPBackendException("},{"line_number":210,"context_line":"                    msg\u003dmsg)"},{"line_number":211,"context_line":""},{"line_number":212,"context_line":"            if time.time() \u003e deadline:"},{"line_number":213,"context_line":"                msg \u003d _(\"Timeout while waiting for job %s to complete.\")"}],"source_content_type":"text/x-python","patch_set":11,"id":"bacf61ea_0372cb10","line":210,"range":{"start_line":209,"start_character":16,"end_line":210,"end_character":28},"in_reply_to":"bacf61ea_862438c5","updated":"2016-08-01 21:18:42.000000000","message":"Done","commit_id":"cfec736f0f194b65b871e791927820ef9f29868e"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"4cdf4f66d6a7e23dbbfef54247fab14dbd078973","unresolved":false,"context_lines":[{"line_number":215,"context_line":"                raise exception.HSPBackendException(msg\u003dmsg % args)"},{"line_number":216,"context_line":""},{"line_number":217,"context_line":"            retries +\u003d 1"},{"line_number":218,"context_line":"            time.sleep(retries ** 2)"}],"source_content_type":"text/x-python","patch_set":11,"id":"bacf61ea_47b8a8c8","line":218,"updated":"2016-07-29 16:58:31.000000000","message":"Suggest using eventlet.sleep","commit_id":"cfec736f0f194b65b871e791927820ef9f29868e"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"e4ce2717d54dda3a62dd21f7a2a77f428593dedb","unresolved":false,"context_lines":[{"line_number":215,"context_line":"                raise exception.HSPBackendException(msg\u003dmsg % args)"},{"line_number":216,"context_line":""},{"line_number":217,"context_line":"            retries +\u003d 1"},{"line_number":218,"context_line":"            time.sleep(retries ** 2)"}],"source_content_type":"text/x-python","patch_set":11,"id":"bacf61ea_efea2e73","line":218,"in_reply_to":"bacf61ea_47b8a8c8","updated":"2016-07-31 21:15:54.000000000","message":"Or use the retry method from manila/utils?","commit_id":"cfec736f0f194b65b871e791927820ef9f29868e"},{"author":{"_account_id":17097,"name":"Tiago Pasqualini da Silva","email":"t.pasqualini@luizalabs.com","username":"tiago.pasqualini"},"change_message_id":"0cc7f08c6809ae893d69bc21e62d26c3b8a9981b","unresolved":false,"context_lines":[{"line_number":215,"context_line":"                raise exception.HSPBackendException(msg\u003dmsg % args)"},{"line_number":216,"context_line":""},{"line_number":217,"context_line":"            retries +\u003d 1"},{"line_number":218,"context_line":"            time.sleep(retries ** 2)"}],"source_content_type":"text/x-python","patch_set":11,"id":"bacf61ea_43668351","line":218,"in_reply_to":"bacf61ea_efea2e73","updated":"2016-08-01 21:18:42.000000000","message":"Will use the retry method on a future patch.","commit_id":"cfec736f0f194b65b871e791927820ef9f29868e"},{"author":{"_account_id":11865,"name":"Clinton Knight","email":"cknight@netapp.com","username":"cknight"},"change_message_id":"a39528850f5079a2758f3193cba99516c96f045d","unresolved":false,"context_lines":[{"line_number":75,"context_line":"            \u0027description\u0027: \u0027\u0027,"},{"line_number":76,"context_line":"            \u0027record-access-time\u0027: True,"},{"line_number":77,"context_line":"            \u0027tags\u0027: \u0027\u0027,"},{"line_number":78,"context_line":"            \u0027space-hwm\u0027: 90,"},{"line_number":79,"context_line":"            \u0027space-lwm\u0027: 70,"},{"line_number":80,"context_line":"            \u0027name\u0027: name,"},{"line_number":81,"context_line":"        }"},{"line_number":82,"context_line":"        self._send_post(url, payload\u003djson.dumps(payload))"}],"source_content_type":"text/x-python","patch_set":18,"id":"9ad45d7e_9bca644e","line":79,"range":{"start_line":78,"start_character":0,"end_line":79,"end_character":28},"updated":"2016-08-08 17:52:23.000000000","message":"What are these values?  Please define as constants, or if they are something simple like percentages please add a comment.","commit_id":"4ab1c18df2fb2381883a9ef54716cb1fa180b7cb"},{"author":{"_account_id":17097,"name":"Tiago Pasqualini da Silva","email":"t.pasqualini@luizalabs.com","username":"tiago.pasqualini"},"change_message_id":"ce0ade264d04f1c59f453c80164b38bacbdb493d","unresolved":false,"context_lines":[{"line_number":75,"context_line":"            \u0027description\u0027: \u0027\u0027,"},{"line_number":76,"context_line":"            \u0027record-access-time\u0027: True,"},{"line_number":77,"context_line":"            \u0027tags\u0027: \u0027\u0027,"},{"line_number":78,"context_line":"            \u0027space-hwm\u0027: 90,"},{"line_number":79,"context_line":"            \u0027space-lwm\u0027: 70,"},{"line_number":80,"context_line":"            \u0027name\u0027: name,"},{"line_number":81,"context_line":"        }"},{"line_number":82,"context_line":"        self._send_post(url, payload\u003djson.dumps(payload))"}],"source_content_type":"text/x-python","patch_set":18,"id":"9ad45d7e_e42e38f9","line":79,"range":{"start_line":78,"start_character":0,"end_line":79,"end_character":28},"in_reply_to":"9ad45d7e_9bca644e","updated":"2016-08-10 12:11:59.000000000","message":"Done","commit_id":"4ab1c18df2fb2381883a9ef54716cb1fa180b7cb"},{"author":{"_account_id":11865,"name":"Clinton Knight","email":"cknight@netapp.com","username":"cknight"},"change_message_id":"a39528850f5079a2758f3193cba99516c96f045d","unresolved":false,"context_lines":[{"line_number":99,"context_line":""},{"line_number":100,"context_line":"    def resize_file_system(self, filesystem_id, new_size):"},{"line_number":101,"context_line":"        url \u003d \"https://%s/hspapi/file-systems/%s\" % (self.host, filesystem_id)"},{"line_number":102,"context_line":"        payload \u003d {"},{"line_number":103,"context_line":"            \u0027quota\u0027: new_size,"},{"line_number":104,"context_line":"        }"},{"line_number":105,"context_line":""},{"line_number":106,"context_line":"        self._send_post(url, payload\u003djson.dumps(payload))"},{"line_number":107,"context_line":""}],"source_content_type":"text/x-python","patch_set":18,"id":"9ad45d7e_3bec18c7","line":104,"range":{"start_line":102,"start_character":8,"end_line":104,"end_character":9},"updated":"2016-08-08 17:52:23.000000000","message":"Please don\u0027t wrap a dictionary that fits on one line.  Same below.\n\nhttp://docs.openstack.org/developer/hacking/#dictionaries-lists","commit_id":"4ab1c18df2fb2381883a9ef54716cb1fa180b7cb"},{"author":{"_account_id":17097,"name":"Tiago Pasqualini da Silva","email":"t.pasqualini@luizalabs.com","username":"tiago.pasqualini"},"change_message_id":"ce0ade264d04f1c59f453c80164b38bacbdb493d","unresolved":false,"context_lines":[{"line_number":99,"context_line":""},{"line_number":100,"context_line":"    def resize_file_system(self, filesystem_id, new_size):"},{"line_number":101,"context_line":"        url \u003d \"https://%s/hspapi/file-systems/%s\" % (self.host, filesystem_id)"},{"line_number":102,"context_line":"        payload \u003d {"},{"line_number":103,"context_line":"            \u0027quota\u0027: new_size,"},{"line_number":104,"context_line":"        }"},{"line_number":105,"context_line":""},{"line_number":106,"context_line":"        self._send_post(url, payload\u003djson.dumps(payload))"},{"line_number":107,"context_line":""}],"source_content_type":"text/x-python","patch_set":18,"id":"9ad45d7e_a4c4405f","line":104,"range":{"start_line":102,"start_character":8,"end_line":104,"end_character":9},"in_reply_to":"9ad45d7e_3bec18c7","updated":"2016-08-10 12:11:59.000000000","message":"Done","commit_id":"4ab1c18df2fb2381883a9ef54716cb1fa180b7cb"},{"author":{"_account_id":11865,"name":"Clinton Knight","email":"cknight@netapp.com","username":"cknight"},"change_message_id":"a39528850f5079a2758f3193cba99516c96f045d","unresolved":false,"context_lines":[{"line_number":182,"context_line":"            rules \u003d []"},{"line_number":183,"context_line":"        return rules"},{"line_number":184,"context_line":""},{"line_number":185,"context_line":"    def get_clusters(self):"},{"line_number":186,"context_line":"        url \u003d \"https://%s/hspapi/clusters/list\" % self.host"},{"line_number":187,"context_line":"        clusters \u003d self._send_get(url)"},{"line_number":188,"context_line":""}],"source_content_type":"text/x-python","patch_set":18,"id":"9ad45d7e_88b6a13b","line":185,"range":{"start_line":185,"start_character":8,"end_line":185,"end_character":20},"updated":"2016-08-08 17:52:23.000000000","message":"Why is this \u0027get_clusters\u0027 when it returns only one cluster?  Please rename to get_cluster.\n\nYou might also catch a KeyError, in case clusters[\u0027list\u0027] doesn\u0027t exist in the return value.","commit_id":"4ab1c18df2fb2381883a9ef54716cb1fa180b7cb"},{"author":{"_account_id":17097,"name":"Tiago Pasqualini da Silva","email":"t.pasqualini@luizalabs.com","username":"tiago.pasqualini"},"change_message_id":"ce0ade264d04f1c59f453c80164b38bacbdb493d","unresolved":false,"context_lines":[{"line_number":182,"context_line":"            rules \u003d []"},{"line_number":183,"context_line":"        return rules"},{"line_number":184,"context_line":""},{"line_number":185,"context_line":"    def get_clusters(self):"},{"line_number":186,"context_line":"        url \u003d \"https://%s/hspapi/clusters/list\" % self.host"},{"line_number":187,"context_line":"        clusters \u003d self._send_get(url)"},{"line_number":188,"context_line":""}],"source_content_type":"text/x-python","patch_set":18,"id":"9ad45d7e_0490ac42","line":185,"range":{"start_line":185,"start_character":8,"end_line":185,"end_character":20},"in_reply_to":"9ad45d7e_88b6a13b","updated":"2016-08-10 12:11:59.000000000","message":"The catch should contain a KeyError instead of a TypeError. Fixed, thanks.","commit_id":"4ab1c18df2fb2381883a9ef54716cb1fa180b7cb"},{"author":{"_account_id":11865,"name":"Clinton Knight","email":"cknight@netapp.com","username":"cknight"},"change_message_id":"a39528850f5079a2758f3193cba99516c96f045d","unresolved":false,"context_lines":[{"line_number":192,"context_line":"            msg \u003d _(\"No cluster was found on HSP.\")"},{"line_number":193,"context_line":"            raise exception.HSPBackendException(msg\u003dmsg)"},{"line_number":194,"context_line":""},{"line_number":195,"context_line":"    @utils.retry(exception.HSPBackendException, retries\u003d5)"},{"line_number":196,"context_line":"    def _wait_job_status(self, job_url, target_status):"},{"line_number":197,"context_line":"        resp_json \u003d self._send_get(job_url)"},{"line_number":198,"context_line":""}],"source_content_type":"text/x-python","patch_set":18,"id":"9ad45d7e_db4e9cc0","line":195,"range":{"start_line":195,"start_character":11,"end_line":195,"end_character":16},"updated":"2016-08-08 17:52:23.000000000","message":"Have you considered increasing the time between retries using the exponential backoff arguments?\n\nhttps://pypi.python.org/pypi/retrying","commit_id":"4ab1c18df2fb2381883a9ef54716cb1fa180b7cb"},{"author":{"_account_id":11865,"name":"Clinton Knight","email":"cknight@netapp.com","username":"cknight"},"change_message_id":"e13bdc472309aedb0ecb6819c79d34d985cd581d","unresolved":false,"context_lines":[{"line_number":192,"context_line":"            msg \u003d _(\"No cluster was found on HSP.\")"},{"line_number":193,"context_line":"            raise exception.HSPBackendException(msg\u003dmsg)"},{"line_number":194,"context_line":""},{"line_number":195,"context_line":"    @utils.retry(exception.HSPBackendException, retries\u003d5)"},{"line_number":196,"context_line":"    def _wait_job_status(self, job_url, target_status):"},{"line_number":197,"context_line":"        resp_json \u003d self._send_get(job_url)"},{"line_number":198,"context_line":""}],"source_content_type":"text/x-python","patch_set":18,"id":"9ad45d7e_7debad13","line":195,"range":{"start_line":195,"start_character":11,"end_line":195,"end_character":16},"in_reply_to":"9ad45d7e_b153a06a","updated":"2016-08-10 15:36:05.000000000","message":"Ah, yes, the manila wrapper does that for you.  Looks good.","commit_id":"4ab1c18df2fb2381883a9ef54716cb1fa180b7cb"},{"author":{"_account_id":17097,"name":"Tiago Pasqualini da Silva","email":"t.pasqualini@luizalabs.com","username":"tiago.pasqualini"},"change_message_id":"ce0ade264d04f1c59f453c80164b38bacbdb493d","unresolved":false,"context_lines":[{"line_number":192,"context_line":"            msg \u003d _(\"No cluster was found on HSP.\")"},{"line_number":193,"context_line":"            raise exception.HSPBackendException(msg\u003dmsg)"},{"line_number":194,"context_line":""},{"line_number":195,"context_line":"    @utils.retry(exception.HSPBackendException, retries\u003d5)"},{"line_number":196,"context_line":"    def _wait_job_status(self, job_url, target_status):"},{"line_number":197,"context_line":"        resp_json \u003d self._send_get(job_url)"},{"line_number":198,"context_line":""}],"source_content_type":"text/x-python","patch_set":18,"id":"9ad45d7e_b153a06a","line":195,"range":{"start_line":195,"start_character":11,"end_line":195,"end_character":16},"in_reply_to":"9ad45d7e_db4e9cc0","updated":"2016-08-10 12:11:59.000000000","message":"Doesn\u0027t it use the exponential backoff by default? https://github.com/openstack/manila/blob/bf24cdba/manila/utils.py#L548","commit_id":"4ab1c18df2fb2381883a9ef54716cb1fa180b7cb"},{"author":{"_account_id":11865,"name":"Clinton Knight","email":"cknight@netapp.com","username":"cknight"},"change_message_id":"a39528850f5079a2758f3193cba99516c96f045d","unresolved":false,"context_lines":[{"line_number":201,"context_line":"        if status \u003d\u003d \u0027ERROR\u0027:"},{"line_number":202,"context_line":"            msg \u003d (_(\"HSP job failed: %s.\") %"},{"line_number":203,"context_line":"                   resp_json[\u0027messages\u0027][0][\u0027message\u0027])"},{"line_number":204,"context_line":"            raise exception.HSPBackendException(msg\u003dmsg)"},{"line_number":205,"context_line":"        elif status !\u003d target_status:"},{"line_number":206,"context_line":"            msg \u003d _(\"Timeout while waiting for job %s to complete.\")"},{"line_number":207,"context_line":"            args \u003d resp_json[\u0027id\u0027]"}],"source_content_type":"text/x-python","patch_set":18,"id":"9ad45d7e_9b0c2444","line":204,"range":{"start_line":204,"start_character":12,"end_line":204,"end_character":56},"updated":"2016-08-08 17:52:23.000000000","message":"This will trigger the retry logic even if the backend reports the job status as ERROR.  Why would you do that?  It seems in this case you should exit immediately without retrying.  I would think you want two different exceptions here, with only the one in the following block (non-error, but not target status) triggering the retries.","commit_id":"4ab1c18df2fb2381883a9ef54716cb1fa180b7cb"},{"author":{"_account_id":17097,"name":"Tiago Pasqualini da Silva","email":"t.pasqualini@luizalabs.com","username":"tiago.pasqualini"},"change_message_id":"ce0ade264d04f1c59f453c80164b38bacbdb493d","unresolved":false,"context_lines":[{"line_number":201,"context_line":"        if status \u003d\u003d \u0027ERROR\u0027:"},{"line_number":202,"context_line":"            msg \u003d (_(\"HSP job failed: %s.\") %"},{"line_number":203,"context_line":"                   resp_json[\u0027messages\u0027][0][\u0027message\u0027])"},{"line_number":204,"context_line":"            raise exception.HSPBackendException(msg\u003dmsg)"},{"line_number":205,"context_line":"        elif status !\u003d target_status:"},{"line_number":206,"context_line":"            msg \u003d _(\"Timeout while waiting for job %s to complete.\")"},{"line_number":207,"context_line":"            args \u003d resp_json[\u0027id\u0027]"}],"source_content_type":"text/x-python","patch_set":18,"id":"9ad45d7e_18eacc0f","line":204,"range":{"start_line":204,"start_character":12,"end_line":204,"end_character":56},"in_reply_to":"9ad45d7e_9b0c2444","updated":"2016-08-10 12:11:59.000000000","message":"You\u0027re right, fixed that.","commit_id":"4ab1c18df2fb2381883a9ef54716cb1fa180b7cb"}],"manila/tests/share/drivers/hitachi/hsp/fakes.py":[{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"af1a0be775e6cf127de3b7d1c127a5a778fce58b","unresolved":false,"context_lines":[{"line_number":24,"context_line":"    },"},{"line_number":25,"context_line":"}"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"share \u003d {"},{"line_number":28,"context_line":"    \u0027id\u0027: \u0027aa4a7710-f326-41fb-ad18-b4ad587fc87a\u0027,"},{"line_number":29,"context_line":"    \u0027name\u0027: \u0027aa4a7710-f326-41fb-ad18-b4ad587fc87a\u0027,"},{"line_number":30,"context_line":"    \u0027size\u0027: 50,"},{"line_number":31,"context_line":"    \u0027host\u0027: \u0027hsp\u0027,"},{"line_number":32,"context_line":"    \u0027share_proto\u0027: \u0027NFS\u0027,"},{"line_number":33,"context_line":"    \u0027share_type_id\u0027: 1,"},{"line_number":34,"context_line":"    \u0027share_network_id\u0027: \u0027bb329e24-3bdb-491d-acfd-dfe70c09b98d\u0027,"},{"line_number":35,"context_line":"    \u0027share_server_id\u0027: \u0027cc345a53-491d-acfd-3bdb-dfe70c09b98d\u0027,"},{"line_number":36,"context_line":"    \u0027export_locations\u0027: [{"},{"line_number":37,"context_line":"        \u0027path\u0027: \u0027172.24.44.10:/\u0027"},{"line_number":38,"context_line":"        \u0027aa4a7710-f326-41fb-ad18-b4ad587fc87a\u0027"},{"line_number":39,"context_line":"    }],"},{"line_number":40,"context_line":"    \u0027properties\u0027: {"},{"line_number":41,"context_line":"        \u0027file-system-id\u0027: \u002733689245-1806-45d0-8507-0700b5f89750\u0027,"},{"line_number":42,"context_line":"        \u0027file-system-name\u0027: \u0027fake_name\u0027,"},{"line_number":43,"context_line":"    },"},{"line_number":44,"context_line":"}"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"invalid_share \u003d {"},{"line_number":47,"context_line":"    \u0027id\u0027: \u0027aa4a7710-f326-41fb-ad18-b4ad587fc87a\u0027,"}],"source_content_type":"text/x-python","patch_set":23,"id":"9ad45d7e_bc6170ab","line":44,"range":{"start_line":27,"start_character":0,"end_line":44,"end_character":1},"updated":"2016-08-11 13:24:37.000000000","message":"why not use the fake share instance with share data from fake_share?","commit_id":"a93a88c5802ed1511b7cc8f7b385742556427907"},{"author":{"_account_id":17097,"name":"Tiago Pasqualini da Silva","email":"t.pasqualini@luizalabs.com","username":"tiago.pasqualini"},"change_message_id":"83bb42f3c34e3b18341fbc265e8b5f2777d7ebe3","unresolved":false,"context_lines":[{"line_number":24,"context_line":"    },"},{"line_number":25,"context_line":"}"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"share \u003d {"},{"line_number":28,"context_line":"    \u0027id\u0027: \u0027aa4a7710-f326-41fb-ad18-b4ad587fc87a\u0027,"},{"line_number":29,"context_line":"    \u0027name\u0027: \u0027aa4a7710-f326-41fb-ad18-b4ad587fc87a\u0027,"},{"line_number":30,"context_line":"    \u0027size\u0027: 50,"},{"line_number":31,"context_line":"    \u0027host\u0027: \u0027hsp\u0027,"},{"line_number":32,"context_line":"    \u0027share_proto\u0027: \u0027NFS\u0027,"},{"line_number":33,"context_line":"    \u0027share_type_id\u0027: 1,"},{"line_number":34,"context_line":"    \u0027share_network_id\u0027: \u0027bb329e24-3bdb-491d-acfd-dfe70c09b98d\u0027,"},{"line_number":35,"context_line":"    \u0027share_server_id\u0027: \u0027cc345a53-491d-acfd-3bdb-dfe70c09b98d\u0027,"},{"line_number":36,"context_line":"    \u0027export_locations\u0027: [{"},{"line_number":37,"context_line":"        \u0027path\u0027: \u0027172.24.44.10:/\u0027"},{"line_number":38,"context_line":"        \u0027aa4a7710-f326-41fb-ad18-b4ad587fc87a\u0027"},{"line_number":39,"context_line":"    }],"},{"line_number":40,"context_line":"    \u0027properties\u0027: {"},{"line_number":41,"context_line":"        \u0027file-system-id\u0027: \u002733689245-1806-45d0-8507-0700b5f89750\u0027,"},{"line_number":42,"context_line":"        \u0027file-system-name\u0027: \u0027fake_name\u0027,"},{"line_number":43,"context_line":"    },"},{"line_number":44,"context_line":"}"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"invalid_share \u003d {"},{"line_number":47,"context_line":"    \u0027id\u0027: \u0027aa4a7710-f326-41fb-ad18-b4ad587fc87a\u0027,"}],"source_content_type":"text/x-python","patch_set":23,"id":"9ad45d7e_bb2e8389","line":44,"range":{"start_line":27,"start_character":0,"end_line":44,"end_character":1},"in_reply_to":"9ad45d7e_bc6170ab","updated":"2016-08-11 19:17:47.000000000","message":"This is wrong. This should be the HSP share, not manila share. I fixed this one and change to use share from fake_share when intended to use manila share.","commit_id":"a93a88c5802ed1511b7cc8f7b385742556427907"}],"manila/tests/share/drivers/hitachi/hsp/test_hsp.py":[{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"af1a0be775e6cf127de3b7d1c127a5a778fce58b","unresolved":false,"context_lines":[{"line_number":392,"context_line":"        self.assertTrue(self.mock_log.info.called)"},{"line_number":393,"context_line":""},{"line_number":394,"context_line":"    def test__update_share_stats(self):"},{"line_number":395,"context_line":"        fake_data \u003d {"},{"line_number":396,"context_line":"            \u0027share_backend_name\u0027: self._driver.backend_name,"},{"line_number":397,"context_line":"            \u0027vendor_name\u0027: \u0027Hitachi\u0027,"},{"line_number":398,"context_line":"            \u0027driver_version\u0027: \u00271.0.0\u0027,"},{"line_number":399,"context_line":"            \u0027storage_protocol\u0027: \u0027NFS\u0027,"},{"line_number":400,"context_line":"            \u0027pools\u0027: [{"},{"line_number":401,"context_line":"                \u0027reserved_percentage\u0027: 0,"},{"line_number":402,"context_line":"                \u0027pool_name\u0027: \u0027HSP\u0027,"},{"line_number":403,"context_line":"                \u0027thin_provisioning\u0027: True,"},{"line_number":404,"context_line":"                \u0027total_capacity_gb\u0027: 100,"},{"line_number":405,"context_line":"                \u0027free_capacity_gb\u0027: 50,"},{"line_number":406,"context_line":"                \u0027max_over_subscription_ratio\u0027: 20,"},{"line_number":407,"context_line":"                \u0027qos\u0027: False,"},{"line_number":408,"context_line":"                \u0027dedupe\u0027: False,"},{"line_number":409,"context_line":"                \u0027compression\u0027: False,"},{"line_number":410,"context_line":"            }],"},{"line_number":411,"context_line":"        }"},{"line_number":412,"context_line":""},{"line_number":413,"context_line":"        mock__update_share_stats \u003d self.mock_object("},{"line_number":414,"context_line":"            manila.share.driver.ShareDriver, \u0027_update_share_stats\u0027)"}],"source_content_type":"text/x-python","patch_set":23,"id":"9ad45d7e_3cfd80b4","line":411,"range":{"start_line":395,"start_character":8,"end_line":411,"end_character":9},"updated":"2016-08-11 13:24:37.000000000","message":"move to the fakes file..","commit_id":"a93a88c5802ed1511b7cc8f7b385742556427907"},{"author":{"_account_id":17097,"name":"Tiago Pasqualini da Silva","email":"t.pasqualini@luizalabs.com","username":"tiago.pasqualini"},"change_message_id":"83bb42f3c34e3b18341fbc265e8b5f2777d7ebe3","unresolved":false,"context_lines":[{"line_number":392,"context_line":"        self.assertTrue(self.mock_log.info.called)"},{"line_number":393,"context_line":""},{"line_number":394,"context_line":"    def test__update_share_stats(self):"},{"line_number":395,"context_line":"        fake_data \u003d {"},{"line_number":396,"context_line":"            \u0027share_backend_name\u0027: self._driver.backend_name,"},{"line_number":397,"context_line":"            \u0027vendor_name\u0027: \u0027Hitachi\u0027,"},{"line_number":398,"context_line":"            \u0027driver_version\u0027: \u00271.0.0\u0027,"},{"line_number":399,"context_line":"            \u0027storage_protocol\u0027: \u0027NFS\u0027,"},{"line_number":400,"context_line":"            \u0027pools\u0027: [{"},{"line_number":401,"context_line":"                \u0027reserved_percentage\u0027: 0,"},{"line_number":402,"context_line":"                \u0027pool_name\u0027: \u0027HSP\u0027,"},{"line_number":403,"context_line":"                \u0027thin_provisioning\u0027: True,"},{"line_number":404,"context_line":"                \u0027total_capacity_gb\u0027: 100,"},{"line_number":405,"context_line":"                \u0027free_capacity_gb\u0027: 50,"},{"line_number":406,"context_line":"                \u0027max_over_subscription_ratio\u0027: 20,"},{"line_number":407,"context_line":"                \u0027qos\u0027: False,"},{"line_number":408,"context_line":"                \u0027dedupe\u0027: False,"},{"line_number":409,"context_line":"                \u0027compression\u0027: False,"},{"line_number":410,"context_line":"            }],"},{"line_number":411,"context_line":"        }"},{"line_number":412,"context_line":""},{"line_number":413,"context_line":"        mock__update_share_stats \u003d self.mock_object("},{"line_number":414,"context_line":"            manila.share.driver.ShareDriver, \u0027_update_share_stats\u0027)"}],"source_content_type":"text/x-python","patch_set":23,"id":"9ad45d7e_dfdec4db","line":411,"range":{"start_line":395,"start_character":8,"end_line":411,"end_character":9},"in_reply_to":"9ad45d7e_3cfd80b4","updated":"2016-08-11 19:17:47.000000000","message":"Done","commit_id":"a93a88c5802ed1511b7cc8f7b385742556427907"}],"manila/tests/share/drivers/hitachi/test_hsp.py":[{"author":{"_account_id":8851,"name":"Valeriy Ponomaryov","email":"kiparis.kh@gmail.com","username":"vponomaryov"},"change_message_id":"6803cf2be948d09a004f16e5d9944d9a1e7f39c6","unresolved":false,"context_lines":[{"line_number":438,"context_line":""},{"line_number":439,"context_line":"        self.mock_object(rest.HSPRestBackend, \"get_clusters\","},{"line_number":440,"context_line":"                         mock.Mock(return_value\u003dhsp_cluster))"},{"line_number":441,"context_line":"        self.mock_object(manila.share.driver.ShareDriver,"},{"line_number":442,"context_line":"                         \u0027_update_share_stats\u0027, mock.Mock())"},{"line_number":443,"context_line":""},{"line_number":444,"context_line":"        self._driver._update_share_stats()"},{"line_number":445,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"dada55a8_051a8e17","line":442,"range":{"start_line":441,"start_character":8,"end_line":442,"end_character":60},"updated":"2016-07-22 16:25:50.000000000","message":"mock__update_share_stats \u003d self.mock_object(\n    manila.share.driver.ShareDriver, \u0027_update_share_stats\u0027)","commit_id":"a37e140676c2aee5dd95aa7fa30f87b990acff57"},{"author":{"_account_id":17097,"name":"Tiago Pasqualini da Silva","email":"t.pasqualini@luizalabs.com","username":"tiago.pasqualini"},"change_message_id":"97a1ac010ca1ff73571e673f77027849e9d251e4","unresolved":false,"context_lines":[{"line_number":438,"context_line":""},{"line_number":439,"context_line":"        self.mock_object(rest.HSPRestBackend, \"get_clusters\","},{"line_number":440,"context_line":"                         mock.Mock(return_value\u003dhsp_cluster))"},{"line_number":441,"context_line":"        self.mock_object(manila.share.driver.ShareDriver,"},{"line_number":442,"context_line":"                         \u0027_update_share_stats\u0027, mock.Mock())"},{"line_number":443,"context_line":""},{"line_number":444,"context_line":"        self._driver._update_share_stats()"},{"line_number":445,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"dada55a8_4a30c601","line":442,"range":{"start_line":441,"start_character":8,"end_line":442,"end_character":60},"in_reply_to":"dada55a8_051a8e17","updated":"2016-07-25 17:47:55.000000000","message":"Done","commit_id":"a37e140676c2aee5dd95aa7fa30f87b990acff57"},{"author":{"_account_id":8851,"name":"Valeriy Ponomaryov","email":"kiparis.kh@gmail.com","username":"vponomaryov"},"change_message_id":"6803cf2be948d09a004f16e5d9944d9a1e7f39c6","unresolved":false,"context_lines":[{"line_number":444,"context_line":"        self._driver._update_share_stats()"},{"line_number":445,"context_line":""},{"line_number":446,"context_line":"        rest.HSPRestBackend.get_clusters.assert_called_once_with()"},{"line_number":447,"context_line":"        (manila.share.driver.ShareDriver._update_share_stats."},{"line_number":448,"context_line":"         assert_called_once_with(fake_data))"},{"line_number":449,"context_line":"        self.assertTrue(self.mock_log.info.called)"}],"source_content_type":"text/x-python","patch_set":8,"id":"dada55a8_e5ff7aa8","line":448,"range":{"start_line":447,"start_character":8,"end_line":448,"end_character":44},"updated":"2016-07-22 16:25:50.000000000","message":"To avoid such ugly constructions you can assign object link in place you mock it. see above ^\n\nAnd it will look like following:\n\"\"\"\nmock__update_share_stats.assert_called_once_with(fake_data)\n\"\"\"","commit_id":"a37e140676c2aee5dd95aa7fa30f87b990acff57"},{"author":{"_account_id":17097,"name":"Tiago Pasqualini da Silva","email":"t.pasqualini@luizalabs.com","username":"tiago.pasqualini"},"change_message_id":"97a1ac010ca1ff73571e673f77027849e9d251e4","unresolved":false,"context_lines":[{"line_number":444,"context_line":"        self._driver._update_share_stats()"},{"line_number":445,"context_line":""},{"line_number":446,"context_line":"        rest.HSPRestBackend.get_clusters.assert_called_once_with()"},{"line_number":447,"context_line":"        (manila.share.driver.ShareDriver._update_share_stats."},{"line_number":448,"context_line":"         assert_called_once_with(fake_data))"},{"line_number":449,"context_line":"        self.assertTrue(self.mock_log.info.called)"}],"source_content_type":"text/x-python","patch_set":8,"id":"dada55a8_ea209ab2","line":448,"range":{"start_line":447,"start_character":8,"end_line":448,"end_character":44},"in_reply_to":"dada55a8_e5ff7aa8","updated":"2016-07-25 17:47:55.000000000","message":"Done","commit_id":"a37e140676c2aee5dd95aa7fa30f87b990acff57"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"e4ce2717d54dda3a62dd21f7a2a77f428593dedb","unresolved":false,"context_lines":[{"line_number":30,"context_line":""},{"line_number":31,"context_line":"file_system \u003d {"},{"line_number":32,"context_line":"    \u0027id\u0027: \u002733689245-1806-45d0-8507-0700b5f89750\u0027,"},{"line_number":33,"context_line":"    \u0027properties\u0027: {\u0027cluster-id\u0027: \u002785d5b9e2-27f3-11e6-8b50-005056a75f66\u0027,"},{"line_number":34,"context_line":"                   \u0027quota\u0027: 107374182400,"},{"line_number":35,"context_line":"                   \u0027name\u0027: \u002707c966f9-fea2-4e12-ab72-97cb3c529bb5\u0027,"},{"line_number":36,"context_line":"                   \u0027used-capacity\u0027: 53687091200,"},{"line_number":37,"context_line":"                   \u0027free-capacity\u0027: 53687091200},"},{"line_number":38,"context_line":"}"},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"share \u003d {"}],"source_content_type":"text/x-python","patch_set":11,"id":"bacf61ea_8fa8d221","line":37,"range":{"start_line":33,"start_character":18,"end_line":37,"end_character":49},"updated":"2016-07-31 21:15:54.000000000","message":"wrap this dictionary properly..","commit_id":"cfec736f0f194b65b871e791927820ef9f29868e"},{"author":{"_account_id":17097,"name":"Tiago Pasqualini da Silva","email":"t.pasqualini@luizalabs.com","username":"tiago.pasqualini"},"change_message_id":"0cc7f08c6809ae893d69bc21e62d26c3b8a9981b","unresolved":false,"context_lines":[{"line_number":30,"context_line":""},{"line_number":31,"context_line":"file_system \u003d {"},{"line_number":32,"context_line":"    \u0027id\u0027: \u002733689245-1806-45d0-8507-0700b5f89750\u0027,"},{"line_number":33,"context_line":"    \u0027properties\u0027: {\u0027cluster-id\u0027: \u002785d5b9e2-27f3-11e6-8b50-005056a75f66\u0027,"},{"line_number":34,"context_line":"                   \u0027quota\u0027: 107374182400,"},{"line_number":35,"context_line":"                   \u0027name\u0027: \u002707c966f9-fea2-4e12-ab72-97cb3c529bb5\u0027,"},{"line_number":36,"context_line":"                   \u0027used-capacity\u0027: 53687091200,"},{"line_number":37,"context_line":"                   \u0027free-capacity\u0027: 53687091200},"},{"line_number":38,"context_line":"}"},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"share \u003d {"}],"source_content_type":"text/x-python","patch_set":11,"id":"bacf61ea_cd3d842c","line":37,"range":{"start_line":33,"start_character":18,"end_line":37,"end_character":49},"in_reply_to":"bacf61ea_8fa8d221","updated":"2016-08-01 21:18:42.000000000","message":"Done","commit_id":"cfec736f0f194b65b871e791927820ef9f29868e"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"e4ce2717d54dda3a62dd21f7a2a77f428593dedb","unresolved":false,"context_lines":[{"line_number":46,"context_line":"    \u0027share_type_id\u0027: 1,"},{"line_number":47,"context_line":"    \u0027share_network_id\u0027: \u0027bb329e24-3bdb-491d-acfd-dfe70c09b98d\u0027,"},{"line_number":48,"context_line":"    \u0027share_server_id\u0027: \u0027cc345a53-491d-acfd-3bdb-dfe70c09b98d\u0027,"},{"line_number":49,"context_line":"    \u0027export_locations\u0027: [{\u0027path\u0027: \u0027172.24.44.10:/\u0027"},{"line_number":50,"context_line":"                                  \u0027aa4a7710-f326-41fb-ad18-b4ad587fc87a\u0027}],"},{"line_number":51,"context_line":"    \u0027properties\u0027: {\u0027file-system-id\u0027: \u002733689245-1806-45d0-8507-0700b5f89750\u0027,"},{"line_number":52,"context_line":"                   \u0027file-system-name\u0027: \u0027name\u0027},"},{"line_number":53,"context_line":"}"},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"invalid_share \u003d {"}],"source_content_type":"text/x-python","patch_set":11,"id":"bacf61ea_6fa59e45","line":52,"range":{"start_line":49,"start_character":4,"end_line":52,"end_character":47},"updated":"2016-07-31 21:15:54.000000000","message":"same","commit_id":"cfec736f0f194b65b871e791927820ef9f29868e"},{"author":{"_account_id":17097,"name":"Tiago Pasqualini da Silva","email":"t.pasqualini@luizalabs.com","username":"tiago.pasqualini"},"change_message_id":"0cc7f08c6809ae893d69bc21e62d26c3b8a9981b","unresolved":false,"context_lines":[{"line_number":46,"context_line":"    \u0027share_type_id\u0027: 1,"},{"line_number":47,"context_line":"    \u0027share_network_id\u0027: \u0027bb329e24-3bdb-491d-acfd-dfe70c09b98d\u0027,"},{"line_number":48,"context_line":"    \u0027share_server_id\u0027: \u0027cc345a53-491d-acfd-3bdb-dfe70c09b98d\u0027,"},{"line_number":49,"context_line":"    \u0027export_locations\u0027: [{\u0027path\u0027: \u0027172.24.44.10:/\u0027"},{"line_number":50,"context_line":"                                  \u0027aa4a7710-f326-41fb-ad18-b4ad587fc87a\u0027}],"},{"line_number":51,"context_line":"    \u0027properties\u0027: {\u0027file-system-id\u0027: \u002733689245-1806-45d0-8507-0700b5f89750\u0027,"},{"line_number":52,"context_line":"                   \u0027file-system-name\u0027: \u0027name\u0027},"},{"line_number":53,"context_line":"}"},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"invalid_share \u003d {"}],"source_content_type":"text/x-python","patch_set":11,"id":"bacf61ea_2d49c0d0","line":52,"range":{"start_line":49,"start_character":4,"end_line":52,"end_character":47},"in_reply_to":"bacf61ea_6fa59e45","updated":"2016-08-01 21:18:42.000000000","message":"Done","commit_id":"cfec736f0f194b65b871e791927820ef9f29868e"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"e4ce2717d54dda3a62dd21f7a2a77f428593dedb","unresolved":false,"context_lines":[{"line_number":68,"context_line":""},{"line_number":69,"context_line":"hsp_cluster \u003d {"},{"line_number":70,"context_line":"    \u0027id\u0027: \u0027835e7c00-9d04-11e5-a935-f4521480e990\u0027,"},{"line_number":71,"context_line":"    \u0027properties\u0027: {\u0027total-storage-capacity\u0027: 107374182400,"},{"line_number":72,"context_line":"                   \u0027total-storage-used\u0027: 53687091200,"},{"line_number":73,"context_line":"                   \u0027total-storage-available\u0027: 53687091200,"},{"line_number":74,"context_line":"                   \u0027total-file-system-capacity\u0027: 107374182400,"},{"line_number":75,"context_line":"                   \u0027total-file-system-space-used\u0027: 53687091200,"},{"line_number":76,"context_line":"                   \u0027total-file-system-space-available\u0027: 53687091200},"},{"line_number":77,"context_line":"}"},{"line_number":78,"context_line":""},{"line_number":79,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"bacf61ea_cf648a23","line":76,"range":{"start_line":71,"start_character":18,"end_line":76,"end_character":69},"updated":"2016-07-31 21:15:54.000000000","message":"same","commit_id":"cfec736f0f194b65b871e791927820ef9f29868e"},{"author":{"_account_id":17097,"name":"Tiago Pasqualini da Silva","email":"t.pasqualini@luizalabs.com","username":"tiago.pasqualini"},"change_message_id":"0cc7f08c6809ae893d69bc21e62d26c3b8a9981b","unresolved":false,"context_lines":[{"line_number":68,"context_line":""},{"line_number":69,"context_line":"hsp_cluster \u003d {"},{"line_number":70,"context_line":"    \u0027id\u0027: \u0027835e7c00-9d04-11e5-a935-f4521480e990\u0027,"},{"line_number":71,"context_line":"    \u0027properties\u0027: {\u0027total-storage-capacity\u0027: 107374182400,"},{"line_number":72,"context_line":"                   \u0027total-storage-used\u0027: 53687091200,"},{"line_number":73,"context_line":"                   \u0027total-storage-available\u0027: 53687091200,"},{"line_number":74,"context_line":"                   \u0027total-file-system-capacity\u0027: 107374182400,"},{"line_number":75,"context_line":"                   \u0027total-file-system-space-used\u0027: 53687091200,"},{"line_number":76,"context_line":"                   \u0027total-file-system-space-available\u0027: 53687091200},"},{"line_number":77,"context_line":"}"},{"line_number":78,"context_line":""},{"line_number":79,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"bacf61ea_6d15789a","line":76,"range":{"start_line":71,"start_character":18,"end_line":76,"end_character":69},"in_reply_to":"bacf61ea_cf648a23","updated":"2016-08-01 21:18:42.000000000","message":"Done","commit_id":"cfec736f0f194b65b871e791927820ef9f29868e"},{"author":{"_account_id":15100,"name":"zhongjun","email":"jun.zhongjun2@gmail.com","username":"zhongjun2"},"change_message_id":"12cd8560454774205ea487ea7e02e65331fa3daa","unresolved":false,"context_lines":[{"line_number":81,"context_line":"    def setUp(self):"},{"line_number":82,"context_line":"        super(HitachiHSPTestCase, self).setUp()"},{"line_number":83,"context_line":"        CONF.set_default(\u0027driver_handles_share_servers\u0027, False)"},{"line_number":84,"context_line":"        CONF.hitachi_hsp_host \u003d \u0027172.24.47.190\u0027"},{"line_number":85,"context_line":"        CONF.hitachi_hsp_username \u003d \u0027hsp_user\u0027"},{"line_number":86,"context_line":"        CONF.hitachi_hsp_password \u003d \u0027hsp_password\u0027"},{"line_number":87,"context_line":"        CONF.hitachi_hsp_job_timeout \u003d 300"},{"line_number":88,"context_line":""},{"line_number":89,"context_line":"        self.fake_conf \u003d manila.share.configuration.Configuration(None)"}],"source_content_type":"text/x-python","patch_set":11,"id":"bacf61ea_495a532b","line":86,"range":{"start_line":84,"start_character":8,"end_line":86,"end_character":50},"updated":"2016-08-01 04:42:34.000000000","message":"You already add hitachi_hsp_host, hitachi_hsp_username, hitachi_hsp_password in conf_fixture.py, why not just use it?  https://review.openstack.org/#/c/329134/11/manila/tests/conf_fixture.py","commit_id":"cfec736f0f194b65b871e791927820ef9f29868e"},{"author":{"_account_id":17097,"name":"Tiago Pasqualini da Silva","email":"t.pasqualini@luizalabs.com","username":"tiago.pasqualini"},"change_message_id":"0cc7f08c6809ae893d69bc21e62d26c3b8a9981b","unresolved":false,"context_lines":[{"line_number":81,"context_line":"    def setUp(self):"},{"line_number":82,"context_line":"        super(HitachiHSPTestCase, self).setUp()"},{"line_number":83,"context_line":"        CONF.set_default(\u0027driver_handles_share_servers\u0027, False)"},{"line_number":84,"context_line":"        CONF.hitachi_hsp_host \u003d \u0027172.24.47.190\u0027"},{"line_number":85,"context_line":"        CONF.hitachi_hsp_username \u003d \u0027hsp_user\u0027"},{"line_number":86,"context_line":"        CONF.hitachi_hsp_password \u003d \u0027hsp_password\u0027"},{"line_number":87,"context_line":"        CONF.hitachi_hsp_job_timeout \u003d 300"},{"line_number":88,"context_line":""},{"line_number":89,"context_line":"        self.fake_conf \u003d manila.share.configuration.Configuration(None)"}],"source_content_type":"text/x-python","patch_set":11,"id":"bacf61ea_a3aadf82","line":86,"range":{"start_line":84,"start_character":8,"end_line":86,"end_character":50},"in_reply_to":"bacf61ea_495a532b","updated":"2016-08-01 21:18:42.000000000","message":"They are two different things.","commit_id":"cfec736f0f194b65b871e791927820ef9f29868e"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"e4ce2717d54dda3a62dd21f7a2a77f428593dedb","unresolved":false,"context_lines":[{"line_number":98,"context_line":"        access \u003d {"},{"line_number":99,"context_line":"            \u0027access_type\u0027: \u0027ip\u0027,"},{"line_number":100,"context_line":"            \u0027access_to\u0027: \u0027172.24.10.10\u0027,"},{"line_number":101,"context_line":"            \u0027access_level\u0027: \u0027rw\u0027"},{"line_number":102,"context_line":"        }"},{"line_number":103,"context_line":""},{"line_number":104,"context_line":"        access_list \u003d [access]"}],"source_content_type":"text/x-python","patch_set":11,"id":"bacf61ea_af6956fb","line":101,"range":{"start_line":101,"start_character":31,"end_line":101,"end_character":32},"updated":"2016-07-31 21:15:54.000000000","message":"trailing comma, here and all the access dicts below.","commit_id":"cfec736f0f194b65b871e791927820ef9f29868e"},{"author":{"_account_id":17097,"name":"Tiago Pasqualini da Silva","email":"t.pasqualini@luizalabs.com","username":"tiago.pasqualini"},"change_message_id":"0cc7f08c6809ae893d69bc21e62d26c3b8a9981b","unresolved":false,"context_lines":[{"line_number":98,"context_line":"        access \u003d {"},{"line_number":99,"context_line":"            \u0027access_type\u0027: \u0027ip\u0027,"},{"line_number":100,"context_line":"            \u0027access_to\u0027: \u0027172.24.10.10\u0027,"},{"line_number":101,"context_line":"            \u0027access_level\u0027: \u0027rw\u0027"},{"line_number":102,"context_line":"        }"},{"line_number":103,"context_line":""},{"line_number":104,"context_line":"        access_list \u003d [access]"}],"source_content_type":"text/x-python","patch_set":11,"id":"bacf61ea_ad0bf07b","line":101,"range":{"start_line":101,"start_character":31,"end_line":101,"end_character":32},"in_reply_to":"bacf61ea_af6956fb","updated":"2016-08-01 21:18:42.000000000","message":"Done","commit_id":"cfec736f0f194b65b871e791927820ef9f29868e"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"4cdf4f66d6a7e23dbbfef54247fab14dbd078973","unresolved":false,"context_lines":[{"line_number":449,"context_line":"            \u0027reserved_percentage\u0027: 0,"},{"line_number":450,"context_line":"            \u0027qos\u0027: False,"},{"line_number":451,"context_line":"            \u0027thin_provisioning\u0027: True,"},{"line_number":452,"context_line":"            \u0027max_over_subscription_ratio\u0027: 20,"},{"line_number":453,"context_line":"        }"},{"line_number":454,"context_line":""},{"line_number":455,"context_line":"        self.mock_object(rest.HSPRestBackend, \"get_clusters\","}],"source_content_type":"text/x-python","patch_set":11,"id":"bacf61ea_47df080d","line":452,"updated":"2016-07-29 16:58:31.000000000","message":"provisioned_capacity_gb","commit_id":"cfec736f0f194b65b871e791927820ef9f29868e"},{"author":{"_account_id":11865,"name":"Clinton Knight","email":"cknight@netapp.com","username":"cknight"},"change_message_id":"a39528850f5079a2758f3193cba99516c96f045d","unresolved":false,"context_lines":[{"line_number":120,"context_line":""},{"line_number":121,"context_line":"        self._driver.update_access(\u0027context\u0027, share, access_list, [], [])"},{"line_number":122,"context_line":""},{"line_number":123,"context_line":"        self.assertTrue(self.mock_log.debug.called)"},{"line_number":124,"context_line":""},{"line_number":125,"context_line":"        rest.HSPRestBackend.get_file_system.assert_called_once_with("},{"line_number":126,"context_line":"            share[\u0027id\u0027])"}],"source_content_type":"text/x-python","patch_set":18,"id":"9ad45d7e_d61dd367","line":123,"range":{"start_line":123,"start_character":8,"end_line":123,"end_character":51},"updated":"2016-08-08 17:52:23.000000000","message":"Testing logging statements is generally not useful unless it\u0027s the only way to ensure a code path was executed.","commit_id":"4ab1c18df2fb2381883a9ef54716cb1fa180b7cb"}],"manila/tests/share/drivers/hitachi/test_rest.py":[{"author":{"_account_id":8851,"name":"Valeriy Ponomaryov","email":"kiparis.kh@gmail.com","username":"vponomaryov"},"change_message_id":"f79bb5e236c6fd7f4d4e76175fafcf94868ebce7","unresolved":false,"context_lines":[{"line_number":325,"context_line":"              {\u0027value\u0027: None, \u0027res\u0027: []})"},{"line_number":326,"context_line":"    @ddt.unpack"},{"line_number":327,"context_line":"    def test_get_access_rules(self, value, res):"},{"line_number":328,"context_line":"        url \u003d \"https://172.24.47.190/hspapi/shares/%s/access-rules\" % \\"},{"line_number":329,"context_line":"              share[\u0027id\u0027]"},{"line_number":330,"context_line":""},{"line_number":331,"context_line":"        self.mock_object(rest.HSPRestBackend, \"_send_get\", mock.Mock("},{"line_number":332,"context_line":"            return_value\u003dvalue))"}],"source_content_type":"text/x-python","patch_set":8,"id":"dada55a8_2567d226","line":329,"range":{"start_line":328,"start_character":8,"end_line":329,"end_character":25},"updated":"2016-07-22 16:28:59.000000000","message":"http://docs.openstack.org/developer/hacking/#general\n\n\"\"\"\nIt is preferred to wrap long lines in parentheses and not a backslash for line continuation.\n\"\"\"","commit_id":"a37e140676c2aee5dd95aa7fa30f87b990acff57"},{"author":{"_account_id":17097,"name":"Tiago Pasqualini da Silva","email":"t.pasqualini@luizalabs.com","username":"tiago.pasqualini"},"change_message_id":"97a1ac010ca1ff73571e673f77027849e9d251e4","unresolved":false,"context_lines":[{"line_number":325,"context_line":"              {\u0027value\u0027: None, \u0027res\u0027: []})"},{"line_number":326,"context_line":"    @ddt.unpack"},{"line_number":327,"context_line":"    def test_get_access_rules(self, value, res):"},{"line_number":328,"context_line":"        url \u003d \"https://172.24.47.190/hspapi/shares/%s/access-rules\" % \\"},{"line_number":329,"context_line":"              share[\u0027id\u0027]"},{"line_number":330,"context_line":""},{"line_number":331,"context_line":"        self.mock_object(rest.HSPRestBackend, \"_send_get\", mock.Mock("},{"line_number":332,"context_line":"            return_value\u003dvalue))"}],"source_content_type":"text/x-python","patch_set":8,"id":"dada55a8_2a02b20b","line":329,"range":{"start_line":328,"start_character":8,"end_line":329,"end_character":25},"in_reply_to":"dada55a8_2567d226","updated":"2016-07-25 17:47:55.000000000","message":"Done","commit_id":"a37e140676c2aee5dd95aa7fa30f87b990acff57"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"e4ce2717d54dda3a62dd21f7a2a77f428593dedb","unresolved":false,"context_lines":[{"line_number":25,"context_line":""},{"line_number":26,"context_line":"file_system \u003d {"},{"line_number":27,"context_line":"    \u0027id\u0027: \u002733689245-1806-45d0-8507-0700b5f89750\u0027,"},{"line_number":28,"context_line":"    \u0027properties\u0027: {\u0027cluster-id\u0027: \u002785d5b9e2-27f3-11e6-8b50-005056a75f66\u0027,"},{"line_number":29,"context_line":"                   \u0027quota\u0027: 107374182400,"},{"line_number":30,"context_line":"                   \u0027name\u0027: \u002707c966f9-fea2-4e12-ab72-97cb3c529bb5\u0027,"},{"line_number":31,"context_line":"                   \u0027used-capacity\u0027: 53687091200,"},{"line_number":32,"context_line":"                   \u0027free-capacity\u0027: 53687091200},"},{"line_number":33,"context_line":"}"},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"share \u003d {"}],"source_content_type":"text/x-python","patch_set":11,"id":"bacf61ea_4f79bac7","line":32,"range":{"start_line":28,"start_character":18,"end_line":32,"end_character":49},"updated":"2016-07-31 21:15:54.000000000","message":"please wrap","commit_id":"cfec736f0f194b65b871e791927820ef9f29868e"},{"author":{"_account_id":17097,"name":"Tiago Pasqualini da Silva","email":"t.pasqualini@luizalabs.com","username":"tiago.pasqualini"},"change_message_id":"0cc7f08c6809ae893d69bc21e62d26c3b8a9981b","unresolved":false,"context_lines":[{"line_number":25,"context_line":""},{"line_number":26,"context_line":"file_system \u003d {"},{"line_number":27,"context_line":"    \u0027id\u0027: \u002733689245-1806-45d0-8507-0700b5f89750\u0027,"},{"line_number":28,"context_line":"    \u0027properties\u0027: {\u0027cluster-id\u0027: \u002785d5b9e2-27f3-11e6-8b50-005056a75f66\u0027,"},{"line_number":29,"context_line":"                   \u0027quota\u0027: 107374182400,"},{"line_number":30,"context_line":"                   \u0027name\u0027: \u002707c966f9-fea2-4e12-ab72-97cb3c529bb5\u0027,"},{"line_number":31,"context_line":"                   \u0027used-capacity\u0027: 53687091200,"},{"line_number":32,"context_line":"                   \u0027free-capacity\u0027: 53687091200},"},{"line_number":33,"context_line":"}"},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"share \u003d {"}],"source_content_type":"text/x-python","patch_set":11,"id":"bacf61ea_0dbf9caa","line":32,"range":{"start_line":28,"start_character":18,"end_line":32,"end_character":49},"in_reply_to":"bacf61ea_4f79bac7","updated":"2016-08-01 21:18:42.000000000","message":"Done","commit_id":"cfec736f0f194b65b871e791927820ef9f29868e"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"e4ce2717d54dda3a62dd21f7a2a77f428593dedb","unresolved":false,"context_lines":[{"line_number":41,"context_line":"    \u0027share_type_id\u0027: 1,"},{"line_number":42,"context_line":"    \u0027share_network_id\u0027: \u0027bb329e24-3bdb-491d-acfd-dfe70c09b98d\u0027,"},{"line_number":43,"context_line":"    \u0027share_server_id\u0027: \u0027cc345a53-491d-acfd-3bdb-dfe70c09b98d\u0027,"},{"line_number":44,"context_line":"    \u0027export_locations\u0027: [{\u0027path\u0027: \u0027172.24.44.10:/\u0027"},{"line_number":45,"context_line":"                                  \u0027aa4a7710-f326-41fb-ad18-b4ad587fc87a\u0027}],"},{"line_number":46,"context_line":"    \u0027properties\u0027: {\u0027file-system-id\u0027: \u002733689245-1806-45d0-8507-0700b5f89750\u0027},"},{"line_number":47,"context_line":"}"},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"access_rule \u003d {"},{"line_number":50,"context_line":"    \u0027id\u0027: \u0027acdc7172b-fe07-46c4-b78f-df3e0324ccd0\u0027,"}],"source_content_type":"text/x-python","patch_set":11,"id":"bacf61ea_2f7606d7","line":47,"range":{"start_line":44,"start_character":4,"end_line":47,"end_character":1},"updated":"2016-07-31 21:15:54.000000000","message":"wrap","commit_id":"cfec736f0f194b65b871e791927820ef9f29868e"},{"author":{"_account_id":17097,"name":"Tiago Pasqualini da Silva","email":"t.pasqualini@luizalabs.com","username":"tiago.pasqualini"},"change_message_id":"0cc7f08c6809ae893d69bc21e62d26c3b8a9981b","unresolved":false,"context_lines":[{"line_number":41,"context_line":"    \u0027share_type_id\u0027: 1,"},{"line_number":42,"context_line":"    \u0027share_network_id\u0027: \u0027bb329e24-3bdb-491d-acfd-dfe70c09b98d\u0027,"},{"line_number":43,"context_line":"    \u0027share_server_id\u0027: \u0027cc345a53-491d-acfd-3bdb-dfe70c09b98d\u0027,"},{"line_number":44,"context_line":"    \u0027export_locations\u0027: [{\u0027path\u0027: \u0027172.24.44.10:/\u0027"},{"line_number":45,"context_line":"                                  \u0027aa4a7710-f326-41fb-ad18-b4ad587fc87a\u0027}],"},{"line_number":46,"context_line":"    \u0027properties\u0027: {\u0027file-system-id\u0027: \u002733689245-1806-45d0-8507-0700b5f89750\u0027},"},{"line_number":47,"context_line":"}"},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"access_rule \u003d {"},{"line_number":50,"context_line":"    \u0027id\u0027: \u0027acdc7172b-fe07-46c4-b78f-df3e0324ccd0\u0027,"}],"source_content_type":"text/x-python","patch_set":11,"id":"bacf61ea_6d073882","line":47,"range":{"start_line":44,"start_character":4,"end_line":47,"end_character":1},"in_reply_to":"bacf61ea_2f7606d7","updated":"2016-08-01 21:18:42.000000000","message":"Done","commit_id":"cfec736f0f194b65b871e791927820ef9f29868e"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"e4ce2717d54dda3a62dd21f7a2a77f428593dedb","unresolved":false,"context_lines":[{"line_number":61,"context_line":""},{"line_number":62,"context_line":"hsp_cluster \u003d {"},{"line_number":63,"context_line":"    \u0027id\u0027: \u0027835e7c00-9d04-11e5-a935-f4521480e990\u0027,"},{"line_number":64,"context_line":"    \u0027properties\u0027: {\u0027total-storage-capacity\u0027: 107374182400,"},{"line_number":65,"context_line":"                   \u0027total-storage-used\u0027: 53687091200,"},{"line_number":66,"context_line":"                   \u0027total-storage-available\u0027: 53687091200,"},{"line_number":67,"context_line":"                   \u0027total-file-system-capacity\u0027: 107374182400,"},{"line_number":68,"context_line":"                   \u0027total-file-system-space-used\u0027: 53687091200,"},{"line_number":69,"context_line":"                   \u0027total-file-system-space-available\u0027: 53687091200},"},{"line_number":70,"context_line":"}"},{"line_number":71,"context_line":""},{"line_number":72,"context_line":""},{"line_number":73,"context_line":"class FakeRequests(object):"}],"source_content_type":"text/x-python","patch_set":11,"id":"bacf61ea_8f7f32aa","line":70,"range":{"start_line":64,"start_character":4,"end_line":70,"end_character":1},"updated":"2016-07-31 21:15:54.000000000","message":"wrap","commit_id":"cfec736f0f194b65b871e791927820ef9f29868e"},{"author":{"_account_id":17097,"name":"Tiago Pasqualini da Silva","email":"t.pasqualini@luizalabs.com","username":"tiago.pasqualini"},"change_message_id":"0cc7f08c6809ae893d69bc21e62d26c3b8a9981b","unresolved":false,"context_lines":[{"line_number":61,"context_line":""},{"line_number":62,"context_line":"hsp_cluster \u003d {"},{"line_number":63,"context_line":"    \u0027id\u0027: \u0027835e7c00-9d04-11e5-a935-f4521480e990\u0027,"},{"line_number":64,"context_line":"    \u0027properties\u0027: {\u0027total-storage-capacity\u0027: 107374182400,"},{"line_number":65,"context_line":"                   \u0027total-storage-used\u0027: 53687091200,"},{"line_number":66,"context_line":"                   \u0027total-storage-available\u0027: 53687091200,"},{"line_number":67,"context_line":"                   \u0027total-file-system-capacity\u0027: 107374182400,"},{"line_number":68,"context_line":"                   \u0027total-file-system-space-used\u0027: 53687091200,"},{"line_number":69,"context_line":"                   \u0027total-file-system-space-available\u0027: 53687091200},"},{"line_number":70,"context_line":"}"},{"line_number":71,"context_line":""},{"line_number":72,"context_line":""},{"line_number":73,"context_line":"class FakeRequests(object):"}],"source_content_type":"text/x-python","patch_set":11,"id":"bacf61ea_6de0d8cd","line":70,"range":{"start_line":64,"start_character":4,"end_line":70,"end_character":1},"in_reply_to":"bacf61ea_8f7f32aa","updated":"2016-08-01 21:18:42.000000000","message":"Done","commit_id":"cfec736f0f194b65b871e791927820ef9f29868e"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"e4ce2717d54dda3a62dd21f7a2a77f428593dedb","unresolved":false,"context_lines":[{"line_number":361,"context_line":"            \u0027messages\u0027: [{"},{"line_number":362,"context_line":"                \u0027id\u0027: \u0027fake_id\u0027,"},{"line_number":363,"context_line":"                \u0027message\u0027: \u0027fake_msg\u0027"},{"line_number":364,"context_line":"            }],"},{"line_number":365,"context_line":"        }"},{"line_number":366,"context_line":""},{"line_number":367,"context_line":"        self.mock_object(rest.HSPRestBackend, \"_send_get\", mock.Mock("}],"source_content_type":"text/x-python","patch_set":11,"id":"bacf61ea_2f5d6647","line":364,"range":{"start_line":364,"start_character":14,"end_line":364,"end_character":15},"updated":"2016-07-31 21:15:54.000000000","message":"remove","commit_id":"cfec736f0f194b65b871e791927820ef9f29868e"},{"author":{"_account_id":17097,"name":"Tiago Pasqualini da Silva","email":"t.pasqualini@luizalabs.com","username":"tiago.pasqualini"},"change_message_id":"0cc7f08c6809ae893d69bc21e62d26c3b8a9981b","unresolved":false,"context_lines":[{"line_number":361,"context_line":"            \u0027messages\u0027: [{"},{"line_number":362,"context_line":"                \u0027id\u0027: \u0027fake_id\u0027,"},{"line_number":363,"context_line":"                \u0027message\u0027: \u0027fake_msg\u0027"},{"line_number":364,"context_line":"            }],"},{"line_number":365,"context_line":"        }"},{"line_number":366,"context_line":""},{"line_number":367,"context_line":"        self.mock_object(rest.HSPRestBackend, \"_send_get\", mock.Mock("}],"source_content_type":"text/x-python","patch_set":11,"id":"bacf61ea_edfb2877","line":364,"range":{"start_line":364,"start_character":14,"end_line":364,"end_character":15},"in_reply_to":"bacf61ea_2f5d6647","updated":"2016-08-01 21:18:42.000000000","message":"Done","commit_id":"cfec736f0f194b65b871e791927820ef9f29868e"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"e4ce2717d54dda3a62dd21f7a2a77f428593dedb","unresolved":false,"context_lines":[{"line_number":386,"context_line":"            \u0027messages\u0027: [{"},{"line_number":387,"context_line":"                \u0027id\u0027: \u0027fake_id\u0027,"},{"line_number":388,"context_line":"                \u0027message\u0027: \u0027fake_msg\u0027"},{"line_number":389,"context_line":"            }],"},{"line_number":390,"context_line":"        }"},{"line_number":391,"context_line":""},{"line_number":392,"context_line":"        mock_time.side_effect \u003d iter([100, 500])"}],"source_content_type":"text/x-python","patch_set":11,"id":"bacf61ea_0f422268","line":389,"range":{"start_line":389,"start_character":14,"end_line":389,"end_character":15},"updated":"2016-07-31 21:15:54.000000000","message":"remove","commit_id":"cfec736f0f194b65b871e791927820ef9f29868e"},{"author":{"_account_id":17097,"name":"Tiago Pasqualini da Silva","email":"t.pasqualini@luizalabs.com","username":"tiago.pasqualini"},"change_message_id":"0cc7f08c6809ae893d69bc21e62d26c3b8a9981b","unresolved":false,"context_lines":[{"line_number":386,"context_line":"            \u0027messages\u0027: [{"},{"line_number":387,"context_line":"                \u0027id\u0027: \u0027fake_id\u0027,"},{"line_number":388,"context_line":"                \u0027message\u0027: \u0027fake_msg\u0027"},{"line_number":389,"context_line":"            }],"},{"line_number":390,"context_line":"        }"},{"line_number":391,"context_line":""},{"line_number":392,"context_line":"        mock_time.side_effect \u003d iter([100, 500])"}],"source_content_type":"text/x-python","patch_set":11,"id":"bacf61ea_8d00ac67","line":389,"range":{"start_line":389,"start_character":14,"end_line":389,"end_character":15},"in_reply_to":"bacf61ea_0f422268","updated":"2016-08-01 21:18:42.000000000","message":"Done","commit_id":"cfec736f0f194b65b871e791927820ef9f29868e"},{"author":{"_account_id":11865,"name":"Clinton Knight","email":"cknight@netapp.com","username":"cknight"},"change_message_id":"a39528850f5079a2758f3193cba99516c96f045d","unresolved":false,"context_lines":[{"line_number":23,"context_line":"from manila.share.drivers.hitachi import rest"},{"line_number":24,"context_line":"from manila import test"},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"file_system \u003d {"},{"line_number":27,"context_line":"    \u0027id\u0027: \u002733689245-1806-45d0-8507-0700b5f89750\u0027,"},{"line_number":28,"context_line":"    \u0027properties\u0027: {"},{"line_number":29,"context_line":"        \u0027cluster-id\u0027: \u002785d5b9e2-27f3-11e6-8b50-005056a75f66\u0027,"},{"line_number":30,"context_line":"        \u0027quota\u0027: 107374182400,"},{"line_number":31,"context_line":"        \u0027name\u0027: \u002707c966f9-fea2-4e12-ab72-97cb3c529bb5\u0027,"},{"line_number":32,"context_line":"        \u0027used-capacity\u0027: 53687091200,"},{"line_number":33,"context_line":"        \u0027free-capacity\u0027: 53687091200"},{"line_number":34,"context_line":"    },"},{"line_number":35,"context_line":"}"},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"share \u003d {"},{"line_number":38,"context_line":"    \u0027id\u0027: \u0027aa4a7710-f326-41fb-ad18-b4ad587fc87a\u0027,"},{"line_number":39,"context_line":"    \u0027name\u0027: \u0027aa4a7710-f326-41fb-ad18-b4ad587fc87a\u0027,"},{"line_number":40,"context_line":"    \u0027size\u0027: 50,"},{"line_number":41,"context_line":"    \u0027host\u0027: \u0027hsp\u0027,"},{"line_number":42,"context_line":"    \u0027share_proto\u0027: \u0027NFS\u0027,"},{"line_number":43,"context_line":"    \u0027share_type_id\u0027: 1,"},{"line_number":44,"context_line":"    \u0027share_network_id\u0027: \u0027bb329e24-3bdb-491d-acfd-dfe70c09b98d\u0027,"},{"line_number":45,"context_line":"    \u0027share_server_id\u0027: \u0027cc345a53-491d-acfd-3bdb-dfe70c09b98d\u0027,"},{"line_number":46,"context_line":"    \u0027export_locations\u0027: [{"},{"line_number":47,"context_line":"        \u0027path\u0027: \u0027172.24.44.10:/\u0027"},{"line_number":48,"context_line":"        \u0027aa4a7710-f326-41fb-ad18-b4ad587fc87a\u0027"},{"line_number":49,"context_line":"    }],"},{"line_number":50,"context_line":"    \u0027properties\u0027: {"},{"line_number":51,"context_line":"        \u0027file-system-id\u0027: \u002733689245-1806-45d0-8507-0700b5f89750\u0027"},{"line_number":52,"context_line":"    },"},{"line_number":53,"context_line":"}"},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"access_rule \u003d {"},{"line_number":56,"context_line":"    \u0027id\u0027: \u0027acdc7172b-fe07-46c4-b78f-df3e0324ccd0\u0027,"},{"line_number":57,"context_line":"    \u0027access_type\u0027: \u0027ip\u0027,"},{"line_number":58,"context_line":"    \u0027access_to\u0027: \u0027172.24.44.200\u0027,"},{"line_number":59,"context_line":"    \u0027access_level\u0027: \u0027rw\u0027,"},{"line_number":60,"context_line":"}"},{"line_number":61,"context_line":""},{"line_number":62,"context_line":"hsp_rules \u003d [{"},{"line_number":63,"context_line":"    \u0027name\u0027: \u0027qa_access\u0027,"},{"line_number":64,"context_line":"    \u0027host-specification\u0027: \u0027172.24.44.200\u0027,"},{"line_number":65,"context_line":"    \u0027read-write\u0027: \u0027true\u0027,"},{"line_number":66,"context_line":"}]"},{"line_number":67,"context_line":""},{"line_number":68,"context_line":"hsp_cluster \u003d {"},{"line_number":69,"context_line":"    \u0027id\u0027: \u0027835e7c00-9d04-11e5-a935-f4521480e990\u0027,"},{"line_number":70,"context_line":"    \u0027properties\u0027: {"},{"line_number":71,"context_line":"        \u0027total-storage-capacity\u0027: 107374182400,"},{"line_number":72,"context_line":"        \u0027total-storage-used\u0027: 53687091200,"},{"line_number":73,"context_line":"        \u0027total-storage-available\u0027: 53687091200,"},{"line_number":74,"context_line":"        \u0027total-file-system-capacity\u0027: 107374182400,"},{"line_number":75,"context_line":"        \u0027total-file-system-space-used\u0027: 53687091200,"},{"line_number":76,"context_line":"        \u0027total-file-system-space-available\u0027: 53687091200"},{"line_number":77,"context_line":"    },"},{"line_number":78,"context_line":"}"},{"line_number":79,"context_line":""},{"line_number":80,"context_line":""},{"line_number":81,"context_line":"class FakeRequests(object):"}],"source_content_type":"text/x-python","patch_set":18,"id":"9ad45d7e_ec03e80b","line":78,"range":{"start_line":26,"start_character":0,"end_line":78,"end_character":1},"updated":"2016-08-08 17:52:23.000000000","message":"This whole section of fake data is duplicated from test_hsp.py.  Please move it to a common fakes file.  I like to do something like:\n\n    import fakes.py as fake\n\nso that the tests read very easily, such as:\n\n    fake.hsp_cluster","commit_id":"4ab1c18df2fb2381883a9ef54716cb1fa180b7cb"},{"author":{"_account_id":17097,"name":"Tiago Pasqualini da Silva","email":"t.pasqualini@luizalabs.com","username":"tiago.pasqualini"},"change_message_id":"ce0ade264d04f1c59f453c80164b38bacbdb493d","unresolved":false,"context_lines":[{"line_number":23,"context_line":"from manila.share.drivers.hitachi import rest"},{"line_number":24,"context_line":"from manila import test"},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"file_system \u003d {"},{"line_number":27,"context_line":"    \u0027id\u0027: \u002733689245-1806-45d0-8507-0700b5f89750\u0027,"},{"line_number":28,"context_line":"    \u0027properties\u0027: {"},{"line_number":29,"context_line":"        \u0027cluster-id\u0027: \u002785d5b9e2-27f3-11e6-8b50-005056a75f66\u0027,"},{"line_number":30,"context_line":"        \u0027quota\u0027: 107374182400,"},{"line_number":31,"context_line":"        \u0027name\u0027: \u002707c966f9-fea2-4e12-ab72-97cb3c529bb5\u0027,"},{"line_number":32,"context_line":"        \u0027used-capacity\u0027: 53687091200,"},{"line_number":33,"context_line":"        \u0027free-capacity\u0027: 53687091200"},{"line_number":34,"context_line":"    },"},{"line_number":35,"context_line":"}"},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"share \u003d {"},{"line_number":38,"context_line":"    \u0027id\u0027: \u0027aa4a7710-f326-41fb-ad18-b4ad587fc87a\u0027,"},{"line_number":39,"context_line":"    \u0027name\u0027: \u0027aa4a7710-f326-41fb-ad18-b4ad587fc87a\u0027,"},{"line_number":40,"context_line":"    \u0027size\u0027: 50,"},{"line_number":41,"context_line":"    \u0027host\u0027: \u0027hsp\u0027,"},{"line_number":42,"context_line":"    \u0027share_proto\u0027: \u0027NFS\u0027,"},{"line_number":43,"context_line":"    \u0027share_type_id\u0027: 1,"},{"line_number":44,"context_line":"    \u0027share_network_id\u0027: \u0027bb329e24-3bdb-491d-acfd-dfe70c09b98d\u0027,"},{"line_number":45,"context_line":"    \u0027share_server_id\u0027: \u0027cc345a53-491d-acfd-3bdb-dfe70c09b98d\u0027,"},{"line_number":46,"context_line":"    \u0027export_locations\u0027: [{"},{"line_number":47,"context_line":"        \u0027path\u0027: \u0027172.24.44.10:/\u0027"},{"line_number":48,"context_line":"        \u0027aa4a7710-f326-41fb-ad18-b4ad587fc87a\u0027"},{"line_number":49,"context_line":"    }],"},{"line_number":50,"context_line":"    \u0027properties\u0027: {"},{"line_number":51,"context_line":"        \u0027file-system-id\u0027: \u002733689245-1806-45d0-8507-0700b5f89750\u0027"},{"line_number":52,"context_line":"    },"},{"line_number":53,"context_line":"}"},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"access_rule \u003d {"},{"line_number":56,"context_line":"    \u0027id\u0027: \u0027acdc7172b-fe07-46c4-b78f-df3e0324ccd0\u0027,"},{"line_number":57,"context_line":"    \u0027access_type\u0027: \u0027ip\u0027,"},{"line_number":58,"context_line":"    \u0027access_to\u0027: \u0027172.24.44.200\u0027,"},{"line_number":59,"context_line":"    \u0027access_level\u0027: \u0027rw\u0027,"},{"line_number":60,"context_line":"}"},{"line_number":61,"context_line":""},{"line_number":62,"context_line":"hsp_rules \u003d [{"},{"line_number":63,"context_line":"    \u0027name\u0027: \u0027qa_access\u0027,"},{"line_number":64,"context_line":"    \u0027host-specification\u0027: \u0027172.24.44.200\u0027,"},{"line_number":65,"context_line":"    \u0027read-write\u0027: \u0027true\u0027,"},{"line_number":66,"context_line":"}]"},{"line_number":67,"context_line":""},{"line_number":68,"context_line":"hsp_cluster \u003d {"},{"line_number":69,"context_line":"    \u0027id\u0027: \u0027835e7c00-9d04-11e5-a935-f4521480e990\u0027,"},{"line_number":70,"context_line":"    \u0027properties\u0027: {"},{"line_number":71,"context_line":"        \u0027total-storage-capacity\u0027: 107374182400,"},{"line_number":72,"context_line":"        \u0027total-storage-used\u0027: 53687091200,"},{"line_number":73,"context_line":"        \u0027total-storage-available\u0027: 53687091200,"},{"line_number":74,"context_line":"        \u0027total-file-system-capacity\u0027: 107374182400,"},{"line_number":75,"context_line":"        \u0027total-file-system-space-used\u0027: 53687091200,"},{"line_number":76,"context_line":"        \u0027total-file-system-space-available\u0027: 53687091200"},{"line_number":77,"context_line":"    },"},{"line_number":78,"context_line":"}"},{"line_number":79,"context_line":""},{"line_number":80,"context_line":""},{"line_number":81,"context_line":"class FakeRequests(object):"}],"source_content_type":"text/x-python","patch_set":18,"id":"9ad45d7e_ac5d0749","line":78,"range":{"start_line":26,"start_character":0,"end_line":78,"end_character":1},"in_reply_to":"9ad45d7e_ec03e80b","updated":"2016-08-10 12:11:59.000000000","message":"Done","commit_id":"4ab1c18df2fb2381883a9ef54716cb1fa180b7cb"},{"author":{"_account_id":11865,"name":"Clinton Knight","email":"cknight@netapp.com","username":"cknight"},"change_message_id":"a39528850f5079a2758f3193cba99516c96f045d","unresolved":false,"context_lines":[{"line_number":177,"context_line":"            url, payload\u003djson.dumps(payload))"},{"line_number":178,"context_line":""},{"line_number":179,"context_line":"    def test_get_file_system(self):"},{"line_number":180,"context_line":"        url \u003d \"https://172.24.47.190/hspapi/file-systems/list?name\u003d%s\" % \\"},{"line_number":181,"context_line":"              file_system[\u0027properties\u0027][\u0027name\u0027]"},{"line_number":182,"context_line":""},{"line_number":183,"context_line":"        self.mock_object(rest.HSPRestBackend, \"_send_get\", mock.Mock("}],"source_content_type":"text/x-python","patch_set":18,"id":"9ad45d7e_4c579402","line":180,"range":{"start_line":180,"start_character":73,"end_line":180,"end_character":74},"updated":"2016-08-08 17:52:23.000000000","message":"\"It is preferred to wrap long lines in parentheses and not a backslash for line continuation.\"  Same below.\n\nhttp://docs.openstack.org/developer/hacking/#general","commit_id":"4ab1c18df2fb2381883a9ef54716cb1fa180b7cb"},{"author":{"_account_id":17097,"name":"Tiago Pasqualini da Silva","email":"t.pasqualini@luizalabs.com","username":"tiago.pasqualini"},"change_message_id":"ce0ade264d04f1c59f453c80164b38bacbdb493d","unresolved":false,"context_lines":[{"line_number":177,"context_line":"            url, payload\u003djson.dumps(payload))"},{"line_number":178,"context_line":""},{"line_number":179,"context_line":"    def test_get_file_system(self):"},{"line_number":180,"context_line":"        url \u003d \"https://172.24.47.190/hspapi/file-systems/list?name\u003d%s\" % \\"},{"line_number":181,"context_line":"              file_system[\u0027properties\u0027][\u0027name\u0027]"},{"line_number":182,"context_line":""},{"line_number":183,"context_line":"        self.mock_object(rest.HSPRestBackend, \"_send_get\", mock.Mock("}],"source_content_type":"text/x-python","patch_set":18,"id":"9ad45d7e_98551c52","line":180,"range":{"start_line":180,"start_character":73,"end_line":180,"end_character":74},"in_reply_to":"9ad45d7e_4c579402","updated":"2016-08-10 12:11:59.000000000","message":"Done","commit_id":"4ab1c18df2fb2381883a9ef54716cb1fa180b7cb"},{"author":{"_account_id":11865,"name":"Clinton Knight","email":"cknight@netapp.com","username":"cknight"},"change_message_id":"a39528850f5079a2758f3193cba99516c96f045d","unresolved":false,"context_lines":[{"line_number":216,"context_line":"        url \u003d \"https://172.24.47.190/hspapi/file-systems/%s\" % \\"},{"line_number":217,"context_line":"              file_system[\u0027id\u0027]"},{"line_number":218,"context_line":"        new_size \u003d 53687091200"},{"line_number":219,"context_line":"        payload \u003d {"},{"line_number":220,"context_line":"            \u0027quota\u0027: new_size,"},{"line_number":221,"context_line":"        }"},{"line_number":222,"context_line":""},{"line_number":223,"context_line":"        self.mock_object(rest.HSPRestBackend, \"_send_post\", mock.Mock())"},{"line_number":224,"context_line":"        self._driver.resize_file_system(file_system[\u0027id\u0027], new_size)"}],"source_content_type":"text/x-python","patch_set":18,"id":"9ad45d7e_ac48d05c","line":221,"range":{"start_line":219,"start_character":8,"end_line":221,"end_character":9},"updated":"2016-08-08 17:52:23.000000000","message":"Unwrap.  Same below.","commit_id":"4ab1c18df2fb2381883a9ef54716cb1fa180b7cb"},{"author":{"_account_id":17097,"name":"Tiago Pasqualini da Silva","email":"t.pasqualini@luizalabs.com","username":"tiago.pasqualini"},"change_message_id":"ce0ade264d04f1c59f453c80164b38bacbdb493d","unresolved":false,"context_lines":[{"line_number":216,"context_line":"        url \u003d \"https://172.24.47.190/hspapi/file-systems/%s\" % \\"},{"line_number":217,"context_line":"              file_system[\u0027id\u0027]"},{"line_number":218,"context_line":"        new_size \u003d 53687091200"},{"line_number":219,"context_line":"        payload \u003d {"},{"line_number":220,"context_line":"            \u0027quota\u0027: new_size,"},{"line_number":221,"context_line":"        }"},{"line_number":222,"context_line":""},{"line_number":223,"context_line":"        self.mock_object(rest.HSPRestBackend, \"_send_post\", mock.Mock())"},{"line_number":224,"context_line":"        self._driver.resize_file_system(file_system[\u0027id\u0027], new_size)"}],"source_content_type":"text/x-python","patch_set":18,"id":"9ad45d7e_78fe6839","line":221,"range":{"start_line":219,"start_character":8,"end_line":221,"end_character":9},"in_reply_to":"9ad45d7e_ac48d05c","updated":"2016-08-10 12:11:59.000000000","message":"Done","commit_id":"4ab1c18df2fb2381883a9ef54716cb1fa180b7cb"},{"author":{"_account_id":11865,"name":"Clinton Knight","email":"cknight@netapp.com","username":"cknight"},"change_message_id":"a39528850f5079a2758f3193cba99516c96f045d","unresolved":false,"context_lines":[{"line_number":234,"context_line":"            \u0027name\u0027: new_name,"},{"line_number":235,"context_line":"        }"},{"line_number":236,"context_line":""},{"line_number":237,"context_line":"        self.mock_object(rest.HSPRestBackend, \"_send_post\", mock.Mock())"},{"line_number":238,"context_line":"        self._driver.rename_file_system(file_system[\u0027id\u0027], new_name)"},{"line_number":239,"context_line":""},{"line_number":240,"context_line":"        rest.HSPRestBackend._send_post.assert_called_once_with("},{"line_number":241,"context_line":"            url, payload\u003djson.dumps(payload))"}],"source_content_type":"text/x-python","patch_set":18,"id":"9ad45d7e_0c9bdcca","line":238,"range":{"start_line":237,"start_character":0,"end_line":238,"end_character":68},"updated":"2016-08-08 17:52:23.000000000","message":"Please use whitespace to separate unit tests into at least 3 sections (mocks, call, asserts).  You have done this in some cases but not all.","commit_id":"4ab1c18df2fb2381883a9ef54716cb1fa180b7cb"},{"author":{"_account_id":17097,"name":"Tiago Pasqualini da Silva","email":"t.pasqualini@luizalabs.com","username":"tiago.pasqualini"},"change_message_id":"ce0ade264d04f1c59f453c80164b38bacbdb493d","unresolved":false,"context_lines":[{"line_number":234,"context_line":"            \u0027name\u0027: new_name,"},{"line_number":235,"context_line":"        }"},{"line_number":236,"context_line":""},{"line_number":237,"context_line":"        self.mock_object(rest.HSPRestBackend, \"_send_post\", mock.Mock())"},{"line_number":238,"context_line":"        self._driver.rename_file_system(file_system[\u0027id\u0027], new_name)"},{"line_number":239,"context_line":""},{"line_number":240,"context_line":"        rest.HSPRestBackend._send_post.assert_called_once_with("},{"line_number":241,"context_line":"            url, payload\u003djson.dumps(payload))"}],"source_content_type":"text/x-python","patch_set":18,"id":"9ad45d7e_d882f493","line":238,"range":{"start_line":237,"start_character":0,"end_line":238,"end_character":68},"in_reply_to":"9ad45d7e_0c9bdcca","updated":"2016-08-10 12:11:59.000000000","message":"Done","commit_id":"4ab1c18df2fb2381883a9ef54716cb1fa180b7cb"}],"releasenotes/notes/hsp-driver-e00aff5bc89d4b54.yaml":[{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"4cdf4f66d6a7e23dbbfef54247fab14dbd078973","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"prelude: \u003e"},{"line_number":3,"context_line":"    Add Hitachi HSP driver."},{"line_number":4,"context_line":"features:"},{"line_number":5,"context_line":"  - Added new Hitachi HSP driver, supporting the minimum driver features plus"}],"source_content_type":"text/x-yaml","patch_set":11,"id":"bacf61ea_e7d6fcef","line":2,"updated":"2016-07-29 16:58:31.000000000","message":"Are we supposed to add \"\u003e\" here?","commit_id":"cfec736f0f194b65b871e791927820ef9f29868e"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"eff5d43b50918d9b6208d97ac9f52d4f0ca43ad3","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"prelude: \u003e"},{"line_number":3,"context_line":"    Add Hitachi HSP driver."},{"line_number":4,"context_line":"features:"},{"line_number":5,"context_line":"  - Added new Hitachi HSP driver, supporting the minimum driver features plus"}],"source_content_type":"text/x-yaml","patch_set":11,"id":"bacf61ea_c704984b","line":2,"in_reply_to":"bacf61ea_e7d6fcef","updated":"2016-07-29 17:00:23.000000000","message":"Never mind.  This appears to be in the example.","commit_id":"cfec736f0f194b65b871e791927820ef9f29868e"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"e4ce2717d54dda3a62dd21f7a2a77f428593dedb","unresolved":false,"context_lines":[{"line_number":2,"context_line":"prelude: \u003e"},{"line_number":3,"context_line":"    Add Hitachi HSP driver."},{"line_number":4,"context_line":"features:"},{"line_number":5,"context_line":"  - Added new Hitachi HSP driver, supporting the minimum driver features plus"},{"line_number":6,"context_line":"    manage/unmanage share and share shrink."}],"source_content_type":"text/x-yaml","patch_set":11,"id":"bacf61ea_cf32ca0f","line":6,"range":{"start_line":5,"start_character":32,"end_line":6,"end_character":43},"updated":"2016-07-31 21:15:54.000000000","message":"that supports manage/unmanage and shrinking of shares, along with all the minimum driver features. Does not support snapshots.","commit_id":"cfec736f0f194b65b871e791927820ef9f29868e"},{"author":{"_account_id":17097,"name":"Tiago Pasqualini da Silva","email":"t.pasqualini@luizalabs.com","username":"tiago.pasqualini"},"change_message_id":"0cc7f08c6809ae893d69bc21e62d26c3b8a9981b","unresolved":false,"context_lines":[{"line_number":2,"context_line":"prelude: \u003e"},{"line_number":3,"context_line":"    Add Hitachi HSP driver."},{"line_number":4,"context_line":"features:"},{"line_number":5,"context_line":"  - Added new Hitachi HSP driver, supporting the minimum driver features plus"},{"line_number":6,"context_line":"    manage/unmanage share and share shrink."}],"source_content_type":"text/x-yaml","patch_set":11,"id":"bacf61ea_2dad4088","line":6,"range":{"start_line":5,"start_character":32,"end_line":6,"end_character":43},"in_reply_to":"bacf61ea_cf32ca0f","updated":"2016-08-01 21:18:42.000000000","message":"Done","commit_id":"cfec736f0f194b65b871e791927820ef9f29868e"}]}
