)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"04b955f5a33a7c6146b6a12ca8af505f84ed4ae3","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     liucheng \u003cliucheng20@huawei.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2016-01-15 15:42:26 +0800"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Huawei: Create share from snapshot support in Huawei driver"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Once create share from snapshot is in Manila core,"},{"line_number":10,"context_line":"we should support the API in the Huawei drivers."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":14,"id":"da6ed579_773e132b","line":7,"range":{"start_line":7,"start_character":0,"end_line":7,"end_character":59},"updated":"2016-01-16 17:45:03.000000000","message":"The commit message header should be less than 50 characters.. please consider:\n\n    Huawei: Support create share from snapshot","commit_id":"15e817126c3a9dca35126131fe1691fe218b41c3"}],"doc/source/devref/share_back_ends_feature_support_mapping.rst":[{"author":{"_account_id":8851,"name":"Valeriy Ponomaryov","email":"kiparis.kh@gmail.com","username":"vponomaryov"},"change_message_id":"4dc55080804281efd08bd079f2d4acd11943bdc7","unresolved":false,"context_lines":[{"line_number":52,"context_line":"|                HPE 3PAR                | DHSS \u003d True (L) \u0026 False (K) |          \\-           |      \\-      |      \\-      |            K           |              K             |"},{"line_number":53,"context_line":"+----------------------------------------+-----------------------------+-----------------------+--------------+--------------+------------------------+----------------------------+"},{"line_number":54,"context_line":"|                 Huawei                 |      DHSS \u003d False(K)        |           L           |       L      |       L      |            K           |              M             |"},{"line_number":55,"context_line":"+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+"},{"line_number":56,"context_line":"|                IBM GPFS                |      DHSS \u003d False(K)        |          \\-           |       L      |      \\-      |            K           |              K             |"},{"line_number":57,"context_line":"+----------------------------------------+-----------------------------+-----------------------+--------------+--------------+------------------------+----------------------------+"},{"line_number":58,"context_line":"|                Quobyte                 |    DHSS \u003d False (K)         |           \\-          |       \\-     |       \\-     |           \\-           |             \\-             |"}],"source_content_type":"text/x-rst","patch_set":6,"id":"fa69d971_db147e4e","line":55,"updated":"2016-01-08 12:37:29.000000000","message":"line 55 is broken. It does not have \"+\" symbols, it leads to incorrect table parse.","commit_id":"3150b03c7124855a17783ec7a31d22930e14e10d"},{"author":{"_account_id":17742,"name":"liucheng","email":"liucheng20@huawei.com","username":"liucheng"},"change_message_id":"94074ca32879719c727a3c8c838e92f118ca0fd1","unresolved":false,"context_lines":[{"line_number":52,"context_line":"|                HPE 3PAR                | DHSS \u003d True (L) \u0026 False (K) |          \\-           |      \\-      |      \\-      |            K           |              K             |"},{"line_number":53,"context_line":"+----------------------------------------+-----------------------------+-----------------------+--------------+--------------+------------------------+----------------------------+"},{"line_number":54,"context_line":"|                 Huawei                 |      DHSS \u003d False(K)        |           L           |       L      |       L      |            K           |              M             |"},{"line_number":55,"context_line":"+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+"},{"line_number":56,"context_line":"|                IBM GPFS                |      DHSS \u003d False(K)        |          \\-           |       L      |      \\-      |            K           |              K             |"},{"line_number":57,"context_line":"+----------------------------------------+-----------------------------+-----------------------+--------------+--------------+------------------------+----------------------------+"},{"line_number":58,"context_line":"|                Quobyte                 |    DHSS \u003d False (K)         |           \\-          |       \\-     |       \\-     |           \\-           |             \\-             |"}],"source_content_type":"text/x-rst","patch_set":6,"id":"fa69d971_e3f97081","line":55,"in_reply_to":"fa69d971_db147e4e","updated":"2016-01-09 07:10:20.000000000","message":"Done","commit_id":"3150b03c7124855a17783ec7a31d22930e14e10d"}],"manila/exception.py":[{"author":{"_account_id":17097,"name":"Tiago Pasqualini da Silva","email":"t.pasqualini@luizalabs.com","username":"tiago.pasqualini"},"change_message_id":"6aca1122c9cb0eaf5c4ca24195aabc86100485a7","unresolved":false,"context_lines":[{"line_number":709,"context_line":""},{"line_number":710,"context_line":""},{"line_number":711,"context_line":"class ShareUmountException(ManilaException):"},{"line_number":712,"context_line":"    message \u003d _(\"Failed to umount share: %(reason)s\")"},{"line_number":713,"context_line":""},{"line_number":714,"context_line":""},{"line_number":715,"context_line":"class ShareMountException(ManilaException):"}],"source_content_type":"text/x-python","patch_set":24,"id":"7a5de9d1_3449678f","line":712,"range":{"start_line":712,"start_character":27,"end_line":712,"end_character":33},"updated":"2016-02-02 16:24:16.000000000","message":"s/umount/unmount","commit_id":"66fd31f671fcffd77f3e7862c19c0fbaf8885590"},{"author":{"_account_id":17742,"name":"liucheng","email":"liucheng20@huawei.com","username":"liucheng"},"change_message_id":"213464f92a2187d899386375595c34ce370b61bb","unresolved":false,"context_lines":[{"line_number":709,"context_line":""},{"line_number":710,"context_line":""},{"line_number":711,"context_line":"class ShareUmountException(ManilaException):"},{"line_number":712,"context_line":"    message \u003d _(\"Failed to umount share: %(reason)s\")"},{"line_number":713,"context_line":""},{"line_number":714,"context_line":""},{"line_number":715,"context_line":"class ShareMountException(ManilaException):"}],"source_content_type":"text/x-python","patch_set":24,"id":"5a5ae5dd_6273af4e","line":712,"range":{"start_line":712,"start_character":27,"end_line":712,"end_character":33},"in_reply_to":"7a5de9d1_3449678f","updated":"2016-02-03 07:01:24.000000000","message":"Done","commit_id":"66fd31f671fcffd77f3e7862c19c0fbaf8885590"}],"manila/share/drivers/huawei/constants.py":[{"author":{"_account_id":16883,"name":"huyang","email":"huyang1@huawei.com","username":"huyang"},"change_message_id":"ed100d60d9c99ad9bc16c4bf7d6db2b4f387eb24","unresolved":false,"context_lines":[{"line_number":22,"context_line":"IP_ALLOCATIONS \u003d 0"},{"line_number":23,"context_line":"SOCKET_TIMEOUT \u003d 52"},{"line_number":24,"context_line":"LOGIN_SOCKET_TIMEOUT \u003d 4"},{"line_number":25,"context_line":"TMP_PATH_SRC \u003d \"huawei_manila_tmp_path_src\""},{"line_number":26,"context_line":"TMP_PATH_DST \u003d \"huawei_manila_tmp_path_dst\""},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"ACCESS_NFS_RW \u003d \"1\""}],"source_content_type":"text/x-python","patch_set":1,"id":"1a7b0d38_89d35138","line":25,"range":{"start_line":25,"start_character":16,"end_line":25,"end_character":42},"updated":"2015-12-23 10:03:34.000000000","message":"Also, it\u0027s a prefix. So use \"huawei_manila_tmp_path_src_\" is better.","commit_id":"376077c3aa7d061b336a86f35061a5fe412dd28d"},{"author":{"_account_id":15100,"name":"zhongjun","email":"jun.zhongjun2@gmail.com","username":"zhongjun2"},"change_message_id":"9d118413a44ef3944ffe96d2a5cb29e1c42c042c","unresolved":false,"context_lines":[{"line_number":22,"context_line":"IP_ALLOCATIONS \u003d 0"},{"line_number":23,"context_line":"SOCKET_TIMEOUT \u003d 52"},{"line_number":24,"context_line":"LOGIN_SOCKET_TIMEOUT \u003d 4"},{"line_number":25,"context_line":"TMP_PATH_SRC \u003d \"huawei_manila_tmp_path_src\""},{"line_number":26,"context_line":"TMP_PATH_DST \u003d \"huawei_manila_tmp_path_dst\""},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"ACCESS_NFS_RW \u003d \"1\""}],"source_content_type":"text/x-python","patch_set":1,"id":"3a7e1126_8d42b3ac","line":25,"range":{"start_line":25,"start_character":0,"end_line":25,"end_character":12},"updated":"2015-12-22 08:03:36.000000000","message":"This is not a full path name, it is just a prefix. It is better to change the name, such as: TMP_PATH_SRC_PREFIX","commit_id":"376077c3aa7d061b336a86f35061a5fe412dd28d"},{"author":{"_account_id":17742,"name":"liucheng","email":"liucheng20@huawei.com","username":"liucheng"},"change_message_id":"5ac01d0e706d1ec511f791cf52708adaf2ad931b","unresolved":false,"context_lines":[{"line_number":22,"context_line":"IP_ALLOCATIONS \u003d 0"},{"line_number":23,"context_line":"SOCKET_TIMEOUT \u003d 52"},{"line_number":24,"context_line":"LOGIN_SOCKET_TIMEOUT \u003d 4"},{"line_number":25,"context_line":"TMP_PATH_SRC \u003d \"huawei_manila_tmp_path_src\""},{"line_number":26,"context_line":"TMP_PATH_DST \u003d \"huawei_manila_tmp_path_dst\""},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"ACCESS_NFS_RW \u003d \"1\""}],"source_content_type":"text/x-python","patch_set":1,"id":"1a7b0d38_6e89f925","line":25,"range":{"start_line":25,"start_character":16,"end_line":25,"end_character":42},"in_reply_to":"1a7b0d38_89d35138","updated":"2015-12-26 10:12:10.000000000","message":"Done","commit_id":"376077c3aa7d061b336a86f35061a5fe412dd28d"},{"author":{"_account_id":17742,"name":"liucheng","email":"liucheng20@huawei.com","username":"liucheng"},"change_message_id":"5ac01d0e706d1ec511f791cf52708adaf2ad931b","unresolved":false,"context_lines":[{"line_number":22,"context_line":"IP_ALLOCATIONS \u003d 0"},{"line_number":23,"context_line":"SOCKET_TIMEOUT \u003d 52"},{"line_number":24,"context_line":"LOGIN_SOCKET_TIMEOUT \u003d 4"},{"line_number":25,"context_line":"TMP_PATH_SRC \u003d \"huawei_manila_tmp_path_src\""},{"line_number":26,"context_line":"TMP_PATH_DST \u003d \"huawei_manila_tmp_path_dst\""},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"ACCESS_NFS_RW \u003d \"1\""}],"source_content_type":"text/x-python","patch_set":1,"id":"1a7b0d38_ce9b4d71","line":25,"range":{"start_line":25,"start_character":0,"end_line":25,"end_character":12},"in_reply_to":"3a7e1126_8d42b3ac","updated":"2015-12-26 10:12:10.000000000","message":"Done","commit_id":"376077c3aa7d061b336a86f35061a5fe412dd28d"},{"author":{"_account_id":16883,"name":"huyang","email":"huyang1@huawei.com","username":"huyang"},"change_message_id":"ed100d60d9c99ad9bc16c4bf7d6db2b4f387eb24","unresolved":false,"context_lines":[{"line_number":23,"context_line":"SOCKET_TIMEOUT \u003d 52"},{"line_number":24,"context_line":"LOGIN_SOCKET_TIMEOUT \u003d 4"},{"line_number":25,"context_line":"TMP_PATH_SRC \u003d \"huawei_manila_tmp_path_src\""},{"line_number":26,"context_line":"TMP_PATH_DST \u003d \"huawei_manila_tmp_path_dst\""},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"ACCESS_NFS_RW \u003d \"1\""},{"line_number":29,"context_line":"ACCESS_NFS_RO \u003d \"0\""}],"source_content_type":"text/x-python","patch_set":1,"id":"1a7b0d38_49dd6941","line":26,"range":{"start_line":26,"start_character":16,"end_line":26,"end_character":42},"updated":"2015-12-23 10:03:34.000000000","message":"Same as above.","commit_id":"376077c3aa7d061b336a86f35061a5fe412dd28d"},{"author":{"_account_id":15100,"name":"zhongjun","email":"jun.zhongjun2@gmail.com","username":"zhongjun2"},"change_message_id":"9d118413a44ef3944ffe96d2a5cb29e1c42c042c","unresolved":false,"context_lines":[{"line_number":23,"context_line":"SOCKET_TIMEOUT \u003d 52"},{"line_number":24,"context_line":"LOGIN_SOCKET_TIMEOUT \u003d 4"},{"line_number":25,"context_line":"TMP_PATH_SRC \u003d \"huawei_manila_tmp_path_src\""},{"line_number":26,"context_line":"TMP_PATH_DST \u003d \"huawei_manila_tmp_path_dst\""},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"ACCESS_NFS_RW \u003d \"1\""},{"line_number":29,"context_line":"ACCESS_NFS_RO \u003d \"0\""}],"source_content_type":"text/x-python","patch_set":1,"id":"3a7e1126_0d15639a","line":26,"range":{"start_line":26,"start_character":0,"end_line":26,"end_character":13},"updated":"2015-12-22 08:03:36.000000000","message":"same, add PREFIX in the end.","commit_id":"376077c3aa7d061b336a86f35061a5fe412dd28d"},{"author":{"_account_id":17742,"name":"liucheng","email":"liucheng20@huawei.com","username":"liucheng"},"change_message_id":"5ac01d0e706d1ec511f791cf52708adaf2ad931b","unresolved":false,"context_lines":[{"line_number":23,"context_line":"SOCKET_TIMEOUT \u003d 52"},{"line_number":24,"context_line":"LOGIN_SOCKET_TIMEOUT \u003d 4"},{"line_number":25,"context_line":"TMP_PATH_SRC \u003d \"huawei_manila_tmp_path_src\""},{"line_number":26,"context_line":"TMP_PATH_DST \u003d \"huawei_manila_tmp_path_dst\""},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"ACCESS_NFS_RW \u003d \"1\""},{"line_number":29,"context_line":"ACCESS_NFS_RO \u003d \"0\""}],"source_content_type":"text/x-python","patch_set":1,"id":"1a7b0d38_2e83f105","line":26,"range":{"start_line":26,"start_character":16,"end_line":26,"end_character":42},"in_reply_to":"1a7b0d38_49dd6941","updated":"2015-12-26 10:12:10.000000000","message":"Done","commit_id":"376077c3aa7d061b336a86f35061a5fe412dd28d"},{"author":{"_account_id":17742,"name":"liucheng","email":"liucheng20@huawei.com","username":"liucheng"},"change_message_id":"5ac01d0e706d1ec511f791cf52708adaf2ad931b","unresolved":false,"context_lines":[{"line_number":23,"context_line":"SOCKET_TIMEOUT \u003d 52"},{"line_number":24,"context_line":"LOGIN_SOCKET_TIMEOUT \u003d 4"},{"line_number":25,"context_line":"TMP_PATH_SRC \u003d \"huawei_manila_tmp_path_src\""},{"line_number":26,"context_line":"TMP_PATH_DST \u003d \"huawei_manila_tmp_path_dst\""},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"ACCESS_NFS_RW \u003d \"1\""},{"line_number":29,"context_line":"ACCESS_NFS_RO \u003d \"0\""}],"source_content_type":"text/x-python","patch_set":1,"id":"1a7b0d38_8e8c6536","line":26,"range":{"start_line":26,"start_character":0,"end_line":26,"end_character":13},"in_reply_to":"3a7e1126_0d15639a","updated":"2015-12-26 10:12:10.000000000","message":"Done","commit_id":"376077c3aa7d061b336a86f35061a5fe412dd28d"}],"manila/share/drivers/huawei/huawei_nas.py":[{"author":{"_account_id":15100,"name":"zhongjun","email":"jun.zhongjun2@gmail.com","username":"zhongjun2"},"change_message_id":"9d118413a44ef3944ffe96d2a5cb29e1c42c042c","unresolved":false,"context_lines":[{"line_number":112,"context_line":"    def create_share_from_snapshot(self, context, share, snapshot,"},{"line_number":113,"context_line":"                                   share_server\u003dNone):"},{"line_number":114,"context_line":"        \"\"\"Is called to create share from snapshot.\"\"\""},{"line_number":115,"context_line":"        LOG.debug(\"Create share from snapshot.\")"},{"line_number":116,"context_line":"        location \u003d self.plugin.create_share_from_snapshot(share, snapshot)"},{"line_number":117,"context_line":"        return location"},{"line_number":118,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"3a7e1126_aa8755b3","line":115,"range":{"start_line":115,"start_character":25,"end_line":115,"end_character":31},"updated":"2015-12-22 08:03:36.000000000","message":"s/share/a share","commit_id":"376077c3aa7d061b336a86f35061a5fe412dd28d"},{"author":{"_account_id":17742,"name":"liucheng","email":"liucheng20@huawei.com","username":"liucheng"},"change_message_id":"5ac01d0e706d1ec511f791cf52708adaf2ad931b","unresolved":false,"context_lines":[{"line_number":112,"context_line":"    def create_share_from_snapshot(self, context, share, snapshot,"},{"line_number":113,"context_line":"                                   share_server\u003dNone):"},{"line_number":114,"context_line":"        \"\"\"Is called to create share from snapshot.\"\"\""},{"line_number":115,"context_line":"        LOG.debug(\"Create share from snapshot.\")"},{"line_number":116,"context_line":"        location \u003d self.plugin.create_share_from_snapshot(share, snapshot)"},{"line_number":117,"context_line":"        return location"},{"line_number":118,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"1a7b0d38_4e867d14","line":115,"range":{"start_line":115,"start_character":25,"end_line":115,"end_character":31},"in_reply_to":"3a7e1126_aa8755b3","updated":"2015-12-26 10:12:10.000000000","message":"Done","commit_id":"376077c3aa7d061b336a86f35061a5fe412dd28d"},{"author":{"_account_id":14567,"name":"Rodrigo Barbieri","email":"rodrigo.barbieri2010@gmail.com","username":"ganso"},"change_message_id":"f3eda16bc72f4c66c12c61ad19c2ada2d51e5b01","unresolved":false,"context_lines":[{"line_number":112,"context_line":"    def create_share_from_snapshot(self, context, share, snapshot,"},{"line_number":113,"context_line":"                                   share_server\u003dNone):"},{"line_number":114,"context_line":"        \"\"\"Is called to create share from snapshot.\"\"\""},{"line_number":115,"context_line":"        LOG.debug(\"Create a share from snapshot.\")"},{"line_number":116,"context_line":"        location \u003d self.plugin.create_share_from_snapshot(share, snapshot)"},{"line_number":117,"context_line":"        return location"},{"line_number":118,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"1a7b0d38_c584675f","line":115,"range":{"start_line":115,"start_character":26,"end_line":115,"end_character":33},"updated":"2015-12-28 16:20:56.000000000","message":"You could log the share being created here: \"Create share %(share_id)s from snapshot %(snap_id)s.\"","commit_id":"e33fdc8fa3e9ba8ff194098f25b48e7108eb1035"},{"author":{"_account_id":17742,"name":"liucheng","email":"liucheng20@huawei.com","username":"liucheng"},"change_message_id":"e9d265094429816834149de5e74b94028bdc2078","unresolved":false,"context_lines":[{"line_number":112,"context_line":"    def create_share_from_snapshot(self, context, share, snapshot,"},{"line_number":113,"context_line":"                                   share_server\u003dNone):"},{"line_number":114,"context_line":"        \"\"\"Is called to create share from snapshot.\"\"\""},{"line_number":115,"context_line":"        LOG.debug(\"Create a share from snapshot.\")"},{"line_number":116,"context_line":"        location \u003d self.plugin.create_share_from_snapshot(share, snapshot)"},{"line_number":117,"context_line":"        return location"},{"line_number":118,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"1a7b0d38_79ec33f3","line":115,"range":{"start_line":115,"start_character":26,"end_line":115,"end_character":33},"in_reply_to":"1a7b0d38_c584675f","updated":"2015-12-30 04:30:56.000000000","message":"The details will be printed in \"connection.py\". Here we just log what will be done and keep consistent with our coding style.","commit_id":"e33fdc8fa3e9ba8ff194098f25b48e7108eb1035"},{"author":{"_account_id":8851,"name":"Valeriy Ponomaryov","email":"kiparis.kh@gmail.com","username":"vponomaryov"},"change_message_id":"4dc55080804281efd08bd079f2d4acd11943bdc7","unresolved":false,"context_lines":[{"line_number":112,"context_line":"    def create_share_from_snapshot(self, context, share, snapshot,"},{"line_number":113,"context_line":"                                   share_server\u003dNone):"},{"line_number":114,"context_line":"        \"\"\"Create a share from snapshot.\"\"\""},{"line_number":115,"context_line":"        LOG.debug(\"Create a share from snapshot.\")"},{"line_number":116,"context_line":"        location \u003d self.plugin.create_share_from_snapshot(share, snapshot)"},{"line_number":117,"context_line":"        return location"},{"line_number":118,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"fa69d971_f6fe3704","line":115,"range":{"start_line":115,"start_character":39,"end_line":115,"end_character":48},"updated":"2016-01-08 12:37:29.000000000","message":"which snapshot?","commit_id":"3150b03c7124855a17783ec7a31d22930e14e10d"},{"author":{"_account_id":17742,"name":"liucheng","email":"liucheng20@huawei.com","username":"liucheng"},"change_message_id":"94074ca32879719c727a3c8c838e92f118ca0fd1","unresolved":false,"context_lines":[{"line_number":112,"context_line":"    def create_share_from_snapshot(self, context, share, snapshot,"},{"line_number":113,"context_line":"                                   share_server\u003dNone):"},{"line_number":114,"context_line":"        \"\"\"Create a share from snapshot.\"\"\""},{"line_number":115,"context_line":"        LOG.debug(\"Create a share from snapshot.\")"},{"line_number":116,"context_line":"        location \u003d self.plugin.create_share_from_snapshot(share, snapshot)"},{"line_number":117,"context_line":"        return location"},{"line_number":118,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"fa69d971_03f7e48b","line":115,"range":{"start_line":115,"start_character":39,"end_line":115,"end_character":48},"in_reply_to":"fa69d971_f6fe3704","updated":"2016-01-09 07:10:20.000000000","message":"Done","commit_id":"3150b03c7124855a17783ec7a31d22930e14e10d"},{"author":{"_account_id":15100,"name":"zhongjun","email":"jun.zhongjun2@gmail.com","username":"zhongjun2"},"change_message_id":"ac9bf69186fab070b1cbaf0151e75d420a54695c","unresolved":false,"context_lines":[{"line_number":46,"context_line":"    API version history:"},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"        1.0 - Initial version."},{"line_number":49,"context_line":"        1.1 - Add shrink share."},{"line_number":50,"context_line":"              Add extend share."},{"line_number":51,"context_line":"              Add manage share."},{"line_number":52,"context_line":"              Add share level(ro)."},{"line_number":53,"context_line":"              Add smartx capabilities."},{"line_number":54,"context_line":"              Support multi pools in one backend."},{"line_number":55,"context_line":"    \"\"\""},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"    def __init__(self, *args, **kwargs):"}],"source_content_type":"text/x-python","patch_set":9,"id":"da6ed579_76cd39b6","line":54,"range":{"start_line":49,"start_character":8,"end_line":54,"end_character":49},"updated":"2016-01-14 02:19:13.000000000","message":"Please add the \"create share from snapshot\" in this.","commit_id":"e89d697196c197dde28644b35ab1fc7974437ae1"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"04b955f5a33a7c6146b6a12ca8af505f84ed4ae3","unresolved":false,"context_lines":[{"line_number":112,"context_line":"    def create_share_from_snapshot(self, context, share, snapshot,"},{"line_number":113,"context_line":"                                   share_server\u003dNone):"},{"line_number":114,"context_line":"        \"\"\"Create a share from snapshot.\"\"\""},{"line_number":115,"context_line":"        LOG.debug(\"Create a share from snapshot %s.\", snapshot[\u0027snapshot_id\u0027])"},{"line_number":116,"context_line":"        location \u003d self.plugin.create_share_from_snapshot(share, snapshot)"},{"line_number":117,"context_line":"        return location"},{"line_number":118,"context_line":""}],"source_content_type":"text/x-python","patch_set":14,"id":"da6ed579_97d707bf","line":115,"range":{"start_line":115,"start_character":24,"end_line":115,"end_character":25},"updated":"2016-01-16 17:45:03.000000000","message":"Since you are logging before you begin an operation, instead of just the action noun, you can add the verb form; \n\n\"Creating a share from snapshot: %s\"\n\nHowever, i see that the rest of the logging on this page is written in the noun action form.. so it may not matter. I would hope you can make a global change sometime..","commit_id":"15e817126c3a9dca35126131fe1691fe218b41c3"}],"manila/share/drivers/huawei/v3/connection.py":[{"author":{"_account_id":15100,"name":"zhongjun","email":"jun.zhongjun2@gmail.com","username":"zhongjun2"},"change_message_id":"9d118413a44ef3944ffe96d2a5cb29e1c42c042c","unresolved":false,"context_lines":[{"line_number":299,"context_line":""},{"line_number":300,"context_line":"    def create_share_from_snapshot(self, share, snapshot,"},{"line_number":301,"context_line":"                                   share_server\u003dNone):"},{"line_number":302,"context_line":"        \"\"\"Is called to create share from snapshot.\"\"\""},{"line_number":303,"context_line":"        LOG.debug(\"Create_share_from_snapshot,share: %s, \""},{"line_number":304,"context_line":"                  \"snapshot: %s.\", share[\u0027name\u0027], snapshot[\u0027share_id\u0027])"},{"line_number":305,"context_line":"        share_fs_id \u003d self.helper._get_fsid_by_name(snapshot[\u0027share_name\u0027])"}],"source_content_type":"text/x-python","patch_set":1,"id":"3a7e1126_6a7badbe","line":302,"range":{"start_line":302,"start_character":30,"end_line":302,"end_character":37},"updated":"2015-12-22 08:03:36.000000000","message":"s/share/a new share","commit_id":"376077c3aa7d061b336a86f35061a5fe412dd28d"},{"author":{"_account_id":17742,"name":"liucheng","email":"liucheng20@huawei.com","username":"liucheng"},"change_message_id":"5ac01d0e706d1ec511f791cf52708adaf2ad931b","unresolved":false,"context_lines":[{"line_number":299,"context_line":""},{"line_number":300,"context_line":"    def create_share_from_snapshot(self, share, snapshot,"},{"line_number":301,"context_line":"                                   share_server\u003dNone):"},{"line_number":302,"context_line":"        \"\"\"Is called to create share from snapshot.\"\"\""},{"line_number":303,"context_line":"        LOG.debug(\"Create_share_from_snapshot,share: %s, \""},{"line_number":304,"context_line":"                  \"snapshot: %s.\", share[\u0027name\u0027], snapshot[\u0027share_id\u0027])"},{"line_number":305,"context_line":"        share_fs_id \u003d self.helper._get_fsid_by_name(snapshot[\u0027share_name\u0027])"}],"source_content_type":"text/x-python","patch_set":1,"id":"1a7b0d38_2e0d3190","line":302,"range":{"start_line":302,"start_character":30,"end_line":302,"end_character":37},"in_reply_to":"3a7e1126_6a7badbe","updated":"2015-12-26 10:12:10.000000000","message":"Done","commit_id":"376077c3aa7d061b336a86f35061a5fe412dd28d"},{"author":{"_account_id":16883,"name":"huyang","email":"huyang1@huawei.com","username":"huyang"},"change_message_id":"18e930c19145ad138ea104ad90252baccfd9b995","unresolved":false,"context_lines":[{"line_number":300,"context_line":"    def create_share_from_snapshot(self, share, snapshot,"},{"line_number":301,"context_line":"                                   share_server\u003dNone):"},{"line_number":302,"context_line":"        \"\"\"Is called to create share from snapshot.\"\"\""},{"line_number":303,"context_line":"        LOG.debug(\"Create_share_from_snapshot,share: %s, \""},{"line_number":304,"context_line":"                  \"snapshot: %s.\", share[\u0027name\u0027], snapshot[\u0027share_id\u0027])"},{"line_number":305,"context_line":"        share_fs_id \u003d self.helper._get_fsid_by_name(snapshot[\u0027share_name\u0027])"},{"line_number":306,"context_line":"        if not share_fs_id:"}],"source_content_type":"text/x-python","patch_set":1,"id":"3a7e1126_ba503133","line":303,"range":{"start_line":303,"start_character":46,"end_line":303,"end_character":52},"updated":"2015-12-21 10:09:11.000000000","message":"Missing blank space before \"share:\"","commit_id":"376077c3aa7d061b336a86f35061a5fe412dd28d"},{"author":{"_account_id":17742,"name":"liucheng","email":"liucheng20@huawei.com","username":"liucheng"},"change_message_id":"5ac01d0e706d1ec511f791cf52708adaf2ad931b","unresolved":false,"context_lines":[{"line_number":300,"context_line":"    def create_share_from_snapshot(self, share, snapshot,"},{"line_number":301,"context_line":"                                   share_server\u003dNone):"},{"line_number":302,"context_line":"        \"\"\"Is called to create share from snapshot.\"\"\""},{"line_number":303,"context_line":"        LOG.debug(\"Create_share_from_snapshot,share: %s, \""},{"line_number":304,"context_line":"                  \"snapshot: %s.\", share[\u0027name\u0027], snapshot[\u0027share_id\u0027])"},{"line_number":305,"context_line":"        share_fs_id \u003d self.helper._get_fsid_by_name(snapshot[\u0027share_name\u0027])"},{"line_number":306,"context_line":"        if not share_fs_id:"}],"source_content_type":"text/x-python","patch_set":1,"id":"1a7b0d38_cea6ed52","line":303,"range":{"start_line":303,"start_character":46,"end_line":303,"end_character":52},"in_reply_to":"1a7b0d38_18aecd2e","updated":"2015-12-26 10:12:10.000000000","message":"Done","commit_id":"376077c3aa7d061b336a86f35061a5fe412dd28d"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"3c21c5e241803c9a81566cc91baa2c6a2a489a73","unresolved":false,"context_lines":[{"line_number":300,"context_line":"    def create_share_from_snapshot(self, share, snapshot,"},{"line_number":301,"context_line":"                                   share_server\u003dNone):"},{"line_number":302,"context_line":"        \"\"\"Is called to create share from snapshot.\"\"\""},{"line_number":303,"context_line":"        LOG.debug(\"Create_share_from_snapshot,share: %s, \""},{"line_number":304,"context_line":"                  \"snapshot: %s.\", share[\u0027name\u0027], snapshot[\u0027share_id\u0027])"},{"line_number":305,"context_line":"        share_fs_id \u003d self.helper._get_fsid_by_name(snapshot[\u0027share_name\u0027])"},{"line_number":306,"context_line":"        if not share_fs_id:"}],"source_content_type":"text/x-python","patch_set":1,"id":"1a7b0d38_18aecd2e","line":303,"range":{"start_line":303,"start_character":46,"end_line":303,"end_character":52},"in_reply_to":"3a7e1126_ba503133","updated":"2015-12-23 09:43:52.000000000","message":"Also remove the underscores. Also, do we care about share[\u0027name\u0027] and snapshot[\u0027share_id\u0027]? Why not share[\u0027id\u0027] and snapshot[\u0027id\u0027]. \n\n\nIf you want to use snapshot[\u0027share_id\u0027] -\u003e call it a \"source share\". Or, \n\n\n    \"snapshot of share %(source_share)s\" % {source_share: snapshot[\u0027share_id\u0027]}\n\n\nPrefer:\n\n\n    \"Creating share %(share)s from snapshot %(snapshot)s.\" % {share: share[\u0027id\u0027], snapshot: snapshot[\u0027id\u0027]}","commit_id":"376077c3aa7d061b336a86f35061a5fe412dd28d"},{"author":{"_account_id":15100,"name":"zhongjun","email":"jun.zhongjun2@gmail.com","username":"zhongjun2"},"change_message_id":"9d118413a44ef3944ffe96d2a5cb29e1c42c042c","unresolved":false,"context_lines":[{"line_number":301,"context_line":"                                   share_server\u003dNone):"},{"line_number":302,"context_line":"        \"\"\"Is called to create share from snapshot.\"\"\""},{"line_number":303,"context_line":"        LOG.debug(\"Create_share_from_snapshot,share: %s, \""},{"line_number":304,"context_line":"                  \"snapshot: %s.\", share[\u0027name\u0027], snapshot[\u0027share_id\u0027])"},{"line_number":305,"context_line":"        share_fs_id \u003d self.helper._get_fsid_by_name(snapshot[\u0027share_name\u0027])"},{"line_number":306,"context_line":"        if not share_fs_id:"},{"line_number":307,"context_line":"            err_msg \u003d (_(\"Snapshot id %s source filesystem does not exist.\")"}],"source_content_type":"text/x-python","patch_set":1,"id":"3a7e1126_ad944f8a","line":304,"range":{"start_line":304,"start_character":17,"end_line":304,"end_character":71},"updated":"2015-12-22 08:03:36.000000000","message":"The snapshot[\u0027share_id\u0027] is not snapshot. This will confuse for the user.\n\nLOG.debug(\"Create a new share(%(share)s) from snapshot(%(snapshot_id)s) \", share[\u0027name\u0027], snapshot[\u0027id\u0027])","commit_id":"376077c3aa7d061b336a86f35061a5fe412dd28d"},{"author":{"_account_id":17742,"name":"liucheng","email":"liucheng20@huawei.com","username":"liucheng"},"change_message_id":"5ac01d0e706d1ec511f791cf52708adaf2ad931b","unresolved":false,"context_lines":[{"line_number":301,"context_line":"                                   share_server\u003dNone):"},{"line_number":302,"context_line":"        \"\"\"Is called to create share from snapshot.\"\"\""},{"line_number":303,"context_line":"        LOG.debug(\"Create_share_from_snapshot,share: %s, \""},{"line_number":304,"context_line":"                  \"snapshot: %s.\", share[\u0027name\u0027], snapshot[\u0027share_id\u0027])"},{"line_number":305,"context_line":"        share_fs_id \u003d self.helper._get_fsid_by_name(snapshot[\u0027share_name\u0027])"},{"line_number":306,"context_line":"        if not share_fs_id:"},{"line_number":307,"context_line":"            err_msg \u003d (_(\"Snapshot id %s source filesystem does not exist.\")"}],"source_content_type":"text/x-python","patch_set":1,"id":"1a7b0d38_0e74f5cc","line":304,"range":{"start_line":304,"start_character":17,"end_line":304,"end_character":71},"in_reply_to":"3a7e1126_ad944f8a","updated":"2015-12-26 10:12:10.000000000","message":"Done","commit_id":"376077c3aa7d061b336a86f35061a5fe412dd28d"},{"author":{"_account_id":16883,"name":"huyang","email":"huyang1@huawei.com","username":"huyang"},"change_message_id":"18e930c19145ad138ea104ad90252baccfd9b995","unresolved":false,"context_lines":[{"line_number":304,"context_line":"                  \"snapshot: %s.\", share[\u0027name\u0027], snapshot[\u0027share_id\u0027])"},{"line_number":305,"context_line":"        share_fs_id \u003d self.helper._get_fsid_by_name(snapshot[\u0027share_name\u0027])"},{"line_number":306,"context_line":"        if not share_fs_id:"},{"line_number":307,"context_line":"            err_msg \u003d (_(\"Snapshot id %s source filesystem does not exist.\")"},{"line_number":308,"context_line":"                       % snapshot[\u0027id\u0027])"},{"line_number":309,"context_line":"            LOG.error(err_msg)"},{"line_number":310,"context_line":"            raise exception.InvalidShare(reason\u003derr_msg)"}],"source_content_type":"text/x-python","patch_set":1,"id":"3a7e1126_da05fd13","line":307,"range":{"start_line":307,"start_character":26,"end_line":307,"end_character":58},"updated":"2015-12-21 10:09:11.000000000","message":"It\u0027s better to use \"The source filesystem of snapshot(id %s) \".","commit_id":"376077c3aa7d061b336a86f35061a5fe412dd28d"},{"author":{"_account_id":17742,"name":"liucheng","email":"liucheng20@huawei.com","username":"liucheng"},"change_message_id":"5ac01d0e706d1ec511f791cf52708adaf2ad931b","unresolved":false,"context_lines":[{"line_number":304,"context_line":"                  \"snapshot: %s.\", share[\u0027name\u0027], snapshot[\u0027share_id\u0027])"},{"line_number":305,"context_line":"        share_fs_id \u003d self.helper._get_fsid_by_name(snapshot[\u0027share_name\u0027])"},{"line_number":306,"context_line":"        if not share_fs_id:"},{"line_number":307,"context_line":"            err_msg \u003d (_(\"Snapshot id %s source filesystem does not exist.\")"},{"line_number":308,"context_line":"                       % snapshot[\u0027id\u0027])"},{"line_number":309,"context_line":"            LOG.error(err_msg)"},{"line_number":310,"context_line":"            raise exception.InvalidShare(reason\u003derr_msg)"}],"source_content_type":"text/x-python","patch_set":1,"id":"1a7b0d38_0e5b9555","line":307,"range":{"start_line":307,"start_character":26,"end_line":307,"end_character":58},"in_reply_to":"1a7b0d38_d82cc5ad","updated":"2015-12-26 10:12:10.000000000","message":"Done","commit_id":"376077c3aa7d061b336a86f35061a5fe412dd28d"},{"author":{"_account_id":17742,"name":"liucheng","email":"liucheng20@huawei.com","username":"liucheng"},"change_message_id":"5ac01d0e706d1ec511f791cf52708adaf2ad931b","unresolved":false,"context_lines":[{"line_number":304,"context_line":"                  \"snapshot: %s.\", share[\u0027name\u0027], snapshot[\u0027share_id\u0027])"},{"line_number":305,"context_line":"        share_fs_id \u003d self.helper._get_fsid_by_name(snapshot[\u0027share_name\u0027])"},{"line_number":306,"context_line":"        if not share_fs_id:"},{"line_number":307,"context_line":"            err_msg \u003d (_(\"Snapshot id %s source filesystem does not exist.\")"},{"line_number":308,"context_line":"                       % snapshot[\u0027id\u0027])"},{"line_number":309,"context_line":"            LOG.error(err_msg)"},{"line_number":310,"context_line":"            raise exception.InvalidShare(reason\u003derr_msg)"}],"source_content_type":"text/x-python","patch_set":1,"id":"1a7b0d38_ae59215c","line":307,"range":{"start_line":307,"start_character":26,"end_line":307,"end_character":58},"in_reply_to":"3a7e1126_da05fd13","updated":"2015-12-26 10:12:10.000000000","message":"Done","commit_id":"376077c3aa7d061b336a86f35061a5fe412dd28d"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"3c21c5e241803c9a81566cc91baa2c6a2a489a73","unresolved":false,"context_lines":[{"line_number":304,"context_line":"                  \"snapshot: %s.\", share[\u0027name\u0027], snapshot[\u0027share_id\u0027])"},{"line_number":305,"context_line":"        share_fs_id \u003d self.helper._get_fsid_by_name(snapshot[\u0027share_name\u0027])"},{"line_number":306,"context_line":"        if not share_fs_id:"},{"line_number":307,"context_line":"            err_msg \u003d (_(\"Snapshot id %s source filesystem does not exist.\")"},{"line_number":308,"context_line":"                       % snapshot[\u0027id\u0027])"},{"line_number":309,"context_line":"            LOG.error(err_msg)"},{"line_number":310,"context_line":"            raise exception.InvalidShare(reason\u003derr_msg)"}],"source_content_type":"text/x-python","patch_set":1,"id":"1a7b0d38_d82cc5ad","line":307,"range":{"start_line":307,"start_character":26,"end_line":307,"end_character":58},"in_reply_to":"3a7e1126_da05fd13","updated":"2015-12-23 09:43:52.000000000","message":"The source filesystem of snapshot %s does not exist\n\n\nMost logging happens like this, no need to add ID. It\u0027s implied if not qualified.\n\nPlease remove redundant parenthesis.","commit_id":"376077c3aa7d061b336a86f35061a5fe412dd28d"},{"author":{"_account_id":16883,"name":"huyang","email":"huyang1@huawei.com","username":"huyang"},"change_message_id":"18e930c19145ad138ea104ad90252baccfd9b995","unresolved":false,"context_lines":[{"line_number":312,"context_line":"        snapshot_id \u003d self.helper._get_snapshot_id(share_fs_id, snapshot[\u0027id\u0027])"},{"line_number":313,"context_line":"        snapshot_flag \u003d self.helper._check_snapshot_id_exist(snapshot_id)"},{"line_number":314,"context_line":"        if not snapshot_flag:"},{"line_number":315,"context_line":"            err_msg \u003d (_(\"Can not find snapshot %s on array.\")"},{"line_number":316,"context_line":"                       % snapshot[\u0027id\u0027])"},{"line_number":317,"context_line":"            LOG.error(err_msg)"},{"line_number":318,"context_line":"            raise exception.InvalidShare(reason\u003derr_msg)"}],"source_content_type":"text/x-python","patch_set":1,"id":"3a7e1126_9af1b56d","line":315,"range":{"start_line":315,"start_character":26,"end_line":315,"end_character":33},"updated":"2015-12-21 10:09:11.000000000","message":"s/Can not/Cannot","commit_id":"376077c3aa7d061b336a86f35061a5fe412dd28d"},{"author":{"_account_id":17742,"name":"liucheng","email":"liucheng20@huawei.com","username":"liucheng"},"change_message_id":"5ac01d0e706d1ec511f791cf52708adaf2ad931b","unresolved":false,"context_lines":[{"line_number":312,"context_line":"        snapshot_id \u003d self.helper._get_snapshot_id(share_fs_id, snapshot[\u0027id\u0027])"},{"line_number":313,"context_line":"        snapshot_flag \u003d self.helper._check_snapshot_id_exist(snapshot_id)"},{"line_number":314,"context_line":"        if not snapshot_flag:"},{"line_number":315,"context_line":"            err_msg \u003d (_(\"Can not find snapshot %s on array.\")"},{"line_number":316,"context_line":"                       % snapshot[\u0027id\u0027])"},{"line_number":317,"context_line":"            LOG.error(err_msg)"},{"line_number":318,"context_line":"            raise exception.InvalidShare(reason\u003derr_msg)"}],"source_content_type":"text/x-python","patch_set":1,"id":"1a7b0d38_8e3545f8","line":315,"range":{"start_line":315,"start_character":26,"end_line":315,"end_character":33},"in_reply_to":"3a7e1126_9af1b56d","updated":"2015-12-26 10:12:10.000000000","message":"Done","commit_id":"376077c3aa7d061b336a86f35061a5fe412dd28d"},{"author":{"_account_id":15100,"name":"zhongjun","email":"jun.zhongjun2@gmail.com","username":"zhongjun2"},"change_message_id":"9d118413a44ef3944ffe96d2a5cb29e1c42c042c","unresolved":false,"context_lines":[{"line_number":315,"context_line":"            err_msg \u003d (_(\"Can not find snapshot %s on array.\")"},{"line_number":316,"context_line":"                       % snapshot[\u0027id\u0027])"},{"line_number":317,"context_line":"            LOG.error(err_msg)"},{"line_number":318,"context_line":"            raise exception.InvalidShare(reason\u003derr_msg)"},{"line_number":319,"context_line":""},{"line_number":320,"context_line":"        fs \u003d self.helper._get_fs_info_by_id(share_fs_id)"},{"line_number":321,"context_line":"        if not self.check_fs_status(fs[\u0027HEALTHSTATUS\u0027],"}],"source_content_type":"text/x-python","patch_set":1,"id":"3a7e1126_ad1e8f09","line":318,"range":{"start_line":318,"start_character":27,"end_line":318,"end_character":40},"updated":"2015-12-22 08:03:36.000000000","message":"Please use ShareSnapshotNotFound instead of InvalidShare.\n\nhttps://github.com/openstack/manila/blob/master/manila/exception.py#L425.","commit_id":"376077c3aa7d061b336a86f35061a5fe412dd28d"},{"author":{"_account_id":17742,"name":"liucheng","email":"liucheng20@huawei.com","username":"liucheng"},"change_message_id":"5ac01d0e706d1ec511f791cf52708adaf2ad931b","unresolved":false,"context_lines":[{"line_number":315,"context_line":"            err_msg \u003d (_(\"Can not find snapshot %s on array.\")"},{"line_number":316,"context_line":"                       % snapshot[\u0027id\u0027])"},{"line_number":317,"context_line":"            LOG.error(err_msg)"},{"line_number":318,"context_line":"            raise exception.InvalidShare(reason\u003derr_msg)"},{"line_number":319,"context_line":""},{"line_number":320,"context_line":"        fs \u003d self.helper._get_fs_info_by_id(share_fs_id)"},{"line_number":321,"context_line":"        if not self.check_fs_status(fs[\u0027HEALTHSTATUS\u0027],"}],"source_content_type":"text/x-python","patch_set":1,"id":"1a7b0d38_4e3f5dd6","line":318,"range":{"start_line":318,"start_character":27,"end_line":318,"end_character":40},"in_reply_to":"3a7e1126_ad1e8f09","updated":"2015-12-26 10:12:10.000000000","message":"Done","commit_id":"376077c3aa7d061b336a86f35061a5fe412dd28d"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"3c21c5e241803c9a81566cc91baa2c6a2a489a73","unresolved":false,"context_lines":[{"line_number":322,"context_line":"                                    fs[\u0027RUNNINGSTATUS\u0027]):"},{"line_number":323,"context_line":"            raise exception.InvalidShare("},{"line_number":324,"context_line":"                reason\u003d(_(\u0027Invalid status of filesystem: \u0027"},{"line_number":325,"context_line":"                          \u0027HEALTHSTATUS\u003d%(health)s \u0027"},{"line_number":326,"context_line":"                          \u0027RUNNINGSTATUS\u003d%(running)s.\u0027)"},{"line_number":327,"context_line":"                        % {\u0027health\u0027: fs[\u0027HEALTHSTATUS\u0027],"},{"line_number":328,"context_line":"                           \u0027running\u0027: fs[\u0027RUNNINGSTATUS\u0027]}))"}],"source_content_type":"text/x-python","patch_set":1,"id":"1a7b0d38_8374929c","line":325,"range":{"start_line":325,"start_character":51,"end_line":325,"end_character":52},"updated":"2015-12-23 09:43:52.000000000","message":"HEALTHSTATUS\u003d%(health)s and RUNNINGSTATUS\u003d%(running)s.","commit_id":"376077c3aa7d061b336a86f35061a5fe412dd28d"},{"author":{"_account_id":17742,"name":"liucheng","email":"liucheng20@huawei.com","username":"liucheng"},"change_message_id":"5ac01d0e706d1ec511f791cf52708adaf2ad931b","unresolved":false,"context_lines":[{"line_number":322,"context_line":"                                    fs[\u0027RUNNINGSTATUS\u0027]):"},{"line_number":323,"context_line":"            raise exception.InvalidShare("},{"line_number":324,"context_line":"                reason\u003d(_(\u0027Invalid status of filesystem: \u0027"},{"line_number":325,"context_line":"                          \u0027HEALTHSTATUS\u003d%(health)s \u0027"},{"line_number":326,"context_line":"                          \u0027RUNNINGSTATUS\u003d%(running)s.\u0027)"},{"line_number":327,"context_line":"                        % {\u0027health\u0027: fs[\u0027HEALTHSTATUS\u0027],"},{"line_number":328,"context_line":"                           \u0027running\u0027: fs[\u0027RUNNINGSTATUS\u0027]}))"}],"source_content_type":"text/x-python","patch_set":1,"id":"1a7b0d38_ee2649cd","line":325,"range":{"start_line":325,"start_character":51,"end_line":325,"end_character":52},"in_reply_to":"1a7b0d38_8374929c","updated":"2015-12-26 10:12:10.000000000","message":"Done","commit_id":"376077c3aa7d061b336a86f35061a5fe412dd28d"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"3c21c5e241803c9a81566cc91baa2c6a2a489a73","unresolved":false,"context_lines":[{"line_number":325,"context_line":"                          \u0027HEALTHSTATUS\u003d%(health)s \u0027"},{"line_number":326,"context_line":"                          \u0027RUNNINGSTATUS\u003d%(running)s.\u0027)"},{"line_number":327,"context_line":"                        % {\u0027health\u0027: fs[\u0027HEALTHSTATUS\u0027],"},{"line_number":328,"context_line":"                           \u0027running\u0027: fs[\u0027RUNNINGSTATUS\u0027]}))"},{"line_number":329,"context_line":""},{"line_number":330,"context_line":"        old_share_name \u003d self.helper._get_share_name_by_id("},{"line_number":331,"context_line":"            snapshot[\u0027share_id\u0027])"}],"source_content_type":"text/x-python","patch_set":1,"id":"1a7b0d38_c3629ad8","line":328,"range":{"start_line":328,"start_character":55,"end_line":328,"end_character":60},"updated":"2015-12-23 09:43:52.000000000","message":"Remove redundant parenthesis","commit_id":"376077c3aa7d061b336a86f35061a5fe412dd28d"},{"author":{"_account_id":17742,"name":"liucheng","email":"liucheng20@huawei.com","username":"liucheng"},"change_message_id":"5ac01d0e706d1ec511f791cf52708adaf2ad931b","unresolved":false,"context_lines":[{"line_number":325,"context_line":"                          \u0027HEALTHSTATUS\u003d%(health)s \u0027"},{"line_number":326,"context_line":"                          \u0027RUNNINGSTATUS\u003d%(running)s.\u0027)"},{"line_number":327,"context_line":"                        % {\u0027health\u0027: fs[\u0027HEALTHSTATUS\u0027],"},{"line_number":328,"context_line":"                           \u0027running\u0027: fs[\u0027RUNNINGSTATUS\u0027]}))"},{"line_number":329,"context_line":""},{"line_number":330,"context_line":"        old_share_name \u003d self.helper._get_share_name_by_id("},{"line_number":331,"context_line":"            snapshot[\u0027share_id\u0027])"}],"source_content_type":"text/x-python","patch_set":1,"id":"1a7b0d38_62002d02","line":328,"range":{"start_line":328,"start_character":55,"end_line":328,"end_character":60},"in_reply_to":"1a7b0d38_c3629ad8","updated":"2015-12-26 10:12:10.000000000","message":"Done","commit_id":"376077c3aa7d061b336a86f35061a5fe412dd28d"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"3c21c5e241803c9a81566cc91baa2c6a2a489a73","unresolved":false,"context_lines":[{"line_number":331,"context_line":"            snapshot[\u0027share_id\u0027])"},{"line_number":332,"context_line":"        old_share_proto \u003d self._get_share_proto(old_share_name)"},{"line_number":333,"context_line":"        if not old_share_proto:"},{"line_number":334,"context_line":"            err_msg \u003d (_(\"Can not find share %s on array.\")"},{"line_number":335,"context_line":"                       % snapshot[\u0027share_id\u0027])"},{"line_number":336,"context_line":"            LOG.error(err_msg)"},{"line_number":337,"context_line":"            raise exception.InvalidShare(reason\u003derr_msg)"}],"source_content_type":"text/x-python","patch_set":1,"id":"1a7b0d38_a3874e60","line":334,"range":{"start_line":334,"start_character":26,"end_line":334,"end_character":33},"updated":"2015-12-23 09:43:52.000000000","message":"s/Can not/Cannot","commit_id":"376077c3aa7d061b336a86f35061a5fe412dd28d"},{"author":{"_account_id":17742,"name":"liucheng","email":"liucheng20@huawei.com","username":"liucheng"},"change_message_id":"5ac01d0e706d1ec511f791cf52708adaf2ad931b","unresolved":false,"context_lines":[{"line_number":331,"context_line":"            snapshot[\u0027share_id\u0027])"},{"line_number":332,"context_line":"        old_share_proto \u003d self._get_share_proto(old_share_name)"},{"line_number":333,"context_line":"        if not old_share_proto:"},{"line_number":334,"context_line":"            err_msg \u003d (_(\"Can not find share %s on array.\")"},{"line_number":335,"context_line":"                       % snapshot[\u0027share_id\u0027])"},{"line_number":336,"context_line":"            LOG.error(err_msg)"},{"line_number":337,"context_line":"            raise exception.InvalidShare(reason\u003derr_msg)"}],"source_content_type":"text/x-python","patch_set":1,"id":"1a7b0d38_a235b5da","line":334,"range":{"start_line":334,"start_character":26,"end_line":334,"end_character":33},"in_reply_to":"1a7b0d38_a3874e60","updated":"2015-12-26 10:12:10.000000000","message":"Done","commit_id":"376077c3aa7d061b336a86f35061a5fe412dd28d"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"3c21c5e241803c9a81566cc91baa2c6a2a489a73","unresolved":false,"context_lines":[{"line_number":359,"context_line":"            self.copy_data_from_old_share(old_share, new_share)"},{"line_number":360,"context_line":"        except Exception as err:"},{"line_number":361,"context_line":"            self.delete_share(new_share)"},{"line_number":362,"context_line":"            raise exception.InvalidShare(reason\u003derr)"},{"line_number":363,"context_line":"        finally:"},{"line_number":364,"context_line":"            try:"},{"line_number":365,"context_line":"                shutil.rmtree(old_share[\u0027mount_src\u0027])"}],"source_content_type":"text/x-python","patch_set":1,"id":"1a7b0d38_a3d50e44","line":362,"range":{"start_line":362,"start_character":48,"end_line":362,"end_character":51},"updated":"2015-12-23 09:43:52.000000000","message":"six.text_type(err)","commit_id":"376077c3aa7d061b336a86f35061a5fe412dd28d"},{"author":{"_account_id":17742,"name":"liucheng","email":"liucheng20@huawei.com","username":"liucheng"},"change_message_id":"5ac01d0e706d1ec511f791cf52708adaf2ad931b","unresolved":false,"context_lines":[{"line_number":359,"context_line":"            self.copy_data_from_old_share(old_share, new_share)"},{"line_number":360,"context_line":"        except Exception as err:"},{"line_number":361,"context_line":"            self.delete_share(new_share)"},{"line_number":362,"context_line":"            raise exception.InvalidShare(reason\u003derr)"},{"line_number":363,"context_line":"        finally:"},{"line_number":364,"context_line":"            try:"},{"line_number":365,"context_line":"                shutil.rmtree(old_share[\u0027mount_src\u0027])"}],"source_content_type":"text/x-python","patch_set":1,"id":"1a7b0d38_82519910","line":362,"range":{"start_line":362,"start_character":48,"end_line":362,"end_character":51},"in_reply_to":"1a7b0d38_a3d50e44","updated":"2015-12-26 10:12:10.000000000","message":"Done","commit_id":"376077c3aa7d061b336a86f35061a5fe412dd28d"},{"author":{"_account_id":16883,"name":"huyang","email":"huyang1@huawei.com","username":"huyang"},"change_message_id":"18e930c19145ad138ea104ad90252baccfd9b995","unresolved":false,"context_lines":[{"line_number":365,"context_line":"                shutil.rmtree(old_share[\u0027mount_src\u0027])"},{"line_number":366,"context_line":"                shutil.rmtree(new_share[\u0027mount_src\u0027])"},{"line_number":367,"context_line":"            except Exception as err:"},{"line_number":368,"context_line":"                err_msg \u003d _(\u0027Failed to remove temp file\u0027)"},{"line_number":369,"context_line":"                LOG.error(err_msg)"},{"line_number":370,"context_line":""},{"line_number":371,"context_line":"        return new_share_path"}],"source_content_type":"text/x-python","patch_set":1,"id":"3a7e1126_7ad3a9d5","line":368,"range":{"start_line":368,"start_character":51,"end_line":368,"end_character":55},"updated":"2015-12-21 10:09:11.000000000","message":"Missing . EOL.","commit_id":"376077c3aa7d061b336a86f35061a5fe412dd28d"},{"author":{"_account_id":17742,"name":"liucheng","email":"liucheng20@huawei.com","username":"liucheng"},"change_message_id":"5ac01d0e706d1ec511f791cf52708adaf2ad931b","unresolved":false,"context_lines":[{"line_number":365,"context_line":"                shutil.rmtree(old_share[\u0027mount_src\u0027])"},{"line_number":366,"context_line":"                shutil.rmtree(new_share[\u0027mount_src\u0027])"},{"line_number":367,"context_line":"            except Exception as err:"},{"line_number":368,"context_line":"                err_msg \u003d _(\u0027Failed to remove temp file\u0027)"},{"line_number":369,"context_line":"                LOG.error(err_msg)"},{"line_number":370,"context_line":""},{"line_number":371,"context_line":"        return new_share_path"}],"source_content_type":"text/x-python","patch_set":1,"id":"1a7b0d38_e242dd3d","line":368,"range":{"start_line":368,"start_character":51,"end_line":368,"end_character":55},"in_reply_to":"3a7e1126_7ad3a9d5","updated":"2015-12-26 10:12:10.000000000","message":"Done","commit_id":"376077c3aa7d061b336a86f35061a5fe412dd28d"},{"author":{"_account_id":15100,"name":"zhongjun","email":"jun.zhongjun2@gmail.com","username":"zhongjun2"},"change_message_id":"9d118413a44ef3944ffe96d2a5cb29e1c42c042c","unresolved":false,"context_lines":[{"line_number":366,"context_line":"                shutil.rmtree(new_share[\u0027mount_src\u0027])"},{"line_number":367,"context_line":"            except Exception as err:"},{"line_number":368,"context_line":"                err_msg \u003d _(\u0027Failed to remove temp file\u0027)"},{"line_number":369,"context_line":"                LOG.error(err_msg)"},{"line_number":370,"context_line":""},{"line_number":371,"context_line":"        return new_share_path"},{"line_number":372,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"3a7e1126_ed5b3784","line":369,"range":{"start_line":369,"start_character":16,"end_line":369,"end_character":34},"updated":"2015-12-22 08:03:36.000000000","message":"If you think that if the exception for success. It is better to change LOG.error to LOG.warning.","commit_id":"376077c3aa7d061b336a86f35061a5fe412dd28d"},{"author":{"_account_id":17742,"name":"liucheng","email":"liucheng20@huawei.com","username":"liucheng"},"change_message_id":"5ac01d0e706d1ec511f791cf52708adaf2ad931b","unresolved":false,"context_lines":[{"line_number":366,"context_line":"                shutil.rmtree(new_share[\u0027mount_src\u0027])"},{"line_number":367,"context_line":"            except Exception as err:"},{"line_number":368,"context_line":"                err_msg \u003d _(\u0027Failed to remove temp file\u0027)"},{"line_number":369,"context_line":"                LOG.error(err_msg)"},{"line_number":370,"context_line":""},{"line_number":371,"context_line":"        return new_share_path"},{"line_number":372,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"1a7b0d38_c247a149","line":369,"range":{"start_line":369,"start_character":16,"end_line":369,"end_character":34},"in_reply_to":"3a7e1126_ed5b3784","updated":"2015-12-26 10:12:10.000000000","message":"Done","commit_id":"376077c3aa7d061b336a86f35061a5fe412dd28d"},{"author":{"_account_id":16883,"name":"huyang","email":"huyang1@huawei.com","username":"huyang"},"change_message_id":"18e930c19145ad138ea104ad90252baccfd9b995","unresolved":false,"context_lines":[{"line_number":377,"context_line":"            try:"},{"line_number":378,"context_line":"                self.allow_access(old_share, old_access)"},{"line_number":379,"context_line":"            except Exception as err:"},{"line_number":380,"context_line":"                message \u003d (_(\u0027Failed to add access to share %(name)s.\u0027"},{"line_number":381,"context_line":"                             \u0027Reason: %(err)s.\u0027)"},{"line_number":382,"context_line":"                           % {\u0027name\u0027: old_share[\u0027name\u0027], \u0027err\u0027: err})"},{"line_number":383,"context_line":"                raise exception.InvalidShare(reason\u003dmessage)"}],"source_content_type":"text/x-python","patch_set":1,"id":"3a7e1126_dd33b7f4","line":380,"range":{"start_line":380,"start_character":67,"end_line":380,"end_character":68},"updated":"2015-12-21 10:09:11.000000000","message":"Missing blank space after \"%(name)s.\".","commit_id":"376077c3aa7d061b336a86f35061a5fe412dd28d"},{"author":{"_account_id":17742,"name":"liucheng","email":"liucheng20@huawei.com","username":"liucheng"},"change_message_id":"5ac01d0e706d1ec511f791cf52708adaf2ad931b","unresolved":false,"context_lines":[{"line_number":377,"context_line":"            try:"},{"line_number":378,"context_line":"                self.allow_access(old_share, old_access)"},{"line_number":379,"context_line":"            except Exception as err:"},{"line_number":380,"context_line":"                message \u003d (_(\u0027Failed to add access to share %(name)s.\u0027"},{"line_number":381,"context_line":"                             \u0027Reason: %(err)s.\u0027)"},{"line_number":382,"context_line":"                           % {\u0027name\u0027: old_share[\u0027name\u0027], \u0027err\u0027: err})"},{"line_number":383,"context_line":"                raise exception.InvalidShare(reason\u003dmessage)"}],"source_content_type":"text/x-python","patch_set":1,"id":"1a7b0d38_4272d1ae","line":380,"range":{"start_line":380,"start_character":67,"end_line":380,"end_character":68},"in_reply_to":"3a7e1126_dd33b7f4","updated":"2015-12-26 10:12:10.000000000","message":"Done","commit_id":"376077c3aa7d061b336a86f35061a5fe412dd28d"},{"author":{"_account_id":16883,"name":"huyang","email":"huyang1@huawei.com","username":"huyang"},"change_message_id":"18e930c19145ad138ea104ad90252baccfd9b995","unresolved":false,"context_lines":[{"line_number":384,"context_line":""},{"line_number":385,"context_line":"        new_access \u003d self.get_access(new_share)"},{"line_number":386,"context_line":"        LOG.debug(\"Ready to create share from snapshot. \""},{"line_number":387,"context_line":"                  \"old_access: %(old_access)s, new_access: %(new_access)s\","},{"line_number":388,"context_line":"                  {\"old_access\": old_access, \"new_access\": new_access})"},{"line_number":389,"context_line":"        try:"},{"line_number":390,"context_line":"            try:"}],"source_content_type":"text/x-python","patch_set":1,"id":"3a7e1126_bacd9132","line":387,"range":{"start_line":387,"start_character":59,"end_line":387,"end_character":73},"updated":"2015-12-21 10:09:11.000000000","message":"Missing . after %(new_access)s","commit_id":"376077c3aa7d061b336a86f35061a5fe412dd28d"},{"author":{"_account_id":17742,"name":"liucheng","email":"liucheng20@huawei.com","username":"liucheng"},"change_message_id":"5ac01d0e706d1ec511f791cf52708adaf2ad931b","unresolved":false,"context_lines":[{"line_number":384,"context_line":""},{"line_number":385,"context_line":"        new_access \u003d self.get_access(new_share)"},{"line_number":386,"context_line":"        LOG.debug(\"Ready to create share from snapshot. \""},{"line_number":387,"context_line":"                  \"old_access: %(old_access)s, new_access: %(new_access)s\","},{"line_number":388,"context_line":"                  {\"old_access\": old_access, \"new_access\": new_access})"},{"line_number":389,"context_line":"        try:"},{"line_number":390,"context_line":"            try:"}],"source_content_type":"text/x-python","patch_set":1,"id":"1a7b0d38_c25ec111","line":387,"range":{"start_line":387,"start_character":59,"end_line":387,"end_character":73},"in_reply_to":"3a7e1126_bacd9132","updated":"2015-12-26 10:12:10.000000000","message":"Done","commit_id":"376077c3aa7d061b336a86f35061a5fe412dd28d"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"3c21c5e241803c9a81566cc91baa2c6a2a489a73","unresolved":false,"context_lines":[{"line_number":413,"context_line":"                message \u003d (_(\u0027Failed to copy data from share %(old_share)s to \u0027"},{"line_number":414,"context_line":"                             \u0027share %(new_share)s. Reason: %(err)s.\u0027)"},{"line_number":415,"context_line":"                           % {\u0027old_share\u0027: old_share[\u0027name\u0027],"},{"line_number":416,"context_line":"                              \u0027new_share\u0027: new_share[\u0027name\u0027], \u0027err\u0027: err})"},{"line_number":417,"context_line":"                raise exception.InvalidShare(reason\u003dmessage)"},{"line_number":418,"context_line":"            LOG.debug(\"Create share from snapshot successfully, new_share: %s, \""},{"line_number":419,"context_line":"                      \"old_share: %s.\", new_share, old_share)"}],"source_content_type":"text/x-python","patch_set":1,"id":"1a7b0d38_e369d68c","line":416,"range":{"start_line":416,"start_character":69,"end_line":416,"end_character":72},"updated":"2015-12-23 09:43:52.000000000","message":"six.text_type(err)","commit_id":"376077c3aa7d061b336a86f35061a5fe412dd28d"},{"author":{"_account_id":17742,"name":"liucheng","email":"liucheng20@huawei.com","username":"liucheng"},"change_message_id":"5ac01d0e706d1ec511f791cf52708adaf2ad931b","unresolved":false,"context_lines":[{"line_number":413,"context_line":"                message \u003d (_(\u0027Failed to copy data from share %(old_share)s to \u0027"},{"line_number":414,"context_line":"                             \u0027share %(new_share)s. Reason: %(err)s.\u0027)"},{"line_number":415,"context_line":"                           % {\u0027old_share\u0027: old_share[\u0027name\u0027],"},{"line_number":416,"context_line":"                              \u0027new_share\u0027: new_share[\u0027name\u0027], \u0027err\u0027: err})"},{"line_number":417,"context_line":"                raise exception.InvalidShare(reason\u003dmessage)"},{"line_number":418,"context_line":"            LOG.debug(\"Create share from snapshot successfully, new_share: %s, \""},{"line_number":419,"context_line":"                      \"old_share: %s.\", new_share, old_share)"}],"source_content_type":"text/x-python","patch_set":1,"id":"1a7b0d38_22a6a510","line":416,"range":{"start_line":416,"start_character":69,"end_line":416,"end_character":72},"in_reply_to":"1a7b0d38_e369d68c","updated":"2015-12-26 10:12:10.000000000","message":"Done","commit_id":"376077c3aa7d061b336a86f35061a5fe412dd28d"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"3c21c5e241803c9a81566cc91baa2c6a2a489a73","unresolved":false,"context_lines":[{"line_number":415,"context_line":"                           % {\u0027old_share\u0027: old_share[\u0027name\u0027],"},{"line_number":416,"context_line":"                              \u0027new_share\u0027: new_share[\u0027name\u0027], \u0027err\u0027: err})"},{"line_number":417,"context_line":"                raise exception.InvalidShare(reason\u003dmessage)"},{"line_number":418,"context_line":"            LOG.debug(\"Create share from snapshot successfully, new_share: %s, \""},{"line_number":419,"context_line":"                      \"old_share: %s.\", new_share, old_share)"},{"line_number":420,"context_line":"            try:"},{"line_number":421,"context_line":"                self.umount_share_from_host(new_share)"}],"source_content_type":"text/x-python","patch_set":1,"id":"1a7b0d38_0321824d","line":418,"range":{"start_line":418,"start_character":29,"end_line":418,"end_character":30},"updated":"2015-12-23 09:43:52.000000000","message":"s/Create/Created","commit_id":"376077c3aa7d061b336a86f35061a5fe412dd28d"},{"author":{"_account_id":17742,"name":"liucheng","email":"liucheng20@huawei.com","username":"liucheng"},"change_message_id":"5ac01d0e706d1ec511f791cf52708adaf2ad931b","unresolved":false,"context_lines":[{"line_number":415,"context_line":"                           % {\u0027old_share\u0027: old_share[\u0027name\u0027],"},{"line_number":416,"context_line":"                              \u0027new_share\u0027: new_share[\u0027name\u0027], \u0027err\u0027: err})"},{"line_number":417,"context_line":"                raise exception.InvalidShare(reason\u003dmessage)"},{"line_number":418,"context_line":"            LOG.debug(\"Create share from snapshot successfully, new_share: %s, \""},{"line_number":419,"context_line":"                      \"old_share: %s.\", new_share, old_share)"},{"line_number":420,"context_line":"            try:"},{"line_number":421,"context_line":"                self.umount_share_from_host(new_share)"}],"source_content_type":"text/x-python","patch_set":1,"id":"1a7b0d38_02acc9eb","line":418,"range":{"start_line":418,"start_character":29,"end_line":418,"end_character":30},"in_reply_to":"1a7b0d38_0321824d","updated":"2015-12-26 10:12:10.000000000","message":"Done","commit_id":"376077c3aa7d061b336a86f35061a5fe412dd28d"},{"author":{"_account_id":16883,"name":"huyang","email":"huyang1@huawei.com","username":"huyang"},"change_message_id":"18e930c19145ad138ea104ad90252baccfd9b995","unresolved":false,"context_lines":[{"line_number":455,"context_line":"            access[\u0027access_level\u0027] \u003d common_constants.ACCESS_LEVEL_RW"},{"line_number":456,"context_line":"            access[\u0027access_type\u0027] \u003d \u0027user\u0027"},{"line_number":457,"context_line":""},{"line_number":458,"context_line":"        LOG.debug(\"Get_access access: %s\", access)"},{"line_number":459,"context_line":"        return access"},{"line_number":460,"context_line":""},{"line_number":461,"context_line":"    def _get_access_id(self, share, access):"}],"source_content_type":"text/x-python","patch_set":1,"id":"3a7e1126_9a2e95f9","line":458,"range":{"start_line":458,"start_character":38,"end_line":458,"end_character":40},"updated":"2015-12-21 10:09:11.000000000","message":"Missing . after %s.","commit_id":"376077c3aa7d061b336a86f35061a5fe412dd28d"},{"author":{"_account_id":17742,"name":"liucheng","email":"liucheng20@huawei.com","username":"liucheng"},"change_message_id":"5ac01d0e706d1ec511f791cf52708adaf2ad931b","unresolved":false,"context_lines":[{"line_number":455,"context_line":"            access[\u0027access_level\u0027] \u003d common_constants.ACCESS_LEVEL_RW"},{"line_number":456,"context_line":"            access[\u0027access_type\u0027] \u003d \u0027user\u0027"},{"line_number":457,"context_line":""},{"line_number":458,"context_line":"        LOG.debug(\"Get_access access: %s\", access)"},{"line_number":459,"context_line":"        return access"},{"line_number":460,"context_line":""},{"line_number":461,"context_line":"    def _get_access_id(self, share, access):"}],"source_content_type":"text/x-python","patch_set":1,"id":"1a7b0d38_62834d57","line":458,"range":{"start_line":458,"start_character":38,"end_line":458,"end_character":40},"in_reply_to":"3a7e1126_9a2e95f9","updated":"2015-12-26 10:12:10.000000000","message":"Done","commit_id":"376077c3aa7d061b336a86f35061a5fe412dd28d"},{"author":{"_account_id":16883,"name":"huyang","email":"huyang1@huawei.com","username":"huyang"},"change_message_id":"18e930c19145ad138ea104ad90252baccfd9b995","unresolved":false,"context_lines":[{"line_number":459,"context_line":"        return access"},{"line_number":460,"context_line":""},{"line_number":461,"context_line":"    def _get_access_id(self, share, access):"},{"line_number":462,"context_line":"        \"\"\"Get access of the share.\"\"\""},{"line_number":463,"context_line":"        share_name \u003d share[\u0027name\u0027]"},{"line_number":464,"context_line":"        share_url_type \u003d self.helper._get_share_url_type(share[\u0027share_proto\u0027])"},{"line_number":465,"context_line":"        share_client_type \u003d self.helper._get_share_client_type("}],"source_content_type":"text/x-python","patch_set":1,"id":"3a7e1126_7a0e498d","line":462,"range":{"start_line":462,"start_character":10,"end_line":462,"end_character":21},"updated":"2015-12-21 10:09:11.000000000","message":"Get access id is better.","commit_id":"376077c3aa7d061b336a86f35061a5fe412dd28d"},{"author":{"_account_id":17742,"name":"liucheng","email":"liucheng20@huawei.com","username":"liucheng"},"change_message_id":"5ac01d0e706d1ec511f791cf52708adaf2ad931b","unresolved":false,"context_lines":[{"line_number":459,"context_line":"        return access"},{"line_number":460,"context_line":""},{"line_number":461,"context_line":"    def _get_access_id(self, share, access):"},{"line_number":462,"context_line":"        \"\"\"Get access of the share.\"\"\""},{"line_number":463,"context_line":"        share_name \u003d share[\u0027name\u0027]"},{"line_number":464,"context_line":"        share_url_type \u003d self.helper._get_share_url_type(share[\u0027share_proto\u0027])"},{"line_number":465,"context_line":"        share_client_type \u003d self.helper._get_share_client_type("}],"source_content_type":"text/x-python","patch_set":1,"id":"1a7b0d38_82867963","line":462,"range":{"start_line":462,"start_character":10,"end_line":462,"end_character":21},"in_reply_to":"3a7e1126_7a0e498d","updated":"2015-12-26 10:12:10.000000000","message":"Done","commit_id":"376077c3aa7d061b336a86f35061a5fe412dd28d"},{"author":{"_account_id":16883,"name":"huyang","email":"huyang1@huawei.com","username":"huyang"},"change_message_id":"18e930c19145ad138ea104ad90252baccfd9b995","unresolved":false,"context_lines":[{"line_number":469,"context_line":"        access_id \u003d self.helper._get_access_from_share(share[\u0027ID\u0027], access_to,"},{"line_number":470,"context_line":"                                                       share_client_type)"},{"line_number":471,"context_line":"        if not access_id:"},{"line_number":472,"context_line":"            LOG.debug(\u0027Can not get access id from share. \u0027"},{"line_number":473,"context_line":"                      \u0027share_name: %s\u0027, share_name)"},{"line_number":474,"context_line":"            return"},{"line_number":475,"context_line":"        return access_id"}],"source_content_type":"text/x-python","patch_set":1,"id":"3a7e1126_fabeb9ac","line":472,"range":{"start_line":472,"start_character":22,"end_line":472,"end_character":30},"updated":"2015-12-21 10:09:11.000000000","message":"s/Can not/Cannot","commit_id":"376077c3aa7d061b336a86f35061a5fe412dd28d"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"3c21c5e241803c9a81566cc91baa2c6a2a489a73","unresolved":false,"context_lines":[{"line_number":469,"context_line":"        access_id \u003d self.helper._get_access_from_share(share[\u0027ID\u0027], access_to,"},{"line_number":470,"context_line":"                                                       share_client_type)"},{"line_number":471,"context_line":"        if not access_id:"},{"line_number":472,"context_line":"            LOG.debug(\u0027Can not get access id from share. \u0027"},{"line_number":473,"context_line":"                      \u0027share_name: %s\u0027, share_name)"},{"line_number":474,"context_line":"            return"},{"line_number":475,"context_line":"        return access_id"}],"source_content_type":"text/x-python","patch_set":1,"id":"1a7b0d38_832b32eb","line":472,"range":{"start_line":472,"start_character":42,"end_line":472,"end_character":44},"updated":"2015-12-23 09:43:52.000000000","message":"s/id/ID","commit_id":"376077c3aa7d061b336a86f35061a5fe412dd28d"},{"author":{"_account_id":17742,"name":"liucheng","email":"liucheng20@huawei.com","username":"liucheng"},"change_message_id":"5ac01d0e706d1ec511f791cf52708adaf2ad931b","unresolved":false,"context_lines":[{"line_number":469,"context_line":"        access_id \u003d self.helper._get_access_from_share(share[\u0027ID\u0027], access_to,"},{"line_number":470,"context_line":"                                                       share_client_type)"},{"line_number":471,"context_line":"        if not access_id:"},{"line_number":472,"context_line":"            LOG.debug(\u0027Can not get access id from share. \u0027"},{"line_number":473,"context_line":"                      \u0027share_name: %s\u0027, share_name)"},{"line_number":474,"context_line":"            return"},{"line_number":475,"context_line":"        return access_id"}],"source_content_type":"text/x-python","patch_set":1,"id":"1a7b0d38_c28c8181","line":472,"range":{"start_line":472,"start_character":42,"end_line":472,"end_character":44},"in_reply_to":"1a7b0d38_832b32eb","updated":"2015-12-26 10:12:10.000000000","message":"Done","commit_id":"376077c3aa7d061b336a86f35061a5fe412dd28d"},{"author":{"_account_id":17742,"name":"liucheng","email":"liucheng20@huawei.com","username":"liucheng"},"change_message_id":"5ac01d0e706d1ec511f791cf52708adaf2ad931b","unresolved":false,"context_lines":[{"line_number":469,"context_line":"        access_id \u003d self.helper._get_access_from_share(share[\u0027ID\u0027], access_to,"},{"line_number":470,"context_line":"                                                       share_client_type)"},{"line_number":471,"context_line":"        if not access_id:"},{"line_number":472,"context_line":"            LOG.debug(\u0027Can not get access id from share. \u0027"},{"line_number":473,"context_line":"                      \u0027share_name: %s\u0027, share_name)"},{"line_number":474,"context_line":"            return"},{"line_number":475,"context_line":"        return access_id"}],"source_content_type":"text/x-python","patch_set":1,"id":"1a7b0d38_a291359b","line":472,"range":{"start_line":472,"start_character":22,"end_line":472,"end_character":30},"in_reply_to":"3a7e1126_fabeb9ac","updated":"2015-12-26 10:12:10.000000000","message":"Done","commit_id":"376077c3aa7d061b336a86f35061a5fe412dd28d"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"3c21c5e241803c9a81566cc91baa2c6a2a489a73","unresolved":false,"context_lines":[{"line_number":479,"context_line":"                    old_share[\u0027snapshot_name\u0027])"},{"line_number":480,"context_line":"        dst_path \u003d new_share[\u0027mount_src\u0027]"},{"line_number":481,"context_line":"        copy_finish \u003d False"},{"line_number":482,"context_line":"        LOG.debug(\"src_path: %s, dst_path: %s\", src_path, dst_path)"},{"line_number":483,"context_line":"        try:"},{"line_number":484,"context_line":"            ignore_list \u003d \u0027\u0027"},{"line_number":485,"context_line":"            copy \u003d share_utils.Copy(src_path,"}],"source_content_type":"text/x-python","patch_set":1,"id":"1a7b0d38_430c6a94","line":482,"range":{"start_line":482,"start_character":45,"end_line":482,"end_character":47},"updated":"2015-12-23 09:43:52.000000000","message":"Add a period at the end of the statement.","commit_id":"376077c3aa7d061b336a86f35061a5fe412dd28d"},{"author":{"_account_id":17742,"name":"liucheng","email":"liucheng20@huawei.com","username":"liucheng"},"change_message_id":"5ac01d0e706d1ec511f791cf52708adaf2ad931b","unresolved":false,"context_lines":[{"line_number":479,"context_line":"                    old_share[\u0027snapshot_name\u0027])"},{"line_number":480,"context_line":"        dst_path \u003d new_share[\u0027mount_src\u0027]"},{"line_number":481,"context_line":"        copy_finish \u003d False"},{"line_number":482,"context_line":"        LOG.debug(\"src_path: %s, dst_path: %s\", src_path, dst_path)"},{"line_number":483,"context_line":"        try:"},{"line_number":484,"context_line":"            ignore_list \u003d \u0027\u0027"},{"line_number":485,"context_line":"            copy \u003d share_utils.Copy(src_path,"}],"source_content_type":"text/x-python","patch_set":1,"id":"1a7b0d38_02da8978","line":482,"range":{"start_line":482,"start_character":45,"end_line":482,"end_character":47},"in_reply_to":"1a7b0d38_430c6a94","updated":"2015-12-26 10:12:10.000000000","message":"Done","commit_id":"376077c3aa7d061b336a86f35061a5fe412dd28d"},{"author":{"_account_id":14567,"name":"Rodrigo Barbieri","email":"rodrigo.barbieri2010@gmail.com","username":"ganso"},"change_message_id":"5c729bf15c086d2e19e136c44f52269c25073973","unresolved":false,"context_lines":[{"line_number":481,"context_line":"        copy_finish \u003d False"},{"line_number":482,"context_line":"        LOG.debug(\"src_path: %s, dst_path: %s\", src_path, dst_path)"},{"line_number":483,"context_line":"        try:"},{"line_number":484,"context_line":"            ignore_list \u003d \u0027\u0027"},{"line_number":485,"context_line":"            copy \u003d share_utils.Copy(src_path,"},{"line_number":486,"context_line":"                                    dst_path,"},{"line_number":487,"context_line":"                                    ignore_list)"}],"source_content_type":"text/x-python","patch_set":1,"id":"1a7b0d38_20e5b0a7","line":484,"range":{"start_line":484,"start_character":12,"end_line":484,"end_character":23},"updated":"2015-12-22 17:13:05.000000000","message":"It\u0027s a good idea for this variable to be retrieved from config options.","commit_id":"376077c3aa7d061b336a86f35061a5fe412dd28d"},{"author":{"_account_id":17742,"name":"liucheng","email":"liucheng20@huawei.com","username":"liucheng"},"change_message_id":"5ac01d0e706d1ec511f791cf52708adaf2ad931b","unresolved":false,"context_lines":[{"line_number":481,"context_line":"        copy_finish \u003d False"},{"line_number":482,"context_line":"        LOG.debug(\"src_path: %s, dst_path: %s\", src_path, dst_path)"},{"line_number":483,"context_line":"        try:"},{"line_number":484,"context_line":"            ignore_list \u003d \u0027\u0027"},{"line_number":485,"context_line":"            copy \u003d share_utils.Copy(src_path,"},{"line_number":486,"context_line":"                                    dst_path,"},{"line_number":487,"context_line":"                                    ignore_list)"}],"source_content_type":"text/x-python","patch_set":1,"id":"1a7b0d38_02c12980","line":484,"range":{"start_line":484,"start_character":12,"end_line":484,"end_character":23},"in_reply_to":"1a7b0d38_20e5b0a7","updated":"2015-12-26 10:12:10.000000000","message":"Done","commit_id":"376077c3aa7d061b336a86f35061a5fe412dd28d"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"3c21c5e241803c9a81566cc91baa2c6a2a489a73","unresolved":false,"context_lines":[{"line_number":489,"context_line":"            if copy.get_progress()[\u0027total_progress\u0027] \u003d\u003d 100:"},{"line_number":490,"context_line":"                copy_finish \u003d True"},{"line_number":491,"context_line":"        except Exception as err:"},{"line_number":492,"context_line":"            message \u003d (_(\u0027Copy data fail: %s.\u0027) % err)"},{"line_number":493,"context_line":"            raise exception.InvalidShare(reason\u003dmessage)"},{"line_number":494,"context_line":"        if not copy_finish:"},{"line_number":495,"context_line":"            message \u003d _(\u0027Copy data not finished.\u0027)"}],"source_content_type":"text/x-python","patch_set":1,"id":"1a7b0d38_43830acd","line":492,"range":{"start_line":492,"start_character":22,"end_line":492,"end_character":54},"updated":"2015-12-23 09:43:52.000000000","message":"_(\"Failed to copy data, reason: %s.\") % six.text_type(err)\n\nredundant parenthesis","commit_id":"376077c3aa7d061b336a86f35061a5fe412dd28d"},{"author":{"_account_id":17742,"name":"liucheng","email":"liucheng20@huawei.com","username":"liucheng"},"change_message_id":"5ac01d0e706d1ec511f791cf52708adaf2ad931b","unresolved":false,"context_lines":[{"line_number":489,"context_line":"            if copy.get_progress()[\u0027total_progress\u0027] \u003d\u003d 100:"},{"line_number":490,"context_line":"                copy_finish \u003d True"},{"line_number":491,"context_line":"        except Exception as err:"},{"line_number":492,"context_line":"            message \u003d (_(\u0027Copy data fail: %s.\u0027) % err)"},{"line_number":493,"context_line":"            raise exception.InvalidShare(reason\u003dmessage)"},{"line_number":494,"context_line":"        if not copy_finish:"},{"line_number":495,"context_line":"            message \u003d _(\u0027Copy data not finished.\u0027)"}],"source_content_type":"text/x-python","patch_set":1,"id":"1a7b0d38_c2ba410a","line":492,"range":{"start_line":492,"start_character":22,"end_line":492,"end_character":54},"in_reply_to":"1a7b0d38_43830acd","updated":"2015-12-26 10:12:10.000000000","message":"Done","commit_id":"376077c3aa7d061b336a86f35061a5fe412dd28d"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"3c21c5e241803c9a81566cc91baa2c6a2a489a73","unresolved":false,"context_lines":[{"line_number":500,"context_line":"            utils.execute(\u0027umount\u0027, share[\u0027mount_path\u0027],"},{"line_number":501,"context_line":"                          run_as_root\u003dTrue)"},{"line_number":502,"context_line":"        except Exception as err:"},{"line_number":503,"context_line":"            message \u003d (_(\u0027Umount share from host fail: %s.\u0027) % err)"},{"line_number":504,"context_line":"            raise exception.InvalidShare(reason\u003dmessage)"},{"line_number":505,"context_line":""},{"line_number":506,"context_line":"    def mount_share_to_host(self, share, access):"}],"source_content_type":"text/x-python","patch_set":1,"id":"1a7b0d38_8363321a","line":503,"range":{"start_line":503,"start_character":22,"end_line":503,"end_character":67},"updated":"2015-12-23 09:43:52.000000000","message":"Please remove redundant parenthesis\n\nPrefer:\n\n\"Failed to unmount share %(share)s. Reason: %(reason)s.\"","commit_id":"376077c3aa7d061b336a86f35061a5fe412dd28d"},{"author":{"_account_id":17742,"name":"liucheng","email":"liucheng20@huawei.com","username":"liucheng"},"change_message_id":"5ac01d0e706d1ec511f791cf52708adaf2ad931b","unresolved":false,"context_lines":[{"line_number":500,"context_line":"            utils.execute(\u0027umount\u0027, share[\u0027mount_path\u0027],"},{"line_number":501,"context_line":"                          run_as_root\u003dTrue)"},{"line_number":502,"context_line":"        except Exception as err:"},{"line_number":503,"context_line":"            message \u003d (_(\u0027Umount share from host fail: %s.\u0027) % err)"},{"line_number":504,"context_line":"            raise exception.InvalidShare(reason\u003dmessage)"},{"line_number":505,"context_line":""},{"line_number":506,"context_line":"    def mount_share_to_host(self, share, access):"}],"source_content_type":"text/x-python","patch_set":1,"id":"1a7b0d38_22ac659f","line":503,"range":{"start_line":503,"start_character":22,"end_line":503,"end_character":67},"in_reply_to":"1a7b0d38_8363321a","updated":"2015-12-26 10:12:10.000000000","message":"Done","commit_id":"376077c3aa7d061b336a86f35061a5fe412dd28d"},{"author":{"_account_id":15100,"name":"zhongjun","email":"jun.zhongjun2@gmail.com","username":"zhongjun2"},"change_message_id":"9d118413a44ef3944ffe96d2a5cb29e1c42c042c","unresolved":false,"context_lines":[{"line_number":504,"context_line":"            raise exception.InvalidShare(reason\u003dmessage)"},{"line_number":505,"context_line":""},{"line_number":506,"context_line":"    def mount_share_to_host(self, share, access):"},{"line_number":507,"context_line":"        LOG.debug(\"Mount share to host, mount_src: %s\", share[\u0027mount_src\u0027])"},{"line_number":508,"context_line":"        try:"},{"line_number":509,"context_line":"            if share[\u0027share_proto\u0027] \u003d\u003d \u0027NFS\u0027:"},{"line_number":510,"context_line":"                utils.execute(\u0027mount\u0027, \u0027-t\u0027, \u0027nfs\u0027,"}],"source_content_type":"text/x-python","patch_set":1,"id":"3a7e1126_4a4831cc","line":507,"range":{"start_line":507,"start_character":25,"end_line":507,"end_character":30},"updated":"2015-12-22 08:03:36.000000000","message":"Will be good to add share detail(id or name).","commit_id":"376077c3aa7d061b336a86f35061a5fe412dd28d"},{"author":{"_account_id":17742,"name":"liucheng","email":"liucheng20@huawei.com","username":"liucheng"},"change_message_id":"5ac01d0e706d1ec511f791cf52708adaf2ad931b","unresolved":false,"context_lines":[{"line_number":504,"context_line":"            raise exception.InvalidShare(reason\u003dmessage)"},{"line_number":505,"context_line":""},{"line_number":506,"context_line":"    def mount_share_to_host(self, share, access):"},{"line_number":507,"context_line":"        LOG.debug(\"Mount share to host, mount_src: %s\", share[\u0027mount_src\u0027])"},{"line_number":508,"context_line":"        try:"},{"line_number":509,"context_line":"            if share[\u0027share_proto\u0027] \u003d\u003d \u0027NFS\u0027:"},{"line_number":510,"context_line":"                utils.execute(\u0027mount\u0027, \u0027-t\u0027, \u0027nfs\u0027,"}],"source_content_type":"text/x-python","patch_set":1,"id":"1a7b0d38_a2a055a0","line":507,"range":{"start_line":507,"start_character":25,"end_line":507,"end_character":30},"in_reply_to":"3a7e1126_4a4831cc","updated":"2015-12-26 10:12:10.000000000","message":"Done","commit_id":"376077c3aa7d061b336a86f35061a5fe412dd28d"},{"author":{"_account_id":15100,"name":"zhongjun","email":"jun.zhongjun2@gmail.com","username":"zhongjun2"},"change_message_id":"9d118413a44ef3944ffe96d2a5cb29e1c42c042c","unresolved":false,"context_lines":[{"line_number":521,"context_line":"                              share[\u0027mount_path\u0027], share[\u0027mount_src\u0027],"},{"line_number":522,"context_line":"                              \u0027-o\u0027, user, run_as_root\u003dTrue)"},{"line_number":523,"context_line":"        except Exception as err:"},{"line_number":524,"context_line":"            message \u003d (_(\u0027Bad response from change file: %s.\u0027) % err)"},{"line_number":525,"context_line":"            raise exception.InvalidShare(reason\u003dmessage)"},{"line_number":526,"context_line":""},{"line_number":527,"context_line":"    def get_network_allocations_number(self):"}],"source_content_type":"text/x-python","patch_set":1,"id":"3a7e1126_8a57f956","line":524,"range":{"start_line":524,"start_character":26,"end_line":524,"end_character":55},"updated":"2015-12-22 08:03:36.000000000","message":"Bad response from change file? Where is to change file? Do you want to see \"Bad response from mount share\"","commit_id":"376077c3aa7d061b336a86f35061a5fe412dd28d"},{"author":{"_account_id":17742,"name":"liucheng","email":"liucheng20@huawei.com","username":"liucheng"},"change_message_id":"5ac01d0e706d1ec511f791cf52708adaf2ad931b","unresolved":false,"context_lines":[{"line_number":521,"context_line":"                              share[\u0027mount_path\u0027], share[\u0027mount_src\u0027],"},{"line_number":522,"context_line":"                              \u0027-o\u0027, user, run_as_root\u003dTrue)"},{"line_number":523,"context_line":"        except Exception as err:"},{"line_number":524,"context_line":"            message \u003d (_(\u0027Bad response from change file: %s.\u0027) % err)"},{"line_number":525,"context_line":"            raise exception.InvalidShare(reason\u003dmessage)"},{"line_number":526,"context_line":""},{"line_number":527,"context_line":"    def get_network_allocations_number(self):"}],"source_content_type":"text/x-python","patch_set":1,"id":"1a7b0d38_c29b2171","line":524,"range":{"start_line":524,"start_character":26,"end_line":524,"end_character":55},"in_reply_to":"3a7e1126_8a57f956","updated":"2015-12-26 10:12:10.000000000","message":"Done","commit_id":"376077c3aa7d061b336a86f35061a5fe412dd28d"},{"author":{"_account_id":14567,"name":"Rodrigo Barbieri","email":"rodrigo.barbieri2010@gmail.com","username":"ganso"},"change_message_id":"f3eda16bc72f4c66c12c61ad19c2ada2d51e5b01","unresolved":false,"context_lines":[{"line_number":301,"context_line":"    def create_share_from_snapshot(self, share, snapshot,"},{"line_number":302,"context_line":"                                   share_server\u003dNone):"},{"line_number":303,"context_line":"        \"\"\"Is called to a create share from snapshot.\"\"\""},{"line_number":304,"context_line":"        LOG.debug(\"Create a new share: %s from snapshot: %s.\","},{"line_number":305,"context_line":"                  share[\u0027share_id\u0027], snapshot[\u0027snapshot_id\u0027])"},{"line_number":306,"context_line":"        share_fs_id \u003d self.helper._get_fsid_by_name(snapshot[\u0027share_name\u0027])"},{"line_number":307,"context_line":"        if not share_fs_id:"}],"source_content_type":"text/x-python","patch_set":3,"id":"1a7b0d38_c539c7a5","line":304,"range":{"start_line":304,"start_character":12,"end_line":304,"end_character":17},"updated":"2015-12-28 16:20:56.000000000","message":"Redundant LOG.debug with huawei_nas.py LN #115. I suggest removing this one.","commit_id":"e33fdc8fa3e9ba8ff194098f25b48e7108eb1035"},{"author":{"_account_id":17742,"name":"liucheng","email":"liucheng20@huawei.com","username":"liucheng"},"change_message_id":"e9d265094429816834149de5e74b94028bdc2078","unresolved":false,"context_lines":[{"line_number":301,"context_line":"    def create_share_from_snapshot(self, share, snapshot,"},{"line_number":302,"context_line":"                                   share_server\u003dNone):"},{"line_number":303,"context_line":"        \"\"\"Is called to a create share from snapshot.\"\"\""},{"line_number":304,"context_line":"        LOG.debug(\"Create a new share: %s from snapshot: %s.\","},{"line_number":305,"context_line":"                  share[\u0027share_id\u0027], snapshot[\u0027snapshot_id\u0027])"},{"line_number":306,"context_line":"        share_fs_id \u003d self.helper._get_fsid_by_name(snapshot[\u0027share_name\u0027])"},{"line_number":307,"context_line":"        if not share_fs_id:"}],"source_content_type":"text/x-python","patch_set":3,"id":"1a7b0d38_99979f47","line":304,"range":{"start_line":304,"start_character":12,"end_line":304,"end_character":17},"in_reply_to":"1a7b0d38_c539c7a5","updated":"2015-12-30 04:30:56.000000000","message":"Done","commit_id":"e33fdc8fa3e9ba8ff194098f25b48e7108eb1035"},{"author":{"_account_id":14567,"name":"Rodrigo Barbieri","email":"rodrigo.barbieri2010@gmail.com","username":"ganso"},"change_message_id":"f3eda16bc72f4c66c12c61ad19c2ada2d51e5b01","unresolved":false,"context_lines":[{"line_number":414,"context_line":"            try:"},{"line_number":415,"context_line":"                self.copy_data(old_share, new_share)"},{"line_number":416,"context_line":"            except Exception as err:"},{"line_number":417,"context_line":"                self.umount_share_from_host(new_share)"},{"line_number":418,"context_line":"                self.umount_share_from_host(old_share)"},{"line_number":419,"context_line":"                message \u003d (_(\u0027Failed to copy data from share %(old_share)s to \u0027"},{"line_number":420,"context_line":"                             \u0027share %(new_share)s. Reason: %(err)s.\u0027)"},{"line_number":421,"context_line":"                           % {\u0027old_share\u0027: old_share[\u0027name\u0027],"}],"source_content_type":"text/x-python","patch_set":3,"id":"1a7b0d38_c54c67a0","line":418,"range":{"start_line":417,"start_character":16,"end_line":418,"end_character":54},"updated":"2015-12-28 16:20:56.000000000","message":"Suggestion: If copying fails or succeeds, you will have to unmount and deny access either way. So, I would set a flag \"copied \u003d True\" after self.copy_data returns (also move the LOG.debug to the end where you check \"if copied:\"), save the exception and raise it later. The main reason is that you are trying to unmount while capturing errors, and inside this except block, if the unmount of new_share throws an error, you will not unmount old_share. There are several approaches to this, like using more try/except blocks, or using finally, or the approach I suggested.","commit_id":"e33fdc8fa3e9ba8ff194098f25b48e7108eb1035"},{"author":{"_account_id":17742,"name":"liucheng","email":"liucheng20@huawei.com","username":"liucheng"},"change_message_id":"e9d265094429816834149de5e74b94028bdc2078","unresolved":false,"context_lines":[{"line_number":414,"context_line":"            try:"},{"line_number":415,"context_line":"                self.copy_data(old_share, new_share)"},{"line_number":416,"context_line":"            except Exception as err:"},{"line_number":417,"context_line":"                self.umount_share_from_host(new_share)"},{"line_number":418,"context_line":"                self.umount_share_from_host(old_share)"},{"line_number":419,"context_line":"                message \u003d (_(\u0027Failed to copy data from share %(old_share)s to \u0027"},{"line_number":420,"context_line":"                             \u0027share %(new_share)s. Reason: %(err)s.\u0027)"},{"line_number":421,"context_line":"                           % {\u0027old_share\u0027: old_share[\u0027name\u0027],"}],"source_content_type":"text/x-python","patch_set":3,"id":"1a7b0d38_f9ad839b","line":418,"range":{"start_line":417,"start_character":16,"end_line":418,"end_character":54},"in_reply_to":"1a7b0d38_c54c67a0","updated":"2015-12-30 04:30:56.000000000","message":"Done","commit_id":"e33fdc8fa3e9ba8ff194098f25b48e7108eb1035"},{"author":{"_account_id":14567,"name":"Rodrigo Barbieri","email":"rodrigo.barbieri2010@gmail.com","username":"ganso"},"change_message_id":"f3eda16bc72f4c66c12c61ad19c2ada2d51e5b01","unresolved":false,"context_lines":[{"line_number":422,"context_line":"                              \u0027new_share\u0027: new_share[\u0027name\u0027],"},{"line_number":423,"context_line":"                              \u0027err\u0027: six.text_type(err)})"},{"line_number":424,"context_line":"                raise exception.InvalidShare(reason\u003dmessage)"},{"line_number":425,"context_line":"            LOG.debug(\"Created share from snapshot successfully, \""},{"line_number":426,"context_line":"                      \"new_share: %s, old_share: %s.\","},{"line_number":427,"context_line":"                      new_share, old_share)"},{"line_number":428,"context_line":"            try:"},{"line_number":429,"context_line":"                self.umount_share_from_host(new_share)"},{"line_number":430,"context_line":"            except Exception as err:"}],"source_content_type":"text/x-python","patch_set":3,"id":"1a7b0d38_c09d35bd","line":427,"range":{"start_line":425,"start_character":12,"end_line":427,"end_character":43},"updated":"2015-12-28 16:20:56.000000000","message":"See above comment.","commit_id":"e33fdc8fa3e9ba8ff194098f25b48e7108eb1035"},{"author":{"_account_id":17742,"name":"liucheng","email":"liucheng20@huawei.com","username":"liucheng"},"change_message_id":"e9d265094429816834149de5e74b94028bdc2078","unresolved":false,"context_lines":[{"line_number":422,"context_line":"                              \u0027new_share\u0027: new_share[\u0027name\u0027],"},{"line_number":423,"context_line":"                              \u0027err\u0027: six.text_type(err)})"},{"line_number":424,"context_line":"                raise exception.InvalidShare(reason\u003dmessage)"},{"line_number":425,"context_line":"            LOG.debug(\"Created share from snapshot successfully, \""},{"line_number":426,"context_line":"                      \"new_share: %s, old_share: %s.\","},{"line_number":427,"context_line":"                      new_share, old_share)"},{"line_number":428,"context_line":"            try:"},{"line_number":429,"context_line":"                self.umount_share_from_host(new_share)"},{"line_number":430,"context_line":"            except Exception as err:"}],"source_content_type":"text/x-python","patch_set":3,"id":"1a7b0d38_39a8eb8c","line":427,"range":{"start_line":425,"start_character":12,"end_line":427,"end_character":43},"in_reply_to":"1a7b0d38_c09d35bd","updated":"2015-12-30 04:30:56.000000000","message":"Done","commit_id":"e33fdc8fa3e9ba8ff194098f25b48e7108eb1035"},{"author":{"_account_id":14567,"name":"Rodrigo Barbieri","email":"rodrigo.barbieri2010@gmail.com","username":"ganso"},"change_message_id":"f3eda16bc72f4c66c12c61ad19c2ada2d51e5b01","unresolved":false,"context_lines":[{"line_number":493,"context_line":"        copy_finish \u003d False"},{"line_number":494,"context_line":"        LOG.debug(\"src_path:%s, dst_path:%s.\", src_path, dst_path)"},{"line_number":495,"context_line":"        try:"},{"line_number":496,"context_line":"            ignore_list \u003d \u0027\u0027"},{"line_number":497,"context_line":"            copy \u003d share_utils.Copy(src_path,"},{"line_number":498,"context_line":"                                    dst_path,"},{"line_number":499,"context_line":"                                    ignore_list)"}],"source_content_type":"text/x-python","patch_set":3,"id":"1a7b0d38_404e253c","line":496,"range":{"start_line":496,"start_character":26,"end_line":496,"end_character":28},"updated":"2015-12-28 16:20:56.000000000","message":"any reason why this should not be a config variable?","commit_id":"e33fdc8fa3e9ba8ff194098f25b48e7108eb1035"},{"author":{"_account_id":17742,"name":"liucheng","email":"liucheng20@huawei.com","username":"liucheng"},"change_message_id":"e9d265094429816834149de5e74b94028bdc2078","unresolved":false,"context_lines":[{"line_number":493,"context_line":"        copy_finish \u003d False"},{"line_number":494,"context_line":"        LOG.debug(\"src_path:%s, dst_path:%s.\", src_path, dst_path)"},{"line_number":495,"context_line":"        try:"},{"line_number":496,"context_line":"            ignore_list \u003d \u0027\u0027"},{"line_number":497,"context_line":"            copy \u003d share_utils.Copy(src_path,"},{"line_number":498,"context_line":"                                    dst_path,"},{"line_number":499,"context_line":"                                    ignore_list)"}],"source_content_type":"text/x-python","patch_set":3,"id":"1a7b0d38_19a3afb3","line":496,"range":{"start_line":496,"start_character":26,"end_line":496,"end_character":28},"in_reply_to":"1a7b0d38_404e253c","updated":"2015-12-30 04:30:56.000000000","message":"We wiil copy all the data in the \"scr_path\".","commit_id":"e33fdc8fa3e9ba8ff194098f25b48e7108eb1035"},{"author":{"_account_id":14567,"name":"Rodrigo Barbieri","email":"rodrigo.barbieri2010@gmail.com","username":"ganso"},"change_message_id":"f3eda16bc72f4c66c12c61ad19c2ada2d51e5b01","unresolved":false,"context_lines":[{"line_number":505,"context_line":"                       % six.text_type(err))"},{"line_number":506,"context_line":"            raise exception.InvalidShare(reason\u003dmessage)"},{"line_number":507,"context_line":"        if not copy_finish:"},{"line_number":508,"context_line":"            message \u003d _(\"Copy data not finished.\")"},{"line_number":509,"context_line":"            raise exception.InvalidShare(reason\u003dmessage)"},{"line_number":510,"context_line":""},{"line_number":511,"context_line":"    def umount_share_from_host(self, share):"}],"source_content_type":"text/x-python","patch_set":3,"id":"1a7b0d38_a044a91a","line":508,"range":{"start_line":508,"start_character":39,"end_line":508,"end_character":47},"updated":"2015-12-28 16:20:56.000000000","message":"s/finished/successful","commit_id":"e33fdc8fa3e9ba8ff194098f25b48e7108eb1035"},{"author":{"_account_id":17742,"name":"liucheng","email":"liucheng20@huawei.com","username":"liucheng"},"change_message_id":"e9d265094429816834149de5e74b94028bdc2078","unresolved":false,"context_lines":[{"line_number":505,"context_line":"                       % six.text_type(err))"},{"line_number":506,"context_line":"            raise exception.InvalidShare(reason\u003dmessage)"},{"line_number":507,"context_line":"        if not copy_finish:"},{"line_number":508,"context_line":"            message \u003d _(\"Copy data not finished.\")"},{"line_number":509,"context_line":"            raise exception.InvalidShare(reason\u003dmessage)"},{"line_number":510,"context_line":""},{"line_number":511,"context_line":"    def umount_share_from_host(self, share):"}],"source_content_type":"text/x-python","patch_set":3,"id":"1a7b0d38_79c3d357","line":508,"range":{"start_line":508,"start_character":39,"end_line":508,"end_character":47},"in_reply_to":"1a7b0d38_a044a91a","updated":"2015-12-30 04:30:56.000000000","message":"Done","commit_id":"e33fdc8fa3e9ba8ff194098f25b48e7108eb1035"},{"author":{"_account_id":17717,"name":"liuke","email":"liuke2@huawei.com","username":"liuke"},"change_message_id":"cf1e7dc52615a0f78292111d82bbde36ca93d9f3","unresolved":false,"context_lines":[{"line_number":324,"context_line":"        if not self.check_fs_status(fs[\u0027HEALTHSTATUS\u0027],"},{"line_number":325,"context_line":"                                    fs[\u0027RUNNINGSTATUS\u0027]):"},{"line_number":326,"context_line":"            raise exception.InvalidShare("},{"line_number":327,"context_line":"                reason\u003d(_(\u0027Invalid status of filesystem: \u0027"},{"line_number":328,"context_line":"                          \u0027HEALTHSTATUS\u003d%(health)s \u0027"},{"line_number":329,"context_line":"                          \u0027RUNNINGSTATUS\u003d%(running)s.\u0027)"},{"line_number":330,"context_line":"                        % {\u0027health\u0027: fs[\u0027HEALTHSTATUS\u0027],"},{"line_number":331,"context_line":"                           \u0027running\u0027: fs[\u0027RUNNINGSTATUS\u0027]}))"},{"line_number":332,"context_line":""},{"line_number":333,"context_line":"        old_share_name \u003d self.helper._get_share_name_by_id("},{"line_number":334,"context_line":"            snapshot[\u0027share_id\u0027])"}],"source_content_type":"text/x-python","patch_set":5,"id":"fa69d971_cc33d160","line":331,"range":{"start_line":327,"start_character":24,"end_line":331,"end_character":59},"updated":"2016-01-07 01:56:39.000000000","message":"you cloud keep \"err_msg\u003d....\"","commit_id":"51d0388611fc932aaa9ae24ba30a94510e8bd100"},{"author":{"_account_id":17717,"name":"liuke","email":"liuke2@huawei.com","username":"liuke"},"change_message_id":"cf1e7dc52615a0f78292111d82bbde36ca93d9f3","unresolved":false,"context_lines":[{"line_number":511,"context_line":"            utils.execute(\u0027umount\u0027, share[\u0027mount_path\u0027],"},{"line_number":512,"context_line":"                          run_as_root\u003dTrue)"},{"line_number":513,"context_line":"        except Exception as err:"},{"line_number":514,"context_line":"            message \u003d (_(\"Failed to unmount share %(share)s. \""},{"line_number":515,"context_line":"                         \"Reason: %(reason)s.\")"},{"line_number":516,"context_line":"                       % {\u0027share\u0027: share[\u0027name\u0027],"},{"line_number":517,"context_line":"                          \u0027reason\u0027: six.text_type(err)})"}],"source_content_type":"text/x-python","patch_set":5,"id":"fa69d971_0f855b58","line":514,"range":{"start_line":514,"start_character":12,"end_line":514,"end_character":19},"updated":"2016-01-07 01:56:39.000000000","message":"you cloud s/message/err_msg","commit_id":"51d0388611fc932aaa9ae24ba30a94510e8bd100"},{"author":{"_account_id":8851,"name":"Valeriy Ponomaryov","email":"kiparis.kh@gmail.com","username":"vponomaryov"},"change_message_id":"4dc55080804281efd08bd079f2d4acd11943bdc7","unresolved":false,"context_lines":[{"line_number":342,"context_line":"            raise exception.InvalidShare(reason\u003derr_msg)"},{"line_number":343,"context_line":""},{"line_number":344,"context_line":"        new_share_path \u003d self.create_share(share)"},{"line_number":345,"context_line":"        new_share \u003d dict("},{"line_number":346,"context_line":"            share_proto\u003dshare[\u0027share_proto\u0027],"},{"line_number":347,"context_line":"            size\u003dshare[\u0027size\u0027],"},{"line_number":348,"context_line":"            name\u003dshare[\u0027name\u0027],"}],"source_content_type":"text/x-python","patch_set":6,"id":"fa69d971_d65a13f2","line":345,"range":{"start_line":345,"start_character":20,"end_line":345,"end_character":25},"updated":"2016-01-08 12:37:29.000000000","message":"Please, use braces instead of class for init of dict. The latter is slower than the former. Same in other places.\n\nsee: http://legacy.python.org/dev/peps/pep-0274/","commit_id":"3150b03c7124855a17783ec7a31d22930e14e10d"},{"author":{"_account_id":17742,"name":"liucheng","email":"liucheng20@huawei.com","username":"liucheng"},"change_message_id":"94074ca32879719c727a3c8c838e92f118ca0fd1","unresolved":false,"context_lines":[{"line_number":342,"context_line":"            raise exception.InvalidShare(reason\u003derr_msg)"},{"line_number":343,"context_line":""},{"line_number":344,"context_line":"        new_share_path \u003d self.create_share(share)"},{"line_number":345,"context_line":"        new_share \u003d dict("},{"line_number":346,"context_line":"            share_proto\u003dshare[\u0027share_proto\u0027],"},{"line_number":347,"context_line":"            size\u003dshare[\u0027size\u0027],"},{"line_number":348,"context_line":"            name\u003dshare[\u0027name\u0027],"}],"source_content_type":"text/x-python","patch_set":6,"id":"fa69d971_a3eff8af","line":345,"range":{"start_line":345,"start_character":20,"end_line":345,"end_character":25},"in_reply_to":"fa69d971_d65a13f2","updated":"2016-01-09 07:10:20.000000000","message":"Done","commit_id":"3150b03c7124855a17783ec7a31d22930e14e10d"},{"author":{"_account_id":8851,"name":"Valeriy Ponomaryov","email":"kiparis.kh@gmail.com","username":"vponomaryov"},"change_message_id":"4dc55080804281efd08bd079f2d4acd11943bdc7","unresolved":false,"context_lines":[{"line_number":375,"context_line":""},{"line_number":376,"context_line":"        return new_share_path"},{"line_number":377,"context_line":""},{"line_number":378,"context_line":"    def copy_data_from_old_share(self, old_share, new_share):"},{"line_number":379,"context_line":"        old_access \u003d self.get_access(old_share)"},{"line_number":380,"context_line":"        old_access_id \u003d self._get_access_id(old_share, old_access)"},{"line_number":381,"context_line":"        if not old_access_id:"}],"source_content_type":"text/x-python","patch_set":6,"id":"fa69d971_3634cfdc","line":378,"range":{"start_line":378,"start_character":23,"end_line":378,"end_character":26},"updated":"2016-01-08 12:37:29.000000000","message":"Better to use word \"parent\".","commit_id":"3150b03c7124855a17783ec7a31d22930e14e10d"},{"author":{"_account_id":17742,"name":"liucheng","email":"liucheng20@huawei.com","username":"liucheng"},"change_message_id":"94074ca32879719c727a3c8c838e92f118ca0fd1","unresolved":false,"context_lines":[{"line_number":375,"context_line":""},{"line_number":376,"context_line":"        return new_share_path"},{"line_number":377,"context_line":""},{"line_number":378,"context_line":"    def copy_data_from_old_share(self, old_share, new_share):"},{"line_number":379,"context_line":"        old_access \u003d self.get_access(old_share)"},{"line_number":380,"context_line":"        old_access_id \u003d self._get_access_id(old_share, old_access)"},{"line_number":381,"context_line":"        if not old_access_id:"}],"source_content_type":"text/x-python","patch_set":6,"id":"fa69d971_c3ec6cbd","line":378,"range":{"start_line":378,"start_character":23,"end_line":378,"end_character":26},"in_reply_to":"fa69d971_3634cfdc","updated":"2016-01-09 07:10:20.000000000","message":"Done","commit_id":"3150b03c7124855a17783ec7a31d22930e14e10d"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"04b955f5a33a7c6146b6a12ca8af505f84ed4ae3","unresolved":false,"context_lines":[{"line_number":307,"context_line":"                         \"does not exist.\")"},{"line_number":308,"context_line":"                       % snapshot[\u0027snapshot_id\u0027])"},{"line_number":309,"context_line":"            LOG.error(err_msg)"},{"line_number":310,"context_line":"            raise exception.InvalidShare(reason\u003derr_msg)"},{"line_number":311,"context_line":""},{"line_number":312,"context_line":"        snapshot_id \u003d self.helper._get_snapshot_id(share_fs_id, snapshot[\u0027id\u0027])"},{"line_number":313,"context_line":"        snapshot_flag \u003d self.helper._check_snapshot_id_exist(snapshot_id)"}],"source_content_type":"text/x-python","patch_set":14,"id":"da6ed579_17feb605","line":310,"range":{"start_line":310,"start_character":28,"end_line":310,"end_character":40},"updated":"2016-01-16 17:45:03.000000000","message":"StorageResourceNotFound?","commit_id":"15e817126c3a9dca35126131fe1691fe218b41c3"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"04b955f5a33a7c6146b6a12ca8af505f84ed4ae3","unresolved":false,"context_lines":[{"line_number":319,"context_line":"                snapshot_id\u003dsnapshot[\u0027snapshot_id\u0027])"},{"line_number":320,"context_line":""},{"line_number":321,"context_line":"        fs \u003d self.helper._get_fs_info_by_id(share_fs_id)"},{"line_number":322,"context_line":"        if not self.check_fs_status(fs[\u0027HEALTHSTATUS\u0027],"},{"line_number":323,"context_line":"                                    fs[\u0027RUNNINGSTATUS\u0027]):"},{"line_number":324,"context_line":"            err_msg \u003d (_(\u0027Invalid status of filesystem: \u0027"},{"line_number":325,"context_line":"                         \u0027HEALTHSTATUS\u003d%(health)s \u0027"},{"line_number":326,"context_line":"                         \u0027RUNNINGSTATUS\u003d%(running)s.\u0027)"},{"line_number":327,"context_line":"                       % {\u0027health\u0027: fs[\u0027HEALTHSTATUS\u0027],"},{"line_number":328,"context_line":"                          \u0027running\u0027: fs[\u0027RUNNINGSTATUS\u0027]})"},{"line_number":329,"context_line":"            raise exception.InvalidShare(reason\u003derr_msg)"},{"line_number":330,"context_line":""},{"line_number":331,"context_line":"        old_share_name \u003d self.helper.get_share_name_by_id("},{"line_number":332,"context_line":"            snapshot[\u0027share_id\u0027])"}],"source_content_type":"text/x-python","patch_set":14,"id":"da6ed579_769e0b65","line":329,"range":{"start_line":322,"start_character":0,"end_line":329,"end_character":56},"updated":"2016-01-16 17:45:03.000000000","message":"Please see my comment on Line 1239 here:\n\nhttps://review.openstack.org/#/c/263629/13/manila/share/drivers/huawei/v3/connection.py","commit_id":"15e817126c3a9dca35126131fe1691fe218b41c3"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"04b955f5a33a7c6146b6a12ca8af505f84ed4ae3","unresolved":false,"context_lines":[{"line_number":337,"context_line":"                       % {\u0027share\u0027: snapshot[\u0027share_id\u0027],"},{"line_number":338,"context_line":"                          \u0027snapshot\u0027: snapshot[\u0027snapshot_id\u0027]})"},{"line_number":339,"context_line":"            LOG.error(err_msg)"},{"line_number":340,"context_line":"            raise exception.InvalidShare(reason\u003derr_msg)"},{"line_number":341,"context_line":""},{"line_number":342,"context_line":"        new_share_path \u003d self.create_share(share)"},{"line_number":343,"context_line":"        new_share \u003d {"}],"source_content_type":"text/x-python","patch_set":14,"id":"da6ed579_5733cef6","line":340,"range":{"start_line":340,"start_character":28,"end_line":340,"end_character":40},"updated":"2016-01-16 17:45:03.000000000","message":"same here","commit_id":"15e817126c3a9dca35126131fe1691fe218b41c3"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"04b955f5a33a7c6146b6a12ca8af505f84ed4ae3","unresolved":false,"context_lines":[{"line_number":365,"context_line":"            self.copy_data_from_parent_share(old_share, new_share)"},{"line_number":366,"context_line":"        except Exception as err:"},{"line_number":367,"context_line":"            self.delete_share(new_share)"},{"line_number":368,"context_line":"            raise exception.InvalidShare(reason\u003dsix.text_type(err))"},{"line_number":369,"context_line":"        finally:"},{"line_number":370,"context_line":"            try:"},{"line_number":371,"context_line":"                shutil.rmtree(old_share[\u0027mount_src\u0027])"}],"source_content_type":"text/x-python","patch_set":14,"id":"da6ed579_f771a2a9","line":368,"range":{"start_line":368,"start_character":28,"end_line":368,"end_character":40},"updated":"2016-01-16 17:45:03.000000000","message":"This should be a new kind of exception, since you know that this occurred during copying.. Please create a new exception in manila/exception.py","commit_id":"15e817126c3a9dca35126131fe1691fe218b41c3"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"04b955f5a33a7c6146b6a12ca8af505f84ed4ae3","unresolved":false,"context_lines":[{"line_number":382,"context_line":"        if not old_access_id:"},{"line_number":383,"context_line":"            try:"},{"line_number":384,"context_line":"                self.allow_access(old_share, old_access)"},{"line_number":385,"context_line":"            except Exception as err:"},{"line_number":386,"context_line":"                message \u003d (_(\u0027Failed to add access to share %(name)s. \u0027"},{"line_number":387,"context_line":"                             \u0027Reason: %(err)s.\u0027)"},{"line_number":388,"context_line":"                           % {\u0027name\u0027: old_share[\u0027name\u0027],"}],"source_content_type":"text/x-python","patch_set":14,"id":"da6ed579_d90fe82c","line":385,"range":{"start_line":385,"start_character":19,"end_line":385,"end_character":28},"updated":"2016-01-16 17:45:03.000000000","message":"allow_access method in this file always seems to be throwing InvalidShareAccess, why not catch that?","commit_id":"15e817126c3a9dca35126131fe1691fe218b41c3"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"04b955f5a33a7c6146b6a12ca8af505f84ed4ae3","unresolved":false,"context_lines":[{"line_number":393,"context_line":"        try:"},{"line_number":394,"context_line":"            try:"},{"line_number":395,"context_line":"                self.mount_share_to_host(old_share, old_access)"},{"line_number":396,"context_line":"            except Exception as err:"},{"line_number":397,"context_line":"                message \u003d (_(\u0027Failed to mount old share %(name)s. \u0027"},{"line_number":398,"context_line":"                             \u0027Reason: %(err)s.\u0027)"},{"line_number":399,"context_line":"                           % {\u0027name\u0027: old_share[\u0027name\u0027],"}],"source_content_type":"text/x-python","patch_set":14,"id":"da6ed579_79335cf7","line":396,"range":{"start_line":396,"start_character":19,"end_line":396,"end_character":28},"updated":"2016-01-16 17:45:03.000000000","message":"This should be a specific exception passed from mount_share_to_host..","commit_id":"15e817126c3a9dca35126131fe1691fe218b41c3"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"04b955f5a33a7c6146b6a12ca8af505f84ed4ae3","unresolved":false,"context_lines":[{"line_number":398,"context_line":"                             \u0027Reason: %(err)s.\u0027)"},{"line_number":399,"context_line":"                           % {\u0027name\u0027: old_share[\u0027name\u0027],"},{"line_number":400,"context_line":"                              \u0027err\u0027: six.text_type(err)})"},{"line_number":401,"context_line":"                raise exception.InvalidShare(reason\u003dmessage)"},{"line_number":402,"context_line":""},{"line_number":403,"context_line":"            try:"},{"line_number":404,"context_line":"                self.allow_access(new_share, new_access)"}],"source_content_type":"text/x-python","patch_set":14,"id":"da6ed579_993090ea","line":401,"range":{"start_line":401,"start_character":32,"end_line":401,"end_character":44},"updated":"2016-01-16 17:45:03.000000000","message":"Please use a new exception type here..","commit_id":"15e817126c3a9dca35126131fe1691fe218b41c3"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"04b955f5a33a7c6146b6a12ca8af505f84ed4ae3","unresolved":false,"context_lines":[{"line_number":403,"context_line":"            try:"},{"line_number":404,"context_line":"                self.allow_access(new_share, new_access)"},{"line_number":405,"context_line":"                self.mount_share_to_host(new_share, new_access)"},{"line_number":406,"context_line":"            except Exception as err:"},{"line_number":407,"context_line":"                self.umount_share_from_host(old_share)"},{"line_number":408,"context_line":"                message \u003d (_(\u0027Failed to mount new share %(name)s. \u0027"},{"line_number":409,"context_line":"                             \u0027Reason: %(err)s.\u0027)"}],"source_content_type":"text/x-python","patch_set":14,"id":"da6ed579_1924a0ad","line":406,"range":{"start_line":406,"start_character":19,"end_line":406,"end_character":28},"updated":"2016-01-16 17:45:03.000000000","message":"allow_access method in this file always seems to be throwing InvalidShareAccess, why not catch that?","commit_id":"15e817126c3a9dca35126131fe1691fe218b41c3"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"04b955f5a33a7c6146b6a12ca8af505f84ed4ae3","unresolved":false,"context_lines":[{"line_number":409,"context_line":"                             \u0027Reason: %(err)s.\u0027)"},{"line_number":410,"context_line":"                           % {\u0027name\u0027: new_share[\u0027name\u0027],"},{"line_number":411,"context_line":"                              \u0027err\u0027: six.text_type(err)})"},{"line_number":412,"context_line":"                raise exception.InvalidShare(reason\u003dmessage)"},{"line_number":413,"context_line":""},{"line_number":414,"context_line":"            copied \u003d self.copy_data(old_share, new_share)"},{"line_number":415,"context_line":""}],"source_content_type":"text/x-python","patch_set":14,"id":"da6ed579_f9550cfa","line":412,"range":{"start_line":412,"start_character":32,"end_line":412,"end_character":44},"updated":"2016-01-16 17:45:03.000000000","message":"Please use a new exception type here","commit_id":"15e817126c3a9dca35126131fe1691fe218b41c3"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"04b955f5a33a7c6146b6a12ca8af505f84ed4ae3","unresolved":false,"context_lines":[{"line_number":415,"context_line":""},{"line_number":416,"context_line":"            try:"},{"line_number":417,"context_line":"                self.umount_share_from_host(new_share)"},{"line_number":418,"context_line":"            except Exception as err:"},{"line_number":419,"context_line":"                err_msg \u003d (_(\u0027Failed to umount new share %(name)s. \u0027"},{"line_number":420,"context_line":"                             \u0027Reason: %(err)s.\u0027)"},{"line_number":421,"context_line":"                           % {\u0027name\u0027: new_share[\u0027name\u0027],"}],"source_content_type":"text/x-python","patch_set":14,"id":"da6ed579_b940f436","line":418,"range":{"start_line":418,"start_character":19,"end_line":418,"end_character":28},"updated":"2016-01-16 17:45:03.000000000","message":"This should be a specific exception passed from umount_share_from_host..","commit_id":"15e817126c3a9dca35126131fe1691fe218b41c3"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"04b955f5a33a7c6146b6a12ca8af505f84ed4ae3","unresolved":false,"context_lines":[{"line_number":424,"context_line":""},{"line_number":425,"context_line":"            try:"},{"line_number":426,"context_line":"                self.umount_share_from_host(old_share)"},{"line_number":427,"context_line":"            except Exception as err:"},{"line_number":428,"context_line":"                err_msg \u003d (_(\u0027Failed to umount old share %(name)s. \u0027"},{"line_number":429,"context_line":"                             \u0027Reason: %(err)s.\u0027)"},{"line_number":430,"context_line":"                           % {\u0027name\u0027: old_share[\u0027name\u0027],"}],"source_content_type":"text/x-python","patch_set":14,"id":"da6ed579_794a7c57","line":427,"range":{"start_line":427,"start_character":19,"end_line":427,"end_character":28},"updated":"2016-01-16 17:45:03.000000000","message":"same here","commit_id":"15e817126c3a9dca35126131fe1691fe218b41c3"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"04b955f5a33a7c6146b6a12ca8af505f84ed4ae3","unresolved":false,"context_lines":[{"line_number":443,"context_line":"                           % {\u0027old_share\u0027: old_share[\u0027name\u0027],"},{"line_number":444,"context_line":"                              \u0027new_share\u0027: new_share[\u0027name\u0027],"},{"line_number":445,"context_line":"                              \u0027err\u0027: six.text_type(err)})"},{"line_number":446,"context_line":"                raise exception.InvalidShare(reason\u003dmessage)"},{"line_number":447,"context_line":"        finally:"},{"line_number":448,"context_line":"            if not old_access_id:"},{"line_number":449,"context_line":"                self.deny_access(old_share, old_access)"}],"source_content_type":"text/x-python","patch_set":14,"id":"da6ed579_f6dbdb4d","line":446,"range":{"start_line":446,"start_character":33,"end_line":446,"end_character":44},"updated":"2016-01-16 17:45:03.000000000","message":"Please use a different exception.. InvalidShare derives from Invalid for unacceptable parameters.. its used for InvalidInput, some inconsistent share data etc. This doesn\u0027t seem to be one of those.","commit_id":"15e817126c3a9dca35126131fe1691fe218b41c3"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"04b955f5a33a7c6146b6a12ca8af505f84ed4ae3","unresolved":false,"context_lines":[{"line_number":483,"context_line":"        if not access_id:"},{"line_number":484,"context_line":"            LOG.debug(\u0027Cannot get access ID from share. \u0027"},{"line_number":485,"context_line":"                      \u0027share_name: %s\u0027, share_name)"},{"line_number":486,"context_line":"            return"},{"line_number":487,"context_line":"        return access_id"},{"line_number":488,"context_line":""},{"line_number":489,"context_line":"    def copy_data(self, old_share, new_share):"}],"source_content_type":"text/x-python","patch_set":14,"id":"da6ed579_83a9ff26","line":486,"range":{"start_line":486,"start_character":12,"end_line":486,"end_character":18},"updated":"2016-01-16 17:45:03.000000000","message":"you can remove this return statement.. \n\nto be sure that you will always return on none, change line 483 to:\n    \n    if access_id is None:\n         LOG.debug(\u0027Cannot get access ID from share. \u0027\n                      \u0027share_name: %s\u0027, share_name)\n\n    return access_id","commit_id":"15e817126c3a9dca35126131fe1691fe218b41c3"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"04b955f5a33a7c6146b6a12ca8af505f84ed4ae3","unresolved":false,"context_lines":[{"line_number":512,"context_line":"            utils.execute(\u0027umount\u0027, share[\u0027mount_path\u0027],"},{"line_number":513,"context_line":"                          run_as_root\u003dTrue)"},{"line_number":514,"context_line":"        except Exception as err:"},{"line_number":515,"context_line":"            message \u003d (_(\"Failed to unmount share %(share)s. \""},{"line_number":516,"context_line":"                         \"Reason: %(reason)s.\")"},{"line_number":517,"context_line":"                       % {\u0027share\u0027: share[\u0027name\u0027],"},{"line_number":518,"context_line":"                          \u0027reason\u0027: six.text_type(err)})"},{"line_number":519,"context_line":"            raise exception.InvalidShare(reason\u003dmessage)"},{"line_number":520,"context_line":""},{"line_number":521,"context_line":"    def mount_share_to_host(self, share, access):"},{"line_number":522,"context_line":"        LOG.debug(\"Mount share: %s to host, mount_src: %s\","}],"source_content_type":"text/x-python","patch_set":14,"id":"da6ed579_63996b1f","line":519,"range":{"start_line":515,"start_character":11,"end_line":519,"end_character":56},"updated":"2016-01-16 17:45:03.000000000","message":"This should be a new exception \n\nShareMountException -\u003e Please create it and add it in:\n\n    manila/exception.py","commit_id":"15e817126c3a9dca35126131fe1691fe218b41c3"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"04b955f5a33a7c6146b6a12ca8af505f84ed4ae3","unresolved":false,"context_lines":[{"line_number":519,"context_line":"            raise exception.InvalidShare(reason\u003dmessage)"},{"line_number":520,"context_line":""},{"line_number":521,"context_line":"    def mount_share_to_host(self, share, access):"},{"line_number":522,"context_line":"        LOG.debug(\"Mount share: %s to host, mount_src: %s\","},{"line_number":523,"context_line":"                  share[\u0027name\u0027], share[\u0027mount_src\u0027])"},{"line_number":524,"context_line":"        try:"},{"line_number":525,"context_line":"            if share[\u0027share_proto\u0027] \u003d\u003d \u0027NFS\u0027:"}],"source_content_type":"text/x-python","patch_set":14,"id":"da6ed579_a3e1a39c","line":522,"range":{"start_line":522,"start_character":19,"end_line":522,"end_character":24},"updated":"2016-01-16 17:45:03.000000000","message":"s/Mount/Mounting","commit_id":"15e817126c3a9dca35126131fe1691fe218b41c3"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"04b955f5a33a7c6146b6a12ca8af505f84ed4ae3","unresolved":false,"context_lines":[{"line_number":527,"context_line":"                              share[\u0027mount_path\u0027], share[\u0027mount_src\u0027],"},{"line_number":528,"context_line":"                              run_as_root\u003dTrue)"},{"line_number":529,"context_line":""},{"line_number":530,"context_line":"                LOG.debug(\"Execute mount. mount_src:%s\","},{"line_number":531,"context_line":"                          share[\u0027mount_src\u0027])"},{"line_number":532,"context_line":""},{"line_number":533,"context_line":"            elif share[\u0027share_proto\u0027] \u003d\u003d \u0027CIFS\u0027:"}],"source_content_type":"text/x-python","patch_set":14,"id":"da6ed579_63f2cb71","line":530,"range":{"start_line":530,"start_character":42,"end_line":530,"end_character":54},"updated":"2016-01-16 17:45:03.000000000","message":"mount_src: %s\n \nadd space","commit_id":"15e817126c3a9dca35126131fe1691fe218b41c3"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"04b955f5a33a7c6146b6a12ca8af505f84ed4ae3","unresolved":false,"context_lines":[{"line_number":541,"context_line":"                         \u0027Reason: %(reason)s.\u0027)"},{"line_number":542,"context_line":"                       % {\u0027share\u0027: share[\u0027name\u0027],"},{"line_number":543,"context_line":"                          \u0027reason\u0027: six.text_type(err)})"},{"line_number":544,"context_line":"            raise exception.InvalidShare(reason\u003dmessage)"},{"line_number":545,"context_line":""},{"line_number":546,"context_line":"    def get_network_allocations_number(self):"},{"line_number":547,"context_line":"        \"\"\"Get number of network interfaces to be created.\"\"\""}],"source_content_type":"text/x-python","patch_set":14,"id":"da6ed579_439467e7","line":544,"range":{"start_line":544,"start_character":28,"end_line":544,"end_character":40},"updated":"2016-01-16 17:45:03.000000000","message":"This should be a new exception \n\nShareMountException -\u003e Please create it and add it in:\n\n    manila/exception.py","commit_id":"15e817126c3a9dca35126131fe1691fe218b41c3"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"04b955f5a33a7c6146b6a12ca8af505f84ed4ae3","unresolved":false,"context_lines":[{"line_number":992,"context_line":""},{"line_number":993,"context_line":"    def _get_share_proto(self, share_name):"},{"line_number":994,"context_line":"        share_proto \u003d None"},{"line_number":995,"context_line":"        for item in [\u0027NFS\u0027, \u0027CIFS\u0027]:"},{"line_number":996,"context_line":"            share_url_type \u003d self.helper._get_share_url_type(item)"},{"line_number":997,"context_line":"            share \u003d self.helper._get_share_by_name(share_name, share_url_type)"},{"line_number":998,"context_line":"            if share:"}],"source_content_type":"text/x-python","patch_set":14,"id":"da6ed579_c3da97e9","line":995,"range":{"start_line":995,"start_character":20,"end_line":995,"end_character":35},"updated":"2016-01-16 17:45:03.000000000","message":"please use a tuple:\n\n    for proto in (\u0027NFS\u0027, \u0027CIFS\u0027):\n       ...","commit_id":"15e817126c3a9dca35126131fe1691fe218b41c3"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"04b955f5a33a7c6146b6a12ca8af505f84ed4ae3","unresolved":false,"context_lines":[{"line_number":992,"context_line":""},{"line_number":993,"context_line":"    def _get_share_proto(self, share_name):"},{"line_number":994,"context_line":"        share_proto \u003d None"},{"line_number":995,"context_line":"        for item in [\u0027NFS\u0027, \u0027CIFS\u0027]:"},{"line_number":996,"context_line":"            share_url_type \u003d self.helper._get_share_url_type(item)"},{"line_number":997,"context_line":"            share \u003d self.helper._get_share_by_name(share_name, share_url_type)"},{"line_number":998,"context_line":"            if share:"}],"source_content_type":"text/x-python","patch_set":14,"id":"da6ed579_e3d79bbd","line":995,"range":{"start_line":995,"start_character":12,"end_line":995,"end_character":16},"updated":"2016-01-16 17:45:03.000000000","message":"s/item/proto or protocol","commit_id":"15e817126c3a9dca35126131fe1691fe218b41c3"},{"author":{"_account_id":14567,"name":"Rodrigo Barbieri","email":"rodrigo.barbieri2010@gmail.com","username":"ganso"},"change_message_id":"418f142a8427792ed42dbdac19618d8dcaa78321","unresolved":false,"context_lines":[{"line_number":382,"context_line":"        }"},{"line_number":383,"context_line":""},{"line_number":384,"context_line":"        try:"},{"line_number":385,"context_line":"            self.copy_data_from_parent_share(old_share, new_share)"},{"line_number":386,"context_line":"        except Exception:"},{"line_number":387,"context_line":"            self.delete_share(new_share)"},{"line_number":388,"context_line":"            raise"}],"source_content_type":"text/x-python","patch_set":18,"id":"ba63e191_9caaa7d3","line":385,"range":{"start_line":385,"start_character":12,"end_line":385,"end_character":66},"updated":"2016-01-19 12:50:58.000000000","message":"Although I am aware that Huawei driver needs this approach in order to be able to create shares from snapshots, this approach has a negative experience for the users, it will use manila-share resources and block the service while copying files. The manila-share node may be used for several tenants, and I believe the current code for copying does not sleep, so concurrent requests will not be processed, manila-share service will be completely unresponsive. \n\nMy Data Service + Migration patches (https://review.openstack.org/#/c/244286/ and https://review.openstack.org/#/c/250515) add possibility of offloading data copying (although no to drivers yet), and also add a sleep to Copy function to prevent service blocking.","commit_id":"26baf1ae0e2440bf9e954cd19ad3682150cb695d"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"1aa4a7e6050f0d4f48045ce134ee5431570d1016","unresolved":false,"context_lines":[{"line_number":382,"context_line":"        }"},{"line_number":383,"context_line":""},{"line_number":384,"context_line":"        try:"},{"line_number":385,"context_line":"            self.copy_data_from_parent_share(old_share, new_share)"},{"line_number":386,"context_line":"        except Exception:"},{"line_number":387,"context_line":"            self.delete_share(new_share)"},{"line_number":388,"context_line":"            raise"}],"source_content_type":"text/x-python","patch_set":18,"id":"ba63e191_971cabc2","line":385,"range":{"start_line":385,"start_character":12,"end_line":385,"end_character":66},"in_reply_to":"ba63e191_9caaa7d3","updated":"2016-01-19 18:22:21.000000000","message":"+1.. I think this is a great concern..","commit_id":"26baf1ae0e2440bf9e954cd19ad3682150cb695d"},{"author":{"_account_id":17742,"name":"liucheng","email":"liucheng20@huawei.com","username":"liucheng"},"change_message_id":"04e8c8f7e5d29f2a3185fb5b29d83985a272984f","unresolved":false,"context_lines":[{"line_number":382,"context_line":"        }"},{"line_number":383,"context_line":""},{"line_number":384,"context_line":"        try:"},{"line_number":385,"context_line":"            self.copy_data_from_parent_share(old_share, new_share)"},{"line_number":386,"context_line":"        except Exception:"},{"line_number":387,"context_line":"            self.delete_share(new_share)"},{"line_number":388,"context_line":"            raise"}],"source_content_type":"text/x-python","patch_set":18,"id":"ba63e191_ddb9d27a","line":385,"range":{"start_line":385,"start_character":12,"end_line":385,"end_character":66},"in_reply_to":"ba63e191_9caaa7d3","updated":"2016-01-20 02:21:13.000000000","message":"Thank you for your advice, I will focus on it. This is only a temporary  solution, though. When Huawei array supports data copy for filesystem,we will copy data on array.","commit_id":"26baf1ae0e2440bf9e954cd19ad3682150cb695d"},{"author":{"_account_id":8851,"name":"Valeriy Ponomaryov","email":"kiparis.kh@gmail.com","username":"vponomaryov"},"change_message_id":"a94c8e288500349872a98b71ca515121c5828a78","unresolved":false,"context_lines":[{"line_number":391,"context_line":"                shutil.rmtree(old_share[\u0027mount_src\u0027])"},{"line_number":392,"context_line":"                shutil.rmtree(new_share[\u0027mount_src\u0027])"},{"line_number":393,"context_line":"            except Exception:"},{"line_number":394,"context_line":"                err_msg \u003d _(\u0027Failed to remove temp file.\u0027)"},{"line_number":395,"context_line":"                LOG.warning(err_msg)"},{"line_number":396,"context_line":""},{"line_number":397,"context_line":"        return new_share_path"}],"source_content_type":"text/x-python","patch_set":19,"id":"9a68dd71_b2630bb1","line":394,"updated":"2016-01-21 10:13:58.000000000","message":"Which file? Why it is expected? Also, you catch all exceptions here and mock them. So, need to provide more informative message and log exception.","commit_id":"15c82e66d9c1839f4969c2291c34a4133c82d8d7"},{"author":{"_account_id":8851,"name":"Valeriy Ponomaryov","email":"kiparis.kh@gmail.com","username":"vponomaryov"},"change_message_id":"a94c8e288500349872a98b71ca515121c5828a78","unresolved":false,"context_lines":[{"line_number":433,"context_line":""},{"line_number":434,"context_line":"            copied \u003d self.copy_data(old_share, new_share)"},{"line_number":435,"context_line":""},{"line_number":436,"context_line":"            try:"},{"line_number":437,"context_line":"                self.umount_share_from_host(new_share)"},{"line_number":438,"context_line":"            except exception.ShareUmountException as err:"},{"line_number":439,"context_line":"                err_msg \u003d (_(\u0027Failed to umount new share %(name)s. \u0027"},{"line_number":440,"context_line":"                             \u0027Reason: %(err)s.\u0027)"},{"line_number":441,"context_line":"                           % {\u0027name\u0027: new_share[\u0027name\u0027],"},{"line_number":442,"context_line":"                              \u0027err\u0027: six.text_type(err)})"},{"line_number":443,"context_line":"                LOG.warning(err_msg)"},{"line_number":444,"context_line":""},{"line_number":445,"context_line":"            try:"},{"line_number":446,"context_line":"                self.umount_share_from_host(old_share)"},{"line_number":447,"context_line":"            except exception.ShareUmountException as err:"},{"line_number":448,"context_line":"                err_msg \u003d (_(\u0027Failed to umount old share %(name)s. \u0027"},{"line_number":449,"context_line":"                             \u0027Reason: %(err)s.\u0027)"},{"line_number":450,"context_line":"                           % {\u0027name\u0027: old_share[\u0027name\u0027],"},{"line_number":451,"context_line":"                              \u0027err\u0027: six.text_type(err)})"},{"line_number":452,"context_line":"                LOG.warning(err_msg)"},{"line_number":453,"context_line":""},{"line_number":454,"context_line":"            self.deny_access(new_share, new_access)"},{"line_number":455,"context_line":""}],"source_content_type":"text/x-python","patch_set":19,"id":"9a68dd71_b2bf8bcf","line":452,"range":{"start_line":436,"start_character":12,"end_line":452,"end_character":36},"updated":"2016-01-21 10:13:58.000000000","message":"Here can be used loop. No need to duplicate code in that way. Same above.","commit_id":"15c82e66d9c1839f4969c2291c34a4133c82d8d7"},{"author":{"_account_id":11047,"name":"Mark Sturdevant","email":"mark.sturdevant@ibm.com","username":"markstur"},"change_message_id":"a69229d65bc70bca467e3937c031d534cf53d48a","unresolved":false,"context_lines":[{"line_number":395,"context_line":"            self.delete_share(new_share)"},{"line_number":396,"context_line":"            raise"},{"line_number":397,"context_line":"        finally:"},{"line_number":398,"context_line":"            for item in [new_share, old_share]:"},{"line_number":399,"context_line":"                try:"},{"line_number":400,"context_line":"                    shutil.rmtree(item[\u0027mount_src\u0027])"},{"line_number":401,"context_line":"                except Exception as err:"}],"source_content_type":"text/x-python","patch_set":23,"id":"9a68dd71_0e0cb839","line":398,"range":{"start_line":398,"start_character":45,"end_line":398,"end_character":47},"updated":"2016-01-24 06:24:56.000000000","message":"can use a tuple instead of list here","commit_id":"aa400dcd060714ae1ba15b419c52e26600d5c59e"},{"author":{"_account_id":17742,"name":"liucheng","email":"liucheng20@huawei.com","username":"liucheng"},"change_message_id":"c43250fa9addc903522089d6e93146d0aa9f55cb","unresolved":false,"context_lines":[{"line_number":395,"context_line":"            self.delete_share(new_share)"},{"line_number":396,"context_line":"            raise"},{"line_number":397,"context_line":"        finally:"},{"line_number":398,"context_line":"            for item in [new_share, old_share]:"},{"line_number":399,"context_line":"                try:"},{"line_number":400,"context_line":"                    shutil.rmtree(item[\u0027mount_src\u0027])"},{"line_number":401,"context_line":"                except Exception as err:"}],"source_content_type":"text/x-python","patch_set":23,"id":"9a68dd71_68aaff86","line":398,"range":{"start_line":398,"start_character":45,"end_line":398,"end_character":47},"in_reply_to":"9a68dd71_0e0cb839","updated":"2016-01-25 13:36:23.000000000","message":"Done","commit_id":"aa400dcd060714ae1ba15b419c52e26600d5c59e"},{"author":{"_account_id":17742,"name":"liucheng","email":"liucheng20@huawei.com","username":"liucheng"},"change_message_id":"c43250fa9addc903522089d6e93146d0aa9f55cb","unresolved":false,"context_lines":[{"line_number":395,"context_line":"            self.delete_share(new_share)"},{"line_number":396,"context_line":"            raise"},{"line_number":397,"context_line":"        finally:"},{"line_number":398,"context_line":"            for item in [new_share, old_share]:"},{"line_number":399,"context_line":"                try:"},{"line_number":400,"context_line":"                    shutil.rmtree(item[\u0027mount_src\u0027])"},{"line_number":401,"context_line":"                except Exception as err:"}],"source_content_type":"text/x-python","patch_set":23,"id":"9a68dd71_d33385f4","line":398,"range":{"start_line":398,"start_character":45,"end_line":398,"end_character":47},"in_reply_to":"9a68dd71_0e0cb839","updated":"2016-01-25 13:36:23.000000000","message":"Done","commit_id":"aa400dcd060714ae1ba15b419c52e26600d5c59e"},{"author":{"_account_id":11047,"name":"Mark Sturdevant","email":"mark.sturdevant@ibm.com","username":"markstur"},"change_message_id":"a69229d65bc70bca467e3937c031d534cf53d48a","unresolved":false,"context_lines":[{"line_number":397,"context_line":"        finally:"},{"line_number":398,"context_line":"            for item in [new_share, old_share]:"},{"line_number":399,"context_line":"                try:"},{"line_number":400,"context_line":"                    shutil.rmtree(item[\u0027mount_src\u0027])"},{"line_number":401,"context_line":"                except Exception as err:"},{"line_number":402,"context_line":"                    err_msg \u003d (_(\u0027Failed to remove temp file. \u0027"},{"line_number":403,"context_line":"                                 \u0027File path: %(file_path)s. Reason: %(err)s.\u0027)"}],"source_content_type":"text/x-python","patch_set":23,"id":"9a68dd71_cec30088","line":400,"updated":"2016-01-24 06:24:56.000000000","message":"If umount fails, this would try to remove all the files from both shares. I suppose it would probably also fail, but it would be safer if you only removed the dir which should be empty instead of potentially removing the files from the share.","commit_id":"aa400dcd060714ae1ba15b419c52e26600d5c59e"},{"author":{"_account_id":17742,"name":"liucheng","email":"liucheng20@huawei.com","username":"liucheng"},"change_message_id":"c43250fa9addc903522089d6e93146d0aa9f55cb","unresolved":false,"context_lines":[{"line_number":397,"context_line":"        finally:"},{"line_number":398,"context_line":"            for item in [new_share, old_share]:"},{"line_number":399,"context_line":"                try:"},{"line_number":400,"context_line":"                    shutil.rmtree(item[\u0027mount_src\u0027])"},{"line_number":401,"context_line":"                except Exception as err:"},{"line_number":402,"context_line":"                    err_msg \u003d (_(\u0027Failed to remove temp file. \u0027"},{"line_number":403,"context_line":"                                 \u0027File path: %(file_path)s. Reason: %(err)s.\u0027)"}],"source_content_type":"text/x-python","patch_set":23,"id":"9a68dd71_f32ec98a","line":400,"in_reply_to":"9a68dd71_cec30088","updated":"2016-01-25 13:36:23.000000000","message":"Done","commit_id":"aa400dcd060714ae1ba15b419c52e26600d5c59e"},{"author":{"_account_id":11047,"name":"Mark Sturdevant","email":"mark.sturdevant@ibm.com","username":"markstur"},"change_message_id":"a69229d65bc70bca467e3937c031d534cf53d48a","unresolved":false,"context_lines":[{"line_number":444,"context_line":""},{"line_number":445,"context_line":"            copied \u003d self.copy_data(old_share, new_share)"},{"line_number":446,"context_line":""},{"line_number":447,"context_line":"            for item in [new_share, old_share]:"},{"line_number":448,"context_line":"                try:"},{"line_number":449,"context_line":"                    self.umount_share_from_host(item)"},{"line_number":450,"context_line":"                except exception.ShareUmountException as err:"}],"source_content_type":"text/x-python","patch_set":23,"id":"9a68dd71_6e3214f4","line":447,"range":{"start_line":447,"start_character":45,"end_line":447,"end_character":47},"updated":"2016-01-24 06:24:56.000000000","message":"can be tuple instead of list","commit_id":"aa400dcd060714ae1ba15b419c52e26600d5c59e"},{"author":{"_account_id":17742,"name":"liucheng","email":"liucheng20@huawei.com","username":"liucheng"},"change_message_id":"c43250fa9addc903522089d6e93146d0aa9f55cb","unresolved":false,"context_lines":[{"line_number":444,"context_line":""},{"line_number":445,"context_line":"            copied \u003d self.copy_data(old_share, new_share)"},{"line_number":446,"context_line":""},{"line_number":447,"context_line":"            for item in [new_share, old_share]:"},{"line_number":448,"context_line":"                try:"},{"line_number":449,"context_line":"                    self.umount_share_from_host(item)"},{"line_number":450,"context_line":"                except exception.ShareUmountException as err:"}],"source_content_type":"text/x-python","patch_set":23,"id":"9a68dd71_089a636e","line":447,"range":{"start_line":447,"start_character":45,"end_line":447,"end_character":47},"in_reply_to":"9a68dd71_6e3214f4","updated":"2016-01-25 13:36:23.000000000","message":"Done","commit_id":"aa400dcd060714ae1ba15b419c52e26600d5c59e"},{"author":{"_account_id":17742,"name":"liucheng","email":"liucheng20@huawei.com","username":"liucheng"},"change_message_id":"c43250fa9addc903522089d6e93146d0aa9f55cb","unresolved":false,"context_lines":[{"line_number":444,"context_line":""},{"line_number":445,"context_line":"            copied \u003d self.copy_data(old_share, new_share)"},{"line_number":446,"context_line":""},{"line_number":447,"context_line":"            for item in [new_share, old_share]:"},{"line_number":448,"context_line":"                try:"},{"line_number":449,"context_line":"                    self.umount_share_from_host(item)"},{"line_number":450,"context_line":"                except exception.ShareUmountException as err:"}],"source_content_type":"text/x-python","patch_set":23,"id":"9a68dd71_b3537116","line":447,"range":{"start_line":447,"start_character":45,"end_line":447,"end_character":47},"in_reply_to":"9a68dd71_6e3214f4","updated":"2016-01-25 13:36:23.000000000","message":"Done","commit_id":"aa400dcd060714ae1ba15b419c52e26600d5c59e"},{"author":{"_account_id":11047,"name":"Mark Sturdevant","email":"mark.sturdevant@ibm.com","username":"markstur"},"change_message_id":"a69229d65bc70bca467e3937c031d534cf53d48a","unresolved":false,"context_lines":[{"line_number":452,"context_line":"                                 \u0027Reason: %(err)s.\u0027)"},{"line_number":453,"context_line":"                               % {\u0027name\u0027: item[\u0027name\u0027],"},{"line_number":454,"context_line":"                                  \u0027err\u0027: six.text_type(err)})"},{"line_number":455,"context_line":"                    LOG.warning(err_msg)"},{"line_number":456,"context_line":""},{"line_number":457,"context_line":"            self.deny_access(new_share, new_access)"},{"line_number":458,"context_line":""}],"source_content_type":"text/x-python","patch_set":23,"id":"9a68dd71_0e7118a8","line":455,"range":{"start_line":455,"start_character":23,"end_line":455,"end_character":24},"updated":"2016-01-24 06:24:56.000000000","message":"You only log if umount fails. That might be OK, but later you try rmtree.  So you\u0027ll _try_ to remove all the files from the shares.","commit_id":"aa400dcd060714ae1ba15b419c52e26600d5c59e"},{"author":{"_account_id":17742,"name":"liucheng","email":"liucheng20@huawei.com","username":"liucheng"},"change_message_id":"c43250fa9addc903522089d6e93146d0aa9f55cb","unresolved":false,"context_lines":[{"line_number":452,"context_line":"                                 \u0027Reason: %(err)s.\u0027)"},{"line_number":453,"context_line":"                               % {\u0027name\u0027: item[\u0027name\u0027],"},{"line_number":454,"context_line":"                                  \u0027err\u0027: six.text_type(err)})"},{"line_number":455,"context_line":"                    LOG.warning(err_msg)"},{"line_number":456,"context_line":""},{"line_number":457,"context_line":"            self.deny_access(new_share, new_access)"},{"line_number":458,"context_line":""}],"source_content_type":"text/x-python","patch_set":23,"id":"9a68dd71_5356b506","line":455,"range":{"start_line":455,"start_character":23,"end_line":455,"end_character":24},"in_reply_to":"9a68dd71_0e7118a8","updated":"2016-01-25 13:36:23.000000000","message":"Done","commit_id":"aa400dcd060714ae1ba15b419c52e26600d5c59e"},{"author":{"_account_id":11047,"name":"Mark Sturdevant","email":"mark.sturdevant@ibm.com","username":"markstur"},"change_message_id":"a69229d65bc70bca467e3937c031d534cf53d48a","unresolved":false,"context_lines":[{"line_number":511,"context_line":""},{"line_number":512,"context_line":"    def copy_data(self, old_share, new_share):"},{"line_number":513,"context_line":"        src_path \u003d (old_share[\u0027mount_src\u0027] + \u0027/.snapshot/\u0027 +"},{"line_number":514,"context_line":"                    old_share[\u0027snapshot_name\u0027])"},{"line_number":515,"context_line":"        dst_path \u003d new_share[\u0027mount_src\u0027]"},{"line_number":516,"context_line":"        copy_finish \u003d False"},{"line_number":517,"context_line":"        LOG.debug(\"src_path: %s, dst_path: %s.\", src_path, dst_path)"}],"source_content_type":"text/x-python","patch_set":23,"id":"9a68dd71_6e60d4cf","line":514,"range":{"start_line":514,"start_character":44,"end_line":514,"end_character":47},"updated":"2016-01-24 06:24:56.000000000","message":"\u0027/\u0027join((a,b,c)) should be more optimized than a+b+c","commit_id":"aa400dcd060714ae1ba15b419c52e26600d5c59e"},{"author":{"_account_id":17742,"name":"liucheng","email":"liucheng20@huawei.com","username":"liucheng"},"change_message_id":"c43250fa9addc903522089d6e93146d0aa9f55cb","unresolved":false,"context_lines":[{"line_number":511,"context_line":""},{"line_number":512,"context_line":"    def copy_data(self, old_share, new_share):"},{"line_number":513,"context_line":"        src_path \u003d (old_share[\u0027mount_src\u0027] + \u0027/.snapshot/\u0027 +"},{"line_number":514,"context_line":"                    old_share[\u0027snapshot_name\u0027])"},{"line_number":515,"context_line":"        dst_path \u003d new_share[\u0027mount_src\u0027]"},{"line_number":516,"context_line":"        copy_finish \u003d False"},{"line_number":517,"context_line":"        LOG.debug(\"src_path: %s, dst_path: %s.\", src_path, dst_path)"}],"source_content_type":"text/x-python","patch_set":23,"id":"9a68dd71_13459d44","line":514,"range":{"start_line":514,"start_character":44,"end_line":514,"end_character":47},"in_reply_to":"9a68dd71_6e60d4cf","updated":"2016-01-25 13:36:23.000000000","message":"Done","commit_id":"aa400dcd060714ae1ba15b419c52e26600d5c59e"},{"author":{"_account_id":11047,"name":"Mark Sturdevant","email":"mark.sturdevant@ibm.com","username":"markstur"},"change_message_id":"a69229d65bc70bca467e3937c031d534cf53d48a","unresolved":false,"context_lines":[{"line_number":514,"context_line":"                    old_share[\u0027snapshot_name\u0027])"},{"line_number":515,"context_line":"        dst_path \u003d new_share[\u0027mount_src\u0027]"},{"line_number":516,"context_line":"        copy_finish \u003d False"},{"line_number":517,"context_line":"        LOG.debug(\"src_path: %s, dst_path: %s.\", src_path, dst_path)"},{"line_number":518,"context_line":"        try:"},{"line_number":519,"context_line":"            ignore_list \u003d \u0027\u0027"},{"line_number":520,"context_line":"            copy \u003d share_utils.Copy(src_path,"}],"source_content_type":"text/x-python","patch_set":23,"id":"9a68dd71_2e9dfcbb","line":517,"range":{"start_line":517,"start_character":19,"end_line":517,"end_character":27},"updated":"2016-01-24 06:24:56.000000000","message":"Mention ~\"copy_data\" in log message.","commit_id":"aa400dcd060714ae1ba15b419c52e26600d5c59e"},{"author":{"_account_id":17742,"name":"liucheng","email":"liucheng20@huawei.com","username":"liucheng"},"change_message_id":"c43250fa9addc903522089d6e93146d0aa9f55cb","unresolved":false,"context_lines":[{"line_number":514,"context_line":"                    old_share[\u0027snapshot_name\u0027])"},{"line_number":515,"context_line":"        dst_path \u003d new_share[\u0027mount_src\u0027]"},{"line_number":516,"context_line":"        copy_finish \u003d False"},{"line_number":517,"context_line":"        LOG.debug(\"src_path: %s, dst_path: %s.\", src_path, dst_path)"},{"line_number":518,"context_line":"        try:"},{"line_number":519,"context_line":"            ignore_list \u003d \u0027\u0027"},{"line_number":520,"context_line":"            copy \u003d share_utils.Copy(src_path,"}],"source_content_type":"text/x-python","patch_set":23,"id":"9a68dd71_73f2f007","line":517,"range":{"start_line":517,"start_character":19,"end_line":517,"end_character":27},"in_reply_to":"9a68dd71_2e9dfcbb","updated":"2016-01-25 13:36:23.000000000","message":"Done","commit_id":"aa400dcd060714ae1ba15b419c52e26600d5c59e"},{"author":{"_account_id":17742,"name":"liucheng","email":"liucheng20@huawei.com","username":"liucheng"},"change_message_id":"c43250fa9addc903522089d6e93146d0aa9f55cb","unresolved":false,"context_lines":[{"line_number":514,"context_line":"                    old_share[\u0027snapshot_name\u0027])"},{"line_number":515,"context_line":"        dst_path \u003d new_share[\u0027mount_src\u0027]"},{"line_number":516,"context_line":"        copy_finish \u003d False"},{"line_number":517,"context_line":"        LOG.debug(\"src_path: %s, dst_path: %s.\", src_path, dst_path)"},{"line_number":518,"context_line":"        try:"},{"line_number":519,"context_line":"            ignore_list \u003d \u0027\u0027"},{"line_number":520,"context_line":"            copy \u003d share_utils.Copy(src_path,"}],"source_content_type":"text/x-python","patch_set":23,"id":"9a68dd71_d34aa554","line":517,"range":{"start_line":517,"start_character":19,"end_line":517,"end_character":27},"in_reply_to":"9a68dd71_2e9dfcbb","updated":"2016-01-25 13:36:23.000000000","message":"Done","commit_id":"aa400dcd060714ae1ba15b419c52e26600d5c59e"},{"author":{"_account_id":17097,"name":"Tiago Pasqualini da Silva","email":"t.pasqualini@luizalabs.com","username":"tiago.pasqualini"},"change_message_id":"6aca1122c9cb0eaf5c4ca24195aabc86100485a7","unresolved":false,"context_lines":[{"line_number":393,"context_line":"            self.copy_data_from_parent_share(old_share, new_share)"},{"line_number":394,"context_line":"        except Exception:"},{"line_number":395,"context_line":"            self.delete_share(new_share)"},{"line_number":396,"context_line":"            raise"},{"line_number":397,"context_line":"        finally:"},{"line_number":398,"context_line":"            for item in (new_share, old_share):"},{"line_number":399,"context_line":"                try:"}],"source_content_type":"text/x-python","patch_set":24,"id":"7a5de9d1_b4da37e8","line":396,"range":{"start_line":396,"start_character":12,"end_line":396,"end_character":17},"updated":"2016-02-02 16:24:16.000000000","message":"Please use with excutils.save_and_reraise_exception() on this block.","commit_id":"66fd31f671fcffd77f3e7862c19c0fbaf8885590"},{"author":{"_account_id":17742,"name":"liucheng","email":"liucheng20@huawei.com","username":"liucheng"},"change_message_id":"213464f92a2187d899386375595c34ce370b61bb","unresolved":false,"context_lines":[{"line_number":393,"context_line":"            self.copy_data_from_parent_share(old_share, new_share)"},{"line_number":394,"context_line":"        except Exception:"},{"line_number":395,"context_line":"            self.delete_share(new_share)"},{"line_number":396,"context_line":"            raise"},{"line_number":397,"context_line":"        finally:"},{"line_number":398,"context_line":"            for item in (new_share, old_share):"},{"line_number":399,"context_line":"                try:"}],"source_content_type":"text/x-python","patch_set":24,"id":"5a5ae5dd_a2d8c7f0","line":396,"range":{"start_line":396,"start_character":12,"end_line":396,"end_character":17},"in_reply_to":"7a5de9d1_b4da37e8","updated":"2016-02-03 07:01:24.000000000","message":"Done","commit_id":"66fd31f671fcffd77f3e7862c19c0fbaf8885590"},{"author":{"_account_id":17097,"name":"Tiago Pasqualini da Silva","email":"t.pasqualini@luizalabs.com","username":"tiago.pasqualini"},"change_message_id":"6aca1122c9cb0eaf5c4ca24195aabc86100485a7","unresolved":false,"context_lines":[{"line_number":418,"context_line":"                              \u0027Reason: %(err)s.\u0027)"},{"line_number":419,"context_line":"                          % {\u0027name\u0027: old_share[\u0027name\u0027],"},{"line_number":420,"context_line":"                             \u0027err\u0027: six.text_type(err)})"},{"line_number":421,"context_line":"                raise"},{"line_number":422,"context_line":""},{"line_number":423,"context_line":"        new_access \u003d self.get_access(new_share)"},{"line_number":424,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":24,"id":"7a5de9d1_d4d7b3bd","line":421,"range":{"start_line":421,"start_character":16,"end_line":421,"end_character":21},"updated":"2016-02-02 16:24:16.000000000","message":"same","commit_id":"66fd31f671fcffd77f3e7862c19c0fbaf8885590"},{"author":{"_account_id":17742,"name":"liucheng","email":"liucheng20@huawei.com","username":"liucheng"},"change_message_id":"213464f92a2187d899386375595c34ce370b61bb","unresolved":false,"context_lines":[{"line_number":418,"context_line":"                              \u0027Reason: %(err)s.\u0027)"},{"line_number":419,"context_line":"                          % {\u0027name\u0027: old_share[\u0027name\u0027],"},{"line_number":420,"context_line":"                             \u0027err\u0027: six.text_type(err)})"},{"line_number":421,"context_line":"                raise"},{"line_number":422,"context_line":""},{"line_number":423,"context_line":"        new_access \u003d self.get_access(new_share)"},{"line_number":424,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":24,"id":"5a5ae5dd_62e2cfa1","line":421,"range":{"start_line":421,"start_character":16,"end_line":421,"end_character":21},"in_reply_to":"7a5de9d1_d4d7b3bd","updated":"2016-02-03 07:01:24.000000000","message":"Done","commit_id":"66fd31f671fcffd77f3e7862c19c0fbaf8885590"},{"author":{"_account_id":17097,"name":"Tiago Pasqualini da Silva","email":"t.pasqualini@luizalabs.com","username":"tiago.pasqualini"},"change_message_id":"6aca1122c9cb0eaf5c4ca24195aabc86100485a7","unresolved":false,"context_lines":[{"line_number":429,"context_line":"                              \u0027Reason: %(err)s.\u0027)"},{"line_number":430,"context_line":"                          % {\u0027name\u0027: old_share[\u0027name\u0027],"},{"line_number":431,"context_line":"                             \u0027err\u0027: six.text_type(err)})"},{"line_number":432,"context_line":"                raise"},{"line_number":433,"context_line":""},{"line_number":434,"context_line":"            try:"},{"line_number":435,"context_line":"                self.allow_access(new_share, new_access)"}],"source_content_type":"text/x-python","patch_set":24,"id":"7a5de9d1_54f2e370","line":432,"range":{"start_line":432,"start_character":16,"end_line":432,"end_character":21},"updated":"2016-02-02 16:24:16.000000000","message":"same","commit_id":"66fd31f671fcffd77f3e7862c19c0fbaf8885590"},{"author":{"_account_id":17742,"name":"liucheng","email":"liucheng20@huawei.com","username":"liucheng"},"change_message_id":"213464f92a2187d899386375595c34ce370b61bb","unresolved":false,"context_lines":[{"line_number":429,"context_line":"                              \u0027Reason: %(err)s.\u0027)"},{"line_number":430,"context_line":"                          % {\u0027name\u0027: old_share[\u0027name\u0027],"},{"line_number":431,"context_line":"                             \u0027err\u0027: six.text_type(err)})"},{"line_number":432,"context_line":"                raise"},{"line_number":433,"context_line":""},{"line_number":434,"context_line":"            try:"},{"line_number":435,"context_line":"                self.allow_access(new_share, new_access)"}],"source_content_type":"text/x-python","patch_set":24,"id":"5a5ae5dd_22f37775","line":432,"range":{"start_line":432,"start_character":16,"end_line":432,"end_character":21},"in_reply_to":"7a5de9d1_54f2e370","updated":"2016-02-03 07:01:24.000000000","message":"Done","commit_id":"66fd31f671fcffd77f3e7862c19c0fbaf8885590"},{"author":{"_account_id":17097,"name":"Tiago Pasqualini da Silva","email":"t.pasqualini@luizalabs.com","username":"tiago.pasqualini"},"change_message_id":"6aca1122c9cb0eaf5c4ca24195aabc86100485a7","unresolved":false,"context_lines":[{"line_number":440,"context_line":"                              \u0027Reason: %(err)s.\u0027)"},{"line_number":441,"context_line":"                          % {\u0027name\u0027: new_share[\u0027name\u0027],"},{"line_number":442,"context_line":"                             \u0027err\u0027: six.text_type(err)})"},{"line_number":443,"context_line":"                raise"},{"line_number":444,"context_line":""},{"line_number":445,"context_line":"            copied \u003d self.copy_data(old_share, new_share)"},{"line_number":446,"context_line":""}],"source_content_type":"text/x-python","patch_set":24,"id":"7a5de9d1_d4fed337","line":443,"range":{"start_line":443,"start_character":16,"end_line":443,"end_character":21},"updated":"2016-02-02 16:24:16.000000000","message":"same","commit_id":"66fd31f671fcffd77f3e7862c19c0fbaf8885590"},{"author":{"_account_id":17742,"name":"liucheng","email":"liucheng20@huawei.com","username":"liucheng"},"change_message_id":"213464f92a2187d899386375595c34ce370b61bb","unresolved":false,"context_lines":[{"line_number":440,"context_line":"                              \u0027Reason: %(err)s.\u0027)"},{"line_number":441,"context_line":"                          % {\u0027name\u0027: new_share[\u0027name\u0027],"},{"line_number":442,"context_line":"                             \u0027err\u0027: six.text_type(err)})"},{"line_number":443,"context_line":"                raise"},{"line_number":444,"context_line":""},{"line_number":445,"context_line":"            copied \u003d self.copy_data(old_share, new_share)"},{"line_number":446,"context_line":""}],"source_content_type":"text/x-python","patch_set":24,"id":"5a5ae5dd_c2e703ab","line":443,"range":{"start_line":443,"start_character":16,"end_line":443,"end_character":21},"in_reply_to":"7a5de9d1_d4fed337","updated":"2016-02-03 07:01:24.000000000","message":"Done","commit_id":"66fd31f671fcffd77f3e7862c19c0fbaf8885590"},{"author":{"_account_id":17097,"name":"Tiago Pasqualini da Silva","email":"t.pasqualini@luizalabs.com","username":"tiago.pasqualini"},"change_message_id":"6aca1122c9cb0eaf5c4ca24195aabc86100485a7","unresolved":false,"context_lines":[{"line_number":509,"context_line":""},{"line_number":510,"context_line":"        return access_id"},{"line_number":511,"context_line":""},{"line_number":512,"context_line":"    def copy_data(self, old_share, new_share):"},{"line_number":513,"context_line":"        src_path \u003d \u0027/\u0027.join((old_share[\u0027mount_src\u0027], \u0027.snapshot\u0027,"},{"line_number":514,"context_line":"                             old_share[\u0027snapshot_name\u0027]))"},{"line_number":515,"context_line":"        dst_path \u003d new_share[\u0027mount_src\u0027]"}],"source_content_type":"text/x-python","patch_set":24,"id":"7a5de9d1_54674325","line":512,"range":{"start_line":512,"start_character":8,"end_line":512,"end_character":17},"updated":"2016-02-02 16:24:16.000000000","message":"Consider renaming this method to \"copy_snapshot_data\".","commit_id":"66fd31f671fcffd77f3e7862c19c0fbaf8885590"},{"author":{"_account_id":17742,"name":"liucheng","email":"liucheng20@huawei.com","username":"liucheng"},"change_message_id":"213464f92a2187d899386375595c34ce370b61bb","unresolved":false,"context_lines":[{"line_number":509,"context_line":""},{"line_number":510,"context_line":"        return access_id"},{"line_number":511,"context_line":""},{"line_number":512,"context_line":"    def copy_data(self, old_share, new_share):"},{"line_number":513,"context_line":"        src_path \u003d \u0027/\u0027.join((old_share[\u0027mount_src\u0027], \u0027.snapshot\u0027,"},{"line_number":514,"context_line":"                             old_share[\u0027snapshot_name\u0027]))"},{"line_number":515,"context_line":"        dst_path \u003d new_share[\u0027mount_src\u0027]"}],"source_content_type":"text/x-python","patch_set":24,"id":"5a5ae5dd_e2ec7f91","line":512,"range":{"start_line":512,"start_character":8,"end_line":512,"end_character":17},"in_reply_to":"7a5de9d1_54674325","updated":"2016-02-03 07:01:24.000000000","message":"Done","commit_id":"66fd31f671fcffd77f3e7862c19c0fbaf8885590"},{"author":{"_account_id":14567,"name":"Rodrigo Barbieri","email":"rodrigo.barbieri2010@gmail.com","username":"ganso"},"change_message_id":"89adefe83366c87627270376797ca3a55e8b05a4","unresolved":false,"context_lines":[{"line_number":510,"context_line":"        return access_id"},{"line_number":511,"context_line":""},{"line_number":512,"context_line":"    def copy_data(self, old_share, new_share):"},{"line_number":513,"context_line":"        src_path \u003d \u0027/\u0027.join((old_share[\u0027mount_src\u0027], \u0027.snapshot\u0027,"},{"line_number":514,"context_line":"                             old_share[\u0027snapshot_name\u0027]))"},{"line_number":515,"context_line":"        dst_path \u003d new_share[\u0027mount_src\u0027]"},{"line_number":516,"context_line":"        copy_finish \u003d False"},{"line_number":517,"context_line":"        LOG.debug(\"Copy data from src_path: %s to dst_path: %s.\","}],"source_content_type":"text/x-python","patch_set":24,"id":"7a5de9d1_b440f736","line":514,"range":{"start_line":513,"start_character":8,"end_line":514,"end_character":57},"updated":"2016-02-02 16:09:23.000000000","message":"I assume you have tested that this snapshot folder contains all file references, not only the difference between the snapshot and the share.","commit_id":"66fd31f671fcffd77f3e7862c19c0fbaf8885590"},{"author":{"_account_id":17742,"name":"liucheng","email":"liucheng20@huawei.com","username":"liucheng"},"change_message_id":"213464f92a2187d899386375595c34ce370b61bb","unresolved":false,"context_lines":[{"line_number":510,"context_line":"        return access_id"},{"line_number":511,"context_line":""},{"line_number":512,"context_line":"    def copy_data(self, old_share, new_share):"},{"line_number":513,"context_line":"        src_path \u003d \u0027/\u0027.join((old_share[\u0027mount_src\u0027], \u0027.snapshot\u0027,"},{"line_number":514,"context_line":"                             old_share[\u0027snapshot_name\u0027]))"},{"line_number":515,"context_line":"        dst_path \u003d new_share[\u0027mount_src\u0027]"},{"line_number":516,"context_line":"        copy_finish \u003d False"},{"line_number":517,"context_line":"        LOG.debug(\"Copy data from src_path: %s to dst_path: %s.\","}],"source_content_type":"text/x-python","patch_set":24,"id":"5a5ae5dd_82026b3d","line":514,"range":{"start_line":513,"start_character":8,"end_line":514,"end_character":57},"in_reply_to":"7a5de9d1_b440f736","updated":"2016-02-03 07:01:24.000000000","message":"Yes,I have tested.","commit_id":"66fd31f671fcffd77f3e7862c19c0fbaf8885590"},{"author":{"_account_id":17097,"name":"Tiago Pasqualini da Silva","email":"t.pasqualini@luizalabs.com","username":"tiago.pasqualini"},"change_message_id":"6aca1122c9cb0eaf5c4ca24195aabc86100485a7","unresolved":false,"context_lines":[{"line_number":518,"context_line":"                  src_path, dst_path)"},{"line_number":519,"context_line":"        try:"},{"line_number":520,"context_line":"            ignore_list \u003d \u0027\u0027"},{"line_number":521,"context_line":"            copy \u003d share_utils.Copy(src_path,"},{"line_number":522,"context_line":"                                    dst_path,"},{"line_number":523,"context_line":"                                    ignore_list)"},{"line_number":524,"context_line":"            copy.run()"}],"source_content_type":"text/x-python","patch_set":24,"id":"7a5de9d1_14022b70","line":521,"range":{"start_line":521,"start_character":19,"end_line":521,"end_character":35},"updated":"2016-02-02 16:24:16.000000000","message":"The class Copy will be moved to manila/data/utils.py on the Data Service patch. This might be broken after this patch merges: https://review.openstack.org/#/c/250515/. Consider adding this patch as parent.","commit_id":"66fd31f671fcffd77f3e7862c19c0fbaf8885590"},{"author":{"_account_id":17742,"name":"liucheng","email":"liucheng20@huawei.com","username":"liucheng"},"change_message_id":"213464f92a2187d899386375595c34ce370b61bb","unresolved":false,"context_lines":[{"line_number":518,"context_line":"                  src_path, dst_path)"},{"line_number":519,"context_line":"        try:"},{"line_number":520,"context_line":"            ignore_list \u003d \u0027\u0027"},{"line_number":521,"context_line":"            copy \u003d share_utils.Copy(src_path,"},{"line_number":522,"context_line":"                                    dst_path,"},{"line_number":523,"context_line":"                                    ignore_list)"},{"line_number":524,"context_line":"            copy.run()"}],"source_content_type":"text/x-python","patch_set":24,"id":"5a5ae5dd_fde8a218","line":521,"range":{"start_line":521,"start_character":19,"end_line":521,"end_character":35},"in_reply_to":"7a5de9d1_14022b70","updated":"2016-02-03 07:01:24.000000000","message":"I will pay close attention to this module. After your bp merged，I will do the corresponding modification. Thank you.","commit_id":"66fd31f671fcffd77f3e7862c19c0fbaf8885590"}],"manila/share/drivers/huawei/v3/helper.py":[{"author":{"_account_id":14567,"name":"Rodrigo Barbieri","email":"rodrigo.barbieri2010@gmail.com","username":"ganso"},"change_message_id":"f35aca216ba3d55e72db134c47e3d79d4e24ed86","unresolved":false,"context_lines":[{"line_number":612,"context_line":"        share_path \u003d \"/\" + share_name.replace(\"-\", \"_\") + \"/\""},{"line_number":613,"context_line":"        return share_path"},{"line_number":614,"context_line":""},{"line_number":615,"context_line":"    def _get_share_name_by_id(self, share_id):"},{"line_number":616,"context_line":"        share_name \u003d \"share_\" + share_id"},{"line_number":617,"context_line":"        return share_name"},{"line_number":618,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"da6ed579_676ddc03","line":615,"range":{"start_line":615,"start_character":8,"end_line":615,"end_character":29},"updated":"2016-01-12 17:43:29.000000000","message":"You should not be calling a private method from another class. This method should in fact be defined as public.","commit_id":"1d050fdb369ffc5890c2d0c0320f4ca3023394ee"},{"author":{"_account_id":14567,"name":"Rodrigo Barbieri","email":"rodrigo.barbieri2010@gmail.com","username":"ganso"},"change_message_id":"668e35f8f704385acce2a9ad26f955bf9470d7c0","unresolved":false,"context_lines":[{"line_number":612,"context_line":"        share_path \u003d \"/\" + share_name.replace(\"-\", \"_\") + \"/\""},{"line_number":613,"context_line":"        return share_path"},{"line_number":614,"context_line":""},{"line_number":615,"context_line":"    def _get_share_name_by_id(self, share_id):"},{"line_number":616,"context_line":"        share_name \u003d \"share_\" + share_id"},{"line_number":617,"context_line":"        return share_name"},{"line_number":618,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"da6ed579_e2345adf","line":615,"range":{"start_line":615,"start_character":8,"end_line":615,"end_character":29},"in_reply_to":"da6ed579_676ddc03","updated":"2016-01-12 17:44:27.000000000","message":"I believe the same goes for several other methods in this class.","commit_id":"1d050fdb369ffc5890c2d0c0320f4ca3023394ee"}],"manila/tests/share/drivers/huawei/test_huawei_nas.py":[{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"3c21c5e241803c9a81566cc91baa2c6a2a489a73","unresolved":false,"context_lines":[{"line_number":1113,"context_line":"                         \u0027umount_share_from_host\u0027,"},{"line_number":1114,"context_line":"                         mock.Mock(return_value\u003d{}))"},{"line_number":1115,"context_line":"        self.driver.plugin.helper.login()"},{"line_number":1116,"context_line":"        self.driver.plugin.helper.snapshot_flag \u003d True"},{"line_number":1117,"context_line":"        location \u003d self.driver.create_share_from_snapshot(self._context,"},{"line_number":1118,"context_line":"                                                          self.share_nfs,"},{"line_number":1119,"context_line":"                                                          self.nfs_snapshot,"}],"source_content_type":"text/x-python","patch_set":1,"id":"1a7b0d38_3e6e11ca","line":1116,"range":{"start_line":1116,"start_character":50,"end_line":1116,"end_character":54},"updated":"2015-12-23 09:43:52.000000000","message":"Use an empty line between the mocks and the method call and one more between the method call and the asserts. \n\n\n    ...\n    self.driver.plugin.helper.login()\n    self.driver.plugin.helper.snapshot_flag \u003d True\n\n\n    location \u003d self.driver.create_share_from_snapshot(\n                         self._context, self.share_nfs, self.nfs_snapshot, self.share_server)\n\n\n    self.assertEqual(\"100.115.10.68:/share_fake_uuid\", location)","commit_id":"376077c3aa7d061b336a86f35061a5fe412dd28d"},{"author":{"_account_id":17742,"name":"liucheng","email":"liucheng20@huawei.com","username":"liucheng"},"change_message_id":"5ac01d0e706d1ec511f791cf52708adaf2ad931b","unresolved":false,"context_lines":[{"line_number":1113,"context_line":"                         \u0027umount_share_from_host\u0027,"},{"line_number":1114,"context_line":"                         mock.Mock(return_value\u003d{}))"},{"line_number":1115,"context_line":"        self.driver.plugin.helper.login()"},{"line_number":1116,"context_line":"        self.driver.plugin.helper.snapshot_flag \u003d True"},{"line_number":1117,"context_line":"        location \u003d self.driver.create_share_from_snapshot(self._context,"},{"line_number":1118,"context_line":"                                                          self.share_nfs,"},{"line_number":1119,"context_line":"                                                          self.nfs_snapshot,"}],"source_content_type":"text/x-python","patch_set":1,"id":"1a7b0d38_6eded912","line":1116,"range":{"start_line":1116,"start_character":50,"end_line":1116,"end_character":54},"in_reply_to":"1a7b0d38_3e6e11ca","updated":"2015-12-26 10:12:10.000000000","message":"Done","commit_id":"376077c3aa7d061b336a86f35061a5fe412dd28d"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"3c21c5e241803c9a81566cc91baa2c6a2a489a73","unresolved":false,"context_lines":[{"line_number":1140,"context_line":"                                                          self.share_cifs,"},{"line_number":1141,"context_line":"                                                          self.cifs_snapshot,"},{"line_number":1142,"context_line":"                                                          self.share_server)"},{"line_number":1143,"context_line":"        self.assertEqual(\"\\\\\\\\100.115.10.68\\\\share_fake_uuid\", location)"},{"line_number":1144,"context_line":""},{"line_number":1145,"context_line":"    def test_create_nfsshare_from_cifssnapshot_success(self):"},{"line_number":1146,"context_line":"        share_type \u003d self.fake_type_not_extra[\u0027test_with_extra\u0027]"}],"source_content_type":"text/x-python","patch_set":1,"id":"1a7b0d38_5e73ddb1","line":1143,"range":{"start_line":1143,"start_character":8,"end_line":1143,"end_character":12},"updated":"2015-12-23 09:43:52.000000000","message":"same here","commit_id":"376077c3aa7d061b336a86f35061a5fe412dd28d"},{"author":{"_account_id":17742,"name":"liucheng","email":"liucheng20@huawei.com","username":"liucheng"},"change_message_id":"5ac01d0e706d1ec511f791cf52708adaf2ad931b","unresolved":false,"context_lines":[{"line_number":1140,"context_line":"                                                          self.share_cifs,"},{"line_number":1141,"context_line":"                                                          self.cifs_snapshot,"},{"line_number":1142,"context_line":"                                                          self.share_server)"},{"line_number":1143,"context_line":"        self.assertEqual(\"\\\\\\\\100.115.10.68\\\\share_fake_uuid\", location)"},{"line_number":1144,"context_line":""},{"line_number":1145,"context_line":"    def test_create_nfsshare_from_cifssnapshot_success(self):"},{"line_number":1146,"context_line":"        share_type \u003d self.fake_type_not_extra[\u0027test_with_extra\u0027]"}],"source_content_type":"text/x-python","patch_set":1,"id":"1a7b0d38_cec02d2d","line":1143,"range":{"start_line":1143,"start_character":8,"end_line":1143,"end_character":12},"in_reply_to":"1a7b0d38_5e73ddb1","updated":"2015-12-26 10:12:10.000000000","message":"Done","commit_id":"376077c3aa7d061b336a86f35061a5fe412dd28d"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"3c21c5e241803c9a81566cc91baa2c6a2a489a73","unresolved":false,"context_lines":[{"line_number":1166,"context_line":"                                                          self.share_nfs,"},{"line_number":1167,"context_line":"                                                          self.cifs_snapshot,"},{"line_number":1168,"context_line":"                                                          self.share_server)"},{"line_number":1169,"context_line":"        self.assertEqual(\"100.115.10.68:/share_fake_uuid\", location)"},{"line_number":1170,"context_line":""},{"line_number":1171,"context_line":"    def test_create_cifsshare_from_nfssnapshot_success(self):"},{"line_number":1172,"context_line":"        share_type \u003d self.fake_type_not_extra[\u0027test_with_extra\u0027]"}],"source_content_type":"text/x-python","patch_set":1,"id":"1a7b0d38_1e66b5ed","line":1169,"range":{"start_line":1169,"start_character":0,"end_line":1169,"end_character":8},"updated":"2015-12-23 09:43:52.000000000","message":"and here","commit_id":"376077c3aa7d061b336a86f35061a5fe412dd28d"},{"author":{"_account_id":17742,"name":"liucheng","email":"liucheng20@huawei.com","username":"liucheng"},"change_message_id":"5ac01d0e706d1ec511f791cf52708adaf2ad931b","unresolved":false,"context_lines":[{"line_number":1166,"context_line":"                                                          self.share_nfs,"},{"line_number":1167,"context_line":"                                                          self.cifs_snapshot,"},{"line_number":1168,"context_line":"                                                          self.share_server)"},{"line_number":1169,"context_line":"        self.assertEqual(\"100.115.10.68:/share_fake_uuid\", location)"},{"line_number":1170,"context_line":""},{"line_number":1171,"context_line":"    def test_create_cifsshare_from_nfssnapshot_success(self):"},{"line_number":1172,"context_line":"        share_type \u003d self.fake_type_not_extra[\u0027test_with_extra\u0027]"}],"source_content_type":"text/x-python","patch_set":1,"id":"1a7b0d38_0ec71546","line":1169,"range":{"start_line":1169,"start_character":0,"end_line":1169,"end_character":8},"in_reply_to":"1a7b0d38_1e66b5ed","updated":"2015-12-26 10:12:10.000000000","message":"Done","commit_id":"376077c3aa7d061b336a86f35061a5fe412dd28d"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"3c21c5e241803c9a81566cc91baa2c6a2a489a73","unresolved":false,"context_lines":[{"line_number":1185,"context_line":"                                                          self.share_cifs,"},{"line_number":1186,"context_line":"                                                          self.nfs_snapshot,"},{"line_number":1187,"context_line":"                                                          self.share_server)"},{"line_number":1188,"context_line":"        self.assertEqual(\"\\\\\\\\100.115.10.68\\\\share_fake_uuid\", location)"},{"line_number":1189,"context_line":""},{"line_number":1190,"context_line":"    def test_create_share_from_snapshot_nonefs(self):"},{"line_number":1191,"context_line":"        self.driver.plugin.helper.login()"}],"source_content_type":"text/x-python","patch_set":1,"id":"1a7b0d38_be6201d7","line":1188,"range":{"start_line":1188,"start_character":8,"end_line":1188,"end_character":12},"updated":"2015-12-23 09:43:52.000000000","message":"and here; and below","commit_id":"376077c3aa7d061b336a86f35061a5fe412dd28d"},{"author":{"_account_id":17742,"name":"liucheng","email":"liucheng20@huawei.com","username":"liucheng"},"change_message_id":"5ac01d0e706d1ec511f791cf52708adaf2ad931b","unresolved":false,"context_lines":[{"line_number":1185,"context_line":"                                                          self.share_cifs,"},{"line_number":1186,"context_line":"                                                          self.nfs_snapshot,"},{"line_number":1187,"context_line":"                                                          self.share_server)"},{"line_number":1188,"context_line":"        self.assertEqual(\"\\\\\\\\100.115.10.68\\\\share_fake_uuid\", location)"},{"line_number":1189,"context_line":""},{"line_number":1190,"context_line":"    def test_create_share_from_snapshot_nonefs(self):"},{"line_number":1191,"context_line":"        self.driver.plugin.helper.login()"}],"source_content_type":"text/x-python","patch_set":1,"id":"1a7b0d38_aec5a13c","line":1188,"range":{"start_line":1188,"start_character":8,"end_line":1188,"end_character":12},"in_reply_to":"1a7b0d38_be6201d7","updated":"2015-12-26 10:12:10.000000000","message":"Done","commit_id":"376077c3aa7d061b336a86f35061a5fe412dd28d"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"3c21c5e241803c9a81566cc91baa2c6a2a489a73","unresolved":false,"context_lines":[{"line_number":1846,"context_line":"            waitinterval_text \u003d doc.createTextNode(\u0027\u0027)"},{"line_number":1847,"context_line":"        waitinterval.appendChild(waitinterval_text)"},{"line_number":1848,"context_line":""},{"line_number":1849,"context_line":"        NFSClient \u003d doc.createElement(\u0027NFSClient\u0027)"},{"line_number":1850,"context_line":""},{"line_number":1851,"context_line":"        virtualip \u003d doc.createElement(\u0027IP\u0027)"},{"line_number":1852,"context_line":"        virtualip_text \u003d doc.createTextNode(\u0027100.112.0.1\u0027)"},{"line_number":1853,"context_line":"        virtualip.appendChild(virtualip_text)"},{"line_number":1854,"context_line":"        NFSClient.appendChild(virtualip)"},{"line_number":1855,"context_line":"        CIFSClient \u003d doc.createElement(\u0027CIFSClient\u0027)"},{"line_number":1856,"context_line":""},{"line_number":1857,"context_line":"        username \u003d doc.createElement(\u0027UserName\u0027)"},{"line_number":1858,"context_line":"        username_text \u003d doc.createTextNode(\u0027user_name\u0027)"},{"line_number":1859,"context_line":"        username.appendChild(username_text)"},{"line_number":1860,"context_line":"        CIFSClient.appendChild(username)"},{"line_number":1861,"context_line":""},{"line_number":1862,"context_line":"        userpassword \u003d doc.createElement(\u0027UserPassword\u0027)"},{"line_number":1863,"context_line":"        userpassword_text \u003d doc.createTextNode(\u0027user_password\u0027)"},{"line_number":1864,"context_line":"        userpassword.appendChild(userpassword_text)"},{"line_number":1865,"context_line":"        CIFSClient.appendChild(userpassword)"},{"line_number":1866,"context_line":""},{"line_number":1867,"context_line":"        lun.appendChild(NFSClient)"},{"line_number":1868,"context_line":"        lun.appendChild(CIFSClient)"},{"line_number":1869,"context_line":"        lun.appendChild(timeout)"},{"line_number":1870,"context_line":"        lun.appendChild(waitinterval)"},{"line_number":1871,"context_line":"        lun.appendChild(thin_storagepool)"}],"source_content_type":"text/x-python","patch_set":1,"id":"1a7b0d38_deb6ed3c","line":1868,"range":{"start_line":1849,"start_character":7,"end_line":1868,"end_character":35},"updated":"2015-12-23 09:43:52.000000000","message":"Could you create a fakes file and move all these values to the fakes file?\n\n\nAll your fake data can exist in the fakes file.","commit_id":"376077c3aa7d061b336a86f35061a5fe412dd28d"},{"author":{"_account_id":17742,"name":"liucheng","email":"liucheng20@huawei.com","username":"liucheng"},"change_message_id":"5ac01d0e706d1ec511f791cf52708adaf2ad931b","unresolved":false,"context_lines":[{"line_number":1846,"context_line":"            waitinterval_text \u003d doc.createTextNode(\u0027\u0027)"},{"line_number":1847,"context_line":"        waitinterval.appendChild(waitinterval_text)"},{"line_number":1848,"context_line":""},{"line_number":1849,"context_line":"        NFSClient \u003d doc.createElement(\u0027NFSClient\u0027)"},{"line_number":1850,"context_line":""},{"line_number":1851,"context_line":"        virtualip \u003d doc.createElement(\u0027IP\u0027)"},{"line_number":1852,"context_line":"        virtualip_text \u003d doc.createTextNode(\u0027100.112.0.1\u0027)"},{"line_number":1853,"context_line":"        virtualip.appendChild(virtualip_text)"},{"line_number":1854,"context_line":"        NFSClient.appendChild(virtualip)"},{"line_number":1855,"context_line":"        CIFSClient \u003d doc.createElement(\u0027CIFSClient\u0027)"},{"line_number":1856,"context_line":""},{"line_number":1857,"context_line":"        username \u003d doc.createElement(\u0027UserName\u0027)"},{"line_number":1858,"context_line":"        username_text \u003d doc.createTextNode(\u0027user_name\u0027)"},{"line_number":1859,"context_line":"        username.appendChild(username_text)"},{"line_number":1860,"context_line":"        CIFSClient.appendChild(username)"},{"line_number":1861,"context_line":""},{"line_number":1862,"context_line":"        userpassword \u003d doc.createElement(\u0027UserPassword\u0027)"},{"line_number":1863,"context_line":"        userpassword_text \u003d doc.createTextNode(\u0027user_password\u0027)"},{"line_number":1864,"context_line":"        userpassword.appendChild(userpassword_text)"},{"line_number":1865,"context_line":"        CIFSClient.appendChild(userpassword)"},{"line_number":1866,"context_line":""},{"line_number":1867,"context_line":"        lun.appendChild(NFSClient)"},{"line_number":1868,"context_line":"        lun.appendChild(CIFSClient)"},{"line_number":1869,"context_line":"        lun.appendChild(timeout)"},{"line_number":1870,"context_line":"        lun.appendChild(waitinterval)"},{"line_number":1871,"context_line":"        lun.appendChild(thin_storagepool)"}],"source_content_type":"text/x-python","patch_set":1,"id":"1a7b0d38_8e16a5a5","line":1868,"range":{"start_line":1849,"start_character":7,"end_line":1868,"end_character":35},"in_reply_to":"1a7b0d38_deb6ed3c","updated":"2015-12-26 10:12:10.000000000","message":"Our test cases and fakes file are all in \"test_huawei_nas.py\", it is easier for us to manage our test cases, it\u0027s not necessary to make another file now. Thank you for your advice.","commit_id":"376077c3aa7d061b336a86f35061a5fe412dd28d"},{"author":{"_account_id":8851,"name":"Valeriy Ponomaryov","email":"kiparis.kh@gmail.com","username":"vponomaryov"},"change_message_id":"4dc55080804281efd08bd079f2d4acd11943bdc7","unresolved":false,"context_lines":[{"line_number":1103,"context_line":""},{"line_number":1104,"context_line":"    def test_create_nfsshare_from_nfssnapshot_success(self):"},{"line_number":1105,"context_line":"        share_type \u003d self.fake_type_not_extra[\u0027test_with_extra\u0027]"},{"line_number":1106,"context_line":"        self.mock_object(db,"},{"line_number":1107,"context_line":"                         \u0027share_type_get\u0027,"},{"line_number":1108,"context_line":"                         mock.Mock(return_value\u003dshare_type))"},{"line_number":1109,"context_line":"        self.mock_object(self.driver.plugin,"}],"source_content_type":"text/x-python","patch_set":6,"id":"fa69d971_76cec784","line":1106,"range":{"start_line":1106,"start_character":8,"end_line":1106,"end_character":28},"updated":"2016-01-08 12:37:29.000000000","message":"It is better to make assertions on mocked stuff. Same for all other such cases.","commit_id":"3150b03c7124855a17783ec7a31d22930e14e10d"},{"author":{"_account_id":17742,"name":"liucheng","email":"liucheng20@huawei.com","username":"liucheng"},"change_message_id":"94074ca32879719c727a3c8c838e92f118ca0fd1","unresolved":false,"context_lines":[{"line_number":1103,"context_line":""},{"line_number":1104,"context_line":"    def test_create_nfsshare_from_nfssnapshot_success(self):"},{"line_number":1105,"context_line":"        share_type \u003d self.fake_type_not_extra[\u0027test_with_extra\u0027]"},{"line_number":1106,"context_line":"        self.mock_object(db,"},{"line_number":1107,"context_line":"                         \u0027share_type_get\u0027,"},{"line_number":1108,"context_line":"                         mock.Mock(return_value\u003dshare_type))"},{"line_number":1109,"context_line":"        self.mock_object(self.driver.plugin,"}],"source_content_type":"text/x-python","patch_set":6,"id":"fa69d971_8331945c","line":1106,"range":{"start_line":1106,"start_character":8,"end_line":1106,"end_character":28},"in_reply_to":"fa69d971_76cec784","updated":"2016-01-09 07:10:20.000000000","message":"Thank you for your advice, but I\u0027m not clear how to modify it.","commit_id":"3150b03c7124855a17783ec7a31d22930e14e10d"},{"author":{"_account_id":11047,"name":"Mark Sturdevant","email":"mark.sturdevant@ibm.com","username":"markstur"},"change_message_id":"a69229d65bc70bca467e3937c031d534cf53d48a","unresolved":false,"context_lines":[{"line_number":286,"context_line":"    if method \u003d\u003d \"GET\":"},{"line_number":287,"context_line":"        data \u003d \"\"\"{\"error\":{\"code\":0},"},{"line_number":288,"context_line":"                    \"data\":{\"NAME\": \"OpenStack_Fake_QoS\", \"MAXIOPS\": \"100\","},{"line_number":289,"context_line":"                    \"FSLIST\": \"4\", \"LUNLIST\": \"\", \"RUNNINGSTATUS\": \"2\"}}\"\"\""},{"line_number":290,"context_line":"    elif method \u003d\u003d \"PUT\":"},{"line_number":291,"context_line":"        data \u003d \"\"\"{\"error\":{\"code\":0}}\"\"\""},{"line_number":292,"context_line":"    else:"}],"source_content_type":"text/x-python","patch_set":23,"id":"9a68dd71_2ed2dc5c","line":289,"range":{"start_line":289,"start_character":69,"end_line":289,"end_character":75},"updated":"2016-01-24 06:24:56.000000000","message":"This looks unrelated to this patch","commit_id":"aa400dcd060714ae1ba15b419c52e26600d5c59e"},{"author":{"_account_id":17742,"name":"liucheng","email":"liucheng20@huawei.com","username":"liucheng"},"change_message_id":"c43250fa9addc903522089d6e93146d0aa9f55cb","unresolved":false,"context_lines":[{"line_number":286,"context_line":"    if method \u003d\u003d \"GET\":"},{"line_number":287,"context_line":"        data \u003d \"\"\"{\"error\":{\"code\":0},"},{"line_number":288,"context_line":"                    \"data\":{\"NAME\": \"OpenStack_Fake_QoS\", \"MAXIOPS\": \"100\","},{"line_number":289,"context_line":"                    \"FSLIST\": \"4\", \"LUNLIST\": \"\", \"RUNNINGSTATUS\": \"2\"}}\"\"\""},{"line_number":290,"context_line":"    elif method \u003d\u003d \"PUT\":"},{"line_number":291,"context_line":"        data \u003d \"\"\"{\"error\":{\"code\":0}}\"\"\""},{"line_number":292,"context_line":"    else:"}],"source_content_type":"text/x-python","patch_set":23,"id":"9a68dd71_e505ba13","line":289,"range":{"start_line":289,"start_character":69,"end_line":289,"end_character":75},"in_reply_to":"9a68dd71_2ed2dc5c","updated":"2016-01-25 13:36:23.000000000","message":"When delete a share, my test case will use \"QoS_response\".","commit_id":"aa400dcd060714ae1ba15b419c52e26600d5c59e"}]}
