)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":13425,"name":"Simon Dodsley","email":"simon@purestorage.com","username":"sdodsley"},"change_message_id":"0f9c872721b33b9fe4949e46234b47f28adb3dc4","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"62cf7a27_3d1bd36c","updated":"2024-08-16 17:31:47.000000000","message":"run Pure Storage CI","commit_id":"738e018f24d5a5768b9df6dfe4ca3ccc829205e7"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"6ebaffec21c5bc7387ecc0894b5c43390963b41e","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"cde0f131_8e8cbb20","updated":"2024-08-19 16:30:58.000000000","message":"A few questions inline.","commit_id":"be5b2beceba82266b6176c2ac3a4607f41a49151"},{"author":{"_account_id":13425,"name":"Simon Dodsley","email":"simon@purestorage.com","username":"sdodsley"},"change_message_id":"9d7292c0a7e4ab7bd431e23b7e2fb2b81cf3a367","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"b6aac3f0_a083d35e","updated":"2024-08-16 22:55:55.000000000","message":"run Pure Storage CI","commit_id":"be5b2beceba82266b6176c2ac3a4607f41a49151"},{"author":{"_account_id":13425,"name":"Simon Dodsley","email":"simon@purestorage.com","username":"sdodsley"},"change_message_id":"efc7478aa2c2ab27cd04853cb2175dffd495f77e","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"f3234e23_7cf45d1e","updated":"2024-08-16 21:59:04.000000000","message":"run Pure Storage CI","commit_id":"be5b2beceba82266b6176c2ac3a4607f41a49151"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"cc9b59058a44fdfe2c714004146e7cc1d4298993","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":8,"id":"fe93a182_889840bc","updated":"2024-08-21 13:38:31.000000000","message":"I don\u0027t see anything concerning.  Thanks for the revised comments, it\u0027s easier to understand why the changes are being made now.","commit_id":"a4f6bd063262abe33aa2377a1f12be9e548369a1"},{"author":{"_account_id":9236,"name":"Jon Bernard","email":"jobernar@redhat.com","username":"jbernard"},"change_message_id":"2590fe7134d82fd2b2b3d2de739bb89e38456bd8","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":8,"id":"adb95f36_32dbcde4","updated":"2024-08-21 21:16:21.000000000","message":"Isolated, passing CI, changes look okay to me.","commit_id":"a4f6bd063262abe33aa2377a1f12be9e548369a1"},{"author":{"_account_id":13425,"name":"Simon Dodsley","email":"simon@purestorage.com","username":"sdodsley"},"change_message_id":"922b84049060109671baf879cd59e516052c182c","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":8,"id":"086d99b8_2cce852d","updated":"2024-08-20 03:38:21.000000000","message":"run Pure Storage CI","commit_id":"a4f6bd063262abe33aa2377a1f12be9e548369a1"},{"author":{"_account_id":13425,"name":"Simon Dodsley","email":"simon@purestorage.com","username":"sdodsley"},"change_message_id":"184d1acdf5168b16b1e1ddf9604b7d86829185b4","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":8,"id":"28659fbc_41c445d9","updated":"2024-08-20 14:39:59.000000000","message":"run Pure Storage CI","commit_id":"a4f6bd063262abe33aa2377a1f12be9e548369a1"},{"author":{"_account_id":13425,"name":"Simon Dodsley","email":"simon@purestorage.com","username":"sdodsley"},"change_message_id":"04c84c0c3a0d5c7f3550aa684b7db165774b7330","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":8,"id":"30ca0ff0_854ab793","updated":"2024-08-19 23:16:23.000000000","message":"run Pure Storage CI","commit_id":"a4f6bd063262abe33aa2377a1f12be9e548369a1"},{"author":{"_account_id":13425,"name":"Simon Dodsley","email":"simon@purestorage.com","username":"sdodsley"},"change_message_id":"51f3260a92da6d9d3b4f9b33bb8503d4d8c645cd","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":8,"id":"33f7a9ba_eba008f0","updated":"2024-08-20 19:38:57.000000000","message":"run Pure Storage CI","commit_id":"a4f6bd063262abe33aa2377a1f12be9e548369a1"},{"author":{"_account_id":13425,"name":"Simon Dodsley","email":"simon@purestorage.com","username":"sdodsley"},"change_message_id":"423b52cc8c0dc27d37170744f6fe2c8f3dfc9af9","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":8,"id":"a6e718bc_cff01028","updated":"2024-08-20 13:24:44.000000000","message":"run Pure Storage CI","commit_id":"a4f6bd063262abe33aa2377a1f12be9e548369a1"},{"author":{"_account_id":13425,"name":"Simon Dodsley","email":"simon@purestorage.com","username":"sdodsley"},"change_message_id":"80a49a47d7fbad54dbb72234def18f6a2dde263a","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":8,"id":"e41da790_6ab84ebb","updated":"2024-08-21 03:44:02.000000000","message":"run Pure Storage CI","commit_id":"a4f6bd063262abe33aa2377a1f12be9e548369a1"}],"cinder/volume/drivers/pure.py":[{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"6ebaffec21c5bc7387ecc0894b5c43390963b41e","unresolved":true,"context_lines":[{"line_number":728,"context_line":"        repl_type \u003d self._get_replication_type_from_vol_type("},{"line_number":729,"context_line":"            volume.volume_type)"},{"line_number":730,"context_line":"        try:"},{"line_number":731,"context_line":"            pgroup \u003d array.get_protection_groups_volumes("},{"line_number":732,"context_line":"                member_names\u003d[volume.provider_id]).items"},{"line_number":733,"context_line":"        except AttributeError:"},{"line_number":734,"context_line":"            pgroup \u003d None"}],"source_content_type":"text/x-python","patch_set":6,"id":"79784262_85827d74","line":731,"range":{"start_line":731,"start_character":21,"end_line":731,"end_character":26},"updated":"2024-08-19 16:30:58.000000000","message":"just want to verify that this is calling pypureclient code, which is raising this AttributeError","commit_id":"be5b2beceba82266b6176c2ac3a4607f41a49151"},{"author":{"_account_id":13425,"name":"Simon Dodsley","email":"simon@purestorage.com","username":"sdodsley"},"change_message_id":"8916d6526de19f69bb3f27f75f0035218fd490a2","unresolved":false,"context_lines":[{"line_number":728,"context_line":"        repl_type \u003d self._get_replication_type_from_vol_type("},{"line_number":729,"context_line":"            volume.volume_type)"},{"line_number":730,"context_line":"        try:"},{"line_number":731,"context_line":"            pgroup \u003d array.get_protection_groups_volumes("},{"line_number":732,"context_line":"                member_names\u003d[volume.provider_id]).items"},{"line_number":733,"context_line":"        except AttributeError:"},{"line_number":734,"context_line":"            pgroup \u003d None"}],"source_content_type":"text/x-python","patch_set":6,"id":"88a56a6a_bb714048","line":731,"range":{"start_line":731,"start_character":21,"end_line":731,"end_character":26},"in_reply_to":"79784262_85827d74","updated":"2024-08-19 16:35:56.000000000","message":"yes","commit_id":"be5b2beceba82266b6176c2ac3a4607f41a49151"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"6ebaffec21c5bc7387ecc0894b5c43390963b41e","unresolved":true,"context_lines":[{"line_number":1285,"context_line":"        for volume, snapshot in zip(volumes, snapshots):"},{"line_number":1286,"context_line":"            vol_models.append(self.create_volume_from_snapshot(volume,"},{"line_number":1287,"context_line":"                                                               snapshot,"},{"line_number":1288,"context_line":"                                                               True))"},{"line_number":1289,"context_line":"        return vol_models"},{"line_number":1290,"context_line":""},{"line_number":1291,"context_line":"    def _create_cg_from_cg(self, group, source_group, volumes, source_vols):"}],"source_content_type":"text/x-python","patch_set":6,"id":"6d6bef07_19ac05d2","line":1288,"range":{"start_line":1288,"start_character":63,"end_line":1288,"end_character":67},"updated":"2024-08-19 16:30:58.000000000","message":"nit: it\u0027s easier to read if you have \u0027cgsnapshot\u003dTrue\u0027 here","commit_id":"be5b2beceba82266b6176c2ac3a4607f41a49151"},{"author":{"_account_id":13425,"name":"Simon Dodsley","email":"simon@purestorage.com","username":"sdodsley"},"change_message_id":"8916d6526de19f69bb3f27f75f0035218fd490a2","unresolved":false,"context_lines":[{"line_number":1285,"context_line":"        for volume, snapshot in zip(volumes, snapshots):"},{"line_number":1286,"context_line":"            vol_models.append(self.create_volume_from_snapshot(volume,"},{"line_number":1287,"context_line":"                                                               snapshot,"},{"line_number":1288,"context_line":"                                                               True))"},{"line_number":1289,"context_line":"        return vol_models"},{"line_number":1290,"context_line":""},{"line_number":1291,"context_line":"    def _create_cg_from_cg(self, group, source_group, volumes, source_vols):"}],"source_content_type":"text/x-python","patch_set":6,"id":"869a74b7_fe05d069","line":1288,"range":{"start_line":1288,"start_character":63,"end_line":1288,"end_character":67},"in_reply_to":"6d6bef07_19ac05d2","updated":"2024-08-19 16:35:56.000000000","message":"Acknowledged","commit_id":"be5b2beceba82266b6176c2ac3a4607f41a49151"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"6ebaffec21c5bc7387ecc0894b5c43390963b41e","unresolved":true,"context_lines":[{"line_number":2176,"context_line":""},{"line_number":2177,"context_line":"    def _get_pgroup_snap_name(self, group_snapshot):"},{"line_number":2178,"context_line":"        \"\"\"Return the name of the pgroup snapshot that Purity will use\"\"\""},{"line_number":2179,"context_line":"        return \"%s.%s\" % (self._get_pgroup_name(group_snapshot[\u0027group\u0027]),"},{"line_number":2180,"context_line":"                          self._get_pgroup_snap_suffix(group_snapshot))"},{"line_number":2181,"context_line":""},{"line_number":2182,"context_line":"    @staticmethod"}],"source_content_type":"text/x-python","patch_set":6,"id":"2dc999c8_6f4bc1b1","line":2179,"range":{"start_line":2179,"start_character":48,"end_line":2179,"end_character":62},"updated":"2024-08-19 16:30:58.000000000","message":"what\u0027s happened to the group_snapshot object that you need to treat it as a dict now?  The \"group_shapshot.group\" syntax was introduced here in 2018.","commit_id":"be5b2beceba82266b6176c2ac3a4607f41a49151"},{"author":{"_account_id":13425,"name":"Simon Dodsley","email":"simon@purestorage.com","username":"sdodsley"},"change_message_id":"8916d6526de19f69bb3f27f75f0035218fd490a2","unresolved":false,"context_lines":[{"line_number":2176,"context_line":""},{"line_number":2177,"context_line":"    def _get_pgroup_snap_name(self, group_snapshot):"},{"line_number":2178,"context_line":"        \"\"\"Return the name of the pgroup snapshot that Purity will use\"\"\""},{"line_number":2179,"context_line":"        return \"%s.%s\" % (self._get_pgroup_name(group_snapshot[\u0027group\u0027]),"},{"line_number":2180,"context_line":"                          self._get_pgroup_snap_suffix(group_snapshot))"},{"line_number":2181,"context_line":""},{"line_number":2182,"context_line":"    @staticmethod"}],"source_content_type":"text/x-python","patch_set":6,"id":"43bb330f_cfd7d507","line":2179,"range":{"start_line":2179,"start_character":48,"end_line":2179,"end_character":62},"in_reply_to":"2dc999c8_6f4bc1b1","updated":"2024-08-19 16:35:56.000000000","message":"oops - changed that incorrectly.","commit_id":"be5b2beceba82266b6176c2ac3a4607f41a49151"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"6ebaffec21c5bc7387ecc0894b5c43390963b41e","unresolved":true,"context_lines":[{"line_number":3368,"context_line":"        \"\"\""},{"line_number":3369,"context_line":"        ports \u003d self._get_valid_ports(array)"},{"line_number":3370,"context_line":"        valid_ports \u003d [port.wwn.replace(\":\", \"\") for port in ports if getattr("},{"line_number":3371,"context_line":"            port, \"wwn\", None) and not getattr(port, \"nqn\", None)]"},{"line_number":3372,"context_line":"        return valid_ports"},{"line_number":3373,"context_line":""},{"line_number":3374,"context_line":"    @pure_driver_debug_trace"}],"source_content_type":"text/x-python","patch_set":6,"id":"c0f964d6_5277c46a","line":3371,"updated":"2024-08-19 16:30:58.000000000","message":"This is the only thing that\u0027s explained clearly in the commit message, but maybe the other issues are sufficiently clear to some who understands pure storage.","commit_id":"be5b2beceba82266b6176c2ac3a4607f41a49151"},{"author":{"_account_id":13425,"name":"Simon Dodsley","email":"simon@purestorage.com","username":"sdodsley"},"change_message_id":"8916d6526de19f69bb3f27f75f0035218fd490a2","unresolved":false,"context_lines":[{"line_number":3368,"context_line":"        \"\"\""},{"line_number":3369,"context_line":"        ports \u003d self._get_valid_ports(array)"},{"line_number":3370,"context_line":"        valid_ports \u003d [port.wwn.replace(\":\", \"\") for port in ports if getattr("},{"line_number":3371,"context_line":"            port, \"wwn\", None) and not getattr(port, \"nqn\", None)]"},{"line_number":3372,"context_line":"        return valid_ports"},{"line_number":3373,"context_line":""},{"line_number":3374,"context_line":"    @pure_driver_debug_trace"}],"source_content_type":"text/x-python","patch_set":6,"id":"93f21535_7805d471","line":3371,"in_reply_to":"c0f964d6_5277c46a","updated":"2024-08-19 16:35:56.000000000","message":"Done","commit_id":"be5b2beceba82266b6176c2ac3a4607f41a49151"}]}
