)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":36538,"name":"Harsh Ailani","display_name":"Harsh Ailani","email":"harsh.ailani@ibm.com","username":"harshailani"},"change_message_id":"22cbf5d9687de36a400f83e315d09ed9f8872b93","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"d8652521_983bd3e6","updated":"2024-12-26 11:17:39.000000000","message":"LGTM.","commit_id":"527dbf6839c1c78235265551c32b9b3fb7074da8"},{"author":{"_account_id":13425,"name":"Simon Dodsley","email":"simon@purestorage.com","username":"sdodsley"},"change_message_id":"4f0f5beadc4f08b1ab96e4aa15355ca30f861fd8","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"07b8b999_cb2f45a5","updated":"2024-12-19 19:04:48.000000000","message":"recheck devstack-plugin-nfs-tempest-full","commit_id":"527dbf6839c1c78235265551c32b9b3fb7074da8"},{"author":{"_account_id":13425,"name":"Simon Dodsley","email":"simon@purestorage.com","username":"sdodsley"},"change_message_id":"2ef161f7b795a66bd7150acd86870976c22523c8","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"2b97dadb_62f23d37","updated":"2024-12-20 15:15:43.000000000","message":"recheck devstack-plugin-nfs-tempest-full POST failure","commit_id":"527dbf6839c1c78235265551c32b9b3fb7074da8"},{"author":{"_account_id":29122,"name":"Raghavendra Tilay","email":"raghavendra-uddhav.tilay@hpe.com","username":"raghavendrat"},"change_message_id":"92bfd97f78e68fc2e1e059e65bdf3ab0f428745e","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"87b0650e_ed54253c","updated":"2025-02-26 06:20:09.000000000","message":"Code changes look good.\nA suggestion for release notes.","commit_id":"716b67fe9e81ee5581cd7bcccbbe61d2efecda53"},{"author":{"_account_id":36538,"name":"Harsh Ailani","display_name":"Harsh Ailani","email":"harsh.ailani@ibm.com","username":"harshailani"},"change_message_id":"e29ed50d88da7f926d176148b04f7637be5521b4","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"59c2ba85_68af1454","updated":"2025-01-17 06:06:53.000000000","message":"LGTM","commit_id":"716b67fe9e81ee5581cd7bcccbbe61d2efecda53"},{"author":{"_account_id":9236,"name":"Jon Bernard","email":"jobernar@redhat.com","username":"jbernard"},"change_message_id":"d8a2090f6c19fdcfd4c4b854d8956adff28ec753","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"1f91b303_18f961af","updated":"2025-02-28 18:32:54.000000000","message":"Looks okay to me, an updated release note if a change is required, but otherwise fine.","commit_id":"716b67fe9e81ee5581cd7bcccbbe61d2efecda53"},{"author":{"_account_id":13425,"name":"Simon Dodsley","email":"simon@purestorage.com","username":"sdodsley"},"change_message_id":"40d7eb0833f6e3973b6c9b82f844cc6b0b8769ff","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"0ee4fde2_dbe72d4f","updated":"2025-01-16 16:34:57.000000000","message":"recheck cinder-plugin-ceph-tempest","commit_id":"716b67fe9e81ee5581cd7bcccbbe61d2efecda53"},{"author":{"_account_id":13425,"name":"Simon Dodsley","email":"simon@purestorage.com","username":"sdodsley"},"change_message_id":"2663b198e6e04ae6c56a0eda3f9c519f4a4b58e1","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"60f065f5_88a58700","updated":"2025-01-16 19:48:21.000000000","message":"recheck tempest-integrated-storage","commit_id":"716b67fe9e81ee5581cd7bcccbbe61d2efecda53"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"3457aa02ce17ba0689bce005d9444e6964ea563c","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"a876432d_a418d318","updated":"2025-03-12 21:43:24.000000000","message":"See comments inline.  Also, I\u0027m kind of leery about a recursive function that doesn\u0027t have any tests (unless I\u0027m missing them)","commit_id":"492c9f301091ed26b043a52984d17eb44f58d8e1"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"571336155562da0221f7e59326ce7c6d3fad60d9","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"6cd75d6e_041af182","updated":"2025-03-13 16:50:07.000000000","message":"My concerns have been addressed.","commit_id":"86fedcb59235f5fa90ab946cae905d3a42fe1053"},{"author":{"_account_id":7198,"name":"Jay Bryant","email":"jungleboyj@electronicjungle.net","username":"jsbryant"},"change_message_id":"f8dcd95b2a98a3aaf02defa269bc2142c1614963","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"0cf81800_853981b8","updated":"2025-03-14 18:06:17.000000000","message":"This looks good to me.  Passing 3rd Party CI.","commit_id":"86fedcb59235f5fa90ab946cae905d3a42fe1053"},{"author":{"_account_id":13425,"name":"Simon Dodsley","email":"simon@purestorage.com","username":"sdodsley"},"change_message_id":"4cc21af0fd87789836397e4ff7411d490ff6b975","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"7b04de37_d300ee44","updated":"2025-03-13 01:41:54.000000000","message":"recheck","commit_id":"86fedcb59235f5fa90ab946cae905d3a42fe1053"},{"author":{"_account_id":13425,"name":"Simon Dodsley","email":"simon@purestorage.com","username":"sdodsley"},"change_message_id":"e3fd2f7efaea4d3933fc21abb4b4d028ea2749e7","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"b9cb69b4_a92359a3","updated":"2025-03-13 05:10:42.000000000","message":"recheck","commit_id":"86fedcb59235f5fa90ab946cae905d3a42fe1053"},{"author":{"_account_id":13425,"name":"Simon Dodsley","email":"simon@purestorage.com","username":"sdodsley"},"change_message_id":"58ee3f143e73af63b7e27b20c78713ebecb46e0f","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"e53d1896_4ae59a7b","updated":"2025-03-13 12:31:45.000000000","message":"recheck","commit_id":"86fedcb59235f5fa90ab946cae905d3a42fe1053"}],"cinder/volume/drivers/pure.py":[{"author":{"_account_id":35316,"name":"Keerthivasan S","email":"ksuresh@purestorage.com","username":"keerthivasan"},"change_message_id":"84114929fda020626135bf0b992266c002ab31ec","unresolved":true,"context_lines":[{"line_number":2811,"context_line":"                    names\u003d[name],"},{"line_number":2812,"context_line":"                    container_default_protection\u003d("},{"line_number":2813,"context_line":"                        flasharray.ContainerDefaultProtection("},{"line_number":2814,"context_line":"                            default_protection\u003d[])))"},{"line_number":2815,"context_line":"                if res.status_code !\u003d 200:"},{"line_number":2816,"context_line":"                    ctxt.reraise \u003d False"},{"line_number":2817,"context_line":"                    LOG.warning(\"Failed to remove Default Protection \""}],"source_content_type":"text/x-python","patch_set":1,"id":"b41112e1_db2da719","line":2814,"updated":"2025-01-16 12:44:13.000000000","message":"typo, it has to be plural, should be changed to default_protections\u003d[]","commit_id":"527dbf6839c1c78235265551c32b9b3fb7074da8"},{"author":{"_account_id":13425,"name":"Simon Dodsley","email":"simon@purestorage.com","username":"sdodsley"},"change_message_id":"bdc2df54d7638b4c8a69f0f17564cd028a95ff0a","unresolved":false,"context_lines":[{"line_number":2811,"context_line":"                    names\u003d[name],"},{"line_number":2812,"context_line":"                    container_default_protection\u003d("},{"line_number":2813,"context_line":"                        flasharray.ContainerDefaultProtection("},{"line_number":2814,"context_line":"                            default_protection\u003d[])))"},{"line_number":2815,"context_line":"                if res.status_code !\u003d 200:"},{"line_number":2816,"context_line":"                    ctxt.reraise \u003d False"},{"line_number":2817,"context_line":"                    LOG.warning(\"Failed to remove Default Protection \""}],"source_content_type":"text/x-python","patch_set":1,"id":"8849d7fb_afdf8919","line":2814,"in_reply_to":"b41112e1_db2da719","updated":"2025-01-16 13:32:15.000000000","message":"Done","commit_id":"527dbf6839c1c78235265551c32b9b3fb7074da8"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"3457aa02ce17ba0689bce005d9444e6964ea563c","unresolved":true,"context_lines":[{"line_number":2798,"context_line":"                    LOG.warning(\"Pod %s is deleted but not\""},{"line_number":2799,"context_line":"                                \" eradicated - will recreate.\", name)"},{"line_number":2800,"context_line":"                    source_array.delete_pods(names\u003d[name])"},{"line_number":2801,"context_line":"                    self._create_pod_if_not_exist(source_array, name)"},{"line_number":2802,"context_line":"        else:"},{"line_number":2803,"context_line":"            if self._array.safemode:"},{"line_number":2804,"context_line":"                # Now we check to ensure that the created pod does not have a"}],"source_content_type":"text/x-python","patch_set":3,"id":"7cd168e4_e8b6fd35","line":2801,"range":{"start_line":2801,"start_character":25,"end_line":2801,"end_character":49},"updated":"2025-03-12 21:43:24.000000000","message":"OK, so when we recurse, we should not get a 400 because we deleted the pods at line 2800, and will take the else branch at line 2802 and when we return here there\u0027s nothing else in the function.  If we do get a 400 on the second call for some other reason than the 2 we are checking here, we\u0027ll raise an exception from the second call, which will get us back here, and with reraise\u003dFalse at line 2797, the new exception will be raised, not the original one.  So I *think* this is OK (but that\u0027s why we have multiple reviewers!).","commit_id":"492c9f301091ed26b043a52984d17eb44f58d8e1"},{"author":{"_account_id":13425,"name":"Simon Dodsley","email":"simon@purestorage.com","username":"sdodsley"},"change_message_id":"97e8dfbe6d30dee23316a904c042c978285314a1","unresolved":false,"context_lines":[{"line_number":2798,"context_line":"                    LOG.warning(\"Pod %s is deleted but not\""},{"line_number":2799,"context_line":"                                \" eradicated - will recreate.\", name)"},{"line_number":2800,"context_line":"                    source_array.delete_pods(names\u003d[name])"},{"line_number":2801,"context_line":"                    self._create_pod_if_not_exist(source_array, name)"},{"line_number":2802,"context_line":"        else:"},{"line_number":2803,"context_line":"            if self._array.safemode:"},{"line_number":2804,"context_line":"                # Now we check to ensure that the created pod does not have a"}],"source_content_type":"text/x-python","patch_set":3,"id":"90921ba1_f7844fbe","line":2801,"range":{"start_line":2801,"start_character":25,"end_line":2801,"end_character":49},"in_reply_to":"7cd168e4_e8b6fd35","updated":"2025-03-12 21:56:11.000000000","message":"This follows other logic we had had in the driver for years, so it does work as expected.","commit_id":"492c9f301091ed26b043a52984d17eb44f58d8e1"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"571336155562da0221f7e59326ce7c6d3fad60d9","unresolved":false,"context_lines":[{"line_number":2798,"context_line":"                    LOG.warning(\"Pod %s is deleted but not\""},{"line_number":2799,"context_line":"                                \" eradicated - will recreate.\", name)"},{"line_number":2800,"context_line":"                    source_array.delete_pods(names\u003d[name])"},{"line_number":2801,"context_line":"                    self._create_pod_if_not_exist(source_array, name)"},{"line_number":2802,"context_line":"        else:"},{"line_number":2803,"context_line":"            if self._array.safemode:"},{"line_number":2804,"context_line":"                # Now we check to ensure that the created pod does not have a"}],"source_content_type":"text/x-python","patch_set":3,"id":"ed2a5139_84693e82","line":2801,"range":{"start_line":2801,"start_character":25,"end_line":2801,"end_character":49},"in_reply_to":"90921ba1_f7844fbe","updated":"2025-03-13 16:50:07.000000000","message":"OK, that same recursive logic is on this patch from Rocky:\nhttps://review.opendev.org/c/openstack/cinder/+/580003","commit_id":"492c9f301091ed26b043a52984d17eb44f58d8e1"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"3457aa02ce17ba0689bce005d9444e6964ea563c","unresolved":true,"context_lines":[{"line_number":2815,"context_line":"                            flasharray.ContainerDefaultProtection("},{"line_number":2816,"context_line":"                                default_protections\u003d[])))"},{"line_number":2817,"context_line":"                    if res.status_code !\u003d 200:"},{"line_number":2818,"context_line":"                        ctxt.reraise \u003d False"},{"line_number":2819,"context_line":"                        LOG.warning(\"Failed to remove Default Protection \""},{"line_number":2820,"context_line":"                                    \"Container: %s\", res.errors[0])"},{"line_number":2821,"context_line":"                    else:"}],"source_content_type":"text/x-python","patch_set":3,"id":"98a0f213_5c87bac4","line":2818,"range":{"start_line":2818,"start_character":24,"end_line":2818,"end_character":28},"updated":"2025-03-12 21:43:24.000000000","message":"-1: what is this a reference to?","commit_id":"492c9f301091ed26b043a52984d17eb44f58d8e1"},{"author":{"_account_id":13425,"name":"Simon Dodsley","email":"simon@purestorage.com","username":"sdodsley"},"change_message_id":"97e8dfbe6d30dee23316a904c042c978285314a1","unresolved":false,"context_lines":[{"line_number":2815,"context_line":"                            flasharray.ContainerDefaultProtection("},{"line_number":2816,"context_line":"                                default_protections\u003d[])))"},{"line_number":2817,"context_line":"                    if res.status_code !\u003d 200:"},{"line_number":2818,"context_line":"                        ctxt.reraise \u003d False"},{"line_number":2819,"context_line":"                        LOG.warning(\"Failed to remove Default Protection \""},{"line_number":2820,"context_line":"                                    \"Container: %s\", res.errors[0])"},{"line_number":2821,"context_line":"                    else:"}],"source_content_type":"text/x-python","patch_set":3,"id":"4b452edd_d6d418f7","line":2818,"range":{"start_line":2818,"start_character":24,"end_line":2818,"end_character":28},"in_reply_to":"98a0f213_5c87bac4","updated":"2025-03-12 21:56:11.000000000","message":"Good point. That shouldn\u0027t be there...","commit_id":"492c9f301091ed26b043a52984d17eb44f58d8e1"}],"releasenotes/notes/pure_pod_safemode-d64b0705828529e5.yaml":[{"author":{"_account_id":29122,"name":"Raghavendra Tilay","email":"raghavendra-uddhav.tilay@hpe.com","username":"raghavendrat"},"change_message_id":"92bfd97f78e68fc2e1e059e65bdf3ab0f428745e","unresolved":true,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"fixes:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    [Pure Storage] When using synchronous replication, ensured that FlashArray"},{"line_number":5,"context_line":"    pods used by Cinder do not have SafeMode protection groups attached, as"},{"line_number":6,"context_line":"    SafeMode is not supported by Cinder."}],"source_content_type":"text/x-yaml","patch_set":2,"id":"9b40b2dc_d19789d6","line":5,"range":{"start_line":4,"start_character":0,"end_line":5,"end_character":75},"updated":"2025-02-26 06:20:09.000000000","message":"In these two lines, number of characters exceed 72.\nNot sure if zuul ignores this.\nIf another patchset is submitted,\nit would to great to wrap at 72 chars per line.","commit_id":"716b67fe9e81ee5581cd7bcccbbe61d2efecda53"},{"author":{"_account_id":13425,"name":"Simon Dodsley","email":"simon@purestorage.com","username":"sdodsley"},"change_message_id":"174368d64d9339d336a8a362c1b643218ca1268a","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"fixes:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    [Pure Storage] When using synchronous replication, ensured that FlashArray"},{"line_number":5,"context_line":"    pods used by Cinder do not have SafeMode protection groups attached, as"},{"line_number":6,"context_line":"    SafeMode is not supported by Cinder."}],"source_content_type":"text/x-yaml","patch_set":2,"id":"2044a2d6_72c6a704","line":5,"range":{"start_line":4,"start_character":0,"end_line":5,"end_character":75},"in_reply_to":"9b40b2dc_d19789d6","updated":"2025-03-12 21:57:19.000000000","message":"Done","commit_id":"716b67fe9e81ee5581cd7bcccbbe61d2efecda53"}]}
