)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":13425,"name":"Simon Dodsley","email":"simon@purestorage.com","username":"sdodsley"},"change_message_id":"b5afc11978d4c31b49ba36c68cdf371e37dbd723","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"ceb4b936_9a3648b2","updated":"2022-10-31 18:31:47.000000000","message":"run Pure Storage CI","commit_id":"fce42fc9fd9a28aba566a2068bb072e2514c3489"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"09ea123bd360cec39937791c1adf4e10ab78de84","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":10,"id":"b603c592_ed5f0b16","updated":"2023-01-20 23:35:46.000000000","message":"A few nits noted inline, but nothing concerning.  Only a +1 in case you want to fix the option help text now; ping me in IRC if you want to do it in a followup or not at all (it may be correct as is).","commit_id":"0d1ef18f17c852dab6948234117e190b606f1f22"},{"author":{"_account_id":35075,"name":"Alexander Deiter","email":"adeiter@infinidat.com","username":"adeiter"},"change_message_id":"9cee068968b37f8e8c459b729309908861746fbc","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":10,"id":"04c8e5b3_84ee1788","updated":"2022-11-25 21:21:26.000000000","message":"Looks good to me, thank you!","commit_id":"0d1ef18f17c852dab6948234117e190b606f1f22"},{"author":{"_account_id":7198,"name":"Jay Bryant","email":"jungleboyj@electronicjungle.net","username":"jsbryant"},"change_message_id":"64bae7716cb3509c6871375b8ea203f998664a18","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":10,"id":"fad2e1d9_7065cdf8","updated":"2022-12-14 15:51:28.000000000","message":"Passing CI and the code changes make sense.","commit_id":"0d1ef18f17c852dab6948234117e190b606f1f22"},{"author":{"_account_id":13425,"name":"Simon Dodsley","email":"simon@purestorage.com","username":"sdodsley"},"change_message_id":"9fed12005e07692557eb7e0e6e0a17706ac512b8","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":10,"id":"25b9c95a_8f8bb213","updated":"2022-11-18 20:31:04.000000000","message":"run Pure Storage CI","commit_id":"0d1ef18f17c852dab6948234117e190b606f1f22"},{"author":{"_account_id":13425,"name":"Simon Dodsley","email":"simon@purestorage.com","username":"sdodsley"},"change_message_id":"5b8b338bbaffc2db6cb761df1da927b2763d4505","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":10,"id":"37a057d9_4af3f67c","updated":"2022-11-18 17:58:50.000000000","message":"run Pure Storage CI","commit_id":"0d1ef18f17c852dab6948234117e190b606f1f22"},{"author":{"_account_id":13425,"name":"Simon Dodsley","email":"simon@purestorage.com","username":"sdodsley"},"change_message_id":"3de9c92264537d9bac25e1efb1e196b23d778f87","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":10,"id":"61629579_3e2eeb1b","updated":"2022-11-19 16:43:28.000000000","message":"run Pure Storage CI","commit_id":"0d1ef18f17c852dab6948234117e190b606f1f22"},{"author":{"_account_id":34148,"name":"Aboubacar Diare","display_name":"abdi","email":"diare@hpe.com","username":"abdi"},"change_message_id":"9f211e451324b168660ce9fcd6f21bf8a3c5b93b","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":10,"id":"e4a3d7d7_b970c1d1","updated":"2022-12-15 04:17:51.000000000","message":"run-HPE XP Storage CI","commit_id":"0d1ef18f17c852dab6948234117e190b606f1f22"},{"author":{"_account_id":34815,"name":"Aneesh Pachilangottil","email":"aneesh.p@fungible.com","username":"aneeeshp1"},"change_message_id":"5766934bdc724ffb8cfe8bbc3ce0caf5fc2aa02b","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":11,"id":"4b2b0836_6a92614f","updated":"2023-01-25 02:42:58.000000000","message":"LGTM. Thank you.","commit_id":"bc7b04026316c4897c967799da6ae52d1469de15"},{"author":{"_account_id":13425,"name":"Simon Dodsley","email":"simon@purestorage.com","username":"sdodsley"},"change_message_id":"ed87606db3b1b1cb1830ddbbd529e46e82113295","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":11,"id":"0cfc1c72_15e022a0","updated":"2023-01-21 04:43:51.000000000","message":"recheck","commit_id":"bc7b04026316c4897c967799da6ae52d1469de15"},{"author":{"_account_id":13425,"name":"Simon Dodsley","email":"simon@purestorage.com","username":"sdodsley"},"change_message_id":"e48698e9abc9d165fcc403dd3bf26fc8aefdedfc","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":11,"id":"8076213a_b8e246fe","updated":"2023-01-21 20:17:13.000000000","message":"run Pure Storage CI","commit_id":"bc7b04026316c4897c967799da6ae52d1469de15"},{"author":{"_account_id":13425,"name":"Simon Dodsley","email":"simon@purestorage.com","username":"sdodsley"},"change_message_id":"0403aa0e21a7787b238155f61f6e2f3d7f19f9a9","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":11,"id":"807e8d48_4aa2e9f8","updated":"2023-01-21 14:45:41.000000000","message":"run Pure Storage CI","commit_id":"bc7b04026316c4897c967799da6ae52d1469de15"},{"author":{"_account_id":13425,"name":"Simon Dodsley","email":"simon@purestorage.com","username":"sdodsley"},"change_message_id":"d3428a68ec2a2251f53ca2d078473c9bc83bdf3e","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":11,"id":"cb351e1f_761c03a1","updated":"2023-01-23 22:24:39.000000000","message":"run Pure Storage CI","commit_id":"bc7b04026316c4897c967799da6ae52d1469de15"},{"author":{"_account_id":13425,"name":"Simon Dodsley","email":"simon@purestorage.com","username":"sdodsley"},"change_message_id":"404c5d3be40ec4d989de29f6116672f74c506bd5","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":11,"id":"d90c94d3_6a8d6a2d","updated":"2023-01-24 21:11:59.000000000","message":"run Pure Storage CI","commit_id":"bc7b04026316c4897c967799da6ae52d1469de15"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"975dc3f14b90f897abb786767600e90f91e41af2","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":12,"id":"0bbcbb69_81bad179","updated":"2023-02-01 13:40:37.000000000","message":"After Simon\u0027s reply, looks good to merge.","commit_id":"81c919bb05b44cb8fc055103f2aa0842698c655f"},{"author":{"_account_id":13425,"name":"Simon Dodsley","email":"simon@purestorage.com","username":"sdodsley"},"change_message_id":"4f4ab602bced40d33baa70d42b15eb1a4b0970f3","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":12,"id":"33e8e094_faf79d9f","updated":"2023-02-01 13:38:25.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":"81c919bb05b44cb8fc055103f2aa0842698c655f"},{"author":{"_account_id":13425,"name":"Simon Dodsley","email":"simon@purestorage.com","username":"sdodsley"},"change_message_id":"5d76e59071052ca2110a59ad50fd090a1e648b47","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":12,"id":"694f030e_00f4ae8f","updated":"2023-02-01 13:38:06.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":"81c919bb05b44cb8fc055103f2aa0842698c655f"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"369aa88f1fdbfa7ce7958c1798cde620ffd4f6f1","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":12,"id":"fa7627e1_57cd500b","updated":"2023-01-25 15:26:34.000000000","message":"My concerns were all addressed by PS11, which passed the third-party CI.  Only change between PS11 and 12 was a typo fix in the commit message, so LGTM.","commit_id":"81c919bb05b44cb8fc055103f2aa0842698c655f"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"cc45fb77c6e1d3f60285f56305bf89fd24c7f68a","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":12,"id":"78eeb4df_a7b44812","updated":"2023-02-01 11:35:00.000000000","message":"code and tests looks good. same concern as in[1], FC CI is failing and set as non-voting\n\n[1] https://review.opendev.org/c/openstack/cinder/+/855060","commit_id":"81c919bb05b44cb8fc055103f2aa0842698c655f"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"975dc3f14b90f897abb786767600e90f91e41af2","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":12,"id":"dd029767_cf6f0a59","in_reply_to":"33e8e094_faf79d9f","updated":"2023-02-01 13:40:37.000000000","message":"Great, if the patch has been tested then I\u0027m OK with it (even with the failing CI).","commit_id":"81c919bb05b44cb8fc055103f2aa0842698c655f"}],"cinder/volume/drivers/pure.py":[{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"09ea123bd360cec39937791c1adf4e10ab78de84","unresolved":true,"context_lines":[{"line_number":85,"context_line":"                    \"(will be created if it does not exist).\"),"},{"line_number":86,"context_line":"    cfg.StrOpt(\"pure_trisync_pg_name\", default\u003d\"cinder-trisync\","},{"line_number":87,"context_line":"               help\u003d\"Pure Protection Group name to use for trisync \""},{"line_number":88,"context_line":"                    \"replication leg inside the sync replication pod \""},{"line_number":89,"context_line":"                    \"(will be created if it does not exist).\"),"},{"line_number":90,"context_line":"    cfg.StrOpt(\"pure_replication_pod_name\", default\u003d\"cinder-pod\","},{"line_number":91,"context_line":"               help\u003d\"Pure Pod name to use for sync replication \""}],"source_content_type":"text/x-python","patch_set":10,"id":"c55e92f0_db6ea86c","line":88,"range":{"start_line":88,"start_character":33,"end_line":88,"end_character":36},"updated":"2023-01-20 23:35:46.000000000","message":"is this a technical term or a typo?","commit_id":"0d1ef18f17c852dab6948234117e190b606f1f22"},{"author":{"_account_id":13425,"name":"Simon Dodsley","email":"simon@purestorage.com","username":"sdodsley"},"change_message_id":"112066dee9915850e63d9a8e06d1bf8de750e05f","unresolved":false,"context_lines":[{"line_number":85,"context_line":"                    \"(will be created if it does not exist).\"),"},{"line_number":86,"context_line":"    cfg.StrOpt(\"pure_trisync_pg_name\", default\u003d\"cinder-trisync\","},{"line_number":87,"context_line":"               help\u003d\"Pure Protection Group name to use for trisync \""},{"line_number":88,"context_line":"                    \"replication leg inside the sync replication pod \""},{"line_number":89,"context_line":"                    \"(will be created if it does not exist).\"),"},{"line_number":90,"context_line":"    cfg.StrOpt(\"pure_replication_pod_name\", default\u003d\"cinder-pod\","},{"line_number":91,"context_line":"               help\u003d\"Pure Pod name to use for sync replication \""}],"source_content_type":"text/x-python","patch_set":10,"id":"f6bfda16_84e2a503","line":88,"range":{"start_line":88,"start_character":33,"end_line":88,"end_character":36},"in_reply_to":"c55e92f0_db6ea86c","updated":"2023-01-21 00:02:04.000000000","message":"technical term","commit_id":"0d1ef18f17c852dab6948234117e190b606f1f22"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"09ea123bd360cec39937791c1adf4e10ab78de84","unresolved":true,"context_lines":[{"line_number":127,"context_line":"                help\u003d\"When enabled and two replication devices are provided, \""},{"line_number":128,"context_line":"                     \"one each of types sync and async, this will enable \""},{"line_number":129,"context_line":"                     \"the ability to create a volume that is sync replicated \""},{"line_number":130,"context_line":"                     \"to one array and async replicated to a seperate array.\")"},{"line_number":131,"context_line":"]"},{"line_number":132,"context_line":""},{"line_number":133,"context_line":"CONF \u003d cfg.CONF"}],"source_content_type":"text/x-python","patch_set":10,"id":"472afc82_d57c7913","line":130,"range":{"start_line":130,"start_character":61,"end_line":130,"end_character":69},"updated":"2023-01-20 23:35:46.000000000","message":"nit: separate","commit_id":"0d1ef18f17c852dab6948234117e190b606f1f22"},{"author":{"_account_id":13425,"name":"Simon Dodsley","email":"simon@purestorage.com","username":"sdodsley"},"change_message_id":"112066dee9915850e63d9a8e06d1bf8de750e05f","unresolved":false,"context_lines":[{"line_number":127,"context_line":"                help\u003d\"When enabled and two replication devices are provided, \""},{"line_number":128,"context_line":"                     \"one each of types sync and async, this will enable \""},{"line_number":129,"context_line":"                     \"the ability to create a volume that is sync replicated \""},{"line_number":130,"context_line":"                     \"to one array and async replicated to a seperate array.\")"},{"line_number":131,"context_line":"]"},{"line_number":132,"context_line":""},{"line_number":133,"context_line":"CONF \u003d cfg.CONF"}],"source_content_type":"text/x-python","patch_set":10,"id":"32c40328_751dd88d","line":130,"range":{"start_line":130,"start_character":61,"end_line":130,"end_character":69},"in_reply_to":"472afc82_d57c7913","updated":"2023-01-21 00:02:04.000000000","message":"Done","commit_id":"0d1ef18f17c852dab6948234117e190b606f1f22"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"09ea123bd360cec39937791c1adf4e10ab78de84","unresolved":true,"context_lines":[{"line_number":416,"context_line":""},{"line_number":417,"context_line":"        if self.configuration.pure_trisync_enabled:"},{"line_number":418,"context_line":"            # If trisync is enabled check that we have only 1 sync and 1 async"},{"line_number":419,"context_line":"            # replication device set up and tha tthe async target is not the"},{"line_number":420,"context_line":"            # same as any of the sync targets."},{"line_number":421,"context_line":"            self.do_setup_trisync()"},{"line_number":422,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"934e4d5d_6020417f","line":419,"range":{"start_line":419,"start_character":44,"end_line":419,"end_character":52},"updated":"2023-01-20 23:35:46.000000000","message":"nit:typo","commit_id":"0d1ef18f17c852dab6948234117e190b606f1f22"},{"author":{"_account_id":13425,"name":"Simon Dodsley","email":"simon@purestorage.com","username":"sdodsley"},"change_message_id":"112066dee9915850e63d9a8e06d1bf8de750e05f","unresolved":false,"context_lines":[{"line_number":416,"context_line":""},{"line_number":417,"context_line":"        if self.configuration.pure_trisync_enabled:"},{"line_number":418,"context_line":"            # If trisync is enabled check that we have only 1 sync and 1 async"},{"line_number":419,"context_line":"            # replication device set up and tha tthe async target is not the"},{"line_number":420,"context_line":"            # same as any of the sync targets."},{"line_number":421,"context_line":"            self.do_setup_trisync()"},{"line_number":422,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"9d1f598d_d9c96ddd","line":419,"range":{"start_line":419,"start_character":44,"end_line":419,"end_character":52},"in_reply_to":"934e4d5d_6020417f","updated":"2023-01-21 00:02:04.000000000","message":"Done","commit_id":"0d1ef18f17c852dab6948234117e190b606f1f22"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"09ea123bd360cec39937791c1adf4e10ab78de84","unresolved":true,"context_lines":[{"line_number":439,"context_line":"            LOG.error(\"Unable to configure TriSync Replication. Incorrect \""},{"line_number":440,"context_line":"                      \"number of replication devices enabled. \""},{"line_number":441,"context_line":"                      \"Only 2 are supported.\")"},{"line_number":442,"context_line":"        else:"},{"line_number":443,"context_line":"            for replication_device in replication_devices:"},{"line_number":444,"context_line":"                san_ip \u003d replication_device[\"san_ip\"]"},{"line_number":445,"context_line":"                api_token \u003d replication_device[\"api_token\"]"}],"source_content_type":"text/x-python","patch_set":10,"id":"05225303_59b1b6c1","line":442,"range":{"start_line":442,"start_character":8,"end_line":442,"end_character":13},"updated":"2023-01-20 23:35:46.000000000","message":"nit: you could return after logging the error message above, and then you wouldn\u0027t need to indent this entire else block.","commit_id":"0d1ef18f17c852dab6948234117e190b606f1f22"},{"author":{"_account_id":13425,"name":"Simon Dodsley","email":"simon@purestorage.com","username":"sdodsley"},"change_message_id":"112066dee9915850e63d9a8e06d1bf8de750e05f","unresolved":false,"context_lines":[{"line_number":439,"context_line":"            LOG.error(\"Unable to configure TriSync Replication. Incorrect \""},{"line_number":440,"context_line":"                      \"number of replication devices enabled. \""},{"line_number":441,"context_line":"                      \"Only 2 are supported.\")"},{"line_number":442,"context_line":"        else:"},{"line_number":443,"context_line":"            for replication_device in replication_devices:"},{"line_number":444,"context_line":"                san_ip \u003d replication_device[\"san_ip\"]"},{"line_number":445,"context_line":"                api_token \u003d replication_device[\"api_token\"]"}],"source_content_type":"text/x-python","patch_set":10,"id":"00db5a5d_e14aae9f","line":442,"range":{"start_line":442,"start_character":8,"end_line":442,"end_character":13},"in_reply_to":"05225303_59b1b6c1","updated":"2023-01-21 00:02:04.000000000","message":"Done","commit_id":"0d1ef18f17c852dab6948234117e190b606f1f22"}],"doc/source/configuration/block-storage/drivers/pure-storage-driver.rst":[{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"cc45fb77c6e1d3f60285f56305bf89fd24c7f68a","unresolved":true,"context_lines":[{"line_number":273,"context_line":"Note that more than one ``replication_device`` line can be added to allow for"},{"line_number":274,"context_line":"multi-target device replication."},{"line_number":275,"context_line":""},{"line_number":276,"context_line":"To enable 3-site replication, ie. a volume that is synchronously replicated to"},{"line_number":277,"context_line":"one array and also asynchronously replicated to another then you must supply"},{"line_number":278,"context_line":"two, and only two, ``replication_device`` lines, where one has ``type`` of"},{"line_number":279,"context_line":"``sync`` and one where ``type`` is ``async``. Additionally, the parameter"}],"source_content_type":"text/x-rst","patch_set":12,"id":"eaf1e156_604d1c1d","line":276,"range":{"start_line":276,"start_character":30,"end_line":276,"end_character":32},"updated":"2023-02-01 11:35:00.000000000","message":"nit: i.e.","commit_id":"81c919bb05b44cb8fc055103f2aa0842698c655f"}],"releasenotes/notes/pure_trisync_replication-d236bba76a1ebea5.yaml":[{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"09ea123bd360cec39937791c1adf4e10ab78de84","unresolved":true,"context_lines":[{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    Pure Storage driver: Added support for 3-site replication, aka trisync. Requires two"},{"line_number":5,"context_line":"    replication devices to be created, one async and one sync, plus the addition of new"},{"line_number":6,"context_line":"    parameters `pure_trisync_enabled` and `pure_trisync_pg_name`."}],"source_content_type":"text/x-yaml","patch_set":10,"id":"037fb472_81ba9aeb","line":6,"range":{"start_line":6,"start_character":15,"end_line":6,"end_character":16},"updated":"2023-01-20 23:35:46.000000000","message":"nit: if you want these to appear in monospace font, you need two backticks.  (A single backtick gives you italics.)","commit_id":"0d1ef18f17c852dab6948234117e190b606f1f22"},{"author":{"_account_id":13425,"name":"Simon Dodsley","email":"simon@purestorage.com","username":"sdodsley"},"change_message_id":"112066dee9915850e63d9a8e06d1bf8de750e05f","unresolved":false,"context_lines":[{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    Pure Storage driver: Added support for 3-site replication, aka trisync. Requires two"},{"line_number":5,"context_line":"    replication devices to be created, one async and one sync, plus the addition of new"},{"line_number":6,"context_line":"    parameters `pure_trisync_enabled` and `pure_trisync_pg_name`."}],"source_content_type":"text/x-yaml","patch_set":10,"id":"0c4f04f9_99c0db47","line":6,"range":{"start_line":6,"start_character":15,"end_line":6,"end_character":16},"in_reply_to":"037fb472_81ba9aeb","updated":"2023-01-21 00:02:04.000000000","message":"Done","commit_id":"0d1ef18f17c852dab6948234117e190b606f1f22"}]}
