)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":38618,"name":"mengxiangzhi","email":"meng.xiangzhi@zte.com.cn","username":"mengxiangzhi10326440"},"change_message_id":"c0ab7a7e899aff42d15b7f3926ee4b932cffbf77","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":10,"id":"ac75b7cc_221d0177","updated":"2026-01-13 07:40:16.000000000","message":"Dear Mr. fossdev and Mr. zong:\n\n\n    Happy New Year!\n\n    I am a software development engineer from ZTE. We have recently developed a plugin for the company\u0027s B100 storage, and the corresponding code is now ready to be contributed to the open-source community. We kindly request your review as experts. If everything looks good, please proceed with the scoring and merging process. Thank you for your support!\n\n    The newly developed plugin code already complies with community standards, has been integrated and validated in the open-source version of the environment, and has successfully passed test cases including smoke, storage, and object-storage.\n\n    We look forward to your response. Wishing you a pleasant life and smooth work!\n\n\n\n    link: https://review.opendev.org/c/openstack/cinder/+/969207\n\n\n\n\n\n                                                                                                                                                                                                                Xiangzhi Meng\n\n                                                                                                                                                                                                                     2026.1.13","commit_id":"846a1531f5703fb09f3da77d049557769e4d32f1"},{"author":{"_account_id":38568,"name":"Xue.MingZhong","display_name":"ZTE storage CI","email":"coenocyte@hotmail.com","username":"xuemzh"},"change_message_id":"60968b3d782ed2194399af49b7e8b11b717b774d","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":10,"id":"069303f7_656c014a","updated":"2026-01-19 06:23:04.000000000","message":"recheck zte driver","commit_id":"846a1531f5703fb09f3da77d049557769e4d32f1"},{"author":{"_account_id":38568,"name":"Xue.MingZhong","display_name":"ZTE storage CI","email":"coenocyte@hotmail.com","username":"xuemzh"},"change_message_id":"7a99e8259da92e7f9813f6b70aef658483d575ac","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":10,"id":"7341ab06_d3835f89","updated":"2026-01-19 08:13:35.000000000","message":"recheck zte driver","commit_id":"846a1531f5703fb09f3da77d049557769e4d32f1"},{"author":{"_account_id":38568,"name":"Xue.MingZhong","display_name":"ZTE storage CI","email":"coenocyte@hotmail.com","username":"xuemzh"},"change_message_id":"87df8bd3b9866006415c1c2fcb5919fd13620e92","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":10,"id":"dd521a68_ab180362","updated":"2026-01-19 08:25:11.000000000","message":"recheck zte driver","commit_id":"846a1531f5703fb09f3da77d049557769e4d32f1"},{"author":{"_account_id":38568,"name":"Xue.MingZhong","display_name":"ZTE storage CI","email":"coenocyte@hotmail.com","username":"xuemzh"},"change_message_id":"9bbbc050f982ad00b02554c81574c8b91bf8c492","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":10,"id":"ef4d0a85_70e69f1e","updated":"2026-01-19 06:27:38.000000000","message":"recheck zte driver","commit_id":"846a1531f5703fb09f3da77d049557769e4d32f1"},{"author":{"_account_id":38568,"name":"Xue.MingZhong","display_name":"ZTE storage CI","email":"coenocyte@hotmail.com","username":"xuemzh"},"change_message_id":"2e46c0b28e53c3519080f39609f195510d8290e1","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":10,"id":"6a5ebe52_82fbe0f7","in_reply_to":"dd521a68_ab180362","updated":"2026-01-19 08:28:39.000000000","message":"Done","commit_id":"846a1531f5703fb09f3da77d049557769e4d32f1"},{"author":{"_account_id":38618,"name":"mengxiangzhi","email":"meng.xiangzhi@zte.com.cn","username":"mengxiangzhi10326440"},"change_message_id":"f285fa0309ff4bf2ee2ad15c8232ddcf6193d875","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":13,"id":"8a47f6ec_692ad63c","updated":"2026-02-05 11:12:04.000000000","message":"Dear Mr. Brian Rosmaita and Mr. Yian Zong:\n    I am a software development engineer from ZTE. We have recently developed a plugin for the company\u0027s B100 storage, and the corresponding code is now ready to be contributed to the open-source community. We kindly request your review as experts. If everything looks good, please proceed with the scoring and merging process. Thank you for your support!\n\n    The newly developed plugin code already complies with community standards, has been integrated and validated in the open-source version of the environment, and has successfully passed test cases including smoke, storage, and object-storage.\n\n    We look forward to your response. Wishing you a pleasant life and smooth work!","commit_id":"d1438decd4fa6f6ed21a2503326f83f48832ba14"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"8080d6819bc964ba71b80f5d666c4ba6dfce7d87","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":15,"id":"626955ab_70007e86","updated":"2026-03-04 18:12:46.000000000","message":"Does this contain LLM-generated code?","commit_id":"13e5ce833fd5ea176ee6d8cd759418b5aea1605f"},{"author":{"_account_id":38568,"name":"Xue.MingZhong","display_name":"ZTE storage CI","email":"coenocyte@hotmail.com","username":"xuemzh"},"change_message_id":"e5bd042e4cd69d8f79eaf01ee9200b97c48f71cb","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":24,"id":"4a25ed7b_814e704d","updated":"2026-03-18 07:36:28.000000000","message":"recheck zte driver","commit_id":"bc8c84d1ada6eb70b4c1865e3e89f580da9b7683"},{"author":{"_account_id":38618,"name":"mengxiangzhi","email":"meng.xiangzhi@zte.com.cn","username":"mengxiangzhi10326440"},"change_message_id":"a610df4ec04595018540612d09667bbfc2c1d33e","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":27,"id":"93c05edf_258b762d","updated":"2026-03-20 08:47:58.000000000","message":"recheck zte driver","commit_id":"de8a6a9b4b42473e9530852f1359a8a24e1bf7d1"},{"author":{"_account_id":34598,"name":"Manojkatari","email":"mkatari@redhat.com","username":"mkatari"},"change_message_id":"e0124eb37c82cb6219c6c77ec0dab82e001de89c","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":28,"id":"a45dac94_25d0635d","updated":"2026-03-26 09:09:53.000000000","message":"@interface.volumedriver decorator is required in classes for driver registration and official Cinder driver status.\n\nall cinder drivers use this decorator,so i think it should be added to maintain consistency.","commit_id":"d0ab726a1c9cb9290949192156d6ce915f8b5212"},{"author":{"_account_id":34598,"name":"Manojkatari","email":"mkatari@redhat.com","username":"mkatari"},"change_message_id":"c7aeba18071c806b975bd40e618d97b33f3c3f4d","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":28,"id":"5b6fbd64_69e2e19b","updated":"2026-03-25 09:08:05.000000000","message":"Also update the support matrix.\npls follow https://docs.openstack.org/cinder/latest/contributor/new_driver_checklist.html","commit_id":"d0ab726a1c9cb9290949192156d6ce915f8b5212"},{"author":{"_account_id":34598,"name":"Manojkatari","email":"mkatari@redhat.com","username":"mkatari"},"change_message_id":"3176feaef4131056d79c34ee46f589eb3ea6dd6f","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":28,"id":"8efef42e_1319158e","updated":"2026-03-25 08:56:32.000000000","message":"pls add release notes which explains about the new driver and protocols supported.","commit_id":"d0ab726a1c9cb9290949192156d6ce915f8b5212"},{"author":{"_account_id":38618,"name":"mengxiangzhi","email":"meng.xiangzhi@zte.com.cn","username":"mengxiangzhi10326440"},"change_message_id":"d9f9608d7c6c72ec19cd86564c3c6344bcd24e59","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":28,"id":"1f9cd35b_71885c93","in_reply_to":"5b6fbd64_69e2e19b","updated":"2026-04-07 05:37:46.000000000","message":"Thank you for your suggestion. We have updated the feature list and configuration description for the new driver in accordance with the community\u0027s requirements","commit_id":"d0ab726a1c9cb9290949192156d6ce915f8b5212"},{"author":{"_account_id":38618,"name":"mengxiangzhi","email":"meng.xiangzhi@zte.com.cn","username":"mengxiangzhi10326440"},"change_message_id":"d9f9608d7c6c72ec19cd86564c3c6344bcd24e59","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":28,"id":"15c733e6_81a4d879","in_reply_to":"a45dac94_25d0635d","updated":"2026-04-07 05:37:46.000000000","message":"Thank you, it has been resolved","commit_id":"d0ab726a1c9cb9290949192156d6ce915f8b5212"},{"author":{"_account_id":34598,"name":"Manojkatari","email":"mkatari@redhat.com","username":"mkatari"},"change_message_id":"e5a85218bd1e50350beeced276a91c5a382f3848","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":33,"id":"528447d8_38c3ab31","updated":"2026-04-13 06:45:19.000000000","message":"LGTM","commit_id":"a487fef8e7faa8211a70c3623979a55b57e213f8"},{"author":{"_account_id":38618,"name":"mengxiangzhi","email":"meng.xiangzhi@zte.com.cn","username":"mengxiangzhi10326440"},"change_message_id":"d9f9608d7c6c72ec19cd86564c3c6344bcd24e59","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":33,"id":"b96f8bd2_0628dad2","updated":"2026-04-07 05:37:46.000000000","message":"recheck zte driver","commit_id":"a487fef8e7faa8211a70c3623979a55b57e213f8"},{"author":{"_account_id":38618,"name":"mengxiangzhi","email":"meng.xiangzhi@zte.com.cn","username":"mengxiangzhi10326440"},"change_message_id":"2ee6aabcb8fab9a88b54243c64110bc140abfc01","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":34,"id":"67149273_843efa7d","updated":"2026-04-16 08:46:02.000000000","message":"recheck zte driver","commit_id":"e5477a63170545581194c3134385f683b8bdc995"},{"author":{"_account_id":38618,"name":"mengxiangzhi","email":"meng.xiangzhi@zte.com.cn","username":"mengxiangzhi10326440"},"change_message_id":"86d93ea4a8b5efdd6701b916cbcbb4a4cb8b9d67","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":34,"id":"9824a8aa_f6acdc7a","updated":"2026-04-16 10:49:29.000000000","message":"recheck zte driver","commit_id":"e5477a63170545581194c3134385f683b8bdc995"}],"cinder/volume/drivers/zte/vstorage/vstorage.py":[{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"16793ba2128713227bbf927919d134a4bab1d21c","unresolved":true,"context_lines":[{"line_number":455,"context_line":"        metadata[\u0027metadata\u0027] \u003d self._add_metadata(src_meta, dest_meta)"},{"line_number":456,"context_line":"        return metadata"},{"line_number":457,"context_line":""},{"line_number":458,"context_line":"# Started by AICoder, pid:186a4s438b38bc314f3e0a4590fe485cb590113e"},{"line_number":459,"context_line":"    def _initialize_connection(self, volume, connector, storage_protocol):"},{"line_number":460,"context_line":"        \"\"\"Map a volume to a host and return target nvme information.\"\"\""},{"line_number":461,"context_line":"        nqn \u003d connector[\u0027nqn\u0027]"}],"source_content_type":"text/x-python","patch_set":13,"id":"fc278854_b6929aeb","line":458,"updated":"2026-03-02 19:23:00.000000000","message":"Please see https://openinfra.org/legal/ai-policy and add relevant info to the commit message.","commit_id":"d1438decd4fa6f6ed21a2503326f83f48832ba14"},{"author":{"_account_id":38618,"name":"mengxiangzhi","email":"meng.xiangzhi@zte.com.cn","username":"mengxiangzhi10326440"},"change_message_id":"a610df4ec04595018540612d09667bbfc2c1d33e","unresolved":false,"context_lines":[{"line_number":455,"context_line":"        metadata[\u0027metadata\u0027] \u003d self._add_metadata(src_meta, dest_meta)"},{"line_number":456,"context_line":"        return metadata"},{"line_number":457,"context_line":""},{"line_number":458,"context_line":"# Started by AICoder, pid:186a4s438b38bc314f3e0a4590fe485cb590113e"},{"line_number":459,"context_line":"    def _initialize_connection(self, volume, connector, storage_protocol):"},{"line_number":460,"context_line":"        \"\"\"Map a volume to a host and return target nvme information.\"\"\""},{"line_number":461,"context_line":"        nqn \u003d connector[\u0027nqn\u0027]"}],"source_content_type":"text/x-python","patch_set":13,"id":"9631e3a8_149f8587","line":458,"in_reply_to":"fc278854_b6929aeb","updated":"2026-03-20 08:47:58.000000000","message":"Thank you for your review. In accordance with community guidelines, all relevant identifiers and code have been removed. AI-assisted development tools were used, followed by manual modifications and improvements. After debugging and testing, no issues remain.","commit_id":"d1438decd4fa6f6ed21a2503326f83f48832ba14"},{"author":{"_account_id":36171,"name":"jayaanand borra","display_name":"jayaanand borra","email":"jayaanand.borra@netapp.com","username":"jayaanan","status":"netapp"},"change_message_id":"ae9d3462bbe2aaa7546cea9c63f73663817a26d5","unresolved":true,"context_lines":[{"line_number":159,"context_line":"            \u0027pool\u0027: self.pool,"},{"line_number":160,"context_line":"            \u0027vendor_name\u0027: self.vendor_name,"},{"line_number":161,"context_line":"            \u0027user\u0027: self.user,"},{"line_number":162,"context_line":"            \u0027pwd\u0027: self.pwd,"},{"line_number":163,"context_line":"            \u0027gwnode_name\u0027: self.gwnode_name,"},{"line_number":164,"context_line":"            \u0027driver_use_ssl\u0027: self.driver_use_ssl,"},{"line_number":165,"context_line":"            \u0027verification\u0027: self.verification,"}],"source_content_type":"text/x-python","patch_set":23,"id":"4f2fd4ae_5606e2e9","line":162,"updated":"2026-03-17 05:07:59.000000000","message":"cleartext password in dict passed to RestClient. If i look from previous code self.pwd \u003d base64.b64decode(self.configuration.safe_get(\n    \u0027vstorage_pwd\u0027)).decode(\u0027utf-8\u0027). No encoding is present for passwd. Is this correct approach?","commit_id":"23b559c9ecf28457553008e2d0a051c3b917cde6"},{"author":{"_account_id":38618,"name":"mengxiangzhi","email":"meng.xiangzhi@zte.com.cn","username":"mengxiangzhi10326440"},"change_message_id":"a610df4ec04595018540612d09667bbfc2c1d33e","unresolved":false,"context_lines":[{"line_number":159,"context_line":"            \u0027pool\u0027: self.pool,"},{"line_number":160,"context_line":"            \u0027vendor_name\u0027: self.vendor_name,"},{"line_number":161,"context_line":"            \u0027user\u0027: self.user,"},{"line_number":162,"context_line":"            \u0027pwd\u0027: self.pwd,"},{"line_number":163,"context_line":"            \u0027gwnode_name\u0027: self.gwnode_name,"},{"line_number":164,"context_line":"            \u0027driver_use_ssl\u0027: self.driver_use_ssl,"},{"line_number":165,"context_line":"            \u0027verification\u0027: self.verification,"}],"source_content_type":"text/x-python","patch_set":23,"id":"85d678b9_5b193fb9","line":162,"in_reply_to":"4f2fd4ae_5606e2e9","updated":"2026-03-20 08:47:58.000000000","message":"Thank you for your suggestion. It has been revised to decrypt only when in use, to avoid the risk of inscription password leakage","commit_id":"23b559c9ecf28457553008e2d0a051c3b917cde6"},{"author":{"_account_id":36171,"name":"jayaanand borra","display_name":"jayaanand borra","email":"jayaanand.borra@netapp.com","username":"jayaanan","status":"netapp"},"change_message_id":"ae9d3462bbe2aaa7546cea9c63f73663817a26d5","unresolved":true,"context_lines":[{"line_number":284,"context_line":"        self.update_qos(new_qos, volume)"},{"line_number":285,"context_line":""},{"line_number":286,"context_line":"    @utils.synchronized("},{"line_number":287,"context_line":"        \"locked-vstorage-update-qos-{volume[\u0027id\u0027]}\", external\u003dTrue)"},{"line_number":288,"context_line":"    def update_qos(self, new_qos, volume):"},{"line_number":289,"context_line":"        vol_info \u003d self.RestClient.get_volume(volume)"},{"line_number":290,"context_line":"        if vol_info and vol_info.get(\u0027qos_stgy\u0027):"}],"source_content_type":"text/x-python","patch_set":23,"id":"379411b3_9b29f13a","line":287,"updated":"2026-03-17 05:07:59.000000000","message":"This is not f-string.String literal... so lock is always on same string.","commit_id":"23b559c9ecf28457553008e2d0a051c3b917cde6"},{"author":{"_account_id":38618,"name":"mengxiangzhi","email":"meng.xiangzhi@zte.com.cn","username":"mengxiangzhi10326440"},"change_message_id":"a610df4ec04595018540612d09667bbfc2c1d33e","unresolved":false,"context_lines":[{"line_number":284,"context_line":"        self.update_qos(new_qos, volume)"},{"line_number":285,"context_line":""},{"line_number":286,"context_line":"    @utils.synchronized("},{"line_number":287,"context_line":"        \"locked-vstorage-update-qos-{volume[\u0027id\u0027]}\", external\u003dTrue)"},{"line_number":288,"context_line":"    def update_qos(self, new_qos, volume):"},{"line_number":289,"context_line":"        vol_info \u003d self.RestClient.get_volume(volume)"},{"line_number":290,"context_line":"        if vol_info and vol_info.get(\u0027qos_stgy\u0027):"}],"source_content_type":"text/x-python","patch_set":23,"id":"f3c6066a_9121c0fd","line":287,"in_reply_to":"379411b3_9b29f13a","updated":"2026-03-20 08:47:58.000000000","message":"Thank you very much. The lock used indeed had issues, and it has been modified to use a coordination distributed lock","commit_id":"23b559c9ecf28457553008e2d0a051c3b917cde6"},{"author":{"_account_id":34598,"name":"Manojkatari","email":"mkatari@redhat.com","username":"mkatari"},"change_message_id":"e0124eb37c82cb6219c6c77ec0dab82e001de89c","unresolved":true,"context_lines":[{"line_number":25,"context_line":"from oslo_config import cfg"},{"line_number":26,"context_line":"from oslo_log import log as logging"},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"from cinder import coordination"},{"line_number":29,"context_line":"from cinder import exception"},{"line_number":30,"context_line":"try:"},{"line_number":31,"context_line":"    from cinder.i18n import _"}],"source_content_type":"text/x-python","patch_set":28,"id":"53cae22b_55d49f9f","line":28,"updated":"2026-03-26 09:09:53.000000000","message":"# add\nfrom cinder import interface","commit_id":"d0ab726a1c9cb9290949192156d6ce915f8b5212"},{"author":{"_account_id":38618,"name":"mengxiangzhi","email":"meng.xiangzhi@zte.com.cn","username":"mengxiangzhi10326440"},"change_message_id":"d9f9608d7c6c72ec19cd86564c3c6344bcd24e59","unresolved":false,"context_lines":[{"line_number":25,"context_line":"from oslo_config import cfg"},{"line_number":26,"context_line":"from oslo_log import log as logging"},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"from cinder import coordination"},{"line_number":29,"context_line":"from cinder import exception"},{"line_number":30,"context_line":"try:"},{"line_number":31,"context_line":"    from cinder.i18n import _"}],"source_content_type":"text/x-python","patch_set":28,"id":"f6a5cf59_9eebd844","line":28,"in_reply_to":"53cae22b_55d49f9f","updated":"2026-04-07 05:37:46.000000000","message":"Thank you, it has been resolved","commit_id":"d0ab726a1c9cb9290949192156d6ce915f8b5212"},{"author":{"_account_id":34598,"name":"Manojkatari","email":"mkatari@redhat.com","username":"mkatari"},"change_message_id":"e0124eb37c82cb6219c6c77ec0dab82e001de89c","unresolved":true,"context_lines":[{"line_number":506,"context_line":"        self.RestClient.terminate_connect(volume, map_group_name)"},{"line_number":507,"context_line":""},{"line_number":508,"context_line":""},{"line_number":509,"context_line":"class VstorageNvmeTcpDriver(BaseVstorageDriver):"},{"line_number":510,"context_line":"    def initialize_connection(self, volume, connector, initiator_data\u003dNone):"},{"line_number":511,"context_line":"        \"\"\"Map a volume to a host and return target nvme information.\"\"\""},{"line_number":512,"context_line":"        properties \u003d self._initialize_connection(volume, connector, \"tcp\")"}],"source_content_type":"text/x-python","patch_set":28,"id":"0761fafb_c6c49ebf","line":509,"updated":"2026-03-26 09:09:53.000000000","message":"@interface.volumedriver","commit_id":"d0ab726a1c9cb9290949192156d6ce915f8b5212"},{"author":{"_account_id":38618,"name":"mengxiangzhi","email":"meng.xiangzhi@zte.com.cn","username":"mengxiangzhi10326440"},"change_message_id":"d9f9608d7c6c72ec19cd86564c3c6344bcd24e59","unresolved":false,"context_lines":[{"line_number":506,"context_line":"        self.RestClient.terminate_connect(volume, map_group_name)"},{"line_number":507,"context_line":""},{"line_number":508,"context_line":""},{"line_number":509,"context_line":"class VstorageNvmeTcpDriver(BaseVstorageDriver):"},{"line_number":510,"context_line":"    def initialize_connection(self, volume, connector, initiator_data\u003dNone):"},{"line_number":511,"context_line":"        \"\"\"Map a volume to a host and return target nvme information.\"\"\""},{"line_number":512,"context_line":"        properties \u003d self._initialize_connection(volume, connector, \"tcp\")"}],"source_content_type":"text/x-python","patch_set":28,"id":"ab7bc15b_64dc7fbc","line":509,"in_reply_to":"0761fafb_c6c49ebf","updated":"2026-04-07 05:37:46.000000000","message":"Thank you, it has been resolved","commit_id":"d0ab726a1c9cb9290949192156d6ce915f8b5212"},{"author":{"_account_id":34598,"name":"Manojkatari","email":"mkatari@redhat.com","username":"mkatari"},"change_message_id":"e0124eb37c82cb6219c6c77ec0dab82e001de89c","unresolved":true,"context_lines":[{"line_number":524,"context_line":"        return self._stats"},{"line_number":525,"context_line":""},{"line_number":526,"context_line":""},{"line_number":527,"context_line":"class VstorageNvmeRdmaDriver(BaseVstorageDriver):"},{"line_number":528,"context_line":"    def initialize_connection(self, volume, connector, initiator_data\u003dNone):"},{"line_number":529,"context_line":"        \"\"\"Map a volume to a host and return target nvme information.\"\"\""},{"line_number":530,"context_line":"        properties \u003d self._initialize_connection(volume, connector, \"RoCEv2\")"}],"source_content_type":"text/x-python","patch_set":28,"id":"98c74aad_f7b7429e","line":527,"updated":"2026-03-26 09:09:53.000000000","message":"@interface.volumedriver","commit_id":"d0ab726a1c9cb9290949192156d6ce915f8b5212"},{"author":{"_account_id":38618,"name":"mengxiangzhi","email":"meng.xiangzhi@zte.com.cn","username":"mengxiangzhi10326440"},"change_message_id":"d9f9608d7c6c72ec19cd86564c3c6344bcd24e59","unresolved":false,"context_lines":[{"line_number":524,"context_line":"        return self._stats"},{"line_number":525,"context_line":""},{"line_number":526,"context_line":""},{"line_number":527,"context_line":"class VstorageNvmeRdmaDriver(BaseVstorageDriver):"},{"line_number":528,"context_line":"    def initialize_connection(self, volume, connector, initiator_data\u003dNone):"},{"line_number":529,"context_line":"        \"\"\"Map a volume to a host and return target nvme information.\"\"\""},{"line_number":530,"context_line":"        properties \u003d self._initialize_connection(volume, connector, \"RoCEv2\")"}],"source_content_type":"text/x-python","patch_set":28,"id":"eabfd174_bd95976a","line":527,"in_reply_to":"98c74aad_f7b7429e","updated":"2026-04-07 05:37:46.000000000","message":"Thank you, it has been resolved","commit_id":"d0ab726a1c9cb9290949192156d6ce915f8b5212"},{"author":{"_account_id":34598,"name":"Manojkatari","email":"mkatari@redhat.com","username":"mkatari"},"change_message_id":"e0124eb37c82cb6219c6c77ec0dab82e001de89c","unresolved":true,"context_lines":[{"line_number":776,"context_line":"        raise exception.VolumeDriverException(message\u003derr_msg)"},{"line_number":777,"context_line":""},{"line_number":778,"context_line":""},{"line_number":779,"context_line":"class VstorageDriver(VstorageMetroDriver, BaseVstorageDriver):"},{"line_number":780,"context_line":"    BASE_DRIVER \u003d BaseVstorageDriver"},{"line_number":781,"context_line":""},{"line_number":782,"context_line":""}],"source_content_type":"text/x-python","patch_set":28,"id":"ab3e7c81_ac30e9d6","line":779,"updated":"2026-03-26 09:09:53.000000000","message":"@interface.volumedriver","commit_id":"d0ab726a1c9cb9290949192156d6ce915f8b5212"},{"author":{"_account_id":38618,"name":"mengxiangzhi","email":"meng.xiangzhi@zte.com.cn","username":"mengxiangzhi10326440"},"change_message_id":"d9f9608d7c6c72ec19cd86564c3c6344bcd24e59","unresolved":false,"context_lines":[{"line_number":776,"context_line":"        raise exception.VolumeDriverException(message\u003derr_msg)"},{"line_number":777,"context_line":""},{"line_number":778,"context_line":""},{"line_number":779,"context_line":"class VstorageDriver(VstorageMetroDriver, BaseVstorageDriver):"},{"line_number":780,"context_line":"    BASE_DRIVER \u003d BaseVstorageDriver"},{"line_number":781,"context_line":""},{"line_number":782,"context_line":""}],"source_content_type":"text/x-python","patch_set":28,"id":"c4a2fc2d_46c7602c","line":779,"in_reply_to":"ab3e7c81_ac30e9d6","updated":"2026-04-07 05:37:46.000000000","message":"Thank you, it has been resolved","commit_id":"d0ab726a1c9cb9290949192156d6ce915f8b5212"},{"author":{"_account_id":34598,"name":"Manojkatari","email":"mkatari@redhat.com","username":"mkatari"},"change_message_id":"e0124eb37c82cb6219c6c77ec0dab82e001de89c","unresolved":true,"context_lines":[{"line_number":780,"context_line":"    BASE_DRIVER \u003d BaseVstorageDriver"},{"line_number":781,"context_line":""},{"line_number":782,"context_line":""},{"line_number":783,"context_line":"class VstorageFCDriver(VstorageMetroDriver, BaseVstorageFCDriver):"},{"line_number":784,"context_line":"    BASE_DRIVER \u003d BaseVstorageFCDriver"}],"source_content_type":"text/x-python","patch_set":28,"id":"52e18b9f_5186707d","line":783,"updated":"2026-03-26 09:09:53.000000000","message":"@interface.volumedriver","commit_id":"d0ab726a1c9cb9290949192156d6ce915f8b5212"},{"author":{"_account_id":38618,"name":"mengxiangzhi","email":"meng.xiangzhi@zte.com.cn","username":"mengxiangzhi10326440"},"change_message_id":"d9f9608d7c6c72ec19cd86564c3c6344bcd24e59","unresolved":false,"context_lines":[{"line_number":780,"context_line":"    BASE_DRIVER \u003d BaseVstorageDriver"},{"line_number":781,"context_line":""},{"line_number":782,"context_line":""},{"line_number":783,"context_line":"class VstorageFCDriver(VstorageMetroDriver, BaseVstorageFCDriver):"},{"line_number":784,"context_line":"    BASE_DRIVER \u003d BaseVstorageFCDriver"}],"source_content_type":"text/x-python","patch_set":28,"id":"be943cb9_5a375a5b","line":783,"in_reply_to":"52e18b9f_5186707d","updated":"2026-04-07 05:37:46.000000000","message":"Thank you, it has been resolved","commit_id":"d0ab726a1c9cb9290949192156d6ce915f8b5212"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"bc70a8b823287357c6e3d2d2373d69aa15d7e681","unresolved":true,"context_lines":[{"line_number":48,"context_line":"               help\u003d\u0027vstorage pool_name\u0027),"},{"line_number":49,"context_line":"    cfg.StrOpt(\u0027vstorage_user\u0027,"},{"line_number":50,"context_line":"               help\u003d\u0027vstorage_user\u0027),"},{"line_number":51,"context_line":"    cfg.StrOpt(\u0027vstorage_pwd\u0027,"},{"line_number":52,"context_line":"               secret\u003dTrue,"},{"line_number":53,"context_line":"               help\u003d\u0027vstorage_pwd\u0027),"},{"line_number":54,"context_line":"    cfg.StrOpt(\u0027vstorage_gwnode_name\u0027,"}],"source_content_type":"text/x-python","patch_set":33,"id":"2736027b_419a6bac","line":51,"updated":"2026-04-14 20:40:45.000000000","message":"This should be renamed to vstorage_pwd -- all other drivers are calling this \"password\" instead of \"pwd\".\n\nBut, why duplicate these options into the driver and not just use san_login/san_password?","commit_id":"a487fef8e7faa8211a70c3623979a55b57e213f8"},{"author":{"_account_id":38618,"name":"mengxiangzhi","email":"meng.xiangzhi@zte.com.cn","username":"mengxiangzhi10326440"},"change_message_id":"da61f3dd3ce8497fc37df380622bc761ef582641","unresolved":false,"context_lines":[{"line_number":48,"context_line":"               help\u003d\u0027vstorage pool_name\u0027),"},{"line_number":49,"context_line":"    cfg.StrOpt(\u0027vstorage_user\u0027,"},{"line_number":50,"context_line":"               help\u003d\u0027vstorage_user\u0027),"},{"line_number":51,"context_line":"    cfg.StrOpt(\u0027vstorage_pwd\u0027,"},{"line_number":52,"context_line":"               secret\u003dTrue,"},{"line_number":53,"context_line":"               help\u003d\u0027vstorage_pwd\u0027),"},{"line_number":54,"context_line":"    cfg.StrOpt(\u0027vstorage_gwnode_name\u0027,"}],"source_content_type":"text/x-python","patch_set":33,"id":"5ea8d3da_8c70202f","line":51,"in_reply_to":"2736027b_419a6bac","updated":"2026-04-15 08:50:25.000000000","message":"Thank you for your suggestion. \u0027vstorage_pwd\u0027 is a storage configuration item and will not be modified","commit_id":"a487fef8e7faa8211a70c3623979a55b57e213f8"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"bc70a8b823287357c6e3d2d2373d69aa15d7e681","unresolved":true,"context_lines":[{"line_number":62,"context_line":"                     \u0027If False, use http for connection to backend storage.\u0027),"},{"line_number":63,"context_line":"    cfg.BoolOpt(\u0027vstorage_verification\u0027,"},{"line_number":64,"context_line":"                default\u003dFalse,"},{"line_number":65,"context_line":"                help\u003d\u0027If True, do verification,\u0027"},{"line_number":66,"context_line":"                     \u0027If False, do not verification.\u0027),"},{"line_number":67,"context_line":"    cfg.BoolOpt(\u0027vstorage_two_way_authentication\u0027,"},{"line_number":68,"context_line":"                default\u003dFalse,"}],"source_content_type":"text/x-python","patch_set":33,"id":"ad7323bf_bd73084b","line":65,"updated":"2026-04-14 20:40:45.000000000","message":"It is not clear what this option does from the description.","commit_id":"a487fef8e7faa8211a70c3623979a55b57e213f8"},{"author":{"_account_id":38618,"name":"mengxiangzhi","email":"meng.xiangzhi@zte.com.cn","username":"mengxiangzhi10326440"},"change_message_id":"da61f3dd3ce8497fc37df380622bc761ef582641","unresolved":false,"context_lines":[{"line_number":62,"context_line":"                     \u0027If False, use http for connection to backend storage.\u0027),"},{"line_number":63,"context_line":"    cfg.BoolOpt(\u0027vstorage_verification\u0027,"},{"line_number":64,"context_line":"                default\u003dFalse,"},{"line_number":65,"context_line":"                help\u003d\u0027If True, do verification,\u0027"},{"line_number":66,"context_line":"                     \u0027If False, do not verification.\u0027),"},{"line_number":67,"context_line":"    cfg.BoolOpt(\u0027vstorage_two_way_authentication\u0027,"},{"line_number":68,"context_line":"                default\u003dFalse,"}],"source_content_type":"text/x-python","patch_set":33,"id":"ec1e0ccc_8f120e57","line":65,"in_reply_to":"ad7323bf_bd73084b","updated":"2026-04-15 08:50:25.000000000","message":"Thank you for your suggestion. \u0027vstorage_verification\u0027 is used to determine whether to perform certificate verification, and modifications have been made","commit_id":"a487fef8e7faa8211a70c3623979a55b57e213f8"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"bc70a8b823287357c6e3d2d2373d69aa15d7e681","unresolved":true,"context_lines":[{"line_number":83,"context_line":"    cfg.StrOpt(\u0027vstorage_crl_file_path\u0027,"},{"line_number":84,"context_line":"               default\u003dNone,"},{"line_number":85,"context_line":"               help\u003d\u0027File path of peer CRL.\u0027),"},{"line_number":86,"context_line":"    cfg.BoolOpt(\u0027linked_clone\u0027,"},{"line_number":87,"context_line":"                default\u003dTrue,"},{"line_number":88,"context_line":"                help\u003d\u0027Whether create clone volume linked or not.\u0027),"},{"line_number":89,"context_line":"    cfg.StrOpt(\u0027vstorage_metro_backend\u0027,"}],"source_content_type":"text/x-python","patch_set":33,"id":"bca390ad_9efcaa36","line":86,"updated":"2026-04-14 20:40:45.000000000","message":"Should be named \"vstorage_linked_clone\".","commit_id":"a487fef8e7faa8211a70c3623979a55b57e213f8"},{"author":{"_account_id":38618,"name":"mengxiangzhi","email":"meng.xiangzhi@zte.com.cn","username":"mengxiangzhi10326440"},"change_message_id":"da61f3dd3ce8497fc37df380622bc761ef582641","unresolved":false,"context_lines":[{"line_number":83,"context_line":"    cfg.StrOpt(\u0027vstorage_crl_file_path\u0027,"},{"line_number":84,"context_line":"               default\u003dNone,"},{"line_number":85,"context_line":"               help\u003d\u0027File path of peer CRL.\u0027),"},{"line_number":86,"context_line":"    cfg.BoolOpt(\u0027linked_clone\u0027,"},{"line_number":87,"context_line":"                default\u003dTrue,"},{"line_number":88,"context_line":"                help\u003d\u0027Whether create clone volume linked or not.\u0027),"},{"line_number":89,"context_line":"    cfg.StrOpt(\u0027vstorage_metro_backend\u0027,"}],"source_content_type":"text/x-python","patch_set":33,"id":"5a5ea450_fcea9d22","line":86,"in_reply_to":"bca390ad_9efcaa36","updated":"2026-04-15 08:50:25.000000000","message":"Thank you for your suggestion. `linked_clone` is used to control whether to perform chained cloning. The configuration items are located under the corresponding storage backend segment. There is no need to add the `vstorage` prefix to every configuration item. Moreover, if modifications have a wide impact, the entire TECS side needs to be adapted","commit_id":"a487fef8e7faa8211a70c3623979a55b57e213f8"}],"cinder/volume/drivers/zte/vstorage/vstorage_client.py":[{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"8080d6819bc964ba71b80f5d666c4ba6dfce7d87","unresolved":true,"context_lines":[{"line_number":131,"context_line":"                         \"url:%(url)s\")"},{"line_number":132,"context_line":"                       % {\u0027err\u0027: err, \u0027url\u0027: request.url})"},{"line_number":133,"context_line":"            LOG.error(err_msg)"},{"line_number":134,"context_line":"            raise exception.CinderException(err_msg)"},{"line_number":135,"context_line":""},{"line_number":136,"context_line":"    def _restful_get(self, url, token, timeout\u003d300):"},{"line_number":137,"context_line":"        \"\"\"get api by method GET\"\"\""}],"source_content_type":"text/x-python","patch_set":15,"id":"23ff7cd3_fc63b4a9","line":134,"range":{"start_line":134,"start_character":28,"end_line":134,"end_character":43},"updated":"2026-03-04 18:12:46.000000000","message":"Should raise VolumeDriverException here instead of CinderException, CinderException is too broad.","commit_id":"13e5ce833fd5ea176ee6d8cd759418b5aea1605f"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"3e83ca61f4ade113094907f1fec4f097218e5799","unresolved":false,"context_lines":[{"line_number":131,"context_line":"                         \"url:%(url)s\")"},{"line_number":132,"context_line":"                       % {\u0027err\u0027: err, \u0027url\u0027: request.url})"},{"line_number":133,"context_line":"            LOG.error(err_msg)"},{"line_number":134,"context_line":"            raise exception.CinderException(err_msg)"},{"line_number":135,"context_line":""},{"line_number":136,"context_line":"    def _restful_get(self, url, token, timeout\u003d300):"},{"line_number":137,"context_line":"        \"\"\"get api by method GET\"\"\""}],"source_content_type":"text/x-python","patch_set":15,"id":"977a4f2b_444b59e7","line":134,"range":{"start_line":134,"start_character":28,"end_line":134,"end_character":43},"in_reply_to":"23ff7cd3_fc63b4a9","updated":"2026-03-05 14:50:37.000000000","message":"Done","commit_id":"13e5ce833fd5ea176ee6d8cd759418b5aea1605f"},{"author":{"_account_id":38618,"name":"mengxiangzhi","email":"meng.xiangzhi@zte.com.cn","username":"mengxiangzhi10326440"},"change_message_id":"a610df4ec04595018540612d09667bbfc2c1d33e","unresolved":false,"context_lines":[{"line_number":131,"context_line":"                         \"url:%(url)s\")"},{"line_number":132,"context_line":"                       % {\u0027err\u0027: err, \u0027url\u0027: request.url})"},{"line_number":133,"context_line":"            LOG.error(err_msg)"},{"line_number":134,"context_line":"            raise exception.CinderException(err_msg)"},{"line_number":135,"context_line":""},{"line_number":136,"context_line":"    def _restful_get(self, url, token, timeout\u003d300):"},{"line_number":137,"context_line":"        \"\"\"get api by method GET\"\"\""}],"source_content_type":"text/x-python","patch_set":15,"id":"672a59f1_fe1c7b4d","line":134,"range":{"start_line":134,"start_character":28,"end_line":134,"end_character":43},"in_reply_to":"23ff7cd3_fc63b4a9","updated":"2026-03-20 08:47:58.000000000","message":"Thank you again. The relevant exception has been modified to VolumeDriverException as per your suggestion","commit_id":"13e5ce833fd5ea176ee6d8cd759418b5aea1605f"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"8080d6819bc964ba71b80f5d666c4ba6dfce7d87","unresolved":true,"context_lines":[{"line_number":146,"context_line":"                           % {\u0027code\u0027: ret[\"ret\"],"},{"line_number":147,"context_line":"                              \u0027msg\u0027: ret[\"err_msg\"]})"},{"line_number":148,"context_line":"                LOG.error(err_msg)"},{"line_number":149,"context_line":"                raise exception.CinderException(err_msg)"},{"line_number":150,"context_line":"            return ret"},{"line_number":151,"context_line":"        except Exception as err:"},{"line_number":152,"context_line":"            err_msg \u003d (_(\"Get Request error: %(err)s, \""}],"source_content_type":"text/x-python","patch_set":15,"id":"52d21b31_0b48abaa","line":149,"updated":"2026-03-04 18:12:46.000000000","message":"VolumeDriverException","commit_id":"13e5ce833fd5ea176ee6d8cd759418b5aea1605f"},{"author":{"_account_id":38618,"name":"mengxiangzhi","email":"meng.xiangzhi@zte.com.cn","username":"mengxiangzhi10326440"},"change_message_id":"a610df4ec04595018540612d09667bbfc2c1d33e","unresolved":false,"context_lines":[{"line_number":146,"context_line":"                           % {\u0027code\u0027: ret[\"ret\"],"},{"line_number":147,"context_line":"                              \u0027msg\u0027: ret[\"err_msg\"]})"},{"line_number":148,"context_line":"                LOG.error(err_msg)"},{"line_number":149,"context_line":"                raise exception.CinderException(err_msg)"},{"line_number":150,"context_line":"            return ret"},{"line_number":151,"context_line":"        except Exception as err:"},{"line_number":152,"context_line":"            err_msg \u003d (_(\"Get Request error: %(err)s, \""}],"source_content_type":"text/x-python","patch_set":15,"id":"0ff00392_c8e86282","line":149,"in_reply_to":"52d21b31_0b48abaa","updated":"2026-03-20 08:47:58.000000000","message":"Done","commit_id":"13e5ce833fd5ea176ee6d8cd759418b5aea1605f"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"3e83ca61f4ade113094907f1fec4f097218e5799","unresolved":false,"context_lines":[{"line_number":146,"context_line":"                           % {\u0027code\u0027: ret[\"ret\"],"},{"line_number":147,"context_line":"                              \u0027msg\u0027: ret[\"err_msg\"]})"},{"line_number":148,"context_line":"                LOG.error(err_msg)"},{"line_number":149,"context_line":"                raise exception.CinderException(err_msg)"},{"line_number":150,"context_line":"            return ret"},{"line_number":151,"context_line":"        except Exception as err:"},{"line_number":152,"context_line":"            err_msg \u003d (_(\"Get Request error: %(err)s, \""}],"source_content_type":"text/x-python","patch_set":15,"id":"7f42118f_17c6b852","line":149,"in_reply_to":"52d21b31_0b48abaa","updated":"2026-03-05 14:50:37.000000000","message":"Done","commit_id":"13e5ce833fd5ea176ee6d8cd759418b5aea1605f"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"8080d6819bc964ba71b80f5d666c4ba6dfce7d87","unresolved":true,"context_lines":[{"line_number":153,"context_line":"                         \"url:%(url)s, res: %(res)s\") % {"},{"line_number":154,"context_line":"                \u0027err\u0027: err, \u0027url\u0027: url, \u0027res\u0027: str(response)})"},{"line_number":155,"context_line":"            LOG.error(err_msg)"},{"line_number":156,"context_line":"            raise exception.CinderException(err_msg)"},{"line_number":157,"context_line":""},{"line_number":158,"context_line":"    def _restful_get_no_raise(self, url, token, timeout\u003d300):"},{"line_number":159,"context_line":"        \"\"\"get api by method GET\"\"\""}],"source_content_type":"text/x-python","patch_set":15,"id":"949aaeac_90515996","line":156,"updated":"2026-03-04 18:12:46.000000000","message":"VolumeDriverException","commit_id":"13e5ce833fd5ea176ee6d8cd759418b5aea1605f"},{"author":{"_account_id":38618,"name":"mengxiangzhi","email":"meng.xiangzhi@zte.com.cn","username":"mengxiangzhi10326440"},"change_message_id":"a610df4ec04595018540612d09667bbfc2c1d33e","unresolved":false,"context_lines":[{"line_number":153,"context_line":"                         \"url:%(url)s, res: %(res)s\") % {"},{"line_number":154,"context_line":"                \u0027err\u0027: err, \u0027url\u0027: url, \u0027res\u0027: str(response)})"},{"line_number":155,"context_line":"            LOG.error(err_msg)"},{"line_number":156,"context_line":"            raise exception.CinderException(err_msg)"},{"line_number":157,"context_line":""},{"line_number":158,"context_line":"    def _restful_get_no_raise(self, url, token, timeout\u003d300):"},{"line_number":159,"context_line":"        \"\"\"get api by method GET\"\"\""}],"source_content_type":"text/x-python","patch_set":15,"id":"9ea176b0_77bb1eb3","line":156,"in_reply_to":"949aaeac_90515996","updated":"2026-03-20 08:47:58.000000000","message":"Done","commit_id":"13e5ce833fd5ea176ee6d8cd759418b5aea1605f"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"3e83ca61f4ade113094907f1fec4f097218e5799","unresolved":false,"context_lines":[{"line_number":153,"context_line":"                         \"url:%(url)s, res: %(res)s\") % {"},{"line_number":154,"context_line":"                \u0027err\u0027: err, \u0027url\u0027: url, \u0027res\u0027: str(response)})"},{"line_number":155,"context_line":"            LOG.error(err_msg)"},{"line_number":156,"context_line":"            raise exception.CinderException(err_msg)"},{"line_number":157,"context_line":""},{"line_number":158,"context_line":"    def _restful_get_no_raise(self, url, token, timeout\u003d300):"},{"line_number":159,"context_line":"        \"\"\"get api by method GET\"\"\""}],"source_content_type":"text/x-python","patch_set":15,"id":"f7cb3238_bda89135","line":156,"in_reply_to":"949aaeac_90515996","updated":"2026-03-05 14:50:37.000000000","message":"Done","commit_id":"13e5ce833fd5ea176ee6d8cd759418b5aea1605f"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"8080d6819bc964ba71b80f5d666c4ba6dfce7d87","unresolved":true,"context_lines":[{"line_number":168,"context_line":"            err_msg \u003d (_(\"Get Request error: %(err)s, \""},{"line_number":169,"context_line":"                         \"url:%(url)s\") % {\u0027err\u0027: err, \u0027url\u0027: url})"},{"line_number":170,"context_line":"            LOG.error(err_msg)"},{"line_number":171,"context_line":"            raise exception.CinderException(err_msg)"},{"line_number":172,"context_line":""},{"line_number":173,"context_line":"    def _restful_post(self, url, token, values, timeout\u003d300):"},{"line_number":174,"context_line":"        \"\"\"get api by method POST\"\"\""}],"source_content_type":"text/x-python","patch_set":15,"id":"5bd77263_e43b2dec","line":171,"updated":"2026-03-04 18:12:46.000000000","message":"VolumeDriverException","commit_id":"13e5ce833fd5ea176ee6d8cd759418b5aea1605f"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"3e83ca61f4ade113094907f1fec4f097218e5799","unresolved":false,"context_lines":[{"line_number":168,"context_line":"            err_msg \u003d (_(\"Get Request error: %(err)s, \""},{"line_number":169,"context_line":"                         \"url:%(url)s\") % {\u0027err\u0027: err, \u0027url\u0027: url})"},{"line_number":170,"context_line":"            LOG.error(err_msg)"},{"line_number":171,"context_line":"            raise exception.CinderException(err_msg)"},{"line_number":172,"context_line":""},{"line_number":173,"context_line":"    def _restful_post(self, url, token, values, timeout\u003d300):"},{"line_number":174,"context_line":"        \"\"\"get api by method POST\"\"\""}],"source_content_type":"text/x-python","patch_set":15,"id":"c4c760b8_22ca8208","line":171,"in_reply_to":"5bd77263_e43b2dec","updated":"2026-03-05 14:50:37.000000000","message":"Done","commit_id":"13e5ce833fd5ea176ee6d8cd759418b5aea1605f"},{"author":{"_account_id":38618,"name":"mengxiangzhi","email":"meng.xiangzhi@zte.com.cn","username":"mengxiangzhi10326440"},"change_message_id":"a610df4ec04595018540612d09667bbfc2c1d33e","unresolved":false,"context_lines":[{"line_number":168,"context_line":"            err_msg \u003d (_(\"Get Request error: %(err)s, \""},{"line_number":169,"context_line":"                         \"url:%(url)s\") % {\u0027err\u0027: err, \u0027url\u0027: url})"},{"line_number":170,"context_line":"            LOG.error(err_msg)"},{"line_number":171,"context_line":"            raise exception.CinderException(err_msg)"},{"line_number":172,"context_line":""},{"line_number":173,"context_line":"    def _restful_post(self, url, token, values, timeout\u003d300):"},{"line_number":174,"context_line":"        \"\"\"get api by method POST\"\"\""}],"source_content_type":"text/x-python","patch_set":15,"id":"e69561d7_9780a856","line":171,"in_reply_to":"5bd77263_e43b2dec","updated":"2026-03-20 08:47:58.000000000","message":"Done","commit_id":"13e5ce833fd5ea176ee6d8cd759418b5aea1605f"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"8080d6819bc964ba71b80f5d666c4ba6dfce7d87","unresolved":true,"context_lines":[{"line_number":184,"context_line":"                         \"url:%(url)s, res:%(res)s\")"},{"line_number":185,"context_line":"                       % {\u0027err\u0027: err, \u0027url\u0027: url, \u0027res\u0027: str(response)})"},{"line_number":186,"context_line":"            LOG.error(err_msg)"},{"line_number":187,"context_line":"            raise exception.CinderException(err_msg)"},{"line_number":188,"context_line":""},{"line_number":189,"context_line":"    def _restful_delete(self, url, token, timeout\u003d300):"},{"line_number":190,"context_line":"        \"\"\"get api by method DELETE\"\"\""}],"source_content_type":"text/x-python","patch_set":15,"id":"c9a51115_5d3a000d","line":187,"updated":"2026-03-04 18:12:46.000000000","message":"VolumeDriverException","commit_id":"13e5ce833fd5ea176ee6d8cd759418b5aea1605f"},{"author":{"_account_id":38618,"name":"mengxiangzhi","email":"meng.xiangzhi@zte.com.cn","username":"mengxiangzhi10326440"},"change_message_id":"a610df4ec04595018540612d09667bbfc2c1d33e","unresolved":false,"context_lines":[{"line_number":184,"context_line":"                         \"url:%(url)s, res:%(res)s\")"},{"line_number":185,"context_line":"                       % {\u0027err\u0027: err, \u0027url\u0027: url, \u0027res\u0027: str(response)})"},{"line_number":186,"context_line":"            LOG.error(err_msg)"},{"line_number":187,"context_line":"            raise exception.CinderException(err_msg)"},{"line_number":188,"context_line":""},{"line_number":189,"context_line":"    def _restful_delete(self, url, token, timeout\u003d300):"},{"line_number":190,"context_line":"        \"\"\"get api by method DELETE\"\"\""}],"source_content_type":"text/x-python","patch_set":15,"id":"3066c1e8_9fa3972e","line":187,"in_reply_to":"c9a51115_5d3a000d","updated":"2026-03-20 08:47:58.000000000","message":"Done","commit_id":"13e5ce833fd5ea176ee6d8cd759418b5aea1605f"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"3e83ca61f4ade113094907f1fec4f097218e5799","unresolved":false,"context_lines":[{"line_number":184,"context_line":"                         \"url:%(url)s, res:%(res)s\")"},{"line_number":185,"context_line":"                       % {\u0027err\u0027: err, \u0027url\u0027: url, \u0027res\u0027: str(response)})"},{"line_number":186,"context_line":"            LOG.error(err_msg)"},{"line_number":187,"context_line":"            raise exception.CinderException(err_msg)"},{"line_number":188,"context_line":""},{"line_number":189,"context_line":"    def _restful_delete(self, url, token, timeout\u003d300):"},{"line_number":190,"context_line":"        \"\"\"get api by method DELETE\"\"\""}],"source_content_type":"text/x-python","patch_set":15,"id":"5aea6cc5_6ce41b87","line":187,"in_reply_to":"c9a51115_5d3a000d","updated":"2026-03-05 14:50:37.000000000","message":"Done","commit_id":"13e5ce833fd5ea176ee6d8cd759418b5aea1605f"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"8080d6819bc964ba71b80f5d666c4ba6dfce7d87","unresolved":true,"context_lines":[{"line_number":199,"context_line":"                         \"url:%(url)s, res:%(res)s\")"},{"line_number":200,"context_line":"                       % {\u0027err\u0027: err, \u0027url\u0027: url, \u0027res\u0027: str(response)})"},{"line_number":201,"context_line":"            LOG.error(err_msg)"},{"line_number":202,"context_line":"            raise exception.CinderException(err_msg)"},{"line_number":203,"context_line":""},{"line_number":204,"context_line":"    def _restful_put(self, url, token, values, timeout\u003d300):"},{"line_number":205,"context_line":"        \"\"\"get api by method PUT \"\"\""}],"source_content_type":"text/x-python","patch_set":15,"id":"d154d059_cfcaa45f","line":202,"updated":"2026-03-04 18:12:46.000000000","message":"VolumeDriverException","commit_id":"13e5ce833fd5ea176ee6d8cd759418b5aea1605f"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"3e83ca61f4ade113094907f1fec4f097218e5799","unresolved":false,"context_lines":[{"line_number":199,"context_line":"                         \"url:%(url)s, res:%(res)s\")"},{"line_number":200,"context_line":"                       % {\u0027err\u0027: err, \u0027url\u0027: url, \u0027res\u0027: str(response)})"},{"line_number":201,"context_line":"            LOG.error(err_msg)"},{"line_number":202,"context_line":"            raise exception.CinderException(err_msg)"},{"line_number":203,"context_line":""},{"line_number":204,"context_line":"    def _restful_put(self, url, token, values, timeout\u003d300):"},{"line_number":205,"context_line":"        \"\"\"get api by method PUT \"\"\""}],"source_content_type":"text/x-python","patch_set":15,"id":"7698cb60_635d15ac","line":202,"in_reply_to":"d154d059_cfcaa45f","updated":"2026-03-05 14:50:37.000000000","message":"Done","commit_id":"13e5ce833fd5ea176ee6d8cd759418b5aea1605f"},{"author":{"_account_id":38618,"name":"mengxiangzhi","email":"meng.xiangzhi@zte.com.cn","username":"mengxiangzhi10326440"},"change_message_id":"a610df4ec04595018540612d09667bbfc2c1d33e","unresolved":false,"context_lines":[{"line_number":199,"context_line":"                         \"url:%(url)s, res:%(res)s\")"},{"line_number":200,"context_line":"                       % {\u0027err\u0027: err, \u0027url\u0027: url, \u0027res\u0027: str(response)})"},{"line_number":201,"context_line":"            LOG.error(err_msg)"},{"line_number":202,"context_line":"            raise exception.CinderException(err_msg)"},{"line_number":203,"context_line":""},{"line_number":204,"context_line":"    def _restful_put(self, url, token, values, timeout\u003d300):"},{"line_number":205,"context_line":"        \"\"\"get api by method PUT \"\"\""}],"source_content_type":"text/x-python","patch_set":15,"id":"845180ae_30961645","line":202,"in_reply_to":"d154d059_cfcaa45f","updated":"2026-03-20 08:47:58.000000000","message":"Done","commit_id":"13e5ce833fd5ea176ee6d8cd759418b5aea1605f"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"8080d6819bc964ba71b80f5d666c4ba6dfce7d87","unresolved":true,"context_lines":[{"line_number":214,"context_line":"                         \"url:%(url)s\")"},{"line_number":215,"context_line":"                       % {\u0027err\u0027: err, \u0027url\u0027: url})"},{"line_number":216,"context_line":"            LOG.error(err_msg)"},{"line_number":217,"context_line":"            raise exception.CinderException(err_msg)"},{"line_number":218,"context_line":""},{"line_number":219,"context_line":"    def _get_map_group_info(self, map_group_name):"},{"line_number":220,"context_line":"        get_url \u003d (self.URL_PREFIX_V2 +"}],"source_content_type":"text/x-python","patch_set":15,"id":"7a289409_9a1bd1a0","line":217,"updated":"2026-03-04 18:12:46.000000000","message":"VolumeDriverException","commit_id":"13e5ce833fd5ea176ee6d8cd759418b5aea1605f"},{"author":{"_account_id":38618,"name":"mengxiangzhi","email":"meng.xiangzhi@zte.com.cn","username":"mengxiangzhi10326440"},"change_message_id":"a610df4ec04595018540612d09667bbfc2c1d33e","unresolved":false,"context_lines":[{"line_number":214,"context_line":"                         \"url:%(url)s\")"},{"line_number":215,"context_line":"                       % {\u0027err\u0027: err, \u0027url\u0027: url})"},{"line_number":216,"context_line":"            LOG.error(err_msg)"},{"line_number":217,"context_line":"            raise exception.CinderException(err_msg)"},{"line_number":218,"context_line":""},{"line_number":219,"context_line":"    def _get_map_group_info(self, map_group_name):"},{"line_number":220,"context_line":"        get_url \u003d (self.URL_PREFIX_V2 +"}],"source_content_type":"text/x-python","patch_set":15,"id":"4137d31e_19e7d11d","line":217,"in_reply_to":"7a289409_9a1bd1a0","updated":"2026-03-20 08:47:58.000000000","message":"Done","commit_id":"13e5ce833fd5ea176ee6d8cd759418b5aea1605f"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"3e83ca61f4ade113094907f1fec4f097218e5799","unresolved":false,"context_lines":[{"line_number":214,"context_line":"                         \"url:%(url)s\")"},{"line_number":215,"context_line":"                       % {\u0027err\u0027: err, \u0027url\u0027: url})"},{"line_number":216,"context_line":"            LOG.error(err_msg)"},{"line_number":217,"context_line":"            raise exception.CinderException(err_msg)"},{"line_number":218,"context_line":""},{"line_number":219,"context_line":"    def _get_map_group_info(self, map_group_name):"},{"line_number":220,"context_line":"        get_url \u003d (self.URL_PREFIX_V2 +"}],"source_content_type":"text/x-python","patch_set":15,"id":"c1d30f5a_a433abc0","line":217,"in_reply_to":"7a289409_9a1bd1a0","updated":"2026-03-05 14:50:37.000000000","message":"Done","commit_id":"13e5ce833fd5ea176ee6d8cd759418b5aea1605f"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"8080d6819bc964ba71b80f5d666c4ba6dfce7d87","unresolved":true,"context_lines":[{"line_number":227,"context_line":"                          \u0027msg\u0027: group_info_ret[\"err_msg\"],"},{"line_number":228,"context_line":"                          \u0027map\u0027: map_group_name})"},{"line_number":229,"context_line":"            LOG.error(err_msg)"},{"line_number":230,"context_line":"            raise exception.CinderException(err_msg)"},{"line_number":231,"context_line":"        LOG.debug(\"Get group info:%s\", group_info_ret)"},{"line_number":232,"context_line":"        return group_info_ret"},{"line_number":233,"context_line":""}],"source_content_type":"text/x-python","patch_set":15,"id":"a3d498cc_ff52cea5","line":230,"updated":"2026-03-04 18:12:46.000000000","message":"VolumeDriverException","commit_id":"13e5ce833fd5ea176ee6d8cd759418b5aea1605f"},{"author":{"_account_id":38618,"name":"mengxiangzhi","email":"meng.xiangzhi@zte.com.cn","username":"mengxiangzhi10326440"},"change_message_id":"a610df4ec04595018540612d09667bbfc2c1d33e","unresolved":false,"context_lines":[{"line_number":227,"context_line":"                          \u0027msg\u0027: group_info_ret[\"err_msg\"],"},{"line_number":228,"context_line":"                          \u0027map\u0027: map_group_name})"},{"line_number":229,"context_line":"            LOG.error(err_msg)"},{"line_number":230,"context_line":"            raise exception.CinderException(err_msg)"},{"line_number":231,"context_line":"        LOG.debug(\"Get group info:%s\", group_info_ret)"},{"line_number":232,"context_line":"        return group_info_ret"},{"line_number":233,"context_line":""}],"source_content_type":"text/x-python","patch_set":15,"id":"b68d7594_c5c2f655","line":230,"in_reply_to":"a3d498cc_ff52cea5","updated":"2026-03-20 08:47:58.000000000","message":"Done","commit_id":"13e5ce833fd5ea176ee6d8cd759418b5aea1605f"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"3e83ca61f4ade113094907f1fec4f097218e5799","unresolved":false,"context_lines":[{"line_number":227,"context_line":"                          \u0027msg\u0027: group_info_ret[\"err_msg\"],"},{"line_number":228,"context_line":"                          \u0027map\u0027: map_group_name})"},{"line_number":229,"context_line":"            LOG.error(err_msg)"},{"line_number":230,"context_line":"            raise exception.CinderException(err_msg)"},{"line_number":231,"context_line":"        LOG.debug(\"Get group info:%s\", group_info_ret)"},{"line_number":232,"context_line":"        return group_info_ret"},{"line_number":233,"context_line":""}],"source_content_type":"text/x-python","patch_set":15,"id":"c35094c5_6cdf9b23","line":230,"in_reply_to":"a3d498cc_ff52cea5","updated":"2026-03-05 14:50:37.000000000","message":"Done","commit_id":"13e5ce833fd5ea176ee6d8cd759418b5aea1605f"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"8080d6819bc964ba71b80f5d666c4ba6dfce7d87","unresolved":true,"context_lines":[{"line_number":254,"context_line":"        except Exception as err:"},{"line_number":255,"context_line":"            err_msg \u003d (_(\"Login error, req is:%s\") % err)"},{"line_number":256,"context_line":"            LOG.error(err_msg)"},{"line_number":257,"context_line":"            raise exception.CinderException(err_msg)"},{"line_number":258,"context_line":""},{"line_number":259,"context_line":"    def get_gwnode_number(self):"},{"line_number":260,"context_line":"        url \u003d self.URL_PREFIX_V2 + \"/system/config\""}],"source_content_type":"text/x-python","patch_set":15,"id":"64a5ee16_1c6715c0","line":257,"updated":"2026-03-04 18:12:46.000000000","message":"VolumeDriverException","commit_id":"13e5ce833fd5ea176ee6d8cd759418b5aea1605f"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"3e83ca61f4ade113094907f1fec4f097218e5799","unresolved":false,"context_lines":[{"line_number":254,"context_line":"        except Exception as err:"},{"line_number":255,"context_line":"            err_msg \u003d (_(\"Login error, req is:%s\") % err)"},{"line_number":256,"context_line":"            LOG.error(err_msg)"},{"line_number":257,"context_line":"            raise exception.CinderException(err_msg)"},{"line_number":258,"context_line":""},{"line_number":259,"context_line":"    def get_gwnode_number(self):"},{"line_number":260,"context_line":"        url \u003d self.URL_PREFIX_V2 + \"/system/config\""}],"source_content_type":"text/x-python","patch_set":15,"id":"c795f2da_4d8d0c88","line":257,"in_reply_to":"64a5ee16_1c6715c0","updated":"2026-03-05 14:50:37.000000000","message":"Done","commit_id":"13e5ce833fd5ea176ee6d8cd759418b5aea1605f"},{"author":{"_account_id":38618,"name":"mengxiangzhi","email":"meng.xiangzhi@zte.com.cn","username":"mengxiangzhi10326440"},"change_message_id":"a610df4ec04595018540612d09667bbfc2c1d33e","unresolved":false,"context_lines":[{"line_number":254,"context_line":"        except Exception as err:"},{"line_number":255,"context_line":"            err_msg \u003d (_(\"Login error, req is:%s\") % err)"},{"line_number":256,"context_line":"            LOG.error(err_msg)"},{"line_number":257,"context_line":"            raise exception.CinderException(err_msg)"},{"line_number":258,"context_line":""},{"line_number":259,"context_line":"    def get_gwnode_number(self):"},{"line_number":260,"context_line":"        url \u003d self.URL_PREFIX_V2 + \"/system/config\""}],"source_content_type":"text/x-python","patch_set":15,"id":"e032ab2c_7f9c5a26","line":257,"in_reply_to":"64a5ee16_1c6715c0","updated":"2026-03-20 08:47:58.000000000","message":"Done","commit_id":"13e5ce833fd5ea176ee6d8cd759418b5aea1605f"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"8080d6819bc964ba71b80f5d666c4ba6dfce7d87","unresolved":true,"context_lines":[{"line_number":574,"context_line":"                       % {\u0027code\u0027: gwnodes_info_ret[\"ret\"],"},{"line_number":575,"context_line":"                          \u0027msg\u0027: gwnodes_info_ret[\"err_msg\"]})"},{"line_number":576,"context_line":"            LOG.error(err_msg)"},{"line_number":577,"context_line":"            raise exception.CinderException(err_msg)"},{"line_number":578,"context_line":"        LOG.debug(\"Get gwnodes info:%s\", gwnodes_info_ret)"},{"line_number":579,"context_line":"        return gwnodes_info_ret[\u0027data\u0027]"},{"line_number":580,"context_line":""}],"source_content_type":"text/x-python","patch_set":15,"id":"d0d1ded2_8314caee","line":577,"updated":"2026-03-04 18:12:46.000000000","message":"VolumeDriverException","commit_id":"13e5ce833fd5ea176ee6d8cd759418b5aea1605f"},{"author":{"_account_id":38618,"name":"mengxiangzhi","email":"meng.xiangzhi@zte.com.cn","username":"mengxiangzhi10326440"},"change_message_id":"a610df4ec04595018540612d09667bbfc2c1d33e","unresolved":false,"context_lines":[{"line_number":574,"context_line":"                       % {\u0027code\u0027: gwnodes_info_ret[\"ret\"],"},{"line_number":575,"context_line":"                          \u0027msg\u0027: gwnodes_info_ret[\"err_msg\"]})"},{"line_number":576,"context_line":"            LOG.error(err_msg)"},{"line_number":577,"context_line":"            raise exception.CinderException(err_msg)"},{"line_number":578,"context_line":"        LOG.debug(\"Get gwnodes info:%s\", gwnodes_info_ret)"},{"line_number":579,"context_line":"        return gwnodes_info_ret[\u0027data\u0027]"},{"line_number":580,"context_line":""}],"source_content_type":"text/x-python","patch_set":15,"id":"5cfdab05_32dc84e7","line":577,"in_reply_to":"d0d1ded2_8314caee","updated":"2026-03-20 08:47:58.000000000","message":"Done","commit_id":"13e5ce833fd5ea176ee6d8cd759418b5aea1605f"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"3e83ca61f4ade113094907f1fec4f097218e5799","unresolved":false,"context_lines":[{"line_number":574,"context_line":"                       % {\u0027code\u0027: gwnodes_info_ret[\"ret\"],"},{"line_number":575,"context_line":"                          \u0027msg\u0027: gwnodes_info_ret[\"err_msg\"]})"},{"line_number":576,"context_line":"            LOG.error(err_msg)"},{"line_number":577,"context_line":"            raise exception.CinderException(err_msg)"},{"line_number":578,"context_line":"        LOG.debug(\"Get gwnodes info:%s\", gwnodes_info_ret)"},{"line_number":579,"context_line":"        return gwnodes_info_ret[\u0027data\u0027]"},{"line_number":580,"context_line":""}],"source_content_type":"text/x-python","patch_set":15,"id":"84b68902_3574aaea","line":577,"in_reply_to":"d0d1ded2_8314caee","updated":"2026-03-05 14:50:37.000000000","message":"Done","commit_id":"13e5ce833fd5ea176ee6d8cd759418b5aea1605f"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"8080d6819bc964ba71b80f5d666c4ba6dfce7d87","unresolved":true,"context_lines":[{"line_number":684,"context_line":"        get_mgroup_name_url \u003d \"{}/fc-cindergroups?wwpn\u003d{}\u0026vol_name\u003d{}\".format("},{"line_number":685,"context_line":"            self.URL_PREFIX_V2, fc_wwpns_str, str(vol_name))"},{"line_number":686,"context_line":"        mgroup_ret \u003d self._restful_get_no_raise(get_mgroup_name_url, \u0027\u0027)"},{"line_number":687,"context_line":"        if mgroup_ret[\"ret\"] \u003d\u003d vstorage_pub.VOL_NOT_IN_GROUP:"},{"line_number":688,"context_line":"            LOG.info(_LI(\"Volume %(vol)s is not in map group, \""},{"line_number":689,"context_line":"                         \"return map group name None\"), {\u0027vol\u0027: vol_name})"},{"line_number":690,"context_line":"            return None"}],"source_content_type":"text/x-python","patch_set":15,"id":"cee1933f_bb2a8a83","line":687,"range":{"start_line":687,"start_character":11,"end_line":687,"end_character":28},"updated":"2026-03-04 18:12:46.000000000","message":"The check at line 691 requires casting mgroup_ret([\"ret\"]) to an int, but this one does not? Do we know that it is always an int?","commit_id":"13e5ce833fd5ea176ee6d8cd759418b5aea1605f"},{"author":{"_account_id":38618,"name":"mengxiangzhi","email":"meng.xiangzhi@zte.com.cn","username":"mengxiangzhi10326440"},"change_message_id":"a610df4ec04595018540612d09667bbfc2c1d33e","unresolved":false,"context_lines":[{"line_number":684,"context_line":"        get_mgroup_name_url \u003d \"{}/fc-cindergroups?wwpn\u003d{}\u0026vol_name\u003d{}\".format("},{"line_number":685,"context_line":"            self.URL_PREFIX_V2, fc_wwpns_str, str(vol_name))"},{"line_number":686,"context_line":"        mgroup_ret \u003d self._restful_get_no_raise(get_mgroup_name_url, \u0027\u0027)"},{"line_number":687,"context_line":"        if mgroup_ret[\"ret\"] \u003d\u003d vstorage_pub.VOL_NOT_IN_GROUP:"},{"line_number":688,"context_line":"            LOG.info(_LI(\"Volume %(vol)s is not in map group, \""},{"line_number":689,"context_line":"                         \"return map group name None\"), {\u0027vol\u0027: vol_name})"},{"line_number":690,"context_line":"            return None"}],"source_content_type":"text/x-python","patch_set":15,"id":"1e2b3aea_9a3c4470","line":687,"range":{"start_line":687,"start_character":11,"end_line":687,"end_character":28},"in_reply_to":"cee1933f_bb2a8a83","updated":"2026-03-20 08:47:58.000000000","message":"The exception return code has been communicated with the storage side, so there is no need to catch the exception of int type conversion","commit_id":"13e5ce833fd5ea176ee6d8cd759418b5aea1605f"}]}
