)]}'
{"manila/share/drivers/qnap/qnap.py":[{"author":{"_account_id":15100,"name":"zhongjun","email":"jun.zhongjun2@gmail.com","username":"zhongjun2"},"change_message_id":"772e4cb8ec509e96ccb4c67378b672c0a4575837","unresolved":false,"context_lines":[{"line_number":203,"context_line":"                self.configuration.qnap_poolname,"},{"line_number":204,"context_line":"                vol_label\u003dshare_name)"},{"line_number":205,"context_line":"            if created_share is None:"},{"line_number":206,"context_line":"                LOG.warning(\u0027Share %s does not exist\u0027, share_name)"},{"line_number":207,"context_line":"                msg \u003d _(\u0027Share %s does not exist\u0027) % share_name"},{"line_number":208,"context_line":"                raise exception.ShareBackendException(msg\u003dmsg)"},{"line_number":209,"context_line":"            vol_no \u003d created_share.find(\u0027vol_no\u0027).text"}],"source_content_type":"text/x-python","patch_set":1,"id":"ff82abbf_460c4d40","line":206,"range":{"start_line":206,"start_character":20,"end_line":206,"end_character":27},"updated":"2017-11-28 03:31:25.000000000","message":"It looks like it is a error log, it isn\u0027t just a warning?","commit_id":"a2098b59b1b64cbb9a150055e5a9d9bed6cd410f"},{"author":{"_account_id":26134,"name":"Chris Yang","email":"chrisyang@qnap.com","username":"chrisyang"},"change_message_id":"2294b574aee62d482064d478bb89a862104b386a","unresolved":false,"context_lines":[{"line_number":203,"context_line":"                self.configuration.qnap_poolname,"},{"line_number":204,"context_line":"                vol_label\u003dshare_name)"},{"line_number":205,"context_line":"            if created_share is None:"},{"line_number":206,"context_line":"                LOG.warning(\u0027Share %s does not exist\u0027, share_name)"},{"line_number":207,"context_line":"                msg \u003d _(\u0027Share %s does not exist\u0027) % share_name"},{"line_number":208,"context_line":"                raise exception.ShareBackendException(msg\u003dmsg)"},{"line_number":209,"context_line":"            vol_no \u003d created_share.find(\u0027vol_no\u0027).text"}],"source_content_type":"text/x-python","patch_set":1,"id":"ff82abbf_2da1e1f8","line":206,"range":{"start_line":206,"start_character":20,"end_line":206,"end_character":27},"in_reply_to":"ff82abbf_460c4d40","updated":"2017-11-28 14:03:31.000000000","message":"Yes, it is a error log. I will update it.","commit_id":"a2098b59b1b64cbb9a150055e5a9d9bed6cd410f"},{"author":{"_account_id":15100,"name":"zhongjun","email":"jun.zhongjun2@gmail.com","username":"zhongjun2"},"change_message_id":"772e4cb8ec509e96ccb4c67378b672c0a4575837","unresolved":false,"context_lines":[{"line_number":279,"context_line":""},{"line_number":280,"context_line":"        # User could create two shares with the same name on horizon."},{"line_number":281,"context_line":"        # Therefore, we should not use displayname to create shares on NAS."},{"line_number":282,"context_line":"        create_share_name \u003d self._gen_random_name(\"share\")"},{"line_number":283,"context_line":"        # If share name exists, need to change to another name."},{"line_number":284,"context_line":"        created_share \u003d self.api_executor.get_share_info("},{"line_number":285,"context_line":"            self.configuration.qnap_poolname,"}],"source_content_type":"text/x-python","patch_set":1,"id":"ff82abbf_39db6e7c","line":282,"range":{"start_line":282,"start_character":8,"end_line":282,"end_character":58},"updated":"2017-11-28 03:31:25.000000000","message":"Why don\u0027t you just use share id, it is unique. If you use time as your share name, it could not unique.","commit_id":"a2098b59b1b64cbb9a150055e5a9d9bed6cd410f"},{"author":{"_account_id":26134,"name":"Chris Yang","email":"chrisyang@qnap.com","username":"chrisyang"},"change_message_id":"2294b574aee62d482064d478bb89a862104b386a","unresolved":false,"context_lines":[{"line_number":279,"context_line":""},{"line_number":280,"context_line":"        # User could create two shares with the same name on horizon."},{"line_number":281,"context_line":"        # Therefore, we should not use displayname to create shares on NAS."},{"line_number":282,"context_line":"        create_share_name \u003d self._gen_random_name(\"share\")"},{"line_number":283,"context_line":"        # If share name exists, need to change to another name."},{"line_number":284,"context_line":"        created_share \u003d self.api_executor.get_share_info("},{"line_number":285,"context_line":"            self.configuration.qnap_poolname,"}],"source_content_type":"text/x-python","patch_set":1,"id":"ff82abbf_040b9223","line":282,"range":{"start_line":282,"start_character":8,"end_line":282,"end_character":58},"in_reply_to":"ff82abbf_39db6e7c","updated":"2017-11-28 14:03:31.000000000","message":"By using time as the share name, it is convenient for user to see when the share is created on NAS.\nEach time when user creates a share on QNAP NAS, driver uses time to generate a random share name with the format of \"manila-shr-%Y%m%d%H%M%S%f\". Driver then tries to get the share info from NAS by the generated name, to see if there is any share with the same name already existed on NAS. If so, driver will retry to generate a new name to create again. Yes, there is little probability to meet a collision after retry many times, then we will report create task fail to user.","commit_id":"a2098b59b1b64cbb9a150055e5a9d9bed6cd410f"},{"author":{"_account_id":15100,"name":"zhongjun","email":"jun.zhongjun2@gmail.com","username":"zhongjun2"},"change_message_id":"772e4cb8ec509e96ccb4c67378b672c0a4575837","unresolved":false,"context_lines":[{"line_number":286,"context_line":"            vol_label\u003dcreate_share_name)"},{"line_number":287,"context_line":"        LOG.debug(\u0027created_share: %s\u0027, created_share)"},{"line_number":288,"context_line":"        if created_share is not None:"},{"line_number":289,"context_line":"            msg \u003d _(\"Failed to create an unused share name.\")"},{"line_number":290,"context_line":"            raise exception.ShareBackendException(msg\u003dmsg)"},{"line_number":291,"context_line":""},{"line_number":292,"context_line":"        self.api_executor.create_share("}],"source_content_type":"text/x-python","patch_set":1,"id":"ff82abbf_19b0ea42","line":289,"range":{"start_line":289,"start_character":21,"end_line":289,"end_character":60},"updated":"2017-11-28 03:31:25.000000000","message":"Do you means \"Failed to create an unused share name.\" because of the share name already exist in qnap storage?\n\nWhy do you have to retry 5 times when the share name already exist in qnap storage and raise ShareBackendException error. If you keep retry to get_share_info, the share will be deleted in the storage? or no matter how many times you retry, then you cannot get successful?","commit_id":"a2098b59b1b64cbb9a150055e5a9d9bed6cd410f"},{"author":{"_account_id":26134,"name":"Chris Yang","email":"chrisyang@qnap.com","username":"chrisyang"},"change_message_id":"2294b574aee62d482064d478bb89a862104b386a","unresolved":false,"context_lines":[{"line_number":286,"context_line":"            vol_label\u003dcreate_share_name)"},{"line_number":287,"context_line":"        LOG.debug(\u0027created_share: %s\u0027, created_share)"},{"line_number":288,"context_line":"        if created_share is not None:"},{"line_number":289,"context_line":"            msg \u003d _(\"Failed to create an unused share name.\")"},{"line_number":290,"context_line":"            raise exception.ShareBackendException(msg\u003dmsg)"},{"line_number":291,"context_line":""},{"line_number":292,"context_line":"        self.api_executor.create_share("}],"source_content_type":"text/x-python","patch_set":1,"id":"ff82abbf_04ce32b3","line":289,"range":{"start_line":289,"start_character":21,"end_line":289,"end_character":60},"in_reply_to":"ff82abbf_19b0ea42","updated":"2017-11-28 14:03:31.000000000","message":"Yes, if the generated share name has already been used by another share on NAS, driver will raise exception to retry.\nAs mentioned above, we will re-generage the random share name and check from NAS again. Variable \"created_share\" is set to None if there is no share with the same name on NAS.","commit_id":"a2098b59b1b64cbb9a150055e5a9d9bed6cd410f"},{"author":{"_account_id":15100,"name":"zhongjun","email":"jun.zhongjun2@gmail.com","username":"zhongjun2"},"change_message_id":"772e4cb8ec509e96ccb4c67378b672c0a4575837","unresolved":false,"context_lines":[{"line_number":289,"context_line":"            msg \u003d _(\"Failed to create an unused share name.\")"},{"line_number":290,"context_line":"            raise exception.ShareBackendException(msg\u003dmsg)"},{"line_number":291,"context_line":""},{"line_number":292,"context_line":"        self.api_executor.create_share("},{"line_number":293,"context_line":"            share,"},{"line_number":294,"context_line":"            self.configuration.qnap_poolname,"},{"line_number":295,"context_line":"            create_share_name,"}],"source_content_type":"text/x-python","patch_set":1,"id":"ff82abbf_79433614","line":292,"range":{"start_line":292,"start_character":8,"end_line":292,"end_character":39},"updated":"2017-11-28 03:31:25.000000000","message":"If you don\u0027t get_share_info first, and you just directly create the share. Can you get the error about \"the share is exist in the qnap storage\"? if yes, you may will be don\u0027t have to get_share_info at the beginning.","commit_id":"a2098b59b1b64cbb9a150055e5a9d9bed6cd410f"},{"author":{"_account_id":26134,"name":"Chris Yang","email":"chrisyang@qnap.com","username":"chrisyang"},"change_message_id":"2294b574aee62d482064d478bb89a862104b386a","unresolved":false,"context_lines":[{"line_number":289,"context_line":"            msg \u003d _(\"Failed to create an unused share name.\")"},{"line_number":290,"context_line":"            raise exception.ShareBackendException(msg\u003dmsg)"},{"line_number":291,"context_line":""},{"line_number":292,"context_line":"        self.api_executor.create_share("},{"line_number":293,"context_line":"            share,"},{"line_number":294,"context_line":"            self.configuration.qnap_poolname,"},{"line_number":295,"context_line":"            create_share_name,"}],"source_content_type":"text/x-python","patch_set":1,"id":"ff82abbf_84980275","line":292,"range":{"start_line":292,"start_character":8,"end_line":292,"end_character":39},"in_reply_to":"ff82abbf_79433614","updated":"2017-11-28 14:03:31.000000000","message":"Indeed, after the pre-check above, create share task may still has chance to fail due to the same reason: \"Share name has already been used by other share on NAS\". If so, self.api_execurtor.create_share() function will raise an exception to retry again.","commit_id":"a2098b59b1b64cbb9a150055e5a9d9bed6cd410f"},{"author":{"_account_id":15100,"name":"zhongjun","email":"jun.zhongjun2@gmail.com","username":"zhongjun2"},"change_message_id":"772e4cb8ec509e96ccb4c67378b672c0a4575837","unresolved":false,"context_lines":[{"line_number":350,"context_line":"        \"\"\"Extend an existing share.\"\"\""},{"line_number":351,"context_line":"        LOG.debug(\u0027Entering extend_share share\u003d%(share)s \u0027"},{"line_number":352,"context_line":"                  \u0027new_size\u003d%(size)s\u0027,"},{"line_number":353,"context_line":"                  {\u0027share\u0027: share[\u0027display_name\u0027], \u0027size\u0027: new_size})"},{"line_number":354,"context_line":""},{"line_number":355,"context_line":"        # Use private_storage to retrieve volume Name created in the NAS."},{"line_number":356,"context_line":"        volName \u003d self.private_storage.get(share[\u0027id\u0027], \u0027volName\u0027)"}],"source_content_type":"text/x-python","patch_set":1,"id":"ff82abbf_7986d615","line":353,"range":{"start_line":353,"start_character":28,"end_line":353,"end_character":49},"updated":"2017-11-28 03:31:25.000000000","message":"As you said in code line 280: \"User could create two shares with the same name on horizon.\"  So the \"display_name\" isn\u0027t unique. You could just use share[\u0027id\u0027]","commit_id":"a2098b59b1b64cbb9a150055e5a9d9bed6cd410f"},{"author":{"_account_id":26134,"name":"Chris Yang","email":"chrisyang@qnap.com","username":"chrisyang"},"change_message_id":"2294b574aee62d482064d478bb89a862104b386a","unresolved":false,"context_lines":[{"line_number":350,"context_line":"        \"\"\"Extend an existing share.\"\"\""},{"line_number":351,"context_line":"        LOG.debug(\u0027Entering extend_share share\u003d%(share)s \u0027"},{"line_number":352,"context_line":"                  \u0027new_size\u003d%(size)s\u0027,"},{"line_number":353,"context_line":"                  {\u0027share\u0027: share[\u0027display_name\u0027], \u0027size\u0027: new_size})"},{"line_number":354,"context_line":""},{"line_number":355,"context_line":"        # Use private_storage to retrieve volume Name created in the NAS."},{"line_number":356,"context_line":"        volName \u003d self.private_storage.get(share[\u0027id\u0027], \u0027volName\u0027)"}],"source_content_type":"text/x-python","patch_set":1,"id":"ff82abbf_64ab7e74","line":353,"range":{"start_line":353,"start_character":28,"end_line":353,"end_character":49},"in_reply_to":"ff82abbf_7986d615","updated":"2017-11-28 14:03:31.000000000","message":"Indeed, I will update it.","commit_id":"a2098b59b1b64cbb9a150055e5a9d9bed6cd410f"},{"author":{"_account_id":15100,"name":"zhongjun","email":"jun.zhongjun2@gmail.com","username":"zhongjun2"},"change_message_id":"6b7b3a11cfd8eae0845d7098370a095ccb541f4b","unresolved":false,"context_lines":[{"line_number":130,"context_line":"        )"},{"line_number":131,"context_line":""},{"line_number":132,"context_line":"        if model_type in ts_model_types:"},{"line_number":133,"context_line":"            if (fw_version.startswith(\"4.2\") or fw_version.startswith(\"4.3\")):"},{"line_number":134,"context_line":"                LOG.debug(\u0027Create TS API Executor\u0027)"},{"line_number":135,"context_line":"                # modify the pool name to pool index"},{"line_number":136,"context_line":"                self.configuration.qnap_poolname \u003d ("}],"source_content_type":"text/x-python","patch_set":4,"id":"ff82abbf_2103cf11","line":133,"range":{"start_line":133,"start_character":15,"end_line":133,"end_character":77},"updated":"2017-12-01 07:04:47.000000000","message":"Do you have to fix this too?\nhttps://review.openstack.org/#/c/509097/14/manila/share/drivers/qnap/qnap.py","commit_id":"7960258bb0361f256ad7d2a9ab23f9cd9c04abfc"},{"author":{"_account_id":26134,"name":"Chris Yang","email":"chrisyang@qnap.com","username":"chrisyang"},"change_message_id":"74cea0cc1e9c01d50d03ce99de29ca174bba3bfe","unresolved":false,"context_lines":[{"line_number":130,"context_line":"        )"},{"line_number":131,"context_line":""},{"line_number":132,"context_line":"        if model_type in ts_model_types:"},{"line_number":133,"context_line":"            if (fw_version.startswith(\"4.2\") or fw_version.startswith(\"4.3\")):"},{"line_number":134,"context_line":"                LOG.debug(\u0027Create TS API Executor\u0027)"},{"line_number":135,"context_line":"                # modify the pool name to pool index"},{"line_number":136,"context_line":"                self.configuration.qnap_poolname \u003d ("}],"source_content_type":"text/x-python","patch_set":4,"id":"ff82abbf_7cdbc04e","line":133,"range":{"start_line":133,"start_character":15,"end_line":133,"end_character":77},"in_reply_to":"ff82abbf_2103cf11","updated":"2017-12-01 07:33:33.000000000","message":"No, We don\u0027t. The firmware version reports \"4.2.x\" and \"4.3.x\". It just works fine now. I will roll back the change in #509097.","commit_id":"7960258bb0361f256ad7d2a9ab23f9cd9c04abfc"},{"author":{"_account_id":15100,"name":"zhongjun","email":"jun.zhongjun2@gmail.com","username":"zhongjun2"},"change_message_id":"6b7b3a11cfd8eae0845d7098370a095ccb541f4b","unresolved":false,"context_lines":[{"line_number":143,"context_line":"                    management_url\u003dself.configuration.qnap_management_url)"},{"line_number":144,"context_line":"        elif model_type in tes_model_types:"},{"line_number":145,"context_line":"            if \u0027TS\u0027 in internal_model_name:"},{"line_number":146,"context_line":"                if (fw_version.startswith(\"4.2\") or"},{"line_number":147,"context_line":"                        fw_version.startswith(\"4.3\")):"},{"line_number":148,"context_line":"                    LOG.debug(\u0027Create TS API Executor\u0027)"},{"line_number":149,"context_line":"                    # modify the pool name to pool index"},{"line_number":150,"context_line":"                    self.configuration.qnap_poolname \u003d ("}],"source_content_type":"text/x-python","patch_set":4,"id":"ff82abbf_9c0c843c","line":147,"range":{"start_line":146,"start_character":19,"end_line":147,"end_character":54},"updated":"2017-12-01 07:04:47.000000000","message":"https://review.openstack.org/#/c/509097/14/manila/share/drivers/qnap/qnap.py","commit_id":"7960258bb0361f256ad7d2a9ab23f9cd9c04abfc"},{"author":{"_account_id":26134,"name":"Chris Yang","email":"chrisyang@qnap.com","username":"chrisyang"},"change_message_id":"74cea0cc1e9c01d50d03ce99de29ca174bba3bfe","unresolved":false,"context_lines":[{"line_number":143,"context_line":"                    management_url\u003dself.configuration.qnap_management_url)"},{"line_number":144,"context_line":"        elif model_type in tes_model_types:"},{"line_number":145,"context_line":"            if \u0027TS\u0027 in internal_model_name:"},{"line_number":146,"context_line":"                if (fw_version.startswith(\"4.2\") or"},{"line_number":147,"context_line":"                        fw_version.startswith(\"4.3\")):"},{"line_number":148,"context_line":"                    LOG.debug(\u0027Create TS API Executor\u0027)"},{"line_number":149,"context_line":"                    # modify the pool name to pool index"},{"line_number":150,"context_line":"                    self.configuration.qnap_poolname \u003d ("}],"source_content_type":"text/x-python","patch_set":4,"id":"ff82abbf_bcbaa8de","line":147,"range":{"start_line":146,"start_character":19,"end_line":147,"end_character":54},"in_reply_to":"ff82abbf_9c0c843c","updated":"2017-12-01 07:33:33.000000000","message":"I will roll back the change in #509097.","commit_id":"7960258bb0361f256ad7d2a9ab23f9cd9c04abfc"},{"author":{"_account_id":15100,"name":"zhongjun","email":"jun.zhongjun2@gmail.com","username":"zhongjun2"},"change_message_id":"6b7b3a11cfd8eae0845d7098370a095ccb541f4b","unresolved":false,"context_lines":[{"line_number":154,"context_line":"                        username\u003dself.configuration.qnap_nas_login,"},{"line_number":155,"context_line":"                        password\u003dself.configuration.qnap_nas_password,"},{"line_number":156,"context_line":"                        management_url\u003dself.configuration.qnap_management_url)"},{"line_number":157,"context_line":"            elif \"1.1.2\" \u003c\u003d fw_version \u003c\u003d \"1.1.4\":"},{"line_number":158,"context_line":"                LOG.debug(\u0027Create ES API Executor\u0027)"},{"line_number":159,"context_line":"                return api.QnapAPIExecutor("},{"line_number":160,"context_line":"                    username\u003dself.configuration.qnap_nas_login,"}],"source_content_type":"text/x-python","patch_set":4,"id":"ff82abbf_fc6110d5","line":157,"range":{"start_line":157,"start_character":17,"end_line":157,"end_character":49},"updated":"2017-12-01 07:04:47.000000000","message":"What version do you really support it? \nif \"1.1.2\" \u003c\u003d fw_version \u003c\u003d \"1.1.4\":   The 1.1.4.0 is False\nif fw_version.startswith(\"1.1.4\")):  The 1.1.4.0 is True\nCould you add some boundary version tests?","commit_id":"7960258bb0361f256ad7d2a9ab23f9cd9c04abfc"},{"author":{"_account_id":26134,"name":"Chris Yang","email":"chrisyang@qnap.com","username":"chrisyang"},"change_message_id":"74cea0cc1e9c01d50d03ce99de29ca174bba3bfe","unresolved":false,"context_lines":[{"line_number":154,"context_line":"                        username\u003dself.configuration.qnap_nas_login,"},{"line_number":155,"context_line":"                        password\u003dself.configuration.qnap_nas_password,"},{"line_number":156,"context_line":"                        management_url\u003dself.configuration.qnap_management_url)"},{"line_number":157,"context_line":"            elif \"1.1.2\" \u003c\u003d fw_version \u003c\u003d \"1.1.4\":"},{"line_number":158,"context_line":"                LOG.debug(\u0027Create ES API Executor\u0027)"},{"line_number":159,"context_line":"                return api.QnapAPIExecutor("},{"line_number":160,"context_line":"                    username\u003dself.configuration.qnap_nas_login,"}],"source_content_type":"text/x-python","patch_set":4,"id":"ff82abbf_3ca1b896","line":157,"range":{"start_line":157,"start_character":17,"end_line":157,"end_character":49},"in_reply_to":"ff82abbf_fc6110d5","updated":"2017-12-01 07:33:33.000000000","message":"The firmware version of QES reports \"1.1.x\". Value like \"1.1.4.0\" will never show up. I will add some boundary version tests.","commit_id":"7960258bb0361f256ad7d2a9ab23f9cd9c04abfc"},{"author":{"_account_id":15100,"name":"zhongjun","email":"jun.zhongjun2@gmail.com","username":"zhongjun2"},"change_message_id":"6b7b3a11cfd8eae0845d7098370a095ccb541f4b","unresolved":false,"context_lines":[{"line_number":321,"context_line":"                     \u0027volName\u0027: create_share_name}"},{"line_number":322,"context_line":"        self.private_storage.update(share[\u0027id\u0027], _metadata)"},{"line_number":323,"context_line":""},{"line_number":324,"context_line":"        return self._get_location_path(create_share_name,"},{"line_number":325,"context_line":"                                       share[\u0027share_proto\u0027],"},{"line_number":326,"context_line":"                                       self.configuration.qnap_share_ip)"},{"line_number":327,"context_line":""},{"line_number":328,"context_line":"    @utils.synchronized(\u0027qnap-delete_share\u0027)"},{"line_number":329,"context_line":"    def delete_share(self, context, share, share_server\u003dNone):"}],"source_content_type":"text/x-python","patch_set":4,"id":"ff82abbf_1c8dd47a","line":326,"range":{"start_line":324,"start_character":15,"end_line":326,"end_character":72},"updated":"2017-12-01 07:04:47.000000000","message":"In code 299~312, you already checked the share is exist, then you check it again in _get_location_path?","commit_id":"7960258bb0361f256ad7d2a9ab23f9cd9c04abfc"},{"author":{"_account_id":26134,"name":"Chris Yang","email":"chrisyang@qnap.com","username":"chrisyang"},"change_message_id":"74cea0cc1e9c01d50d03ce99de29ca174bba3bfe","unresolved":false,"context_lines":[{"line_number":321,"context_line":"                     \u0027volName\u0027: create_share_name}"},{"line_number":322,"context_line":"        self.private_storage.update(share[\u0027id\u0027], _metadata)"},{"line_number":323,"context_line":""},{"line_number":324,"context_line":"        return self._get_location_path(create_share_name,"},{"line_number":325,"context_line":"                                       share[\u0027share_proto\u0027],"},{"line_number":326,"context_line":"                                       self.configuration.qnap_share_ip)"},{"line_number":327,"context_line":""},{"line_number":328,"context_line":"    @utils.synchronized(\u0027qnap-delete_share\u0027)"},{"line_number":329,"context_line":"    def delete_share(self, context, share, share_server\u003dNone):"}],"source_content_type":"text/x-python","patch_set":4,"id":"ff82abbf_fc74b000","line":326,"range":{"start_line":324,"start_character":15,"end_line":326,"end_character":72},"in_reply_to":"ff82abbf_1c8dd47a","updated":"2017-12-01 07:33:33.000000000","message":"Thanks, I will remove the one in _get_location_path().","commit_id":"7960258bb0361f256ad7d2a9ab23f9cd9c04abfc"},{"author":{"_account_id":15100,"name":"zhongjun","email":"jun.zhongjun2@gmail.com","username":"zhongjun2"},"change_message_id":"35aee5ba818e3bd0d2eabdd8853289397ec4b512","unresolved":false,"context_lines":[{"line_number":194,"context_line":"                {\u0027ifx\u0027: infix,"},{"line_number":195,"context_line":"                 \u0027time\u0027: timeutils.utcnow().strftime(\u0027%Y%m%d%H%M%S%f\u0027)})"},{"line_number":196,"context_line":""},{"line_number":197,"context_line":"    @utils.retry(exception\u003dexception.ShareBackendException,"},{"line_number":198,"context_line":"                 interval\u003d3,"},{"line_number":199,"context_line":"                 retries\u003d5)"},{"line_number":200,"context_line":"    def _get_location_path(self, share_name, share_proto, ip, vol_id):"},{"line_number":201,"context_line":"        if share_proto \u003d\u003d \u0027NFS\u0027:"},{"line_number":202,"context_line":"            vol \u003d self.api_executor.get_specific_volinfo(vol_id)"}],"source_content_type":"text/x-python","patch_set":5,"id":"df87a7cf_00280484","line":199,"range":{"start_line":197,"start_character":0,"end_line":199,"end_character":27},"updated":"2017-12-04 02:30:10.000000000","message":"remove?","commit_id":"3cf70428a5d22088f6e70e5b40d47cd9fa298b13"},{"author":{"_account_id":26134,"name":"Chris Yang","email":"chrisyang@qnap.com","username":"chrisyang"},"change_message_id":"3b33a3cabc1cc00831170b3dbd8cebe65e75c004","unresolved":false,"context_lines":[{"line_number":194,"context_line":"                {\u0027ifx\u0027: infix,"},{"line_number":195,"context_line":"                 \u0027time\u0027: timeutils.utcnow().strftime(\u0027%Y%m%d%H%M%S%f\u0027)})"},{"line_number":196,"context_line":""},{"line_number":197,"context_line":"    @utils.retry(exception\u003dexception.ShareBackendException,"},{"line_number":198,"context_line":"                 interval\u003d3,"},{"line_number":199,"context_line":"                 retries\u003d5)"},{"line_number":200,"context_line":"    def _get_location_path(self, share_name, share_proto, ip, vol_id):"},{"line_number":201,"context_line":"        if share_proto \u003d\u003d \u0027NFS\u0027:"},{"line_number":202,"context_line":"            vol \u003d self.api_executor.get_specific_volinfo(vol_id)"}],"source_content_type":"text/x-python","patch_set":5,"id":"df87a7cf_a03d98bc","line":199,"range":{"start_line":197,"start_character":0,"end_line":199,"end_character":27},"in_reply_to":"df87a7cf_00280484","updated":"2017-12-04 02:34:12.000000000","message":"Sure, I forgot about it. Will do.","commit_id":"3cf70428a5d22088f6e70e5b40d47cd9fa298b13"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"b0ed5a5d16f6bf70d88f6448198d200db88aca3d","unresolved":false,"context_lines":[{"line_number":285,"context_line":"            self.configuration.qnap_poolname,"},{"line_number":286,"context_line":"            create_share_name,"},{"line_number":287,"context_line":"            share_proto)"},{"line_number":288,"context_line":"        retryCount \u003d 5"},{"line_number":289,"context_line":"        retrySleepTime \u003d 5"},{"line_number":290,"context_line":"        while retryCount \u003e 0:"},{"line_number":291,"context_line":"            greenthread.sleep(retrySleepTime)"},{"line_number":292,"context_line":"            retryCount -\u003d 1"},{"line_number":293,"context_line":"            created_share \u003d self.api_executor.get_share_info("},{"line_number":294,"context_line":"                self.configuration.qnap_poolname,"},{"line_number":295,"context_line":"                vol_label\u003dcreate_share_name)"},{"line_number":296,"context_line":"            if created_share is None:"},{"line_number":297,"context_line":"                continue"},{"line_number":298,"context_line":"            break"},{"line_number":299,"context_line":"        if created_share is None:"},{"line_number":300,"context_line":"            msg \u003d _(\"Fail to create share %s on NAS.\") % create_share_name"},{"line_number":301,"context_line":"            LOG.error(msg)"}],"source_content_type":"text/x-python","patch_set":6,"id":"df87a7cf_d0c5d73d","line":298,"range":{"start_line":288,"start_character":0,"end_line":298,"end_character":17},"updated":"2017-12-05 18:46:11.000000000","message":"You could use the same retry method that is well tested and maintained instead of reimplementing here: https://github.com/openstack/manila/blob/8800e54/manila/utils.py#L442\n\nThat would mean separating this into a method of its own, checking whether the share has been created with retry.","commit_id":"fdc0a96b13d2953043af6577c0e83e850a4e77c9"},{"author":{"_account_id":26134,"name":"Chris Yang","email":"chrisyang@qnap.com","username":"chrisyang"},"change_message_id":"b24bc8973ae6d7167c04a05c15f11ef1501416ca","unresolved":false,"context_lines":[{"line_number":285,"context_line":"            self.configuration.qnap_poolname,"},{"line_number":286,"context_line":"            create_share_name,"},{"line_number":287,"context_line":"            share_proto)"},{"line_number":288,"context_line":"        retryCount \u003d 5"},{"line_number":289,"context_line":"        retrySleepTime \u003d 5"},{"line_number":290,"context_line":"        while retryCount \u003e 0:"},{"line_number":291,"context_line":"            greenthread.sleep(retrySleepTime)"},{"line_number":292,"context_line":"            retryCount -\u003d 1"},{"line_number":293,"context_line":"            created_share \u003d self.api_executor.get_share_info("},{"line_number":294,"context_line":"                self.configuration.qnap_poolname,"},{"line_number":295,"context_line":"                vol_label\u003dcreate_share_name)"},{"line_number":296,"context_line":"            if created_share is None:"},{"line_number":297,"context_line":"                continue"},{"line_number":298,"context_line":"            break"},{"line_number":299,"context_line":"        if created_share is None:"},{"line_number":300,"context_line":"            msg \u003d _(\"Fail to create share %s on NAS.\") % create_share_name"},{"line_number":301,"context_line":"            LOG.error(msg)"}],"source_content_type":"text/x-python","patch_set":6,"id":"df87a7cf_b4aa75cf","line":298,"range":{"start_line":288,"start_character":0,"end_line":298,"end_character":17},"in_reply_to":"df87a7cf_d0c5d73d","updated":"2017-12-06 10:11:25.000000000","message":"Done","commit_id":"fdc0a96b13d2953043af6577c0e83e850a4e77c9"}]}
