)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"748d7e8db6807c40263c6ffa4686f68851fdb816","unresolved":true,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"[Pure Storage] Fix issue with loss of replicated array"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"When an array on either side of a replicated configuration looses"},{"line_number":10,"context_line":"connectivity to Cinder this can cause the driver to stop working."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"This patch resolves that issue by validating all arrays in a"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":11,"id":"b0af8e96_0538e5a8","line":9,"range":{"start_line":9,"start_character":59,"end_line":9,"end_character":65},"updated":"2023-01-20 23:06:29.000000000","message":"nit: loses","commit_id":"234702f2e756919bee992e63d93ebc80457778ca"},{"author":{"_account_id":13425,"name":"Simon Dodsley","email":"simon@purestorage.com","username":"sdodsley"},"change_message_id":"e2094a14e7ec5011cf29785dc6e64e2f1ccf85d0","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"[Pure Storage] Fix issue with loss of replicated array"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"When an array on either side of a replicated configuration looses"},{"line_number":10,"context_line":"connectivity to Cinder this can cause the driver to stop working."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"This patch resolves that issue by validating all arrays in a"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":11,"id":"e073eb17_6888b529","line":9,"range":{"start_line":9,"start_character":59,"end_line":9,"end_character":65},"in_reply_to":"b0af8e96_0538e5a8","updated":"2023-01-21 00:19:01.000000000","message":"Done","commit_id":"234702f2e756919bee992e63d93ebc80457778ca"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"87890d4b714a56718226869b2c4e455881d6f3bb","unresolved":true,"context_lines":[{"line_number":13,"context_line":"replicated pair exist and raising a warning if that is not"},{"line_number":14,"context_line":"the case."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"Closes Bug: #1969784"},{"line_number":17,"context_line":"Co-Authored-By: Keerthivasan \u003cksuresh@purestorage.com\u003e"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"Change-Id: I3256875a33a30560b834b4c8a0c6bb1b5edf69fa"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":13,"id":"ac5e5411_bb40db51","line":16,"range":{"start_line":16,"start_character":0,"end_line":16,"end_character":10},"updated":"2023-02-01 10:41:29.000000000","message":"nit: Closes-Bug","commit_id":"deeee2b363c4f6acf0e5cfaa6b2b04b6eb6c8362"}],"/PATCHSET_LEVEL":[{"author":{"_account_id":20813,"name":"Sofia Enriquez","email":"lsofia.enriquez@gmail.com","username":"enriquetaso"},"change_message_id":"98c74c33faf99c75935cbfdfa69bdde6073f216b","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":8,"id":"a3d8d6f9_6586962a","updated":"2022-12-02 15:44:52.000000000","message":"Please check the Zuul logs, a unit test is failling and should be update \n\n```\n{4} cinder.tests.unit.volume.drivers.test_pure.PureBaseVolumeDriverTestCase.test_do_setup_replicated [0.037949s] ... FAILED\n\nCaptured traceback:\n~~~~~~~~~~~~~~~~~~~\n    Traceback (most recent call last):\n\n      File \"/usr/lib/python3.10/unittest/mock.py\", line 1369, in patched\n    return func(*newargs, **newkeywargs)\n\n      File \"/home/zuul/src/opendev.org/openstack/cinder/cinder/tests/unit/volume/drivers/test_pure.py\", line 1019, in test_do_setup_replicated\n    mock_setup_repl_pgroups.assert_has_calls(calls)\n\n      File \"/usr/lib/python3.10/unittest/mock.py\", line 956, in assert_has_calls\n    raise AssertionError(\n\n    AssertionError: Calls not found.\nExpected: [call(\u003cMock name\u003d\u0027mock()\u0027 id\u003d\u0027140509222086032\u0027\u003e, [], \u0027cinder-group\u0027, None, None)]\n```","commit_id":"5d219b01f1d4c894389839069d14eaed9db547a5"},{"author":{"_account_id":13425,"name":"Simon Dodsley","email":"simon@purestorage.com","username":"sdodsley"},"change_message_id":"9c0e4586384c4af1d71eb57a6b901ffa83cdb231","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":8,"id":"b0e85960_4ab85f2e","updated":"2022-12-02 14:56:48.000000000","message":"recheck","commit_id":"5d219b01f1d4c894389839069d14eaed9db547a5"},{"author":{"_account_id":13425,"name":"Simon Dodsley","email":"simon@purestorage.com","username":"sdodsley"},"change_message_id":"a5116926f959461b1c23efd1285b7d1e578fd99d","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":8,"id":"26ffad30_4a3a2107","updated":"2022-12-01 21:59:15.000000000","message":"run Pure Storage CI","commit_id":"5d219b01f1d4c894389839069d14eaed9db547a5"},{"author":{"_account_id":13425,"name":"Simon Dodsley","email":"simon@purestorage.com","username":"sdodsley"},"change_message_id":"95b16e88aa0e36c425d90451c6decfceeac564e4","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":8,"id":"60cd0508_df3a43d3","in_reply_to":"a3d8d6f9_6586962a","updated":"2022-12-02 16:31:43.000000000","message":"Yep - we are are working on it","commit_id":"5d219b01f1d4c894389839069d14eaed9db547a5"},{"author":{"_account_id":35075,"name":"Alexander Deiter","email":"adeiter@infinidat.com","username":"adeiter"},"change_message_id":"53527f4dee4e33ded30d322b3909b22c1b90dd76","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":9,"id":"5796c119_15b55166","updated":"2022-12-19 14:01:58.000000000","message":"LGTM - thank you!","commit_id":"4ec926477a6f56e1c2d6019e1479bbd0b8c4551d"},{"author":{"_account_id":7198,"name":"Jay Bryant","email":"jungleboyj@electronicjungle.net","username":"jsbryant"},"change_message_id":"d39c32248593aa310ab8e6f9c141e08030b0db87","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":9,"id":"a2a2ade9_2c9ac7fb","updated":"2022-12-14 15:41:10.000000000","message":"Passing CI and the code change looks good to me.","commit_id":"4ec926477a6f56e1c2d6019e1479bbd0b8c4551d"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"cab3d7279361ab875061d0e4283e422c7774dcba","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":9,"id":"6e65ed76_1302d135","updated":"2022-12-26 04:40:23.000000000","message":"one comment inline","commit_id":"4ec926477a6f56e1c2d6019e1479bbd0b8c4551d"},{"author":{"_account_id":13425,"name":"Simon Dodsley","email":"simon@purestorage.com","username":"sdodsley"},"change_message_id":"a01a5132cf2a52a80d42219264e54993f7e484e7","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":9,"id":"082f2793_f15e561e","updated":"2022-12-05 13:24:23.000000000","message":"run Pure Storage CI","commit_id":"4ec926477a6f56e1c2d6019e1479bbd0b8c4551d"},{"author":{"_account_id":34148,"name":"Aboubacar Diare","display_name":"abdi","email":"diare@hpe.com","username":"abdi"},"change_message_id":"2e25d105aecb2d1d0e1a5b16920d12f0770d9eef","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":9,"id":"f3be9176_98b59e38","updated":"2022-12-06 23:38:26.000000000","message":"run-HPE XP Storage CI","commit_id":"4ec926477a6f56e1c2d6019e1479bbd0b8c4551d"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"febe1ef80e479716a8bcd7d6c39f1b4b3b4826d1","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":10,"id":"6a7812a2_e28ccfe1","updated":"2022-12-27 06:41:46.000000000","message":"one issue noted with tests","commit_id":"9a80be0bba8c190907af6935a468a70774c2dd72"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"748d7e8db6807c40263c6ffa4686f68851fdb816","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":11,"id":"7ab87b9e_4d2faa46","updated":"2023-01-20 23:06:29.000000000","message":"Code and tests look good; a few nits and a question about one of the tests noted inline.  -1 to get your attention.  Sorry this has been sitting so long.","commit_id":"234702f2e756919bee992e63d93ebc80457778ca"},{"author":{"_account_id":35075,"name":"Alexander Deiter","email":"adeiter@infinidat.com","username":"adeiter"},"change_message_id":"3ffb1ea698e91f4e9b0d6179f6a747c91277b86f","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":11,"id":"e6b0b6ed_8c2cdc92","updated":"2023-01-03 13:00:29.000000000","message":"LGTM - thank you!","commit_id":"234702f2e756919bee992e63d93ebc80457778ca"},{"author":{"_account_id":13425,"name":"Simon Dodsley","email":"simon@purestorage.com","username":"sdodsley"},"change_message_id":"c3c64adb451e17130b91c2b183fa38f3c167be6a","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":11,"id":"06f2ea95_fb1aad9b","updated":"2022-12-27 21:51:09.000000000","message":"recheck","commit_id":"234702f2e756919bee992e63d93ebc80457778ca"},{"author":{"_account_id":13425,"name":"Simon Dodsley","email":"simon@purestorage.com","username":"sdodsley"},"change_message_id":"4b7376514c605bd1cb46d6d2891d7b914b9ebd8e","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":11,"id":"3ae10bf7_12f6854a","updated":"2022-12-27 19:21:29.000000000","message":"recheck","commit_id":"234702f2e756919bee992e63d93ebc80457778ca"},{"author":{"_account_id":13425,"name":"Simon Dodsley","email":"simon@purestorage.com","username":"sdodsley"},"change_message_id":"b964f0ab35f6701fb89a88dee6d29c6428a2d680","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":11,"id":"1665641e_81dbdd0e","updated":"2023-01-19 18:47:53.000000000","message":"run Pure Storage CI","commit_id":"234702f2e756919bee992e63d93ebc80457778ca"},{"author":{"_account_id":13425,"name":"Simon Dodsley","email":"simon@purestorage.com","username":"sdodsley"},"change_message_id":"8c370274661c23ff1205cf03108fa2452e199fc2","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":11,"id":"51364d33_0fe7023b","updated":"2022-12-29 17:42:01.000000000","message":"run Pure Storage CI","commit_id":"234702f2e756919bee992e63d93ebc80457778ca"},{"author":{"_account_id":13425,"name":"Simon Dodsley","email":"simon@purestorage.com","username":"sdodsley"},"change_message_id":"f8b1232431b5413db8177628a68acebea24c178a","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":11,"id":"836faf8b_17e5c3a0","updated":"2022-12-28 04:19:24.000000000","message":"run Pure Storage CI","commit_id":"234702f2e756919bee992e63d93ebc80457778ca"},{"author":{"_account_id":13425,"name":"Simon Dodsley","email":"simon@purestorage.com","username":"sdodsley"},"change_message_id":"6ac9fdc73f3c4f4e61e41d1fa1bd8e2f91239e96","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":11,"id":"965d702f_386d75c4","updated":"2022-12-28 19:01:12.000000000","message":"run Pure Storage CI","commit_id":"234702f2e756919bee992e63d93ebc80457778ca"},{"author":{"_account_id":13425,"name":"Simon Dodsley","email":"simon@purestorage.com","username":"sdodsley"},"change_message_id":"c33146c8a9d9ffd13b3b8addac81cde2e023b768","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":11,"id":"ef8873e1_aab9998e","updated":"2022-12-28 15:15:27.000000000","message":"run Pure Storage CI","commit_id":"234702f2e756919bee992e63d93ebc80457778ca"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"87890d4b714a56718226869b2c4e455881d6f3bb","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":13,"id":"fbc47c21_58c4c36d","updated":"2023-02-01 10:41:29.000000000","message":"Code changes looks good,\nonce concern i have is the FC CI is failing and set as non-voting, any reason for that?\npure-devstack-cinder-tempest-fc-aio http://openstack-logs.purestorage.com/60/855060/13/thirdparty-check/pure-devstack-cinder-tempest-fc-aio/421180d/ : FAILURE in 1h 55m 31s (non-voting)","commit_id":"deeee2b363c4f6acf0e5cfaa6b2b04b6eb6c8362"},{"author":{"_account_id":13425,"name":"Simon Dodsley","email":"simon@purestorage.com","username":"sdodsley"},"change_message_id":"3491cde55e7f100adcfdc5246e2db576b15263df","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":13,"id":"45bdb9ac_ab3504b5","updated":"2023-02-01 13:41:51.000000000","message":"FC tests are marked as non-voting due to an internal hardware issue in our CI. This patch has previously passed the FC CI. \nWe have retested on FC internally and confirmed the patch is still OK.","commit_id":"deeee2b363c4f6acf0e5cfaa6b2b04b6eb6c8362"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"b67bdf411532a7d2788678736986ee2a9e6ca402","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":13,"id":"f0d517ba_8141d48b","updated":"2023-02-01 13:43:35.000000000","message":"LGTM","commit_id":"deeee2b363c4f6acf0e5cfaa6b2b04b6eb6c8362"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"cd22d7a639ee931a06c8b8759bb2d8c409ae5f85","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":13,"id":"23b6213a_2102a9e8","updated":"2023-01-24 22:13:26.000000000","message":"My concerns have been addressed, and the CI is passing.","commit_id":"deeee2b363c4f6acf0e5cfaa6b2b04b6eb6c8362"},{"author":{"_account_id":13425,"name":"Simon Dodsley","email":"simon@purestorage.com","username":"sdodsley"},"change_message_id":"5ad94ddbef626a0f9b7982cf7aa43e1c638b6157","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":13,"id":"2ef7ffe2_6f23b9f9","updated":"2023-01-21 04:48:15.000000000","message":"run Pure Storage CI","commit_id":"deeee2b363c4f6acf0e5cfaa6b2b04b6eb6c8362"},{"author":{"_account_id":13425,"name":"Simon Dodsley","email":"simon@purestorage.com","username":"sdodsley"},"change_message_id":"264b06d81796c4d4cb59d950305af515003e9353","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":13,"id":"32ddabc0_ed5ea298","updated":"2023-01-23 22:24:28.000000000","message":"run Pure Storage CI","commit_id":"deeee2b363c4f6acf0e5cfaa6b2b04b6eb6c8362"},{"author":{"_account_id":13425,"name":"Simon Dodsley","email":"simon@purestorage.com","username":"sdodsley"},"change_message_id":"97d5541588e1ea8fd69ff53a1af3057493dfe2d8","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":13,"id":"6bdaee72_b5c27f88","updated":"2023-01-21 20:17:42.000000000","message":"run Pure Storage CI","commit_id":"deeee2b363c4f6acf0e5cfaa6b2b04b6eb6c8362"},{"author":{"_account_id":13425,"name":"Simon Dodsley","email":"simon@purestorage.com","username":"sdodsley"},"change_message_id":"0289e5e80c003c2d6c0d2e016ab9c6e34bcdd7db","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":13,"id":"7392fa97_83fc28c2","updated":"2023-01-21 14:44:50.000000000","message":"run Pure Storage CI","commit_id":"deeee2b363c4f6acf0e5cfaa6b2b04b6eb6c8362"},{"author":{"_account_id":13425,"name":"Simon Dodsley","email":"simon@purestorage.com","username":"sdodsley"},"change_message_id":"b2c84da9db9214a388be55c9f05c1058e9b96db9","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":13,"id":"c27dfb0f_1fce6db5","updated":"2023-01-24 20:12:30.000000000","message":"run Pure Storage CI","commit_id":"deeee2b363c4f6acf0e5cfaa6b2b04b6eb6c8362"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"b67bdf411532a7d2788678736986ee2a9e6ca402","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":13,"id":"7970c2b2_614853f6","in_reply_to":"45bdb9ac_ab3504b5","updated":"2023-02-01 13:43:35.000000000","message":"Looks good to merge then.","commit_id":"deeee2b363c4f6acf0e5cfaa6b2b04b6eb6c8362"}],"cinder/tests/unit/volume/drivers/test_pure.py":[{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"febe1ef80e479716a8bcd7d6c39f1b4b3b4826d1","unresolved":true,"context_lines":[{"line_number":747,"context_line":"        super(PureBaseSharedDriverTestCase, self).setUp()"},{"line_number":748,"context_line":"        self.driver \u003d pure.PureBaseVolumeDriver(configuration\u003dself.mock_config)"},{"line_number":749,"context_line":"        self.driver._array \u003d self.array"},{"line_number":750,"context_line":"        self.driver._get_current_array \u003d mock.Mock()"},{"line_number":751,"context_line":"        self.driver._get_current_array.return_value \u003d self.array"},{"line_number":752,"context_line":"        self.driver._replication_pod_name \u003d \u0027cinder-pod\u0027"},{"line_number":753,"context_line":"        self.driver._replication_pg_name \u003d \u0027cinder-group\u0027"},{"line_number":754,"context_line":"        self.purestorage_module.FlashArray.side_effect \u003d None"},{"line_number":755,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"ddcf7852_4d9edf53","line":752,"range":{"start_line":750,"start_character":8,"end_line":752,"end_character":0},"updated":"2022-12-27 06:41:46.000000000","message":"use self.mock_object here. this is a driver specific method but still we prefer to use mock_object as it does proper cleanup and we\u0027ve already fixed a similar issue with pure driver before[1] so don\u0027t want to introduce similar problematic code.\n[1] https://review.opendev.org/c/openstack/cinder/+/854267/3/cinder/tests/unit/volume/drivers/test_pure.py","commit_id":"9a80be0bba8c190907af6935a468a70774c2dd72"},{"author":{"_account_id":13425,"name":"Simon Dodsley","email":"simon@purestorage.com","username":"sdodsley"},"change_message_id":"4e267e3d3cc13089073956fd4f355a492e3a1f2f","unresolved":false,"context_lines":[{"line_number":747,"context_line":"        super(PureBaseSharedDriverTestCase, self).setUp()"},{"line_number":748,"context_line":"        self.driver \u003d pure.PureBaseVolumeDriver(configuration\u003dself.mock_config)"},{"line_number":749,"context_line":"        self.driver._array \u003d self.array"},{"line_number":750,"context_line":"        self.driver._get_current_array \u003d mock.Mock()"},{"line_number":751,"context_line":"        self.driver._get_current_array.return_value \u003d self.array"},{"line_number":752,"context_line":"        self.driver._replication_pod_name \u003d \u0027cinder-pod\u0027"},{"line_number":753,"context_line":"        self.driver._replication_pg_name \u003d \u0027cinder-group\u0027"},{"line_number":754,"context_line":"        self.purestorage_module.FlashArray.side_effect \u003d None"},{"line_number":755,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"095b9e34_39b704d7","line":752,"range":{"start_line":750,"start_character":8,"end_line":752,"end_character":0},"in_reply_to":"ddcf7852_4d9edf53","updated":"2022-12-27 15:58:26.000000000","message":"Done","commit_id":"9a80be0bba8c190907af6935a468a70774c2dd72"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"febe1ef80e479716a8bcd7d6c39f1b4b3b4826d1","unresolved":true,"context_lines":[{"line_number":3427,"context_line":"        self.mock_config.use_chap_auth \u003d False"},{"line_number":3428,"context_line":"        self.driver \u003d pure.PureISCSIDriver(configuration\u003dself.mock_config)"},{"line_number":3429,"context_line":"        self.driver._array \u003d self.array"},{"line_number":3430,"context_line":"        self.driver._get_current_array \u003d mock.Mock()"},{"line_number":3431,"context_line":"        self.driver._get_current_array.return_value \u003d self.array"},{"line_number":3432,"context_line":"        self.driver._storage_protocol \u003d \u0027iSCSI\u0027"},{"line_number":3433,"context_line":"        self.mock_utils \u003d mock.Mock()"},{"line_number":3434,"context_line":"        self.driver.driver_utils \u003d self.mock_utils"}],"source_content_type":"text/x-python","patch_set":10,"id":"1f132055_d577c71c","line":3431,"range":{"start_line":3430,"start_character":8,"end_line":3431,"end_character":64},"updated":"2022-12-27 06:41:46.000000000","message":"same here, use mock_object instead","commit_id":"9a80be0bba8c190907af6935a468a70774c2dd72"},{"author":{"_account_id":13425,"name":"Simon Dodsley","email":"simon@purestorage.com","username":"sdodsley"},"change_message_id":"4e267e3d3cc13089073956fd4f355a492e3a1f2f","unresolved":false,"context_lines":[{"line_number":3427,"context_line":"        self.mock_config.use_chap_auth \u003d False"},{"line_number":3428,"context_line":"        self.driver \u003d pure.PureISCSIDriver(configuration\u003dself.mock_config)"},{"line_number":3429,"context_line":"        self.driver._array \u003d self.array"},{"line_number":3430,"context_line":"        self.driver._get_current_array \u003d mock.Mock()"},{"line_number":3431,"context_line":"        self.driver._get_current_array.return_value \u003d self.array"},{"line_number":3432,"context_line":"        self.driver._storage_protocol \u003d \u0027iSCSI\u0027"},{"line_number":3433,"context_line":"        self.mock_utils \u003d mock.Mock()"},{"line_number":3434,"context_line":"        self.driver.driver_utils \u003d self.mock_utils"}],"source_content_type":"text/x-python","patch_set":10,"id":"69051d7d_f6f6db10","line":3431,"range":{"start_line":3430,"start_character":8,"end_line":3431,"end_character":64},"in_reply_to":"1f132055_d577c71c","updated":"2022-12-27 15:58:26.000000000","message":"Done","commit_id":"9a80be0bba8c190907af6935a468a70774c2dd72"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"febe1ef80e479716a8bcd7d6c39f1b4b3b4826d1","unresolved":true,"context_lines":[{"line_number":3931,"context_line":"        self.driver \u003d pure.PureFCDriver(configuration\u003dself.mock_config)"},{"line_number":3932,"context_line":"        self.driver._storage_protocol \u003d \"FC\""},{"line_number":3933,"context_line":"        self.driver._array \u003d self.array"},{"line_number":3934,"context_line":"        self.driver._get_current_array \u003d mock.Mock()"},{"line_number":3935,"context_line":"        self.driver._get_current_array.return_value \u003d self.array"},{"line_number":3936,"context_line":"        self.driver._lookup_service \u003d mock.Mock()"},{"line_number":3937,"context_line":""},{"line_number":3938,"context_line":"    def test_get_host(self):"}],"source_content_type":"text/x-python","patch_set":10,"id":"dd4c5c0f_47074d83","line":3935,"range":{"start_line":3934,"start_character":0,"end_line":3935,"end_character":64},"updated":"2022-12-27 06:41:46.000000000","message":"same","commit_id":"9a80be0bba8c190907af6935a468a70774c2dd72"},{"author":{"_account_id":13425,"name":"Simon Dodsley","email":"simon@purestorage.com","username":"sdodsley"},"change_message_id":"4e267e3d3cc13089073956fd4f355a492e3a1f2f","unresolved":false,"context_lines":[{"line_number":3931,"context_line":"        self.driver \u003d pure.PureFCDriver(configuration\u003dself.mock_config)"},{"line_number":3932,"context_line":"        self.driver._storage_protocol \u003d \"FC\""},{"line_number":3933,"context_line":"        self.driver._array \u003d self.array"},{"line_number":3934,"context_line":"        self.driver._get_current_array \u003d mock.Mock()"},{"line_number":3935,"context_line":"        self.driver._get_current_array.return_value \u003d self.array"},{"line_number":3936,"context_line":"        self.driver._lookup_service \u003d mock.Mock()"},{"line_number":3937,"context_line":""},{"line_number":3938,"context_line":"    def test_get_host(self):"}],"source_content_type":"text/x-python","patch_set":10,"id":"a65f12b3_790bdeaa","line":3935,"range":{"start_line":3934,"start_character":0,"end_line":3935,"end_character":64},"in_reply_to":"dd4c5c0f_47074d83","updated":"2022-12-27 15:58:26.000000000","message":"Done","commit_id":"9a80be0bba8c190907af6935a468a70774c2dd72"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"febe1ef80e479716a8bcd7d6c39f1b4b3b4826d1","unresolved":true,"context_lines":[{"line_number":4473,"context_line":"        super(PureNVMEDriverTestCase, self).setUp()"},{"line_number":4474,"context_line":"        self.driver \u003d pure.PureNVMEDriver(configuration\u003dself.mock_config)"},{"line_number":4475,"context_line":"        self.driver._array \u003d self.array"},{"line_number":4476,"context_line":"        self.driver._get_current_array \u003d mock.Mock()"},{"line_number":4477,"context_line":"        self.driver._get_current_array.return_value \u003d self.array"},{"line_number":4478,"context_line":"        self.driver._storage_protocol \u003d \u0027NVMe-RoCE\u0027"},{"line_number":4479,"context_line":"        self.mock_utils \u003d mock.Mock()"},{"line_number":4480,"context_line":"        self.driver.transport_type \u003d \"rdma\""}],"source_content_type":"text/x-python","patch_set":10,"id":"8d1db44d_535cb9ca","line":4477,"range":{"start_line":4476,"start_character":0,"end_line":4477,"end_character":64},"updated":"2022-12-27 06:41:46.000000000","message":"same","commit_id":"9a80be0bba8c190907af6935a468a70774c2dd72"},{"author":{"_account_id":13425,"name":"Simon Dodsley","email":"simon@purestorage.com","username":"sdodsley"},"change_message_id":"4e267e3d3cc13089073956fd4f355a492e3a1f2f","unresolved":false,"context_lines":[{"line_number":4473,"context_line":"        super(PureNVMEDriverTestCase, self).setUp()"},{"line_number":4474,"context_line":"        self.driver \u003d pure.PureNVMEDriver(configuration\u003dself.mock_config)"},{"line_number":4475,"context_line":"        self.driver._array \u003d self.array"},{"line_number":4476,"context_line":"        self.driver._get_current_array \u003d mock.Mock()"},{"line_number":4477,"context_line":"        self.driver._get_current_array.return_value \u003d self.array"},{"line_number":4478,"context_line":"        self.driver._storage_protocol \u003d \u0027NVMe-RoCE\u0027"},{"line_number":4479,"context_line":"        self.mock_utils \u003d mock.Mock()"},{"line_number":4480,"context_line":"        self.driver.transport_type \u003d \"rdma\""}],"source_content_type":"text/x-python","patch_set":10,"id":"9c0031d1_f62f1811","line":4477,"range":{"start_line":4476,"start_character":0,"end_line":4477,"end_character":64},"in_reply_to":"8d1db44d_535cb9ca","updated":"2022-12-27 15:58:26.000000000","message":"Done","commit_id":"9a80be0bba8c190907af6935a468a70774c2dd72"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"748d7e8db6807c40263c6ffa4686f68851fdb816","unresolved":true,"context_lines":[{"line_number":1025,"context_line":"                      3600, retention)"},{"line_number":1026,"context_line":"        ]"},{"line_number":1027,"context_line":"        mock_setup_repl_pgroups.assert_has_calls(calls)"},{"line_number":1028,"context_line":"        self.mock_config.safe_get.return_value \u003d org_val"},{"line_number":1029,"context_line":""},{"line_number":1030,"context_line":"    @mock.patch(BASE_DRIVER_OBJ + \u0027._setup_replicated_pods\u0027)"},{"line_number":1031,"context_line":"    @mock.patch(BASE_DRIVER_OBJ + \u0027._generate_replication_retention\u0027)"}],"source_content_type":"text/x-python","patch_set":11,"id":"0fae6132_fa98d528","line":1028,"range":{"start_line":1028,"start_character":8,"end_line":1028,"end_character":56},"updated":"2023-01-20 23:06:29.000000000","message":"Was not doing this causing a problem?  I didn\u0027t see it being done anywhere else in the file (on a very quick look).  Normally, the unit tests are isolated (because of the way the base unittest class works), so you don\u0027t have to do this.","commit_id":"234702f2e756919bee992e63d93ebc80457778ca"},{"author":{"_account_id":13425,"name":"Simon Dodsley","email":"simon@purestorage.com","username":"sdodsley"},"change_message_id":"e2094a14e7ec5011cf29785dc6e64e2f1ccf85d0","unresolved":false,"context_lines":[{"line_number":1025,"context_line":"                      3600, retention)"},{"line_number":1026,"context_line":"        ]"},{"line_number":1027,"context_line":"        mock_setup_repl_pgroups.assert_has_calls(calls)"},{"line_number":1028,"context_line":"        self.mock_config.safe_get.return_value \u003d org_val"},{"line_number":1029,"context_line":""},{"line_number":1030,"context_line":"    @mock.patch(BASE_DRIVER_OBJ + \u0027._setup_replicated_pods\u0027)"},{"line_number":1031,"context_line":"    @mock.patch(BASE_DRIVER_OBJ + \u0027._generate_replication_retention\u0027)"}],"source_content_type":"text/x-python","patch_set":11,"id":"798e52f8_a58a6c67","line":1028,"range":{"start_line":1028,"start_character":8,"end_line":1028,"end_character":56},"in_reply_to":"0fae6132_fa98d528","updated":"2023-01-21 00:19:01.000000000","message":"Done","commit_id":"234702f2e756919bee992e63d93ebc80457778ca"}],"cinder/volume/drivers/pure.py":[{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"cab3d7279361ab875061d0e4283e422c7774dcba","unresolved":true,"context_lines":[{"line_number":308,"context_line":"                             target_array.replication_type,"},{"line_number":309,"context_line":"                             target_array.uniform)"},{"line_number":310,"context_line":"                except purestorage.PureError as err:"},{"line_number":311,"context_line":"                    LOG.warning(\"self.parse_replication_configs failed to set\""},{"line_number":312,"context_line":"                                \" up secondary array with message: %(msg)s\","},{"line_number":313,"context_line":"                                {\"msg\": err.reason})"},{"line_number":314,"context_line":"                    continue"}],"source_content_type":"text/x-python","patch_set":9,"id":"54bad175_2a5802fa","line":311,"range":{"start_line":311,"start_character":33,"end_line":311,"end_character":63},"updated":"2022-12-26 04:40:23.000000000","message":"nit: we don\u0027t need this since the logging already includes method name","commit_id":"4ec926477a6f56e1c2d6019e1479bbd0b8c4551d"},{"author":{"_account_id":13425,"name":"Simon Dodsley","email":"simon@purestorage.com","username":"sdodsley"},"change_message_id":"edfb3346004946c1ba5907a5f6c5cfdf7e970638","unresolved":false,"context_lines":[{"line_number":308,"context_line":"                             target_array.replication_type,"},{"line_number":309,"context_line":"                             target_array.uniform)"},{"line_number":310,"context_line":"                except purestorage.PureError as err:"},{"line_number":311,"context_line":"                    LOG.warning(\"self.parse_replication_configs failed to set\""},{"line_number":312,"context_line":"                                \" up secondary array with message: %(msg)s\","},{"line_number":313,"context_line":"                                {\"msg\": err.reason})"},{"line_number":314,"context_line":"                    continue"}],"source_content_type":"text/x-python","patch_set":9,"id":"eace511b_3b560dc1","line":311,"range":{"start_line":311,"start_character":33,"end_line":311,"end_character":63},"in_reply_to":"54bad175_2a5802fa","updated":"2022-12-26 16:31:40.000000000","message":"Ack","commit_id":"4ec926477a6f56e1c2d6019e1479bbd0b8c4551d"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"cab3d7279361ab875061d0e4283e422c7774dcba","unresolved":true,"context_lines":[{"line_number":2549,"context_line":"                    pod_info \u003d target_array.get_pod(self._replication_pod_name)"},{"line_number":2550,"context_line":"                    for pod_array in pod_info[\u0027arrays\u0027]:"},{"line_number":2551,"context_line":"                        if pod_array[\u0027array_id\u0027] \u003d\u003d target_array.array_id:"},{"line_number":2552,"context_line":"                            if pod_array[\u0027status\u0027] \u003d\u003d \u0027online\u0027:"},{"line_number":2553,"context_line":"                                status_ok \u003d True"},{"line_number":2554,"context_line":"                            break"},{"line_number":2555,"context_line":"                    if status_ok:"}],"source_content_type":"text/x-python","patch_set":9,"id":"77a2beb9_2163f94b","line":2552,"range":{"start_line":2552,"start_character":28,"end_line":2552,"end_character":63},"updated":"2022-12-26 04:40:23.000000000","message":"what happens when the status is not \u0027online\u0027? We are not returning anything meaning a default None will be returned which will cause problem on L#2537 where array will be assigned to None and will error out in next line\n    array.get_volume(pure_vol_name)","commit_id":"4ec926477a6f56e1c2d6019e1479bbd0b8c4551d"},{"author":{"_account_id":13425,"name":"Simon Dodsley","email":"simon@purestorage.com","username":"sdodsley"},"change_message_id":"edfb3346004946c1ba5907a5f6c5cfdf7e970638","unresolved":false,"context_lines":[{"line_number":2549,"context_line":"                    pod_info \u003d target_array.get_pod(self._replication_pod_name)"},{"line_number":2550,"context_line":"                    for pod_array in pod_info[\u0027arrays\u0027]:"},{"line_number":2551,"context_line":"                        if pod_array[\u0027array_id\u0027] \u003d\u003d target_array.array_id:"},{"line_number":2552,"context_line":"                            if pod_array[\u0027status\u0027] \u003d\u003d \u0027online\u0027:"},{"line_number":2553,"context_line":"                                status_ok \u003d True"},{"line_number":2554,"context_line":"                            break"},{"line_number":2555,"context_line":"                    if status_ok:"}],"source_content_type":"text/x-python","patch_set":9,"id":"1a5b4235_fee7b02d","line":2552,"range":{"start_line":2552,"start_character":28,"end_line":2552,"end_character":63},"in_reply_to":"77a2beb9_2163f94b","updated":"2022-12-26 16:31:40.000000000","message":"True. Fixed with warning message.","commit_id":"4ec926477a6f56e1c2d6019e1479bbd0b8c4551d"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"cab3d7279361ab875061d0e4283e422c7774dcba","unresolved":true,"context_lines":[{"line_number":2552,"context_line":"                            if pod_array[\u0027status\u0027] \u003d\u003d \u0027online\u0027:"},{"line_number":2553,"context_line":"                                status_ok \u003d True"},{"line_number":2554,"context_line":"                            break"},{"line_number":2555,"context_line":"                    if status_ok:"},{"line_number":2556,"context_line":"                        return self._array"},{"line_number":2557,"context_line":"                except purestorage.PureError as err:"},{"line_number":2558,"context_line":"                    LOG.warning(\"self.get_pod failed with\""},{"line_number":2559,"context_line":"                                \" message: %(msg)s\", {\"msg\": err})"}],"source_content_type":"text/x-python","patch_set":9,"id":"4da02a72_471f079d","line":2556,"range":{"start_line":2555,"start_character":20,"end_line":2556,"end_character":42},"updated":"2022-12-26 04:40:23.000000000","message":"see above comment, we are not returning anything when status_ok\u003dFalse which needs to be handled somewhere else might cause problems in the calling methods.","commit_id":"4ec926477a6f56e1c2d6019e1479bbd0b8c4551d"},{"author":{"_account_id":13425,"name":"Simon Dodsley","email":"simon@purestorage.com","username":"sdodsley"},"change_message_id":"edfb3346004946c1ba5907a5f6c5cfdf7e970638","unresolved":false,"context_lines":[{"line_number":2552,"context_line":"                            if pod_array[\u0027status\u0027] \u003d\u003d \u0027online\u0027:"},{"line_number":2553,"context_line":"                                status_ok \u003d True"},{"line_number":2554,"context_line":"                            break"},{"line_number":2555,"context_line":"                    if status_ok:"},{"line_number":2556,"context_line":"                        return self._array"},{"line_number":2557,"context_line":"                except purestorage.PureError as err:"},{"line_number":2558,"context_line":"                    LOG.warning(\"self.get_pod failed with\""},{"line_number":2559,"context_line":"                                \" message: %(msg)s\", {\"msg\": err})"}],"source_content_type":"text/x-python","patch_set":9,"id":"066014d9_10edb124","line":2556,"range":{"start_line":2555,"start_character":20,"end_line":2556,"end_character":42},"in_reply_to":"4da02a72_471f079d","updated":"2022-12-26 16:31:40.000000000","message":"Ack","commit_id":"4ec926477a6f56e1c2d6019e1479bbd0b8c4551d"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"febe1ef80e479716a8bcd7d6c39f1b4b3b4826d1","unresolved":false,"context_lines":[{"line_number":2533,"context_line":"        The WWN is composed of the constant \u002736\u0027, the OUI for Pure, followed"},{"line_number":2534,"context_line":"        by \u00270\u0027, and finally the serial number."},{"line_number":2535,"context_line":"        \"\"\""},{"line_number":2536,"context_line":"        array \u003d self._get_current_array()"},{"line_number":2537,"context_line":"        volume_info \u003d array.get_volume(pure_vol_name)"},{"line_number":2538,"context_line":"        wwn \u003d \u00273624a9370\u0027 + volume_info[\u0027serial\u0027]"},{"line_number":2539,"context_line":"        return wwn.lower()"}],"source_content_type":"text/x-python","patch_set":10,"id":"11963bc7_6c027773","line":2536,"range":{"start_line":2536,"start_character":8,"end_line":2536,"end_character":41},"updated":"2022-12-27 06:41:46.000000000","message":"in any case, we will get an array here so looks good","commit_id":"9a80be0bba8c190907af6935a468a70774c2dd72"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"febe1ef80e479716a8bcd7d6c39f1b4b3b4826d1","unresolved":true,"context_lines":[{"line_number":2555,"context_line":"                        LOG.warning(\"Target array is offline. Volume \""},{"line_number":2556,"context_line":"                                    \"replication in unknown state. Check \""},{"line_number":2557,"context_line":"                                    \" replication links and array state.\")"},{"line_number":2558,"context_line":"                    return self._array"},{"line_number":2559,"context_line":"                except purestorage.PureError as err:"},{"line_number":2560,"context_line":"                    LOG.warning(\"self.get_pod failed with\""},{"line_number":2561,"context_line":"                                \" message: %(msg)s\", {\"msg\": err})"}],"source_content_type":"text/x-python","patch_set":10,"id":"d9d283af_58301603","line":2558,"range":{"start_line":2558,"start_character":20,"end_line":2558,"end_character":38},"updated":"2022-12-27 06:41:46.000000000","message":"nit: we are returning array in both if/else cases so we can skip this line, remove the else on L#2564 and just return self._array in the end but it\u0027s fine either way since it doesn\u0027t add anything to the functionality.","commit_id":"9a80be0bba8c190907af6935a468a70774c2dd72"},{"author":{"_account_id":13425,"name":"Simon Dodsley","email":"simon@purestorage.com","username":"sdodsley"},"change_message_id":"4e267e3d3cc13089073956fd4f355a492e3a1f2f","unresolved":false,"context_lines":[{"line_number":2555,"context_line":"                        LOG.warning(\"Target array is offline. Volume \""},{"line_number":2556,"context_line":"                                    \"replication in unknown state. Check \""},{"line_number":2557,"context_line":"                                    \" replication links and array state.\")"},{"line_number":2558,"context_line":"                    return self._array"},{"line_number":2559,"context_line":"                except purestorage.PureError as err:"},{"line_number":2560,"context_line":"                    LOG.warning(\"self.get_pod failed with\""},{"line_number":2561,"context_line":"                                \" message: %(msg)s\", {\"msg\": err})"}],"source_content_type":"text/x-python","patch_set":10,"id":"da7d3016_644e2812","line":2558,"range":{"start_line":2558,"start_character":20,"end_line":2558,"end_character":38},"in_reply_to":"d9d283af_58301603","updated":"2022-12-27 15:58:26.000000000","message":"Done","commit_id":"9a80be0bba8c190907af6935a468a70774c2dd72"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"748d7e8db6807c40263c6ffa4686f68851fdb816","unresolved":true,"context_lines":[{"line_number":2554,"context_line":"                    if not status_ok:"},{"line_number":2555,"context_line":"                        LOG.warning(\"Target array is offline. Volume \""},{"line_number":2556,"context_line":"                                    \"replication in unknown state. Check \""},{"line_number":2557,"context_line":"                                    \" replication links and array state.\")"},{"line_number":2558,"context_line":"                except purestorage.PureError as err:"},{"line_number":2559,"context_line":"                    LOG.warning(\"self.get_pod failed with\""},{"line_number":2560,"context_line":"                                \" message: %(msg)s\", {\"msg\": err})"}],"source_content_type":"text/x-python","patch_set":11,"id":"b3ea7c94_b4ca238b","line":2557,"range":{"start_line":2557,"start_character":37,"end_line":2557,"end_character":38},"updated":"2023-01-20 23:06:29.000000000","message":"nit: extra space in message (thought that\u0027s better than no space!)","commit_id":"234702f2e756919bee992e63d93ebc80457778ca"},{"author":{"_account_id":13425,"name":"Simon Dodsley","email":"simon@purestorage.com","username":"sdodsley"},"change_message_id":"e2094a14e7ec5011cf29785dc6e64e2f1ccf85d0","unresolved":false,"context_lines":[{"line_number":2554,"context_line":"                    if not status_ok:"},{"line_number":2555,"context_line":"                        LOG.warning(\"Target array is offline. Volume \""},{"line_number":2556,"context_line":"                                    \"replication in unknown state. Check \""},{"line_number":2557,"context_line":"                                    \" replication links and array state.\")"},{"line_number":2558,"context_line":"                except purestorage.PureError as err:"},{"line_number":2559,"context_line":"                    LOG.warning(\"self.get_pod failed with\""},{"line_number":2560,"context_line":"                                \" message: %(msg)s\", {\"msg\": err})"}],"source_content_type":"text/x-python","patch_set":11,"id":"3c946752_db553b5c","line":2557,"range":{"start_line":2557,"start_character":37,"end_line":2557,"end_character":38},"in_reply_to":"b3ea7c94_b4ca238b","updated":"2023-01-21 00:19:01.000000000","message":"Done","commit_id":"234702f2e756919bee992e63d93ebc80457778ca"}],"releasenotes/notes/pure-validate-replica-arrays-a76630cab9435770.yaml":[{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"febe1ef80e479716a8bcd7d6c39f1b4b3b4826d1","unresolved":true,"context_lines":[{"line_number":2,"context_line":"fixes:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    Pure Storage FlashArray driver `bug #1969784"},{"line_number":5,"context_line":"    \u003chttps://bugs.launchpad.net/cinder/+bug/1969784\u003e`_: Fixes array failover"},{"line_number":6,"context_line":"    incorrectly handles loss of an array due to network issue"}],"source_content_type":"text/x-yaml","patch_set":10,"id":"d4fa190f_d53f9183","line":5,"range":{"start_line":5,"start_character":56,"end_line":5,"end_character":61},"updated":"2022-12-27 06:41:46.000000000","message":"nit: Fixed\nreleasenotes are read after the release is done so this is already fixed","commit_id":"9a80be0bba8c190907af6935a468a70774c2dd72"},{"author":{"_account_id":13425,"name":"Simon Dodsley","email":"simon@purestorage.com","username":"sdodsley"},"change_message_id":"4e267e3d3cc13089073956fd4f355a492e3a1f2f","unresolved":false,"context_lines":[{"line_number":2,"context_line":"fixes:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    Pure Storage FlashArray driver `bug #1969784"},{"line_number":5,"context_line":"    \u003chttps://bugs.launchpad.net/cinder/+bug/1969784\u003e`_: Fixes array failover"},{"line_number":6,"context_line":"    incorrectly handles loss of an array due to network issue"}],"source_content_type":"text/x-yaml","patch_set":10,"id":"3f2e6510_d7441f84","line":5,"range":{"start_line":5,"start_character":56,"end_line":5,"end_character":61},"in_reply_to":"d4fa190f_d53f9183","updated":"2022-12-27 15:58:26.000000000","message":"Done","commit_id":"9a80be0bba8c190907af6935a468a70774c2dd72"}]}
