)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":29122,"name":"Raghavendra Tilay","email":"raghavendra-uddhav.tilay@hpe.com","username":"raghavendrat"},"change_message_id":"b102b1a45b3323252a6d16467f5c83705c68f92e","unresolved":true,"context_lines":[{"line_number":4,"context_line":"Commit:     Simon Dodsley \u003csimondodsley@gmail.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2023-09-18 18:04:13 -0400"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"[Pure Storage] Enable sync repl volume creation during failver"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Currently when cinder failover is invoked, due to the primary"},{"line_number":10,"context_line":"storage backend being down, it is not possible to, in the"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":8,"id":"8fea441b_ed52bb4e","line":7,"range":{"start_line":7,"start_character":55,"end_line":7,"end_character":62},"updated":"2023-09-20 06:21:28.000000000","message":"failover","commit_id":"9dc1c9a54e60f903ebb9e66b496fceda16d8e249"},{"author":{"_account_id":13425,"name":"Simon Dodsley","email":"simon@purestorage.com","username":"sdodsley"},"change_message_id":"01139b55e2062077f19d49eb1413a1d5ccc35519","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Simon Dodsley \u003csimondodsley@gmail.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2023-09-18 18:04:13 -0400"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"[Pure Storage] Enable sync repl volume creation during failver"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Currently when cinder failover is invoked, due to the primary"},{"line_number":10,"context_line":"storage backend being down, it is not possible to, in the"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":8,"id":"aa0e6619_68cb46e3","line":7,"range":{"start_line":7,"start_character":55,"end_line":7,"end_character":62},"in_reply_to":"8fea441b_ed52bb4e","updated":"2023-09-25 16:25:49.000000000","message":"Done","commit_id":"9dc1c9a54e60f903ebb9e66b496fceda16d8e249"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"21bf40c672754e69803aaf9f2a74fddf25014c39","unresolved":true,"context_lines":[{"line_number":15,"context_line":""},{"line_number":16,"context_line":"A synchronously replicated volume could be safely created"},{"line_number":17,"context_line":"during failover as the Pure Storage architecture can allow"},{"line_number":18,"context_line":"this to happen. When the failed array in available again, any"},{"line_number":19,"context_line":"new sync replication volumes created during the outage will be"},{"line_number":20,"context_line":"automatically recovered by the backends own internal systems."},{"line_number":21,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":17,"id":"cc67a15b_f61c476f","line":18,"range":{"start_line":18,"start_character":38,"end_line":18,"end_character":40},"updated":"2024-01-09 00:03:02.000000000","message":"nit: is","commit_id":"95254c90d65c05171b9325210a9317e77d2fa652"},{"author":{"_account_id":13425,"name":"Simon Dodsley","email":"simon@purestorage.com","username":"sdodsley"},"change_message_id":"44dbd9d3de908e8fef1985f7b70aab32c0a53b55","unresolved":false,"context_lines":[{"line_number":15,"context_line":""},{"line_number":16,"context_line":"A synchronously replicated volume could be safely created"},{"line_number":17,"context_line":"during failover as the Pure Storage architecture can allow"},{"line_number":18,"context_line":"this to happen. When the failed array in available again, any"},{"line_number":19,"context_line":"new sync replication volumes created during the outage will be"},{"line_number":20,"context_line":"automatically recovered by the backends own internal systems."},{"line_number":21,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":17,"id":"022db570_aa24aa2d","line":18,"range":{"start_line":18,"start_character":38,"end_line":18,"end_character":40},"in_reply_to":"cc67a15b_f61c476f","updated":"2024-01-11 17:45:57.000000000","message":"Done","commit_id":"95254c90d65c05171b9325210a9317e77d2fa652"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"21bf40c672754e69803aaf9f2a74fddf25014c39","unresolved":true,"context_lines":[{"line_number":17,"context_line":"during failover as the Pure Storage architecture can allow"},{"line_number":18,"context_line":"this to happen. When the failed array in available again, any"},{"line_number":19,"context_line":"new sync replication volumes created during the outage will be"},{"line_number":20,"context_line":"automatically recovered by the backends own internal systems."},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"This patch updates the driver to check, during volume creation,"},{"line_number":23,"context_line":"if the backend is in failover mode and then allow sync volumes"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":17,"id":"78791b99_e725c6b5","line":20,"range":{"start_line":20,"start_character":31,"end_line":20,"end_character":39},"updated":"2024-01-09 00:03:02.000000000","message":"nit: backend\u0027s","commit_id":"95254c90d65c05171b9325210a9317e77d2fa652"},{"author":{"_account_id":13425,"name":"Simon Dodsley","email":"simon@purestorage.com","username":"sdodsley"},"change_message_id":"44dbd9d3de908e8fef1985f7b70aab32c0a53b55","unresolved":false,"context_lines":[{"line_number":17,"context_line":"during failover as the Pure Storage architecture can allow"},{"line_number":18,"context_line":"this to happen. When the failed array in available again, any"},{"line_number":19,"context_line":"new sync replication volumes created during the outage will be"},{"line_number":20,"context_line":"automatically recovered by the backends own internal systems."},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"This patch updates the driver to check, during volume creation,"},{"line_number":23,"context_line":"if the backend is in failover mode and then allow sync volumes"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":17,"id":"afd662b6_13aaa616","line":20,"range":{"start_line":20,"start_character":31,"end_line":20,"end_character":39},"in_reply_to":"78791b99_e725c6b5","updated":"2024-01-11 17:45:57.000000000","message":"Done","commit_id":"95254c90d65c05171b9325210a9317e77d2fa652"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"21bf40c672754e69803aaf9f2a74fddf25014c39","unresolved":true,"context_lines":[{"line_number":29,"context_line":"both failover and failback scenarios in Pure\u0027s labs and this"},{"line_number":30,"context_line":"patch has proved to work as expected."},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"Addiotnally included is work from abandoned"},{"line_number":33,"context_line":"change I7ed3ebd7fec389870edad0c1cc07ac553854dd8a, which"},{"line_number":34,"context_line":"resolves replication issues in A/A deployments."},{"line_number":35,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":17,"id":"b77dca45_7401fe43","line":32,"range":{"start_line":32,"start_character":0,"end_line":32,"end_character":11},"updated":"2024-01-09 00:03:02.000000000","message":"nit: Additionally","commit_id":"95254c90d65c05171b9325210a9317e77d2fa652"},{"author":{"_account_id":13425,"name":"Simon Dodsley","email":"simon@purestorage.com","username":"sdodsley"},"change_message_id":"44dbd9d3de908e8fef1985f7b70aab32c0a53b55","unresolved":false,"context_lines":[{"line_number":29,"context_line":"both failover and failback scenarios in Pure\u0027s labs and this"},{"line_number":30,"context_line":"patch has proved to work as expected."},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"Addiotnally included is work from abandoned"},{"line_number":33,"context_line":"change I7ed3ebd7fec389870edad0c1cc07ac553854dd8a, which"},{"line_number":34,"context_line":"resolves replication issues in A/A deployments."},{"line_number":35,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":17,"id":"57dd3f7d_19e6cf44","line":32,"range":{"start_line":32,"start_character":0,"end_line":32,"end_character":11},"in_reply_to":"b77dca45_7401fe43","updated":"2024-01-11 17:45:57.000000000","message":"Done","commit_id":"95254c90d65c05171b9325210a9317e77d2fa652"}],"/PATCHSET_LEVEL":[{"author":{"_account_id":29122,"name":"Raghavendra Tilay","email":"raghavendra-uddhav.tilay@hpe.com","username":"raghavendrat"},"change_message_id":"b102b1a45b3323252a6d16467f5c83705c68f92e","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":8,"id":"41bb6675_cd812c80","updated":"2023-09-20 06:21:28.000000000","message":"Minor typo","commit_id":"9dc1c9a54e60f903ebb9e66b496fceda16d8e249"},{"author":{"_account_id":33609,"name":"XuQi","display_name":"Inori","email":"xuq.fnstxz@fujitsu.com","username":"inori"},"change_message_id":"e9b77d61e16f4f442eff577866885a957f34227b","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":8,"id":"f8576479_718f5bc1","updated":"2023-09-19 05:18:59.000000000","message":"run-Fujitsu ETERNUS CI","commit_id":"9dc1c9a54e60f903ebb9e66b496fceda16d8e249"},{"author":{"_account_id":13425,"name":"Simon Dodsley","email":"simon@purestorage.com","username":"sdodsley"},"change_message_id":"c12172d46443b3616eda96d0abb5b2f3f6da9ead","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":12,"id":"19c267ed_d524251c","updated":"2023-09-21 15:51:10.000000000","message":"recheck","commit_id":"84b35b28561f47c268bd83bd3cbb97d6d6f72a2b"},{"author":{"_account_id":13425,"name":"Simon Dodsley","email":"simon@purestorage.com","username":"sdodsley"},"change_message_id":"c8ab7789635985701ea2333e0fdc2993b0f67ca3","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":12,"id":"486f03b4_34dcdc72","updated":"2023-09-21 00:23:22.000000000","message":"recheck","commit_id":"84b35b28561f47c268bd83bd3cbb97d6d6f72a2b"},{"author":{"_account_id":13425,"name":"Simon Dodsley","email":"simon@purestorage.com","username":"sdodsley"},"change_message_id":"4fbfd5de03825d77056dbca88c1bb550615a32e5","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":12,"id":"6d1e3590_0fb63300","updated":"2023-09-20 20:55:22.000000000","message":"recheck","commit_id":"84b35b28561f47c268bd83bd3cbb97d6d6f72a2b"},{"author":{"_account_id":13425,"name":"Simon Dodsley","email":"simon@purestorage.com","username":"sdodsley"},"change_message_id":"31f6dda507b7db4c7471a1cce50dd50f7faccea6","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":12,"id":"d2c9dc5b_5fa7c628","updated":"2023-09-21 13:11:02.000000000","message":"recheck","commit_id":"84b35b28561f47c268bd83bd3cbb97d6d6f72a2b"},{"author":{"_account_id":13425,"name":"Simon Dodsley","email":"simon@purestorage.com","username":"sdodsley"},"change_message_id":"c0ca95b692a5d018230e626331e5c4a60c590cc7","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":12,"id":"d4added2_dc674fd3","updated":"2023-09-21 03:42:02.000000000","message":"recheck","commit_id":"84b35b28561f47c268bd83bd3cbb97d6d6f72a2b"},{"author":{"_account_id":13425,"name":"Simon Dodsley","email":"simon@purestorage.com","username":"sdodsley"},"change_message_id":"ba8f40ca5914bcaf68d0de72f65c2fc8c787b21b","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":12,"id":"ee3b216b_d8b7d31b","updated":"2023-09-20 20:32:13.000000000","message":"run Pure Storage CI","commit_id":"84b35b28561f47c268bd83bd3cbb97d6d6f72a2b"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"21bf40c672754e69803aaf9f2a74fddf25014c39","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":17,"id":"a5cf3749_08b09591","updated":"2024-01-09 00:03:02.000000000","message":"A few questions noted inline (I haven\u0027t looked at the tests yet).","commit_id":"95254c90d65c05171b9325210a9317e77d2fa652"},{"author":{"_account_id":29122,"name":"Raghavendra Tilay","email":"raghavendra-uddhav.tilay@hpe.com","username":"raghavendrat"},"change_message_id":"7e452b9027fb6c7f58efb8fa3bbe639449efea6f","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":17,"id":"903575dc_e187c257","updated":"2023-09-26 11:15:38.000000000","message":"Code change \u0026 UT look good. Zuul has passed.\nMy comment has been addressed. So +1.","commit_id":"95254c90d65c05171b9325210a9317e77d2fa652"},{"author":{"_account_id":13425,"name":"Simon Dodsley","email":"simon@purestorage.com","username":"sdodsley"},"change_message_id":"800676cb027614c0b0728cffb9c3897415e4f7ba","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":17,"id":"9bca3a21_c9cea447","updated":"2023-09-25 21:50:42.000000000","message":"recheck","commit_id":"95254c90d65c05171b9325210a9317e77d2fa652"},{"author":{"_account_id":13425,"name":"Simon Dodsley","email":"simon@purestorage.com","username":"sdodsley"},"change_message_id":"7530bcaf9dec4b68207a948ac3b76f140877585c","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":17,"id":"c439b456_2a2a42a0","updated":"2023-09-25 19:25:04.000000000","message":"recheck","commit_id":"95254c90d65c05171b9325210a9317e77d2fa652"},{"author":{"_account_id":13425,"name":"Simon Dodsley","email":"simon@purestorage.com","username":"sdodsley"},"change_message_id":"978b16e0b50af1b4039bf826967eb080c853209e","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":18,"id":"241815f4_98923dbd","updated":"2024-01-10 22:03:09.000000000","message":"run Pure Storage CI","commit_id":"153f0e2d990514fcee7a55e7106214af340ccff7"},{"author":{"_account_id":13425,"name":"Simon Dodsley","email":"simon@purestorage.com","username":"sdodsley"},"change_message_id":"83f5495da55c81bac79518e577c77cc8fdb594cb","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":18,"id":"25415feb_dbdfa831","updated":"2024-01-09 20:59:55.000000000","message":"run Pure Storage CI","commit_id":"153f0e2d990514fcee7a55e7106214af340ccff7"},{"author":{"_account_id":13425,"name":"Simon Dodsley","email":"simon@purestorage.com","username":"sdodsley"},"change_message_id":"d00e20be7998bf0eeb0fb6239b957b534db9e59c","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":18,"id":"277a746d_8fb278b6","updated":"2024-01-11 17:46:10.000000000","message":"run Pure Storage CI","commit_id":"153f0e2d990514fcee7a55e7106214af340ccff7"},{"author":{"_account_id":29268,"name":"Matthew Heler","email":"matthew.heler@hotmail.com","username":"mheler"},"change_message_id":"579aed34d8d47f3375a4e4c8abb7e1718485a668","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":18,"id":"5a8b32e1_53177324","updated":"2024-01-13 22:24:50.000000000","message":"run Pure Storage CI","commit_id":"153f0e2d990514fcee7a55e7106214af340ccff7"},{"author":{"_account_id":13425,"name":"Simon Dodsley","email":"simon@purestorage.com","username":"sdodsley"},"change_message_id":"32ace572421235e7d5af523eaf2e658613c90ad3","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":18,"id":"6d9870fb_38487814","updated":"2024-01-10 20:02:23.000000000","message":"run Pure Storage CI","commit_id":"153f0e2d990514fcee7a55e7106214af340ccff7"},{"author":{"_account_id":13425,"name":"Simon Dodsley","email":"simon@purestorage.com","username":"sdodsley"},"change_message_id":"7c773e0ed5ca89fc94ff10be996e27a5e5734582","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":18,"id":"7ccef69a_63a951b4","updated":"2024-01-11 17:49:45.000000000","message":"run Pure Storage CI","commit_id":"153f0e2d990514fcee7a55e7106214af340ccff7"},{"author":{"_account_id":13425,"name":"Simon Dodsley","email":"simon@purestorage.com","username":"sdodsley"},"change_message_id":"936ceb7749e54085ae13291b798f8bd7085abb89","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":18,"id":"945a5e62_625cceff","updated":"2024-01-11 20:31:55.000000000","message":"run Pure Storage CI","commit_id":"153f0e2d990514fcee7a55e7106214af340ccff7"},{"author":{"_account_id":13425,"name":"Simon Dodsley","email":"simon@purestorage.com","username":"sdodsley"},"change_message_id":"4b23c5dc4e06a1fa0e87ac9c13fb48a5f06831fb","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":18,"id":"d1247082_1feb682c","updated":"2024-01-10 21:46:33.000000000","message":"run Pure Storage CI","commit_id":"153f0e2d990514fcee7a55e7106214af340ccff7"},{"author":{"_account_id":13425,"name":"Simon Dodsley","email":"simon@purestorage.com","username":"sdodsley"},"change_message_id":"f28724fc251ea92c7b22b818106e561ad88945ac","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":18,"id":"d185c592_3564a32e","updated":"2024-01-09 21:21:17.000000000","message":"run Pure Storage CI","commit_id":"153f0e2d990514fcee7a55e7106214af340ccff7"},{"author":{"_account_id":13425,"name":"Simon Dodsley","email":"simon@purestorage.com","username":"sdodsley"},"change_message_id":"f10623eb179d7bf67de2f3965ac2776bc49f3e65","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":18,"id":"dc53d0e1_e43657cf","updated":"2024-01-12 17:15:29.000000000","message":"run Pure Storage CI","commit_id":"153f0e2d990514fcee7a55e7106214af340ccff7"},{"author":{"_account_id":13425,"name":"Simon Dodsley","email":"simon@purestorage.com","username":"sdodsley"},"change_message_id":"a698dee7d581873dc8915ddea23b9d63e86a4306","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":18,"id":"8f8648a1_13f1def1","updated":"2024-01-12 17:13:58.000000000","message":"run Pure Storage Ci","commit_id":"153f0e2d990514fcee7a55e7106214af340ccff7"},{"author":{"_account_id":13425,"name":"Simon Dodsley","email":"simon@purestorage.com","username":"sdodsley"},"change_message_id":"45c86f755d10b5532d30929f48408cfcf0616a09","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":18,"id":"479e00b8_a231e6d7","in_reply_to":"5a8b32e1_53177324","updated":"2024-01-15 21:36:57.000000000","message":"Done","commit_id":"153f0e2d990514fcee7a55e7106214af340ccff7"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"7ce99bc14d6166e9e8a180ede35cf0ffcc95603b","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":19,"id":"40dbb670_332643bd","updated":"2024-02-05 18:17:44.000000000","message":"Apparently Pure CI is in the midst of a datacenter move.  Simon says in the commit message that this change has been tested locally.","commit_id":"e1d93531b94dfcfecb3cac08cfd1d849f29db467"},{"author":{"_account_id":9236,"name":"Jon Bernard","email":"jobernar@redhat.com","username":"jbernard"},"change_message_id":"9228c2f366c1f28cdf77f39463b6b697ce2fa5aa","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":19,"id":"4d045b04_74f43a44","updated":"2024-03-05 15:28:14.000000000","message":"Code reads well to me, reviews and responses look solid, tests\npass, no reason to hold this up.","commit_id":"e1d93531b94dfcfecb3cac08cfd1d849f29db467"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"0b6f3419229adc0f242b2dc809843656e4465d6e","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":19,"id":"7d3711a9_370e5236","updated":"2024-02-05 17:03:42.000000000","message":"My questions from an earlier patch set have been answered; change LGTM.  Pure CI doesn\u0027t seem to be responding, though.","commit_id":"e1d93531b94dfcfecb3cac08cfd1d849f29db467"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"07de2e0d4305797124ea6d33c69141760060d5bb","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":19,"id":"681eb4c6_99acb580","updated":"2024-02-07 09:11:23.000000000","message":"few suggestions inline but nothing to hold the patch for. Just curious why the third party CI hasn\u0027t reported on this.\nEven though this patch is tested in a local environment and third party CI doesn\u0027t test it, it\u0027s still reassuring to see that other tests are passing with the code changes done here.","commit_id":"e1d93531b94dfcfecb3cac08cfd1d849f29db467"},{"author":{"_account_id":13425,"name":"Simon Dodsley","email":"simon@purestorage.com","username":"sdodsley"},"change_message_id":"ac7b78f9f5f7dd6042860ffeb46524a8c77e0003","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":19,"id":"298a5d58_7fc1bc2e","updated":"2024-01-17 19:48:04.000000000","message":"recheck","commit_id":"e1d93531b94dfcfecb3cac08cfd1d849f29db467"},{"author":{"_account_id":32912,"name":"Pure Storage Third-Party CI","display_name":"Pure Storage Third-Party CI","email":"openstack-third-party-ci@purestorage.com","username":"purestorage-thirdparty-ci","status":"Doing CI things"},"change_message_id":"eecd55ed08bf3a0640025b63ab3675bae378ac60","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":19,"id":"4827b482_9cb71679","updated":"2024-01-17 22:14:20.000000000","message":"recheck","commit_id":"e1d93531b94dfcfecb3cac08cfd1d849f29db467"},{"author":{"_account_id":13425,"name":"Simon Dodsley","email":"simon@purestorage.com","username":"sdodsley"},"change_message_id":"8e87499af898de2edf9d7b5d75076adc67ef3d41","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":19,"id":"7f4a0fcb_89aadf90","updated":"2024-01-17 16:46:32.000000000","message":"recheck","commit_id":"e1d93531b94dfcfecb3cac08cfd1d849f29db467"},{"author":{"_account_id":13425,"name":"Simon Dodsley","email":"simon@purestorage.com","username":"sdodsley"},"change_message_id":"4058a42ed8bbb8b0cf976dec58b64e94bf44b436","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":19,"id":"bf073749_80e34d94","updated":"2024-01-17 14:21:34.000000000","message":"recheck","commit_id":"e1d93531b94dfcfecb3cac08cfd1d849f29db467"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"adb2e53f55e547324dc082d884950af949144e89","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":19,"id":"4224e9ad_16d2e274","updated":"2024-02-05 17:03:58.000000000","message":"run Pure Storage CI","commit_id":"e1d93531b94dfcfecb3cac08cfd1d849f29db467"},{"author":{"_account_id":13425,"name":"Simon Dodsley","email":"simon@purestorage.com","username":"sdodsley"},"change_message_id":"fafa48bc28a9bbccac0d5a6ae38014a41dc7bcfb","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":19,"id":"604efd07_154dc18f","in_reply_to":"681eb4c6_99acb580","updated":"2024-02-07 22:33:02.000000000","message":"The Pure CI is in the middle of a big datacenter move, so it won\u0027t be reporting for a bit. We are moving it across the country.","commit_id":"e1d93531b94dfcfecb3cac08cfd1d849f29db467"}],"cinder/volume/drivers/pure.py":[{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"21bf40c672754e69803aaf9f2a74fddf25014c39","unresolved":true,"context_lines":[{"line_number":198,"context_line":"        cls_name \u003d driver.__class__.__name__"},{"line_number":199,"context_line":"        method_name \u003d \"%(cls_name)s.%(method)s\" % {\"cls_name\": cls_name,"},{"line_number":200,"context_line":"                                                   \"method\": f.__name__}"},{"line_number":201,"context_line":"        backend_name \u003d driver._get_current_array(True).backend_id"},{"line_number":202,"context_line":"        LOG.debug(\"[%(backend_name)s] Enter %(method_name)s, args\u003d%(args)s,\""},{"line_number":203,"context_line":"                  \" kwargs\u003d%(kwargs)s\","},{"line_number":204,"context_line":"                  {"}],"source_content_type":"text/x-python","patch_set":17,"id":"af53263d_0f28802a","line":201,"range":{"start_line":201,"start_character":49,"end_line":201,"end_character":53},"updated":"2024-01-09 00:03:02.000000000","message":"I guess the idea here is that for debug logging purposes, we don\u0027t need to check the active cluster target arrays, we\u0027ll just record whatever self._array is right now.  Also, it\u0027s probably a good idea not to do something in a logging wrapper that could raise an exception, so this looks like a good change to me.","commit_id":"95254c90d65c05171b9325210a9317e77d2fa652"},{"author":{"_account_id":13425,"name":"Simon Dodsley","email":"simon@purestorage.com","username":"sdodsley"},"change_message_id":"be71be29e1a549a1059fbadbf58989ab97470260","unresolved":false,"context_lines":[{"line_number":198,"context_line":"        cls_name \u003d driver.__class__.__name__"},{"line_number":199,"context_line":"        method_name \u003d \"%(cls_name)s.%(method)s\" % {\"cls_name\": cls_name,"},{"line_number":200,"context_line":"                                                   \"method\": f.__name__}"},{"line_number":201,"context_line":"        backend_name \u003d driver._get_current_array(True).backend_id"},{"line_number":202,"context_line":"        LOG.debug(\"[%(backend_name)s] Enter %(method_name)s, args\u003d%(args)s,\""},{"line_number":203,"context_line":"                  \" kwargs\u003d%(kwargs)s\","},{"line_number":204,"context_line":"                  {"}],"source_content_type":"text/x-python","patch_set":17,"id":"cab77f62_9cb9d438","line":201,"range":{"start_line":201,"start_character":49,"end_line":201,"end_character":53},"in_reply_to":"af53263d_0f28802a","updated":"2024-01-09 14:54:57.000000000","message":"Done","commit_id":"95254c90d65c05171b9325210a9317e77d2fa652"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"21bf40c672754e69803aaf9f2a74fddf25014c39","unresolved":true,"context_lines":[{"line_number":441,"context_line":"        # If we have failed over at some point we need to adjust our current"},{"line_number":442,"context_line":"        # array based on the one that we have failed over to"},{"line_number":443,"context_line":"        if (self._active_backend_id and"},{"line_number":444,"context_line":"                self._active_backend_id !\u003d self._array.backend_id):"},{"line_number":445,"context_line":"            secondary_array \u003d self._get_secondary(self._active_backend_id)"},{"line_number":446,"context_line":"            self._swap_replication_state(self._array, secondary_array)"},{"line_number":447,"context_line":""}],"source_content_type":"text/x-python","patch_set":17,"id":"bee892b2_23b8eb43","line":444,"range":{"start_line":444,"start_character":43,"end_line":444,"end_character":66},"updated":"2024-01-09 00:03:02.000000000","message":"I agree that we don\u0027t need to check that self._active_backend_id is not None here, but do we know for sure that self._array is not None?  (I\u0027m worried about an AttributeError happening when we read self._array.backend_id.)","commit_id":"95254c90d65c05171b9325210a9317e77d2fa652"},{"author":{"_account_id":13425,"name":"Simon Dodsley","email":"simon@purestorage.com","username":"sdodsley"},"change_message_id":"be71be29e1a549a1059fbadbf58989ab97470260","unresolved":false,"context_lines":[{"line_number":441,"context_line":"        # If we have failed over at some point we need to adjust our current"},{"line_number":442,"context_line":"        # array based on the one that we have failed over to"},{"line_number":443,"context_line":"        if (self._active_backend_id and"},{"line_number":444,"context_line":"                self._active_backend_id !\u003d self._array.backend_id):"},{"line_number":445,"context_line":"            secondary_array \u003d self._get_secondary(self._active_backend_id)"},{"line_number":446,"context_line":"            self._swap_replication_state(self._array, secondary_array)"},{"line_number":447,"context_line":""}],"source_content_type":"text/x-python","patch_set":17,"id":"df569544_95d2d739","line":444,"range":{"start_line":444,"start_character":43,"end_line":444,"end_character":66},"in_reply_to":"bee892b2_23b8eb43","updated":"2024-01-09 14:54:57.000000000","message":"self._array can never be None. If that was the case the driver would never even start.","commit_id":"95254c90d65c05171b9325210a9317e77d2fa652"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"21bf40c672754e69803aaf9f2a74fddf25014c39","unresolved":true,"context_lines":[{"line_number":2320,"context_line":"                # else will go into an error state pending an admin to check"},{"line_number":2321,"context_line":"                # them and adjust states as appropriate."},{"line_number":2322,"context_line":""},{"line_number":2323,"context_line":"                current_array \u003d self._get_current_array(True)"},{"line_number":2324,"context_line":"                repl_type \u003d current_array.replication_type"},{"line_number":2325,"context_line":"                is_in_ac \u003d bool(repl_type \u003d\u003d REPLICATION_TYPE_SYNC)"},{"line_number":2326,"context_line":"                model_updates \u003d []"}],"source_content_type":"text/x-python","patch_set":17,"id":"1e326728_0d4340cd","line":2323,"updated":"2024-01-09 00:03:02.000000000","message":"You don\u0027t really need to pass True here, since we know self._failed_over_primary_array is True from line 2315, which will have the same effect.  (I\u0027m not real clear on what init\u003dTrue is supposed to mean, tbh.)","commit_id":"95254c90d65c05171b9325210a9317e77d2fa652"},{"author":{"_account_id":13425,"name":"Simon Dodsley","email":"simon@purestorage.com","username":"sdodsley"},"change_message_id":"be71be29e1a549a1059fbadbf58989ab97470260","unresolved":false,"context_lines":[{"line_number":2320,"context_line":"                # else will go into an error state pending an admin to check"},{"line_number":2321,"context_line":"                # them and adjust states as appropriate."},{"line_number":2322,"context_line":""},{"line_number":2323,"context_line":"                current_array \u003d self._get_current_array(True)"},{"line_number":2324,"context_line":"                repl_type \u003d current_array.replication_type"},{"line_number":2325,"context_line":"                is_in_ac \u003d bool(repl_type \u003d\u003d REPLICATION_TYPE_SYNC)"},{"line_number":2326,"context_line":"                model_updates \u003d []"}],"source_content_type":"text/x-python","patch_set":17,"id":"1a54ed0f_180be0a7","line":2323,"in_reply_to":"1e326728_0d4340cd","updated":"2024-01-09 14:54:57.000000000","message":"Acknowledged","commit_id":"95254c90d65c05171b9325210a9317e77d2fa652"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"21bf40c672754e69803aaf9f2a74fddf25014c39","unresolved":true,"context_lines":[{"line_number":2344,"context_line":"                        \u0027done after a failover has completed.\u0027)"},{"line_number":2345,"context_line":"                raise exception.InvalidReplicationTarget(message\u003dmsg)"},{"line_number":2346,"context_line":""},{"line_number":2347,"context_line":"        current_array \u003d self._get_current_array(True)"},{"line_number":2348,"context_line":"        LOG.debug(\"Failover replication for array %(primary)s to \""},{"line_number":2349,"context_line":"                  \"%(secondary)s.\","},{"line_number":2350,"context_line":"                  {\"primary\": current_array.backend_id,"}],"source_content_type":"text/x-python","patch_set":17,"id":"a8cb462d_2b54c557","line":2347,"range":{"start_line":2347,"start_character":48,"end_line":2347,"end_character":52},"updated":"2024-01-09 00:03:02.000000000","message":"OK, so this will prevent the active_cluster_target_arrays check, which I guess is fine, no sense cluttering up the debug log during a failover.","commit_id":"95254c90d65c05171b9325210a9317e77d2fa652"},{"author":{"_account_id":13425,"name":"Simon Dodsley","email":"simon@purestorage.com","username":"sdodsley"},"change_message_id":"be71be29e1a549a1059fbadbf58989ab97470260","unresolved":false,"context_lines":[{"line_number":2344,"context_line":"                        \u0027done after a failover has completed.\u0027)"},{"line_number":2345,"context_line":"                raise exception.InvalidReplicationTarget(message\u003dmsg)"},{"line_number":2346,"context_line":""},{"line_number":2347,"context_line":"        current_array \u003d self._get_current_array(True)"},{"line_number":2348,"context_line":"        LOG.debug(\"Failover replication for array %(primary)s to \""},{"line_number":2349,"context_line":"                  \"%(secondary)s.\","},{"line_number":2350,"context_line":"                  {\"primary\": current_array.backend_id,"}],"source_content_type":"text/x-python","patch_set":17,"id":"82d411e7_ca513f6e","line":2347,"range":{"start_line":2347,"start_character":48,"end_line":2347,"end_character":52},"in_reply_to":"a8cb462d_2b54c557","updated":"2024-01-09 14:54:57.000000000","message":"Done","commit_id":"95254c90d65c05171b9325210a9317e77d2fa652"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"07de2e0d4305797124ea6d33c69141760060d5bb","unresolved":true,"context_lines":[{"line_number":2775,"context_line":""},{"line_number":2776,"context_line":"        # We have to rely on a call that is only available in REST API 1.3"},{"line_number":2777,"context_line":"        # therefore we have to create a temporary FlashArray for this."},{"line_number":2778,"context_line":"        if hasattr(secondary_array, \u0027_request_kwargs\u0027):"},{"line_number":2779,"context_line":"            target_array \u003d self._get_flasharray("},{"line_number":2780,"context_line":"                secondary_array._target,"},{"line_number":2781,"context_line":"                api_token\u003dsecondary_array._api_token,"},{"line_number":2782,"context_line":"                rest_version\u003d\u00271.3\u0027,"},{"line_number":2783,"context_line":"                request_kwargs\u003dsecondary_array._request_kwargs,"},{"line_number":2784,"context_line":"            )"},{"line_number":2785,"context_line":"        else:"},{"line_number":2786,"context_line":"            target_array \u003d self._get_flasharray("},{"line_number":2787,"context_line":"                secondary_array._target,"},{"line_number":2788,"context_line":"                api_token\u003dsecondary_array._api_token,"},{"line_number":2789,"context_line":"                rest_version\u003d\u00271.3\u0027,"},{"line_number":2790,"context_line":"            )"},{"line_number":2791,"context_line":""},{"line_number":2792,"context_line":"        volume_snaps \u003d target_array.get_volume(pg_snap[\u0027name\u0027],"},{"line_number":2793,"context_line":"                                               snap\u003dTrue,"}],"source_content_type":"text/x-python","patch_set":19,"id":"ac441b04_f48fd890","line":2790,"range":{"start_line":2778,"start_character":0,"end_line":2790,"end_character":13},"updated":"2024-02-07 09:11:23.000000000","message":"can\u0027t we simplify this to\n\n    request_kwargs \u003d None\n    if hasattr(secondary_array, \u0027_request_kwargs\u0027):\n        request_kwargs \u003d secondary_array._request_kwargs\n    target_array \u003d self._get_flasharray(\n                secondary_array._target,\n                api_token\u003dsecondary_array._api_token,\n                rest_version\u003d\u00271.3\u0027,\n                request_kwargs\u003dsecondary_array._request_kwargs,\n            )","commit_id":"e1d93531b94dfcfecb3cac08cfd1d849f29db467"},{"author":{"_account_id":13425,"name":"Simon Dodsley","email":"simon@purestorage.com","username":"sdodsley"},"change_message_id":"fafa48bc28a9bbccac0d5a6ae38014a41dc7bcfb","unresolved":true,"context_lines":[{"line_number":2775,"context_line":""},{"line_number":2776,"context_line":"        # We have to rely on a call that is only available in REST API 1.3"},{"line_number":2777,"context_line":"        # therefore we have to create a temporary FlashArray for this."},{"line_number":2778,"context_line":"        if hasattr(secondary_array, \u0027_request_kwargs\u0027):"},{"line_number":2779,"context_line":"            target_array \u003d self._get_flasharray("},{"line_number":2780,"context_line":"                secondary_array._target,"},{"line_number":2781,"context_line":"                api_token\u003dsecondary_array._api_token,"},{"line_number":2782,"context_line":"                rest_version\u003d\u00271.3\u0027,"},{"line_number":2783,"context_line":"                request_kwargs\u003dsecondary_array._request_kwargs,"},{"line_number":2784,"context_line":"            )"},{"line_number":2785,"context_line":"        else:"},{"line_number":2786,"context_line":"            target_array \u003d self._get_flasharray("},{"line_number":2787,"context_line":"                secondary_array._target,"},{"line_number":2788,"context_line":"                api_token\u003dsecondary_array._api_token,"},{"line_number":2789,"context_line":"                rest_version\u003d\u00271.3\u0027,"},{"line_number":2790,"context_line":"            )"},{"line_number":2791,"context_line":""},{"line_number":2792,"context_line":"        volume_snaps \u003d target_array.get_volume(pg_snap[\u0027name\u0027],"},{"line_number":2793,"context_line":"                                               snap\u003dTrue,"}],"source_content_type":"text/x-python","patch_set":19,"id":"7b614d70_a16b08a2","line":2790,"range":{"start_line":2778,"start_character":0,"end_line":2790,"end_character":13},"in_reply_to":"ac441b04_f48fd890","updated":"2024-02-07 22:33:02.000000000","message":"Sadly not - the API endpoint is very finicky and will fail if `request_args` are called iwth an empty set.","commit_id":"e1d93531b94dfcfecb3cac08cfd1d849f29db467"}],"releasenotes/notes/pure_failover_sync-86814167598af2f8.yaml":[{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"21bf40c672754e69803aaf9f2a74fddf25014c39","unresolved":true,"context_lines":[{"line_number":4,"context_line":"    Pure Storage driver: Allow synchronously replicated volumes"},{"line_number":5,"context_line":"    to be created during a replication failover event. These will"},{"line_number":6,"context_line":"    remain viable volumes when the replication is failed back to"},{"line_number":7,"context_line":"    it\u0027s original state."},{"line_number":8,"context_line":"fixes:"},{"line_number":9,"context_line":"  - |"},{"line_number":10,"context_line":"    [Pure Storage] `Bug #2035404 \u003chttps://bugs.launchpad.net/cinder/+bug/2035404\u003e`_:"}],"source_content_type":"text/x-yaml","patch_set":17,"id":"8076d8a5_81b454a2","line":7,"range":{"start_line":7,"start_character":4,"end_line":7,"end_character":9},"updated":"2024-01-09 00:03:02.000000000","message":"nit: its","commit_id":"95254c90d65c05171b9325210a9317e77d2fa652"},{"author":{"_account_id":13425,"name":"Simon Dodsley","email":"simon@purestorage.com","username":"sdodsley"},"change_message_id":"be71be29e1a549a1059fbadbf58989ab97470260","unresolved":false,"context_lines":[{"line_number":4,"context_line":"    Pure Storage driver: Allow synchronously replicated volumes"},{"line_number":5,"context_line":"    to be created during a replication failover event. These will"},{"line_number":6,"context_line":"    remain viable volumes when the replication is failed back to"},{"line_number":7,"context_line":"    it\u0027s original state."},{"line_number":8,"context_line":"fixes:"},{"line_number":9,"context_line":"  - |"},{"line_number":10,"context_line":"    [Pure Storage] `Bug #2035404 \u003chttps://bugs.launchpad.net/cinder/+bug/2035404\u003e`_:"}],"source_content_type":"text/x-yaml","patch_set":17,"id":"192d765e_6e5aef6e","line":7,"range":{"start_line":7,"start_character":4,"end_line":7,"end_character":9},"in_reply_to":"8076d8a5_81b454a2","updated":"2024-01-09 14:54:57.000000000","message":"Done","commit_id":"95254c90d65c05171b9325210a9317e77d2fa652"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"07de2e0d4305797124ea6d33c69141760060d5bb","unresolved":true,"context_lines":[{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    Pure Storage driver: Allow synchronously replicated volumes"},{"line_number":5,"context_line":"    to be created during a replication failover event. These will"},{"line_number":6,"context_line":"    remain viable volumes when the replication is failed back to"},{"line_number":7,"context_line":"    its original state."},{"line_number":8,"context_line":"fixes:"},{"line_number":9,"context_line":"  - |"}],"source_content_type":"text/x-yaml","patch_set":19,"id":"bfa22c9f_e508adb3","line":6,"range":{"start_line":5,"start_character":55,"end_line":6,"end_character":25},"updated":"2024-02-07 09:11:23.000000000","message":"the wording sounds odd to me, maybe you mean \"The volumes will remain viable when the replication ...\"","commit_id":"e1d93531b94dfcfecb3cac08cfd1d849f29db467"},{"author":{"_account_id":13425,"name":"Simon Dodsley","email":"simon@purestorage.com","username":"sdodsley"},"change_message_id":"fafa48bc28a9bbccac0d5a6ae38014a41dc7bcfb","unresolved":true,"context_lines":[{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    Pure Storage driver: Allow synchronously replicated volumes"},{"line_number":5,"context_line":"    to be created during a replication failover event. These will"},{"line_number":6,"context_line":"    remain viable volumes when the replication is failed back to"},{"line_number":7,"context_line":"    its original state."},{"line_number":8,"context_line":"fixes:"},{"line_number":9,"context_line":"  - |"}],"source_content_type":"text/x-yaml","patch_set":19,"id":"f3257596_56dae461","line":6,"range":{"start_line":5,"start_character":55,"end_line":6,"end_character":25},"in_reply_to":"bfa22c9f_e508adb3","updated":"2024-02-07 22:33:02.000000000","message":"Yes - that\u0027s what it means. We only talk about replicated volumes in the text, so `these` implicitly references them.","commit_id":"e1d93531b94dfcfecb3cac08cfd1d849f29db467"}]}
