)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":35822,"name":"Senthil Vasudevan","display_name":"HPE AlletraMP FC CI","email":"senthil.vasudevan@hpe.com","username":"senthilv"},"change_message_id":"a4891dbd54fedd23c81aa4f6116eb494f5c5dd6f","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"766ca727_68c3fee3","updated":"2025-12-12 06:39:33.000000000","message":"run-HPE Storage CI","commit_id":"2baf3f717f014a3c2216f35487fe0c48e5d56c37"},{"author":{"_account_id":29122,"name":"Raghavendra Tilay","email":"raghavendra-uddhav.tilay@hpe.com","username":"raghavendrat"},"change_message_id":"a93d513ffd2cb72d3c11c52aed1318b766200983","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":10,"id":"147bfa8e_da2c22fa","updated":"2026-01-02 09:54:53.000000000","message":"run-HPE Storage CI","commit_id":"b9ca35457644fcd950a819389f8f2388955a57f1"},{"author":{"_account_id":29122,"name":"Raghavendra Tilay","email":"raghavendra-uddhav.tilay@hpe.com","username":"raghavendrat"},"change_message_id":"3fdca87c7da1a0ccdcce2a5401edd066db297d94","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":13,"id":"2d244d9c_71b35f51","updated":"2026-01-02 15:34:59.000000000","message":"recheck tempest-integrated-storage","commit_id":"aac43c2a9c5350fb77c16bcdc563f803b4876e00"},{"author":{"_account_id":29122,"name":"Raghavendra Tilay","email":"raghavendra-uddhav.tilay@hpe.com","username":"raghavendrat"},"change_message_id":"7ee1dd69db55300fb943d5ec2c96df483177681f","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":13,"id":"737b476c_d37ee1c7","updated":"2026-01-02 14:17:42.000000000","message":"run-HPE Storage CI","commit_id":"aac43c2a9c5350fb77c16bcdc563f803b4876e00"},{"author":{"_account_id":29122,"name":"Raghavendra Tilay","email":"raghavendra-uddhav.tilay@hpe.com","username":"raghavendrat"},"change_message_id":"9558b0b8b9d0c7afe7eeae09407927b9813b3783","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":14,"id":"a527e101_23358a93","updated":"2026-01-03 09:26:09.000000000","message":"recheck cinder-plugin-ceph-tempest and devstack-plugin-nfs-tempest-full failed","commit_id":"a381c9363e8827195429bde62f4d11e75ea1da82"},{"author":{"_account_id":29122,"name":"Raghavendra Tilay","email":"raghavendra-uddhav.tilay@hpe.com","username":"raghavendrat"},"change_message_id":"c6aa6b12a78e883aab71a18d44446f0d63b6f21e","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":14,"id":"5315d61e_1fa29ae2","updated":"2026-01-05 06:31:22.000000000","message":"run-HPE Storage CI","commit_id":"a381c9363e8827195429bde62f4d11e75ea1da82"},{"author":{"_account_id":15439,"name":"Alexey Khodos","email":"akhodos@tintri.com","username":"Alexey"},"change_message_id":"5630ac95821eb5dcc1f76c942706c31315f738e7","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":14,"id":"17d2af36_071e8b5b","updated":"2026-01-03 20:20:38.000000000","message":"run-vmstore-ci","commit_id":"a381c9363e8827195429bde62f4d11e75ea1da82"},{"author":{"_account_id":10058,"name":"Erlon R. Cruz","email":"erlon.rodrigues.cruz@canonical.com","username":"sombrafam"},"change_message_id":"ff49de8ae8a5799ae5e9c7d9b005cce19a477826","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":15,"id":"0d01b89b_6e1c76ba","updated":"2026-01-07 12:51:12.000000000","message":"I\u0027ve added some inline comments, and overall, the driver needs the following corrections:\n\n- Consistent docstrings for the driver\u0027s functions.\n- Consistent logging for the driver\u0027s functions: Ensure that relevant parameter information is always printed at function entries, and, when possible or relevant, at function exits and related information processed in the function. Avoid multiple debug messages when a single message with relevant information will suffice.\n- Proper use of exceptions: Do not raise generic exceptions. Use specific Cinder exception classes like `exception.HostNotFound` or `exception.VolumeDriverException`. Also, try/except blocks should be as minimal as possible and only used for parts of the code that typically perform external interactions (e.g., API calls, file operations, etc.).","commit_id":"efbbef52f7f5d898a0624ce4be8ab8e0d2c6c1b5"},{"author":{"_account_id":29122,"name":"Raghavendra Tilay","email":"raghavendra-uddhav.tilay@hpe.com","username":"raghavendrat"},"change_message_id":"9687140876ccb1b42e92f83e64d281896cfdd131","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":15,"id":"2992f162_9d443e2d","updated":"2026-01-07 14:07:04.000000000","message":"Thanks Erlon. will check review comments.","commit_id":"efbbef52f7f5d898a0624ce4be8ab8e0d2c6c1b5"},{"author":{"_account_id":29122,"name":"Raghavendra Tilay","email":"raghavendra-uddhav.tilay@hpe.com","username":"raghavendrat"},"change_message_id":"d25fd5271228c411587e27ffe0b1a8f0e09fc4c2","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":15,"id":"3465c688_a123bf86","updated":"2026-01-05 14:34:28.000000000","message":"recheck cinder-plugin-ceph-tempest and devstack-plugin-nfs-tempest-full failed","commit_id":"efbbef52f7f5d898a0624ce4be8ab8e0d2c6c1b5"},{"author":{"_account_id":29122,"name":"Raghavendra Tilay","email":"raghavendra-uddhav.tilay@hpe.com","username":"raghavendrat"},"change_message_id":"9d63899d9d75d12883aba58b044f05f18566ceaa","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":15,"id":"07491833_05851289","updated":"2026-01-05 09:30:32.000000000","message":"run-HPE Storage CI","commit_id":"efbbef52f7f5d898a0624ce4be8ab8e0d2c6c1b5"},{"author":{"_account_id":29122,"name":"Raghavendra Tilay","email":"raghavendra-uddhav.tilay@hpe.com","username":"raghavendrat"},"change_message_id":"e4acadf4b63cee6dea33d02621815a3665ec10db","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":15,"id":"73bfccc1_d3efdfc2","updated":"2026-01-07 04:42:00.000000000","message":"run-HPE Storage CI","commit_id":"efbbef52f7f5d898a0624ce4be8ab8e0d2c6c1b5"},{"author":{"_account_id":29122,"name":"Raghavendra Tilay","email":"raghavendra-uddhav.tilay@hpe.com","username":"raghavendrat"},"change_message_id":"5ae9f51944e7ba94046e314d90fb7f2f61d53434","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":16,"id":"8903b7ad_0f144e83","updated":"2026-01-08 12:43:52.000000000","message":"hi Erlon,\ni tried to address review comments","commit_id":"43f1a211336aaeef66c25b96bb776e81eef5705e"},{"author":{"_account_id":29122,"name":"Raghavendra Tilay","email":"raghavendra-uddhav.tilay@hpe.com","username":"raghavendrat"},"change_message_id":"60c516755d325d4d228fc54403ca09967ceb643a","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":17,"id":"09b312e4_57c9b5b0","updated":"2026-01-10 05:50:44.000000000","message":"hi Erlon,\ni tried to address review comments.\nmay i request to please review again.\nThanks.","commit_id":"3b0def9d9a1f1c1ebce8a87d5df60d98497b40f7"},{"author":{"_account_id":29122,"name":"Raghavendra Tilay","email":"raghavendra-uddhav.tilay@hpe.com","username":"raghavendrat"},"change_message_id":"4a5f6f3e19e98943debd6b68904c166cbef0caf9","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":17,"id":"3d0fd7e2_90c2fa72","updated":"2026-01-12 05:08:31.000000000","message":"run-HPE Storage CI","commit_id":"3b0def9d9a1f1c1ebce8a87d5df60d98497b40f7"},{"author":{"_account_id":29122,"name":"Raghavendra Tilay","email":"raghavendra-uddhav.tilay@hpe.com","username":"raghavendrat"},"change_message_id":"1c83b07ca23f0b2eeaa9ce4d49380e52c001b834","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":18,"id":"77cc662f_945b05d9","updated":"2026-01-13 05:14:01.000000000","message":"recheck cinder-plugin-ceph-tempest failed","commit_id":"c0d55fcbfcc99c5ede7d4236cedae55b433866af"},{"author":{"_account_id":29122,"name":"Raghavendra Tilay","email":"raghavendra-uddhav.tilay@hpe.com","username":"raghavendrat"},"change_message_id":"9fc7ed0745652a7643d82350efa911453fbf8c43","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":18,"id":"f3ebe538_59f26b40","updated":"2026-01-12 16:13:33.000000000","message":"recheck tempest-ipv6-only failed","commit_id":"c0d55fcbfcc99c5ede7d4236cedae55b433866af"},{"author":{"_account_id":29122,"name":"Raghavendra Tilay","email":"raghavendra-uddhav.tilay@hpe.com","username":"raghavendrat"},"change_message_id":"d04428af92f4a4fe045bc2e602c275de10101ba9","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":21,"id":"08d10d4d_1f6096eb","updated":"2026-01-19 15:40:26.000000000","message":"Please find reply inline","commit_id":"7085ff3a3fd19cc0f5f778f0a1e87a5664a5fccb"},{"author":{"_account_id":29122,"name":"Raghavendra Tilay","email":"raghavendra-uddhav.tilay@hpe.com","username":"raghavendrat"},"change_message_id":"870e4910edffb8c813b0f680458d817497ac1d51","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":21,"id":"f840f87a_3800b4ad","updated":"2026-01-19 16:14:37.000000000","message":"Thanks Eric \u0026 Takashi. i will check","commit_id":"7085ff3a3fd19cc0f5f778f0a1e87a5664a5fccb"},{"author":{"_account_id":29122,"name":"Raghavendra Tilay","email":"raghavendra-uddhav.tilay@hpe.com","username":"raghavendrat"},"change_message_id":"b997c68f1825cbf18f0e7c46e65e5308059665dd","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":22,"id":"35a39497_c2ad42ed","updated":"2026-01-20 12:10:24.000000000","message":"Thanks Eric \u0026 Takashi. i tried to address review comments.\nFor one comment, i have query (mentioned inline).","commit_id":"7bad117f7a40882b1923c0f91ebfc93bcf8a19af"},{"author":{"_account_id":29122,"name":"Raghavendra Tilay","email":"raghavendra-uddhav.tilay@hpe.com","username":"raghavendrat"},"change_message_id":"b12585e38b19c3c953ef0cd776705689f3506dbd","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":23,"id":"f58a330d_ef167a86","updated":"2026-01-22 14:03:55.000000000","message":"Addressed review comments. Please find replies inline.","commit_id":"154e60a9ab4ee745a8f3165ceed0d967700f16c3"},{"author":{"_account_id":29122,"name":"Raghavendra Tilay","email":"raghavendra-uddhav.tilay@hpe.com","username":"raghavendrat"},"change_message_id":"4345fe62045c1903005325ed521cf113bb62496c","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":24,"id":"37da607b_00d9c140","updated":"2026-01-23 04:28:23.000000000","message":"Thanks Takashi. Please find reply inline.","commit_id":"2c5c26a9f9f7c59d6c748d05a4f45ef3d461447b"},{"author":{"_account_id":29122,"name":"Raghavendra Tilay","email":"raghavendra-uddhav.tilay@hpe.com","username":"raghavendrat"},"change_message_id":"edc8a759e3cb4860d1ac5f7e0e49c17f18956968","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":24,"id":"615c4be9_49120b12","updated":"2026-01-28 15:38:02.000000000","message":"Thanks Takashi. i will check comments.","commit_id":"2c5c26a9f9f7c59d6c748d05a4f45ef3d461447b"},{"author":{"_account_id":29122,"name":"Raghavendra Tilay","email":"raghavendra-uddhav.tilay@hpe.com","username":"raghavendrat"},"change_message_id":"c744099293a5693bfe9397eaa28ccc464a58f617","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":24,"id":"d2048ec7_df23f4fd","updated":"2026-01-27 05:04:14.000000000","message":"hi Eric/Erlon/Takashi,\nNow zuul has passed on both requirements patch \u0026 cinder patch.\nRequest to please revisit this patch \u0026 provide approval/comments.\nAs i understand Jan 30th is last date to submit new driver.\nSo, would like to get this patch in soon.\nAppreciate your help.","commit_id":"2c5c26a9f9f7c59d6c748d05a4f45ef3d461447b"},{"author":{"_account_id":29122,"name":"Raghavendra Tilay","email":"raghavendra-uddhav.tilay@hpe.com","username":"raghavendrat"},"change_message_id":"3929db1a92fa2207bb75a9da7e49308c9590b8d5","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":24,"id":"a52bce5c_704d403c","updated":"2026-01-29 04:59:06.000000000","message":"hi Takashi,\nPlease find reply to one comment. Will address other two comments soon.","commit_id":"2c5c26a9f9f7c59d6c748d05a4f45ef3d461447b"},{"author":{"_account_id":29122,"name":"Raghavendra Tilay","email":"raghavendra-uddhav.tilay@hpe.com","username":"raghavendrat"},"change_message_id":"59c173d7c84b9087fd88e410a6035e15e7d4ca1d","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":24,"id":"78b03b86_bdd8e9cc","updated":"2026-01-24 04:34:44.000000000","message":"recheck","commit_id":"2c5c26a9f9f7c59d6c748d05a4f45ef3d461447b"},{"author":{"_account_id":29122,"name":"Raghavendra Tilay","email":"raghavendra-uddhav.tilay@hpe.com","username":"raghavendrat"},"change_message_id":"7078329e9ce5aaebbac6d658e733c7cfae915084","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":25,"id":"b516a1c3_ab0d1e03","updated":"2026-01-29 10:41:29.000000000","message":"hi Takashi,\ni addressed remaining two comments. Thanks.","commit_id":"f5d64080748bb6e0f7ce0de56876e3a47ade7db3"},{"author":{"_account_id":29122,"name":"Raghavendra Tilay","email":"raghavendra-uddhav.tilay@hpe.com","username":"raghavendrat"},"change_message_id":"b6c1732b96b5e0d82e893ee1668d314dd78ddc2b","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":26,"id":"2ed15341_ea6176c6","updated":"2026-01-29 15:59:15.000000000","message":"recheck cinder-plugin-ceph-tempest failed","commit_id":"48f6c4b1eedd2b6dcdb243b4aad1a9b434078e67"},{"author":{"_account_id":29122,"name":"Raghavendra Tilay","email":"raghavendra-uddhav.tilay@hpe.com","username":"raghavendrat"},"change_message_id":"3ed9fd06c4c052f99ff87cdbc58d38fa59119876","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":27,"id":"32b24645_37211243","updated":"2026-01-30 14:28:14.000000000","message":"recheck grenade failed","commit_id":"fb66ad2cd3cc6f78c296fcb4eacb0e800941d292"},{"author":{"_account_id":10058,"name":"Erlon R. Cruz","email":"erlon.rodrigues.cruz@canonical.com","username":"sombrafam"},"change_message_id":"4c1cc4acce4722ccc32a2ba72460e7b8ca43c412","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":28,"id":"b37d961a_d2536c7c","updated":"2026-02-04 13:55:39.000000000","message":"Hi, please consider my comments below. Also I didn\u0027t see the Allegra CI (iSCSI + FC) in the runs. That is a blocker to get this accepted.","commit_id":"6ad93c3cea58f987bd38e4e74ef8a939863e6f12"},{"author":{"_account_id":29122,"name":"Raghavendra Tilay","email":"raghavendra-uddhav.tilay@hpe.com","username":"raghavendrat"},"change_message_id":"066fabab4cf6ce947c4590d674a8a8c66df239ac","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":28,"id":"7971f9da_2b99ab92","updated":"2026-02-04 15:36:22.000000000","message":"Thanks Erlon.\nThe iscsi CI did pass on Feb 03 at 01:12am India time (i.e UTC + 05:30).\nWe are working on FC CI. will run it soon.","commit_id":"6ad93c3cea58f987bd38e4e74ef8a939863e6f12"},{"author":{"_account_id":29122,"name":"Raghavendra Tilay","email":"raghavendra-uddhav.tilay@hpe.com","username":"raghavendrat"},"change_message_id":"522f25743b06365bd322f157df5c46418d5cc762","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":28,"id":"463bfc8c_ded796fb","updated":"2026-02-02 17:13:06.000000000","message":"Thanks Takashi. Please find replies inline.","commit_id":"6ad93c3cea58f987bd38e4e74ef8a939863e6f12"},{"author":{"_account_id":29122,"name":"Raghavendra Tilay","email":"raghavendra-uddhav.tilay@hpe.com","username":"raghavendrat"},"change_message_id":"9e840081052d29f683f514bc4c8ff7f4f77b0e21","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":29,"id":"e7c91437_600d4033","updated":"2026-02-06 14:47:05.000000000","message":"Thanks Takashi","commit_id":"10cfbb886ef9f57dc4577d0b9dcdee8b92f77484"},{"author":{"_account_id":29122,"name":"Raghavendra Tilay","email":"raghavendra-uddhav.tilay@hpe.com","username":"raghavendrat"},"change_message_id":"78760c15b4eafcd01f4c230592c1af95d8df2bda","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":29,"id":"2dc33994_82040d4e","updated":"2026-02-05 12:10:49.000000000","message":"hi Erlon,\nTried to address review comments. Please find reply inline. Thanks.","commit_id":"10cfbb886ef9f57dc4577d0b9dcdee8b92f77484"},{"author":{"_account_id":29122,"name":"Raghavendra Tilay","email":"raghavendra-uddhav.tilay@hpe.com","username":"raghavendrat"},"change_message_id":"e6df776a698748cca3a2082a187dfd29c217b88f","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":30,"id":"0be24da1_4bd2c427","updated":"2026-02-09 12:52:36.000000000","message":"hi Takashi,\ni tried to address review comment. Please find reply inline","commit_id":"a7e02f1ba070d217bab5a6e908a0a5a1a9cbdfb7"},{"author":{"_account_id":29122,"name":"Raghavendra Tilay","email":"raghavendra-uddhav.tilay@hpe.com","username":"raghavendrat"},"change_message_id":"a3b2f598aaff3dc7ec65ce62b4e19703b8641960","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":30,"id":"49f27c11_29e8039c","updated":"2026-02-09 16:01:54.000000000","message":"recheck openstack-tox-py313 and openstack-tox-docs failed","commit_id":"a7e02f1ba070d217bab5a6e908a0a5a1a9cbdfb7"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"bc2cd15ef080f62209b5a94bf20c42aadab33793","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":31,"id":"73ff5e99_0cfdb4f4","updated":"2026-02-10 14:54:54.000000000","message":"I don\u0027t see third-party CI for HPE Alletra MP responding on this patch?  Am I just missing it?  Please let us know the CI situation, because it\u0027s going to be difficult to get people to dedicate review time to a big patch like this if the CI isn\u0027t ready, since the patch cannot be merged without third-party CI.","commit_id":"605d166061d7410353b52d78e5297b5a9cf9255d"},{"author":{"_account_id":29122,"name":"Raghavendra Tilay","email":"raghavendra-uddhav.tilay@hpe.com","username":"raghavendrat"},"change_message_id":"e0d5e413e1c402c122b51dc4b905adb9ac7ac95f","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":33,"id":"3fea88c9_a0de9700","updated":"2026-02-11 13:53:43.000000000","message":"CI logs available at:\nhttps://github.com/hpe-storage/hpe_cinder_logs/blob/master/new_logs/969373\nhttps://github.com/hpe-storage/hpe_cinder_logs/blob/master/new_logs/969373/etc/tempest_log.log","commit_id":"ab3f2b880e3ef3df120b14ba2ec768fefa10d6f4"},{"author":{"_account_id":29122,"name":"Raghavendra Tilay","email":"raghavendra-uddhav.tilay@hpe.com","username":"raghavendrat"},"change_message_id":"5050f30e203ba1c19888a994910b75a799346689","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":33,"id":"ec6e78e1_01082f35","updated":"2026-02-11 13:54:30.000000000","message":"Thanks Brian.\nThe HPE Storage CI (iscsi) got passed (latest today) at 18:48 hours India time.","commit_id":"ab3f2b880e3ef3df120b14ba2ec768fefa10d6f4"},{"author":{"_account_id":29122,"name":"Raghavendra Tilay","email":"raghavendra-uddhav.tilay@hpe.com","username":"raghavendrat"},"change_message_id":"9b769d349f840078a8e4b9e891c376315400b80e","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":34,"id":"926f6c42_040a492c","updated":"2026-02-12 09:40:31.000000000","message":"Thanks Eric. i addressed review comment.","commit_id":"7c81173b136a6614dff89c5eae24f5ca11cc7c8b"},{"author":{"_account_id":10058,"name":"Erlon R. Cruz","email":"erlon.rodrigues.cruz@canonical.com","username":"sombrafam"},"change_message_id":"fff934437451ef1a5db40d2b9482300cb69d36b7","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":35,"id":"b8e72832_83d07496","updated":"2026-02-13 12:21:10.000000000","message":"Hi folks,\n\nPlease consider my comments inline. I would also like to ask you to search through the code for similar occurrences of the errors I’m pointing out. For example, if I mention duplicate debug messages, ensure there are no instances of that error in the remaining code. This way, we can avoid multiple reviews addressing the same kind of issues. And we speed up the process.","commit_id":"cc5a56454455ff9d4be204ea87fe3ccf018f9c99"},{"author":{"_account_id":29122,"name":"Raghavendra Tilay","email":"raghavendra-uddhav.tilay@hpe.com","username":"raghavendrat"},"change_message_id":"c020d507bd0c82a12dcabfabbc1d208898f808cc","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":36,"id":"e7248e1b_20f08552","updated":"2026-02-13 13:41:05.000000000","message":"Thanks a lot Erlon for detailed review.\ni tried to address comments. Please find replies inline.","commit_id":"c5792c3fac7195825c9e4974901498428b5efeb6"},{"author":{"_account_id":29122,"name":"Raghavendra Tilay","email":"raghavendra-uddhav.tilay@hpe.com","username":"raghavendrat"},"change_message_id":"a15cbf7079dcb2e219c95d860ea9d25eb0665f85","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":37,"id":"97a0d6b8_96ddb6a5","updated":"2026-02-13 16:03:38.000000000","message":"Please find additional two replies inline.\nCode review comments addressed in latest patchset i.e PS 37","commit_id":"1abd26c259b237e0083f8d66a24fad44a8f753aa"},{"author":{"_account_id":29122,"name":"Raghavendra Tilay","email":"raghavendra-uddhav.tilay@hpe.com","username":"raghavendrat"},"change_message_id":"1a98e6a89b297d8823869ce66b64b00f9e6165de","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":39,"id":"cc725410_fc6fcda1","updated":"2026-02-17 07:01:46.000000000","message":"Thanks Eric. i tried to address review comment","commit_id":"a2ccc13a209a36d9c6c21a1854a029861292433b"},{"author":{"_account_id":29122,"name":"Raghavendra Tilay","email":"raghavendra-uddhav.tilay@hpe.com","username":"raghavendrat"},"change_message_id":"193e09fdb5423ff0e6ea43345c89b5485fa72ecd","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":41,"id":"d953e545_76723d1e","updated":"2026-02-18 12:31:08.000000000","message":"run-HPE NVMeTCP CI","commit_id":"9b6ef7aa448402ff401f842c667924355167232a"},{"author":{"_account_id":29122,"name":"Raghavendra Tilay","email":"raghavendra-uddhav.tilay@hpe.com","username":"raghavendrat"},"change_message_id":"a83117860127ba6a5e8b8bb3077026a0310b7b8e","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":42,"id":"685b17f4_e6133467","updated":"2026-02-18 15:16:38.000000000","message":"CI names are: HPE STORAGE CI (3par-iscsi-driver), HPE Storage FC CI (hpe-fc-driver) and HPE NVMeTCP CI (hpe-nvmetcp-driver).\nUpdated the same in etherpad also.","commit_id":"68826890979cf4ae51950182fd3c77ee4e4c2f2b"},{"author":{"_account_id":29122,"name":"Raghavendra Tilay","email":"raghavendra-uddhav.tilay@hpe.com","username":"raghavendrat"},"change_message_id":"d15e72bb852894f71bc2ed4556a780ca1c8fde72","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":43,"id":"1134853b_b32ae44b","updated":"2026-02-20 14:26:32.000000000","message":"As per comments in requirements patch [1], the flowkit library should be opensource.\n[1] https://review.opendev.org/c/openstack/requirements/+/974322\n\nWe are checking internally for approvals to make flowkit library as opensource.\nSo holding the patch for sometime.","commit_id":"044db1b04b7af4b5e7d44e184b24fb4969889cad"},{"author":{"_account_id":29122,"name":"Raghavendra Tilay","email":"raghavendra-uddhav.tilay@hpe.com","username":"raghavendrat"},"change_message_id":"55c1e51145b37f5140e03d9e6cf32fae21858580","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":43,"id":"65150597_87f24365","updated":"2026-02-20 04:03:37.000000000","message":"hi team,\nreally sorry. we have to hold this patch.\nThanks a lot for all the reviews.","commit_id":"044db1b04b7af4b5e7d44e184b24fb4969889cad"},{"author":{"_account_id":29122,"name":"Raghavendra Tilay","email":"raghavendra-uddhav.tilay@hpe.com","username":"raghavendrat"},"change_message_id":"3b0f14dfd484887f615bc0ef380d17654fe21137","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":47,"id":"be928653_34b68a63","updated":"2026-03-31 07:35:45.000000000","message":"recheck - zuul has now passed on requirements patch","commit_id":"1ca31735226ee2d4b9fdc972eb76bd37e9ea1515"},{"author":{"_account_id":29122,"name":"Raghavendra Tilay","email":"raghavendra-uddhav.tilay@hpe.com","username":"raghavendrat"},"change_message_id":"6f640aa2db00d442fd8c4e99ada5270407d6e279","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":51,"id":"96175048_0a4ec3e1","updated":"2026-04-04 08:44:24.000000000","message":"recheck devstack-plugin-nfs-tempest-full","commit_id":"16ec85ebb1c8ba2dd22c32cdb8ead40d41b64b5e"},{"author":{"_account_id":29122,"name":"Raghavendra Tilay","email":"raghavendra-uddhav.tilay@hpe.com","username":"raghavendrat"},"change_message_id":"41e3e8109ea244574f4026d2a3fd71731ae42b47","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":52,"id":"ccfd360f_e4daa34c","updated":"2026-04-09 06:32:08.000000000","message":"FC CI log:\nhttps://github.com/hpe-storage/hpe-ci-log/blob/main/logs/969373/etc/tempest_log.log","commit_id":"484d154949212add2be236ddd370852c97a1c481"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"fc065f8600f9db3a9dd4456b22e86d2555c02aa5","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":52,"id":"dc0f22d5_d6d4a7d7","updated":"2026-04-10 03:56:37.000000000","message":"Just got started reviewing, but there are a few things you can address.  I\u0027m not sure that the driver options are being handled correctly.","commit_id":"484d154949212add2be236ddd370852c97a1c481"},{"author":{"_account_id":29122,"name":"Raghavendra Tilay","email":"raghavendra-uddhav.tilay@hpe.com","username":"raghavendrat"},"change_message_id":"29b56ecf29749980dbb085c8ff5abdd4f02c028b","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":52,"id":"08d56b1f_3fbfd6db","updated":"2026-04-09 06:34:11.000000000","message":"NVMe CI log:\nhttps://github.com/hpe-storage/hpe-nvmetcp-ci-logs/blob/main/new_logs/969373/etc/tempest_log.log","commit_id":"484d154949212add2be236ddd370852c97a1c481"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"404b0f58f2959494b2d114d6a29ed5e483d49a2c","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":52,"id":"48f9e763_e1275768","updated":"2026-04-09 16:11:00.000000000","message":"The dependency is a change to the requirements repo; it has not been merged yet, but it looks like all the requirements reviewers\u0027 questions/comments have been addressed, so I don\u0027t think it\u0027s a reason to delay reviewing this new driver patch.","commit_id":"484d154949212add2be236ddd370852c97a1c481"},{"author":{"_account_id":29122,"name":"Raghavendra Tilay","email":"raghavendra-uddhav.tilay@hpe.com","username":"raghavendrat"},"change_message_id":"c35496c4441614fa01b62ef78c1f8aa06ca3802f","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":52,"id":"3e45fa31_70952277","updated":"2026-04-09 03:37:13.000000000","message":"iSCSI CI log:\nhttps://github.com/hpe-storage/hpe_cinder_logs/blob/master/new_logs/969373/etc/tempest_log.log","commit_id":"484d154949212add2be236ddd370852c97a1c481"},{"author":{"_account_id":29122,"name":"Raghavendra Tilay","email":"raghavendra-uddhav.tilay@hpe.com","username":"raghavendrat"},"change_message_id":"6d5127d5a3c6b436155210a421314f71399645ee","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":52,"id":"0de7c904_82e7c4fb","updated":"2026-04-08 14:24:05.000000000","message":"run-HPE FC Storage CI","commit_id":"484d154949212add2be236ddd370852c97a1c481"},{"author":{"_account_id":29122,"name":"Raghavendra Tilay","email":"raghavendra-uddhav.tilay@hpe.com","username":"raghavendrat"},"change_message_id":"51ae1320a8fbdc24d0752abb0750f195f474c708","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":52,"id":"1bbf9626_99edc2ee","updated":"2026-04-07 11:06:14.000000000","message":"run-HPE FC Storage CI","commit_id":"484d154949212add2be236ddd370852c97a1c481"},{"author":{"_account_id":29122,"name":"Raghavendra Tilay","email":"raghavendra-uddhav.tilay@hpe.com","username":"raghavendrat"},"change_message_id":"697692d3aad7730cc7e2fb44889353a9d3fa5be1","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":52,"id":"2638f6fa_46dd2d8c","updated":"2026-04-08 12:42:59.000000000","message":"run-HPE FC Storage CI","commit_id":"484d154949212add2be236ddd370852c97a1c481"},{"author":{"_account_id":29122,"name":"Raghavendra Tilay","email":"raghavendra-uddhav.tilay@hpe.com","username":"raghavendrat"},"change_message_id":"9e74b19de2565353db3deee57007def0de0167a5","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":52,"id":"2f3554cc_dabb2a4c","updated":"2026-04-07 04:33:32.000000000","message":"run-HPE FC Storage CI","commit_id":"484d154949212add2be236ddd370852c97a1c481"},{"author":{"_account_id":29122,"name":"Raghavendra Tilay","email":"raghavendra-uddhav.tilay@hpe.com","username":"raghavendrat"},"change_message_id":"e764f5c4ee2c9178bff6604d50380bd1ecfc9882","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":52,"id":"3bbe398a_00548c81","updated":"2026-04-09 04:22:02.000000000","message":"run-HPE FC Storage CI","commit_id":"484d154949212add2be236ddd370852c97a1c481"},{"author":{"_account_id":29122,"name":"Raghavendra Tilay","email":"raghavendra-uddhav.tilay@hpe.com","username":"raghavendrat"},"change_message_id":"f6c87bb07d65001392762c1a1e06c2daa8b08f54","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":52,"id":"5d78db74_48dc276a","updated":"2026-04-07 11:54:20.000000000","message":"run-HPE FC Storage CI","commit_id":"484d154949212add2be236ddd370852c97a1c481"},{"author":{"_account_id":29122,"name":"Raghavendra Tilay","email":"raghavendra-uddhav.tilay@hpe.com","username":"raghavendrat"},"change_message_id":"89c191ad43f0b369e491ac680a0003933312370e","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":52,"id":"85f71e34_d0f1c3be","updated":"2026-04-09 03:41:30.000000000","message":"run-HPE FC Storage CI","commit_id":"484d154949212add2be236ddd370852c97a1c481"},{"author":{"_account_id":29122,"name":"Raghavendra Tilay","email":"raghavendra-uddhav.tilay@hpe.com","username":"raghavendrat"},"change_message_id":"a9d6f2e130f31a1b18f7db794725c0e237bb963a","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":52,"id":"a223075d_9e4a9300","updated":"2026-04-08 11:28:56.000000000","message":"run-HPE FC Storage CI","commit_id":"484d154949212add2be236ddd370852c97a1c481"},{"author":{"_account_id":29122,"name":"Raghavendra Tilay","email":"raghavendra-uddhav.tilay@hpe.com","username":"raghavendrat"},"change_message_id":"bd1c29f7dfe689c9755503b5e7a8478add9bac6b","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":52,"id":"c6f1ed6e_9d2d0864","updated":"2026-04-07 09:38:51.000000000","message":"run-HPE FC Storage CI","commit_id":"484d154949212add2be236ddd370852c97a1c481"},{"author":{"_account_id":29122,"name":"Raghavendra Tilay","email":"raghavendra-uddhav.tilay@hpe.com","username":"raghavendrat"},"change_message_id":"a7d5448f9eb40f1d1dbb24d6883f6401bb3e6790","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":52,"id":"fdea6502_d32ea9b1","updated":"2026-04-08 06:24:38.000000000","message":"run-HPE FC Storage CI","commit_id":"484d154949212add2be236ddd370852c97a1c481"},{"author":{"_account_id":29122,"name":"Raghavendra Tilay","email":"raghavendra-uddhav.tilay@hpe.com","username":"raghavendrat"},"change_message_id":"6b4400cc21461b30028ba2e785120c7bbf62375b","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":52,"id":"50b29484_97b076c4","updated":"2026-04-08 09:03:58.000000000","message":"run-HPE NVMeTCP Storage CI","commit_id":"484d154949212add2be236ddd370852c97a1c481"},{"author":{"_account_id":29122,"name":"Raghavendra Tilay","email":"raghavendra-uddhav.tilay@hpe.com","username":"raghavendrat"},"change_message_id":"879f3ccd71443633d12541acea90ab1dc4a63fe4","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":52,"id":"9f971eab_985b7034","updated":"2026-04-08 15:37:38.000000000","message":"run-HPE NVMeTCP Storage CI","commit_id":"484d154949212add2be236ddd370852c97a1c481"},{"author":{"_account_id":29122,"name":"Raghavendra Tilay","email":"raghavendra-uddhav.tilay@hpe.com","username":"raghavendrat"},"change_message_id":"3b3fdcdfce4bbd99a44ca5a350e3222b7ec06484","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":52,"id":"ae4064ad_dbd9125c","updated":"2026-04-09 04:45:30.000000000","message":"run-HPE NVMeTCP Storage CI","commit_id":"484d154949212add2be236ddd370852c97a1c481"},{"author":{"_account_id":29122,"name":"Raghavendra Tilay","email":"raghavendra-uddhav.tilay@hpe.com","username":"raghavendrat"},"change_message_id":"a0ddb40e8655eec8068b67149e2ca60516d05d10","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":52,"id":"16aa99f6_1543f78d","updated":"2026-04-07 09:48:07.000000000","message":"run-HPE Storage CI","commit_id":"484d154949212add2be236ddd370852c97a1c481"},{"author":{"_account_id":29122,"name":"Raghavendra Tilay","email":"raghavendra-uddhav.tilay@hpe.com","username":"raghavendrat"},"change_message_id":"e3355b96445f4d6d6015efbc17d0e9f1a00befa9","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":52,"id":"1ed2e889_3b09f8d2","updated":"2026-04-08 12:34:38.000000000","message":"run-HPE Storage CI","commit_id":"484d154949212add2be236ddd370852c97a1c481"},{"author":{"_account_id":29122,"name":"Raghavendra Tilay","email":"raghavendra-uddhav.tilay@hpe.com","username":"raghavendrat"},"change_message_id":"309942c24c363da137e6cdf07351a1d19e708458","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":52,"id":"4a042c4e_7f618539","updated":"2026-04-08 08:09:35.000000000","message":"run-HPE Storage CI","commit_id":"484d154949212add2be236ddd370852c97a1c481"},{"author":{"_account_id":29122,"name":"Raghavendra Tilay","email":"raghavendra-uddhav.tilay@hpe.com","username":"raghavendrat"},"change_message_id":"fa2c43b03f64310cf76225fc3fa77344db971b5d","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":52,"id":"61e0c2d8_30948422","updated":"2026-04-08 14:11:43.000000000","message":"run-HPE Storage CI","commit_id":"484d154949212add2be236ddd370852c97a1c481"},{"author":{"_account_id":29122,"name":"Raghavendra Tilay","email":"raghavendra-uddhav.tilay@hpe.com","username":"raghavendrat"},"change_message_id":"04c0a19f8d299f3160123a982cb2d5688df69fc2","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":52,"id":"b0782898_df2d8690","updated":"2026-04-08 10:22:49.000000000","message":"run-HPE Storage CI","commit_id":"484d154949212add2be236ddd370852c97a1c481"},{"author":{"_account_id":29122,"name":"Raghavendra Tilay","email":"raghavendra-uddhav.tilay@hpe.com","username":"raghavendrat"},"change_message_id":"1260a12dbbd2a354faf7335c15fd5e0bd766acf2","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":52,"id":"b5feb9a8_e8785384","updated":"2026-04-07 11:26:26.000000000","message":"run-HPE Storage CI","commit_id":"484d154949212add2be236ddd370852c97a1c481"},{"author":{"_account_id":29122,"name":"Raghavendra Tilay","email":"raghavendra-uddhav.tilay@hpe.com","username":"raghavendrat"},"change_message_id":"c959c18f65fd64c4a0fd73dc2029d4637a097716","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":53,"id":"e4d49825_faea0ad6","updated":"2026-04-14 15:47:01.000000000","message":"FC CI log:\nhttps://github.com/hpe-storage/hpe-ci-log/blob/main/logs/969373/etc/tempest_log.log","commit_id":"a6de1861b4ac3418371a799d5dd5d9ee90e3ca96"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"58febc3ba64857edaca513cc681d0900b4e899e2","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":53,"id":"b762f239_6ce6ef65","updated":"2026-04-15 12:36:47.000000000","message":"FYI this patchset will no longer pass pep8 checks after https://review.opendev.org/c/openstack/cinder/+/977147 merges shortly, and will need an update.  (You can rebase on top of that patch to test this.)","commit_id":"a6de1861b4ac3418371a799d5dd5d9ee90e3ca96"},{"author":{"_account_id":29122,"name":"Raghavendra Tilay","email":"raghavendra-uddhav.tilay@hpe.com","username":"raghavendrat"},"change_message_id":"fc31d2a3e47d8cb97893c6f6945fbb3e165fe8fe","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":53,"id":"8a6e88b7_79878355","updated":"2026-04-10 06:17:25.000000000","message":"Thank you Brian for review.\ni tried to address comments. Please find replies inline","commit_id":"a6de1861b4ac3418371a799d5dd5d9ee90e3ca96"},{"author":{"_account_id":29122,"name":"Raghavendra Tilay","email":"raghavendra-uddhav.tilay@hpe.com","username":"raghavendrat"},"change_message_id":"81c67889ce36dcb7f589f42e3aac15d40280e958","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":53,"id":"2b74c40f_2d603d05","updated":"2026-04-16 16:21:51.000000000","message":"run-HPE NVMeTCP Storage CI","commit_id":"a6de1861b4ac3418371a799d5dd5d9ee90e3ca96"},{"author":{"_account_id":29122,"name":"Raghavendra Tilay","email":"raghavendra-uddhav.tilay@hpe.com","username":"raghavendrat"},"change_message_id":"926848d5e2aaea86e8851c8ea25eff8705dfe58b","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":55,"id":"a63895cf_fdc7f800","updated":"2026-04-17 13:46:32.000000000","message":"recheck tempest-integrated-storage failed","commit_id":"71fe5fa404d0312d0f998fb478bb5eae67aa38a4"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"5e2e9b04325e267cb20ea0803d7a48e8ef4d1149","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":56,"id":"272adb44_4a894bd0","updated":"2026-04-22 17:05:27.000000000","message":"Looks like most of this driver is simply a shim for the real code existing in an external library.  I\u0027d like to see a better separation of the client and the driver such that the majority of the work being done is in the driver and the client is only an exposure of the main APIs of the storage backend.","commit_id":"395b68ea2f3249dd8807b892a0f799ab55d69432"},{"author":{"_account_id":38274,"name":"Jyotsna Lothe","display_name":"Jyotsna Lothe","email":"jyotsna.lothe@hpe.com","username":"jlothe"},"change_message_id":"ecd5ee904d1cc4c946e18acc2cadd763cd48058e","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":56,"id":"4c32055a_a2e4b2a8","in_reply_to":"272adb44_4a894bd0","updated":"2026-04-29 12:15:47.000000000","message":"Apologies for delayed response. We were not aware of the design, that we cannot move the cinder specific code in external lib/sdk. But we have now understood the reason for same from all the reviewers during PTG meeting. We are working on it and will update on this in next week. Thanks for your feedback.","commit_id":"395b68ea2f3249dd8807b892a0f799ab55d69432"}],"cinder/tests/unit/volume/drivers/hpe/fake_hpe_flowkit_exceptions.py":[{"author":{"_account_id":10058,"name":"Erlon R. Cruz","email":"erlon.rodrigues.cruz@canonical.com","username":"sombrafam"},"change_message_id":"ff49de8ae8a5799ae5e9c7d9b005cce19a477826","unresolved":true,"context_lines":[{"line_number":13,"context_line":"#    License for the specific language governing permissions and limitations"},{"line_number":14,"context_line":"#    under the License."},{"line_number":15,"context_line":"#"},{"line_number":16,"context_line":"\"\"\"Fake HPE Storage exception to use when mocking HPE stroage flowkit.\"\"\""},{"line_number":17,"context_line":""},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"class HPEStorageException(Exception):"}],"source_content_type":"text/x-python","patch_set":15,"id":"2b909416_6905f136","line":16,"range":{"start_line":16,"start_character":54,"end_line":16,"end_character":61},"updated":"2026-01-07 12:51:12.000000000","message":"storage","commit_id":"efbbef52f7f5d898a0624ce4be8ab8e0d2c6c1b5"},{"author":{"_account_id":29122,"name":"Raghavendra Tilay","email":"raghavendra-uddhav.tilay@hpe.com","username":"raghavendrat"},"change_message_id":"5ae9f51944e7ba94046e314d90fb7f2f61d53434","unresolved":false,"context_lines":[{"line_number":13,"context_line":"#    License for the specific language governing permissions and limitations"},{"line_number":14,"context_line":"#    under the License."},{"line_number":15,"context_line":"#"},{"line_number":16,"context_line":"\"\"\"Fake HPE Storage exception to use when mocking HPE stroage flowkit.\"\"\""},{"line_number":17,"context_line":""},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"class HPEStorageException(Exception):"}],"source_content_type":"text/x-python","patch_set":15,"id":"0f8eed0f_6f8b4c2a","line":16,"range":{"start_line":16,"start_character":54,"end_line":16,"end_character":61},"in_reply_to":"2b909416_6905f136","updated":"2026-01-08 12:43:52.000000000","message":"Done","commit_id":"efbbef52f7f5d898a0624ce4be8ab8e0d2c6c1b5"}],"cinder/tests/unit/volume/drivers/hpe/fake_hpe_storage_flowkit.py":[{"author":{"_account_id":10058,"name":"Erlon R. Cruz","email":"erlon.rodrigues.cruz@canonical.com","username":"sombrafam"},"change_message_id":"ff49de8ae8a5799ae5e9c7d9b005cce19a477826","unresolved":true,"context_lines":[{"line_number":45,"context_line":"flowkit_src \u003d mock.Mock()"},{"line_number":46,"context_line":"flowkit_src.cinder_client \u003d hpecommon"},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"print(\"fake_hpecommon: \", fake_hpecommon) # noqa"},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"flowkit_src_core \u003d mock.Mock()"},{"line_number":51,"context_line":"flowkit_src_core.exceptions \u003d flowkit_exceptions"}],"source_content_type":"text/x-python","patch_set":15,"id":"69e7528a_4c591a50","line":48,"range":{"start_line":48,"start_character":0,"end_line":48,"end_character":48},"updated":"2026-01-07 12:51:12.000000000","message":"Remove these prints","commit_id":"efbbef52f7f5d898a0624ce4be8ab8e0d2c6c1b5"},{"author":{"_account_id":29122,"name":"Raghavendra Tilay","email":"raghavendra-uddhav.tilay@hpe.com","username":"raghavendrat"},"change_message_id":"5ae9f51944e7ba94046e314d90fb7f2f61d53434","unresolved":true,"context_lines":[{"line_number":45,"context_line":"flowkit_src \u003d mock.Mock()"},{"line_number":46,"context_line":"flowkit_src.cinder_client \u003d hpecommon"},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"print(\"fake_hpecommon: \", fake_hpecommon) # noqa"},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"flowkit_src_core \u003d mock.Mock()"},{"line_number":51,"context_line":"flowkit_src_core.exceptions \u003d flowkit_exceptions"}],"source_content_type":"text/x-python","patch_set":15,"id":"a1adadfe_b26e3575","line":48,"range":{"start_line":48,"start_character":0,"end_line":48,"end_character":48},"in_reply_to":"69e7528a_4c591a50","updated":"2026-01-08 12:43:52.000000000","message":"If i remove this print, then zuul reports error. So kept it.","commit_id":"efbbef52f7f5d898a0624ce4be8ab8e0d2c6c1b5"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"0674b2a1771fab07f26ac2affa9e6f786f298fdd","unresolved":true,"context_lines":[{"line_number":45,"context_line":"flowkit_src \u003d mock.Mock()"},{"line_number":46,"context_line":"flowkit_src.cinder_client \u003d hpecommon"},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"print(\"fake_hpecommon: \", fake_hpecommon) # noqa"},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"flowkit_src_core \u003d mock.Mock()"},{"line_number":51,"context_line":"flowkit_src_core.exceptions \u003d flowkit_exceptions"}],"source_content_type":"text/x-python","patch_set":15,"id":"f0eb7ed9_fdb9adb0","line":48,"range":{"start_line":48,"start_character":0,"end_line":48,"end_character":48},"in_reply_to":"a1adadfe_b26e3575","updated":"2026-01-19 15:53:16.000000000","message":"What is the error you see ? If it is required to silence unused import error then add noqa there or drop that import.","commit_id":"efbbef52f7f5d898a0624ce4be8ab8e0d2c6c1b5"},{"author":{"_account_id":29122,"name":"Raghavendra Tilay","email":"raghavendra-uddhav.tilay@hpe.com","username":"raghavendrat"},"change_message_id":"b997c68f1825cbf18f0e7c46e65e5308059665dd","unresolved":false,"context_lines":[{"line_number":45,"context_line":"flowkit_src \u003d mock.Mock()"},{"line_number":46,"context_line":"flowkit_src.cinder_client \u003d hpecommon"},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"print(\"fake_hpecommon: \", fake_hpecommon) # noqa"},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"flowkit_src_core \u003d mock.Mock()"},{"line_number":51,"context_line":"flowkit_src_core.exceptions \u003d flowkit_exceptions"}],"source_content_type":"text/x-python","patch_set":15,"id":"27565953_944f063d","line":48,"range":{"start_line":48,"start_character":0,"end_line":48,"end_character":48},"in_reply_to":"f0eb7ed9_fdb9adb0","updated":"2026-01-20 12:10:24.000000000","message":"Done","commit_id":"efbbef52f7f5d898a0624ce4be8ab8e0d2c6c1b5"}],"cinder/tests/unit/volume/drivers/hpe/test_alletramp.py":[{"author":{"_account_id":10058,"name":"Erlon R. Cruz","email":"erlon.rodrigues.cruz@canonical.com","username":"sombrafam"},"change_message_id":"ff49de8ae8a5799ae5e9c7d9b005cce19a477826","unresolved":true,"context_lines":[{"line_number":99,"context_line":"        self.driver \u003d alletramp.HPEAlletraMPDriverBase("},{"line_number":100,"context_line":"            configuration\u003dself.configuration)"},{"line_number":101,"context_line":""},{"line_number":102,"context_line":"    def test_create_volume(self, *args, **keywargs):"},{"line_number":103,"context_line":"        with mock.patch.object(self.driver.common, \u0027create_volume\u0027) as \\"},{"line_number":104,"context_line":"                mock_create:"},{"line_number":105,"context_line":"            mock_create.return_value \u003d mock.Mock()"}],"source_content_type":"text/x-python","patch_set":15,"id":"2a82454b_9abd5d40","line":102,"range":{"start_line":102,"start_character":42,"end_line":102,"end_character":50},"updated":"2026-01-07 12:51:12.000000000","message":"kwargs","commit_id":"efbbef52f7f5d898a0624ce4be8ab8e0d2c6c1b5"},{"author":{"_account_id":29122,"name":"Raghavendra Tilay","email":"raghavendra-uddhav.tilay@hpe.com","username":"raghavendrat"},"change_message_id":"5ae9f51944e7ba94046e314d90fb7f2f61d53434","unresolved":false,"context_lines":[{"line_number":99,"context_line":"        self.driver \u003d alletramp.HPEAlletraMPDriverBase("},{"line_number":100,"context_line":"            configuration\u003dself.configuration)"},{"line_number":101,"context_line":""},{"line_number":102,"context_line":"    def test_create_volume(self, *args, **keywargs):"},{"line_number":103,"context_line":"        with mock.patch.object(self.driver.common, \u0027create_volume\u0027) as \\"},{"line_number":104,"context_line":"                mock_create:"},{"line_number":105,"context_line":"            mock_create.return_value \u003d mock.Mock()"}],"source_content_type":"text/x-python","patch_set":15,"id":"fad34f60_f85ae375","line":102,"range":{"start_line":102,"start_character":42,"end_line":102,"end_character":50},"in_reply_to":"2a82454b_9abd5d40","updated":"2026-01-08 12:43:52.000000000","message":"Done","commit_id":"efbbef52f7f5d898a0624ce4be8ab8e0d2c6c1b5"}],"cinder/volume/drivers/hpe/alletramp.py":[{"author":{"_account_id":10058,"name":"Erlon R. Cruz","email":"erlon.rodrigues.cruz@canonical.com","username":"sombrafam"},"change_message_id":"ff49de8ae8a5799ae5e9c7d9b005cce19a477826","unresolved":true,"context_lines":[{"line_number":126,"context_line":"        common.client_logout()"},{"line_number":127,"context_line":""},{"line_number":128,"context_line":"    def _check_flags(self, common):"},{"line_number":129,"context_line":"        \"\"\"Sanity check to ensure we have required options set.\"\"\""},{"line_number":130,"context_line":"        required_flags \u003d [\u0027hpe3par_api_url\u0027, \u0027hpe3par_username\u0027,"},{"line_number":131,"context_line":"                          \u0027hpe3par_password\u0027, \u0027san_ip\u0027, \u0027san_login\u0027,"},{"line_number":132,"context_line":"                          \u0027san_password\u0027]"}],"source_content_type":"text/x-python","patch_set":15,"id":"5d9fb900_d7e05ce0","line":129,"range":{"start_line":129,"start_character":8,"end_line":129,"end_character":66},"updated":"2026-01-07 12:51:12.000000000","message":"Please add the space between the docstrings and the code.","commit_id":"efbbef52f7f5d898a0624ce4be8ab8e0d2c6c1b5"},{"author":{"_account_id":29122,"name":"Raghavendra Tilay","email":"raghavendra-uddhav.tilay@hpe.com","username":"raghavendrat"},"change_message_id":"5ae9f51944e7ba94046e314d90fb7f2f61d53434","unresolved":false,"context_lines":[{"line_number":126,"context_line":"        common.client_logout()"},{"line_number":127,"context_line":""},{"line_number":128,"context_line":"    def _check_flags(self, common):"},{"line_number":129,"context_line":"        \"\"\"Sanity check to ensure we have required options set.\"\"\""},{"line_number":130,"context_line":"        required_flags \u003d [\u0027hpe3par_api_url\u0027, \u0027hpe3par_username\u0027,"},{"line_number":131,"context_line":"                          \u0027hpe3par_password\u0027, \u0027san_ip\u0027, \u0027san_login\u0027,"},{"line_number":132,"context_line":"                          \u0027san_password\u0027]"}],"source_content_type":"text/x-python","patch_set":15,"id":"d7ef859e_0a468c94","line":129,"range":{"start_line":129,"start_character":8,"end_line":129,"end_character":66},"in_reply_to":"5d9fb900_d7e05ce0","updated":"2026-01-08 12:43:52.000000000","message":"Done","commit_id":"efbbef52f7f5d898a0624ce4be8ab8e0d2c6c1b5"},{"author":{"_account_id":10058,"name":"Erlon R. Cruz","email":"erlon.rodrigues.cruz@canonical.com","username":"sombrafam"},"change_message_id":"ff49de8ae8a5799ae5e9c7d9b005cce19a477826","unresolved":true,"context_lines":[{"line_number":133,"context_line":"        common.check_flags(self.configuration, required_flags)"},{"line_number":134,"context_line":""},{"line_number":135,"context_line":"    @volume_utils.trace"},{"line_number":136,"context_line":"    def get_volume_stats(self, refresh\u003dFalse):"},{"line_number":137,"context_line":"        LOG.debug(\"inside get_volume_stats\")"},{"line_number":138,"context_line":"        if not refresh:"},{"line_number":139,"context_line":"            return self._stats"}],"source_content_type":"text/x-python","patch_set":15,"id":"5b0cf896_269d6d83","line":136,"range":{"start_line":136,"start_character":7,"end_line":136,"end_character":46},"updated":"2026-01-07 12:51:12.000000000","message":"You should add minimum dog strings to the driver functions.","commit_id":"efbbef52f7f5d898a0624ce4be8ab8e0d2c6c1b5"},{"author":{"_account_id":29122,"name":"Raghavendra Tilay","email":"raghavendra-uddhav.tilay@hpe.com","username":"raghavendrat"},"change_message_id":"5ae9f51944e7ba94046e314d90fb7f2f61d53434","unresolved":false,"context_lines":[{"line_number":133,"context_line":"        common.check_flags(self.configuration, required_flags)"},{"line_number":134,"context_line":""},{"line_number":135,"context_line":"    @volume_utils.trace"},{"line_number":136,"context_line":"    def get_volume_stats(self, refresh\u003dFalse):"},{"line_number":137,"context_line":"        LOG.debug(\"inside get_volume_stats\")"},{"line_number":138,"context_line":"        if not refresh:"},{"line_number":139,"context_line":"            return self._stats"}],"source_content_type":"text/x-python","patch_set":15,"id":"e8ecbad2_0693569c","line":136,"range":{"start_line":136,"start_character":7,"end_line":136,"end_character":46},"in_reply_to":"5b0cf896_269d6d83","updated":"2026-01-08 12:43:52.000000000","message":"Done","commit_id":"efbbef52f7f5d898a0624ce4be8ab8e0d2c6c1b5"},{"author":{"_account_id":10058,"name":"Erlon R. Cruz","email":"erlon.rodrigues.cruz@canonical.com","username":"sombrafam"},"change_message_id":"ff49de8ae8a5799ae5e9c7d9b005cce19a477826","unresolved":true,"context_lines":[{"line_number":134,"context_line":""},{"line_number":135,"context_line":"    @volume_utils.trace"},{"line_number":136,"context_line":"    def get_volume_stats(self, refresh\u003dFalse):"},{"line_number":137,"context_line":"        LOG.debug(\"inside get_volume_stats\")"},{"line_number":138,"context_line":"        if not refresh:"},{"line_number":139,"context_line":"            return self._stats"},{"line_number":140,"context_line":""}],"source_content_type":"text/x-python","patch_set":15,"id":"cd875838_1aeb7155","line":137,"range":{"start_line":137,"start_character":8,"end_line":137,"end_character":44},"updated":"2026-01-07 12:51:12.000000000","message":"Also, when you print a debug in a function also make sure to print meaningful data for debugging, in this function for example, it would be nice to know if refresh is set and the data returned in the stats.","commit_id":"efbbef52f7f5d898a0624ce4be8ab8e0d2c6c1b5"},{"author":{"_account_id":29122,"name":"Raghavendra Tilay","email":"raghavendra-uddhav.tilay@hpe.com","username":"raghavendrat"},"change_message_id":"5ae9f51944e7ba94046e314d90fb7f2f61d53434","unresolved":false,"context_lines":[{"line_number":134,"context_line":""},{"line_number":135,"context_line":"    @volume_utils.trace"},{"line_number":136,"context_line":"    def get_volume_stats(self, refresh\u003dFalse):"},{"line_number":137,"context_line":"        LOG.debug(\"inside get_volume_stats\")"},{"line_number":138,"context_line":"        if not refresh:"},{"line_number":139,"context_line":"            return self._stats"},{"line_number":140,"context_line":""}],"source_content_type":"text/x-python","patch_set":15,"id":"36e4bfc6_5399dbe9","line":137,"range":{"start_line":137,"start_character":8,"end_line":137,"end_character":44},"in_reply_to":"cd875838_1aeb7155","updated":"2026-01-08 12:43:52.000000000","message":"Done","commit_id":"efbbef52f7f5d898a0624ce4be8ab8e0d2c6c1b5"},{"author":{"_account_id":10058,"name":"Erlon R. Cruz","email":"erlon.rodrigues.cruz@canonical.com","username":"sombrafam"},"change_message_id":"ff49de8ae8a5799ae5e9c7d9b005cce19a477826","unresolved":true,"context_lines":[{"line_number":158,"context_line":"        common \u003d self._init_common()"},{"line_number":159,"context_line":"        common.do_setup(context)"},{"line_number":160,"context_line":"        self._check_flags(common)"},{"line_number":161,"context_line":"        self._do_setup(common)"},{"line_number":162,"context_line":""},{"line_number":163,"context_line":"    def _do_setup(self, common):"},{"line_number":164,"context_line":"        pass"},{"line_number":165,"context_line":""},{"line_number":166,"context_line":"    @volume_utils.trace"},{"line_number":167,"context_line":"    def create_volume(self, volume, perform_replica\u003dTrue):"}],"source_content_type":"text/x-python","patch_set":15,"id":"737dcf4a_263176f8","line":164,"range":{"start_line":161,"start_character":0,"end_line":164,"end_character":12},"updated":"2026-01-07 12:51:12.000000000","message":"You don\u0027t need this function","commit_id":"efbbef52f7f5d898a0624ce4be8ab8e0d2c6c1b5"},{"author":{"_account_id":29122,"name":"Raghavendra Tilay","email":"raghavendra-uddhav.tilay@hpe.com","username":"raghavendrat"},"change_message_id":"5ae9f51944e7ba94046e314d90fb7f2f61d53434","unresolved":true,"context_lines":[{"line_number":158,"context_line":"        common \u003d self._init_common()"},{"line_number":159,"context_line":"        common.do_setup(context)"},{"line_number":160,"context_line":"        self._check_flags(common)"},{"line_number":161,"context_line":"        self._do_setup(common)"},{"line_number":162,"context_line":""},{"line_number":163,"context_line":"    def _do_setup(self, common):"},{"line_number":164,"context_line":"        pass"},{"line_number":165,"context_line":""},{"line_number":166,"context_line":"    @volume_utils.trace"},{"line_number":167,"context_line":"    def create_volume(self, volume, perform_replica\u003dTrue):"}],"source_content_type":"text/x-python","patch_set":15,"id":"82c00210_1d238b2f","line":164,"range":{"start_line":161,"start_character":0,"end_line":164,"end_character":12},"in_reply_to":"737dcf4a_263176f8","updated":"2026-01-08 12:43:52.000000000","message":"Line 161: let me check this\n\nLines 163, 164: the function _do_setup is overridden later. so i think it should be present","commit_id":"efbbef52f7f5d898a0624ce4be8ab8e0d2c6c1b5"},{"author":{"_account_id":10058,"name":"Erlon R. Cruz","email":"erlon.rodrigues.cruz@canonical.com","username":"sombrafam"},"change_message_id":"25ea50e9e1702a5f5e6c4f04e27a9a55ab01d0a0","unresolved":false,"context_lines":[{"line_number":158,"context_line":"        common \u003d self._init_common()"},{"line_number":159,"context_line":"        common.do_setup(context)"},{"line_number":160,"context_line":"        self._check_flags(common)"},{"line_number":161,"context_line":"        self._do_setup(common)"},{"line_number":162,"context_line":""},{"line_number":163,"context_line":"    def _do_setup(self, common):"},{"line_number":164,"context_line":"        pass"},{"line_number":165,"context_line":""},{"line_number":166,"context_line":"    @volume_utils.trace"},{"line_number":167,"context_line":"    def create_volume(self, volume, perform_replica\u003dTrue):"}],"source_content_type":"text/x-python","patch_set":15,"id":"9422daf0_146a09b8","line":164,"range":{"start_line":161,"start_character":0,"end_line":164,"end_character":12},"in_reply_to":"82c00210_1d238b2f","updated":"2026-01-21 12:35:42.000000000","message":"Acknowledged","commit_id":"efbbef52f7f5d898a0624ce4be8ab8e0d2c6c1b5"},{"author":{"_account_id":10058,"name":"Erlon R. Cruz","email":"erlon.rodrigues.cruz@canonical.com","username":"sombrafam"},"change_message_id":"ff49de8ae8a5799ae5e9c7d9b005cce19a477826","unresolved":true,"context_lines":[{"line_number":332,"context_line":"        if volume[\u0027status\u0027] \u003d\u003d \u0027in-use\u0027:"},{"line_number":333,"context_line":"            protocol \u003d host[\u0027capabilities\u0027][\u0027storage_protocol\u0027]"},{"line_number":334,"context_line":"            if protocol !\u003d self.protocol:"},{"line_number":335,"context_line":"                LOG.debug(\"Alletra MP %(protocol)s driver cannot migrate \""},{"line_number":336,"context_line":"                          \"in-use volume to a host with \""},{"line_number":337,"context_line":"                          \"storage_protocol\u003d%(storage_protocol)s\","},{"line_number":338,"context_line":"                          {\u0027protocol\u0027: self.protocol,"},{"line_number":339,"context_line":"                           \u0027storage_protocol\u0027: protocol})"},{"line_number":340,"context_line":"                return False, None"},{"line_number":341,"context_line":""},{"line_number":342,"context_line":"        return self.common.migrate_volume(volume, host)"}],"source_content_type":"text/x-python","patch_set":15,"id":"4c38b624_2a520b70","line":339,"range":{"start_line":335,"start_character":0,"end_line":339,"end_character":57},"updated":"2026-01-07 12:51:12.000000000","message":"This should be an error message not a debug","commit_id":"efbbef52f7f5d898a0624ce4be8ab8e0d2c6c1b5"},{"author":{"_account_id":10058,"name":"Erlon R. Cruz","email":"erlon.rodrigues.cruz@canonical.com","username":"sombrafam"},"change_message_id":"25ea50e9e1702a5f5e6c4f04e27a9a55ab01d0a0","unresolved":false,"context_lines":[{"line_number":332,"context_line":"        if volume[\u0027status\u0027] \u003d\u003d \u0027in-use\u0027:"},{"line_number":333,"context_line":"            protocol \u003d host[\u0027capabilities\u0027][\u0027storage_protocol\u0027]"},{"line_number":334,"context_line":"            if protocol !\u003d self.protocol:"},{"line_number":335,"context_line":"                LOG.debug(\"Alletra MP %(protocol)s driver cannot migrate \""},{"line_number":336,"context_line":"                          \"in-use volume to a host with \""},{"line_number":337,"context_line":"                          \"storage_protocol\u003d%(storage_protocol)s\","},{"line_number":338,"context_line":"                          {\u0027protocol\u0027: self.protocol,"},{"line_number":339,"context_line":"                           \u0027storage_protocol\u0027: protocol})"},{"line_number":340,"context_line":"                return False, None"},{"line_number":341,"context_line":""},{"line_number":342,"context_line":"        return self.common.migrate_volume(volume, host)"}],"source_content_type":"text/x-python","patch_set":15,"id":"28d6caa4_7beb5925","line":339,"range":{"start_line":335,"start_character":0,"end_line":339,"end_character":57},"in_reply_to":"1d109c0a_9acd584c","updated":"2026-01-21 12:35:42.000000000","message":"ack","commit_id":"efbbef52f7f5d898a0624ce4be8ab8e0d2c6c1b5"},{"author":{"_account_id":29122,"name":"Raghavendra Tilay","email":"raghavendra-uddhav.tilay@hpe.com","username":"raghavendrat"},"change_message_id":"5ae9f51944e7ba94046e314d90fb7f2f61d53434","unresolved":false,"context_lines":[{"line_number":332,"context_line":"        if volume[\u0027status\u0027] \u003d\u003d \u0027in-use\u0027:"},{"line_number":333,"context_line":"            protocol \u003d host[\u0027capabilities\u0027][\u0027storage_protocol\u0027]"},{"line_number":334,"context_line":"            if protocol !\u003d self.protocol:"},{"line_number":335,"context_line":"                LOG.debug(\"Alletra MP %(protocol)s driver cannot migrate \""},{"line_number":336,"context_line":"                          \"in-use volume to a host with \""},{"line_number":337,"context_line":"                          \"storage_protocol\u003d%(storage_protocol)s\","},{"line_number":338,"context_line":"                          {\u0027protocol\u0027: self.protocol,"},{"line_number":339,"context_line":"                           \u0027storage_protocol\u0027: protocol})"},{"line_number":340,"context_line":"                return False, None"},{"line_number":341,"context_line":""},{"line_number":342,"context_line":"        return self.common.migrate_volume(volume, host)"}],"source_content_type":"text/x-python","patch_set":15,"id":"1d109c0a_9acd584c","line":339,"range":{"start_line":335,"start_character":0,"end_line":339,"end_character":57},"in_reply_to":"4c38b624_2a520b70","updated":"2026-01-08 12:43:52.000000000","message":"i changed this to LOG.warning","commit_id":"efbbef52f7f5d898a0624ce4be8ab8e0d2c6c1b5"},{"author":{"_account_id":10058,"name":"Erlon R. Cruz","email":"erlon.rodrigues.cruz@canonical.com","username":"sombrafam"},"change_message_id":"ff49de8ae8a5799ae5e9c7d9b005cce19a477826","unresolved":true,"context_lines":[{"line_number":664,"context_line":"        LOG.debug(\"volume id: %(volume_id)s\","},{"line_number":665,"context_line":"                  {\u0027volume_id\u0027: volume[\u0027id\u0027]})"},{"line_number":666,"context_line":"        common \u003d self._init_common()"},{"line_number":667,"context_line":"        try:"},{"line_number":668,"context_line":"            LOG.debug(\"connector: %(conn)s\", {\u0027conn\u0027: connector})"},{"line_number":669,"context_line":"            # we have to make sure we have a host"},{"line_number":670,"context_line":"            host, cpg \u003d common._create_host_fc("}],"source_content_type":"text/x-python","patch_set":15,"id":"e70e0f06_fdbb0013","line":667,"range":{"start_line":667,"start_character":7,"end_line":667,"end_character":12},"updated":"2026-01-07 12:51:12.000000000","message":"This try/catch block is way too long! You should put in the try block only things that can potentially fail, like interagtions with other entities (storage, apis, etc).","commit_id":"efbbef52f7f5d898a0624ce4be8ab8e0d2c6c1b5"},{"author":{"_account_id":29122,"name":"Raghavendra Tilay","email":"raghavendra-uddhav.tilay@hpe.com","username":"raghavendrat"},"change_message_id":"5ae9f51944e7ba94046e314d90fb7f2f61d53434","unresolved":false,"context_lines":[{"line_number":664,"context_line":"        LOG.debug(\"volume id: %(volume_id)s\","},{"line_number":665,"context_line":"                  {\u0027volume_id\u0027: volume[\u0027id\u0027]})"},{"line_number":666,"context_line":"        common \u003d self._init_common()"},{"line_number":667,"context_line":"        try:"},{"line_number":668,"context_line":"            LOG.debug(\"connector: %(conn)s\", {\u0027conn\u0027: connector})"},{"line_number":669,"context_line":"            # we have to make sure we have a host"},{"line_number":670,"context_line":"            host, cpg \u003d common._create_host_fc("}],"source_content_type":"text/x-python","patch_set":15,"id":"6ea9b803_8837f11b","line":667,"range":{"start_line":667,"start_character":7,"end_line":667,"end_character":12},"in_reply_to":"e70e0f06_fdbb0013","updated":"2026-01-08 12:43:52.000000000","message":"it is try/finally block.\nthis function can return info from multiple locations (depending of if-else).\nAfter returning info, we need to logout.\nSo introduced try at beginning of function \u0026 finally at end.","commit_id":"efbbef52f7f5d898a0624ce4be8ab8e0d2c6c1b5"},{"author":{"_account_id":10058,"name":"Erlon R. Cruz","email":"erlon.rodrigues.cruz@canonical.com","username":"sombrafam"},"change_message_id":"ff49de8ae8a5799ae5e9c7d9b005cce19a477826","unresolved":true,"context_lines":[{"line_number":661,"context_line":"          * Create a VLUN for that HOST with the volume we want to export."},{"line_number":662,"context_line":""},{"line_number":663,"context_line":"        \"\"\""},{"line_number":664,"context_line":"        LOG.debug(\"volume id: %(volume_id)s\","},{"line_number":665,"context_line":"                  {\u0027volume_id\u0027: volume[\u0027id\u0027]})"},{"line_number":666,"context_line":"        common \u003d self._init_common()"},{"line_number":667,"context_line":"        try:"},{"line_number":668,"context_line":"            LOG.debug(\"connector: %(conn)s\", {\u0027conn\u0027: connector})"},{"line_number":669,"context_line":"            # we have to make sure we have a host"},{"line_number":670,"context_line":"            host, cpg \u003d common._create_host_fc("},{"line_number":671,"context_line":"                self.configuration, volume, connector)"}],"source_content_type":"text/x-python","patch_set":15,"id":"f54f988a_774c7367","line":668,"range":{"start_line":664,"start_character":0,"end_line":668,"end_character":65},"updated":"2026-01-07 12:51:12.000000000","message":"You can consolidate the information of these two debug messages into one.","commit_id":"efbbef52f7f5d898a0624ce4be8ab8e0d2c6c1b5"},{"author":{"_account_id":29122,"name":"Raghavendra Tilay","email":"raghavendra-uddhav.tilay@hpe.com","username":"raghavendrat"},"change_message_id":"78760c15b4eafcd01f4c230592c1af95d8df2bda","unresolved":false,"context_lines":[{"line_number":661,"context_line":"          * Create a VLUN for that HOST with the volume we want to export."},{"line_number":662,"context_line":""},{"line_number":663,"context_line":"        \"\"\""},{"line_number":664,"context_line":"        LOG.debug(\"volume id: %(volume_id)s\","},{"line_number":665,"context_line":"                  {\u0027volume_id\u0027: volume[\u0027id\u0027]})"},{"line_number":666,"context_line":"        common \u003d self._init_common()"},{"line_number":667,"context_line":"        try:"},{"line_number":668,"context_line":"            LOG.debug(\"connector: %(conn)s\", {\u0027conn\u0027: connector})"},{"line_number":669,"context_line":"            # we have to make sure we have a host"},{"line_number":670,"context_line":"            host, cpg \u003d common._create_host_fc("},{"line_number":671,"context_line":"                self.configuration, volume, connector)"}],"source_content_type":"text/x-python","patch_set":15,"id":"2abb5cb3_15b6a341","line":668,"range":{"start_line":664,"start_character":0,"end_line":668,"end_character":65},"in_reply_to":"3148b1b6_02dc7fa2","updated":"2026-02-05 12:10:49.000000000","message":"1. Now single try except block is split into multiple small try except blocks.\nIn each except block, appropriate error message is mentioned.\nResource clean up is done.\n\n2. In our tests, we observed that if initialize_connection fails,\nthen terminate_connection is automatically called by OpenStack; \nthis function reverts things as desired (eg. delete host, etc).","commit_id":"efbbef52f7f5d898a0624ce4be8ab8e0d2c6c1b5"},{"author":{"_account_id":10058,"name":"Erlon R. Cruz","email":"erlon.rodrigues.cruz@canonical.com","username":"sombrafam"},"change_message_id":"4c1cc4acce4722ccc32a2ba72460e7b8ca43c412","unresolved":false,"context_lines":[{"line_number":661,"context_line":"          * Create a VLUN for that HOST with the volume we want to export."},{"line_number":662,"context_line":""},{"line_number":663,"context_line":"        \"\"\""},{"line_number":664,"context_line":"        LOG.debug(\"volume id: %(volume_id)s\","},{"line_number":665,"context_line":"                  {\u0027volume_id\u0027: volume[\u0027id\u0027]})"},{"line_number":666,"context_line":"        common \u003d self._init_common()"},{"line_number":667,"context_line":"        try:"},{"line_number":668,"context_line":"            LOG.debug(\"connector: %(conn)s\", {\u0027conn\u0027: connector})"},{"line_number":669,"context_line":"            # we have to make sure we have a host"},{"line_number":670,"context_line":"            host, cpg \u003d common._create_host_fc("},{"line_number":671,"context_line":"                self.configuration, volume, connector)"}],"source_content_type":"text/x-python","patch_set":15,"id":"3148b1b6_02dc7fa2","line":668,"range":{"start_line":664,"start_character":0,"end_line":668,"end_character":65},"in_reply_to":"99f622d3_f9a37ba5","updated":"2026-02-04 13:55:39.000000000","message":"Hi Raghavendra. you still haven\u0027t addressed my concerns related to how you are handling the try/except blocks (this one in initialize connection is the most appearance but there might be others through your drivers). I\u0027ll try to be a little bit more descriptive on why I\u0027m concerned with this and how you could address the problem.\n\n1. The try block encompasses the entire initialization logic - host creation, target mapping, replication setup, etc. If anything fails, you get the same generic error mesage regardless of what actually went wrong.\n2. When an exception ocurs deep in the logic (lets say, during replication client creation), the generic error message doesn\u0027t tell you where it failed. This makes debugging much harder.\n3.if remote_client (or other resources) is created but a later operation fails, the exception handler doesn\u0027t guarantee cleanup (in fact, it\u0027s not cleaning up anything). You\u0027re relying on Python\u0027s garbage collection rather than explicit resource management + you might have things left over in your storage.\n4. The try block handles both the main volume connection logic AND the optional peer persistence replication logic. These are conceptually different operations that might fail for different reasons.\n\nSo a new patchset refactoring will:\n\n- Use smaller, targeted try-catch blocks around specific risky operations (API calls, network operations)\n- Use try-finally or context managers for resource cleanup (like remote_client)\n- Provide more specific error messages based on which operation failed","commit_id":"efbbef52f7f5d898a0624ce4be8ab8e0d2c6c1b5"},{"author":{"_account_id":29122,"name":"Raghavendra Tilay","email":"raghavendra-uddhav.tilay@hpe.com","username":"raghavendrat"},"change_message_id":"5ae9f51944e7ba94046e314d90fb7f2f61d53434","unresolved":false,"context_lines":[{"line_number":661,"context_line":"          * Create a VLUN for that HOST with the volume we want to export."},{"line_number":662,"context_line":""},{"line_number":663,"context_line":"        \"\"\""},{"line_number":664,"context_line":"        LOG.debug(\"volume id: %(volume_id)s\","},{"line_number":665,"context_line":"                  {\u0027volume_id\u0027: volume[\u0027id\u0027]})"},{"line_number":666,"context_line":"        common \u003d self._init_common()"},{"line_number":667,"context_line":"        try:"},{"line_number":668,"context_line":"            LOG.debug(\"connector: %(conn)s\", {\u0027conn\u0027: connector})"},{"line_number":669,"context_line":"            # we have to make sure we have a host"},{"line_number":670,"context_line":"            host, cpg \u003d common._create_host_fc("},{"line_number":671,"context_line":"                self.configuration, volume, connector)"}],"source_content_type":"text/x-python","patch_set":15,"id":"99f622d3_f9a37ba5","line":668,"range":{"start_line":664,"start_character":0,"end_line":668,"end_character":65},"in_reply_to":"f54f988a_774c7367","updated":"2026-01-08 12:43:52.000000000","message":"Done","commit_id":"efbbef52f7f5d898a0624ce4be8ab8e0d2c6c1b5"},{"author":{"_account_id":10058,"name":"Erlon R. Cruz","email":"erlon.rodrigues.cruz@canonical.com","username":"sombrafam"},"change_message_id":"ff49de8ae8a5799ae5e9c7d9b005cce19a477826","unresolved":true,"context_lines":[{"line_number":707,"context_line":"            if replication_mode \u003d\u003d 1:"},{"line_number":708,"context_line":"                LOG.debug(\u0027replication_mode is sync\u0027)"},{"line_number":709,"context_line":"                if quorum_witness_ip:"},{"line_number":710,"context_line":"                    LOG.debug(\u0027quorum_witness_ip is present\u0027)"},{"line_number":711,"context_line":"                    LOG.debug(\u0027Peer Persistence has been configured\u0027)"},{"line_number":712,"context_line":"                else:"},{"line_number":713,"context_line":"                    LOG.debug(\u0027Since quorum_witness_ip is absent, \u0027"},{"line_number":714,"context_line":"                              \u0027considering this as Active/Passive \u0027"}],"source_content_type":"text/x-python","patch_set":15,"id":"318c29a9_cae29486","line":711,"range":{"start_line":710,"start_character":20,"end_line":711,"end_character":69},"updated":"2026-01-07 12:51:12.000000000","message":"Always aim to consolidate the debug message, ensuring you have the necessary information in one line.","commit_id":"efbbef52f7f5d898a0624ce4be8ab8e0d2c6c1b5"},{"author":{"_account_id":29122,"name":"Raghavendra Tilay","email":"raghavendra-uddhav.tilay@hpe.com","username":"raghavendrat"},"change_message_id":"5ae9f51944e7ba94046e314d90fb7f2f61d53434","unresolved":false,"context_lines":[{"line_number":707,"context_line":"            if replication_mode \u003d\u003d 1:"},{"line_number":708,"context_line":"                LOG.debug(\u0027replication_mode is sync\u0027)"},{"line_number":709,"context_line":"                if quorum_witness_ip:"},{"line_number":710,"context_line":"                    LOG.debug(\u0027quorum_witness_ip is present\u0027)"},{"line_number":711,"context_line":"                    LOG.debug(\u0027Peer Persistence has been configured\u0027)"},{"line_number":712,"context_line":"                else:"},{"line_number":713,"context_line":"                    LOG.debug(\u0027Since quorum_witness_ip is absent, \u0027"},{"line_number":714,"context_line":"                              \u0027considering this as Active/Passive \u0027"}],"source_content_type":"text/x-python","patch_set":15,"id":"1309cdea_dc389d09","line":711,"range":{"start_line":710,"start_character":20,"end_line":711,"end_character":69},"in_reply_to":"318c29a9_cae29486","updated":"2026-01-08 12:43:52.000000000","message":"Done","commit_id":"efbbef52f7f5d898a0624ce4be8ab8e0d2c6c1b5"},{"author":{"_account_id":10058,"name":"Erlon R. Cruz","email":"erlon.rodrigues.cruz@canonical.com","username":"sombrafam"},"change_message_id":"ff49de8ae8a5799ae5e9c7d9b005cce19a477826","unresolved":true,"context_lines":[{"line_number":1420,"context_line":"                msg \u003d \"Create iSCSI host caught HTTP conflict code: %s\""},{"line_number":1421,"context_line":"                LOG.exception(msg, path_conflict.get_code())"},{"line_number":1422,"context_line":"                with save_and_reraise_exception(reraise\u003dFalse) as ctxt:"},{"line_number":1423,"context_line":"                    if path_conflict.get_code() is EXISTENT_PATH:"},{"line_number":1424,"context_line":"                        # Handle exception : EXISTENT_PATH - host WWN/iSCSI"},{"line_number":1425,"context_line":"                        # name already used by another host"},{"line_number":1426,"context_line":"                        hosts \u003d client_obj.query_host(iqns\u003discsi_iqn)"}],"source_content_type":"text/x-python","patch_set":15,"id":"27ae624b_2ae8d30f","line":1423,"updated":"2026-01-07 12:51:12.000000000","message":"Using \u0027is\u0027 for integer comparison is incorrect. Should use \u0027\u003d\u003d\u0027 instead of \u0027is\u0027 when comparing with EXISTENT_PATH (73).\nThe \u0027is\u0027 operator checks object identity, not value equality.","commit_id":"efbbef52f7f5d898a0624ce4be8ab8e0d2c6c1b5"},{"author":{"_account_id":29122,"name":"Raghavendra Tilay","email":"raghavendra-uddhav.tilay@hpe.com","username":"raghavendrat"},"change_message_id":"5ae9f51944e7ba94046e314d90fb7f2f61d53434","unresolved":false,"context_lines":[{"line_number":1420,"context_line":"                msg \u003d \"Create iSCSI host caught HTTP conflict code: %s\""},{"line_number":1421,"context_line":"                LOG.exception(msg, path_conflict.get_code())"},{"line_number":1422,"context_line":"                with save_and_reraise_exception(reraise\u003dFalse) as ctxt:"},{"line_number":1423,"context_line":"                    if path_conflict.get_code() is EXISTENT_PATH:"},{"line_number":1424,"context_line":"                        # Handle exception : EXISTENT_PATH - host WWN/iSCSI"},{"line_number":1425,"context_line":"                        # name already used by another host"},{"line_number":1426,"context_line":"                        hosts \u003d client_obj.query_host(iqns\u003discsi_iqn)"}],"source_content_type":"text/x-python","patch_set":15,"id":"db4302d2_41db53e3","line":1423,"in_reply_to":"27ae624b_2ae8d30f","updated":"2026-01-08 12:43:52.000000000","message":"Acknowledged","commit_id":"efbbef52f7f5d898a0624ce4be8ab8e0d2c6c1b5"},{"author":{"_account_id":10058,"name":"Erlon R. Cruz","email":"erlon.rodrigues.cruz@canonical.com","username":"sombrafam"},"change_message_id":"25ea50e9e1702a5f5e6c4f04e27a9a55ab01d0a0","unresolved":true,"context_lines":[{"line_number":657,"context_line":"        LOG.debug(\"volume id: %(id)s, connector: %(conn)s\","},{"line_number":658,"context_line":"                  {\u0027id\u0027: volume[\u0027id\u0027], \u0027conn\u0027: connector})"},{"line_number":659,"context_line":"        common \u003d self._init_common()"},{"line_number":660,"context_line":"        try:"},{"line_number":661,"context_line":"            # we have to make sure we have a host"},{"line_number":662,"context_line":"            host, cpg \u003d common._create_host_fc("},{"line_number":663,"context_line":"                self.configuration, volume, connector)"}],"source_content_type":"text/x-python","patch_set":19,"id":"8a661d0e_50895ceb","line":660,"range":{"start_line":660,"start_character":5,"end_line":660,"end_character":12},"updated":"2026-01-21 12:35:42.000000000","message":"You still need to fix this. Please check my previous comment.","commit_id":"c588a2865db838729934b34865ce1d1145d987d5"},{"author":{"_account_id":29122,"name":"Raghavendra Tilay","email":"raghavendra-uddhav.tilay@hpe.com","username":"raghavendrat"},"change_message_id":"b12585e38b19c3c953ef0cd776705689f3506dbd","unresolved":false,"context_lines":[{"line_number":657,"context_line":"        LOG.debug(\"volume id: %(id)s, connector: %(conn)s\","},{"line_number":658,"context_line":"                  {\u0027id\u0027: volume[\u0027id\u0027], \u0027conn\u0027: connector})"},{"line_number":659,"context_line":"        common \u003d self._init_common()"},{"line_number":660,"context_line":"        try:"},{"line_number":661,"context_line":"            # we have to make sure we have a host"},{"line_number":662,"context_line":"            host, cpg \u003d common._create_host_fc("},{"line_number":663,"context_line":"                self.configuration, volume, connector)"}],"source_content_type":"text/x-python","patch_set":19,"id":"230f910a_ddad555b","line":660,"range":{"start_line":660,"start_character":5,"end_line":660,"end_character":12},"in_reply_to":"8a661d0e_50895ceb","updated":"2026-01-22 14:03:55.000000000","message":"Done. Reduced length of try finally blocks","commit_id":"c588a2865db838729934b34865ce1d1145d987d5"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"189cc631e83af8ff744de05d4b3846540ba6a097","unresolved":true,"context_lines":[{"line_number":37,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"try:"},{"line_number":40,"context_line":"    from hpe_storage_flowkit.src import cinder_client as hpecommon"},{"line_number":41,"context_line":"    from hpe_storage_flowkit.src.core import exceptions as flowkit_exceptions"},{"line_number":42,"context_line":"    from hpe_storage_flowkit.src.workflows.host import HostWorkflow"},{"line_number":43,"context_line":"    from hpe_storage_flowkit.src.workflows.vlun import VLUNWorkflow"}],"source_content_type":"text/x-python","patch_set":21,"id":"ca22a644_cff04020","line":40,"range":{"start_line":40,"start_character":9,"end_line":40,"end_character":28},"updated":"2026-01-19 15:20:12.000000000","message":"How is this library distributed?","commit_id":"7085ff3a3fd19cc0f5f778f0a1e87a5664a5fccb"},{"author":{"_account_id":29122,"name":"Raghavendra Tilay","email":"raghavendra-uddhav.tilay@hpe.com","username":"raghavendrat"},"change_message_id":"b997c68f1825cbf18f0e7c46e65e5308059665dd","unresolved":true,"context_lines":[{"line_number":37,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"try:"},{"line_number":40,"context_line":"    from hpe_storage_flowkit.src import cinder_client as hpecommon"},{"line_number":41,"context_line":"    from hpe_storage_flowkit.src.core import exceptions as flowkit_exceptions"},{"line_number":42,"context_line":"    from hpe_storage_flowkit.src.workflows.host import HostWorkflow"},{"line_number":43,"context_line":"    from hpe_storage_flowkit.src.workflows.vlun import VLUNWorkflow"}],"source_content_type":"text/x-python","patch_set":21,"id":"33de58f5_e74534c2","line":40,"range":{"start_line":40,"start_character":9,"end_line":40,"end_character":28},"in_reply_to":"23ea42ed_df98e29d","updated":"2026-01-20 12:10:24.000000000","message":"The user is expected to manually install the library hpe_storage_flowkit.\nIt need not be part of devstack/openstack installation.\nEven then, should it be added in requirements.txt ?","commit_id":"7085ff3a3fd19cc0f5f778f0a1e87a5664a5fccb"},{"author":{"_account_id":29122,"name":"Raghavendra Tilay","email":"raghavendra-uddhav.tilay@hpe.com","username":"raghavendrat"},"change_message_id":"b12585e38b19c3c953ef0cd776705689f3506dbd","unresolved":false,"context_lines":[{"line_number":37,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"try:"},{"line_number":40,"context_line":"    from hpe_storage_flowkit.src import cinder_client as hpecommon"},{"line_number":41,"context_line":"    from hpe_storage_flowkit.src.core import exceptions as flowkit_exceptions"},{"line_number":42,"context_line":"    from hpe_storage_flowkit.src.workflows.host import HostWorkflow"},{"line_number":43,"context_line":"    from hpe_storage_flowkit.src.workflows.vlun import VLUNWorkflow"}],"source_content_type":"text/x-python","patch_set":21,"id":"85f573a8_f9aca0eb","line":40,"range":{"start_line":40,"start_character":9,"end_line":40,"end_character":28},"in_reply_to":"241cbd31_7b750e71","updated":"2026-01-22 14:03:55.000000000","message":"Done.\nhttps://review.opendev.org/c/openstack/requirements/+/974322","commit_id":"7085ff3a3fd19cc0f5f778f0a1e87a5664a5fccb"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"e3b25bc80b3b9d5718b546474898ad5945964e23","unresolved":true,"context_lines":[{"line_number":37,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"try:"},{"line_number":40,"context_line":"    from hpe_storage_flowkit.src import cinder_client as hpecommon"},{"line_number":41,"context_line":"    from hpe_storage_flowkit.src.core import exceptions as flowkit_exceptions"},{"line_number":42,"context_line":"    from hpe_storage_flowkit.src.workflows.host import HostWorkflow"},{"line_number":43,"context_line":"    from hpe_storage_flowkit.src.workflows.vlun import VLUNWorkflow"}],"source_content_type":"text/x-python","patch_set":21,"id":"5dde1d96_dd97c6df","line":40,"range":{"start_line":40,"start_character":9,"end_line":40,"end_character":28},"in_reply_to":"33de58f5_e74534c2","updated":"2026-01-20 14:29:32.000000000","message":"No it should NOT be added to requirements.txt but should be added to to a few other files(which I mentioned in my previous comments) so that it is listed and maintained as an extra dependency.","commit_id":"7085ff3a3fd19cc0f5f778f0a1e87a5664a5fccb"},{"author":{"_account_id":29122,"name":"Raghavendra Tilay","email":"raghavendra-uddhav.tilay@hpe.com","username":"raghavendrat"},"change_message_id":"4345fe62045c1903005325ed521cf113bb62496c","unresolved":false,"context_lines":[{"line_number":37,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"try:"},{"line_number":40,"context_line":"    from hpe_storage_flowkit.src import cinder_client as hpecommon"},{"line_number":41,"context_line":"    from hpe_storage_flowkit.src.core import exceptions as flowkit_exceptions"},{"line_number":42,"context_line":"    from hpe_storage_flowkit.src.workflows.host import HostWorkflow"},{"line_number":43,"context_line":"    from hpe_storage_flowkit.src.workflows.vlun import VLUNWorkflow"}],"source_content_type":"text/x-python","patch_set":21,"id":"8e33fb01_effe465d","line":40,"range":{"start_line":40,"start_character":9,"end_line":40,"end_character":28},"in_reply_to":"355a6317_4e386099","updated":"2026-01-23 04:28:23.000000000","message":"Added entry of hpe-storage-flowkit in driver-requirements.txt and pyproject.toml.\n\nChecked test-requirements.txt. It has common packages like flake8, stestr, mypy, doc8, etc.\nLooks like, updating this file is not required.\n\nIn commit message, added Depends-on.","commit_id":"7085ff3a3fd19cc0f5f778f0a1e87a5664a5fccb"},{"author":{"_account_id":10058,"name":"Erlon R. Cruz","email":"erlon.rodrigues.cruz@canonical.com","username":"sombrafam"},"change_message_id":"25ea50e9e1702a5f5e6c4f04e27a9a55ab01d0a0","unresolved":true,"context_lines":[{"line_number":37,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"try:"},{"line_number":40,"context_line":"    from hpe_storage_flowkit.src import cinder_client as hpecommon"},{"line_number":41,"context_line":"    from hpe_storage_flowkit.src.core import exceptions as flowkit_exceptions"},{"line_number":42,"context_line":"    from hpe_storage_flowkit.src.workflows.host import HostWorkflow"},{"line_number":43,"context_line":"    from hpe_storage_flowkit.src.workflows.vlun import VLUNWorkflow"}],"source_content_type":"text/x-python","patch_set":21,"id":"241cbd31_7b750e71","line":40,"range":{"start_line":40,"start_character":9,"end_line":40,"end_character":28},"in_reply_to":"5dde1d96_dd97c6df","updated":"2026-01-21 12:35:42.000000000","message":"need to fix those","commit_id":"7085ff3a3fd19cc0f5f778f0a1e87a5664a5fccb"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"1a1f9d64faa9536e074783cd62d3db9e6decb887","unresolved":true,"context_lines":[{"line_number":37,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"try:"},{"line_number":40,"context_line":"    from hpe_storage_flowkit.src import cinder_client as hpecommon"},{"line_number":41,"context_line":"    from hpe_storage_flowkit.src.core import exceptions as flowkit_exceptions"},{"line_number":42,"context_line":"    from hpe_storage_flowkit.src.workflows.host import HostWorkflow"},{"line_number":43,"context_line":"    from hpe_storage_flowkit.src.workflows.vlun import VLUNWorkflow"}],"source_content_type":"text/x-python","patch_set":21,"id":"355a6317_4e386099","line":40,"range":{"start_line":40,"start_character":9,"end_line":40,"end_character":28},"in_reply_to":"85f573a8_f9aca0eb","updated":"2026-01-22 14:41:05.000000000","message":"I\u0027m afraid you still have to address the remaining two points.\n * Add the library to driver-requirements.txt and test-requirements.txt\n * Add it to optinal dependencies in pyproject.toml\n \nNote that these may need adding `Depends-on: https://review.opendev.org/c/openstack/requirements/+/974322` to this commit.","commit_id":"7085ff3a3fd19cc0f5f778f0a1e87a5664a5fccb"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"0cffa3d1891df7cb6cae6519037192c9703db4af","unresolved":false,"context_lines":[{"line_number":37,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"try:"},{"line_number":40,"context_line":"    from hpe_storage_flowkit.src import cinder_client as hpecommon"},{"line_number":41,"context_line":"    from hpe_storage_flowkit.src.core import exceptions as flowkit_exceptions"},{"line_number":42,"context_line":"    from hpe_storage_flowkit.src.workflows.host import HostWorkflow"},{"line_number":43,"context_line":"    from hpe_storage_flowkit.src.workflows.vlun import VLUNWorkflow"}],"source_content_type":"text/x-python","patch_set":21,"id":"a22274af_c25f9d24","line":40,"range":{"start_line":40,"start_character":9,"end_line":40,"end_character":28},"in_reply_to":"8e33fb01_effe465d","updated":"2026-01-28 14:01:04.000000000","message":"\u003e Checked test-requirements.txt. It has common packages like flake8, stestr, mypy, doc8, etc. Looks like, updating this file is not required.\n\nOK probably I was looking at old stuff to install these for tests.\n\nI think the update about requirements part looks good now. Thanks.","commit_id":"7085ff3a3fd19cc0f5f778f0a1e87a5664a5fccb"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"0674b2a1771fab07f26ac2affa9e6f786f298fdd","unresolved":true,"context_lines":[{"line_number":37,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"try:"},{"line_number":40,"context_line":"    from hpe_storage_flowkit.src import cinder_client as hpecommon"},{"line_number":41,"context_line":"    from hpe_storage_flowkit.src.core import exceptions as flowkit_exceptions"},{"line_number":42,"context_line":"    from hpe_storage_flowkit.src.workflows.host import HostWorkflow"},{"line_number":43,"context_line":"    from hpe_storage_flowkit.src.workflows.vlun import VLUNWorkflow"}],"source_content_type":"text/x-python","patch_set":21,"id":"23ea42ed_df98e29d","line":40,"range":{"start_line":40,"start_character":9,"end_line":40,"end_character":28},"in_reply_to":"ad5d963d_a1c1999c","updated":"2026-01-19 15:53:16.000000000","message":"If this is a new dependency for volume driver then you may have to\n - Add it to blobal requirements (See https://review.opendev.org/c/openstack/requirements/+/903099 for example)\n - Add the library to driver-requirements.txt and test-requirements.txt\n - Add it to optinal dependencies in pyproject.toml","commit_id":"7085ff3a3fd19cc0f5f778f0a1e87a5664a5fccb"},{"author":{"_account_id":29122,"name":"Raghavendra Tilay","email":"raghavendra-uddhav.tilay@hpe.com","username":"raghavendrat"},"change_message_id":"d04428af92f4a4fe045bc2e602c275de10101ba9","unresolved":true,"context_lines":[{"line_number":37,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"try:"},{"line_number":40,"context_line":"    from hpe_storage_flowkit.src import cinder_client as hpecommon"},{"line_number":41,"context_line":"    from hpe_storage_flowkit.src.core import exceptions as flowkit_exceptions"},{"line_number":42,"context_line":"    from hpe_storage_flowkit.src.workflows.host import HostWorkflow"},{"line_number":43,"context_line":"    from hpe_storage_flowkit.src.workflows.vlun import VLUNWorkflow"}],"source_content_type":"text/x-python","patch_set":21,"id":"ad5d963d_a1c1999c","line":40,"range":{"start_line":40,"start_character":9,"end_line":40,"end_character":28},"in_reply_to":"ca22a644_cff04020","updated":"2026-01-19 15:40:26.000000000","message":"As mentioned in hpe-alletramp-driver.rst, the library hpe_storage_flowkit is distributed via PyPI","commit_id":"7085ff3a3fd19cc0f5f778f0a1e87a5664a5fccb"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"0674b2a1771fab07f26ac2affa9e6f786f298fdd","unresolved":true,"context_lines":[{"line_number":143,"context_line":"                                              self.__class__.__name__)"},{"line_number":144,"context_line":"        return self._stats"},{"line_number":145,"context_line":""},{"line_number":146,"context_line":"    def check_for_setup_error(self):"},{"line_number":147,"context_line":"        \"\"\"Setup errors are already checked for in do_setup so return pass"},{"line_number":148,"context_line":""},{"line_number":149,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":21,"id":"f54b8e12_3ed49dcf","line":146,"range":{"start_line":146,"start_character":8,"end_line":146,"end_character":29},"updated":"2026-01-19 15:53:16.000000000","message":"Because import of hpe_storage_flowkit is optional, you should check whether the library is actually available here.","commit_id":"7085ff3a3fd19cc0f5f778f0a1e87a5664a5fccb"},{"author":{"_account_id":29122,"name":"Raghavendra Tilay","email":"raghavendra-uddhav.tilay@hpe.com","username":"raghavendrat"},"change_message_id":"b997c68f1825cbf18f0e7c46e65e5308059665dd","unresolved":false,"context_lines":[{"line_number":143,"context_line":"                                              self.__class__.__name__)"},{"line_number":144,"context_line":"        return self._stats"},{"line_number":145,"context_line":""},{"line_number":146,"context_line":"    def check_for_setup_error(self):"},{"line_number":147,"context_line":"        \"\"\"Setup errors are already checked for in do_setup so return pass"},{"line_number":148,"context_line":""},{"line_number":149,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":21,"id":"f70a9ab0_293496d7","line":146,"range":{"start_line":146,"start_character":8,"end_line":146,"end_character":29},"in_reply_to":"f54b8e12_3ed49dcf","updated":"2026-01-20 12:10:24.000000000","message":"Done","commit_id":"7085ff3a3fd19cc0f5f778f0a1e87a5664a5fccb"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"0cffa3d1891df7cb6cae6519037192c9703db4af","unresolved":true,"context_lines":[{"line_number":90,"context_line":"        return self.common"},{"line_number":91,"context_line":""},{"line_number":92,"context_line":"    def _login(self, timeout\u003dNone, array_id\u003dNone):"},{"line_number":93,"context_line":"        self.common \u003d self._init_common()"},{"line_number":94,"context_line":"        # If replication is enabled and we cannot login, we do not want to"},{"line_number":95,"context_line":"        # raise an exception so a failover can still be executed."},{"line_number":96,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":24,"id":"b06f2852_f9f9bc34","line":93,"range":{"start_line":93,"start_character":8,"end_line":93,"end_character":41},"updated":"2026-01-28 14:01:04.000000000","message":"(nit)\n\nThe usage here looks quite redundant because self.common is set twice (at L88 and here).\nProbably you don\u0027t have to return anything by _init_common ?\n\nAlso I see _init_common is called in many places. Can we just call it at do_setup then drop the other calls ?","commit_id":"2c5c26a9f9f7c59d6c748d05a4f45ef3d461447b"},{"author":{"_account_id":29122,"name":"Raghavendra Tilay","email":"raghavendra-uddhav.tilay@hpe.com","username":"raghavendrat"},"change_message_id":"7078329e9ce5aaebbac6d658e733c7cfae915084","unresolved":false,"context_lines":[{"line_number":90,"context_line":"        return self.common"},{"line_number":91,"context_line":""},{"line_number":92,"context_line":"    def _login(self, timeout\u003dNone, array_id\u003dNone):"},{"line_number":93,"context_line":"        self.common \u003d self._init_common()"},{"line_number":94,"context_line":"        # If replication is enabled and we cannot login, we do not want to"},{"line_number":95,"context_line":"        # raise an exception so a failover can still be executed."},{"line_number":96,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":24,"id":"63daa74e_5224656c","line":93,"range":{"start_line":93,"start_character":8,"end_line":93,"end_character":41},"in_reply_to":"b06f2852_f9f9bc34","updated":"2026-01-29 10:41:29.000000000","message":"Done. now self.common is re-used \u0026 _init_common is not called multiple times.","commit_id":"2c5c26a9f9f7c59d6c748d05a4f45ef3d461447b"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"0cffa3d1891df7cb6cae6519037192c9703db4af","unresolved":true,"context_lines":[{"line_number":147,"context_line":"                    \u0027 Alletra MP drivers. Please execute\u0027"},{"line_number":148,"context_line":"                    \u0027 \"pip install hpe_storage_flowkit\" to\u0027"},{"line_number":149,"context_line":"                    \u0027 install the hpe_storage_flowkit package.\u0027)"},{"line_number":150,"context_line":"            raise exception.VolumeBackendAPIException(data\u003dmsg)"},{"line_number":151,"context_line":""},{"line_number":152,"context_line":"    def do_setup(self, context):"},{"line_number":153,"context_line":"        self.check_for_setup_error()"}],"source_content_type":"text/x-python","patch_set":24,"id":"36058eb2_bd779dea","line":150,"range":{"start_line":150,"start_character":28,"end_line":150,"end_character":53},"updated":"2026-01-28 14:01:04.000000000","message":"Looking at check_for_setup error in the other drivers, I think `exception.VolumeDriverException` is preferred here","commit_id":"2c5c26a9f9f7c59d6c748d05a4f45ef3d461447b"},{"author":{"_account_id":29122,"name":"Raghavendra Tilay","email":"raghavendra-uddhav.tilay@hpe.com","username":"raghavendrat"},"change_message_id":"7078329e9ce5aaebbac6d658e733c7cfae915084","unresolved":false,"context_lines":[{"line_number":147,"context_line":"                    \u0027 Alletra MP drivers. Please execute\u0027"},{"line_number":148,"context_line":"                    \u0027 \"pip install hpe_storage_flowkit\" to\u0027"},{"line_number":149,"context_line":"                    \u0027 install the hpe_storage_flowkit package.\u0027)"},{"line_number":150,"context_line":"            raise exception.VolumeBackendAPIException(data\u003dmsg)"},{"line_number":151,"context_line":""},{"line_number":152,"context_line":"    def do_setup(self, context):"},{"line_number":153,"context_line":"        self.check_for_setup_error()"}],"source_content_type":"text/x-python","patch_set":24,"id":"aaf1a639_52eafaa2","line":150,"range":{"start_line":150,"start_character":28,"end_line":150,"end_character":53},"in_reply_to":"36058eb2_bd779dea","updated":"2026-01-29 10:41:29.000000000","message":"Done","commit_id":"2c5c26a9f9f7c59d6c748d05a4f45ef3d461447b"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"da5dc82fc9bd89b84c106d35d1eaeb93d71112db","unresolved":true,"context_lines":[{"line_number":106,"context_line":"        try:"},{"line_number":107,"context_line":"            self.common.do_setup(None, timeout\u003dtimeout, stats\u003dself._stats,"},{"line_number":108,"context_line":"                                 array_id\u003darray_id)"},{"line_number":109,"context_line":"        except Exception:"},{"line_number":110,"context_line":"            if self.common._replication_enabled:"},{"line_number":111,"context_line":"                LOG.warning(\"The primary array is not reachable at this \""},{"line_number":112,"context_line":"                            \"time. Since replication is enabled, \""}],"source_content_type":"text/x-python","patch_set":27,"id":"aff951b9_4bc09b94","line":109,"range":{"start_line":109,"start_character":15,"end_line":109,"end_character":24},"updated":"2026-02-02 14:42:42.000000000","message":"(nit) If we could use a more explicit exception (in case the library provides the base exception), that would be probably better.","commit_id":"fb66ad2cd3cc6f78c296fcb4eacb0e800941d292"},{"author":{"_account_id":29122,"name":"Raghavendra Tilay","email":"raghavendra-uddhav.tilay@hpe.com","username":"raghavendrat"},"change_message_id":"522f25743b06365bd322f157df5c46418d5cc762","unresolved":false,"context_lines":[{"line_number":106,"context_line":"        try:"},{"line_number":107,"context_line":"            self.common.do_setup(None, timeout\u003dtimeout, stats\u003dself._stats,"},{"line_number":108,"context_line":"                                 array_id\u003darray_id)"},{"line_number":109,"context_line":"        except Exception:"},{"line_number":110,"context_line":"            if self.common._replication_enabled:"},{"line_number":111,"context_line":"                LOG.warning(\"The primary array is not reachable at this \""},{"line_number":112,"context_line":"                            \"time. Since replication is enabled, \""}],"source_content_type":"text/x-python","patch_set":27,"id":"08bb15c9_f5b20f71","line":109,"range":{"start_line":109,"start_character":15,"end_line":109,"end_character":24},"in_reply_to":"aff951b9_4bc09b94","updated":"2026-02-02 17:13:06.000000000","message":"Done","commit_id":"fb66ad2cd3cc6f78c296fcb4eacb0e800941d292"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"da5dc82fc9bd89b84c106d35d1eaeb93d71112db","unresolved":true,"context_lines":[{"line_number":143,"context_line":"        if not refresh:"},{"line_number":144,"context_line":"            return self._stats"},{"line_number":145,"context_line":""},{"line_number":146,"context_line":"        common \u003d self._login()"},{"line_number":147,"context_line":"        self._stats \u003d common.get_volume_stats("},{"line_number":148,"context_line":"            refresh,"},{"line_number":149,"context_line":"            self.get_filter_function(),"}],"source_content_type":"text/x-python","patch_set":27,"id":"938444de_cd62626e","line":146,"range":{"start_line":146,"start_character":8,"end_line":146,"end_character":30},"updated":"2026-02-02 14:42:42.000000000","message":"IIUC this assumes that get_volume_stats is called before any other volume driver API is called, but IMO it is too much tricky. Can we call this in do_setup (or somewhere doing initialization) instead ?","commit_id":"fb66ad2cd3cc6f78c296fcb4eacb0e800941d292"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"a03d8f84409467b857eb7d3fb66a8845a68c3db8","unresolved":true,"context_lines":[{"line_number":143,"context_line":"        if not refresh:"},{"line_number":144,"context_line":"            return self._stats"},{"line_number":145,"context_line":""},{"line_number":146,"context_line":"        common \u003d self._login()"},{"line_number":147,"context_line":"        self._stats \u003d common.get_volume_stats("},{"line_number":148,"context_line":"            refresh,"},{"line_number":149,"context_line":"            self.get_filter_function(),"}],"source_content_type":"text/x-python","patch_set":27,"id":"ce50ff5f_e09d2a1e","line":146,"range":{"start_line":146,"start_character":8,"end_line":146,"end_character":30},"in_reply_to":"679068f3_bd642241","updated":"2026-02-06 13:37:24.000000000","message":"May main point is not this specific usage but the other direct usage of self.common, which assumes that self._login is called somewhere else earlier.\n\nI think we should\n\n- call _login and set self.common only in a single place and use self.common directly in the other places\n\nor\n\n- Use _login in all places.","commit_id":"fb66ad2cd3cc6f78c296fcb4eacb0e800941d292"},{"author":{"_account_id":29122,"name":"Raghavendra Tilay","email":"raghavendra-uddhav.tilay@hpe.com","username":"raghavendrat"},"change_message_id":"522f25743b06365bd322f157df5c46418d5cc762","unresolved":true,"context_lines":[{"line_number":143,"context_line":"        if not refresh:"},{"line_number":144,"context_line":"            return self._stats"},{"line_number":145,"context_line":""},{"line_number":146,"context_line":"        common \u003d self._login()"},{"line_number":147,"context_line":"        self._stats \u003d common.get_volume_stats("},{"line_number":148,"context_line":"            refresh,"},{"line_number":149,"context_line":"            self.get_filter_function(),"}],"source_content_type":"text/x-python","patch_set":27,"id":"679068f3_bd642241","line":146,"range":{"start_line":146,"start_character":8,"end_line":146,"end_character":30},"in_reply_to":"938444de_cd62626e","updated":"2026-02-02 17:13:06.000000000","message":"In _login(), at line 100 there is \"if\" condition to check whether self.common is already created (via do_setup function defined at line 171). In such case, self.common is returned (as is).\nOtherwise (i.e when self.common is None), further steps are performed.","commit_id":"fb66ad2cd3cc6f78c296fcb4eacb0e800941d292"},{"author":{"_account_id":29122,"name":"Raghavendra Tilay","email":"raghavendra-uddhav.tilay@hpe.com","username":"raghavendrat"},"change_message_id":"e6df776a698748cca3a2082a187dfd29c217b88f","unresolved":false,"context_lines":[{"line_number":143,"context_line":"        if not refresh:"},{"line_number":144,"context_line":"            return self._stats"},{"line_number":145,"context_line":""},{"line_number":146,"context_line":"        common \u003d self._login()"},{"line_number":147,"context_line":"        self._stats \u003d common.get_volume_stats("},{"line_number":148,"context_line":"            refresh,"},{"line_number":149,"context_line":"            self.get_filter_function(),"}],"source_content_type":"text/x-python","patch_set":27,"id":"d029400f_0c2237d3","line":146,"range":{"start_line":146,"start_character":8,"end_line":146,"end_character":30},"in_reply_to":"ce50ff5f_e09d2a1e","updated":"2026-02-09 12:52:36.000000000","message":"Done. Now self.common is set only in _login() function","commit_id":"fb66ad2cd3cc6f78c296fcb4eacb0e800941d292"},{"author":{"_account_id":10058,"name":"Erlon R. Cruz","email":"erlon.rodrigues.cruz@canonical.com","username":"sombrafam"},"change_message_id":"fff934437451ef1a5db40d2b9482300cb69d36b7","unresolved":true,"context_lines":[{"line_number":303,"context_line":"            self._active_backend_id \u003d active_backend_id"},{"line_number":304,"context_line":"            return active_backend_id, volume_updates, group_update_list"},{"line_number":305,"context_line":"        except flowkit_exceptions.HPEStorageException as e:"},{"line_number":306,"context_line":"            msg \u003d (_(\"Initialize connection failed: %(err)s\") %"},{"line_number":307,"context_line":"                   {\u0027err\u0027: str(e)})"},{"line_number":308,"context_line":"            LOG.error(msg)"},{"line_number":309,"context_line":"            raise exception.VolumeBackendAPIException(msg)"}],"source_content_type":"text/x-python","patch_set":33,"id":"a02961d7_faa5d7b1","line":306,"range":{"start_line":306,"start_character":21,"end_line":306,"end_character":52},"updated":"2026-02-13 12:21:10.000000000","message":"This is the failover function not initialize connection","commit_id":"ab3f2b880e3ef3df120b14ba2ec768fefa10d6f4"},{"author":{"_account_id":29122,"name":"Raghavendra Tilay","email":"raghavendra-uddhav.tilay@hpe.com","username":"raghavendrat"},"change_message_id":"c020d507bd0c82a12dcabfabbc1d208898f808cc","unresolved":false,"context_lines":[{"line_number":303,"context_line":"            self._active_backend_id \u003d active_backend_id"},{"line_number":304,"context_line":"            return active_backend_id, volume_updates, group_update_list"},{"line_number":305,"context_line":"        except flowkit_exceptions.HPEStorageException as e:"},{"line_number":306,"context_line":"            msg \u003d (_(\"Initialize connection failed: %(err)s\") %"},{"line_number":307,"context_line":"                   {\u0027err\u0027: str(e)})"},{"line_number":308,"context_line":"            LOG.error(msg)"},{"line_number":309,"context_line":"            raise exception.VolumeBackendAPIException(msg)"}],"source_content_type":"text/x-python","patch_set":33,"id":"fd0a214e_7adccf5f","line":306,"range":{"start_line":306,"start_character":21,"end_line":306,"end_character":52},"in_reply_to":"a02961d7_faa5d7b1","updated":"2026-02-13 13:41:05.000000000","message":"Done","commit_id":"ab3f2b880e3ef3df120b14ba2ec768fefa10d6f4"},{"author":{"_account_id":10058,"name":"Erlon R. Cruz","email":"erlon.rodrigues.cruz@canonical.com","username":"sombrafam"},"change_message_id":"fff934437451ef1a5db40d2b9482300cb69d36b7","unresolved":true,"context_lines":[{"line_number":993,"context_line":"                zone_remove \u003d False"},{"line_number":994,"context_line":"            else:"},{"line_number":995,"context_line":"                hostname \u003d common._safe_hostname(connector, self.configuration)"},{"line_number":996,"context_line":"                if not self._is_multiattach(volume, hostname):"},{"line_number":997,"context_line":"                    common.terminate_connection(volume, hostname,"},{"line_number":998,"context_line":"                                                wwn\u003dconnector[\u0027wwpns\u0027],"},{"line_number":999,"context_line":"                                                remote_client\u003dremote_client)"},{"line_number":1000,"context_line":""},{"line_number":1001,"context_line":"                zone_remove \u003d True"},{"line_number":1002,"context_line":"                vlun_wf \u003d VLUNWorkflow(common.session_mgr)"}],"source_content_type":"text/x-python","patch_set":33,"id":"bc8fbb8d_a0cec922","line":999,"range":{"start_line":996,"start_character":15,"end_line":999,"end_character":76},"updated":"2026-02-13 12:21:10.000000000","message":"What happens if the volume is multi-attach and the user wants to remove the last volume attachment? If I understood correctly, in that scenario the connection will leak.","commit_id":"ab3f2b880e3ef3df120b14ba2ec768fefa10d6f4"},{"author":{"_account_id":29122,"name":"Raghavendra Tilay","email":"raghavendra-uddhav.tilay@hpe.com","username":"raghavendrat"},"change_message_id":"a15cbf7079dcb2e219c95d860ea9d25eb0665f85","unresolved":false,"context_lines":[{"line_number":993,"context_line":"                zone_remove \u003d False"},{"line_number":994,"context_line":"            else:"},{"line_number":995,"context_line":"                hostname \u003d common._safe_hostname(connector, self.configuration)"},{"line_number":996,"context_line":"                if not self._is_multiattach(volume, hostname):"},{"line_number":997,"context_line":"                    common.terminate_connection(volume, hostname,"},{"line_number":998,"context_line":"                                                wwn\u003dconnector[\u0027wwpns\u0027],"},{"line_number":999,"context_line":"                                                remote_client\u003dremote_client)"},{"line_number":1000,"context_line":""},{"line_number":1001,"context_line":"                zone_remove \u003d True"},{"line_number":1002,"context_line":"                vlun_wf \u003d VLUNWorkflow(common.session_mgr)"}],"source_content_type":"text/x-python","patch_set":33,"id":"128aeb81_49141ab6","line":999,"range":{"start_line":996,"start_character":15,"end_line":999,"end_character":76},"in_reply_to":"bc8fbb8d_a0cec922","updated":"2026-02-13 16:03:38.000000000","message":"thanks for catching this.\nNow added if else to handle this.","commit_id":"ab3f2b880e3ef3df120b14ba2ec768fefa10d6f4"},{"author":{"_account_id":10058,"name":"Erlon R. Cruz","email":"erlon.rodrigues.cruz@canonical.com","username":"sombrafam"},"change_message_id":"fff934437451ef1a5db40d2b9482300cb69d36b7","unresolved":true,"context_lines":[{"line_number":1107,"context_line":"        try:"},{"line_number":1108,"context_line":"            self.initialize_iscsi_ports(self.common)"},{"line_number":1109,"context_line":"        except flowkit_exceptions.HPEStorageException as e:"},{"line_number":1110,"context_line":"            msg \u003d (_(\"Initialize nvme ips and ports failed: %(err)s\") %"},{"line_number":1111,"context_line":"                   {\u0027err\u0027: str(e)})"},{"line_number":1112,"context_line":"            LOG.error(msg)"},{"line_number":1113,"context_line":"            raise exception.VolumeBackendAPIException(msg)"}],"source_content_type":"text/x-python","patch_set":33,"id":"d23d214f_92ffb60b","line":1110,"range":{"start_line":1110,"start_character":22,"end_line":1110,"end_character":42},"updated":"2026-02-13 12:21:10.000000000","message":"Initialize iSCSI ips...","commit_id":"ab3f2b880e3ef3df120b14ba2ec768fefa10d6f4"},{"author":{"_account_id":29122,"name":"Raghavendra Tilay","email":"raghavendra-uddhav.tilay@hpe.com","username":"raghavendrat"},"change_message_id":"c020d507bd0c82a12dcabfabbc1d208898f808cc","unresolved":false,"context_lines":[{"line_number":1107,"context_line":"        try:"},{"line_number":1108,"context_line":"            self.initialize_iscsi_ports(self.common)"},{"line_number":1109,"context_line":"        except flowkit_exceptions.HPEStorageException as e:"},{"line_number":1110,"context_line":"            msg \u003d (_(\"Initialize nvme ips and ports failed: %(err)s\") %"},{"line_number":1111,"context_line":"                   {\u0027err\u0027: str(e)})"},{"line_number":1112,"context_line":"            LOG.error(msg)"},{"line_number":1113,"context_line":"            raise exception.VolumeBackendAPIException(msg)"}],"source_content_type":"text/x-python","patch_set":33,"id":"c3552415_57bf998e","line":1110,"range":{"start_line":1110,"start_character":22,"end_line":1110,"end_character":42},"in_reply_to":"d23d214f_92ffb60b","updated":"2026-02-13 13:41:05.000000000","message":"Done","commit_id":"ab3f2b880e3ef3df120b14ba2ec768fefa10d6f4"},{"author":{"_account_id":10058,"name":"Erlon R. Cruz","email":"erlon.rodrigues.cruz@canonical.com","username":"sombrafam"},"change_message_id":"fff934437451ef1a5db40d2b9482300cb69d36b7","unresolved":true,"context_lines":[{"line_number":1484,"context_line":"                    \u0027encrypted\u0027: False,"},{"line_number":1485,"context_line":"                    \u0027target_discovered\u0027: True,"},{"line_number":1486,"context_line":"                    \u0027target_iqn\u0027: \u0027iqn.2010-10.org.openstack:volume-00000001\u0027,"},{"line_number":1487,"context_line":"                    \u0027target_protal\u0027: \u0027127.0.0.1:3260\u0027,"},{"line_number":1488,"context_line":"                    \u0027volume_id\u0027: 1,"},{"line_number":1489,"context_line":"                }"},{"line_number":1490,"context_line":"            }"}],"source_content_type":"text/x-python","patch_set":33,"id":"170f9184_6330a6ba","line":1487,"range":{"start_line":1487,"start_character":21,"end_line":1487,"end_character":34},"updated":"2026-02-13 12:21:10.000000000","message":"portal","commit_id":"ab3f2b880e3ef3df120b14ba2ec768fefa10d6f4"},{"author":{"_account_id":29122,"name":"Raghavendra Tilay","email":"raghavendra-uddhav.tilay@hpe.com","username":"raghavendrat"},"change_message_id":"c020d507bd0c82a12dcabfabbc1d208898f808cc","unresolved":false,"context_lines":[{"line_number":1484,"context_line":"                    \u0027encrypted\u0027: False,"},{"line_number":1485,"context_line":"                    \u0027target_discovered\u0027: True,"},{"line_number":1486,"context_line":"                    \u0027target_iqn\u0027: \u0027iqn.2010-10.org.openstack:volume-00000001\u0027,"},{"line_number":1487,"context_line":"                    \u0027target_protal\u0027: \u0027127.0.0.1:3260\u0027,"},{"line_number":1488,"context_line":"                    \u0027volume_id\u0027: 1,"},{"line_number":1489,"context_line":"                }"},{"line_number":1490,"context_line":"            }"}],"source_content_type":"text/x-python","patch_set":33,"id":"fbf6636e_ee72732a","line":1487,"range":{"start_line":1487,"start_character":21,"end_line":1487,"end_character":34},"in_reply_to":"170f9184_6330a6ba","updated":"2026-02-13 13:41:05.000000000","message":"Done","commit_id":"ab3f2b880e3ef3df120b14ba2ec768fefa10d6f4"},{"author":{"_account_id":10058,"name":"Erlon R. Cruz","email":"erlon.rodrigues.cruz@canonical.com","username":"sombrafam"},"change_message_id":"fff934437451ef1a5db40d2b9482300cb69d36b7","unresolved":true,"context_lines":[{"line_number":1588,"context_line":"                        hostname,"},{"line_number":1589,"context_line":"                        iqn\u003dconnector[\u0027initiator\u0027],"},{"line_number":1590,"context_line":"                        remote_client\u003dremote_client)"},{"line_number":1591,"context_line":"            common._clear_chap_3par(volume)"},{"line_number":1592,"context_line":"        except flowkit_exceptions.HPEStorageException as e:"},{"line_number":1593,"context_line":"            msg \u003d (_(\"Terminate connection failed: %(err)s\") %"},{"line_number":1594,"context_line":"                   {\u0027err\u0027: str(e)})"}],"source_content_type":"text/x-python","patch_set":33,"id":"e5f98377_32677151","line":1591,"range":{"start_line":1591,"start_character":12,"end_line":1591,"end_character":43},"updated":"2026-02-13 12:21:10.000000000","message":"In the multi-attach case, I am still trying to understand what would happen when the last volume from the attachment is detached.\n\nRegardless, it seems there is a bug here since you are clearing the CHAP secret whether or not this is the last attachment.","commit_id":"ab3f2b880e3ef3df120b14ba2ec768fefa10d6f4"},{"author":{"_account_id":29122,"name":"Raghavendra Tilay","email":"raghavendra-uddhav.tilay@hpe.com","username":"raghavendrat"},"change_message_id":"a15cbf7079dcb2e219c95d860ea9d25eb0665f85","unresolved":false,"context_lines":[{"line_number":1588,"context_line":"                        hostname,"},{"line_number":1589,"context_line":"                        iqn\u003dconnector[\u0027initiator\u0027],"},{"line_number":1590,"context_line":"                        remote_client\u003dremote_client)"},{"line_number":1591,"context_line":"            common._clear_chap_3par(volume)"},{"line_number":1592,"context_line":"        except flowkit_exceptions.HPEStorageException as e:"},{"line_number":1593,"context_line":"            msg \u003d (_(\"Terminate connection failed: %(err)s\") %"},{"line_number":1594,"context_line":"                   {\u0027err\u0027: str(e)})"}],"source_content_type":"text/x-python","patch_set":33,"id":"363beb79_7c26eeee","line":1591,"range":{"start_line":1591,"start_character":12,"end_line":1591,"end_character":43},"in_reply_to":"e5f98377_32677151","updated":"2026-02-13 16:03:38.000000000","message":"1] regarding last volume attachment - replied above.\n2] now _clear_chap_3par() function is called only on last attachment.","commit_id":"ab3f2b880e3ef3df120b14ba2ec768fefa10d6f4"},{"author":{"_account_id":10058,"name":"Erlon R. Cruz","email":"erlon.rodrigues.cruz@canonical.com","username":"sombrafam"},"change_message_id":"fff934437451ef1a5db40d2b9482300cb69d36b7","unresolved":true,"context_lines":[{"line_number":1599,"context_line":"    # update volume metadata"},{"line_number":1600,"context_line":"    def _do_export(self, common, volume, connector):"},{"line_number":1601,"context_line":"        \"\"\"Gets the associated account, generates CHAP info and updates.\"\"\""},{"line_number":1602,"context_line":"        LOG.debug(\"_do_export enter\")"},{"line_number":1603,"context_line":"        vlun_wf \u003d VLUNWorkflow(common.session_mgr)"},{"line_number":1604,"context_line":"        host_wf \u003d HostWorkflow(common.session_mgr)"},{"line_number":1605,"context_line":"        vol_wf \u003d VolumeWorkflow(common.session_mgr)"}],"source_content_type":"text/x-python","patch_set":33,"id":"d08d0abe_e46313cc","line":1602,"range":{"start_line":1602,"start_character":8,"end_line":1602,"end_character":37},"updated":"2026-02-13 12:21:10.000000000","message":"Please review my initial feedback on debugging message patterns and implement these changes throughout the entire driver.","commit_id":"ab3f2b880e3ef3df120b14ba2ec768fefa10d6f4"},{"author":{"_account_id":29122,"name":"Raghavendra Tilay","email":"raghavendra-uddhav.tilay@hpe.com","username":"raghavendrat"},"change_message_id":"c020d507bd0c82a12dcabfabbc1d208898f808cc","unresolved":false,"context_lines":[{"line_number":1599,"context_line":"    # update volume metadata"},{"line_number":1600,"context_line":"    def _do_export(self, common, volume, connector):"},{"line_number":1601,"context_line":"        \"\"\"Gets the associated account, generates CHAP info and updates.\"\"\""},{"line_number":1602,"context_line":"        LOG.debug(\"_do_export enter\")"},{"line_number":1603,"context_line":"        vlun_wf \u003d VLUNWorkflow(common.session_mgr)"},{"line_number":1604,"context_line":"        host_wf \u003d HostWorkflow(common.session_mgr)"},{"line_number":1605,"context_line":"        vol_wf \u003d VolumeWorkflow(common.session_mgr)"}],"source_content_type":"text/x-python","patch_set":33,"id":"8ce59673_29942b02","line":1602,"range":{"start_line":1602,"start_character":8,"end_line":1602,"end_character":37},"in_reply_to":"d08d0abe_e46313cc","updated":"2026-02-13 13:41:05.000000000","message":"Done","commit_id":"ab3f2b880e3ef3df120b14ba2ec768fefa10d6f4"},{"author":{"_account_id":10058,"name":"Erlon R. Cruz","email":"erlon.rodrigues.cruz@canonical.com","username":"sombrafam"},"change_message_id":"fff934437451ef1a5db40d2b9482300cb69d36b7","unresolved":true,"context_lines":[{"line_number":1637,"context_line":"            # key assigned to one of them.  Use that CHAP key if present,"},{"line_number":1638,"context_line":"            # otherwise create a new one.  Skip any VLUNs that are missing"},{"line_number":1639,"context_line":"            # CHAP credentials in metadata."},{"line_number":1640,"context_line":"            msg \u003d \"Get a list of all iSCSI VLUNs and see if there is \""},{"line_number":1641,"context_line":"            msg \u003d msg + \"already a CHAP key assigned to one of them\""},{"line_number":1642,"context_line":"            LOG.debug(\"msg: %(msg)s\", {\u0027msg\u0027: msg})"},{"line_number":1643,"context_line":"            chap_exists \u003d False"},{"line_number":1644,"context_line":"            active_vluns \u003d 0"},{"line_number":1645,"context_line":""}],"source_content_type":"text/x-python","patch_set":33,"id":"6ec2d635_f649e3ca","line":1642,"range":{"start_line":1640,"start_character":0,"end_line":1642,"end_character":51},"updated":"2026-02-13 12:21:10.000000000","message":"!!","commit_id":"ab3f2b880e3ef3df120b14ba2ec768fefa10d6f4"},{"author":{"_account_id":29122,"name":"Raghavendra Tilay","email":"raghavendra-uddhav.tilay@hpe.com","username":"raghavendrat"},"change_message_id":"1a98e6a89b297d8823869ce66b64b00f9e6165de","unresolved":false,"context_lines":[{"line_number":1637,"context_line":"            # key assigned to one of them.  Use that CHAP key if present,"},{"line_number":1638,"context_line":"            # otherwise create a new one.  Skip any VLUNs that are missing"},{"line_number":1639,"context_line":"            # CHAP credentials in metadata."},{"line_number":1640,"context_line":"            msg \u003d \"Get a list of all iSCSI VLUNs and see if there is \""},{"line_number":1641,"context_line":"            msg \u003d msg + \"already a CHAP key assigned to one of them\""},{"line_number":1642,"context_line":"            LOG.debug(\"msg: %(msg)s\", {\u0027msg\u0027: msg})"},{"line_number":1643,"context_line":"            chap_exists \u003d False"},{"line_number":1644,"context_line":"            active_vluns \u003d 0"},{"line_number":1645,"context_line":""}],"source_content_type":"text/x-python","patch_set":33,"id":"f15b403b_b32de724","line":1642,"range":{"start_line":1640,"start_character":0,"end_line":1642,"end_character":51},"in_reply_to":"2cd65db6_99553f3d","updated":"2026-02-17 07:01:46.000000000","message":"now i removed this debug message","commit_id":"ab3f2b880e3ef3df120b14ba2ec768fefa10d6f4"},{"author":{"_account_id":29122,"name":"Raghavendra Tilay","email":"raghavendra-uddhav.tilay@hpe.com","username":"raghavendrat"},"change_message_id":"c020d507bd0c82a12dcabfabbc1d208898f808cc","unresolved":true,"context_lines":[{"line_number":1637,"context_line":"            # key assigned to one of them.  Use that CHAP key if present,"},{"line_number":1638,"context_line":"            # otherwise create a new one.  Skip any VLUNs that are missing"},{"line_number":1639,"context_line":"            # CHAP credentials in metadata."},{"line_number":1640,"context_line":"            msg \u003d \"Get a list of all iSCSI VLUNs and see if there is \""},{"line_number":1641,"context_line":"            msg \u003d msg + \"already a CHAP key assigned to one of them\""},{"line_number":1642,"context_line":"            LOG.debug(\"msg: %(msg)s\", {\u0027msg\u0027: msg})"},{"line_number":1643,"context_line":"            chap_exists \u003d False"},{"line_number":1644,"context_line":"            active_vluns \u003d 0"},{"line_number":1645,"context_line":""}],"source_content_type":"text/x-python","patch_set":33,"id":"ccde247f_f3f9e168","line":1642,"range":{"start_line":1640,"start_character":0,"end_line":1642,"end_character":51},"in_reply_to":"6ec2d635_f649e3ca","updated":"2026-02-13 13:41:05.000000000","message":"sorry. did not understand this comment.","commit_id":"ab3f2b880e3ef3df120b14ba2ec768fefa10d6f4"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"1b09e68ba4b46978fb2eb05caec13960e90f5d47","unresolved":true,"context_lines":[{"line_number":1637,"context_line":"            # key assigned to one of them.  Use that CHAP key if present,"},{"line_number":1638,"context_line":"            # otherwise create a new one.  Skip any VLUNs that are missing"},{"line_number":1639,"context_line":"            # CHAP credentials in metadata."},{"line_number":1640,"context_line":"            msg \u003d \"Get a list of all iSCSI VLUNs and see if there is \""},{"line_number":1641,"context_line":"            msg \u003d msg + \"already a CHAP key assigned to one of them\""},{"line_number":1642,"context_line":"            LOG.debug(\"msg: %(msg)s\", {\u0027msg\u0027: msg})"},{"line_number":1643,"context_line":"            chap_exists \u003d False"},{"line_number":1644,"context_line":"            active_vluns \u003d 0"},{"line_number":1645,"context_line":""}],"source_content_type":"text/x-python","patch_set":33,"id":"2cd65db6_99553f3d","line":1642,"range":{"start_line":1640,"start_character":0,"end_line":1642,"end_character":51},"in_reply_to":"ccde247f_f3f9e168","updated":"2026-02-16 20:53:06.000000000","message":"What\u0027s the intent of this message? Does it provide useful info to someone reading the logs?","commit_id":"ab3f2b880e3ef3df120b14ba2ec768fefa10d6f4"},{"author":{"_account_id":10058,"name":"Erlon R. Cruz","email":"erlon.rodrigues.cruz@canonical.com","username":"sombrafam"},"change_message_id":"fff934437451ef1a5db40d2b9482300cb69d36b7","unresolved":true,"context_lines":[{"line_number":1781,"context_line":"        LOG.debug(\"nvme_port_list: %(ports)s\", {\u0027ports\u0027: nvme_port_list})"},{"line_number":1782,"context_line":""},{"line_number":1783,"context_line":"    @volume_utils.trace"},{"line_number":1784,"context_line":"    def initialize_connection(self, volume, connector):"},{"line_number":1785,"context_line":"        \"\"\"Assigns the volume to a server."},{"line_number":1786,"context_line":""},{"line_number":1787,"context_line":"        Steps to export a volume on array:"}],"source_content_type":"text/x-python","patch_set":33,"id":"8f20d4d4_0805c32e","line":1784,"range":{"start_line":1784,"start_character":0,"end_line":1784,"end_character":52},"updated":"2026-02-13 12:21:10.000000000","message":"@coordination.synchronized? Also check terminate connection for the mvme","commit_id":"ab3f2b880e3ef3df120b14ba2ec768fefa10d6f4"},{"author":{"_account_id":29122,"name":"Raghavendra Tilay","email":"raghavendra-uddhav.tilay@hpe.com","username":"raghavendrat"},"change_message_id":"c020d507bd0c82a12dcabfabbc1d208898f808cc","unresolved":false,"context_lines":[{"line_number":1781,"context_line":"        LOG.debug(\"nvme_port_list: %(ports)s\", {\u0027ports\u0027: nvme_port_list})"},{"line_number":1782,"context_line":""},{"line_number":1783,"context_line":"    @volume_utils.trace"},{"line_number":1784,"context_line":"    def initialize_connection(self, volume, connector):"},{"line_number":1785,"context_line":"        \"\"\"Assigns the volume to a server."},{"line_number":1786,"context_line":""},{"line_number":1787,"context_line":"        Steps to export a volume on array:"}],"source_content_type":"text/x-python","patch_set":33,"id":"e22b6aad_dc83c5fb","line":1784,"range":{"start_line":1784,"start_character":0,"end_line":1784,"end_character":52},"in_reply_to":"8f20d4d4_0805c32e","updated":"2026-02-13 13:41:05.000000000","message":"Your comment was on patchset 33. This was addressed in patchset 35","commit_id":"ab3f2b880e3ef3df120b14ba2ec768fefa10d6f4"},{"author":{"_account_id":10058,"name":"Erlon R. Cruz","email":"erlon.rodrigues.cruz@canonical.com","username":"sombrafam"},"change_message_id":"fff934437451ef1a5db40d2b9482300cb69d36b7","unresolved":true,"context_lines":[{"line_number":1807,"context_line":"                LOG.error(\"Host with nqn %(nqn)s not found. \""},{"line_number":1808,"context_line":"                          \"Please create new host with name %(name)s and \""},{"line_number":1809,"context_line":"                          \"nqn %(nqn)s\", {\u0027name\u0027: hostname, \u0027nqn\u0027: host_nqn})"},{"line_number":1810,"context_line":"                raise Exception("},{"line_number":1811,"context_line":"                    # HTTPNotFound"},{"line_number":1812,"context_line":"                    \"Host not found with nqn: %s\" % host_nqn)"},{"line_number":1813,"context_line":"            storage_system_id \u003d common._client_conf[\u0027hpe3par_api_url\u0027]"},{"line_number":1814,"context_line":"            nvme_ips \u003d self.nvme_ips[storage_system_id]"},{"line_number":1815,"context_line":""}],"source_content_type":"text/x-python","patch_set":33,"id":"6c2e693f_65fefc22","line":1812,"range":{"start_line":1810,"start_character":0,"end_line":1812,"end_character":61},"updated":"2026-02-13 12:21:10.000000000","message":"Please check my previous comment regarding bare exceptions raising.","commit_id":"ab3f2b880e3ef3df120b14ba2ec768fefa10d6f4"},{"author":{"_account_id":29122,"name":"Raghavendra Tilay","email":"raghavendra-uddhav.tilay@hpe.com","username":"raghavendrat"},"change_message_id":"c020d507bd0c82a12dcabfabbc1d208898f808cc","unresolved":false,"context_lines":[{"line_number":1807,"context_line":"                LOG.error(\"Host with nqn %(nqn)s not found. \""},{"line_number":1808,"context_line":"                          \"Please create new host with name %(name)s and \""},{"line_number":1809,"context_line":"                          \"nqn %(nqn)s\", {\u0027name\u0027: hostname, \u0027nqn\u0027: host_nqn})"},{"line_number":1810,"context_line":"                raise Exception("},{"line_number":1811,"context_line":"                    # HTTPNotFound"},{"line_number":1812,"context_line":"                    \"Host not found with nqn: %s\" % host_nqn)"},{"line_number":1813,"context_line":"            storage_system_id \u003d common._client_conf[\u0027hpe3par_api_url\u0027]"},{"line_number":1814,"context_line":"            nvme_ips \u003d self.nvme_ips[storage_system_id]"},{"line_number":1815,"context_line":""}],"source_content_type":"text/x-python","patch_set":33,"id":"42ea9fa3_e629bc4e","line":1812,"range":{"start_line":1810,"start_character":0,"end_line":1812,"end_character":61},"in_reply_to":"6c2e693f_65fefc22","updated":"2026-02-13 13:41:05.000000000","message":"Done","commit_id":"ab3f2b880e3ef3df120b14ba2ec768fefa10d6f4"},{"author":{"_account_id":10058,"name":"Erlon R. Cruz","email":"erlon.rodrigues.cruz@canonical.com","username":"sombrafam"},"change_message_id":"fff934437451ef1a5db40d2b9482300cb69d36b7","unresolved":true,"context_lines":[{"line_number":1839,"context_line":"            raise exception.VolumeBackendAPIException(msg)"},{"line_number":1840,"context_line":""},{"line_number":1841,"context_line":"    @volume_utils.trace"},{"line_number":1842,"context_line":"    def terminate_connection(self, volume, connector, **kwargs):"},{"line_number":1843,"context_line":"        \"\"\"Driver entry point to detach a volume from an instance.\"\"\""},{"line_number":1844,"context_line":"        LOG.debug(\"volume id: %(id)s\", {\u0027id\u0027: volume[\u0027id\u0027]})"},{"line_number":1845,"context_line":"        LOG.debug(\"connector: %(conn)s\", {\u0027conn\u0027: connector})"}],"source_content_type":"text/x-python","patch_set":33,"id":"b11fa4b7_21b3ecde","line":1842,"range":{"start_line":1842,"start_character":8,"end_line":1842,"end_character":28},"updated":"2026-02-13 12:21:10.000000000","message":"why you were not handling the force_detach scenario here as well?","commit_id":"ab3f2b880e3ef3df120b14ba2ec768fefa10d6f4"},{"author":{"_account_id":29122,"name":"Raghavendra Tilay","email":"raghavendra-uddhav.tilay@hpe.com","username":"raghavendrat"},"change_message_id":"c020d507bd0c82a12dcabfabbc1d208898f808cc","unresolved":false,"context_lines":[{"line_number":1839,"context_line":"            raise exception.VolumeBackendAPIException(msg)"},{"line_number":1840,"context_line":""},{"line_number":1841,"context_line":"    @volume_utils.trace"},{"line_number":1842,"context_line":"    def terminate_connection(self, volume, connector, **kwargs):"},{"line_number":1843,"context_line":"        \"\"\"Driver entry point to detach a volume from an instance.\"\"\""},{"line_number":1844,"context_line":"        LOG.debug(\"volume id: %(id)s\", {\u0027id\u0027: volume[\u0027id\u0027]})"},{"line_number":1845,"context_line":"        LOG.debug(\"connector: %(conn)s\", {\u0027conn\u0027: connector})"}],"source_content_type":"text/x-python","patch_set":33,"id":"76264f2b_b4cc8bd6","line":1842,"range":{"start_line":1842,"start_character":8,"end_line":1842,"end_character":28},"in_reply_to":"b11fa4b7_21b3ecde","updated":"2026-02-13 13:41:05.000000000","message":"Done. Now handled force_detach scenario","commit_id":"ab3f2b880e3ef3df120b14ba2ec768fefa10d6f4"},{"author":{"_account_id":10058,"name":"Erlon R. Cruz","email":"erlon.rodrigues.cruz@canonical.com","username":"sombrafam"},"change_message_id":"fff934437451ef1a5db40d2b9482300cb69d36b7","unresolved":true,"context_lines":[{"line_number":1841,"context_line":"    @volume_utils.trace"},{"line_number":1842,"context_line":"    def terminate_connection(self, volume, connector, **kwargs):"},{"line_number":1843,"context_line":"        \"\"\"Driver entry point to detach a volume from an instance.\"\"\""},{"line_number":1844,"context_line":"        LOG.debug(\"volume id: %(id)s\", {\u0027id\u0027: volume[\u0027id\u0027]})"},{"line_number":1845,"context_line":"        LOG.debug(\"connector: %(conn)s\", {\u0027conn\u0027: connector})"},{"line_number":1846,"context_line":""},{"line_number":1847,"context_line":"        if self._is_multiattach(volume, connector[\u0027host\u0027]):"},{"line_number":1848,"context_line":"            return"}],"source_content_type":"text/x-python","patch_set":33,"id":"7d91824b_b3e54ce2","line":1845,"range":{"start_line":1844,"start_character":0,"end_line":1845,"end_character":61},"updated":"2026-02-13 12:21:10.000000000","message":"You don\u0027t need 2 log lines to log this information","commit_id":"ab3f2b880e3ef3df120b14ba2ec768fefa10d6f4"},{"author":{"_account_id":29122,"name":"Raghavendra Tilay","email":"raghavendra-uddhav.tilay@hpe.com","username":"raghavendrat"},"change_message_id":"c020d507bd0c82a12dcabfabbc1d208898f808cc","unresolved":false,"context_lines":[{"line_number":1841,"context_line":"    @volume_utils.trace"},{"line_number":1842,"context_line":"    def terminate_connection(self, volume, connector, **kwargs):"},{"line_number":1843,"context_line":"        \"\"\"Driver entry point to detach a volume from an instance.\"\"\""},{"line_number":1844,"context_line":"        LOG.debug(\"volume id: %(id)s\", {\u0027id\u0027: volume[\u0027id\u0027]})"},{"line_number":1845,"context_line":"        LOG.debug(\"connector: %(conn)s\", {\u0027conn\u0027: connector})"},{"line_number":1846,"context_line":""},{"line_number":1847,"context_line":"        if self._is_multiattach(volume, connector[\u0027host\u0027]):"},{"line_number":1848,"context_line":"            return"}],"source_content_type":"text/x-python","patch_set":33,"id":"5e3ec0a0_ec3bc96a","line":1845,"range":{"start_line":1844,"start_character":0,"end_line":1845,"end_character":61},"in_reply_to":"7d91824b_b3e54ce2","updated":"2026-02-13 13:41:05.000000000","message":"Done","commit_id":"ab3f2b880e3ef3df120b14ba2ec768fefa10d6f4"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"79dcc9d0220451ae1b7f13c05d3b48e593d2a962","unresolved":true,"context_lines":[{"line_number":1845,"context_line":"        LOG.debug(\"connector: %(conn)s\", {\u0027conn\u0027: connector})"},{"line_number":1846,"context_line":""},{"line_number":1847,"context_line":"        if self._is_multiattach(volume, connector[\u0027host\u0027]):"},{"line_number":1848,"context_line":"            return"},{"line_number":1849,"context_line":""},{"line_number":1850,"context_line":"        common \u003d self.common"},{"line_number":1851,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":33,"id":"b9ed88d7_9f5641b6","line":1848,"updated":"2026-02-11 16:42:55.000000000","message":"I think the assumption here is that _is_multiattach() returning True means you don\u0027t want to do the teardown flow below.\n\nThis will race if there are two connections and terminate_connection() is called for both at the same time, since this method doesn\u0027t have a synchronized() lock on it.  (Like the FC driver above has.)","commit_id":"ab3f2b880e3ef3df120b14ba2ec768fefa10d6f4"},{"author":{"_account_id":29122,"name":"Raghavendra Tilay","email":"raghavendra-uddhav.tilay@hpe.com","username":"raghavendrat"},"change_message_id":"9b769d349f840078a8e4b9e891c376315400b80e","unresolved":false,"context_lines":[{"line_number":1845,"context_line":"        LOG.debug(\"connector: %(conn)s\", {\u0027conn\u0027: connector})"},{"line_number":1846,"context_line":""},{"line_number":1847,"context_line":"        if self._is_multiattach(volume, connector[\u0027host\u0027]):"},{"line_number":1848,"context_line":"            return"},{"line_number":1849,"context_line":""},{"line_number":1850,"context_line":"        common \u003d self.common"},{"line_number":1851,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":33,"id":"6b41f2fb_d912d980","line":1848,"in_reply_to":"b9ed88d7_9f5641b6","updated":"2026-02-12 09:40:31.000000000","message":"Done","commit_id":"ab3f2b880e3ef3df120b14ba2ec768fefa10d6f4"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"fc065f8600f9db3a9dd4456b22e86d2555c02aa5","unresolved":true,"context_lines":[{"line_number":1,"context_line":"#    (c) Copyright 2025 Hewlett Packard Enterprise Development LP"},{"line_number":2,"context_line":"#    All Rights Reserved."},{"line_number":3,"context_line":"#"},{"line_number":4,"context_line":"#    Copyright 2012 OpenStack Foundation"},{"line_number":5,"context_line":"#"},{"line_number":6,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"},{"line_number":7,"context_line":"#    not use this file except in compliance with the License. You may obtain"}],"source_content_type":"text/x-python","patch_set":52,"id":"11f4785e_694dbd2f","line":4,"range":{"start_line":4,"start_character":0,"end_line":4,"end_character":40},"updated":"2026-04-10 03:56:37.000000000","message":"Please remove, it\u0027s not correct for this file.","commit_id":"484d154949212add2be236ddd370852c97a1c481"},{"author":{"_account_id":29122,"name":"Raghavendra Tilay","email":"raghavendra-uddhav.tilay@hpe.com","username":"raghavendrat"},"change_message_id":"fc31d2a3e47d8cb97893c6f6945fbb3e165fe8fe","unresolved":false,"context_lines":[{"line_number":1,"context_line":"#    (c) Copyright 2025 Hewlett Packard Enterprise Development LP"},{"line_number":2,"context_line":"#    All Rights Reserved."},{"line_number":3,"context_line":"#"},{"line_number":4,"context_line":"#    Copyright 2012 OpenStack Foundation"},{"line_number":5,"context_line":"#"},{"line_number":6,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"},{"line_number":7,"context_line":"#    not use this file except in compliance with the License. You may obtain"}],"source_content_type":"text/x-python","patch_set":52,"id":"8a4c6ec7_09d7d06e","line":4,"range":{"start_line":4,"start_character":0,"end_line":4,"end_character":40},"in_reply_to":"11f4785e_694dbd2f","updated":"2026-04-10 06:17:25.000000000","message":"Done","commit_id":"484d154949212add2be236ddd370852c97a1c481"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"fc065f8600f9db3a9dd4456b22e86d2555c02aa5","unresolved":true,"context_lines":[{"line_number":84,"context_line":"    @staticmethod"},{"line_number":85,"context_line":"    def get_driver_options():"},{"line_number":86,"context_line":"        try:"},{"line_number":87,"context_line":"            return hpeflowkit.CinderClient.get_driver_options()"},{"line_number":88,"context_line":"        except Exception:"},{"line_number":89,"context_line":"            return None"},{"line_number":90,"context_line":""}],"source_content_type":"text/x-python","patch_set":52,"id":"b831e1ea_21a29cb2","line":87,"range":{"start_line":87,"start_character":19,"end_line":87,"end_character":63},"updated":"2026-04-10 03:56:37.000000000","message":"What exactly does this return?  It\u0027s supposed to be a list of the oslo_config options specific to the driver","commit_id":"484d154949212add2be236ddd370852c97a1c481"},{"author":{"_account_id":29122,"name":"Raghavendra Tilay","email":"raghavendra-uddhav.tilay@hpe.com","username":"raghavendrat"},"change_message_id":"fc31d2a3e47d8cb97893c6f6945fbb3e165fe8fe","unresolved":false,"context_lines":[{"line_number":84,"context_line":"    @staticmethod"},{"line_number":85,"context_line":"    def get_driver_options():"},{"line_number":86,"context_line":"        try:"},{"line_number":87,"context_line":"            return hpeflowkit.CinderClient.get_driver_options()"},{"line_number":88,"context_line":"        except Exception:"},{"line_number":89,"context_line":"            return None"},{"line_number":90,"context_line":""}],"source_content_type":"text/x-python","patch_set":52,"id":"1ce5c22b_b7465771","line":87,"range":{"start_line":87,"start_character":19,"end_line":87,"end_character":63},"in_reply_to":"b831e1ea_21a29cb2","updated":"2026-04-10 06:17:25.000000000","message":"It returns below two set of options:\n\n\u0027hpe3par_api_url\u0027, \u0027hpe3par_username\u0027, \u0027hpe3par_password\u0027,\n\u0027hpe3par_cpg\u0027, \u0027hpe3par_debug\u0027, \u0027hpe3par_iscsi_ips\u0027, \u0027hpe3par_nvme_ips\u0027,\n\n+\n\n\u0027san_ip\u0027, \u0027san_login\u0027, \u0027san_password\u0027, \u0027reserved_percentage\u0027,\n\u0027max_over_subscription_ratio\u0027, \u0027replication_device\u0027, \u0027target_port\u0027,\n\u0027san_ssh_port\u0027, \u0027ssh_conn_timeout\u0027, \u0027san_private_key\u0027,\n\u0027target_ip_address\u0027, \u0027unique_fqdn_network\u0027","commit_id":"484d154949212add2be236ddd370852c97a1c481"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"fc065f8600f9db3a9dd4456b22e86d2555c02aa5","unresolved":true,"context_lines":[{"line_number":130,"context_line":"        \"\"\"Sanity check to ensure we have required options set"},{"line_number":131,"context_line":""},{"line_number":132,"context_line":"        \"\"\""},{"line_number":133,"context_line":"        required_flags \u003d [\u0027hpe3par_api_url\u0027, \u0027hpe3par_username\u0027,"},{"line_number":134,"context_line":"                          \u0027hpe3par_password\u0027, \u0027san_ip\u0027, \u0027san_login\u0027,"},{"line_number":135,"context_line":"                          \u0027san_password\u0027]"},{"line_number":136,"context_line":"        self.common.check_flags(self.configuration, required_flags)"}],"source_content_type":"text/x-python","patch_set":52,"id":"b2fcdc6b_2efc1faa","line":133,"updated":"2026-04-10 03:56:37.000000000","message":"where are the hpe3par options defined and where are they being registered?","commit_id":"484d154949212add2be236ddd370852c97a1c481"},{"author":{"_account_id":29122,"name":"Raghavendra Tilay","email":"raghavendra-uddhav.tilay@hpe.com","username":"raghavendrat"},"change_message_id":"fc31d2a3e47d8cb97893c6f6945fbb3e165fe8fe","unresolved":false,"context_lines":[{"line_number":130,"context_line":"        \"\"\"Sanity check to ensure we have required options set"},{"line_number":131,"context_line":""},{"line_number":132,"context_line":"        \"\"\""},{"line_number":133,"context_line":"        required_flags \u003d [\u0027hpe3par_api_url\u0027, \u0027hpe3par_username\u0027,"},{"line_number":134,"context_line":"                          \u0027hpe3par_password\u0027, \u0027san_ip\u0027, \u0027san_login\u0027,"},{"line_number":135,"context_line":"                          \u0027san_password\u0027]"},{"line_number":136,"context_line":"        self.common.check_flags(self.configuration, required_flags)"}],"source_content_type":"text/x-python","patch_set":52,"id":"8f10c7c6_e29be311","line":133,"in_reply_to":"b2fcdc6b_2efc1faa","updated":"2026-04-10 06:17:25.000000000","message":"The hpe3par options are defined and registered from hpe_storage_flowkit_py library.","commit_id":"484d154949212add2be236ddd370852c97a1c481"}],"doc/source/configuration/block-storage/drivers/hpe-alletramp-driver.rst":[{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"fc065f8600f9db3a9dd4456b22e86d2555c02aa5","unresolved":true,"context_lines":[{"line_number":86,"context_line":""},{"line_number":87,"context_line":"* ``hpe3par:compression`` -  volume compression, which can be turned on and"},{"line_number":88,"context_line":"  off (default) by setting the value to ``true`` or ``false`` (default)."},{"line_number":89,"context_line":""},{"line_number":90,"context_line":"* While creating volume on HPE Alletra MP storage system,"},{"line_number":91,"context_line":"  only below two combinations are supported. If any other combination is used,"},{"line_number":92,"context_line":"  then volume is not created."}],"source_content_type":"text/x-rst","patch_set":52,"id":"f74cc493_3d95d632","line":89,"updated":"2026-04-10 03:56:37.000000000","message":"Lines 90-95 are pretty important, you might want to put them in a \"warning\" box.  There\u0027s one in the ceph driver doc if you want to see an example.","commit_id":"484d154949212add2be236ddd370852c97a1c481"},{"author":{"_account_id":29122,"name":"Raghavendra Tilay","email":"raghavendra-uddhav.tilay@hpe.com","username":"raghavendrat"},"change_message_id":"fc31d2a3e47d8cb97893c6f6945fbb3e165fe8fe","unresolved":false,"context_lines":[{"line_number":86,"context_line":""},{"line_number":87,"context_line":"* ``hpe3par:compression`` -  volume compression, which can be turned on and"},{"line_number":88,"context_line":"  off (default) by setting the value to ``true`` or ``false`` (default)."},{"line_number":89,"context_line":""},{"line_number":90,"context_line":"* While creating volume on HPE Alletra MP storage system,"},{"line_number":91,"context_line":"  only below two combinations are supported. If any other combination is used,"},{"line_number":92,"context_line":"  then volume is not created."}],"source_content_type":"text/x-rst","patch_set":52,"id":"63908dbf_27fe1ea5","line":89,"in_reply_to":"f74cc493_3d95d632","updated":"2026-04-10 06:17:25.000000000","message":"Done","commit_id":"484d154949212add2be236ddd370852c97a1c481"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"fc065f8600f9db3a9dd4456b22e86d2555c02aa5","unresolved":true,"context_lines":[{"line_number":92,"context_line":"  then volume is not created."},{"line_number":93,"context_line":""},{"line_number":94,"context_line":"  * thin volume: provisioning \u003d ``thin`` and compression \u003d ``false``"},{"line_number":95,"context_line":"  * deco volume: provisioning \u003d ``dedup`` and compression \u003d ``true``"},{"line_number":96,"context_line":""},{"line_number":97,"context_line":""},{"line_number":98,"context_line":"Configure Alletra MP driver"}],"source_content_type":"text/x-rst","patch_set":52,"id":"70deed71_d0d99e2d","line":95,"range":{"start_line":95,"start_character":4,"end_line":95,"end_character":8},"updated":"2026-04-10 03:56:37.000000000","message":"should this be DECO (all caps)?","commit_id":"484d154949212add2be236ddd370852c97a1c481"},{"author":{"_account_id":29122,"name":"Raghavendra Tilay","email":"raghavendra-uddhav.tilay@hpe.com","username":"raghavendrat"},"change_message_id":"fc31d2a3e47d8cb97893c6f6945fbb3e165fe8fe","unresolved":false,"context_lines":[{"line_number":92,"context_line":"  then volume is not created."},{"line_number":93,"context_line":""},{"line_number":94,"context_line":"  * thin volume: provisioning \u003d ``thin`` and compression \u003d ``false``"},{"line_number":95,"context_line":"  * deco volume: provisioning \u003d ``dedup`` and compression \u003d ``true``"},{"line_number":96,"context_line":""},{"line_number":97,"context_line":""},{"line_number":98,"context_line":"Configure Alletra MP driver"}],"source_content_type":"text/x-rst","patch_set":52,"id":"33bf08fc_e548d95d","line":95,"range":{"start_line":95,"start_character":4,"end_line":95,"end_character":8},"in_reply_to":"70deed71_d0d99e2d","updated":"2026-04-10 06:17:25.000000000","message":"Done","commit_id":"484d154949212add2be236ddd370852c97a1c481"}],"pyproject.toml":[{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"0cffa3d1891df7cb6cae6519037192c9703db4af","unresolved":true,"context_lines":[{"line_number":93,"context_line":"    \"rbd-iscsi-client\u003e\u003d0.1.8\", # Apache-2.0"},{"line_number":94,"context_line":"    \"python-linstor\u003e\u003d1.7.0\", # LGPLv3"},{"line_number":95,"context_line":"    \"psutil\u003e\u003d5.7.2\", # BSD"},{"line_number":96,"context_line":"    \"hpe-storage-flowkit\u003e\u003d0.1\", # Apache-2.0"},{"line_number":97,"context_line":"]"},{"line_number":98,"context_line":"datacore \u003d ["},{"line_number":99,"context_line":"    \"websocket-client\u003e\u003d1.3.2\", # LGPLv2+"}],"source_content_type":"text/x-toml","patch_set":24,"id":"040d6719_f92eae01","line":96,"range":{"start_line":96,"start_character":5,"end_line":96,"end_character":24},"updated":"2026-01-28 14:01:04.000000000","message":"(not critical) I\u0027m wondering if code of this library is available somewhere ? I fond the pypi package but the pypi info does not include any link to its doc or repository.","commit_id":"2c5c26a9f9f7c59d6c748d05a4f45ef3d461447b"},{"author":{"_account_id":29122,"name":"Raghavendra Tilay","email":"raghavendra-uddhav.tilay@hpe.com","username":"raghavendrat"},"change_message_id":"3929db1a92fa2207bb75a9da7e49308c9590b8d5","unresolved":false,"context_lines":[{"line_number":93,"context_line":"    \"rbd-iscsi-client\u003e\u003d0.1.8\", # Apache-2.0"},{"line_number":94,"context_line":"    \"python-linstor\u003e\u003d1.7.0\", # LGPLv3"},{"line_number":95,"context_line":"    \"psutil\u003e\u003d5.7.2\", # BSD"},{"line_number":96,"context_line":"    \"hpe-storage-flowkit\u003e\u003d0.1\", # Apache-2.0"},{"line_number":97,"context_line":"]"},{"line_number":98,"context_line":"datacore \u003d ["},{"line_number":99,"context_line":"    \"websocket-client\u003e\u003d1.3.2\", # LGPLv2+"}],"source_content_type":"text/x-toml","patch_set":24,"id":"82460865_3aac3889","line":96,"range":{"start_line":96,"start_character":5,"end_line":96,"end_character":24},"in_reply_to":"040d6719_f92eae01","updated":"2026-01-29 04:59:06.000000000","message":"we will share after the merge","commit_id":"2c5c26a9f9f7c59d6c748d05a4f45ef3d461447b"}]}
