)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":36725,"name":"Nilesh Thathagar","display_name":"Nilesh Thathagar","email":"nilesh.thathagar@dell.com","username":"NileshT"},"change_message_id":"1c14f918c90a0d0b8a138de59ec2fe4d0be08dc0","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"c0035a9d_74b996ae","updated":"2024-04-19 03:59:41.000000000","message":"Please do a code review","commit_id":"f56c3961a9126ee54f6e8562901a64b4b378d1b6"},{"author":{"_account_id":36725,"name":"Nilesh Thathagar","display_name":"Nilesh Thathagar","email":"nilesh.thathagar@dell.com","username":"NileshT"},"change_message_id":"edf3af7fb38f0ac27af59944db3552631f2b19b8","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"29bc2245_ebc26aa7","updated":"2024-04-22 08:42:09.000000000","message":"run-DellEMC PowerFlex CI","commit_id":"f56c3961a9126ee54f6e8562901a64b4b378d1b6"},{"author":{"_account_id":33807,"name":"Jacob Wang","email":"jacob_wang1@dell.com","username":"jacob0522"},"change_message_id":"4e463f64a5fba5a949466937bab3d1391c13609e","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"32b6dcde_2b6feaf3","updated":"2024-05-09 02:11:37.000000000","message":"run-DellEMC PowerFlex CI","commit_id":"f56c3961a9126ee54f6e8562901a64b4b378d1b6"},{"author":{"_account_id":36725,"name":"Nilesh Thathagar","display_name":"Nilesh Thathagar","email":"nilesh.thathagar@dell.com","username":"NileshT"},"change_message_id":"4a6a7abb4db0048fb097767179bec033e2436dcf","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"d60a8995_2e1ba66f","updated":"2024-04-23 06:40:09.000000000","message":"run-DellEMC_PowerFlex_os-brick","commit_id":"f56c3961a9126ee54f6e8562901a64b4b378d1b6"},{"author":{"_account_id":36725,"name":"Nilesh Thathagar","display_name":"Nilesh Thathagar","email":"nilesh.thathagar@dell.com","username":"NileshT"},"change_message_id":"e68820b838482f9d0a39a4f478299ec20213f3b4","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"814b477c_4964daba","updated":"2024-08-21 16:01:54.000000000","message":"Have updated patch and resolved the comment. Please do a review.","commit_id":"d4b1d58f9ade8549fce94bc1ab0c1d652e20f67c"},{"author":{"_account_id":36725,"name":"Nilesh Thathagar","display_name":"Nilesh Thathagar","email":"nilesh.thathagar@dell.com","username":"NileshT"},"change_message_id":"bc4d4552413d1c97adb32799a1ff10c3660d0d95","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"5ca00933_944a8eb8","updated":"2024-08-01 17:43:52.000000000","message":"Hello,\nzaitcev@kotori.zaitcev.us, rosmaita.fossdev@gmail.com,geguileo@redhat.com,rajatdhasmana@gmail.com.\nplease review this patch.","commit_id":"d4b1d58f9ade8549fce94bc1ab0c1d652e20f67c"},{"author":{"_account_id":36725,"name":"Nilesh Thathagar","display_name":"Nilesh Thathagar","email":"nilesh.thathagar@dell.com","username":"NileshT"},"change_message_id":"5040a259114cabc24041e408e58df9c5592b83eb","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"d53a33a6_1e45d795","updated":"2024-08-19 05:01:09.000000000","message":"Team,\nPlease review the patch.","commit_id":"d4b1d58f9ade8549fce94bc1ab0c1d652e20f67c"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"4d3a0e5fbbbb462e819bb4133207292cbf2edb12","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"e4f84c0b_f2a17ba9","updated":"2024-08-21 14:46:29.000000000","message":"at today\u0027s cinder meeting: this patch was determined release-critical for Dalmatian","commit_id":"d4b1d58f9ade8549fce94bc1ab0c1d652e20f67c"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"3274d3a458b917c26ccc3d95e843e6874cebad67","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"ad1b2e35_fcb8c7ee","updated":"2024-08-21 15:10:59.000000000","message":"few questions in tests and a correction in releasenote","commit_id":"d4b1d58f9ade8549fce94bc1ab0c1d652e20f67c"},{"author":{"_account_id":36725,"name":"Nilesh Thathagar","display_name":"Nilesh Thathagar","email":"nilesh.thathagar@dell.com","username":"NileshT"},"change_message_id":"ff24f1b1bc636076728330206dca85d5e46e22d7","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"032ab44f_0df9bb8a","updated":"2024-08-07 18:11:07.000000000","message":"run-DellEMC PowerFlex CI","commit_id":"d4b1d58f9ade8549fce94bc1ab0c1d652e20f67c"},{"author":{"_account_id":36725,"name":"Nilesh Thathagar","display_name":"Nilesh Thathagar","email":"nilesh.thathagar@dell.com","username":"NileshT"},"change_message_id":"f834dcac1c2b3daa0887f004fd7a25cf839dd1ce","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"cea0011e_5401e2ed","updated":"2024-08-08 18:39:23.000000000","message":"run-DellEMC PowerFlex CI","commit_id":"d4b1d58f9ade8549fce94bc1ab0c1d652e20f67c"},{"author":{"_account_id":36725,"name":"Nilesh Thathagar","display_name":"Nilesh Thathagar","email":"nilesh.thathagar@dell.com","username":"NileshT"},"change_message_id":"647cbd7d86b6ae8ba0c8dfbda596fed38fb9002d","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"d0c8bd4e_28730583","updated":"2024-08-08 04:17:09.000000000","message":"run-DellEMC PowerFlex CI","commit_id":"d4b1d58f9ade8549fce94bc1ab0c1d652e20f67c"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"a5608bdd3244fcb4fe330281c8c3af91420822e6","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"2affaa9a_9132d494","updated":"2024-08-21 16:58:09.000000000","message":"See comments inline.  The code comment is something to think about, the test comment will need to be fixed.  I think the release note is good now.","commit_id":"9496bd242498b94ecdcd587d39cd04e43ed5bfbd"},{"author":{"_account_id":36725,"name":"Nilesh Thathagar","display_name":"Nilesh Thathagar","email":"nilesh.thathagar@dell.com","username":"NileshT"},"change_message_id":"aaf869bb7aa1627be1527d7ecab4197e078d59a3","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"ba6e1a5a_f6d5c618","updated":"2024-08-21 17:57:40.000000000","message":"Have updated test cases according Brian\u0027s right approach.\nPlease do a review.","commit_id":"155ee73df4a1e9ec2d261b01ea2eddf493e2a723"},{"author":{"_account_id":36725,"name":"Nilesh Thathagar","display_name":"Nilesh Thathagar","email":"nilesh.thathagar@dell.com","username":"NileshT"},"change_message_id":"46d97a1b39081fddaf21641b29ddff1003e413e6","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":10,"id":"1749967f_91997125","updated":"2024-08-21 18:24:35.000000000","message":"recheck","commit_id":"e16910728a9492bfb067fe5e89fcd1276352dc5e"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"57346fb0d6bd424b4560e0169ebb5b78ae6a7551","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":11,"id":"411cc86d_cc862483","updated":"2024-08-22 09:43:42.000000000","message":"Dell CI is passing, code, tests and releasenote looks good.","commit_id":"267895ce071abc246f9d5b484734eb3b7b01abfb"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"42a80775433c42248956aaf136659d25a391ce8d","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":11,"id":"7cbe5f17_51b29ef1","updated":"2024-08-21 20:03:48.000000000","message":"LGTM; waiting for CI","commit_id":"267895ce071abc246f9d5b484734eb3b7b01abfb"},{"author":{"_account_id":36725,"name":"Nilesh Thathagar","display_name":"Nilesh Thathagar","email":"nilesh.thathagar@dell.com","username":"NileshT"},"change_message_id":"dc06d0e88216ab9884d8c0c51d1f720ca4601a3e","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":11,"id":"b73ba673_470cbf92","updated":"2024-08-22 04:03:14.000000000","message":"Please see inline comment","commit_id":"267895ce071abc246f9d5b484734eb3b7b01abfb"},{"author":{"_account_id":36725,"name":"Nilesh Thathagar","display_name":"Nilesh Thathagar","email":"nilesh.thathagar@dell.com","username":"NileshT"},"change_message_id":"39a88f53c4896cf862a2f419d53c32298aad6a0f","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":11,"id":"b1a8aca9_ea9ae6ac","updated":"2024-08-22 08:09:23.000000000","message":"PowerFlex CI test cases not getting reflected in Patch.\n\nPlease find result here: https://elab-os-logsrv.delllabs.net/62/916062/11/check/DellEMC_PowerFlex_os-brick/bcce6cf/DellEMC_PowerFlex_os-brick/124/logs/ci_log/testr_results.html","commit_id":"267895ce071abc246f9d5b484734eb3b7b01abfb"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"abd6331cd74291bd7b7f626b058abab655c00e31","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":11,"id":"46279098_80124874","updated":"2024-08-22 03:55:20.000000000","message":"Still have one issue in the test, not sure if it should be a blocker but the test doesn\u0027t seem to be doing any checks related to not retrying if path exists.","commit_id":"267895ce071abc246f9d5b484734eb3b7b01abfb"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"d0bd80924dca70cbcc118a339e60a02988ec76b3","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":11,"id":"d56c82e8_9f998c01","updated":"2024-08-22 03:31:43.000000000","message":"Still need PowerFlex CI to respond, otherwise LGTM.","commit_id":"267895ce071abc246f9d5b484734eb3b7b01abfb"},{"author":{"_account_id":36725,"name":"Nilesh Thathagar","display_name":"Nilesh Thathagar","email":"nilesh.thathagar@dell.com","username":"NileshT"},"change_message_id":"f129fddd0f38f304072a6d08ab99bb6a951b18cd","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":11,"id":"ec6b913a_9d0ea984","updated":"2024-08-22 03:56:58.000000000","message":"Thanks Brian. The CI job sometimes taking time to run.","commit_id":"267895ce071abc246f9d5b484734eb3b7b01abfb"},{"author":{"_account_id":36725,"name":"Nilesh Thathagar","display_name":"Nilesh Thathagar","email":"nilesh.thathagar@dell.com","username":"NileshT"},"change_message_id":"1330470bac05d235cebbdbccd9cf987652b427e7","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":11,"id":"92a32cde_568355a9","updated":"2024-08-22 04:29:35.000000000","message":"Thanks Rajat. I have added some incline comment.\nPlease do a check.","commit_id":"267895ce071abc246f9d5b484734eb3b7b01abfb"},{"author":{"_account_id":36725,"name":"Nilesh Thathagar","display_name":"Nilesh Thathagar","email":"nilesh.thathagar@dell.com","username":"NileshT"},"change_message_id":"21f40f57838af04e5d52d1b123954bd0d1eae12c","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":11,"id":"1b132cdc_3b619f20","updated":"2024-08-22 11:35:52.000000000","message":"merge-check","commit_id":"267895ce071abc246f9d5b484734eb3b7b01abfb"},{"author":{"_account_id":36725,"name":"Nilesh Thathagar","display_name":"Nilesh Thathagar","email":"nilesh.thathagar@dell.com","username":"NileshT"},"change_message_id":"d9fa1e06c031fe9a9b9bfbf951e33c36582c5dda","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":11,"id":"ac0259b7_53420d22","updated":"2024-08-22 11:38:51.000000000","message":"recheck\n\nhttps://review.opendev.org/c/openstack/os-brick/+/916062 has merged.","commit_id":"267895ce071abc246f9d5b484734eb3b7b01abfb"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"cdfd6c3a305b0d62e72cbdc11175e83433ba219b","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":11,"id":"cba5b7cb_3d127f77","updated":"2024-08-21 21:19:48.000000000","message":"recheck openstack-tox-py39 - os_brick.tests.initiator.connectors.test_iscsi.ISCSIConnectorTestCase.test_connect_multipath_volume_no_wwid failed, cannot reproduce locally plus this patch doesn\u0027t touch that code.  very concerning to see unit tests failing, though","commit_id":"267895ce071abc246f9d5b484734eb3b7b01abfb"},{"author":{"_account_id":36725,"name":"Nilesh Thathagar","display_name":"Nilesh Thathagar","email":"nilesh.thathagar@dell.com","username":"NileshT"},"change_message_id":"ac89726580c33ef59d62c29404c469b3fa28b179","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":11,"id":"2460fb44_610c7c11","updated":"2024-08-22 03:18:04.000000000","message":"run-DellEMC PowerFlex CI","commit_id":"267895ce071abc246f9d5b484734eb3b7b01abfb"},{"author":{"_account_id":36725,"name":"Nilesh Thathagar","display_name":"Nilesh Thathagar","email":"nilesh.thathagar@dell.com","username":"NileshT"},"change_message_id":"b5e5f818fb33bb79b3adb33a2e7c99f841551c07","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":11,"id":"86e60307_6f150257","updated":"2024-08-22 05:55:21.000000000","message":"run-DellEMC PowerFlex CI","commit_id":"267895ce071abc246f9d5b484734eb3b7b01abfb"},{"author":{"_account_id":33807,"name":"Jacob Wang","email":"jacob_wang1@dell.com","username":"jacob0522"},"change_message_id":"c2f206b76ccf2ed17ac3b0abe669b0d4ba48b597","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":11,"id":"ccc8da31_7657a01b","updated":"2024-08-22 09:13:58.000000000","message":"run-DellEMC PowerFlex CI","commit_id":"267895ce071abc246f9d5b484734eb3b7b01abfb"}],"os_brick/initiator/connectors/scaleio.py":[{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"3274d3a458b917c26ccc3d95e843e6874cebad67","unresolved":true,"context_lines":[{"line_number":555,"context_line":"        raise exception.BrickException(message\u003dmsg)"},{"line_number":556,"context_line":""},{"line_number":557,"context_line":"    @utils.retry(exception.BrickException,"},{"line_number":558,"context_line":"                 retries\u003d15,"},{"line_number":559,"context_line":"                 backoff_rate\u003d1)"},{"line_number":560,"context_line":"    def _wait_for_remove_volume_path(self, path):"},{"line_number":561,"context_line":"        if os.path.exists(path):"},{"line_number":562,"context_line":"            msg \u003d (_(\"ScaleIO volume %(volume_id)s found \""}],"source_content_type":"text/x-python","patch_set":5,"id":"68f77975_6cb5507f","line":559,"range":{"start_line":558,"start_character":17,"end_line":559,"end_character":31},"updated":"2024-08-21 15:10:59.000000000","message":"so basically we will be waiting 15 seconds and check the device path every second, hope that\u0027s what is expected of this logic and we won\u0027t require additional wait time later.\nIt would also be good to know how much time does the device take to disappear to better understand if we have set a good enough timeout.","commit_id":"d4b1d58f9ade8549fce94bc1ab0c1d652e20f67c"},{"author":{"_account_id":36725,"name":"Nilesh Thathagar","display_name":"Nilesh Thathagar","email":"nilesh.thathagar@dell.com","username":"NileshT"},"change_message_id":"e68820b838482f9d0a39a4f478299ec20213f3b4","unresolved":false,"context_lines":[{"line_number":555,"context_line":"        raise exception.BrickException(message\u003dmsg)"},{"line_number":556,"context_line":""},{"line_number":557,"context_line":"    @utils.retry(exception.BrickException,"},{"line_number":558,"context_line":"                 retries\u003d15,"},{"line_number":559,"context_line":"                 backoff_rate\u003d1)"},{"line_number":560,"context_line":"    def _wait_for_remove_volume_path(self, path):"},{"line_number":561,"context_line":"        if os.path.exists(path):"},{"line_number":562,"context_line":"            msg \u003d (_(\"ScaleIO volume %(volume_id)s found \""}],"source_content_type":"text/x-python","patch_set":5,"id":"cac58946_451a238b","line":559,"range":{"start_line":558,"start_character":17,"end_line":559,"end_character":31},"in_reply_to":"68f77975_6cb5507f","updated":"2024-08-21 16:01:54.000000000","message":"No this will not required additional wait time. It is taking max 5 secs.\nIt is same like _wait_for_volume_path func at line no:161.","commit_id":"d4b1d58f9ade8549fce94bc1ab0c1d652e20f67c"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"a5608bdd3244fcb4fe330281c8c3af91420822e6","unresolved":true,"context_lines":[{"line_number":559,"context_line":"    # the max retries to 15 to make sure we can find the volume."},{"line_number":560,"context_line":"    @utils.retry(exception.BrickException,"},{"line_number":561,"context_line":"                 retries\u003d15,"},{"line_number":562,"context_line":"                 backoff_rate\u003d1)"},{"line_number":563,"context_line":"    def _wait_for_remove_volume_path(self, path):"},{"line_number":564,"context_line":"        if os.path.exists(path):"},{"line_number":565,"context_line":"            msg \u003d (_(\"ScaleIO volume %(volume_id)s found \""}],"source_content_type":"text/x-python","patch_set":6,"id":"ec68dad6_8f6bf3a5","line":562,"updated":"2024-08-21 16:58:09.000000000","message":"I think it\u0027s not really the retries as much as the amount of time, right?  So you\u0027re saying that you usually get the vol within 5 seconds, and you\u0027re leaving as much as 15 sec for a safety buffer.  I wonder whether overriding the exponential backoff is the right move here, though.  The retry takes a float \u0027interval\u0027 that\u0027s used as a multiplier, so you could leave the backoff_rate at its default value of 2 and pass an interval of 0.5 or 0.25, because i imagine that your idea here is that you don\u0027t want to wait any longer than you really have to.  On the other hand, you know the capabilities of your backend better than I do, so if you don\u0027t think there\u0027s any reason to use a backoff, then OK.","commit_id":"9496bd242498b94ecdcd587d39cd04e43ed5bfbd"},{"author":{"_account_id":36725,"name":"Nilesh Thathagar","display_name":"Nilesh Thathagar","email":"nilesh.thathagar@dell.com","username":"NileshT"},"change_message_id":"aaf869bb7aa1627be1527d7ecab4197e078d59a3","unresolved":false,"context_lines":[{"line_number":559,"context_line":"    # the max retries to 15 to make sure we can find the volume."},{"line_number":560,"context_line":"    @utils.retry(exception.BrickException,"},{"line_number":561,"context_line":"                 retries\u003d15,"},{"line_number":562,"context_line":"                 backoff_rate\u003d1)"},{"line_number":563,"context_line":"    def _wait_for_remove_volume_path(self, path):"},{"line_number":564,"context_line":"        if os.path.exists(path):"},{"line_number":565,"context_line":"            msg \u003d (_(\"ScaleIO volume %(volume_id)s found \""}],"source_content_type":"text/x-python","patch_set":6,"id":"0a8964da_50353933","line":562,"in_reply_to":"ec68dad6_8f6bf3a5","updated":"2024-08-21 17:57:40.000000000","message":"Yes we can do that. I am not taking it now. Will definitely consider as a improvement.","commit_id":"9496bd242498b94ecdcd587d39cd04e43ed5bfbd"}],"os_brick/tests/initiator/connectors/test_scaleio.py":[{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"3274d3a458b917c26ccc3d95e843e6874cebad67","unresolved":true,"context_lines":[{"line_number":380,"context_line":"                                                          \u0027emc-vol-\u0027"},{"line_number":381,"context_line":"                                                          \u002700df72815d3b900f\u0027"},{"line_number":382,"context_line":"                                                          \u0027-d4f7289200000024\u0027)"},{"line_number":383,"context_line":"        path_mock.side_effect \u003d False"},{"line_number":384,"context_line":"        self.test_disconnect_volume()"},{"line_number":385,"context_line":"        self.assertEqual(retry_mock.call_count, 5)"}],"source_content_type":"text/x-python","patch_set":5,"id":"c0ee5f9e_e8eb4970","line":383,"range":{"start_line":383,"start_character":8,"end_line":383,"end_character":37},"updated":"2024-08-21 15:10:59.000000000","message":"do we need this? we already set it\u0027s return value to False","commit_id":"d4b1d58f9ade8549fce94bc1ab0c1d652e20f67c"},{"author":{"_account_id":36725,"name":"Nilesh Thathagar","display_name":"Nilesh Thathagar","email":"nilesh.thathagar@dell.com","username":"NileshT"},"change_message_id":"e68820b838482f9d0a39a4f478299ec20213f3b4","unresolved":false,"context_lines":[{"line_number":380,"context_line":"                                                          \u0027emc-vol-\u0027"},{"line_number":381,"context_line":"                                                          \u002700df72815d3b900f\u0027"},{"line_number":382,"context_line":"                                                          \u0027-d4f7289200000024\u0027)"},{"line_number":383,"context_line":"        path_mock.side_effect \u003d False"},{"line_number":384,"context_line":"        self.test_disconnect_volume()"},{"line_number":385,"context_line":"        self.assertEqual(retry_mock.call_count, 5)"}],"source_content_type":"text/x-python","patch_set":5,"id":"d09368ec_3ab8250e","line":383,"range":{"start_line":383,"start_character":8,"end_line":383,"end_character":37},"in_reply_to":"c0ee5f9e_e8eb4970","updated":"2024-08-21 16:01:54.000000000","message":"Removed this part.","commit_id":"d4b1d58f9ade8549fce94bc1ab0c1d652e20f67c"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"3274d3a458b917c26ccc3d95e843e6874cebad67","unresolved":true,"context_lines":[{"line_number":382,"context_line":"                                                          \u0027-d4f7289200000024\u0027)"},{"line_number":383,"context_line":"        path_mock.side_effect \u003d False"},{"line_number":384,"context_line":"        self.test_disconnect_volume()"},{"line_number":385,"context_line":"        self.assertEqual(retry_mock.call_count, 5)"}],"source_content_type":"text/x-python","patch_set":5,"id":"5f2f26e0_b49796fc","line":385,"range":{"start_line":385,"start_character":48,"end_line":385,"end_character":49},"updated":"2024-08-21 15:10:59.000000000","message":"I\u0027m wondering where this 5 retries are coming from? Ideally we should not be retrying even once right?","commit_id":"d4b1d58f9ade8549fce94bc1ab0c1d652e20f67c"},{"author":{"_account_id":36725,"name":"Nilesh Thathagar","display_name":"Nilesh Thathagar","email":"nilesh.thathagar@dell.com","username":"NileshT"},"change_message_id":"e68820b838482f9d0a39a4f478299ec20213f3b4","unresolved":false,"context_lines":[{"line_number":382,"context_line":"                                                          \u0027-d4f7289200000024\u0027)"},{"line_number":383,"context_line":"        path_mock.side_effect \u003d False"},{"line_number":384,"context_line":"        self.test_disconnect_volume()"},{"line_number":385,"context_line":"        self.assertEqual(retry_mock.call_count, 5)"}],"source_content_type":"text/x-python","patch_set":5,"id":"57483878_99344380","line":385,"range":{"start_line":385,"start_character":48,"end_line":385,"end_character":49},"in_reply_to":"5f2f26e0_b49796fc","updated":"2024-08-21 16:01:54.000000000","message":"Yes. That i was thinking but I am getting 5 retries during mock. But it is working fine during the functional testing.","commit_id":"d4b1d58f9ade8549fce94bc1ab0c1d652e20f67c"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"a5608bdd3244fcb4fe330281c8c3af91420822e6","unresolved":true,"context_lines":[{"line_number":381,"context_line":"                                                          \u002700df72815d3b900f\u0027"},{"line_number":382,"context_line":"                                                          \u0027-d4f7289200000024\u0027)"},{"line_number":383,"context_line":"        self.test_disconnect_volume()"},{"line_number":384,"context_line":"        self.assertEqual(retry_mock.call_count, 5)"}],"source_content_type":"text/x-python","patch_set":6,"id":"3aada44b_58b67452","line":384,"range":{"start_line":384,"start_character":25,"end_line":384,"end_character":35},"updated":"2024-08-21 16:58:09.000000000","message":"two issues here (with both tests):\n\n1 - the \u0027retry_mock\u0027 in this function is actually the os.path mock because of the order of parameters (put in a print of the 2 mocks and you\u0027ll see what i mean)\n\n2 - i don\u0027t think you can mock the retry decorator like line 374 ... for both tests, I\u0027m getting 0 for the call count to that mock","commit_id":"9496bd242498b94ecdcd587d39cd04e43ed5bfbd"},{"author":{"_account_id":36725,"name":"Nilesh Thathagar","display_name":"Nilesh Thathagar","email":"nilesh.thathagar@dell.com","username":"NileshT"},"change_message_id":"aaf869bb7aa1627be1527d7ecab4197e078d59a3","unresolved":false,"context_lines":[{"line_number":381,"context_line":"                                                          \u002700df72815d3b900f\u0027"},{"line_number":382,"context_line":"                                                          \u0027-d4f7289200000024\u0027)"},{"line_number":383,"context_line":"        self.test_disconnect_volume()"},{"line_number":384,"context_line":"        self.assertEqual(retry_mock.call_count, 5)"}],"source_content_type":"text/x-python","patch_set":6,"id":"a8871a2d_3cbe88b1","line":384,"range":{"start_line":384,"start_character":25,"end_line":384,"end_character":35},"in_reply_to":"3aada44b_58b67452","updated":"2024-08-21 17:57:40.000000000","message":"Have changed test cases.","commit_id":"9496bd242498b94ecdcd587d39cd04e43ed5bfbd"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"f6787310f26beb8245e9dcbf1e31e701a9c72dc9","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":6,"id":"543c8736_a0eb0e06","line":385,"updated":"2024-08-21 17:27:12.000000000","message":"looked at this some more ... i think what you want to do is make sure that you are passing the correct arguments to the retry decorator.  The decorator itself is tested elsewhere, and we can assume that tenacity has its own tests to make sure it retries correctly.  So you could rewrite the first test like this:\n\n```\n    import tenacity\n\n    @mock.patch(\u0027tenacity.wait_exponential\u0027)\n    @mock.patch.object(os.path, \u0027exists\u0027, return_value\u003dTrue)\n    def test_disconnect_volume_wait_for_path_not_removed(self,\n                                                         path_mock, wait_mock):\n        self.fake_connection_properties[\u0027device_path\u0027] \u003d (\u0027/dev/\u0027\n                                                          \u0027disk/by-id/\u0027\n                                                          \u0027emc-vol-\u0027\n                                                          \u002700df72815d3b900f\u0027\n                                                          \u0027-d4f7289200000023\u0027)\n        self.assertRaises(exception.BrickException,\n                          self.test_disconnect_volume)\n        wait_mock.assert_called_once_with(multiplier\u003d1, min\u003d0, exp_base\u003d1)\n```\n\nSo the key thing is that wait_exponential is being called, and it\u0027s being passed the non-default value for exp_base, i.e., what you are specifying for backoff_rate at line 562 in scaleio.py.  I think that\u0027s probably adequate for these 2 tests.","commit_id":"9496bd242498b94ecdcd587d39cd04e43ed5bfbd"},{"author":{"_account_id":36725,"name":"Nilesh Thathagar","display_name":"Nilesh Thathagar","email":"nilesh.thathagar@dell.com","username":"NileshT"},"change_message_id":"aaf869bb7aa1627be1527d7ecab4197e078d59a3","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"fcd207f4_85e974bf","line":385,"in_reply_to":"543c8736_a0eb0e06","updated":"2024-08-21 17:57:40.000000000","message":"Thanks Brian for test cases update. Have changed accordingly.","commit_id":"9496bd242498b94ecdcd587d39cd04e43ed5bfbd"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"abd6331cd74291bd7b7f626b058abab655c00e31","unresolved":true,"context_lines":[{"line_number":383,"context_line":"                                                          \u002700df72815d3b900f\u0027"},{"line_number":384,"context_line":"                                                          \u0027-d4f7289200000023\u0027)"},{"line_number":385,"context_line":"        self.test_disconnect_volume()"},{"line_number":386,"context_line":"        wait_mock.assert_called_once_with(multiplier\u003d1, min\u003d0, exp_base\u003d1)"}],"source_content_type":"text/x-python","patch_set":11,"id":"eba92333_2bd13b7d","line":386,"range":{"start_line":386,"start_character":8,"end_line":386,"end_character":74},"updated":"2024-08-22 03:55:20.000000000","message":"I don\u0027t understand what are we checking here with this mock. The purpose of this test should be that we don\u0027t retry if the path exists which i don\u0027t see being validated here.\nIf it\u0027s complicated to check with the retry mechanism, maybe add another assert that os.path.exists is only called once?\n\n    device_path \u003d \u0027/dev/disk/by-id/emc-vol-00df72815d3b900f-d4f7289200000023\u0027\n    self.fake_connection_properties[\u0027device_path\u0027] \u003d device_path\n    ...\n    path_mock.assert_called_once_with(device_path)","commit_id":"267895ce071abc246f9d5b484734eb3b7b01abfb"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"42a80775433c42248956aaf136659d25a391ce8d","unresolved":true,"context_lines":[{"line_number":383,"context_line":"                                                          \u002700df72815d3b900f\u0027"},{"line_number":384,"context_line":"                                                          \u0027-d4f7289200000023\u0027)"},{"line_number":385,"context_line":"        self.test_disconnect_volume()"},{"line_number":386,"context_line":"        wait_mock.assert_called_once_with(multiplier\u003d1, min\u003d0, exp_base\u003d1)"}],"source_content_type":"text/x-python","patch_set":11,"id":"1cdb7e85_13a7b896","line":386,"range":{"start_line":386,"start_character":8,"end_line":386,"end_character":17},"updated":"2024-08-21 20:03:48.000000000","message":"This is being called when the decorator is applied:\nhttps://opendev.org/openstack/os-brick/src/commit/f68e16ff7232e3ac89f1dd3678eb12c733e1e3b6/os_brick/utils.py#L95\n\nThat\u0027s why assert_not_called doesn\u0027t work here, even though you don\u0027t expect any retries to happen.  (And that\u0027s why you can use assert_called_once_with at line 373.)","commit_id":"267895ce071abc246f9d5b484734eb3b7b01abfb"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"a1585beac8ff0a2458ed0ce21e187d7f3ad9a288","unresolved":false,"context_lines":[{"line_number":383,"context_line":"                                                          \u002700df72815d3b900f\u0027"},{"line_number":384,"context_line":"                                                          \u0027-d4f7289200000023\u0027)"},{"line_number":385,"context_line":"        self.test_disconnect_volume()"},{"line_number":386,"context_line":"        wait_mock.assert_called_once_with(multiplier\u003d1, min\u003d0, exp_base\u003d1)"}],"source_content_type":"text/x-python","patch_set":11,"id":"1f727181_e92150d2","line":386,"range":{"start_line":386,"start_character":8,"end_line":386,"end_character":74},"in_reply_to":"d43ac9d5_9ca84972","updated":"2024-08-22 09:43:15.000000000","message":"I\u0027ve found out where the os.path.exists is being called from but will require some refinement to address that.\nI really dislike this particular test since we are not confirming anything here but I won\u0027t block the main code for it to get into the release.","commit_id":"267895ce071abc246f9d5b484734eb3b7b01abfb"},{"author":{"_account_id":36725,"name":"Nilesh Thathagar","display_name":"Nilesh Thathagar","email":"nilesh.thathagar@dell.com","username":"NileshT"},"change_message_id":"cca621a392d5559c8752d2b6de3a631471ccd2bd","unresolved":false,"context_lines":[{"line_number":383,"context_line":"                                                          \u002700df72815d3b900f\u0027"},{"line_number":384,"context_line":"                                                          \u0027-d4f7289200000023\u0027)"},{"line_number":385,"context_line":"        self.test_disconnect_volume()"},{"line_number":386,"context_line":"        wait_mock.assert_called_once_with(multiplier\u003d1, min\u003d0, exp_base\u003d1)"}],"source_content_type":"text/x-python","patch_set":11,"id":"f279824c_6f9dc588","line":386,"range":{"start_line":386,"start_character":8,"end_line":386,"end_character":74},"in_reply_to":"e3143990_9a23bb66","updated":"2024-08-22 04:17:41.000000000","message":"This is getting called when disconnect so I think we are good to go.\n\n\n ``AssertionError: Expected \u0027exists\u0027 to have been called once. Called 5 times.\nCalls: [call(b\u0027/tmp/tmpiy8c22ro/tmpnppc3p4p\u0027),\n call(b\u0027/tmp/tmpiy8c22ro\u0027),\n call(b\u0027/tmp\u0027),\n call(b\u0027/\u0027),\n call(\u0027/dev/disk/by-id/emc-vol-00df72815d3b900f-d4f7289200000023\u0027)].``","commit_id":"267895ce071abc246f9d5b484734eb3b7b01abfb"},{"author":{"_account_id":36725,"name":"Nilesh Thathagar","display_name":"Nilesh Thathagar","email":"nilesh.thathagar@dell.com","username":"NileshT"},"change_message_id":"dc06d0e88216ab9884d8c0c51d1f720ca4601a3e","unresolved":false,"context_lines":[{"line_number":383,"context_line":"                                                          \u002700df72815d3b900f\u0027"},{"line_number":384,"context_line":"                                                          \u0027-d4f7289200000023\u0027)"},{"line_number":385,"context_line":"        self.test_disconnect_volume()"},{"line_number":386,"context_line":"        wait_mock.assert_called_once_with(multiplier\u003d1, min\u003d0, exp_base\u003d1)"}],"source_content_type":"text/x-python","patch_set":11,"id":"e3143990_9a23bb66","line":386,"range":{"start_line":386,"start_character":8,"end_line":386,"end_character":74},"in_reply_to":"eba92333_2bd13b7d","updated":"2024-08-22 04:03:14.000000000","message":"Yes same i am thinking but when I check path_mock.assert_called_once(). It is being called 5 times. So test case is getting failed.","commit_id":"267895ce071abc246f9d5b484734eb3b7b01abfb"},{"author":{"_account_id":36725,"name":"Nilesh Thathagar","display_name":"Nilesh Thathagar","email":"nilesh.thathagar@dell.com","username":"NileshT"},"change_message_id":"1330470bac05d235cebbdbccd9cf987652b427e7","unresolved":false,"context_lines":[{"line_number":383,"context_line":"                                                          \u002700df72815d3b900f\u0027"},{"line_number":384,"context_line":"                                                          \u0027-d4f7289200000023\u0027)"},{"line_number":385,"context_line":"        self.test_disconnect_volume()"},{"line_number":386,"context_line":"        wait_mock.assert_called_once_with(multiplier\u003d1, min\u003d0, exp_base\u003d1)"}],"source_content_type":"text/x-python","patch_set":11,"id":"d43ac9d5_9ca84972","line":386,"range":{"start_line":386,"start_character":8,"end_line":386,"end_character":74},"in_reply_to":"f279824c_6f9dc588","updated":"2024-08-22 04:29:35.000000000","message":"I think os.path.exist is being used in some other functions those are getting call.","commit_id":"267895ce071abc246f9d5b484734eb3b7b01abfb"}],"releasenotes/notes/bug-2034685-dell-powerflex-scaleio-disconnect-volume-c69017cc120306df.yaml":[{"author":{"_account_id":35759,"name":"Yian Zong","display_name":"Yian Zong","email":"yian.zong@dell.com","username":"yianzong"},"change_message_id":"f875bb11c93df7c0559f578319faf2739b7a3442","unresolved":true,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"fixes:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    PowerFlex driver `Bug #2034685"},{"line_number":5,"context_line":"    \u003chttps://bugs.launchpad.net/os-brick/+bug/2034685\u003e`_: When"},{"line_number":6,"context_line":"    performing a hard reboot of instances, the system"},{"line_number":7,"context_line":"    initiates a sequence: first, it invokes the disconnect volume"}],"source_content_type":"text/x-yaml","patch_set":4,"id":"2e21a134_2b3c1606","line":4,"range":{"start_line":4,"start_character":4,"end_line":4,"end_character":20},"updated":"2024-07-05 09:19:40.000000000","message":"nit: Dell PowerFlex driver","commit_id":"f56c3961a9126ee54f6e8562901a64b4b378d1b6"},{"author":{"_account_id":36725,"name":"Nilesh Thathagar","display_name":"Nilesh Thathagar","email":"nilesh.thathagar@dell.com","username":"NileshT"},"change_message_id":"95828e3b62a058f8e4445e2541299c4ada02f8ca","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"fixes:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    PowerFlex driver `Bug #2034685"},{"line_number":5,"context_line":"    \u003chttps://bugs.launchpad.net/os-brick/+bug/2034685\u003e`_: When"},{"line_number":6,"context_line":"    performing a hard reboot of instances, the system"},{"line_number":7,"context_line":"    initiates a sequence: first, it invokes the disconnect volume"}],"source_content_type":"text/x-yaml","patch_set":4,"id":"9a7459a4_08dbb3b5","line":4,"range":{"start_line":4,"start_character":4,"end_line":4,"end_character":20},"in_reply_to":"2e21a134_2b3c1606","updated":"2024-07-08 09:30:53.000000000","message":"Done","commit_id":"f56c3961a9126ee54f6e8562901a64b4b378d1b6"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"3274d3a458b917c26ccc3d95e843e6874cebad67","unresolved":true,"context_lines":[{"line_number":2,"context_line":"fixes:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    Dell PowerFlex driver `Bug #2034685"},{"line_number":5,"context_line":"    \u003chttps://bugs.launchpad.net/os-brick/+bug/2034685\u003e`_: When"},{"line_number":6,"context_line":"    performing a hard reboot of instances, the system"},{"line_number":7,"context_line":"    initiates a sequence: first, it invokes the disconnect volume"},{"line_number":8,"context_line":"    function, followed by the connect volume function."},{"line_number":9,"context_line":"    However, after the disconnect volume function API call executes,"},{"line_number":10,"context_line":"    the previous volume links persist in /dev/disk/by-id/ for"},{"line_number":11,"context_line":"    approximately 4-5 seconds."},{"line_number":12,"context_line":"    These lingering links pose a challenge during the execution"},{"line_number":13,"context_line":"    of the connect volume function, causing disruptions."},{"line_number":14,"context_line":"    To address this issue, a retry function has been incorporated"},{"line_number":15,"context_line":"    to verify the volume\u0027s old link path following the disconnect"},{"line_number":16,"context_line":"    volume function API call. Once the old link is successfully"},{"line_number":17,"context_line":"    removed, the connect volume function is then invoked."}],"source_content_type":"text/x-yaml","patch_set":5,"id":"1d2db733_91fee3dc","line":17,"range":{"start_line":5,"start_character":58,"end_line":17,"end_character":57},"updated":"2024-08-21 15:10:59.000000000","message":"I don\u0027t think we should be describing the whole scenario in the releasenote, something like this should be good\n\n``Added a retry mechanism to check if the disconnected device is removed from the host ensuring that subsequent connections succeed.``","commit_id":"d4b1d58f9ade8549fce94bc1ab0c1d652e20f67c"},{"author":{"_account_id":36725,"name":"Nilesh Thathagar","display_name":"Nilesh Thathagar","email":"nilesh.thathagar@dell.com","username":"NileshT"},"change_message_id":"e68820b838482f9d0a39a4f478299ec20213f3b4","unresolved":false,"context_lines":[{"line_number":2,"context_line":"fixes:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    Dell PowerFlex driver `Bug #2034685"},{"line_number":5,"context_line":"    \u003chttps://bugs.launchpad.net/os-brick/+bug/2034685\u003e`_: When"},{"line_number":6,"context_line":"    performing a hard reboot of instances, the system"},{"line_number":7,"context_line":"    initiates a sequence: first, it invokes the disconnect volume"},{"line_number":8,"context_line":"    function, followed by the connect volume function."},{"line_number":9,"context_line":"    However, after the disconnect volume function API call executes,"},{"line_number":10,"context_line":"    the previous volume links persist in /dev/disk/by-id/ for"},{"line_number":11,"context_line":"    approximately 4-5 seconds."},{"line_number":12,"context_line":"    These lingering links pose a challenge during the execution"},{"line_number":13,"context_line":"    of the connect volume function, causing disruptions."},{"line_number":14,"context_line":"    To address this issue, a retry function has been incorporated"},{"line_number":15,"context_line":"    to verify the volume\u0027s old link path following the disconnect"},{"line_number":16,"context_line":"    volume function API call. Once the old link is successfully"},{"line_number":17,"context_line":"    removed, the connect volume function is then invoked."}],"source_content_type":"text/x-yaml","patch_set":5,"id":"5b7e7bfc_e0bc6cfc","line":17,"range":{"start_line":5,"start_character":58,"end_line":17,"end_character":57},"in_reply_to":"1d2db733_91fee3dc","updated":"2024-08-21 16:01:54.000000000","message":"Changed.","commit_id":"d4b1d58f9ade8549fce94bc1ab0c1d652e20f67c"}]}
