)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":30555,"name":"Fernando Ferraz","display_name":"Fernando Ferraz","email":"fesilva@redhat.com","username":"fernandoperches"},"change_message_id":"886a994e4d03b8f51186e4f6d88103a46016d88c","unresolved":true,"context_lines":[{"line_number":21,"context_line":" - Create Volume from Volume (clone)"},{"line_number":22,"context_line":" - Create lmage from Volume"},{"line_number":23,"context_line":" - Volume Migration (host assisted)"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"ThirdPartySystems: TOYOU TYDS CI"},{"line_number":26,"context_line":"Change-Id: I0a2b6e81c0440593a97c3aff2554cfdb96af77a5"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":12,"id":"7cb8e941_d70e80ac","line":24,"updated":"2023-07-13 19:00:13.000000000","message":"Does this driver have a blueprint? If not I would recommend to create one and add its reference in the format:\n\nexample:\n```\nblueprint add-toyou-netstor-tyds-driver\n```\n\nYadro bp [1] and patch [2] can be used as references.\n\n[1] https://blueprints.launchpad.net/cinder/+spec/yadro-tatlin-unified-driver\n[2] https://review.opendev.org/c/openstack/cinder/+/876743","commit_id":"ada953ffce52c3d052e2d339563416adf169bfb1"},{"author":{"_account_id":32464,"name":"caiqilong","email":"406454833@qq.com","username":"cccqqqlll"},"change_message_id":"491671a833096d88ec852f561e522844db0b5d40","unresolved":false,"context_lines":[{"line_number":21,"context_line":" - Create Volume from Volume (clone)"},{"line_number":22,"context_line":" - Create lmage from Volume"},{"line_number":23,"context_line":" - Volume Migration (host assisted)"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"ThirdPartySystems: TOYOU TYDS CI"},{"line_number":26,"context_line":"Change-Id: I0a2b6e81c0440593a97c3aff2554cfdb96af77a5"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":12,"id":"8af9ac06_2aae91ec","line":24,"in_reply_to":"15fd0dfa_f6e26ffb","updated":"2023-07-14 02:24:01.000000000","message":"And the blueprint is added to the commit messages too, thanks.","commit_id":"ada953ffce52c3d052e2d339563416adf169bfb1"},{"author":{"_account_id":32464,"name":"caiqilong","email":"406454833@qq.com","username":"cccqqqlll"},"change_message_id":"3fb578232050ec535d6488d3ce2265dbd65449ed","unresolved":false,"context_lines":[{"line_number":21,"context_line":" - Create Volume from Volume (clone)"},{"line_number":22,"context_line":" - Create lmage from Volume"},{"line_number":23,"context_line":" - Volume Migration (host assisted)"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"ThirdPartySystems: TOYOU TYDS CI"},{"line_number":26,"context_line":"Change-Id: I0a2b6e81c0440593a97c3aff2554cfdb96af77a5"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":12,"id":"15fd0dfa_f6e26ffb","line":24,"in_reply_to":"7cb8e941_d70e80ac","updated":"2023-07-14 02:20:14.000000000","message":"Done\nThank you for reminding me to add a blueprint. I have added a blueprint of my driver which located at \"https://blueprints.launchpad.net/cinder/+spec/add-toyou-netstor-tyds-driver\"","commit_id":"ada953ffce52c3d052e2d339563416adf169bfb1"}],"/PATCHSET_LEVEL":[{"author":{"_account_id":31779,"name":"Jean Pierre Roquesalane","display_name":"happystacker","email":"jeanpierre.roquesalane@dell.com","username":"happystacker"},"change_message_id":"ef745d49f3a7ec5cbbd44e6014ad04ca94f3aecf","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"cd765355_9144694f","updated":"2023-06-28 11:42:14.000000000","message":"You have multiple PEP8 errors, please fix them and resubmit.","commit_id":"2a075c0f904301a82eca361d33adeb233f877ac3"},{"author":{"_account_id":32418,"name":"TOYOU TYDS CI","email":"caiql@toyou.com.cn","username":"caiqilong"},"change_message_id":"039b95dbf8bbd43a22347ec76b8bdc99b3ff614c","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"d1d63284_d093b15b","updated":"2023-06-27 03:19:10.000000000","message":"run-TOYOU TYDS CI","commit_id":"2a075c0f904301a82eca361d33adeb233f877ac3"},{"author":{"_account_id":32464,"name":"caiqilong","email":"406454833@qq.com","username":"cccqqqlll"},"change_message_id":"66ac0e54efb1f3837d9955c4c24468792a9cc2dc","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"e909acb4_08cb3d52","in_reply_to":"cd765355_9144694f","updated":"2023-06-29 03:30:25.000000000","message":"thank for your suggestion, i have uploaded pachset 2 to fix it","commit_id":"2a075c0f904301a82eca361d33adeb233f877ac3"},{"author":{"_account_id":32464,"name":"caiqilong","email":"406454833@qq.com","username":"cccqqqlll"},"change_message_id":"406e95d2b2c49c15b14a71da5534bc1ab05ed281","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"2f7fab5a_9159e5c0","updated":"2023-07-01 02:23:27.000000000","message":"recheck","commit_id":"5b27b179c1f21013493c8213433c218c07093485"},{"author":{"_account_id":32464,"name":"caiqilong","email":"406454833@qq.com","username":"cccqqqlll"},"change_message_id":"8f90d691d2e109f10f1aa2d2a4d3a5f1569adf8d","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"560bb46e_bc223343","updated":"2023-07-03 09:50:46.000000000","message":"recheck","commit_id":"5b27b179c1f21013493c8213433c218c07093485"},{"author":{"_account_id":32464,"name":"caiqilong","email":"406454833@qq.com","username":"cccqqqlll"},"change_message_id":"6fadac955ed4d31464785648ab7a6b5e2c196e50","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"85608bf3_3c828c0b","updated":"2023-07-03 01:09:09.000000000","message":"recheck","commit_id":"5b27b179c1f21013493c8213433c218c07093485"},{"author":{"_account_id":32464,"name":"caiqilong","email":"406454833@qq.com","username":"cccqqqlll"},"change_message_id":"fe2fc4ca308423f18c56db2e643c884949e56ed9","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"e5f76c48_25c488b8","updated":"2023-07-03 05:51:03.000000000","message":"recheck","commit_id":"5b27b179c1f21013493c8213433c218c07093485"},{"author":{"_account_id":32464,"name":"caiqilong","email":"406454833@qq.com","username":"cccqqqlll"},"change_message_id":"838e978f8edaa235dda34576b031c833bc572d34","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"f4dbad05_ad81c146","updated":"2023-06-30 19:06:22.000000000","message":"recheck","commit_id":"5b27b179c1f21013493c8213433c218c07093485"},{"author":{"_account_id":32464,"name":"caiqilong","email":"406454833@qq.com","username":"cccqqqlll"},"change_message_id":"b5b2cee4d59f2f71c181df5f92c38ef71c91c352","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"fa7afb57_7b73ea43","updated":"2023-07-02 09:23:16.000000000","message":"recheck","commit_id":"5b27b179c1f21013493c8213433c218c07093485"},{"author":{"_account_id":32464,"name":"caiqilong","email":"406454833@qq.com","username":"cccqqqlll"},"change_message_id":"49ee678cd20ee81c836c84b4122ec8a3d01b6ea4","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"0e91d329_e0d58ae0","updated":"2023-07-03 13:00:18.000000000","message":"run-TOYOU TYDS CI","commit_id":"db8ff326003d106bc680fe5c4be8dec420c8d247"},{"author":{"_account_id":32464,"name":"caiqilong","email":"406454833@qq.com","username":"cccqqqlll"},"change_message_id":"c78d74df9eeb3db68245744b09a1d8de4bb7a6f6","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"44cf5ad6_6543777e","updated":"2023-07-04 01:36:20.000000000","message":"run-TOYOU TYDS CI","commit_id":"db8ff326003d106bc680fe5c4be8dec420c8d247"},{"author":{"_account_id":32464,"name":"caiqilong","email":"406454833@qq.com","username":"cccqqqlll"},"change_message_id":"463442879aa0645ccc7fe8ee7c12dba7625a3c67","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"a9134cac_91648a0d","updated":"2023-07-03 17:02:14.000000000","message":"run-TOYOU TYDS CI","commit_id":"db8ff326003d106bc680fe5c4be8dec420c8d247"},{"author":{"_account_id":32464,"name":"caiqilong","email":"406454833@qq.com","username":"cccqqqlll"},"change_message_id":"2175ac3c3f2a644d384b0700ffc366ec736d1faa","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"340361fe_3fe45451","updated":"2023-07-05 10:10:26.000000000","message":"recheck","commit_id":"eb875141bb3c2cf92ea31b2079a355236da1c216"},{"author":{"_account_id":32464,"name":"caiqilong","email":"406454833@qq.com","username":"cccqqqlll"},"change_message_id":"0beafbffb54da12a47b5e5a1daae057c9c872bed","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"46036a19_478263a6","updated":"2023-07-05 16:58:37.000000000","message":"run-TOYOU TYDS CI","commit_id":"38452078f440f6ea07035e1479a7553211b182a2"},{"author":{"_account_id":32464,"name":"caiqilong","email":"406454833@qq.com","username":"cccqqqlll"},"change_message_id":"cd7fd7fb2d8f61f32a51dfa1cc2253d6d6c04676","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"91696d98_cd885bed","updated":"2023-07-05 23:15:17.000000000","message":"run-TOYOU TYDS CI","commit_id":"38452078f440f6ea07035e1479a7553211b182a2"},{"author":{"_account_id":29122,"name":"Raghavendra Tilay","email":"raghavendra-uddhav.tilay@hpe.com","username":"raghavendrat"},"change_message_id":"3ed9ba177989f478f92f3f693d87632797304724","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":8,"id":"1da245e4_4908b491","updated":"2023-07-06 13:00:08.000000000","message":"Overall code looks good.\nFew minor queries/comments inline.","commit_id":"266bd7d6035dd838bf2c10e58b2d79d0dbda7786"},{"author":{"_account_id":32464,"name":"caiqilong","email":"406454833@qq.com","username":"cccqqqlll"},"change_message_id":"d47e5e202990c8787f87cc2619b27514e7bd3749","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":8,"id":"76ac4454_905b04f5","updated":"2023-07-06 08:55:59.000000000","message":"recheck","commit_id":"266bd7d6035dd838bf2c10e58b2d79d0dbda7786"},{"author":{"_account_id":32464,"name":"caiqilong","email":"406454833@qq.com","username":"cccqqqlll"},"change_message_id":"7790556076210400a793c4490090b0ecb3e2e3f6","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":8,"id":"a6e32b26_c2733534","updated":"2023-07-06 12:01:22.000000000","message":"recheck","commit_id":"266bd7d6035dd838bf2c10e58b2d79d0dbda7786"},{"author":{"_account_id":32464,"name":"caiqilong","email":"406454833@qq.com","username":"cccqqqlll"},"change_message_id":"2775cf99b65f45a6319d900c0c102596e025ba6a","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":8,"id":"cdc659f5_f6e71b7a","updated":"2023-07-06 22:20:42.000000000","message":"recheck","commit_id":"266bd7d6035dd838bf2c10e58b2d79d0dbda7786"},{"author":{"_account_id":32464,"name":"caiqilong","email":"406454833@qq.com","username":"cccqqqlll"},"change_message_id":"994a7f603a37f531be7fa7d6a37ff6232c450f17","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":8,"id":"e3c9ea63_3e594019","updated":"2023-07-06 06:31:22.000000000","message":"recheck","commit_id":"266bd7d6035dd838bf2c10e58b2d79d0dbda7786"},{"author":{"_account_id":32464,"name":"caiqilong","email":"406454833@qq.com","username":"cccqqqlll"},"change_message_id":"fef330ce9fc1e50ee7a85dec66e12429001688da","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":8,"id":"c51e4ec4_74859af6","updated":"2023-07-06 15:28:41.000000000","message":"run-TOYOU TYDS CI","commit_id":"266bd7d6035dd838bf2c10e58b2d79d0dbda7786"},{"author":{"_account_id":32464,"name":"caiqilong","email":"406454833@qq.com","username":"cccqqqlll"},"change_message_id":"46e4e72263076e125fa598b7ea329d9905ba2bfa","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":8,"id":"f2be732c_83417cd2","updated":"2023-07-07 06:46:55.000000000","message":"run-TOYOU TYDS CI","commit_id":"266bd7d6035dd838bf2c10e58b2d79d0dbda7786"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"cf7244c7211eb6b8fc21773adb3966ff4a11d200","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":9,"id":"0b4aaac4_b9e9d262","updated":"2023-07-12 02:02:42.000000000","message":"A few things noted inline.","commit_id":"b9dec9daa4b575f4d2bf74adcf00de8f94cf16ba"},{"author":{"_account_id":29122,"name":"Raghavendra Tilay","email":"raghavendra-uddhav.tilay@hpe.com","username":"raghavendrat"},"change_message_id":"78612723b0146444ed3a7868e099cfff6a911b2f","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":9,"id":"a1b9a2a3_197f2632","updated":"2023-07-11 05:29:28.000000000","message":"Below link may be helpful. Please check.\nhttps://docs.openstack.org/cinder/latest/contributor/new_driver_checklist.html","commit_id":"b9dec9daa4b575f4d2bf74adcf00de8f94cf16ba"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"277ba47b4e8fcab4b27ce3f9155b234d5c76995d","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":9,"id":"382d1d1e_07237de4","updated":"2023-07-12 02:24:17.000000000","message":"Just want to add a note that the TOYOU TYDS CI is responding on other patches, for example, https://review.opendev.org/c/openstack/cinder/+/860997, where you can also see that the \"run-TOYOU TYDS CI\" comment triggers a recheck.\n\nIt doesn\u0027t seem to be monitoring os-brick changes, though.","commit_id":"b9dec9daa4b575f4d2bf74adcf00de8f94cf16ba"},{"author":{"_account_id":29122,"name":"Raghavendra Tilay","email":"raghavendra-uddhav.tilay@hpe.com","username":"raghavendrat"},"change_message_id":"31911360893c4bca539348e57c91c649dcb8f5ff","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":9,"id":"2e3152d1_a42e4b32","updated":"2023-07-10 10:57:44.000000000","message":"My comments have been addressed. Thanks.\nZuul and TOYOU TYDS CI have passed. So +1.","commit_id":"b9dec9daa4b575f4d2bf74adcf00de8f94cf16ba"},{"author":{"_account_id":32464,"name":"caiqilong","email":"406454833@qq.com","username":"cccqqqlll"},"change_message_id":"487e37ed2592706b971ebcdd904be162f456bc1d","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":9,"id":"8129eda5_2f44df95","updated":"2023-07-07 08:26:31.000000000","message":"run-TOYOU TYDS CI","commit_id":"b9dec9daa4b575f4d2bf74adcf00de8f94cf16ba"},{"author":{"_account_id":32464,"name":"caiqilong","email":"406454833@qq.com","username":"cccqqqlll"},"change_message_id":"b98de9cf82c241d4687383ea57634aedaee7822d","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":9,"id":"995389f9_08203a4d","updated":"2023-07-07 06:51:54.000000000","message":"run-TOYOU TYDS CI","commit_id":"b9dec9daa4b575f4d2bf74adcf00de8f94cf16ba"},{"author":{"_account_id":32464,"name":"caiqilong","email":"406454833@qq.com","username":"cccqqqlll"},"change_message_id":"be35810fe45dc6b57e602e07d41ddd5b58844e1e","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":9,"id":"5b4dc889_daedd00d","in_reply_to":"0b4aaac4_b9e9d262","updated":"2023-07-12 08:53:35.000000000","message":"thanks for your patient review. I have resolved the deficiencies in a new patchset.","commit_id":"b9dec9daa4b575f4d2bf74adcf00de8f94cf16ba"},{"author":{"_account_id":32464,"name":"caiqilong","email":"406454833@qq.com","username":"cccqqqlll"},"change_message_id":"fa8099bb8540f18c9122b9f88010c1885450c44e","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":9,"id":"b88bcc16_7bb87b1b","in_reply_to":"382d1d1e_07237de4","updated":"2023-07-12 13:18:00.000000000","message":"Thank you for your patient explanation and advice of monitoring os-brick changes. I will complete it in the near future.","commit_id":"b9dec9daa4b575f4d2bf74adcf00de8f94cf16ba"},{"author":{"_account_id":32464,"name":"caiqilong","email":"406454833@qq.com","username":"cccqqqlll"},"change_message_id":"9b500806161b727e03f46a8bd4b610da3aae95ec","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":9,"id":"8917f420_413a0f8f","in_reply_to":"a1b9a2a3_197f2632","updated":"2023-07-11 12:37:36.000000000","message":"thanks for providing the checklist, I have checked it before. If missed some points, please remind me.","commit_id":"b9dec9daa4b575f4d2bf74adcf00de8f94cf16ba"},{"author":{"_account_id":32464,"name":"caiqilong","email":"406454833@qq.com","username":"cccqqqlll"},"change_message_id":"bab171dd90a3d01e9cbe76e2dfe6790466d9ef5a","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":10,"id":"652786ae_4e77bca2","updated":"2023-07-12 09:36:17.000000000","message":"run-TOYOU TYDS CI","commit_id":"e7e5657c2bbf330d91c458f20362fc28a2c5b839"},{"author":{"_account_id":32464,"name":"caiqilong","email":"406454833@qq.com","username":"cccqqqlll"},"change_message_id":"77d94bee5a96e934e3ce1633097bbc3b23ea665d","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":10,"id":"c0eb7614_537f181c","updated":"2023-07-12 08:38:08.000000000","message":"run-TOYOU TYDS CI","commit_id":"e7e5657c2bbf330d91c458f20362fc28a2c5b839"},{"author":{"_account_id":32464,"name":"caiqilong","email":"406454833@qq.com","username":"cccqqqlll"},"change_message_id":"ec3a85ea18d7a6c4750acbf02f4284e58be321b0","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":10,"id":"d635ea31_ef477f5d","updated":"2023-07-12 08:34:49.000000000","message":"run-TOYOU TYDS CI","commit_id":"e7e5657c2bbf330d91c458f20362fc28a2c5b839"},{"author":{"_account_id":32464,"name":"caiqilong","email":"406454833@qq.com","username":"cccqqqlll"},"change_message_id":"6fc96fba40a601316faabebc8381f6e2d5fc6a71","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":10,"id":"e7eaae78_498d80e1","updated":"2023-07-12 08:36:10.000000000","message":"run-TOYOU TYDS CI","commit_id":"e7e5657c2bbf330d91c458f20362fc28a2c5b839"},{"author":{"_account_id":32464,"name":"caiqilong","email":"406454833@qq.com","username":"cccqqqlll"},"change_message_id":"45c32f32df5a41e93933c9fa063a9e0790409fd9","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":10,"id":"eac86f25_6ba177ae","updated":"2023-07-12 08:40:06.000000000","message":"run-TOYOU TYDS CI","commit_id":"e7e5657c2bbf330d91c458f20362fc28a2c5b839"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"f8b507d09b4be5fb9938a5528603085e3420a813","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":11,"id":"8881a152_385171b4","updated":"2023-07-12 13:46:11.000000000","message":"About the En/Zh logs ... we should discuss at the cinder meeting.  The logs aren\u0027t translated for openstack because operators decided that it was better to have log messages in English only to make it more likely that you\u0027d find something when searching the web.  But I can see how it would be useful to have logs in a local language also for day-to-day monitoring of the system.","commit_id":"2cb6a73c2cf548a67fc4f2b89e67305c0a910814"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"26dd71e4b0c9cc7917d3a0fdf8721a5a82ce3c10","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":11,"id":"c46fbbb8_70cd76be","updated":"2023-07-12 13:35:24.000000000","message":"I would be fine to see the client being tested in a followup, since we are close to deadline but good to have confirmation that it will be addressed.","commit_id":"2cb6a73c2cf548a67fc4f2b89e67305c0a910814"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"3d4c0b2ea74823ca0dc9ec1a73941b707d6c7e6e","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":11,"id":"1d061b3e_c9fd5846","updated":"2023-07-12 13:33:01.000000000","message":"My comments are based on PS9 so some comments might already been addressed.\n\nOne major issue i see is that the client isn\u0027t tested anywhere and the driver calls to client are mocked in UTs, which is fine, but we need to have the UT coverage for client as well.","commit_id":"2cb6a73c2cf548a67fc4f2b89e67305c0a910814"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"91309b9dd25a0a8cca044dee4ef59b24cae36c2b","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":11,"id":"e2ecec40_f53a7397","updated":"2023-07-12 16:03:17.000000000","message":"Still looking through the tests, but see comment inline.","commit_id":"2cb6a73c2cf548a67fc4f2b89e67305c0a910814"},{"author":{"_account_id":32464,"name":"caiqilong","email":"406454833@qq.com","username":"cccqqqlll"},"change_message_id":"994a98a3bab2313d3f7f0a58920b32db775b463a","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":11,"id":"5571ad67_de09e5f6","updated":"2023-07-12 12:28:46.000000000","message":"run-TOYOU TYDS CI","commit_id":"2cb6a73c2cf548a67fc4f2b89e67305c0a910814"},{"author":{"_account_id":32464,"name":"caiqilong","email":"406454833@qq.com","username":"cccqqqlll"},"change_message_id":"6195f2bbaa5b96d3f4ccac5c8db97ec122bb869d","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":11,"id":"3430cdae_df9e944b","in_reply_to":"c46fbbb8_70cd76be","updated":"2023-07-13 02:29:51.000000000","message":"Thanks for reviewing. We promise to complete testing for the client after the deadline.","commit_id":"2cb6a73c2cf548a67fc4f2b89e67305c0a910814"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"a75f8da4b24c44a297cfd995ec7d646dbf457144","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":12,"id":"a72c2b51_f7bb5621","updated":"2023-07-13 14:17:42.000000000","message":"Apart from the create volume from snapshot case, i think it looks good.","commit_id":"ada953ffce52c3d052e2d339563416adf169bfb1"},{"author":{"_account_id":30555,"name":"Fernando Ferraz","display_name":"Fernando Ferraz","email":"fesilva@redhat.com","username":"fernandoperches"},"change_message_id":"886a994e4d03b8f51186e4f6d88103a46016d88c","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":12,"id":"b24eeab4_f73c7950","updated":"2023-07-13 19:00:13.000000000","message":"Hi caiqilong! Please check my comments below.","commit_id":"ada953ffce52c3d052e2d339563416adf169bfb1"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"0d30b09cdd8693f789d34806c0cdb70a12aafe15","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":12,"id":"bb3b126d_056bdf12","updated":"2023-07-13 21:16:39.000000000","message":"My comments have been addressed; I think Fernando makes some good points that you might as well address now, and I think we\u0027ll be ready to merge this tomorrow (14 July).","commit_id":"ada953ffce52c3d052e2d339563416adf169bfb1"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"eb07147353d1153eddaed3c832c182b38f6f6786","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":12,"id":"9e9f9b16_37262826","updated":"2023-07-13 14:37:26.000000000","message":"Toyou CI is passing, Zuul is failing because of time out in different jobs which is unrelated to this patch. LGTM.","commit_id":"ada953ffce52c3d052e2d339563416adf169bfb1"},{"author":{"_account_id":32464,"name":"caiqilong","email":"406454833@qq.com","username":"cccqqqlll"},"change_message_id":"76286d178d5bb956125d9c80351d5b1a53d13ff7","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":12,"id":"17f7054e_c21bb287","updated":"2023-07-13 13:56:06.000000000","message":"recheck","commit_id":"ada953ffce52c3d052e2d339563416adf169bfb1"},{"author":{"_account_id":32464,"name":"caiqilong","email":"406454833@qq.com","username":"cccqqqlll"},"change_message_id":"bdcf474b00a3fe7c2a27ab6d8adf86ff0fc83c44","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":12,"id":"70ba21ed_679674e9","updated":"2023-07-13 17:45:09.000000000","message":"recheck","commit_id":"ada953ffce52c3d052e2d339563416adf169bfb1"},{"author":{"_account_id":32464,"name":"caiqilong","email":"406454833@qq.com","username":"cccqqqlll"},"change_message_id":"a230a74f864ea29713aa9c5eabada620150f344f","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":14,"id":"4c04d3dd_c4632602","updated":"2023-07-14 02:41:03.000000000","message":"run-TOYOU TYDS CI","commit_id":"f264b32b380e7c3978353cda9339c695778059d4"},{"author":{"_account_id":32464,"name":"caiqilong","email":"406454833@qq.com","username":"cccqqqlll"},"change_message_id":"f54d80118b99c25c60092b29e51f8bde96716dad","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":14,"id":"75418b93_4e0b011d","updated":"2023-07-14 02:39:50.000000000","message":"run-TOYOU TYDS CI","commit_id":"f264b32b380e7c3978353cda9339c695778059d4"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"a50cb8c5eb30a2e38ac75832c0a2028441944514","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":15,"id":"2e822017_49d741f2","updated":"2023-07-14 13:35:05.000000000","message":"I looked through the code, all of Fernando\u0027s comments have been addressed (thanks, Fernando!), so I\u0027m going to move this along.\n\nSomething to think about noted inline.","commit_id":"6fcb495c8b60f62c0a0d10913737ed46929dbbaf"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"e82fb21d446bfa78060d1326b1db89b83685055b","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":15,"id":"b4f4443f_782a4843","updated":"2023-07-14 10:27:07.000000000","message":"My comments are addressed and the CI is passing. Zuul is failing due to unrelated failures. I think this driver looks good to go. Thanks for working on it!","commit_id":"6fcb495c8b60f62c0a0d10913737ed46929dbbaf"},{"author":{"_account_id":32464,"name":"caiqilong","email":"406454833@qq.com","username":"cccqqqlll"},"change_message_id":"ee06ed3d047a7bd974f0b942c23e6b1acae675b7","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":15,"id":"0411d20b_1a0ac0db","updated":"2023-07-14 09:07:41.000000000","message":"recheck","commit_id":"6fcb495c8b60f62c0a0d10913737ed46929dbbaf"}],"cinder/tests/unit/volume/drivers/toyou/test_tyds.py":[{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"91309b9dd25a0a8cca044dee4ef59b24cae36c2b","unresolved":true,"context_lines":[{"line_number":26,"context_line":""},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"class TestTydsDriver(unittest.TestCase):"},{"line_number":29,"context_line":"    @mock.patch(\u0027cinder.volume.drivers.toyou.tyds.tyds_client.TydsClient\u0027)"},{"line_number":30,"context_line":"    def setUp(self, mock_tyds_client):"},{"line_number":31,"context_line":"        \"\"\"Set up the test case."},{"line_number":32,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"7346ae3d_49352252","line":29,"updated":"2023-07-12 16:03:17.000000000","message":"I think you should add autospec\u003dTrue to the patch decorator, otherwise mock will not complain if you call a non-existent method on the mocked client.","commit_id":"2cb6a73c2cf548a67fc4f2b89e67305c0a910814"},{"author":{"_account_id":29878,"name":"x-23","email":"xe333@sina.com"},"change_message_id":"44f33d0e346b8381cfb3e7b5d6ffd8479c3c3e17","unresolved":false,"context_lines":[{"line_number":26,"context_line":""},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"class TestTydsDriver(unittest.TestCase):"},{"line_number":29,"context_line":"    @mock.patch(\u0027cinder.volume.drivers.toyou.tyds.tyds_client.TydsClient\u0027)"},{"line_number":30,"context_line":"    def setUp(self, mock_tyds_client):"},{"line_number":31,"context_line":"        \"\"\"Set up the test case."},{"line_number":32,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"1f64160a_30441a51","line":29,"in_reply_to":"7346ae3d_49352252","updated":"2023-07-13 06:17:31.000000000","message":"Thank you for your suggestion. You are right, adding `autospec\u003dTrue` to the patch decorator is a good practice to ensure that the mock object behaves like the original object, including raising an error when calling a non-existent method.\n\nBy setting `autospec\u003dTrue`, the mock object will have the same interface as the object being mocked, and any calls to non-existent methods will raise an `AttributeError`. This helps to catch potential issues with method names or incorrect method calls.\n\nI will make the necessary modification by adding `autospec\u003dTrue` to the patch decorator in order to enhance the behavior of the mock object. Thank you for bringing this to my attention, and I appreciate your contribution to improving the code quality.","commit_id":"2cb6a73c2cf548a67fc4f2b89e67305c0a910814"}],"cinder/volume/drivers/toyou/install.sh":[{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"1c32884a21eb1a1d6ec62cf0951d74ca4e389850","unresolved":true,"context_lines":[{"line_number":1,"context_line":"#!/bin/bash"},{"line_number":2,"context_line":"#cinder的目录"},{"line_number":3,"context_line":"PWD\u003d$(cd $(dirname $0);/bin/pwd)"},{"line_number":4,"context_line":"CINDER_PATH\u003d"}],"source_content_type":"text/x-sh","patch_set":1,"id":"734d3840_78868df2","line":1,"updated":"2023-06-26 14:13:10.000000000","message":"Please remove this file -- it doesn\u0027t need to be in the Cinder tree.","commit_id":"2a075c0f904301a82eca361d33adeb233f877ac3"},{"author":{"_account_id":29878,"name":"x-23","email":"xe333@sina.com"},"change_message_id":"81df00b19e341e6bbc3112811507902ad9e8d3af","unresolved":false,"context_lines":[{"line_number":1,"context_line":"#!/bin/bash"},{"line_number":2,"context_line":"#cinder的目录"},{"line_number":3,"context_line":"PWD\u003d$(cd $(dirname $0);/bin/pwd)"},{"line_number":4,"context_line":"CINDER_PATH\u003d"}],"source_content_type":"text/x-sh","patch_set":1,"id":"9c6c50a6_5db51a18","line":1,"in_reply_to":"734d3840_78868df2","updated":"2023-06-28 00:58:54.000000000","message":"Sure, I apologize for the oversight. I will remove the file in the next commit. Thank you for bringing it to my attention.","commit_id":"2a075c0f904301a82eca361d33adeb233f877ac3"}],"cinder/volume/drivers/toyou/tyds.py":[{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"1c32884a21eb1a1d6ec62cf0951d74ca4e389850","unresolved":true,"context_lines":[{"line_number":47,"context_line":"    cfg.StrOpt(\u0027tyds_http_user\u0027,\r"},{"line_number":48,"context_line":"               help\u003d\u0027The user that connects to the http api.\u0027),\r"},{"line_number":49,"context_line":"    cfg.StrOpt(\u0027tyds_http_password\u0027,\r"},{"line_number":50,"context_line":"               help\u003d\u0027The password that connects to the http api.\u0027),\r"},{"line_number":51,"context_line":"    cfg.StrOpt(\u0027tyds_strip_size\u0027,\r"},{"line_number":52,"context_line":"               default\u003d\u00274M\u0027,\r"},{"line_number":53,"context_line":"               help\u003d\u0027Volume strip size.\u0027),\r"}],"source_content_type":"text/x-python","patch_set":1,"id":"6d4d1f05_f89be849","line":50,"updated":"2023-06-26 14:13:10.000000000","message":"Please add secret\u003dTrue for the password option.","commit_id":"2a075c0f904301a82eca361d33adeb233f877ac3"},{"author":{"_account_id":29878,"name":"x-23","email":"xe333@sina.com"},"change_message_id":"81df00b19e341e6bbc3112811507902ad9e8d3af","unresolved":false,"context_lines":[{"line_number":47,"context_line":"    cfg.StrOpt(\u0027tyds_http_user\u0027,\r"},{"line_number":48,"context_line":"               help\u003d\u0027The user that connects to the http api.\u0027),\r"},{"line_number":49,"context_line":"    cfg.StrOpt(\u0027tyds_http_password\u0027,\r"},{"line_number":50,"context_line":"               help\u003d\u0027The password that connects to the http api.\u0027),\r"},{"line_number":51,"context_line":"    cfg.StrOpt(\u0027tyds_strip_size\u0027,\r"},{"line_number":52,"context_line":"               default\u003d\u00274M\u0027,\r"},{"line_number":53,"context_line":"               help\u003d\u0027Volume strip size.\u0027),\r"}],"source_content_type":"text/x-python","patch_set":1,"id":"3d5acca9_a998751c","line":50,"in_reply_to":"6d4d1f05_f89be849","updated":"2023-06-28 00:58:54.000000000","message":"Thank you for your suggestion. I will make sure to add the `secret\u003dTrue` option for the password field in the next update. Your feedback is greatly appreciated.","commit_id":"2a075c0f904301a82eca361d33adeb233f877ac3"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"1c32884a21eb1a1d6ec62cf0951d74ca4e389850","unresolved":true,"context_lines":[{"line_number":48,"context_line":"               help\u003d\u0027The user that connects to the http api.\u0027),\r"},{"line_number":49,"context_line":"    cfg.StrOpt(\u0027tyds_http_password\u0027,\r"},{"line_number":50,"context_line":"               help\u003d\u0027The password that connects to the http api.\u0027),\r"},{"line_number":51,"context_line":"    cfg.StrOpt(\u0027tyds_strip_size\u0027,\r"},{"line_number":52,"context_line":"               default\u003d\u00274M\u0027,\r"},{"line_number":53,"context_line":"               help\u003d\u0027Volume strip size.\u0027),\r"},{"line_number":54,"context_line":"    cfg.IntOpt(\u0027tyds_clone_progress_interval\u0027,\r"}],"source_content_type":"text/x-python","patch_set":1,"id":"010919ff_67415d0b","line":51,"updated":"2023-06-26 14:13:10.000000000","message":"Is this \"strip size\" or \"stripe size\"?","commit_id":"2a075c0f904301a82eca361d33adeb233f877ac3"},{"author":{"_account_id":29878,"name":"x-23","email":"xe333@sina.com"},"change_message_id":"81df00b19e341e6bbc3112811507902ad9e8d3af","unresolved":false,"context_lines":[{"line_number":48,"context_line":"               help\u003d\u0027The user that connects to the http api.\u0027),\r"},{"line_number":49,"context_line":"    cfg.StrOpt(\u0027tyds_http_password\u0027,\r"},{"line_number":50,"context_line":"               help\u003d\u0027The password that connects to the http api.\u0027),\r"},{"line_number":51,"context_line":"    cfg.StrOpt(\u0027tyds_strip_size\u0027,\r"},{"line_number":52,"context_line":"               default\u003d\u00274M\u0027,\r"},{"line_number":53,"context_line":"               help\u003d\u0027Volume strip size.\u0027),\r"},{"line_number":54,"context_line":"    cfg.IntOpt(\u0027tyds_clone_progress_interval\u0027,\r"}],"source_content_type":"text/x-python","patch_set":1,"id":"47139072_fc2b764c","line":51,"in_reply_to":"010919ff_67415d0b","updated":"2023-06-28 00:58:54.000000000","message":"Thank you for your feedback and suggestions! I have made the changes you provided. I have reconsidered the use of stripes and stripes and realized that the correct terminology in distributed storage should be \"stripe\". I apologize for the previous confusion. Your guidance has been very helpful and I will make sure to be more accurate and professional in similar situations. If you have any other questions or suggestions, please feel free to let me know. Thanks again for your feedback!","commit_id":"2a075c0f904301a82eca361d33adeb233f877ac3"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"1c32884a21eb1a1d6ec62cf0951d74ca4e389850","unresolved":true,"context_lines":[{"line_number":152,"context_line":"        self.port \u003d self.configuration.tyds_http_port\r"},{"line_number":153,"context_line":"        self.username \u003d self.configuration.tyds_http_user\r"},{"line_number":154,"context_line":"        self.password \u003d self.configuration.tyds_http_password\r"},{"line_number":155,"context_line":"        if not self.password:\r"},{"line_number":156,"context_line":"            raise exception.InvalidInput(\r"},{"line_number":157,"context_line":"                reason\u003d\u0027Password is required for authentication.\u0027)\r"},{"line_number":158,"context_line":"        self.pools \u003d self.configuration.tyds_pools\r"},{"line_number":159,"context_line":"        self.client \u003d None\r"},{"line_number":160,"context_line":"        self.storage_protocol \u003d \u0027iSCSI\u0027\r"}],"source_content_type":"text/x-python","patch_set":1,"id":"20ecf77c_e9b9ee46","line":157,"range":{"start_line":155,"start_character":8,"end_line":157,"end_character":67},"updated":"2023-06-26 14:13:10.000000000","message":"This check should be in check_for_setup_error() instead of init.","commit_id":"2a075c0f904301a82eca361d33adeb233f877ac3"},{"author":{"_account_id":29878,"name":"x-23","email":"xe333@sina.com"},"change_message_id":"81df00b19e341e6bbc3112811507902ad9e8d3af","unresolved":false,"context_lines":[{"line_number":152,"context_line":"        self.port \u003d self.configuration.tyds_http_port\r"},{"line_number":153,"context_line":"        self.username \u003d self.configuration.tyds_http_user\r"},{"line_number":154,"context_line":"        self.password \u003d self.configuration.tyds_http_password\r"},{"line_number":155,"context_line":"        if not self.password:\r"},{"line_number":156,"context_line":"            raise exception.InvalidInput(\r"},{"line_number":157,"context_line":"                reason\u003d\u0027Password is required for authentication.\u0027)\r"},{"line_number":158,"context_line":"        self.pools \u003d self.configuration.tyds_pools\r"},{"line_number":159,"context_line":"        self.client \u003d None\r"},{"line_number":160,"context_line":"        self.storage_protocol \u003d \u0027iSCSI\u0027\r"}],"source_content_type":"text/x-python","patch_set":1,"id":"f0327c77_4e19e415","line":157,"range":{"start_line":155,"start_character":8,"end_line":157,"end_character":67},"in_reply_to":"20ecf77c_e9b9ee46","updated":"2023-06-28 00:58:54.000000000","message":"Thank you for your feedback. Since the check_for_setup_error() method already includes the necessary check, I agree with your suggestion to remove the check from the __init__() method. It is redundant and can be safely removed. Your input is appreciated, and I will make the necessary updates accordingly.","commit_id":"2a075c0f904301a82eca361d33adeb233f877ac3"}],"cinder/volume/drivers/toyou/tyds/tyds.py":[{"author":{"_account_id":29122,"name":"Raghavendra Tilay","email":"raghavendra-uddhav.tilay@hpe.com","username":"raghavendrat"},"change_message_id":"3ed9ba177989f478f92f3f693d87632797304724","unresolved":true,"context_lines":[{"line_number":51,"context_line":"               help\u003d\u0027Volume stripe size.\u0027),"},{"line_number":52,"context_line":"    cfg.IntOpt(\u0027tyds_clone_progress_interval\u0027,"},{"line_number":53,"context_line":"               default\u003d3,"},{"line_number":54,"context_line":"               help\u003d\u0027Get clone progress interval.\u0027),"},{"line_number":55,"context_line":"    cfg.IntOpt(\u0027tyds_copy_progress_interval\u0027,"},{"line_number":56,"context_line":"               default\u003d3,"},{"line_number":57,"context_line":"               help\u003d\u0027Get copy progress interval.\u0027),"}],"source_content_type":"text/x-python","patch_set":8,"id":"0062239c_c163e5c1","line":54,"range":{"start_line":54,"start_character":31,"end_line":54,"end_character":48},"updated":"2023-07-06 13:00:08.000000000","message":"is progress interval specified in minutes or seconds?","commit_id":"266bd7d6035dd838bf2c10e58b2d79d0dbda7786"},{"author":{"_account_id":29878,"name":"x-23","email":"xe333@sina.com"},"change_message_id":"f5ac6b5bc4b3da0b13f1a515220ffc6837716fd3","unresolved":false,"context_lines":[{"line_number":51,"context_line":"               help\u003d\u0027Volume stripe size.\u0027),"},{"line_number":52,"context_line":"    cfg.IntOpt(\u0027tyds_clone_progress_interval\u0027,"},{"line_number":53,"context_line":"               default\u003d3,"},{"line_number":54,"context_line":"               help\u003d\u0027Get clone progress interval.\u0027),"},{"line_number":55,"context_line":"    cfg.IntOpt(\u0027tyds_copy_progress_interval\u0027,"},{"line_number":56,"context_line":"               default\u003d3,"},{"line_number":57,"context_line":"               help\u003d\u0027Get copy progress interval.\u0027),"}],"source_content_type":"text/x-python","patch_set":8,"id":"1c9d8293_a1417991","line":54,"range":{"start_line":54,"start_character":31,"end_line":54,"end_character":48},"in_reply_to":"0062239c_c163e5c1","updated":"2023-07-07 04:39:25.000000000","message":"Thank you for bringing this to our attention. We have revised the help description of the configuration option. The \"tyds_clone_progress_interval\" and \"tyds_copy_progress_interval\" configuration options represent the interval in seconds for retrieving clone and copy progress, respectively. We appreciate your feedback, and we strive to provide clear and accurate description for the community.","commit_id":"266bd7d6035dd838bf2c10e58b2d79d0dbda7786"},{"author":{"_account_id":29122,"name":"Raghavendra Tilay","email":"raghavendra-uddhav.tilay@hpe.com","username":"raghavendrat"},"change_message_id":"3ed9ba177989f478f92f3f693d87632797304724","unresolved":true,"context_lines":[{"line_number":459,"context_line":"            client \u003d [{\"ip\": connector[\"ip\"], \"iqn\": connector[\"initiator\"]}]"},{"line_number":460,"context_line":"            self.client.create_initiator_group(group_name\u003dgroup_name,"},{"line_number":461,"context_line":"                                               client\u003dclient)"},{"line_number":462,"context_line":"        # Check IT existence"},{"line_number":463,"context_line":"        # add new volume to existing IT connection if it exists"},{"line_number":464,"context_line":"        it_list \u003d self.client.get_it()"},{"line_number":465,"context_line":"        it_info \u003d None"}],"source_content_type":"text/x-python","patch_set":8,"id":"3b9a695c_aa65f0af","line":462,"range":{"start_line":462,"start_character":16,"end_line":462,"end_character":19},"updated":"2023-07-06 13:00:08.000000000","message":"can we know, what does \"IT\" mean ?","commit_id":"266bd7d6035dd838bf2c10e58b2d79d0dbda7786"},{"author":{"_account_id":29878,"name":"x-23","email":"xe333@sina.com"},"change_message_id":"f5ac6b5bc4b3da0b13f1a515220ffc6837716fd3","unresolved":false,"context_lines":[{"line_number":459,"context_line":"            client \u003d [{\"ip\": connector[\"ip\"], \"iqn\": connector[\"initiator\"]}]"},{"line_number":460,"context_line":"            self.client.create_initiator_group(group_name\u003dgroup_name,"},{"line_number":461,"context_line":"                                               client\u003dclient)"},{"line_number":462,"context_line":"        # Check IT existence"},{"line_number":463,"context_line":"        # add new volume to existing IT connection if it exists"},{"line_number":464,"context_line":"        it_list \u003d self.client.get_it()"},{"line_number":465,"context_line":"        it_info \u003d None"}],"source_content_type":"text/x-python","patch_set":8,"id":"e49c5a8b_9db01cf0","line":462,"range":{"start_line":462,"start_character":16,"end_line":462,"end_character":19},"in_reply_to":"3b9a695c_aa65f0af","updated":"2023-07-07 04:39:25.000000000","message":"Thank you for your feedback and clarification. We apologize for any confusion caused by the comment \"# Check IT existence.\" In our internal terminology, \"IT\" refers to the initiator-target connection, which is a resource type that establishes a connection between the initiator and target on the storage system. As a result, we used this term in the comment. We appreciate your understanding and will ensure clearer and more descriptive comments in the future.","commit_id":"266bd7d6035dd838bf2c10e58b2d79d0dbda7786"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"cd5a21b1ef7d5a61a05486a00b290a3644467d10","unresolved":true,"context_lines":[{"line_number":42,"context_line":"    cfg.ListOpt(\u0027tyds_pools\u0027,"},{"line_number":43,"context_line":"                default\u003d[\u0027pool01\u0027],"},{"line_number":44,"context_line":"                help\u003d\u0027The pool name where volumes are stored.\u0027),"},{"line_number":45,"context_line":"    cfg.IntOpt(\u0027tyds_http_port\u0027,"},{"line_number":46,"context_line":"               default\u003d80,"},{"line_number":47,"context_line":"               help\u003d\u0027The port that connects to the http api.\u0027),"},{"line_number":48,"context_line":"    cfg.StrOpt(\u0027tyds_stripe_size\u0027,"}],"source_content_type":"text/x-python","patch_set":9,"id":"f5d24ac6_11c98e8a","line":45,"range":{"start_line":45,"start_character":8,"end_line":45,"end_character":14},"updated":"2023-07-11 14:58:57.000000000","message":"PortOpt would be better used here","commit_id":"b9dec9daa4b575f4d2bf74adcf00de8f94cf16ba"},{"author":{"_account_id":32464,"name":"caiqilong","email":"406454833@qq.com","username":"cccqqqlll"},"change_message_id":"be35810fe45dc6b57e602e07d41ddd5b58844e1e","unresolved":false,"context_lines":[{"line_number":42,"context_line":"    cfg.ListOpt(\u0027tyds_pools\u0027,"},{"line_number":43,"context_line":"                default\u003d[\u0027pool01\u0027],"},{"line_number":44,"context_line":"                help\u003d\u0027The pool name where volumes are stored.\u0027),"},{"line_number":45,"context_line":"    cfg.IntOpt(\u0027tyds_http_port\u0027,"},{"line_number":46,"context_line":"               default\u003d80,"},{"line_number":47,"context_line":"               help\u003d\u0027The port that connects to the http api.\u0027),"},{"line_number":48,"context_line":"    cfg.StrOpt(\u0027tyds_stripe_size\u0027,"}],"source_content_type":"text/x-python","patch_set":9,"id":"129f9202_f0fce9c2","line":45,"range":{"start_line":45,"start_character":8,"end_line":45,"end_character":14},"in_reply_to":"f5d24ac6_11c98e8a","updated":"2023-07-12 08:53:35.000000000","message":"Done","commit_id":"b9dec9daa4b575f4d2bf74adcf00de8f94cf16ba"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"cd5a21b1ef7d5a61a05486a00b290a3644467d10","unresolved":true,"context_lines":[{"line_number":54,"context_line":"    cfg.IntOpt(\u0027tyds_copy_progress_interval\u0027,"},{"line_number":55,"context_line":"               default\u003d3,"},{"line_number":56,"context_line":"               help\u003d\u0027Interval (in seconds) for retrieving copy progress.\u0027),"},{"line_number":57,"context_line":"    cfg.BoolOpt(\u0027multiattach\u0027,"},{"line_number":58,"context_line":"                default\u003dFalse,"},{"line_number":59,"context_line":"                help\u003d\u0027set True or False to control enable multiattach or not\u0027)"},{"line_number":60,"context_line":"]"}],"source_content_type":"text/x-python","patch_set":9,"id":"6fa6f5d9_864b56da","line":57,"range":{"start_line":57,"start_character":17,"end_line":57,"end_character":28},"updated":"2023-07-11 14:58:57.000000000","message":"Please rename this to tyds_multiattach so it doesn\u0027t sound like an option that would apply in other places.","commit_id":"b9dec9daa4b575f4d2bf74adcf00de8f94cf16ba"},{"author":{"_account_id":32464,"name":"caiqilong","email":"406454833@qq.com","username":"cccqqqlll"},"change_message_id":"be35810fe45dc6b57e602e07d41ddd5b58844e1e","unresolved":false,"context_lines":[{"line_number":54,"context_line":"    cfg.IntOpt(\u0027tyds_copy_progress_interval\u0027,"},{"line_number":55,"context_line":"               default\u003d3,"},{"line_number":56,"context_line":"               help\u003d\u0027Interval (in seconds) for retrieving copy progress.\u0027),"},{"line_number":57,"context_line":"    cfg.BoolOpt(\u0027multiattach\u0027,"},{"line_number":58,"context_line":"                default\u003dFalse,"},{"line_number":59,"context_line":"                help\u003d\u0027set True or False to control enable multiattach or not\u0027)"},{"line_number":60,"context_line":"]"}],"source_content_type":"text/x-python","patch_set":9,"id":"3a419fe3_10375202","line":57,"range":{"start_line":57,"start_character":17,"end_line":57,"end_character":28},"in_reply_to":"6fa6f5d9_864b56da","updated":"2023-07-12 08:53:35.000000000","message":"Done","commit_id":"b9dec9daa4b575f4d2bf74adcf00de8f94cf16ba"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"3d4c0b2ea74823ca0dc9ec1a73941b707d6c7e6e","unresolved":true,"context_lines":[{"line_number":54,"context_line":"    cfg.IntOpt(\u0027tyds_copy_progress_interval\u0027,"},{"line_number":55,"context_line":"               default\u003d3,"},{"line_number":56,"context_line":"               help\u003d\u0027Interval (in seconds) for retrieving copy progress.\u0027),"},{"line_number":57,"context_line":"    cfg.BoolOpt(\u0027multiattach\u0027,"},{"line_number":58,"context_line":"                default\u003dFalse,"},{"line_number":59,"context_line":"                help\u003d\u0027set True or False to control enable multiattach or not\u0027)"},{"line_number":60,"context_line":"]"},{"line_number":61,"context_line":"CONF \u003d cfg.CONF"},{"line_number":62,"context_line":"CONF.register_opts(tyds_opts, group\u003dconfiguration.SHARED_CONF_GROUP)"}],"source_content_type":"text/x-python","patch_set":9,"id":"80161bec_64e4855d","line":59,"range":{"start_line":57,"start_character":0,"end_line":59,"end_character":78},"updated":"2023-07-12 13:33:01.000000000","message":"I don\u0027t think this config option is needed. In cinder, backend should report if it supports multiattach or not based on it\u0027s capabilities. To control, if a volume created will be multiattach or not, we use the multiattach volume type.","commit_id":"b9dec9daa4b575f4d2bf74adcf00de8f94cf16ba"},{"author":{"_account_id":29878,"name":"x-23","email":"xe333@sina.com"},"change_message_id":"44f33d0e346b8381cfb3e7b5d6ffd8479c3c3e17","unresolved":false,"context_lines":[{"line_number":54,"context_line":"    cfg.IntOpt(\u0027tyds_copy_progress_interval\u0027,"},{"line_number":55,"context_line":"               default\u003d3,"},{"line_number":56,"context_line":"               help\u003d\u0027Interval (in seconds) for retrieving copy progress.\u0027),"},{"line_number":57,"context_line":"    cfg.BoolOpt(\u0027multiattach\u0027,"},{"line_number":58,"context_line":"                default\u003dFalse,"},{"line_number":59,"context_line":"                help\u003d\u0027set True or False to control enable multiattach or not\u0027)"},{"line_number":60,"context_line":"]"},{"line_number":61,"context_line":"CONF \u003d cfg.CONF"},{"line_number":62,"context_line":"CONF.register_opts(tyds_opts, group\u003dconfiguration.SHARED_CONF_GROUP)"}],"source_content_type":"text/x-python","patch_set":9,"id":"55e51930_a6f4a3e9","line":59,"range":{"start_line":57,"start_character":0,"end_line":59,"end_character":78},"in_reply_to":"80161bec_64e4855d","updated":"2023-07-13 06:17:31.000000000","message":"Thank you for your feedback. You raise a valid point regarding the necessity of the config option. In Cinder, it is indeed preferable for the backend to report its support for multiattach based on its capabilities.\n\nControlling the multiattach behavior of a volume through the use of a specific volume type is a more appropriate approach. By associating a volume with a multiattach volume type, the system can determine whether the volume is eligible for multiattachment.\n\nConsidering your suggestion, I agree that the config option for controlling multiattach may not be needed in this context. I will review the code and make the necessary adjustments to remove the config option and rely on the volume type to determine multiattach behavior.\n\nThank you for bringing this to my attention, and I appreciate your input in improving the functionality and design of the code.","commit_id":"b9dec9daa4b575f4d2bf74adcf00de8f94cf16ba"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"3d4c0b2ea74823ca0dc9ec1a73941b707d6c7e6e","unresolved":true,"context_lines":[{"line_number":67,"context_line":""},{"line_number":68,"context_line":""},{"line_number":69,"context_line":"class TYDSLogEn(Enum):"},{"line_number":70,"context_line":"    CREATE_VOLUME \u003d \u0027[Success] Cinder: Create Block Device, \u0027 \\"},{"line_number":71,"context_line":"                    \u0027Block Name: %s, Size in MB: %s, Pool Name: %s, \u0027 \\"},{"line_number":72,"context_line":"                    \u0027Stripe Size: %s.\u0027"},{"line_number":73,"context_line":"    CREATE_VOLUME_FAILED \u003d \u0027[Failed] Cinder: Create Block Device, \u0027 \\"}],"source_content_type":"text/x-python","patch_set":9,"id":"e21406cf_da1cfd0b","line":70,"range":{"start_line":70,"start_character":62,"end_line":70,"end_character":63},"updated":"2023-07-12 13:33:01.000000000","message":"instead of using backslash, we should prefer brackets to wrap multiline string values","commit_id":"b9dec9daa4b575f4d2bf74adcf00de8f94cf16ba"},{"author":{"_account_id":29878,"name":"x-23","email":"xe333@sina.com"},"change_message_id":"44f33d0e346b8381cfb3e7b5d6ffd8479c3c3e17","unresolved":false,"context_lines":[{"line_number":67,"context_line":""},{"line_number":68,"context_line":""},{"line_number":69,"context_line":"class TYDSLogEn(Enum):"},{"line_number":70,"context_line":"    CREATE_VOLUME \u003d \u0027[Success] Cinder: Create Block Device, \u0027 \\"},{"line_number":71,"context_line":"                    \u0027Block Name: %s, Size in MB: %s, Pool Name: %s, \u0027 \\"},{"line_number":72,"context_line":"                    \u0027Stripe Size: %s.\u0027"},{"line_number":73,"context_line":"    CREATE_VOLUME_FAILED \u003d \u0027[Failed] Cinder: Create Block Device, \u0027 \\"}],"source_content_type":"text/x-python","patch_set":9,"id":"fc61b444_edc0684f","line":70,"range":{"start_line":70,"start_character":62,"end_line":70,"end_character":63},"in_reply_to":"e21406cf_da1cfd0b","updated":"2023-07-13 06:17:31.000000000","message":"Thank you for your suggestion. You\u0027re right that using brackets to wrap multiline string values can improve readability and maintainability of the code.\n\nI will make the necessary changes to replace the backslashes with brackets to wrap multiline string values in the code. This will enhance the clarity of the code and make it easier to read and understand.\n\nI appreciate your feedback and attention to detail. Your input helps us improve the codebase and follow best practices.","commit_id":"b9dec9daa4b575f4d2bf74adcf00de8f94cf16ba"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"3d4c0b2ea74823ca0dc9ec1a73941b707d6c7e6e","unresolved":true,"context_lines":[{"line_number":98,"context_line":"                         \u0027pool_name: %s; block_name: %s \u0027 \\"},{"line_number":99,"context_line":"                         \u0027target_pool_name: %s, target_block_name: %s.\u0027"},{"line_number":100,"context_line":""},{"line_number":101,"context_line":""},{"line_number":102,"context_line":"class TYDSLogZh(Enum):"},{"line_number":103,"context_line":"    CREATE_VOLUME \u003d \u0027[成功] Cinder: 新建逻辑卷, 逻辑卷名: %s, \u0027 \\"},{"line_number":104,"context_line":"                    \u0027容量(MB): %s, 存储池: %s, 条带大小: %s\u0027"},{"line_number":105,"context_line":"    CREATE_VOLUME_FAILED \u003d \u0027[失败] Cinder: 新建逻辑卷, 逻辑卷名: %s, \u0027 \\"},{"line_number":106,"context_line":"                           \u0027容量(MB): %s, 存储池: %s, 条带大小: %s\u0027"},{"line_number":107,"context_line":"    DELETE_VOLUME \u003d \u0027[成功] Cinder: 删除逻辑卷: %s.\u0027"},{"line_number":108,"context_line":"    DELETE_VOLUME_FAILED \u003d \u0027[失败] Cinder: 删除失败, 卷: %s 有普通快照: %s, \u0027 \\"},{"line_number":109,"context_line":"                           \u0027请先删除这些普通快照在尝试删除该卷.\u0027"},{"line_number":110,"context_line":"    ATTACH_VOLUME \u003d \u0027[成功] Cinder: 挂载逻辑卷: %s, IP地址: %s, 主机: %s.\u0027"},{"line_number":111,"context_line":"    DETACH_VOLUME \u003d \u0027[成功] Cinder: 卸载逻辑卷: %s, IP地址: %s, 主机: %s.\u0027"},{"line_number":112,"context_line":"    COPY_IMAGE_TO_VOLUME \u003d \u0027[成功] Cinder: 复制从镜像: %s 到存储卷: %s, \u0027 \\"},{"line_number":113,"context_line":"                           \u0027容量(GB): %s, 存储池: %s.\u0027"},{"line_number":114,"context_line":"    COPY_VOLUME_TO_IMAGE \u003d \u0027[成功] Cinder: 复制从存储卷: %s 到镜像: %s, \u0027 \\"},{"line_number":115,"context_line":"                           \u0027容量(GB): %s, 存储池: %s.\u0027"},{"line_number":116,"context_line":"    EXTEND_VOLUME \u003d \u0027[成功] Cinder: 扩展存储卷: %s 从 %sMB 到 %sMB.\u0027"},{"line_number":117,"context_line":"    CREATE_SNAPSHOT \u003d \u0027[成功] Cinder: 创建快照: %s, 存储卷: %s.\u0027"},{"line_number":118,"context_line":"    DELETE_SNAPSHOT \u003d \u0027[成功] Cinder: 删除快照: %s, 存储卷: %s.\u0027"},{"line_number":119,"context_line":"    CREATE_VOLUME_FROM_SNAPSHOT \u003d \u0027[成功] Cinder: 从快照创建存储卷: %s, \u0027 \\"},{"line_number":120,"context_line":"                                  \u0027存储池: %s; 从快照: %s, 源存储卷: %s, \u0027 \\"},{"line_number":121,"context_line":"                                  \u0027源存储池: %s.\u0027"},{"line_number":122,"context_line":"    CREATE_VOLUME_FROM_SNAPSHOT_DONE \u003d \u0027[成功] Cinder: 完成从快照创建存储卷: \u0027 \\"},{"line_number":123,"context_line":"                                       \u0027%s, 存储池: %s; 从快照: %s, 源存储卷: \u0027 \\"},{"line_number":124,"context_line":"                                       \u0027%s, 源存储池: %s.\u0027"},{"line_number":125,"context_line":"    COPY_VOLUME_DONE \u003d \u0027[成功] Cinder: 完成克隆卷， \u0027 \\"},{"line_number":126,"context_line":"                       \u0027源存储池: %s; 源卷: %s, 目标存储池: %s, 目标卷: %s.\u0027"},{"line_number":127,"context_line":"    COPY_VOLUME_FAILED \u003d \u0027[失败] Cinder: 克隆卷失败, \u0027 \\"},{"line_number":128,"context_line":"                         \u0027源存储池: %s; 源卷: %s, 目标存储池: %s, 目标卷: %s.\u0027"},{"line_number":129,"context_line":""},{"line_number":130,"context_line":""},{"line_number":131,"context_line":"@interface.volumedriver"},{"line_number":132,"context_line":"class TYDSDriver(driver.MigrateVD, driver.BaseVD):"}],"source_content_type":"text/x-python","patch_set":9,"id":"f1ad1a32_83a26795","line":129,"range":{"start_line":101,"start_character":0,"end_line":129,"end_character":0},"updated":"2023-07-12 13:33:01.000000000","message":"log translation is done by OpneStack\u0027s i18n project so we don\u0027t need to handle different languages here\nsee https://docs.openstack.org/cinder/latest/contributor/i18n.html","commit_id":"b9dec9daa4b575f4d2bf74adcf00de8f94cf16ba"},{"author":{"_account_id":32464,"name":"caiqilong","email":"406454833@qq.com","username":"cccqqqlll"},"change_message_id":"6195f2bbaa5b96d3f4ccac5c8db97ec122bb869d","unresolved":false,"context_lines":[{"line_number":98,"context_line":"                         \u0027pool_name: %s; block_name: %s \u0027 \\"},{"line_number":99,"context_line":"                         \u0027target_pool_name: %s, target_block_name: %s.\u0027"},{"line_number":100,"context_line":""},{"line_number":101,"context_line":""},{"line_number":102,"context_line":"class TYDSLogZh(Enum):"},{"line_number":103,"context_line":"    CREATE_VOLUME \u003d \u0027[成功] Cinder: 新建逻辑卷, 逻辑卷名: %s, \u0027 \\"},{"line_number":104,"context_line":"                    \u0027容量(MB): %s, 存储池: %s, 条带大小: %s\u0027"},{"line_number":105,"context_line":"    CREATE_VOLUME_FAILED \u003d \u0027[失败] Cinder: 新建逻辑卷, 逻辑卷名: %s, \u0027 \\"},{"line_number":106,"context_line":"                           \u0027容量(MB): %s, 存储池: %s, 条带大小: %s\u0027"},{"line_number":107,"context_line":"    DELETE_VOLUME \u003d \u0027[成功] Cinder: 删除逻辑卷: %s.\u0027"},{"line_number":108,"context_line":"    DELETE_VOLUME_FAILED \u003d \u0027[失败] Cinder: 删除失败, 卷: %s 有普通快照: %s, \u0027 \\"},{"line_number":109,"context_line":"                           \u0027请先删除这些普通快照在尝试删除该卷.\u0027"},{"line_number":110,"context_line":"    ATTACH_VOLUME \u003d \u0027[成功] Cinder: 挂载逻辑卷: %s, IP地址: %s, 主机: %s.\u0027"},{"line_number":111,"context_line":"    DETACH_VOLUME \u003d \u0027[成功] Cinder: 卸载逻辑卷: %s, IP地址: %s, 主机: %s.\u0027"},{"line_number":112,"context_line":"    COPY_IMAGE_TO_VOLUME \u003d \u0027[成功] Cinder: 复制从镜像: %s 到存储卷: %s, \u0027 \\"},{"line_number":113,"context_line":"                           \u0027容量(GB): %s, 存储池: %s.\u0027"},{"line_number":114,"context_line":"    COPY_VOLUME_TO_IMAGE \u003d \u0027[成功] Cinder: 复制从存储卷: %s 到镜像: %s, \u0027 \\"},{"line_number":115,"context_line":"                           \u0027容量(GB): %s, 存储池: %s.\u0027"},{"line_number":116,"context_line":"    EXTEND_VOLUME \u003d \u0027[成功] Cinder: 扩展存储卷: %s 从 %sMB 到 %sMB.\u0027"},{"line_number":117,"context_line":"    CREATE_SNAPSHOT \u003d \u0027[成功] Cinder: 创建快照: %s, 存储卷: %s.\u0027"},{"line_number":118,"context_line":"    DELETE_SNAPSHOT \u003d \u0027[成功] Cinder: 删除快照: %s, 存储卷: %s.\u0027"},{"line_number":119,"context_line":"    CREATE_VOLUME_FROM_SNAPSHOT \u003d \u0027[成功] Cinder: 从快照创建存储卷: %s, \u0027 \\"},{"line_number":120,"context_line":"                                  \u0027存储池: %s; 从快照: %s, 源存储卷: %s, \u0027 \\"},{"line_number":121,"context_line":"                                  \u0027源存储池: %s.\u0027"},{"line_number":122,"context_line":"    CREATE_VOLUME_FROM_SNAPSHOT_DONE \u003d \u0027[成功] Cinder: 完成从快照创建存储卷: \u0027 \\"},{"line_number":123,"context_line":"                                       \u0027%s, 存储池: %s; 从快照: %s, 源存储卷: \u0027 \\"},{"line_number":124,"context_line":"                                       \u0027%s, 源存储池: %s.\u0027"},{"line_number":125,"context_line":"    COPY_VOLUME_DONE \u003d \u0027[成功] Cinder: 完成克隆卷， \u0027 \\"},{"line_number":126,"context_line":"                       \u0027源存储池: %s; 源卷: %s, 目标存储池: %s, 目标卷: %s.\u0027"},{"line_number":127,"context_line":"    COPY_VOLUME_FAILED \u003d \u0027[失败] Cinder: 克隆卷失败, \u0027 \\"},{"line_number":128,"context_line":"                         \u0027源存储池: %s; 源卷: %s, 目标存储池: %s, 目标卷: %s.\u0027"},{"line_number":129,"context_line":""},{"line_number":130,"context_line":""},{"line_number":131,"context_line":"@interface.volumedriver"},{"line_number":132,"context_line":"class TYDSDriver(driver.MigrateVD, driver.BaseVD):"}],"source_content_type":"text/x-python","patch_set":9,"id":"e4a0a1f5_e60b4fa8","line":129,"range":{"start_line":101,"start_character":0,"end_line":129,"end_character":0},"in_reply_to":"f1ad1a32_83a26795","updated":"2023-07-13 02:29:51.000000000","message":"Done\nThanks for your reviewing and comments. I am sorry that using a self translation way. We have discarded sending logs translation mapping from cinder driver to storage system. Instead, the storage system will select proper language to translate the logs requested by cinder driver itself.","commit_id":"b9dec9daa4b575f4d2bf74adcf00de8f94cf16ba"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"cf7244c7211eb6b8fc21773adb3966ff4a11d200","unresolved":true,"context_lines":[{"line_number":152,"context_line":"        self.password \u003d self.configuration.san_password"},{"line_number":153,"context_line":"        self.pools \u003d self.configuration.tyds_pools"},{"line_number":154,"context_line":"        self.client \u003d None"},{"line_number":155,"context_line":"        self.storage_protocol \u003d \u0027iSCSI\u0027"},{"line_number":156,"context_line":""},{"line_number":157,"context_line":"    @staticmethod"},{"line_number":158,"context_line":"    def get_driver_options():"}],"source_content_type":"text/x-python","patch_set":9,"id":"fc3ef8e4_77c7f72a","line":155,"range":{"start_line":155,"start_character":32,"end_line":155,"end_character":39},"updated":"2023-07-12 02:02:42.000000000","message":"please use cinder.common.constants.ISCSI for this instead of the literal string","commit_id":"b9dec9daa4b575f4d2bf74adcf00de8f94cf16ba"},{"author":{"_account_id":32464,"name":"caiqilong","email":"406454833@qq.com","username":"cccqqqlll"},"change_message_id":"be35810fe45dc6b57e602e07d41ddd5b58844e1e","unresolved":false,"context_lines":[{"line_number":152,"context_line":"        self.password \u003d self.configuration.san_password"},{"line_number":153,"context_line":"        self.pools \u003d self.configuration.tyds_pools"},{"line_number":154,"context_line":"        self.client \u003d None"},{"line_number":155,"context_line":"        self.storage_protocol \u003d \u0027iSCSI\u0027"},{"line_number":156,"context_line":""},{"line_number":157,"context_line":"    @staticmethod"},{"line_number":158,"context_line":"    def get_driver_options():"}],"source_content_type":"text/x-python","patch_set":9,"id":"18eb618d_d9659a99","line":155,"range":{"start_line":155,"start_character":32,"end_line":155,"end_character":39},"in_reply_to":"fc3ef8e4_77c7f72a","updated":"2023-07-12 08:53:35.000000000","message":"Done","commit_id":"b9dec9daa4b575f4d2bf74adcf00de8f94cf16ba"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"cf7244c7211eb6b8fc21773adb3966ff4a11d200","unresolved":true,"context_lines":[{"line_number":156,"context_line":""},{"line_number":157,"context_line":"    @staticmethod"},{"line_number":158,"context_line":"    def get_driver_options():"},{"line_number":159,"context_line":"        return tyds_opts"},{"line_number":160,"context_line":""},{"line_number":161,"context_line":"    def do_setup(self, context):"},{"line_number":162,"context_line":"        LOG.debug(\"Start setup Tyds client\")"}],"source_content_type":"text/x-python","patch_set":9,"id":"cc7f33ab_aeb1fac9","line":159,"range":{"start_line":159,"start_character":8,"end_line":159,"end_character":24},"updated":"2023-07-12 02:02:42.000000000","message":"You\u0027re also using some options from the BaseVD (lines 149,151, 152) and they should be included here.  See this patch for an example of how to do this:\nhttps://review.opendev.org/c/openstack/cinder/+/770807/1/cinder/volume/drivers/san/hp/hpmsa_common.py#89","commit_id":"b9dec9daa4b575f4d2bf74adcf00de8f94cf16ba"},{"author":{"_account_id":32464,"name":"caiqilong","email":"406454833@qq.com","username":"cccqqqlll"},"change_message_id":"be35810fe45dc6b57e602e07d41ddd5b58844e1e","unresolved":false,"context_lines":[{"line_number":156,"context_line":""},{"line_number":157,"context_line":"    @staticmethod"},{"line_number":158,"context_line":"    def get_driver_options():"},{"line_number":159,"context_line":"        return tyds_opts"},{"line_number":160,"context_line":""},{"line_number":161,"context_line":"    def do_setup(self, context):"},{"line_number":162,"context_line":"        LOG.debug(\"Start setup Tyds client\")"}],"source_content_type":"text/x-python","patch_set":9,"id":"4667f642_f3ca60b1","line":159,"range":{"start_line":159,"start_character":8,"end_line":159,"end_character":24},"in_reply_to":"cc7f33ab_aeb1fac9","updated":"2023-07-12 08:53:35.000000000","message":"Done","commit_id":"b9dec9daa4b575f4d2bf74adcf00de8f94cf16ba"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"3d4c0b2ea74823ca0dc9ec1a73941b707d6c7e6e","unresolved":true,"context_lines":[{"line_number":178,"context_line":"        if missing_params:"},{"line_number":179,"context_line":"            missing_params_str \u003d \u0027, \u0027.join(missing_params)"},{"line_number":180,"context_line":"            raise exception.InvalidInput("},{"line_number":181,"context_line":"                reason\u003df\"The following parameters are not set: \""},{"line_number":182,"context_line":"                       f\"{missing_params_str}\")"},{"line_number":183,"context_line":""},{"line_number":184,"context_line":"    def get_volume_stats(self, refresh\u003dFalse):"},{"line_number":185,"context_line":"        \"\"\"Get volume stats."}],"source_content_type":"text/x-python","patch_set":9,"id":"bf7cb513_c610566a","line":182,"range":{"start_line":181,"start_character":16,"end_line":182,"end_character":45},"updated":"2023-07-12 13:33:01.000000000","message":"nit: for better readability, better to define this as a separate variable and use it here,\nAlso we should use i18n standard here\n\n    msg \u003d _(f\"The following parameters are not set: {missing_params_str}\")\n    raise exception.InvalidInput(reason\u003dmsg)","commit_id":"b9dec9daa4b575f4d2bf74adcf00de8f94cf16ba"},{"author":{"_account_id":29878,"name":"x-23","email":"xe333@sina.com"},"change_message_id":"44f33d0e346b8381cfb3e7b5d6ffd8479c3c3e17","unresolved":false,"context_lines":[{"line_number":178,"context_line":"        if missing_params:"},{"line_number":179,"context_line":"            missing_params_str \u003d \u0027, \u0027.join(missing_params)"},{"line_number":180,"context_line":"            raise exception.InvalidInput("},{"line_number":181,"context_line":"                reason\u003df\"The following parameters are not set: \""},{"line_number":182,"context_line":"                       f\"{missing_params_str}\")"},{"line_number":183,"context_line":""},{"line_number":184,"context_line":"    def get_volume_stats(self, refresh\u003dFalse):"},{"line_number":185,"context_line":"        \"\"\"Get volume stats."}],"source_content_type":"text/x-python","patch_set":9,"id":"3ca8118f_d565cf1b","line":182,"range":{"start_line":181,"start_character":16,"end_line":182,"end_character":45},"in_reply_to":"bf7cb513_c610566a","updated":"2023-07-13 06:17:31.000000000","message":"Thank you for your feedback and suggestions. I agree that defining the message as a separate variable can enhance readability. Additionally, using the i18n standard is a good practice for ensuring internationalization support.\nThank you for pointing out these improvements. If you have any further questions or concerns, please let me know.","commit_id":"b9dec9daa4b575f4d2bf74adcf00de8f94cf16ba"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"cf7244c7211eb6b8fc21773adb3966ff4a11d200","unresolved":true,"context_lines":[{"line_number":181,"context_line":"                reason\u003df\"The following parameters are not set: \""},{"line_number":182,"context_line":"                       f\"{missing_params_str}\")"},{"line_number":183,"context_line":""},{"line_number":184,"context_line":"    def get_volume_stats(self, refresh\u003dFalse):"},{"line_number":185,"context_line":"        \"\"\"Get volume stats."},{"line_number":186,"context_line":""},{"line_number":187,"context_line":"        If we haven\u0027t gotten stats yet or \u0027refresh\u0027 is True,"},{"line_number":188,"context_line":"        run update the stats first."},{"line_number":189,"context_line":"        \"\"\""},{"line_number":190,"context_line":"        if not self._stats or refresh:"},{"line_number":191,"context_line":"            self._update_volume_stats()"},{"line_number":192,"context_line":"        return self._stats"},{"line_number":193,"context_line":""},{"line_number":194,"context_line":"    def _update_volume_stats(self):"},{"line_number":195,"context_line":"        \"\"\"Update the backend stats including TOYOU info and pools info.\"\"\""}],"source_content_type":"text/x-python","patch_set":9,"id":"b1c863e3_95d79f93","line":192,"range":{"start_line":184,"start_character":0,"end_line":192,"end_character":26},"updated":"2023-07-12 02:02:42.000000000","message":"This is identical to the function defined in the BaseVD, which you inherit from, so no need to redefine it here.","commit_id":"b9dec9daa4b575f4d2bf74adcf00de8f94cf16ba"},{"author":{"_account_id":32464,"name":"caiqilong","email":"406454833@qq.com","username":"cccqqqlll"},"change_message_id":"be35810fe45dc6b57e602e07d41ddd5b58844e1e","unresolved":false,"context_lines":[{"line_number":181,"context_line":"                reason\u003df\"The following parameters are not set: \""},{"line_number":182,"context_line":"                       f\"{missing_params_str}\")"},{"line_number":183,"context_line":""},{"line_number":184,"context_line":"    def get_volume_stats(self, refresh\u003dFalse):"},{"line_number":185,"context_line":"        \"\"\"Get volume stats."},{"line_number":186,"context_line":""},{"line_number":187,"context_line":"        If we haven\u0027t gotten stats yet or \u0027refresh\u0027 is True,"},{"line_number":188,"context_line":"        run update the stats first."},{"line_number":189,"context_line":"        \"\"\""},{"line_number":190,"context_line":"        if not self._stats or refresh:"},{"line_number":191,"context_line":"            self._update_volume_stats()"},{"line_number":192,"context_line":"        return self._stats"},{"line_number":193,"context_line":""},{"line_number":194,"context_line":"    def _update_volume_stats(self):"},{"line_number":195,"context_line":"        \"\"\"Update the backend stats including TOYOU info and pools info.\"\"\""}],"source_content_type":"text/x-python","patch_set":9,"id":"19f3e964_c7b165e5","line":192,"range":{"start_line":184,"start_character":0,"end_line":192,"end_character":26},"in_reply_to":"b1c863e3_95d79f93","updated":"2023-07-12 08:53:35.000000000","message":"Done","commit_id":"b9dec9daa4b575f4d2bf74adcf00de8f94cf16ba"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"cd5a21b1ef7d5a61a05486a00b290a3644467d10","unresolved":true,"context_lines":[{"line_number":315,"context_line":"                                \u0027%(target_block_name)s.\u0027,"},{"line_number":316,"context_line":"                                {\u0027rescan\u0027: rescan, \u0027block_name\u0027: lun_name,"},{"line_number":317,"context_line":"                                 \u0027target_block_name\u0027: target_block})"},{"line_number":318,"context_line":"                            greenthread.sleep(interval)"},{"line_number":319,"context_line":"                            continue"},{"line_number":320,"context_line":"                        LOG.info("},{"line_number":321,"context_line":"                            \u0027Clone rescan: %(rescan)s, task done from \u0027"}],"source_content_type":"text/x-python","patch_set":9,"id":"a7bbd7c6_27ce5eea","line":318,"range":{"start_line":318,"start_character":28,"end_line":318,"end_character":45},"updated":"2023-07-11 14:58:57.000000000","message":"Can just call time.sleep() instead, which would be better.","commit_id":"b9dec9daa4b575f4d2bf74adcf00de8f94cf16ba"},{"author":{"_account_id":32464,"name":"caiqilong","email":"406454833@qq.com","username":"cccqqqlll"},"change_message_id":"be35810fe45dc6b57e602e07d41ddd5b58844e1e","unresolved":false,"context_lines":[{"line_number":315,"context_line":"                                \u0027%(target_block_name)s.\u0027,"},{"line_number":316,"context_line":"                                {\u0027rescan\u0027: rescan, \u0027block_name\u0027: lun_name,"},{"line_number":317,"context_line":"                                 \u0027target_block_name\u0027: target_block})"},{"line_number":318,"context_line":"                            greenthread.sleep(interval)"},{"line_number":319,"context_line":"                            continue"},{"line_number":320,"context_line":"                        LOG.info("},{"line_number":321,"context_line":"                            \u0027Clone rescan: %(rescan)s, task done from \u0027"}],"source_content_type":"text/x-python","patch_set":9,"id":"27fb8c75_0b9bcb89","line":318,"range":{"start_line":318,"start_character":28,"end_line":318,"end_character":45},"in_reply_to":"a7bbd7c6_27ce5eea","updated":"2023-07-12 08:53:35.000000000","message":"Done","commit_id":"b9dec9daa4b575f4d2bf74adcf00de8f94cf16ba"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"cd5a21b1ef7d5a61a05486a00b290a3644467d10","unresolved":true,"context_lines":[{"line_number":341,"context_line":"                        while_exit \u003d True"},{"line_number":342,"context_line":"                    if while_exit:"},{"line_number":343,"context_line":"                        break"},{"line_number":344,"context_line":"                    greenthread.sleep(interval)"},{"line_number":345,"context_line":"                return ret"},{"line_number":346,"context_line":"            except Exception as err:"},{"line_number":347,"context_line":"                LOG.error(\u0027Copy volume failed reason: %s\u0027, err)"}],"source_content_type":"text/x-python","patch_set":9,"id":"5d33e3a5_ff54580b","line":344,"range":{"start_line":344,"start_character":20,"end_line":344,"end_character":37},"updated":"2023-07-11 14:58:57.000000000","message":"Can just call time.sleep() instead, which would be better.","commit_id":"b9dec9daa4b575f4d2bf74adcf00de8f94cf16ba"},{"author":{"_account_id":32464,"name":"caiqilong","email":"406454833@qq.com","username":"cccqqqlll"},"change_message_id":"be35810fe45dc6b57e602e07d41ddd5b58844e1e","unresolved":false,"context_lines":[{"line_number":341,"context_line":"                        while_exit \u003d True"},{"line_number":342,"context_line":"                    if while_exit:"},{"line_number":343,"context_line":"                        break"},{"line_number":344,"context_line":"                    greenthread.sleep(interval)"},{"line_number":345,"context_line":"                return ret"},{"line_number":346,"context_line":"            except Exception as err:"},{"line_number":347,"context_line":"                LOG.error(\u0027Copy volume failed reason: %s\u0027, err)"}],"source_content_type":"text/x-python","patch_set":9,"id":"d5cf3418_03570da5","line":344,"range":{"start_line":344,"start_character":20,"end_line":344,"end_character":37},"in_reply_to":"5d33e3a5_ff54580b","updated":"2023-07-12 08:53:35.000000000","message":"Done","commit_id":"b9dec9daa4b575f4d2bf74adcf00de8f94cf16ba"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"3d4c0b2ea74823ca0dc9ec1a73941b707d6c7e6e","unresolved":true,"context_lines":[{"line_number":349,"context_line":""},{"line_number":350,"context_line":"        if _wait_copy_progress(block_id, block_name, target_block_name):"},{"line_number":351,"context_line":"            self.client.http_log("},{"line_number":352,"context_line":"                TYDSLogEn.COPY_VOLUME_DONE.value % ("},{"line_number":353,"context_line":"                    pool_name,"},{"line_number":354,"context_line":"                    block_name,"},{"line_number":355,"context_line":"                    target_pool_name,"},{"line_number":356,"context_line":"                    target_block_name"},{"line_number":357,"context_line":"                ),"},{"line_number":358,"context_line":"                TYDSLogZh.COPY_VOLUME_DONE.value % ("},{"line_number":359,"context_line":"                    pool_name,"},{"line_number":360,"context_line":"                    block_name,"},{"line_number":361,"context_line":"                    target_pool_name,"},{"line_number":362,"context_line":"                    target_block_name"},{"line_number":363,"context_line":"                )"},{"line_number":364,"context_line":"            )"},{"line_number":365,"context_line":"        else:"},{"line_number":366,"context_line":"            self._delete_volume_if_clone_failed(target_block_name, pool_name,"}],"source_content_type":"text/x-python","patch_set":9,"id":"e8414d05_8fd67340","line":363,"range":{"start_line":352,"start_character":0,"end_line":363,"end_character":17},"updated":"2023-07-12 13:33:01.000000000","message":"Here we are generating logs in 2 languages which doesn\u0027t look correct. OpenStack handles internationalization with the i18n project and this should be automatically translated based on the region","commit_id":"b9dec9daa4b575f4d2bf74adcf00de8f94cf16ba"},{"author":{"_account_id":32464,"name":"caiqilong","email":"406454833@qq.com","username":"cccqqqlll"},"change_message_id":"6195f2bbaa5b96d3f4ccac5c8db97ec122bb869d","unresolved":false,"context_lines":[{"line_number":349,"context_line":""},{"line_number":350,"context_line":"        if _wait_copy_progress(block_id, block_name, target_block_name):"},{"line_number":351,"context_line":"            self.client.http_log("},{"line_number":352,"context_line":"                TYDSLogEn.COPY_VOLUME_DONE.value % ("},{"line_number":353,"context_line":"                    pool_name,"},{"line_number":354,"context_line":"                    block_name,"},{"line_number":355,"context_line":"                    target_pool_name,"},{"line_number":356,"context_line":"                    target_block_name"},{"line_number":357,"context_line":"                ),"},{"line_number":358,"context_line":"                TYDSLogZh.COPY_VOLUME_DONE.value % ("},{"line_number":359,"context_line":"                    pool_name,"},{"line_number":360,"context_line":"                    block_name,"},{"line_number":361,"context_line":"                    target_pool_name,"},{"line_number":362,"context_line":"                    target_block_name"},{"line_number":363,"context_line":"                )"},{"line_number":364,"context_line":"            )"},{"line_number":365,"context_line":"        else:"},{"line_number":366,"context_line":"            self._delete_volume_if_clone_failed(target_block_name, pool_name,"}],"source_content_type":"text/x-python","patch_set":9,"id":"3ad62719_a13ec010","line":363,"range":{"start_line":352,"start_character":0,"end_line":363,"end_character":17},"in_reply_to":"e8414d05_8fd67340","updated":"2023-07-13 02:29:51.000000000","message":"Done\nThanks for your reviewing and comments. I am sorry that using a self translation way. We have discarded sending logs translation mapping from cinder driver to storage system. Instead, the storage system will select proper language to translate the logs requested by cinder driver itself.","commit_id":"b9dec9daa4b575f4d2bf74adcf00de8f94cf16ba"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"3d4c0b2ea74823ca0dc9ec1a73941b707d6c7e6e","unresolved":true,"context_lines":[{"line_number":410,"context_line":"                vol_name, size, pool_name, stripe_size),"},{"line_number":411,"context_line":"        )"},{"line_number":412,"context_line":""},{"line_number":413,"context_line":"        model_update \u003d None"},{"line_number":414,"context_line":"        return model_update"},{"line_number":415,"context_line":""},{"line_number":416,"context_line":"    def retype(self, context, volume, new_type, diff, host):"},{"line_number":417,"context_line":"        # success"}],"source_content_type":"text/x-python","patch_set":9,"id":"7ec48e49_4a62a536","line":414,"range":{"start_line":413,"start_character":8,"end_line":414,"end_character":27},"updated":"2023-07-12 13:33:01.000000000","message":"model_update is used to update the DB with the volume info, although not mandatory, it\u0027s good to use it if necessary\n\nAlso a method not returning anything returns None so these two lines are redundant","commit_id":"b9dec9daa4b575f4d2bf74adcf00de8f94cf16ba"},{"author":{"_account_id":29878,"name":"x-23","email":"xe333@sina.com"},"change_message_id":"44f33d0e346b8381cfb3e7b5d6ffd8479c3c3e17","unresolved":false,"context_lines":[{"line_number":410,"context_line":"                vol_name, size, pool_name, stripe_size),"},{"line_number":411,"context_line":"        )"},{"line_number":412,"context_line":""},{"line_number":413,"context_line":"        model_update \u003d None"},{"line_number":414,"context_line":"        return model_update"},{"line_number":415,"context_line":""},{"line_number":416,"context_line":"    def retype(self, context, volume, new_type, diff, host):"},{"line_number":417,"context_line":"        # success"}],"source_content_type":"text/x-python","patch_set":9,"id":"06cc2117_a0e15be3","line":414,"range":{"start_line":413,"start_character":8,"end_line":414,"end_character":27},"in_reply_to":"7ec48e49_4a62a536","updated":"2023-07-13 06:17:31.000000000","message":"Thank you for your valuable feedback. We appreciate your suggestion to remove the redundant lines in the code, and we have made the necessary changes.","commit_id":"b9dec9daa4b575f4d2bf74adcf00de8f94cf16ba"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"3d4c0b2ea74823ca0dc9ec1a73941b707d6c7e6e","unresolved":true,"context_lines":[{"line_number":428,"context_line":"                TYDSLogZh.DELETE_VOLUME.value % vol_name,"},{"line_number":429,"context_line":"                operation\u003d\"delete\","},{"line_number":430,"context_line":"            )"},{"line_number":431,"context_line":"        else:"},{"line_number":432,"context_line":"            LOG.error(\u0027Delete volume %s not found.\u0027, vol_name)"},{"line_number":433,"context_line":""},{"line_number":434,"context_line":"    def ensure_export(self, context, volume):"},{"line_number":435,"context_line":"        pass"}],"source_content_type":"text/x-python","patch_set":9,"id":"174eb6a6_bd2190ca","line":432,"range":{"start_line":431,"start_character":0,"end_line":432,"end_character":62},"updated":"2023-07-12 13:33:01.000000000","message":"we should not log an error here since this is a success case, maybe an info log?","commit_id":"b9dec9daa4b575f4d2bf74adcf00de8f94cf16ba"},{"author":{"_account_id":29878,"name":"x-23","email":"xe333@sina.com"},"change_message_id":"44f33d0e346b8381cfb3e7b5d6ffd8479c3c3e17","unresolved":false,"context_lines":[{"line_number":428,"context_line":"                TYDSLogZh.DELETE_VOLUME.value % vol_name,"},{"line_number":429,"context_line":"                operation\u003d\"delete\","},{"line_number":430,"context_line":"            )"},{"line_number":431,"context_line":"        else:"},{"line_number":432,"context_line":"            LOG.error(\u0027Delete volume %s not found.\u0027, vol_name)"},{"line_number":433,"context_line":""},{"line_number":434,"context_line":"    def ensure_export(self, context, volume):"},{"line_number":435,"context_line":"        pass"}],"source_content_type":"text/x-python","patch_set":9,"id":"50b18a80_7f078c3b","line":432,"range":{"start_line":431,"start_character":0,"end_line":432,"end_character":62},"in_reply_to":"174eb6a6_bd2190ca","updated":"2023-07-13 06:17:31.000000000","message":"Thank you for your feedback. You are correct, in this case, since the operation of deleting volumes and snapshots was successful even if the volume or snapshot was not found, it would be more appropriate to log this as an informational message rather than an error.\n\nWe have made the necessary adjustments and changed the log level to `info` in both places. By doing so, we ensure that the log accurately reflects the success of the operation.","commit_id":"b9dec9daa4b575f4d2bf74adcf00de8f94cf16ba"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"cd5a21b1ef7d5a61a05486a00b290a3644467d10","unresolved":true,"context_lines":[{"line_number":502,"context_line":""},{"line_number":503,"context_line":"            # Generate return info"},{"line_number":504,"context_line":"            target_node_list \u003d self.client.get_target()"},{"line_number":505,"context_line":"            target_portal \u003d \u0027%s:3260\u0027 % target_node_list[0][\u0027ipAddr\u0027]"},{"line_number":506,"context_line":"            target_iqns \u003d [target_name] * len(target_node_list)"},{"line_number":507,"context_line":"            target_portals \u003d [\u0027%s:3260\u0027 % p[\u0027ipAddr\u0027]"},{"line_number":508,"context_line":"                              for p in target_node_list]"}],"source_content_type":"text/x-python","patch_set":9,"id":"e464ecbe_750f0626","line":505,"range":{"start_line":505,"start_character":29,"end_line":505,"end_character":36},"updated":"2023-07-11 14:58:57.000000000","message":"This will break for ipv6.","commit_id":"b9dec9daa4b575f4d2bf74adcf00de8f94cf16ba"},{"author":{"_account_id":32464,"name":"caiqilong","email":"406454833@qq.com","username":"cccqqqlll"},"change_message_id":"be35810fe45dc6b57e602e07d41ddd5b58844e1e","unresolved":false,"context_lines":[{"line_number":502,"context_line":""},{"line_number":503,"context_line":"            # Generate return info"},{"line_number":504,"context_line":"            target_node_list \u003d self.client.get_target()"},{"line_number":505,"context_line":"            target_portal \u003d \u0027%s:3260\u0027 % target_node_list[0][\u0027ipAddr\u0027]"},{"line_number":506,"context_line":"            target_iqns \u003d [target_name] * len(target_node_list)"},{"line_number":507,"context_line":"            target_portals \u003d [\u0027%s:3260\u0027 % p[\u0027ipAddr\u0027]"},{"line_number":508,"context_line":"                              for p in target_node_list]"}],"source_content_type":"text/x-python","patch_set":9,"id":"0dbce4d1_a77b5a89","line":505,"range":{"start_line":505,"start_character":29,"end_line":505,"end_character":36},"in_reply_to":"e464ecbe_750f0626","updated":"2023-07-12 08:53:35.000000000","message":"Done","commit_id":"b9dec9daa4b575f4d2bf74adcf00de8f94cf16ba"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"3d4c0b2ea74823ca0dc9ec1a73941b707d6c7e6e","unresolved":true,"context_lines":[{"line_number":521,"context_line":"            self.client.http_log("},{"line_number":522,"context_line":"                TYDSLogEn.ATTACH_VOLUME.value % ("},{"line_number":523,"context_line":"                    volume_name, connector.get(\u0027ip\u0027), connector.get(\u0027host\u0027)),"},{"line_number":524,"context_line":"                TYDSLogZh.ATTACH_VOLUME.value % ("},{"line_number":525,"context_line":"                    volume_name, connector.get(\u0027ip\u0027), connector.get(\u0027host\u0027))"},{"line_number":526,"context_line":"            )"},{"line_number":527,"context_line":""},{"line_number":528,"context_line":"            return {\u0027driver_volume_type\u0027: \u0027iscsi\u0027, \u0027data\u0027: properties}"},{"line_number":529,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":9,"id":"8efa0081_20ab7115","line":526,"range":{"start_line":524,"start_character":0,"end_line":526,"end_character":13},"updated":"2023-07-12 13:33:01.000000000","message":"again it\u0027s better to let i18n handle this","commit_id":"b9dec9daa4b575f4d2bf74adcf00de8f94cf16ba"},{"author":{"_account_id":32464,"name":"caiqilong","email":"406454833@qq.com","username":"cccqqqlll"},"change_message_id":"6195f2bbaa5b96d3f4ccac5c8db97ec122bb869d","unresolved":false,"context_lines":[{"line_number":521,"context_line":"            self.client.http_log("},{"line_number":522,"context_line":"                TYDSLogEn.ATTACH_VOLUME.value % ("},{"line_number":523,"context_line":"                    volume_name, connector.get(\u0027ip\u0027), connector.get(\u0027host\u0027)),"},{"line_number":524,"context_line":"                TYDSLogZh.ATTACH_VOLUME.value % ("},{"line_number":525,"context_line":"                    volume_name, connector.get(\u0027ip\u0027), connector.get(\u0027host\u0027))"},{"line_number":526,"context_line":"            )"},{"line_number":527,"context_line":""},{"line_number":528,"context_line":"            return {\u0027driver_volume_type\u0027: \u0027iscsi\u0027, \u0027data\u0027: properties}"},{"line_number":529,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":9,"id":"5a4d3d3c_777d93e5","line":526,"range":{"start_line":524,"start_character":0,"end_line":526,"end_character":13},"in_reply_to":"8efa0081_20ab7115","updated":"2023-07-13 02:29:51.000000000","message":"Done\nThanks for your reviewing and comments. I am sorry that using a self translation way. We have discarded sending logs translation mapping from cinder driver to storage system. Instead, the storage system will select proper language to translate the logs requested by cinder driver itself.","commit_id":"b9dec9daa4b575f4d2bf74adcf00de8f94cf16ba"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"cd5a21b1ef7d5a61a05486a00b290a3644467d10","unresolved":true,"context_lines":[{"line_number":535,"context_line":"        if not connector:"},{"line_number":536,"context_line":"            # If the connector is empty, the warning log is recorded and"},{"line_number":537,"context_line":"            # returned directly, without subsequent separation operations"},{"line_number":538,"context_line":"            LOG.warning("},{"line_number":539,"context_line":"                \"Connector is None. Skipping termination for volume %s.\","},{"line_number":540,"context_line":"                volume.name)"},{"line_number":541,"context_line":"            return"}],"source_content_type":"text/x-python","patch_set":9,"id":"d895487c_3539f255","line":538,"range":{"start_line":538,"start_character":16,"end_line":538,"end_character":23},"updated":"2023-07-11 14:58:57.000000000","message":"Probably does not need to be a warning level message?","commit_id":"b9dec9daa4b575f4d2bf74adcf00de8f94cf16ba"},{"author":{"_account_id":32464,"name":"caiqilong","email":"406454833@qq.com","username":"cccqqqlll"},"change_message_id":"be35810fe45dc6b57e602e07d41ddd5b58844e1e","unresolved":false,"context_lines":[{"line_number":535,"context_line":"        if not connector:"},{"line_number":536,"context_line":"            # If the connector is empty, the warning log is recorded and"},{"line_number":537,"context_line":"            # returned directly, without subsequent separation operations"},{"line_number":538,"context_line":"            LOG.warning("},{"line_number":539,"context_line":"                \"Connector is None. Skipping termination for volume %s.\","},{"line_number":540,"context_line":"                volume.name)"},{"line_number":541,"context_line":"            return"}],"source_content_type":"text/x-python","patch_set":9,"id":"584eff30_e7a24a90","line":538,"range":{"start_line":538,"start_character":16,"end_line":538,"end_character":23},"in_reply_to":"d895487c_3539f255","updated":"2023-07-12 08:53:35.000000000","message":"Done","commit_id":"b9dec9daa4b575f4d2bf74adcf00de8f94cf16ba"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"3d4c0b2ea74823ca0dc9ec1a73941b707d6c7e6e","unresolved":true,"context_lines":[{"line_number":636,"context_line":"        # get a name from new volume"},{"line_number":637,"context_line":"        target_block_name \u003d cinder_utils.convert_str(volume.name)"},{"line_number":638,"context_line":"        # ready to create clone volume"},{"line_number":639,"context_line":"        self._clone_volume(pool_name, block_name, block_id, target_pool_name,"},{"line_number":640,"context_line":"                           target_pool_id, target_block_name)"},{"line_number":641,"context_line":""},{"line_number":642,"context_line":"    def create_snapshot(self, snapshot):"},{"line_number":643,"context_line":"        \"\"\"Creates a snapshot.\"\"\""}],"source_content_type":"text/x-python","patch_set":9,"id":"0e1e283f_dc6444bd","line":640,"range":{"start_line":639,"start_character":0,"end_line":640,"end_character":61},"updated":"2023-07-12 13:33:01.000000000","message":"are we handling the case where the new volume size is larger than the source volume?","commit_id":"b9dec9daa4b575f4d2bf74adcf00de8f94cf16ba"},{"author":{"_account_id":29878,"name":"x-23","email":"xe333@sina.com"},"change_message_id":"44f33d0e346b8381cfb3e7b5d6ffd8479c3c3e17","unresolved":false,"context_lines":[{"line_number":636,"context_line":"        # get a name from new volume"},{"line_number":637,"context_line":"        target_block_name \u003d cinder_utils.convert_str(volume.name)"},{"line_number":638,"context_line":"        # ready to create clone volume"},{"line_number":639,"context_line":"        self._clone_volume(pool_name, block_name, block_id, target_pool_name,"},{"line_number":640,"context_line":"                           target_pool_id, target_block_name)"},{"line_number":641,"context_line":""},{"line_number":642,"context_line":"    def create_snapshot(self, snapshot):"},{"line_number":643,"context_line":"        \"\"\"Creates a snapshot.\"\"\""}],"source_content_type":"text/x-python","patch_set":9,"id":"929202d5_4de85399","line":640,"range":{"start_line":639,"start_character":0,"end_line":640,"end_character":61},"in_reply_to":"0e1e283f_dc6444bd","updated":"2023-07-13 06:17:31.000000000","message":"Thank you for bringing this to our attention. We have acknowledged that the case where the new volume size is larger than the source volume was not being handled appropriately. We have made the necessary adjustments, and now after the creation, we will resize the new volume if it is larger than the source volume. This enhancement ensures that the situation is handled correctly. Thank you for your feedback, and we appreciate your contribution to improving our solution.","commit_id":"b9dec9daa4b575f4d2bf74adcf00de8f94cf16ba"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"3d4c0b2ea74823ca0dc9ec1a73941b707d6c7e6e","unresolved":true,"context_lines":[{"line_number":688,"context_line":"                    \u0027create_volume_from_snapshot.\u0027) % volume_name"},{"line_number":689,"context_line":"            raise TYDSDriverException(reason\u003dmsg)"},{"line_number":690,"context_line":""},{"line_number":691,"context_line":"        self.client.create_volume_from_snapshot(volume_name, pool_name,"},{"line_number":692,"context_line":"                                                snapshot_name, source_volume,"},{"line_number":693,"context_line":"                                                src_vol.get(\u0027poolName\u0027))"},{"line_number":694,"context_line":"        self.client.http_log("},{"line_number":695,"context_line":"            TYDSLogEn.CREATE_VOLUME_FROM_SNAPSHOT.value % ("},{"line_number":696,"context_line":"                volume_name, pool_name,"}],"source_content_type":"text/x-python","patch_set":9,"id":"6fd9a44d_be953824","line":693,"range":{"start_line":691,"start_character":0,"end_line":693,"end_character":72},"updated":"2023-07-12 13:33:01.000000000","message":"do we account for the case where the new volume size is greater than the snapshot?","commit_id":"b9dec9daa4b575f4d2bf74adcf00de8f94cf16ba"},{"author":{"_account_id":29878,"name":"x-23","email":"xe333@sina.com"},"change_message_id":"44f33d0e346b8381cfb3e7b5d6ffd8479c3c3e17","unresolved":false,"context_lines":[{"line_number":688,"context_line":"                    \u0027create_volume_from_snapshot.\u0027) % volume_name"},{"line_number":689,"context_line":"            raise TYDSDriverException(reason\u003dmsg)"},{"line_number":690,"context_line":""},{"line_number":691,"context_line":"        self.client.create_volume_from_snapshot(volume_name, pool_name,"},{"line_number":692,"context_line":"                                                snapshot_name, source_volume,"},{"line_number":693,"context_line":"                                                src_vol.get(\u0027poolName\u0027))"},{"line_number":694,"context_line":"        self.client.http_log("},{"line_number":695,"context_line":"            TYDSLogEn.CREATE_VOLUME_FROM_SNAPSHOT.value % ("},{"line_number":696,"context_line":"                volume_name, pool_name,"}],"source_content_type":"text/x-python","patch_set":9,"id":"3a825fc5_7aed66c6","line":693,"range":{"start_line":691,"start_character":0,"end_line":693,"end_character":72},"in_reply_to":"6fd9a44d_be953824","updated":"2023-07-13 06:17:31.000000000","message":"Thank you for bringing this to our attention. We have acknowledged that the case where the new volume size is larger than the source volume was not being handled appropriately. We have made the necessary adjustments, and now after the creation, we will resize the new volume if it is larger than the source snapshot. This enhancement ensures that the situation is handled correctly. Thank you for your feedback, and we appreciate your contribution to improving our solution.","commit_id":"b9dec9daa4b575f4d2bf74adcf00de8f94cf16ba"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"cd5a21b1ef7d5a61a05486a00b290a3644467d10","unresolved":true,"context_lines":[{"line_number":722,"context_line":"                                 {\u0027rescan\u0027: rescan,"},{"line_number":723,"context_line":"                                  \u0027source\u0027: source_name,"},{"line_number":724,"context_line":"                                  \u0027target\u0027: target_name})"},{"line_number":725,"context_line":"                        greenthread.sleep(interval)"},{"line_number":726,"context_line":"                        continue"},{"line_number":727,"context_line":"                    LOG.info(\u0027Clone: rescan: %(rescan)s, task done from \u0027"},{"line_number":728,"context_line":"                             \u0027%(source)s to %(target)s.\u0027,"}],"source_content_type":"text/x-python","patch_set":9,"id":"910f7207_eeeeaa75","line":725,"range":{"start_line":725,"start_character":24,"end_line":725,"end_character":41},"updated":"2023-07-11 14:58:57.000000000","message":"Can just call time.sleep() instead, which would be better.","commit_id":"b9dec9daa4b575f4d2bf74adcf00de8f94cf16ba"},{"author":{"_account_id":32464,"name":"caiqilong","email":"406454833@qq.com","username":"cccqqqlll"},"change_message_id":"be35810fe45dc6b57e602e07d41ddd5b58844e1e","unresolved":false,"context_lines":[{"line_number":722,"context_line":"                                 {\u0027rescan\u0027: rescan,"},{"line_number":723,"context_line":"                                  \u0027source\u0027: source_name,"},{"line_number":724,"context_line":"                                  \u0027target\u0027: target_name})"},{"line_number":725,"context_line":"                        greenthread.sleep(interval)"},{"line_number":726,"context_line":"                        continue"},{"line_number":727,"context_line":"                    LOG.info(\u0027Clone: rescan: %(rescan)s, task done from \u0027"},{"line_number":728,"context_line":"                             \u0027%(source)s to %(target)s.\u0027,"}],"source_content_type":"text/x-python","patch_set":9,"id":"3f4e9f26_5abf489a","line":725,"range":{"start_line":725,"start_character":24,"end_line":725,"end_character":41},"in_reply_to":"910f7207_eeeeaa75","updated":"2023-07-12 08:53:35.000000000","message":"Done","commit_id":"b9dec9daa4b575f4d2bf74adcf00de8f94cf16ba"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"cd5a21b1ef7d5a61a05486a00b290a3644467d10","unresolved":true,"context_lines":[{"line_number":747,"context_line":"                               \u0027target\u0027: target_name})"},{"line_number":748,"context_line":"                if while_exit:"},{"line_number":749,"context_line":"                    break"},{"line_number":750,"context_line":"                greenthread.sleep(interval)"},{"line_number":751,"context_line":"            return ret"},{"line_number":752,"context_line":""},{"line_number":753,"context_line":"        if _wait_clone_progress(src_vol.get(\u0027id\u0027), source_volume, volume_name):"}],"source_content_type":"text/x-python","patch_set":9,"id":"89ae3493_068499bb","line":750,"range":{"start_line":750,"start_character":16,"end_line":750,"end_character":33},"updated":"2023-07-11 14:58:57.000000000","message":"Can just call time.sleep() instead, which would be better.","commit_id":"b9dec9daa4b575f4d2bf74adcf00de8f94cf16ba"},{"author":{"_account_id":32464,"name":"caiqilong","email":"406454833@qq.com","username":"cccqqqlll"},"change_message_id":"be35810fe45dc6b57e602e07d41ddd5b58844e1e","unresolved":false,"context_lines":[{"line_number":747,"context_line":"                               \u0027target\u0027: target_name})"},{"line_number":748,"context_line":"                if while_exit:"},{"line_number":749,"context_line":"                    break"},{"line_number":750,"context_line":"                greenthread.sleep(interval)"},{"line_number":751,"context_line":"            return ret"},{"line_number":752,"context_line":""},{"line_number":753,"context_line":"        if _wait_clone_progress(src_vol.get(\u0027id\u0027), source_volume, volume_name):"}],"source_content_type":"text/x-python","patch_set":9,"id":"fb5d3d63_fb4ea415","line":750,"range":{"start_line":750,"start_character":16,"end_line":750,"end_character":33},"in_reply_to":"89ae3493_068499bb","updated":"2023-07-12 08:53:35.000000000","message":"Done\nthanks for your patient review. I have resolved the deficiencies in a new patchset.","commit_id":"b9dec9daa4b575f4d2bf74adcf00de8f94cf16ba"},{"author":{"_account_id":30555,"name":"Fernando Ferraz","display_name":"Fernando Ferraz","email":"fesilva@redhat.com","username":"fernandoperches"},"change_message_id":"fcc8718457224491f4b72bb69eb4859e54a2deb7","unresolved":true,"context_lines":[{"line_number":63,"context_line":"    message \u003d _(\"TYDS Cinder toyou failure: %(reason)s\")"},{"line_number":64,"context_line":""},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"class TYDSLogEn(Enum):"},{"line_number":67,"context_line":"    CREATE_VOLUME \u003d (\u0027[Success] Cinder: Create Block Device, \u0027"},{"line_number":68,"context_line":"                     \u0027Block Name: %s, Size in MB: %s, Pool Name: %s, \u0027"},{"line_number":69,"context_line":"                     \u0027Stripe Size: %s.\u0027)"}],"source_content_type":"text/x-python","patch_set":12,"id":"1a12b1d4_1a300e18","line":66,"updated":"2023-07-13 19:30:17.000000000","message":"nit: This is just a suggestion. Is a Enum really needed? Using constants for those  message strings are more commonly used by the other drivers and  may be easier to resolve future merge conflicts in the future.","commit_id":"ada953ffce52c3d052e2d339563416adf169bfb1"},{"author":{"_account_id":29878,"name":"x-23","email":"xe333@sina.com"},"change_message_id":"c1e55a70c8524134f2893207c50d665b91080ce4","unresolved":false,"context_lines":[{"line_number":63,"context_line":"    message \u003d _(\"TYDS Cinder toyou failure: %(reason)s\")"},{"line_number":64,"context_line":""},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"class TYDSLogEn(Enum):"},{"line_number":67,"context_line":"    CREATE_VOLUME \u003d (\u0027[Success] Cinder: Create Block Device, \u0027"},{"line_number":68,"context_line":"                     \u0027Block Name: %s, Size in MB: %s, Pool Name: %s, \u0027"},{"line_number":69,"context_line":"                     \u0027Stripe Size: %s.\u0027)"}],"source_content_type":"text/x-python","patch_set":12,"id":"d0a1320e_7516f8a8","line":66,"in_reply_to":"1a12b1d4_1a300e18","updated":"2023-07-14 02:35:55.000000000","message":"Thank you for your suggestion. We agree that using constants instead of an Enum could be a more commonly used approach and may simplify resolving future merge conflicts. We appreciate your input, and we are already considering replacing the Enum class with constants in our code. Your feedback is valuable, and we strive to continuously improve our codebase. If you have any further suggestions or concerns, please feel free to share them.","commit_id":"ada953ffce52c3d052e2d339563416adf169bfb1"},{"author":{"_account_id":30555,"name":"Fernando Ferraz","display_name":"Fernando Ferraz","email":"fesilva@redhat.com","username":"fernandoperches"},"change_message_id":"fcc8718457224491f4b72bb69eb4859e54a2deb7","unresolved":true,"context_lines":[{"line_number":64,"context_line":""},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"class TYDSLogEn(Enum):"},{"line_number":67,"context_line":"    CREATE_VOLUME \u003d (\u0027[Success] Cinder: Create Block Device, \u0027"},{"line_number":68,"context_line":"                     \u0027Block Name: %s, Size in MB: %s, Pool Name: %s, \u0027"},{"line_number":69,"context_line":"                     \u0027Stripe Size: %s.\u0027)"},{"line_number":70,"context_line":"    CREATE_VOLUME_FAILED \u003d (\u0027[Failed] Cinder: Create Block Device, \u0027"}],"source_content_type":"text/x-python","patch_set":12,"id":"ed7a4e69_217da74d","line":67,"updated":"2023-07-13 19:30:17.000000000","message":"nit: This would be clearer to readers if you append a SUCCESS to the end of the variable name, as you did for the FAILED messages.","commit_id":"ada953ffce52c3d052e2d339563416adf169bfb1"},{"author":{"_account_id":29878,"name":"x-23","email":"xe333@sina.com"},"change_message_id":"c1e55a70c8524134f2893207c50d665b91080ce4","unresolved":false,"context_lines":[{"line_number":64,"context_line":""},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"class TYDSLogEn(Enum):"},{"line_number":67,"context_line":"    CREATE_VOLUME \u003d (\u0027[Success] Cinder: Create Block Device, \u0027"},{"line_number":68,"context_line":"                     \u0027Block Name: %s, Size in MB: %s, Pool Name: %s, \u0027"},{"line_number":69,"context_line":"                     \u0027Stripe Size: %s.\u0027)"},{"line_number":70,"context_line":"    CREATE_VOLUME_FAILED \u003d (\u0027[Failed] Cinder: Create Block Device, \u0027"}],"source_content_type":"text/x-python","patch_set":12,"id":"1c181283_e69833e2","line":67,"in_reply_to":"ed7a4e69_217da74d","updated":"2023-07-14 02:35:55.000000000","message":"Thank you for your feedback. We appreciate your suggestion to append \"SUCCESS\" to the variable name to improve clarity for readers. We understand the importance of consistent naming conventions, and we will make the necessary modification in the next patch to ensure consistency with the \"FAILED\" messages. Your input is valuable to us, and we strive to maintain clear and readable code. If you have any further suggestions or concerns, please feel free to let us know.","commit_id":"ada953ffce52c3d052e2d339563416adf169bfb1"},{"author":{"_account_id":30555,"name":"Fernando Ferraz","display_name":"Fernando Ferraz","email":"fesilva@redhat.com","username":"fernandoperches"},"change_message_id":"fcc8718457224491f4b72bb69eb4859e54a2deb7","unresolved":true,"context_lines":[{"line_number":70,"context_line":"    CREATE_VOLUME_FAILED \u003d (\u0027[Failed] Cinder: Create Block Device, \u0027"},{"line_number":71,"context_line":"                            \u0027Block Name: %s, Size in MB: %s, Pool Name: %s, \u0027"},{"line_number":72,"context_line":"                            \u0027Stripe Size: %s.\u0027)"},{"line_number":73,"context_line":"    DELETE_VOLUME \u003d \u0027[Success] Cinder: Delete Block Device, Block Name: %s.\u0027"},{"line_number":74,"context_line":"    DELETE_VOLUME_FAILED \u003d (\u0027[Failed] Cinder: delete failed, the volume: %s \u0027"},{"line_number":75,"context_line":"                            \u0027has normal_snaps: %s, please delete \u0027"},{"line_number":76,"context_line":"                            \u0027normal_snaps first.\u0027)"}],"source_content_type":"text/x-python","patch_set":12,"id":"0fd46447_8d72d67b","line":73,"updated":"2023-07-13 19:30:17.000000000","message":"same as above","commit_id":"ada953ffce52c3d052e2d339563416adf169bfb1"},{"author":{"_account_id":29878,"name":"x-23","email":"xe333@sina.com"},"change_message_id":"c1e55a70c8524134f2893207c50d665b91080ce4","unresolved":false,"context_lines":[{"line_number":70,"context_line":"    CREATE_VOLUME_FAILED \u003d (\u0027[Failed] Cinder: Create Block Device, \u0027"},{"line_number":71,"context_line":"                            \u0027Block Name: %s, Size in MB: %s, Pool Name: %s, \u0027"},{"line_number":72,"context_line":"                            \u0027Stripe Size: %s.\u0027)"},{"line_number":73,"context_line":"    DELETE_VOLUME \u003d \u0027[Success] Cinder: Delete Block Device, Block Name: %s.\u0027"},{"line_number":74,"context_line":"    DELETE_VOLUME_FAILED \u003d (\u0027[Failed] Cinder: delete failed, the volume: %s \u0027"},{"line_number":75,"context_line":"                            \u0027has normal_snaps: %s, please delete \u0027"},{"line_number":76,"context_line":"                            \u0027normal_snaps first.\u0027)"}],"source_content_type":"text/x-python","patch_set":12,"id":"cca746e6_3960c476","line":73,"in_reply_to":"0fd46447_8d72d67b","updated":"2023-07-14 02:35:55.000000000","message":"Same as above, with modifications","commit_id":"ada953ffce52c3d052e2d339563416adf169bfb1"},{"author":{"_account_id":30555,"name":"Fernando Ferraz","display_name":"Fernando Ferraz","email":"fesilva@redhat.com","username":"fernandoperches"},"change_message_id":"fcc8718457224491f4b72bb69eb4859e54a2deb7","unresolved":true,"context_lines":[{"line_number":74,"context_line":"    DELETE_VOLUME_FAILED \u003d (\u0027[Failed] Cinder: delete failed, the volume: %s \u0027"},{"line_number":75,"context_line":"                            \u0027has normal_snaps: %s, please delete \u0027"},{"line_number":76,"context_line":"                            \u0027normal_snaps first.\u0027)"},{"line_number":77,"context_line":"    ATTACH_VOLUME \u003d (\u0027[Success] Cinder: Attach Block Device, Block Name: %s, \u0027"},{"line_number":78,"context_line":"                     \u0027IP Address: %s, Host: %s.\u0027)"},{"line_number":79,"context_line":"    DETACH_VOLUME \u003d (\u0027[Success] Cinder: Detach Block Device, Block Name: %s, \u0027"},{"line_number":80,"context_line":"                     \u0027IP Address: %s, Host: %s.\u0027)"}],"source_content_type":"text/x-python","patch_set":12,"id":"fcb7de8b_50d0099e","line":77,"updated":"2023-07-13 19:30:17.000000000","message":"same as above","commit_id":"ada953ffce52c3d052e2d339563416adf169bfb1"},{"author":{"_account_id":29878,"name":"x-23","email":"xe333@sina.com"},"change_message_id":"c1e55a70c8524134f2893207c50d665b91080ce4","unresolved":false,"context_lines":[{"line_number":74,"context_line":"    DELETE_VOLUME_FAILED \u003d (\u0027[Failed] Cinder: delete failed, the volume: %s \u0027"},{"line_number":75,"context_line":"                            \u0027has normal_snaps: %s, please delete \u0027"},{"line_number":76,"context_line":"                            \u0027normal_snaps first.\u0027)"},{"line_number":77,"context_line":"    ATTACH_VOLUME \u003d (\u0027[Success] Cinder: Attach Block Device, Block Name: %s, \u0027"},{"line_number":78,"context_line":"                     \u0027IP Address: %s, Host: %s.\u0027)"},{"line_number":79,"context_line":"    DETACH_VOLUME \u003d (\u0027[Success] Cinder: Detach Block Device, Block Name: %s, \u0027"},{"line_number":80,"context_line":"                     \u0027IP Address: %s, Host: %s.\u0027)"}],"source_content_type":"text/x-python","patch_set":12,"id":"044c7a6b_50b85272","line":77,"in_reply_to":"fcb7de8b_50d0099e","updated":"2023-07-14 02:35:55.000000000","message":"Same as above, with modifications","commit_id":"ada953ffce52c3d052e2d339563416adf169bfb1"},{"author":{"_account_id":30555,"name":"Fernando Ferraz","display_name":"Fernando Ferraz","email":"fesilva@redhat.com","username":"fernandoperches"},"change_message_id":"fcc8718457224491f4b72bb69eb4859e54a2deb7","unresolved":true,"context_lines":[{"line_number":76,"context_line":"                            \u0027normal_snaps first.\u0027)"},{"line_number":77,"context_line":"    ATTACH_VOLUME \u003d (\u0027[Success] Cinder: Attach Block Device, Block Name: %s, \u0027"},{"line_number":78,"context_line":"                     \u0027IP Address: %s, Host: %s.\u0027)"},{"line_number":79,"context_line":"    DETACH_VOLUME \u003d (\u0027[Success] Cinder: Detach Block Device, Block Name: %s, \u0027"},{"line_number":80,"context_line":"                     \u0027IP Address: %s, Host: %s.\u0027)"},{"line_number":81,"context_line":"    EXTEND_VOLUME \u003d \u0027[Success] Cinder: Extend volume: %s from %sMB to %sMB.\u0027"},{"line_number":82,"context_line":"    CREATE_SNAPSHOT \u003d \u0027[Success] Cinder: Create snapshot: %s, volume: %s.\u0027"}],"source_content_type":"text/x-python","patch_set":12,"id":"553d1ad6_1be9264a","line":79,"updated":"2023-07-13 19:30:17.000000000","message":"same as above","commit_id":"ada953ffce52c3d052e2d339563416adf169bfb1"},{"author":{"_account_id":29878,"name":"x-23","email":"xe333@sina.com"},"change_message_id":"c1e55a70c8524134f2893207c50d665b91080ce4","unresolved":false,"context_lines":[{"line_number":76,"context_line":"                            \u0027normal_snaps first.\u0027)"},{"line_number":77,"context_line":"    ATTACH_VOLUME \u003d (\u0027[Success] Cinder: Attach Block Device, Block Name: %s, \u0027"},{"line_number":78,"context_line":"                     \u0027IP Address: %s, Host: %s.\u0027)"},{"line_number":79,"context_line":"    DETACH_VOLUME \u003d (\u0027[Success] Cinder: Detach Block Device, Block Name: %s, \u0027"},{"line_number":80,"context_line":"                     \u0027IP Address: %s, Host: %s.\u0027)"},{"line_number":81,"context_line":"    EXTEND_VOLUME \u003d \u0027[Success] Cinder: Extend volume: %s from %sMB to %sMB.\u0027"},{"line_number":82,"context_line":"    CREATE_SNAPSHOT \u003d \u0027[Success] Cinder: Create snapshot: %s, volume: %s.\u0027"}],"source_content_type":"text/x-python","patch_set":12,"id":"c950c605_c1e9003b","line":79,"in_reply_to":"553d1ad6_1be9264a","updated":"2023-07-14 02:35:55.000000000","message":"Same as above, with modifications","commit_id":"ada953ffce52c3d052e2d339563416adf169bfb1"},{"author":{"_account_id":30555,"name":"Fernando Ferraz","display_name":"Fernando Ferraz","email":"fesilva@redhat.com","username":"fernandoperches"},"change_message_id":"fcc8718457224491f4b72bb69eb4859e54a2deb7","unresolved":true,"context_lines":[{"line_number":78,"context_line":"                     \u0027IP Address: %s, Host: %s.\u0027)"},{"line_number":79,"context_line":"    DETACH_VOLUME \u003d (\u0027[Success] Cinder: Detach Block Device, Block Name: %s, \u0027"},{"line_number":80,"context_line":"                     \u0027IP Address: %s, Host: %s.\u0027)"},{"line_number":81,"context_line":"    EXTEND_VOLUME \u003d \u0027[Success] Cinder: Extend volume: %s from %sMB to %sMB.\u0027"},{"line_number":82,"context_line":"    CREATE_SNAPSHOT \u003d \u0027[Success] Cinder: Create snapshot: %s, volume: %s.\u0027"},{"line_number":83,"context_line":"    DELETE_SNAPSHOT \u003d \u0027[Success] Cinder: Delete snapshot: %s, volume: %s.\u0027"},{"line_number":84,"context_line":"    CREATE_VOLUME_FROM_SNAPSHOT \u003d (\u0027[Success] Cinder: Create volume: %s, \u0027"}],"source_content_type":"text/x-python","patch_set":12,"id":"b0f1449d_3bf6f980","line":81,"updated":"2023-07-13 19:30:17.000000000","message":"same as above","commit_id":"ada953ffce52c3d052e2d339563416adf169bfb1"},{"author":{"_account_id":29878,"name":"x-23","email":"xe333@sina.com"},"change_message_id":"c1e55a70c8524134f2893207c50d665b91080ce4","unresolved":false,"context_lines":[{"line_number":78,"context_line":"                     \u0027IP Address: %s, Host: %s.\u0027)"},{"line_number":79,"context_line":"    DETACH_VOLUME \u003d (\u0027[Success] Cinder: Detach Block Device, Block Name: %s, \u0027"},{"line_number":80,"context_line":"                     \u0027IP Address: %s, Host: %s.\u0027)"},{"line_number":81,"context_line":"    EXTEND_VOLUME \u003d \u0027[Success] Cinder: Extend volume: %s from %sMB to %sMB.\u0027"},{"line_number":82,"context_line":"    CREATE_SNAPSHOT \u003d \u0027[Success] Cinder: Create snapshot: %s, volume: %s.\u0027"},{"line_number":83,"context_line":"    DELETE_SNAPSHOT \u003d \u0027[Success] Cinder: Delete snapshot: %s, volume: %s.\u0027"},{"line_number":84,"context_line":"    CREATE_VOLUME_FROM_SNAPSHOT \u003d (\u0027[Success] Cinder: Create volume: %s, \u0027"}],"source_content_type":"text/x-python","patch_set":12,"id":"051eb987_b1690184","line":81,"in_reply_to":"b0f1449d_3bf6f980","updated":"2023-07-14 02:35:55.000000000","message":"Same as above, with modifications","commit_id":"ada953ffce52c3d052e2d339563416adf169bfb1"},{"author":{"_account_id":30555,"name":"Fernando Ferraz","display_name":"Fernando Ferraz","email":"fesilva@redhat.com","username":"fernandoperches"},"change_message_id":"fcc8718457224491f4b72bb69eb4859e54a2deb7","unresolved":true,"context_lines":[{"line_number":79,"context_line":"    DETACH_VOLUME \u003d (\u0027[Success] Cinder: Detach Block Device, Block Name: %s, \u0027"},{"line_number":80,"context_line":"                     \u0027IP Address: %s, Host: %s.\u0027)"},{"line_number":81,"context_line":"    EXTEND_VOLUME \u003d \u0027[Success] Cinder: Extend volume: %s from %sMB to %sMB.\u0027"},{"line_number":82,"context_line":"    CREATE_SNAPSHOT \u003d \u0027[Success] Cinder: Create snapshot: %s, volume: %s.\u0027"},{"line_number":83,"context_line":"    DELETE_SNAPSHOT \u003d \u0027[Success] Cinder: Delete snapshot: %s, volume: %s.\u0027"},{"line_number":84,"context_line":"    CREATE_VOLUME_FROM_SNAPSHOT \u003d (\u0027[Success] Cinder: Create volume: %s, \u0027"},{"line_number":85,"context_line":"                                   \u0027pool name: %s; from snapshot: %s \u0027"}],"source_content_type":"text/x-python","patch_set":12,"id":"7df4dc6a_e2cbff5a","line":82,"updated":"2023-07-13 19:30:17.000000000","message":"same as above","commit_id":"ada953ffce52c3d052e2d339563416adf169bfb1"},{"author":{"_account_id":29878,"name":"x-23","email":"xe333@sina.com"},"change_message_id":"c1e55a70c8524134f2893207c50d665b91080ce4","unresolved":false,"context_lines":[{"line_number":79,"context_line":"    DETACH_VOLUME \u003d (\u0027[Success] Cinder: Detach Block Device, Block Name: %s, \u0027"},{"line_number":80,"context_line":"                     \u0027IP Address: %s, Host: %s.\u0027)"},{"line_number":81,"context_line":"    EXTEND_VOLUME \u003d \u0027[Success] Cinder: Extend volume: %s from %sMB to %sMB.\u0027"},{"line_number":82,"context_line":"    CREATE_SNAPSHOT \u003d \u0027[Success] Cinder: Create snapshot: %s, volume: %s.\u0027"},{"line_number":83,"context_line":"    DELETE_SNAPSHOT \u003d \u0027[Success] Cinder: Delete snapshot: %s, volume: %s.\u0027"},{"line_number":84,"context_line":"    CREATE_VOLUME_FROM_SNAPSHOT \u003d (\u0027[Success] Cinder: Create volume: %s, \u0027"},{"line_number":85,"context_line":"                                   \u0027pool name: %s; from snapshot: %s \u0027"}],"source_content_type":"text/x-python","patch_set":12,"id":"042193b9_3dd47184","line":82,"in_reply_to":"7df4dc6a_e2cbff5a","updated":"2023-07-14 02:35:55.000000000","message":"Same as above, with modifications","commit_id":"ada953ffce52c3d052e2d339563416adf169bfb1"},{"author":{"_account_id":30555,"name":"Fernando Ferraz","display_name":"Fernando Ferraz","email":"fesilva@redhat.com","username":"fernandoperches"},"change_message_id":"fcc8718457224491f4b72bb69eb4859e54a2deb7","unresolved":true,"context_lines":[{"line_number":80,"context_line":"                     \u0027IP Address: %s, Host: %s.\u0027)"},{"line_number":81,"context_line":"    EXTEND_VOLUME \u003d \u0027[Success] Cinder: Extend volume: %s from %sMB to %sMB.\u0027"},{"line_number":82,"context_line":"    CREATE_SNAPSHOT \u003d \u0027[Success] Cinder: Create snapshot: %s, volume: %s.\u0027"},{"line_number":83,"context_line":"    DELETE_SNAPSHOT \u003d \u0027[Success] Cinder: Delete snapshot: %s, volume: %s.\u0027"},{"line_number":84,"context_line":"    CREATE_VOLUME_FROM_SNAPSHOT \u003d (\u0027[Success] Cinder: Create volume: %s, \u0027"},{"line_number":85,"context_line":"                                   \u0027pool name: %s; from snapshot: %s \u0027"},{"line_number":86,"context_line":"                                   \u0027source volume: %s, source pool name: %s.\u0027)"}],"source_content_type":"text/x-python","patch_set":12,"id":"cceb82a1_5add5b66","line":83,"updated":"2023-07-13 19:30:17.000000000","message":"same as above","commit_id":"ada953ffce52c3d052e2d339563416adf169bfb1"},{"author":{"_account_id":29878,"name":"x-23","email":"xe333@sina.com"},"change_message_id":"c1e55a70c8524134f2893207c50d665b91080ce4","unresolved":false,"context_lines":[{"line_number":80,"context_line":"                     \u0027IP Address: %s, Host: %s.\u0027)"},{"line_number":81,"context_line":"    EXTEND_VOLUME \u003d \u0027[Success] Cinder: Extend volume: %s from %sMB to %sMB.\u0027"},{"line_number":82,"context_line":"    CREATE_SNAPSHOT \u003d \u0027[Success] Cinder: Create snapshot: %s, volume: %s.\u0027"},{"line_number":83,"context_line":"    DELETE_SNAPSHOT \u003d \u0027[Success] Cinder: Delete snapshot: %s, volume: %s.\u0027"},{"line_number":84,"context_line":"    CREATE_VOLUME_FROM_SNAPSHOT \u003d (\u0027[Success] Cinder: Create volume: %s, \u0027"},{"line_number":85,"context_line":"                                   \u0027pool name: %s; from snapshot: %s \u0027"},{"line_number":86,"context_line":"                                   \u0027source volume: %s, source pool name: %s.\u0027)"}],"source_content_type":"text/x-python","patch_set":12,"id":"55312573_8decafa4","line":83,"in_reply_to":"cceb82a1_5add5b66","updated":"2023-07-14 02:35:55.000000000","message":"Same as above, with modifications","commit_id":"ada953ffce52c3d052e2d339563416adf169bfb1"},{"author":{"_account_id":30555,"name":"Fernando Ferraz","display_name":"Fernando Ferraz","email":"fesilva@redhat.com","username":"fernandoperches"},"change_message_id":"886a994e4d03b8f51186e4f6d88103a46016d88c","unresolved":true,"context_lines":[{"line_number":103,"context_line":"    .. code-block:: none"},{"line_number":104,"context_line":""},{"line_number":105,"context_line":"      Version history:"},{"line_number":106,"context_line":"          1.0.0 - Initial toyou"},{"line_number":107,"context_line":""},{"line_number":108,"context_line":"    \"\"\""},{"line_number":109,"context_line":"    VENDOR \u003d \u0027TOYOU\u0027"}],"source_content_type":"text/x-python","patch_set":12,"id":"5224f025_5a284397","line":106,"updated":"2023-07-13 19:00:13.000000000","message":"nit: Since there is more than one TOYOU driver, I think you could change the initial version description to something including the specific driver\u0027s name (like \"Initial TOYOU TYDS Driver\").","commit_id":"ada953ffce52c3d052e2d339563416adf169bfb1"},{"author":{"_account_id":29878,"name":"x-23","email":"xe333@sina.com"},"change_message_id":"c1e55a70c8524134f2893207c50d665b91080ce4","unresolved":false,"context_lines":[{"line_number":103,"context_line":"    .. code-block:: none"},{"line_number":104,"context_line":""},{"line_number":105,"context_line":"      Version history:"},{"line_number":106,"context_line":"          1.0.0 - Initial toyou"},{"line_number":107,"context_line":""},{"line_number":108,"context_line":"    \"\"\""},{"line_number":109,"context_line":"    VENDOR \u003d \u0027TOYOU\u0027"}],"source_content_type":"text/x-python","patch_set":12,"id":"7587b8f3_cf7cac3d","line":106,"in_reply_to":"5224f025_5a284397","updated":"2023-07-14 02:35:55.000000000","message":"Thank you for your suggestion. We acknowledge the importance of providing specific and descriptive version descriptions, especially when there are multiple TOYOU drivers. In response to your feedback, we will update the initial version description to \"Initial TOYOU NetStor TYDS Driver\" to accurately reflect the driver\u0027s name and differentiate it from other TOYOU drivers. We appreciate your attention to detail, and we are committed to making the necessary improvements to enhance clarity and specificity. If you have any further suggestions or concerns, please don\u0027t hesitate to let us know.","commit_id":"ada953ffce52c3d052e2d339563416adf169bfb1"},{"author":{"_account_id":30555,"name":"Fernando Ferraz","display_name":"Fernando Ferraz","email":"fesilva@redhat.com","username":"fernandoperches"},"change_message_id":"886a994e4d03b8f51186e4f6d88103a46016d88c","unresolved":true,"context_lines":[{"line_number":255,"context_line":"        )"},{"line_number":256,"context_line":""},{"line_number":257,"context_line":"        @coordination.synchronized(\u0027tyds-copy-{lun_name}-progress\u0027)"},{"line_number":258,"context_line":"        def _wait_copy_progress(lun_id, lun_name, target_block):"},{"line_number":259,"context_line":"            try:"},{"line_number":260,"context_line":"                ret \u003d False"},{"line_number":261,"context_line":"                while_exit \u003d False"}],"source_content_type":"text/x-python","patch_set":12,"id":"fd88e68a_42c35045","line":258,"updated":"2023-07-13 19:00:13.000000000","message":"Is this function being used in anywhere? I couldn\u0027t find any call to it. \nIn order to keep it clean and make review easier, please consider removing it if the code isn\u0027t going to be used in this version.","commit_id":"ada953ffce52c3d052e2d339563416adf169bfb1"},{"author":{"_account_id":30555,"name":"Fernando Ferraz","display_name":"Fernando Ferraz","email":"fesilva@redhat.com","username":"fernandoperches"},"change_message_id":"7b27e064d9d90e27d23c353cb66f235e19150d9e","unresolved":false,"context_lines":[{"line_number":255,"context_line":"        )"},{"line_number":256,"context_line":""},{"line_number":257,"context_line":"        @coordination.synchronized(\u0027tyds-copy-{lun_name}-progress\u0027)"},{"line_number":258,"context_line":"        def _wait_copy_progress(lun_id, lun_name, target_block):"},{"line_number":259,"context_line":"            try:"},{"line_number":260,"context_line":"                ret \u003d False"},{"line_number":261,"context_line":"                while_exit \u003d False"}],"source_content_type":"text/x-python","patch_set":12,"id":"f1c03077_6ed1a265","line":258,"in_reply_to":"5e7c17dd_c93ce51b","updated":"2023-07-14 13:04:52.000000000","message":"I\u0027ve just realized this is a inner function! Code makes sense then. 👍","commit_id":"ada953ffce52c3d052e2d339563416adf169bfb1"},{"author":{"_account_id":32464,"name":"caiqilong","email":"406454833@qq.com","username":"cccqqqlll"},"change_message_id":"a24695281adc9a87ca18cd4c7216ad4f4b36c6ea","unresolved":false,"context_lines":[{"line_number":255,"context_line":"        )"},{"line_number":256,"context_line":""},{"line_number":257,"context_line":"        @coordination.synchronized(\u0027tyds-copy-{lun_name}-progress\u0027)"},{"line_number":258,"context_line":"        def _wait_copy_progress(lun_id, lun_name, target_block):"},{"line_number":259,"context_line":"            try:"},{"line_number":260,"context_line":"                ret \u003d False"},{"line_number":261,"context_line":"                while_exit \u003d False"}],"source_content_type":"text/x-python","patch_set":12,"id":"6fe471bc_9bd47e9d","line":258,"in_reply_to":"f1c03077_6ed1a265","updated":"2023-07-14 13:16:51.000000000","message":"Thank you for your suggestions on improving code quality.","commit_id":"ada953ffce52c3d052e2d339563416adf169bfb1"},{"author":{"_account_id":29878,"name":"x-23","email":"xe333@sina.com"},"change_message_id":"c1e55a70c8524134f2893207c50d665b91080ce4","unresolved":false,"context_lines":[{"line_number":255,"context_line":"        )"},{"line_number":256,"context_line":""},{"line_number":257,"context_line":"        @coordination.synchronized(\u0027tyds-copy-{lun_name}-progress\u0027)"},{"line_number":258,"context_line":"        def _wait_copy_progress(lun_id, lun_name, target_block):"},{"line_number":259,"context_line":"            try:"},{"line_number":260,"context_line":"                ret \u003d False"},{"line_number":261,"context_line":"                while_exit \u003d False"}],"source_content_type":"text/x-python","patch_set":12,"id":"5e7c17dd_c93ce51b","line":258,"in_reply_to":"fd88e68a_42c35045","updated":"2023-07-14 02:35:55.000000000","message":"Apologies for the confusion. The `_wait_copy_progress` function is used in the following code snippet:\n\n```python\nif _wait_copy_progress(block_id, block_name, target_block_name):\n    LOG.debug(COPY_VOLUME_DONE, pool_name, block_name, target_pool_name, target_block_name)\nelse:\n    self._delete_volume_if_clone_failed(target_block_name, pool_name, block_name, target_block_name)\n    msg \u003d _(\"copy volume failed from %s to %s\") % (block_name, target_block_name)\n    raise TYDSDriverException(reason\u003dmsg)\n```\n\nThis function is responsible for creating a clone volume and then calling the `_wait_copy_progress` function to wait for the clone progress. If the clone is successful, it will log the corresponding message and proceed with further operations. If the clone fails, it will delete the target volume and raise a `TYDSDriverException` with an appropriate error message.\n\nI hope this clarifies where the function is used and its purpose. If you have any further questions, please let me know.","commit_id":"ada953ffce52c3d052e2d339563416adf169bfb1"},{"author":{"_account_id":30555,"name":"Fernando Ferraz","display_name":"Fernando Ferraz","email":"fesilva@redhat.com","username":"fernandoperches"},"change_message_id":"fcc8718457224491f4b72bb69eb4859e54a2deb7","unresolved":true,"context_lines":[{"line_number":329,"context_line":"        LOG.debug(TYDSLogEn.COPY_VOLUME_FAILED.value, pool_name, block_name,"},{"line_number":330,"context_line":"                  target_pool_name, target_block_name)"},{"line_number":331,"context_line":""},{"line_number":332,"context_line":"    def create_export(self, context, volume, connector):"},{"line_number":333,"context_line":"        pass"},{"line_number":334,"context_line":""},{"line_number":335,"context_line":"    def create_volume(self, volume):"}],"source_content_type":"text/x-python","patch_set":12,"id":"cbe6713e_e032901b","line":332,"updated":"2023-07-13 19:30:17.000000000","message":"Base class (volume/driver.py) behavior is already a pass. I think you could just delete this function.","commit_id":"ada953ffce52c3d052e2d339563416adf169bfb1"},{"author":{"_account_id":29878,"name":"x-23","email":"xe333@sina.com"},"change_message_id":"c1e55a70c8524134f2893207c50d665b91080ce4","unresolved":false,"context_lines":[{"line_number":329,"context_line":"        LOG.debug(TYDSLogEn.COPY_VOLUME_FAILED.value, pool_name, block_name,"},{"line_number":330,"context_line":"                  target_pool_name, target_block_name)"},{"line_number":331,"context_line":""},{"line_number":332,"context_line":"    def create_export(self, context, volume, connector):"},{"line_number":333,"context_line":"        pass"},{"line_number":334,"context_line":""},{"line_number":335,"context_line":"    def create_volume(self, volume):"}],"source_content_type":"text/x-python","patch_set":12,"id":"92d1a4fd_3dbd2d7f","line":332,"in_reply_to":"b249f12e_899ebd26","updated":"2023-07-14 02:35:55.000000000","message":"No problem at all! Thank you for double-checking the code. We appreciate your diligence. Since volume/driver.py re-implements the BaseVD with an exception, it seems that the pass statement is actually necessary in this case. We will take note of this and disregard the comment. If you have any further questions or concerns, please don\u0027t hesitate to let us know. Thank you for your understanding!","commit_id":"ada953ffce52c3d052e2d339563416adf169bfb1"},{"author":{"_account_id":30555,"name":"Fernando Ferraz","display_name":"Fernando Ferraz","email":"fesilva@redhat.com","username":"fernandoperches"},"change_message_id":"4a42772eeada02df36622674c49444c5df7fa1ea","unresolved":true,"context_lines":[{"line_number":329,"context_line":"        LOG.debug(TYDSLogEn.COPY_VOLUME_FAILED.value, pool_name, block_name,"},{"line_number":330,"context_line":"                  target_pool_name, target_block_name)"},{"line_number":331,"context_line":""},{"line_number":332,"context_line":"    def create_export(self, context, volume, connector):"},{"line_number":333,"context_line":"        pass"},{"line_number":334,"context_line":""},{"line_number":335,"context_line":"    def create_volume(self, volume):"}],"source_content_type":"text/x-python","patch_set":12,"id":"b249f12e_899ebd26","line":332,"in_reply_to":"cbe6713e_e032901b","updated":"2023-07-13 20:03:24.000000000","message":"I\u0027ve double checked the code and I think you actually need the `pass` because volume/driver.py re-implements the BaseVD with a exception instead. My bad, please ignore this comment.","commit_id":"ada953ffce52c3d052e2d339563416adf169bfb1"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"a75f8da4b24c44a297cfd995ec7d646dbf457144","unresolved":true,"context_lines":[{"line_number":599,"context_line":"                    \u0027create_volume_from_snapshot.\u0027) % volume_name"},{"line_number":600,"context_line":"            raise TYDSDriverException(reason\u003dmsg)"},{"line_number":601,"context_line":""},{"line_number":602,"context_line":"        self.client.create_volume_from_snapshot(volume_name, pool_name,"},{"line_number":603,"context_line":"                                                snapshot_name, source_volume,"},{"line_number":604,"context_line":"                                                src_vol.get(\u0027poolName\u0027))"},{"line_number":605,"context_line":"        LOG.debug(TYDSLogEn.CREATE_VOLUME_FROM_SNAPSHOT.value, volume_name,"},{"line_number":606,"context_line":"                  pool_name, snapshot_name, source_volume,"},{"line_number":607,"context_line":"                  src_vol.get(\u0027poolName\u0027))"}],"source_content_type":"text/x-python","patch_set":12,"id":"48567ba1_e54cbdb5","line":604,"range":{"start_line":602,"start_character":0,"end_line":604,"end_character":72},"updated":"2023-07-13 14:17:42.000000000","message":"I still don\u0027t see the case being handled where the volume being created has size greater than the source snapshot\nwe can probably use the same code as clone volume.","commit_id":"ada953ffce52c3d052e2d339563416adf169bfb1"},{"author":{"_account_id":32464,"name":"caiqilong","email":"406454833@qq.com","username":"cccqqqlll"},"change_message_id":"f1b00042b5e0061a2b5fbd3acf6eb9616aace8d6","unresolved":true,"context_lines":[{"line_number":599,"context_line":"                    \u0027create_volume_from_snapshot.\u0027) % volume_name"},{"line_number":600,"context_line":"            raise TYDSDriverException(reason\u003dmsg)"},{"line_number":601,"context_line":""},{"line_number":602,"context_line":"        self.client.create_volume_from_snapshot(volume_name, pool_name,"},{"line_number":603,"context_line":"                                                snapshot_name, source_volume,"},{"line_number":604,"context_line":"                                                src_vol.get(\u0027poolName\u0027))"},{"line_number":605,"context_line":"        LOG.debug(TYDSLogEn.CREATE_VOLUME_FROM_SNAPSHOT.value, volume_name,"},{"line_number":606,"context_line":"                  pool_name, snapshot_name, source_volume,"},{"line_number":607,"context_line":"                  src_vol.get(\u0027poolName\u0027))"}],"source_content_type":"text/x-python","patch_set":12,"id":"e975beaf_79442dba","line":604,"range":{"start_line":602,"start_character":0,"end_line":604,"end_character":72},"in_reply_to":"48567ba1_e54cbdb5","updated":"2023-07-13 14:37:49.000000000","message":"Feel sorry that the case handled at the line 660~663. Not very obviously.","commit_id":"ada953ffce52c3d052e2d339563416adf169bfb1"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"eb07147353d1153eddaed3c832c182b38f6f6786","unresolved":false,"context_lines":[{"line_number":599,"context_line":"                    \u0027create_volume_from_snapshot.\u0027) % volume_name"},{"line_number":600,"context_line":"            raise TYDSDriverException(reason\u003dmsg)"},{"line_number":601,"context_line":""},{"line_number":602,"context_line":"        self.client.create_volume_from_snapshot(volume_name, pool_name,"},{"line_number":603,"context_line":"                                                snapshot_name, source_volume,"},{"line_number":604,"context_line":"                                                src_vol.get(\u0027poolName\u0027))"},{"line_number":605,"context_line":"        LOG.debug(TYDSLogEn.CREATE_VOLUME_FROM_SNAPSHOT.value, volume_name,"},{"line_number":606,"context_line":"                  pool_name, snapshot_name, source_volume,"},{"line_number":607,"context_line":"                  src_vol.get(\u0027poolName\u0027))"}],"source_content_type":"text/x-python","patch_set":12,"id":"f1da0931_2e5e0783","line":604,"range":{"start_line":602,"start_character":0,"end_line":604,"end_character":72},"in_reply_to":"48567ba1_e54cbdb5","updated":"2023-07-13 14:37:26.000000000","message":"This is already addressed, I missed it in my last review. Marking as resolved.","commit_id":"ada953ffce52c3d052e2d339563416adf169bfb1"},{"author":{"_account_id":29878,"name":"x-23","email":"xe333@sina.com"},"change_message_id":"c1e55a70c8524134f2893207c50d665b91080ce4","unresolved":false,"context_lines":[{"line_number":599,"context_line":"                    \u0027create_volume_from_snapshot.\u0027) % volume_name"},{"line_number":600,"context_line":"            raise TYDSDriverException(reason\u003dmsg)"},{"line_number":601,"context_line":""},{"line_number":602,"context_line":"        self.client.create_volume_from_snapshot(volume_name, pool_name,"},{"line_number":603,"context_line":"                                                snapshot_name, source_volume,"},{"line_number":604,"context_line":"                                                src_vol.get(\u0027poolName\u0027))"},{"line_number":605,"context_line":"        LOG.debug(TYDSLogEn.CREATE_VOLUME_FROM_SNAPSHOT.value, volume_name,"},{"line_number":606,"context_line":"                  pool_name, snapshot_name, source_volume,"},{"line_number":607,"context_line":"                  src_vol.get(\u0027poolName\u0027))"}],"source_content_type":"text/x-python","patch_set":12,"id":"820b542c_6245ef3f","line":604,"range":{"start_line":602,"start_character":0,"end_line":604,"end_character":72},"in_reply_to":"e975beaf_79442dba","updated":"2023-07-14 02:35:55.000000000","message":"I am marking this comment as resolved as the issue has been noticed and addressed. Thank you for your feedback! Please feel free to let me know if you have any other questions or concerns.","commit_id":"ada953ffce52c3d052e2d339563416adf169bfb1"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"a50cb8c5eb30a2e38ac75832c0a2028441944514","unresolved":true,"context_lines":[{"line_number":515,"context_line":"        size_mb \u003d int(new_size) * 1024"},{"line_number":516,"context_line":"        self.client.extend_volume(volume_name, pool_name, size_mb)"},{"line_number":517,"context_line":"        LOG.debug(EXTEND_VOLUME_SUCCESS, volume_name, volume.size *"},{"line_number":518,"context_line":"                  1024, size_mb)"},{"line_number":519,"context_line":""},{"line_number":520,"context_line":"    def create_cloned_volume(self, volume, src_vref):"},{"line_number":521,"context_line":"        \"\"\"Clone a volume.\"\"\""}],"source_content_type":"text/x-python","patch_set":15,"id":"05dba71d_40e04293","line":518,"updated":"2023-07-14 13:35:05.000000000","message":"This is something to think about, you don\u0027t need to do it now (or ever).\n\nThe constant string you\u0027ve defined is this:\n\n  EXTEND_VOLUME_SUCCESS \u003d (\u0027[Success] Cinder: Extend volume: %s from %sMB to \u0027\n                           \u0027%sMB.\u0027)\n\nNote that all the parameters are being coerced to strings (which is fine).  The problem is that at line 517, it\u0027s not obvious without checking back to where the string was defined, what the order of the arguments should be.  So no matter what order the arguments are passed, the logger will not raise an exception (which is good) but if they\u0027re passed in the wrong order, the log message will be incorrect or misleading or make no sense.\n\nIf you define the string using named parameters, something like this:\n\n  EXTEND_VOLUME_SUCCESS \u003d (\u0027[Success] Cinder: Extend volume: %(volname)s from \u0027\n                           \u0027%(source_MB)sMB to %(target_MB)sMB.\u0027)\n\nThen line 517 will look like this:\n\n  LOG.debug(EXTEND_VOLUME_SUCCESS, {\"volname\": volume_name,\n                                    \"source_MB\": volume.size * 1024,\n                                    \"target_MB\": size_mb})\n\nThis makes it easier for reviewers to see that the correct arguments are being passed to the logger in the correct order.  Also, if you have to change the order of parameters in the string for some reason, you won\u0027t have to make changes to every place the string is used.\n\nThe downside is that you will be creating and passing a dict, so that\u0027s why I\u0027m only suggesting that you think about this.","commit_id":"6fcb495c8b60f62c0a0d10913737ed46929dbbaf"},{"author":{"_account_id":29878,"name":"x-23","email":"xe333@sina.com"},"change_message_id":"b009a2d7c4f49bcaceed05aaf87cb60220a16bce","unresolved":false,"context_lines":[{"line_number":515,"context_line":"        size_mb \u003d int(new_size) * 1024"},{"line_number":516,"context_line":"        self.client.extend_volume(volume_name, pool_name, size_mb)"},{"line_number":517,"context_line":"        LOG.debug(EXTEND_VOLUME_SUCCESS, volume_name, volume.size *"},{"line_number":518,"context_line":"                  1024, size_mb)"},{"line_number":519,"context_line":""},{"line_number":520,"context_line":"    def create_cloned_volume(self, volume, src_vref):"},{"line_number":521,"context_line":"        \"\"\"Clone a volume.\"\"\""}],"source_content_type":"text/x-python","patch_set":15,"id":"658b55d4_190bb400","line":518,"in_reply_to":"05dba71d_40e04293","updated":"2023-07-17 02:37:05.000000000","message":"Thank you for your valuable suggestion. We agree that using named parameters in the log message can improve the readability and maintainability of our code. It helps ensure the correct order of arguments and makes it easier for reviewers to understand the log messages.\n\nAfter considering the trade-offs, we are inclined to implement the change as you have suggested. We believe it will bring benefits in terms of code clarity and future maintainability, outweighing the potential performance impact of creating and passing a dictionary for each log message.\n\nWe appreciate your input and will proceed with implementing the suggested improvement. Your feedback has been instrumental in enhancing our code quality. Thank you for taking the time to share your insights.","commit_id":"6fcb495c8b60f62c0a0d10913737ed46929dbbaf"}],"cinder/volume/drivers/toyou/tyds/tyds_client.py":[{"author":{"_account_id":29122,"name":"Raghavendra Tilay","email":"raghavendra-uddhav.tilay@hpe.com","username":"raghavendrat"},"change_message_id":"3ed9ba177989f478f92f3f693d87632797304724","unresolved":true,"context_lines":[{"line_number":39,"context_line":""},{"line_number":40,"context_line":"    def get_token(self):"},{"line_number":41,"context_line":"        if self._token and time.time() \u003c self._token_expiration:"},{"line_number":42,"context_line":"            # Token 未过期，直接返回现有的 Token"},{"line_number":43,"context_line":"            return self._token"},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"        # Token 已过期或未获取过，重新获取 Token"}],"source_content_type":"text/x-python","patch_set":8,"id":"1b14e942_288c3b0f","line":42,"range":{"start_line":42,"start_character":19,"end_line":42,"end_character":32},"updated":"2023-07-06 13:00:08.000000000","message":"With due respect to all languages ...\nNot sure if fonts from other languages are allowed ?","commit_id":"266bd7d6035dd838bf2c10e58b2d79d0dbda7786"},{"author":{"_account_id":29878,"name":"x-23","email":"xe333@sina.com"},"change_message_id":"f5ac6b5bc4b3da0b13f1a515220ffc6837716fd3","unresolved":false,"context_lines":[{"line_number":39,"context_line":""},{"line_number":40,"context_line":"    def get_token(self):"},{"line_number":41,"context_line":"        if self._token and time.time() \u003c self._token_expiration:"},{"line_number":42,"context_line":"            # Token 未过期，直接返回现有的 Token"},{"line_number":43,"context_line":"            return self._token"},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"        # Token 已过期或未获取过，重新获取 Token"}],"source_content_type":"text/x-python","patch_set":8,"id":"52281ba5_e3c51dea","line":42,"range":{"start_line":42,"start_character":19,"end_line":42,"end_character":32},"in_reply_to":"1b14e942_288c3b0f","updated":"2023-07-07 04:39:25.000000000","message":"Thank you for your feedback. We appreciate your concerns regarding the usage of non-English fonts in the code, and we understand the importance of maintaining a universal and standardized approach in the community.\nIn response to your comment, we acknowledge the need to adhere to the community guidelines and best practices. To ensure clarity and accessibility for all community members, we will make the necessary changes to replace the non-English fonts with English annotations in the code. This will promote consistency and enable broader understanding and collaboration within the community.\nWe apologize for any inconvenience caused and appreciate your guidance in aligning with community norms. If you have any further suggestions or recommendations, please feel free to share them.","commit_id":"266bd7d6035dd838bf2c10e58b2d79d0dbda7786"},{"author":{"_account_id":29122,"name":"Raghavendra Tilay","email":"raghavendra-uddhav.tilay@hpe.com","username":"raghavendrat"},"change_message_id":"3ed9ba177989f478f92f3f693d87632797304724","unresolved":true,"context_lines":[{"line_number":251,"context_line":"        progress_data \u003d self.send_http_api(url\u003durl, params\u003dparams)"},{"line_number":252,"context_line":"        return progress_data"},{"line_number":253,"context_line":""},{"line_number":254,"context_line":"# initiator group"},{"line_number":255,"context_line":"    def create_initiator_group(self, group_name, client):"},{"line_number":256,"context_line":"        url \u003d \u0027iscsi/client-group/\u0027"},{"line_number":257,"context_line":"        params \u003d {"}],"source_content_type":"text/x-python","patch_set":8,"id":"b0d7cf3d_be5d4623","line":254,"updated":"2023-07-06 13:00:08.000000000","message":"nit: it would be better to align this comment line at same level as next line","commit_id":"266bd7d6035dd838bf2c10e58b2d79d0dbda7786"},{"author":{"_account_id":29878,"name":"x-23","email":"xe333@sina.com"},"change_message_id":"f5ac6b5bc4b3da0b13f1a515220ffc6837716fd3","unresolved":false,"context_lines":[{"line_number":251,"context_line":"        progress_data \u003d self.send_http_api(url\u003durl, params\u003dparams)"},{"line_number":252,"context_line":"        return progress_data"},{"line_number":253,"context_line":""},{"line_number":254,"context_line":"# initiator group"},{"line_number":255,"context_line":"    def create_initiator_group(self, group_name, client):"},{"line_number":256,"context_line":"        url \u003d \u0027iscsi/client-group/\u0027"},{"line_number":257,"context_line":"        params \u003d {"}],"source_content_type":"text/x-python","patch_set":8,"id":"7a7d3ecd_dfb3c27d","line":254,"in_reply_to":"b0d7cf3d_be5d4623","updated":"2023-07-07 04:39:25.000000000","message":"Thank you for your feedback. We appreciate your suggestion. We will make the necessary changes to remove the inline comments and provide separate comments for each function. We will also ensure that the comments are properly formatted and aligned for improved readability.","commit_id":"266bd7d6035dd838bf2c10e58b2d79d0dbda7786"},{"author":{"_account_id":29122,"name":"Raghavendra Tilay","email":"raghavendra-uddhav.tilay@hpe.com","username":"raghavendrat"},"change_message_id":"3ed9ba177989f478f92f3f693d87632797304724","unresolved":true,"context_lines":[{"line_number":303,"context_line":"        }"},{"line_number":304,"context_line":"        return self.send_http_api(url\u003durl, params\u003dparams, method\u003d\u0027put\u0027)"},{"line_number":305,"context_line":""},{"line_number":306,"context_line":"    def get_it(self):"},{"line_number":307,"context_line":"        url \u003d \u0027iscsi/target/\u0027"},{"line_number":308,"context_line":"        res \u003d self.send_http_api(url\u003durl, method\u003d\u0027get\u0027)"},{"line_number":309,"context_line":"        target_list \u003d res.get(\u0027target_list\u0027)"}],"source_content_type":"text/x-python","patch_set":8,"id":"3c80da5a_5d6f2504","line":306,"range":{"start_line":306,"start_character":8,"end_line":306,"end_character":14},"updated":"2023-07-06 13:00:08.000000000","message":"\"get_it\" sounds very generic.\nCan this function be renamed to specific name eg. \"get_iscsi_targets\"","commit_id":"266bd7d6035dd838bf2c10e58b2d79d0dbda7786"},{"author":{"_account_id":29878,"name":"x-23","email":"xe333@sina.com"},"change_message_id":"f5ac6b5bc4b3da0b13f1a515220ffc6837716fd3","unresolved":false,"context_lines":[{"line_number":303,"context_line":"        }"},{"line_number":304,"context_line":"        return self.send_http_api(url\u003durl, params\u003dparams, method\u003d\u0027put\u0027)"},{"line_number":305,"context_line":""},{"line_number":306,"context_line":"    def get_it(self):"},{"line_number":307,"context_line":"        url \u003d \u0027iscsi/target/\u0027"},{"line_number":308,"context_line":"        res \u003d self.send_http_api(url\u003durl, method\u003d\u0027get\u0027)"},{"line_number":309,"context_line":"        target_list \u003d res.get(\u0027target_list\u0027)"}],"source_content_type":"text/x-python","patch_set":8,"id":"f911b8f3_bb3204d8","line":306,"range":{"start_line":306,"start_character":8,"end_line":306,"end_character":14},"in_reply_to":"3c80da5a_5d6f2504","updated":"2023-07-07 04:39:25.000000000","message":"Thank you for your feedback. You\u0027re right that the current function name \"get_it\" is generic and not descriptive of its purpose. To improve clarity and specificity, I propose renaming the function to \"get_initiator_target_connections\". This new name better reflects the function\u0027s purpose and helps to distinguish it from other functions. I will make the necessary changes to update the function name. Thank you for your suggestion!","commit_id":"266bd7d6035dd838bf2c10e58b2d79d0dbda7786"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"cd5a21b1ef7d5a61a05486a00b290a3644467d10","unresolved":true,"context_lines":[{"line_number":95,"context_line":"        \"\"\""},{"line_number":96,"context_line":"        try:"},{"line_number":97,"context_line":"            sock \u003d socket.socket(socket.AF_INET, socket.SOCK_DGRAM)"},{"line_number":98,"context_line":"            sock.connect((\"8.8.8.8\", 80))"},{"line_number":99,"context_line":"            local_ip \u003d sock.getsockname()[0]"},{"line_number":100,"context_line":"            sock.close()"},{"line_number":101,"context_line":"            return local_ip"}],"source_content_type":"text/x-python","patch_set":9,"id":"680b7901_e0f66add","line":98,"range":{"start_line":98,"start_character":0,"end_line":98,"end_character":17},"updated":"2023-07-11 14:58:57.000000000","message":"Don\u0027t connect to google DNS servers to get the local IP address, there is some better way to do this.  (CONF.my_ip, netutils.get_my_ipv4(), etc.)","commit_id":"b9dec9daa4b575f4d2bf74adcf00de8f94cf16ba"},{"author":{"_account_id":32464,"name":"caiqilong","email":"406454833@qq.com","username":"cccqqqlll"},"change_message_id":"be35810fe45dc6b57e602e07d41ddd5b58844e1e","unresolved":false,"context_lines":[{"line_number":95,"context_line":"        \"\"\""},{"line_number":96,"context_line":"        try:"},{"line_number":97,"context_line":"            sock \u003d socket.socket(socket.AF_INET, socket.SOCK_DGRAM)"},{"line_number":98,"context_line":"            sock.connect((\"8.8.8.8\", 80))"},{"line_number":99,"context_line":"            local_ip \u003d sock.getsockname()[0]"},{"line_number":100,"context_line":"            sock.close()"},{"line_number":101,"context_line":"            return local_ip"}],"source_content_type":"text/x-python","patch_set":9,"id":"f4e09e46_19a82b8f","line":98,"range":{"start_line":98,"start_character":0,"end_line":98,"end_character":17},"in_reply_to":"680b7901_e0f66add","updated":"2023-07-12 08:53:35.000000000","message":"thanks for your advice. I changed to use netutils.get_my_ipv4()","commit_id":"b9dec9daa4b575f4d2bf74adcf00de8f94cf16ba"}]}
