)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":30555,"name":"Fernando Ferraz","display_name":"Fernando Ferraz","email":"fesilva@redhat.com","username":"fernandoperches"},"change_message_id":"e44a2cf114ee4297df2e17f705c9ee0720ed0136","unresolved":true,"context_lines":[{"line_number":14,"context_line":""},{"line_number":15,"context_line":"Closes-Bug: #2119123"},{"line_number":16,"context_line":"Change-Id: I52ce9b74a0db8bd821a436e429001279812d149d"},{"line_number":17,"context_line":"Signed-off-by: anoop2 \u003canoop.shukla@netapp.com\u003e"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":6,"id":"ff8a85f7_fa5fe681","line":17,"updated":"2025-09-09 17:27:50.000000000","message":"Hi Anoop, I believe this needs to be changed to match your real name instead of just the nickname.","commit_id":"07036cc66c9904b171755ddc1707a991daf1f978"},{"author":{"_account_id":38059,"name":"Anoop Kumar Shukla","display_name":"Anoop Shukla","email":"anoop.shukla@netapp.com","username":"anoop2","status":"NetApp"},"change_message_id":"30918e95bb7929dc32e3f80c3554f97d2ffeb23b","unresolved":false,"context_lines":[{"line_number":14,"context_line":""},{"line_number":15,"context_line":"Closes-Bug: #2119123"},{"line_number":16,"context_line":"Change-Id: I52ce9b74a0db8bd821a436e429001279812d149d"},{"line_number":17,"context_line":"Signed-off-by: anoop2 \u003canoop.shukla@netapp.com\u003e"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":6,"id":"7c58781b_7c1739f4","line":17,"in_reply_to":"ff8a85f7_fa5fe681","updated":"2025-09-10 14:14:57.000000000","message":"Have resolved it on the Signed-off-by field.","commit_id":"07036cc66c9904b171755ddc1707a991daf1f978"}],"/PATCHSET_LEVEL":[{"author":{"_account_id":38059,"name":"Anoop Kumar Shukla","display_name":"Anoop Shukla","email":"anoop.shukla@netapp.com","username":"anoop2","status":"NetApp"},"change_message_id":"a43ec694c509cfa28551758edcba251edcf6b4c3","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"36c363c2_72cf6054","updated":"2025-08-13 14:06:50.000000000","message":"recheck","commit_id":"e097c703554a879a391cdeaf109e5ba24d32f705"},{"author":{"_account_id":38059,"name":"Anoop Kumar Shukla","display_name":"Anoop Shukla","email":"anoop.shukla@netapp.com","username":"anoop2","status":"NetApp"},"change_message_id":"7c98b1a5a254c5f63ec2164a3043a2c73a7bc791","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"9c02ab06_d161acde","updated":"2025-08-01 08:34:20.000000000","message":"recheck","commit_id":"e097c703554a879a391cdeaf109e5ba24d32f705"},{"author":{"_account_id":36180,"name":"Gireesh Awasthi","display_name":"Gireesh","email":"gawasthi2010@gmail.com","username":"agireesh","status":"NetApp"},"change_message_id":"31425c319d22ac23218189a0c96788e79b164223","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"8a125403_e0094f76","updated":"2025-08-25 04:43:44.000000000","message":"LGTM ..!","commit_id":"13484056db0b59582b851dbb3de28793d1eb4a60"},{"author":{"_account_id":36180,"name":"Gireesh Awasthi","display_name":"Gireesh","email":"gawasthi2010@gmail.com","username":"agireesh","status":"NetApp"},"change_message_id":"afc3280701cc6616426917acd16f6752cc685e21","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"ae167512_96f8d268","updated":"2025-08-25 04:58:16.000000000","message":"LGTM ..!","commit_id":"13484056db0b59582b851dbb3de28793d1eb4a60"},{"author":{"_account_id":38290},"change_message_id":"24270c393dd29a2d01af05385db219885884adff","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"e0191823_40c4ef3a","updated":"2025-08-26 04:54:42.000000000","message":"Run-NetApp CI","commit_id":"13484056db0b59582b851dbb3de28793d1eb4a60"},{"author":{"_account_id":38059,"name":"Anoop Kumar Shukla","display_name":"Anoop Shukla","email":"anoop.shukla@netapp.com","username":"anoop2","status":"NetApp"},"change_message_id":"fb88b8d46d2e2172b8e12e3f1f2d82fb93e909cd","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"dbc8e76f_0ce0cfef","updated":"2025-09-01 03:38:39.000000000","message":"recheck","commit_id":"c923534b119bdc5ac00bc5c45ea38c88d00b5da6"},{"author":{"_account_id":21129,"name":"Alan Bishop","email":"abishopsweng@gmail.com","username":"ASBishop","status":"ex Red Hat"},"change_message_id":"a54aa25c419d4bc013e6fd4b2d9e944f3f53085b","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"b86178a2_311fe41a","updated":"2025-09-03 13:54:40.000000000","message":"I have several questions, but this also needs a release note.","commit_id":"cabe44bb9f67121696bc0f79ff61a27bdbf95155"},{"author":{"_account_id":36180,"name":"Gireesh Awasthi","display_name":"Gireesh","email":"gawasthi2010@gmail.com","username":"agireesh","status":"NetApp"},"change_message_id":"42570e6796bd8b03f722bb03f9f2bbd4046c7995","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"2657388f_6fbc01f7","updated":"2025-09-02 06:14:37.000000000","message":"LGTM ..!","commit_id":"cabe44bb9f67121696bc0f79ff61a27bdbf95155"},{"author":{"_account_id":36179,"name":"Saikumar Pulluri","display_name":"Saikumar Pulluri","email":"saikumar1016@gmail.com","username":"pulluri"},"change_message_id":"a9f8d1dd34ddd6f5734cd77caede9266193032fd","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"9e4fcff7_2a429092","updated":"2025-09-02 06:16:24.000000000","message":"Looks good to me. Thanks for working on this Anoop.","commit_id":"cabe44bb9f67121696bc0f79ff61a27bdbf95155"},{"author":{"_account_id":38290},"change_message_id":"a5e0ac80c4e1ace1062478833dbc53973fdb25fd","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"405472f5_5f5be5dc","updated":"2025-09-03 06:06:15.000000000","message":"run-NetApp CI","commit_id":"cabe44bb9f67121696bc0f79ff61a27bdbf95155"},{"author":{"_account_id":38059,"name":"Anoop Kumar Shukla","display_name":"Anoop Shukla","email":"anoop.shukla@netapp.com","username":"anoop2","status":"NetApp"},"change_message_id":"4da7a3b2a7044ee1693ea838c058c0b34f03c614","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"461b96f0_4258742d","in_reply_to":"b86178a2_311fe41a","updated":"2025-09-09 09:41:36.000000000","message":"Done! Thanks for pointing this out.","commit_id":"cabe44bb9f67121696bc0f79ff61a27bdbf95155"},{"author":{"_account_id":38059,"name":"Anoop Kumar Shukla","display_name":"Anoop Shukla","email":"anoop.shukla@netapp.com","username":"anoop2","status":"NetApp"},"change_message_id":"4da7a3b2a7044ee1693ea838c058c0b34f03c614","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"8b57fecb_b161b5f3","updated":"2025-09-09 09:41:36.000000000","message":"recheck","commit_id":"07036cc66c9904b171755ddc1707a991daf1f978"},{"author":{"_account_id":13915,"name":"Silvan Kaiser","email":"silvan@quobyte.com","username":"kaisers"},"change_message_id":"9620dc1b7703b04aab5ba2c2b5097ec794d3aa37","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"91161fc4_04423dcd","updated":"2025-09-09 09:37:19.000000000","message":"run-quobyteci","commit_id":"07036cc66c9904b171755ddc1707a991daf1f978"},{"author":{"_account_id":13915,"name":"Silvan Kaiser","email":"silvan@quobyte.com","username":"kaisers"},"change_message_id":"abee948522fae6bbdec50e97ccdccff9b90fbe31","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"f7c639f4_7d3a1f9f","updated":"2025-09-09 07:40:01.000000000","message":"run-quobyteci","commit_id":"07036cc66c9904b171755ddc1707a991daf1f978"},{"author":{"_account_id":38059,"name":"Anoop Kumar Shukla","display_name":"Anoop Shukla","email":"anoop.shukla@netapp.com","username":"anoop2","status":"NetApp"},"change_message_id":"30918e95bb7929dc32e3f80c3554f97d2ffeb23b","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":8,"id":"c8db8e67_ba7d28d3","updated":"2025-09-10 14:14:57.000000000","message":"recheck","commit_id":"ce128c7824806b0a9e944e0fdc83331297d3d728"},{"author":{"_account_id":36179,"name":"Saikumar Pulluri","display_name":"Saikumar Pulluri","email":"saikumar1016@gmail.com","username":"pulluri"},"change_message_id":"fa40cd0556e48ad0aafa21b95aee04a11d5977fc","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":9,"id":"a21d5258_c1a68b0a","updated":"2025-09-12 05:25:51.000000000","message":"Run-NetApp CI","commit_id":"ffd6c110c2621b981c7b0c23cd69124db62827a5"},{"author":{"_account_id":38059,"name":"Anoop Kumar Shukla","display_name":"Anoop Shukla","email":"anoop.shukla@netapp.com","username":"anoop2","status":"NetApp"},"change_message_id":"6f83d63826fe53d9a3efcbfa46fe04273d7129ab","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":10,"id":"3857085f_5693b8c5","updated":"2025-09-15 06:25:23.000000000","message":"Run-NetApp CI","commit_id":"0715aa3cb552382e46018ef22e806fdfe3debbb4"},{"author":{"_account_id":38059,"name":"Anoop Kumar Shukla","display_name":"Anoop Shukla","email":"anoop.shukla@netapp.com","username":"anoop2","status":"NetApp"},"change_message_id":"3a7b0a6b670ed82a5de7007962707c4a33b3d069","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":10,"id":"1f279db0_0acb2747","updated":"2025-09-15 16:14:36.000000000","message":"recheck","commit_id":"0715aa3cb552382e46018ef22e806fdfe3debbb4"},{"author":{"_account_id":38059,"name":"Anoop Kumar Shukla","display_name":"Anoop Shukla","email":"anoop.shukla@netapp.com","username":"anoop2","status":"NetApp"},"change_message_id":"9f0db0a88d75ae3f1c87eb9dc2ba221921b58118","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":10,"id":"631ecf4e_37d25aa2","updated":"2025-09-16 07:43:06.000000000","message":"recheck","commit_id":"0715aa3cb552382e46018ef22e806fdfe3debbb4"},{"author":{"_account_id":36180,"name":"Gireesh Awasthi","display_name":"Gireesh","email":"gawasthi2010@gmail.com","username":"agireesh","status":"NetApp"},"change_message_id":"8dd933f1d40edb9b0414f962b550ca0995754c53","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":12,"id":"488b1d13_b9ef6f71","updated":"2025-09-17 08:50:02.000000000","message":"LGTM ..!","commit_id":"1698f52e8d70814a4b0904e53c6b3d82b4dd5c66"},{"author":{"_account_id":36179,"name":"Saikumar Pulluri","display_name":"Saikumar Pulluri","email":"saikumar1016@gmail.com","username":"pulluri"},"change_message_id":"d9d4f4b85f0a37513f3ff3d70351dd18e1213533","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":12,"id":"1c5ce907_331a3d46","updated":"2025-09-17 07:34:52.000000000","message":"Looks good to me. Thanks for working on this Anoop.","commit_id":"1698f52e8d70814a4b0904e53c6b3d82b4dd5c66"},{"author":{"_account_id":38059,"name":"Anoop Kumar Shukla","display_name":"Anoop Shukla","email":"anoop.shukla@netapp.com","username":"anoop2","status":"NetApp"},"change_message_id":"3e71400fe98c5ad793692ffe12cb23cf37c15d14","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":12,"id":"01841885_0555563b","updated":"2025-09-16 18:07:48.000000000","message":"recheck","commit_id":"1698f52e8d70814a4b0904e53c6b3d82b4dd5c66"},{"author":{"_account_id":38059,"name":"Anoop Kumar Shukla","display_name":"Anoop Shukla","email":"anoop.shukla@netapp.com","username":"anoop2","status":"NetApp"},"change_message_id":"795bdcd498b9658f1654a8ded85dc79c4fdf8dc5","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":12,"id":"4644e2b1_3736337e","updated":"2025-09-17 01:40:39.000000000","message":"recheck","commit_id":"1698f52e8d70814a4b0904e53c6b3d82b4dd5c66"},{"author":{"_account_id":38059,"name":"Anoop Kumar Shukla","display_name":"Anoop Shukla","email":"anoop.shukla@netapp.com","username":"anoop2","status":"NetApp"},"change_message_id":"1afecdcc5d6d1176c89fde4aa1bc6c5aab044871","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":12,"id":"c8004ef0_d7a66f98","updated":"2025-09-16 12:48:22.000000000","message":"recheck","commit_id":"1698f52e8d70814a4b0904e53c6b3d82b4dd5c66"},{"author":{"_account_id":13425,"name":"Simon Dodsley","email":"simon@purestorage.com","username":"sdodsley"},"change_message_id":"f282b6d60bfd7c11bfa6404ecb030cda72deb593","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":13,"id":"ed282e75_ea60be9a","updated":"2025-10-08 14:21:37.000000000","message":"Looks good","commit_id":"4a2b27c6befcc48da7ae01ec9e30347d26093243"},{"author":{"_account_id":38059,"name":"Anoop Kumar Shukla","display_name":"Anoop Shukla","email":"anoop.shukla@netapp.com","username":"anoop2","status":"NetApp"},"change_message_id":"7898e78f07aed4e2c11665eba6933dd7f9993d91","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":13,"id":"f98fb3bd_349fc257","updated":"2025-09-19 06:18:19.000000000","message":"Run-NetApp CI","commit_id":"4a2b27c6befcc48da7ae01ec9e30347d26093243"}],"cinder/tests/unit/volume/drivers/netapp/dataontap/test_block_base.py":[{"author":{"_account_id":21129,"name":"Alan Bishop","email":"abishopsweng@gmail.com","username":"ASBishop","status":"ex Red Hat"},"change_message_id":"51b47132b6cf93e48557b36c142bb193690e9f3e","unresolved":true,"context_lines":[{"line_number":368,"context_line":"    @mock.patch.object(block_base.NetAppBlockStorageLibrary,"},{"line_number":369,"context_line":"                       \u0027_find_mapped_lun_igroup\u0027)"},{"line_number":370,"context_line":"    def test_unmap_lun_empty(self, mock_find_mapped_lun_igroup, mock_split):"},{"line_number":371,"context_line":"        config \u003d mock.Mock()"},{"line_number":372,"context_line":"        config.get.return_value \u003d \"9.16.0\""},{"line_number":373,"context_line":"        config.safe_get.return_value \u003d None"},{"line_number":374,"context_line":"        mock_split.return_value \u003d [\"9\", \"16\", \"0\"]"},{"line_number":375,"context_line":"        self.zapi_client.get_lun_map.return_value \u003d fake.ISCSI_ONE_MAP_LIST"},{"line_number":376,"context_line":""},{"line_number":377,"context_line":"        self.library._unmap_lun(fake.LUN_PATH, fake.ISCSI_EMPTY_MAP_LIST)"}],"source_content_type":"text/x-python","patch_set":12,"id":"5b1fa05b_6e7adf94","line":374,"range":{"start_line":371,"start_character":0,"end_line":374,"end_character":50},"updated":"2025-09-17 12:40:50.000000000","message":"What is the point of all this? I\u0027m especially confused by the need to mock re.split.","commit_id":"1698f52e8d70814a4b0904e53c6b3d82b4dd5c66"},{"author":{"_account_id":38059,"name":"Anoop Kumar Shukla","display_name":"Anoop Shukla","email":"anoop.shukla@netapp.com","username":"anoop2","status":"NetApp"},"change_message_id":"2dcd2226fd16e946009a8ecb1711ecd029933353","unresolved":false,"context_lines":[{"line_number":368,"context_line":"    @mock.patch.object(block_base.NetAppBlockStorageLibrary,"},{"line_number":369,"context_line":"                       \u0027_find_mapped_lun_igroup\u0027)"},{"line_number":370,"context_line":"    def test_unmap_lun_empty(self, mock_find_mapped_lun_igroup, mock_split):"},{"line_number":371,"context_line":"        config \u003d mock.Mock()"},{"line_number":372,"context_line":"        config.get.return_value \u003d \"9.16.0\""},{"line_number":373,"context_line":"        config.safe_get.return_value \u003d None"},{"line_number":374,"context_line":"        mock_split.return_value \u003d [\"9\", \"16\", \"0\"]"},{"line_number":375,"context_line":"        self.zapi_client.get_lun_map.return_value \u003d fake.ISCSI_ONE_MAP_LIST"},{"line_number":376,"context_line":""},{"line_number":377,"context_line":"        self.library._unmap_lun(fake.LUN_PATH, fake.ISCSI_EMPTY_MAP_LIST)"}],"source_content_type":"text/x-python","patch_set":12,"id":"3a0b5ce8_f675f55e","line":374,"range":{"start_line":371,"start_character":0,"end_line":374,"end_character":50},"in_reply_to":"5b1fa05b_6e7adf94","updated":"2025-09-17 15:07:10.000000000","message":"Acknowledged - have removed these mocks now.","commit_id":"1698f52e8d70814a4b0904e53c6b3d82b4dd5c66"}],"cinder/volume/drivers/netapp/dataontap/block_base.py":[{"author":{"_account_id":36171,"name":"jayaanand borra","display_name":"jayaanand borra","email":"jayaanand.borra@netapp.com","username":"jayaanan","status":"netapp"},"change_message_id":"b04a78e5c4cd4af476a0eb32cbe219de299b4bae","unresolved":true,"context_lines":[{"line_number":496,"context_line":""},{"line_number":497,"context_line":"    def _is_active_sync_configured(self, config):"},{"line_number":498,"context_line":""},{"line_number":499,"context_line":"        def is_version_greater(version, threshold\u003dself.MINIMUM_SMAS_VERSION_SUPPORTED):"},{"line_number":500,"context_line":"            def parse_version(v):"},{"line_number":501,"context_line":"                return [int(x) for x in"},{"line_number":502,"context_line":"                        re.split(r\u0027\\D+\u0027, str(v)) if x.isdigit()]"}],"source_content_type":"text/x-python","patch_set":4,"id":"4680fe41_a609828c","line":499,"updated":"2025-09-01 05:07:29.000000000","message":"i think this is good candidate for common/utils instead of inner function.","commit_id":"c923534b119bdc5ac00bc5c45ea38c88d00b5da6"},{"author":{"_account_id":36171,"name":"jayaanand borra","display_name":"jayaanand borra","email":"jayaanand.borra@netapp.com","username":"jayaanan","status":"netapp"},"change_message_id":"68ddbb6bdc19c310e619ab8cf1cfb023942f6363","unresolved":true,"context_lines":[{"line_number":496,"context_line":""},{"line_number":497,"context_line":"    def _is_active_sync_configured(self, config):"},{"line_number":498,"context_line":""},{"line_number":499,"context_line":"        def is_version_greater(version, threshold\u003dself.MINIMUM_SMAS_VERSION_SUPPORTED):"},{"line_number":500,"context_line":"            def parse_version(v):"},{"line_number":501,"context_line":"                return [int(x) for x in"},{"line_number":502,"context_line":"                        re.split(r\u0027\\D+\u0027, str(v)) if x.isdigit()]"}],"source_content_type":"text/x-python","patch_set":4,"id":"77666807_d23830c7","line":499,"updated":"2025-09-01 05:09:39.000000000","message":"oslo_utils have versionutils. check that can be re-used","commit_id":"c923534b119bdc5ac00bc5c45ea38c88d00b5da6"},{"author":{"_account_id":38059,"name":"Anoop Kumar Shukla","display_name":"Anoop Shukla","email":"anoop.shukla@netapp.com","username":"anoop2","status":"NetApp"},"change_message_id":"4da7a3b2a7044ee1693ea838c058c0b34f03c614","unresolved":false,"context_lines":[{"line_number":496,"context_line":""},{"line_number":497,"context_line":"    def _is_active_sync_configured(self, config):"},{"line_number":498,"context_line":""},{"line_number":499,"context_line":"        def is_version_greater(version, threshold\u003dself.MINIMUM_SMAS_VERSION_SUPPORTED):"},{"line_number":500,"context_line":"            def parse_version(v):"},{"line_number":501,"context_line":"                return [int(x) for x in"},{"line_number":502,"context_line":"                        re.split(r\u0027\\D+\u0027, str(v)) if x.isdigit()]"}],"source_content_type":"text/x-python","patch_set":4,"id":"361a752b_f41bf175","line":499,"in_reply_to":"4680fe41_a609828c","updated":"2025-09-09 09:41:36.000000000","message":"As we discussed, we can refactor to use oslo_utils. This refactoring can be done during the SMAS changes that are planned early next release.","commit_id":"c923534b119bdc5ac00bc5c45ea38c88d00b5da6"},{"author":{"_account_id":38059,"name":"Anoop Kumar Shukla","display_name":"Anoop Shukla","email":"anoop.shukla@netapp.com","username":"anoop2","status":"NetApp"},"change_message_id":"4da7a3b2a7044ee1693ea838c058c0b34f03c614","unresolved":false,"context_lines":[{"line_number":496,"context_line":""},{"line_number":497,"context_line":"    def _is_active_sync_configured(self, config):"},{"line_number":498,"context_line":""},{"line_number":499,"context_line":"        def is_version_greater(version, threshold\u003dself.MINIMUM_SMAS_VERSION_SUPPORTED):"},{"line_number":500,"context_line":"            def parse_version(v):"},{"line_number":501,"context_line":"                return [int(x) for x in"},{"line_number":502,"context_line":"                        re.split(r\u0027\\D+\u0027, str(v)) if x.isdigit()]"}],"source_content_type":"text/x-python","patch_set":4,"id":"5617f525_3c6169d2","line":499,"in_reply_to":"77666807_d23830c7","updated":"2025-09-09 09:41:36.000000000","message":"As we discussed, we can refactor to use oslo_utils. This refactoring can be done during the SMAS changes that are planned early next release.","commit_id":"c923534b119bdc5ac00bc5c45ea38c88d00b5da6"},{"author":{"_account_id":21129,"name":"Alan Bishop","email":"abishopsweng@gmail.com","username":"ASBishop","status":"ex Red Hat"},"change_message_id":"a54aa25c419d4bc013e6fd4b2d9e944f3f53085b","unresolved":true,"context_lines":[{"line_number":496,"context_line":""},{"line_number":497,"context_line":"    def _is_active_sync_configured(self, config):"},{"line_number":498,"context_line":""},{"line_number":499,"context_line":"        def is_version_greater(version,"},{"line_number":500,"context_line":"                               threshold\u003dself.MINIMUM_SMAS_VERSION_SUPPORTED):"},{"line_number":501,"context_line":"            def parse_version(v):"},{"line_number":502,"context_line":"                return [int(x) for x in"}],"source_content_type":"text/x-python","patch_set":5,"id":"aa2ab8a2_60569b04","line":499,"updated":"2025-09-03 13:54:40.000000000","message":"Don\u0027t you mean greater than or equal?\n\nI think a better name may be something like is_smas_version_supported()","commit_id":"cabe44bb9f67121696bc0f79ff61a27bdbf95155"},{"author":{"_account_id":38059,"name":"Anoop Kumar Shukla","display_name":"Anoop Shukla","email":"anoop.shukla@netapp.com","username":"anoop2","status":"NetApp"},"change_message_id":"4da7a3b2a7044ee1693ea838c058c0b34f03c614","unresolved":false,"context_lines":[{"line_number":496,"context_line":""},{"line_number":497,"context_line":"    def _is_active_sync_configured(self, config):"},{"line_number":498,"context_line":""},{"line_number":499,"context_line":"        def is_version_greater(version,"},{"line_number":500,"context_line":"                               threshold\u003dself.MINIMUM_SMAS_VERSION_SUPPORTED):"},{"line_number":501,"context_line":"            def parse_version(v):"},{"line_number":502,"context_line":"                return [int(x) for x in"}],"source_content_type":"text/x-python","patch_set":5,"id":"0fdf1da4_e49d69ab","line":499,"in_reply_to":"aa2ab8a2_60569b04","updated":"2025-09-09 09:41:36.000000000","message":"Done. Have updated the method name.","commit_id":"cabe44bb9f67121696bc0f79ff61a27bdbf95155"},{"author":{"_account_id":21129,"name":"Alan Bishop","email":"abishopsweng@gmail.com","username":"ASBishop","status":"ex Red Hat"},"change_message_id":"a54aa25c419d4bc013e6fd4b2d9e944f3f53085b","unresolved":true,"context_lines":[{"line_number":498,"context_line":""},{"line_number":499,"context_line":"        def is_version_greater(version,"},{"line_number":500,"context_line":"                               threshold\u003dself.MINIMUM_SMAS_VERSION_SUPPORTED):"},{"line_number":501,"context_line":"            def parse_version(v):"},{"line_number":502,"context_line":"                return [int(x) for x in"},{"line_number":503,"context_line":"                        re.split(r\u0027\\D+\u0027, str(v)) if x.isdigit()]"},{"line_number":504,"context_line":"            return parse_version(version) \u003e parse_version(threshold)"}],"source_content_type":"text/x-python","patch_set":5,"id":"905ce7cb_06f8e9b7","line":501,"updated":"2025-09-03 13:54:40.000000000","message":"You\u0027re going to have to explain (in comments, not in the review) how this works.","commit_id":"cabe44bb9f67121696bc0f79ff61a27bdbf95155"},{"author":{"_account_id":38059,"name":"Anoop Kumar Shukla","display_name":"Anoop Shukla","email":"anoop.shukla@netapp.com","username":"anoop2","status":"NetApp"},"change_message_id":"4da7a3b2a7044ee1693ea838c058c0b34f03c614","unresolved":false,"context_lines":[{"line_number":498,"context_line":""},{"line_number":499,"context_line":"        def is_version_greater(version,"},{"line_number":500,"context_line":"                               threshold\u003dself.MINIMUM_SMAS_VERSION_SUPPORTED):"},{"line_number":501,"context_line":"            def parse_version(v):"},{"line_number":502,"context_line":"                return [int(x) for x in"},{"line_number":503,"context_line":"                        re.split(r\u0027\\D+\u0027, str(v)) if x.isdigit()]"},{"line_number":504,"context_line":"            return parse_version(version) \u003e parse_version(threshold)"}],"source_content_type":"text/x-python","patch_set":5,"id":"43564203_112e51be","line":501,"in_reply_to":"905ce7cb_06f8e9b7","updated":"2025-09-09 09:41:36.000000000","message":"Added comment for this method.","commit_id":"cabe44bb9f67121696bc0f79ff61a27bdbf95155"},{"author":{"_account_id":21129,"name":"Alan Bishop","email":"abishopsweng@gmail.com","username":"ASBishop","status":"ex Red Hat"},"change_message_id":"a54aa25c419d4bc013e6fd4b2d9e944f3f53085b","unresolved":true,"context_lines":[{"line_number":501,"context_line":"            def parse_version(v):"},{"line_number":502,"context_line":"                return [int(x) for x in"},{"line_number":503,"context_line":"                        re.split(r\u0027\\D+\u0027, str(v)) if x.isdigit()]"},{"line_number":504,"context_line":"            return parse_version(version) \u003e parse_version(threshold)"},{"line_number":505,"context_line":"        ontap_version \u003d self.zapi_client.get_ontap_version(cached\u003dTrue)"},{"line_number":506,"context_line":"        if (not ontap_version or"},{"line_number":507,"context_line":"                not is_version_greater(ontap_version,"}],"source_content_type":"text/x-python","patch_set":5,"id":"f1a16cd0_2165bc00","line":504,"updated":"2025-09-03 13:54:40.000000000","message":"Shouldn\u0027t this be \u003e\u003d rather than just \u003e?","commit_id":"cabe44bb9f67121696bc0f79ff61a27bdbf95155"},{"author":{"_account_id":38059,"name":"Anoop Kumar Shukla","display_name":"Anoop Shukla","email":"anoop.shukla@netapp.com","username":"anoop2","status":"NetApp"},"change_message_id":"4da7a3b2a7044ee1693ea838c058c0b34f03c614","unresolved":false,"context_lines":[{"line_number":501,"context_line":"            def parse_version(v):"},{"line_number":502,"context_line":"                return [int(x) for x in"},{"line_number":503,"context_line":"                        re.split(r\u0027\\D+\u0027, str(v)) if x.isdigit()]"},{"line_number":504,"context_line":"            return parse_version(version) \u003e parse_version(threshold)"},{"line_number":505,"context_line":"        ontap_version \u003d self.zapi_client.get_ontap_version(cached\u003dTrue)"},{"line_number":506,"context_line":"        if (not ontap_version or"},{"line_number":507,"context_line":"                not is_version_greater(ontap_version,"}],"source_content_type":"text/x-python","patch_set":5,"id":"07486b33_ffd73c42","line":504,"in_reply_to":"f1a16cd0_2165bc00","updated":"2025-09-09 09:41:36.000000000","message":"Acknowledged","commit_id":"cabe44bb9f67121696bc0f79ff61a27bdbf95155"},{"author":{"_account_id":21129,"name":"Alan Bishop","email":"abishopsweng@gmail.com","username":"ASBishop","status":"ex Red Hat"},"change_message_id":"a54aa25c419d4bc013e6fd4b2d9e944f3f53085b","unresolved":true,"context_lines":[{"line_number":502,"context_line":"                return [int(x) for x in"},{"line_number":503,"context_line":"                        re.split(r\u0027\\D+\u0027, str(v)) if x.isdigit()]"},{"line_number":504,"context_line":"            return parse_version(version) \u003e parse_version(threshold)"},{"line_number":505,"context_line":"        ontap_version \u003d self.zapi_client.get_ontap_version(cached\u003dTrue)"},{"line_number":506,"context_line":"        if (not ontap_version or"},{"line_number":507,"context_line":"                not is_version_greater(ontap_version,"},{"line_number":508,"context_line":"                                       self.MINIMUM_SMAS_VERSION_SUPPORTED)):"}],"source_content_type":"text/x-python","patch_set":5,"id":"06c0a210_33db6bb9","line":505,"updated":"2025-09-03 13:54:40.000000000","message":"I don\u0027t understand a lot about the zapi versus RESET implementation, but how does this work? The code seems to assume it\u0027s zapi, so what about REST?","commit_id":"cabe44bb9f67121696bc0f79ff61a27bdbf95155"},{"author":{"_account_id":38059,"name":"Anoop Kumar Shukla","display_name":"Anoop Shukla","email":"anoop.shukla@netapp.com","username":"anoop2","status":"NetApp"},"change_message_id":"4da7a3b2a7044ee1693ea838c058c0b34f03c614","unresolved":true,"context_lines":[{"line_number":502,"context_line":"                return [int(x) for x in"},{"line_number":503,"context_line":"                        re.split(r\u0027\\D+\u0027, str(v)) if x.isdigit()]"},{"line_number":504,"context_line":"            return parse_version(version) \u003e parse_version(threshold)"},{"line_number":505,"context_line":"        ontap_version \u003d self.zapi_client.get_ontap_version(cached\u003dTrue)"},{"line_number":506,"context_line":"        if (not ontap_version or"},{"line_number":507,"context_line":"                not is_version_greater(ontap_version,"},{"line_number":508,"context_line":"                                       self.MINIMUM_SMAS_VERSION_SUPPORTED)):"}],"source_content_type":"text/x-python","patch_set":5,"id":"ece826ba_1a1abb35","line":505,"in_reply_to":"06c0a210_33db6bb9","updated":"2025-09-09 09:41:36.000000000","message":"Thanks for the comment Alan. The way we support client for ONTAP on Cinder is by injecting and initializing the client based on feature and customer config from cinder.conf. So the same client class caters to both REST and ZAPIs. We call it zapi_client but the same class can also be used for catering to REST as well. The REST and ZAPI implementation are available in the files client_cmode and client_base respectivly.","commit_id":"cabe44bb9f67121696bc0f79ff61a27bdbf95155"},{"author":{"_account_id":38059,"name":"Anoop Kumar Shukla","display_name":"Anoop Shukla","email":"anoop.shukla@netapp.com","username":"anoop2","status":"NetApp"},"change_message_id":"6f83d63826fe53d9a3efcbfa46fe04273d7129ab","unresolved":false,"context_lines":[{"line_number":502,"context_line":"                return [int(x) for x in"},{"line_number":503,"context_line":"                        re.split(r\u0027\\D+\u0027, str(v)) if x.isdigit()]"},{"line_number":504,"context_line":"            return parse_version(version) \u003e parse_version(threshold)"},{"line_number":505,"context_line":"        ontap_version \u003d self.zapi_client.get_ontap_version(cached\u003dTrue)"},{"line_number":506,"context_line":"        if (not ontap_version or"},{"line_number":507,"context_line":"                not is_version_greater(ontap_version,"},{"line_number":508,"context_line":"                                       self.MINIMUM_SMAS_VERSION_SUPPORTED)):"}],"source_content_type":"text/x-python","patch_set":5,"id":"74fcf574_9bcce771","line":505,"in_reply_to":"c5e9d54d_f3235fda","updated":"2025-09-15 06:25:23.000000000","message":"Fixed now by using the version utility. Thanks for pointing out.","commit_id":"cabe44bb9f67121696bc0f79ff61a27bdbf95155"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"c233d3d002d1a4347742ceb386078226c787cf01","unresolved":true,"context_lines":[{"line_number":502,"context_line":"                return [int(x) for x in"},{"line_number":503,"context_line":"                        re.split(r\u0027\\D+\u0027, str(v)) if x.isdigit()]"},{"line_number":504,"context_line":"            return parse_version(version) \u003e parse_version(threshold)"},{"line_number":505,"context_line":"        ontap_version \u003d self.zapi_client.get_ontap_version(cached\u003dTrue)"},{"line_number":506,"context_line":"        if (not ontap_version or"},{"line_number":507,"context_line":"                not is_version_greater(ontap_version,"},{"line_number":508,"context_line":"                                       self.MINIMUM_SMAS_VERSION_SUPPORTED)):"}],"source_content_type":"text/x-python","patch_set":5,"id":"c5e9d54d_f3235fda","line":505,"in_reply_to":"ece826ba_1a1abb35","updated":"2025-09-12 16:02:57.000000000","message":"I would also suggest using the packaging version utility.  It can do this built in.\n\nCheck out the pure driver\u0027s use of it here:\nhttps://github.com/openstack/cinder/blob/master/cinder/volume/drivers/pure.py#L34\nand\nhttps://github.com/openstack/cinder/blob/master/cinder/volume/drivers/pure.py#L553-L555","commit_id":"cabe44bb9f67121696bc0f79ff61a27bdbf95155"},{"author":{"_account_id":21129,"name":"Alan Bishop","email":"abishopsweng@gmail.com","username":"ASBishop","status":"ex Red Hat"},"change_message_id":"ad8e28b63a05145adb843896dde5abbee1714c65","unresolved":true,"context_lines":[{"line_number":514,"context_line":"        ontap_version \u003d self.zapi_client.get_ontap_version(cached\u003dTrue)"},{"line_number":515,"context_line":"        if (not ontap_version or"},{"line_number":516,"context_line":"                not is_smas_version_supported("},{"line_number":517,"context_line":"                    ontap_version, self.MINIMUM_SMAS_VERSION_SUPPORTED)):"},{"line_number":518,"context_line":"            return False"},{"line_number":519,"context_line":""},{"line_number":520,"context_line":"        backend_names \u003d []"}],"source_content_type":"text/x-python","patch_set":8,"id":"5326170b_787a2e4a","line":517,"updated":"2025-09-10 18:44:01.000000000","message":"nit: you don\u0027t need to pass in the 2nd \"threshold\" parameter because it defaults to this value on L500.","commit_id":"ce128c7824806b0a9e944e0fdc83331297d3d728"}],"releasenotes/notes/bug-2119123-fixed-multiple-issues-with-active-sync-replication-da3bb479bc424224.yaml":[{"author":{"_account_id":30555,"name":"Fernando Ferraz","display_name":"Fernando Ferraz","email":"fesilva@redhat.com","username":"fernandoperches"},"change_message_id":"f5d7c9da1098a393718fa813bdbfdce56950067b","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":"    The NetApp driver supports SMAS repliction which on ONTAP is"},{"line_number":5,"context_line":"    supported only from ONTAP 9.15.1. Additional validations are"},{"line_number":6,"context_line":"    added to the driver to ensure version checks and initialization"},{"line_number":7,"context_line":"    of SnapMirror as part of creation of SMAS relationship."}],"source_content_type":"text/x-yaml","patch_set":6,"id":"9426116e_afc97a45","line":4,"range":{"start_line":4,"start_character":36,"end_line":4,"end_character":46},"updated":"2025-09-09 17:29:17.000000000","message":"s/repliction/replication","commit_id":"07036cc66c9904b171755ddc1707a991daf1f978"},{"author":{"_account_id":38059,"name":"Anoop Kumar Shukla","display_name":"Anoop Shukla","email":"anoop.shukla@netapp.com","username":"anoop2","status":"NetApp"},"change_message_id":"30918e95bb7929dc32e3f80c3554f97d2ffeb23b","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":"    The NetApp driver supports SMAS repliction which on ONTAP is"},{"line_number":5,"context_line":"    supported only from ONTAP 9.15.1. Additional validations are"},{"line_number":6,"context_line":"    added to the driver to ensure version checks and initialization"},{"line_number":7,"context_line":"    of SnapMirror as part of creation of SMAS relationship."}],"source_content_type":"text/x-yaml","patch_set":6,"id":"4911ca6c_bf25245f","line":4,"range":{"start_line":4,"start_character":36,"end_line":4,"end_character":46},"in_reply_to":"9426116e_afc97a45","updated":"2025-09-10 14:14:57.000000000","message":"Acknowledged","commit_id":"07036cc66c9904b171755ddc1707a991daf1f978"},{"author":{"_account_id":30555,"name":"Fernando Ferraz","display_name":"Fernando Ferraz","email":"fesilva@redhat.com","username":"fernandoperches"},"change_message_id":"f5d7c9da1098a393718fa813bdbfdce56950067b","unresolved":true,"context_lines":[{"line_number":5,"context_line":"    supported only from ONTAP 9.15.1. Additional validations are"},{"line_number":6,"context_line":"    added to the driver to ensure version checks and initialization"},{"line_number":7,"context_line":"    of SnapMirror as part of creation of SMAS relationship."},{"line_number":8,"context_line":"    "},{"line_number":9,"context_line":"  - |"},{"line_number":10,"context_line":"    `Bug #2119123 \u003chttps://bugs.launchpad.net/cinder/+bug/2119123\u003e`_:"},{"line_number":11,"context_line":"     Fix for NetApp Cinder Driver - Active Sync issues"}],"source_content_type":"text/x-yaml","patch_set":6,"id":"4f3c9a7c_ae63b2db","line":8,"updated":"2025-09-09 17:29:17.000000000","message":"Please, remove the trailing spaces.","commit_id":"07036cc66c9904b171755ddc1707a991daf1f978"},{"author":{"_account_id":38059,"name":"Anoop Kumar Shukla","display_name":"Anoop Shukla","email":"anoop.shukla@netapp.com","username":"anoop2","status":"NetApp"},"change_message_id":"30918e95bb7929dc32e3f80c3554f97d2ffeb23b","unresolved":false,"context_lines":[{"line_number":5,"context_line":"    supported only from ONTAP 9.15.1. Additional validations are"},{"line_number":6,"context_line":"    added to the driver to ensure version checks and initialization"},{"line_number":7,"context_line":"    of SnapMirror as part of creation of SMAS relationship."},{"line_number":8,"context_line":"    "},{"line_number":9,"context_line":"  - |"},{"line_number":10,"context_line":"    `Bug #2119123 \u003chttps://bugs.launchpad.net/cinder/+bug/2119123\u003e`_:"},{"line_number":11,"context_line":"     Fix for NetApp Cinder Driver - Active Sync issues"}],"source_content_type":"text/x-yaml","patch_set":6,"id":"aadbc10d_6b81f8ac","line":8,"in_reply_to":"4f3c9a7c_ae63b2db","updated":"2025-09-10 14:14:57.000000000","message":"Acknowledged","commit_id":"07036cc66c9904b171755ddc1707a991daf1f978"}]}
