)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":39161,"name":"Medha Choudhary netapp","display_name":"Medha Choudhary (netapp)","email":"medhac@netapp.com","username":"medhac","status":"Netapp"},"change_message_id":"607e40c6350abb6b4c95196515d86ba3493d165e","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"3101540a_57210878","updated":"2026-08-20 11:35:59.000000000","message":"Run-netapp ci","commit_id":"3d06cff8f5eb2cc0798f53577f94a0a0f59f82e9"},{"author":{"_account_id":38059,"name":"Anoop Kumar Shukla","display_name":"Anoop Shukla","email":"anoop.shukla@netapp.com","username":"anoop2","status":"NetApp"},"change_message_id":"cbdceed095814fd17923b6e8cca293a467ef01dc","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"21477441_9d5af476","updated":"2026-09-09 14:24:19.000000000","message":"Please take a look at the comments.","commit_id":"3662b1abc3d637c97ecf7a503dc0b10b2e8d3a9d"},{"author":{"_account_id":38059,"name":"Anoop Kumar Shukla","display_name":"Anoop Shukla","email":"anoop.shukla@netapp.com","username":"anoop2","status":"NetApp"},"change_message_id":"86315f5ca9f2665a6256eb01d72e9b83a11be502","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"03f9a453_9127135f","updated":"2026-10-19 05:13:56.000000000","message":"Please take a look at the comment. Codewise looks good to me.","commit_id":"57a630581374513b12c168ca33be091aa86febad"}],"manila/share/drivers/netapp/dataontap/client/client_cmode_rest.py":[{"author":{"_account_id":38059,"name":"Anoop Kumar Shukla","display_name":"Anoop Shukla","email":"anoop.shukla@netapp.com","username":"anoop2","status":"NetApp"},"change_message_id":"cbdceed095814fd17923b6e8cca293a467ef01dc","unresolved":true,"context_lines":[{"line_number":312,"context_line":"            # SVM scoped account to access the /cluster endpoint, that\u0027s why"},{"line_number":313,"context_line":"            # we keep /private/cli as a safety net fallback."},{"line_number":314,"context_line":""},{"line_number":315,"context_line":"            response \u003d self.send_request(\u0027/private/cli/version\u0027, \u0027get\u0027,"},{"line_number":316,"context_line":"                                         query\u003dquery)"},{"line_number":317,"context_line":"            try:"},{"line_number":318,"context_line":"                # NOTE: depending on the ONTAP release, /private/cli/version"},{"line_number":319,"context_line":"                # may return \u0027version\u0027 as a plain string, e.g.:"}],"source_content_type":"text/x-python","patch_set":3,"id":"9ead071e_6c9affd3","line":316,"range":{"start_line":315,"start_character":12,"end_line":316,"end_character":53},"updated":"2026-09-09 14:24:19.000000000","message":"Do we really need private cli to get the version? Even in case of SVM credentials, the ONTAP cluster API would return the version. IMO we can get rid of the private cli workflow here.","commit_id":"3662b1abc3d637c97ecf7a503dc0b10b2e8d3a9d"},{"author":{"_account_id":39161,"name":"Medha Choudhary netapp","display_name":"Medha Choudhary (netapp)","email":"medhac@netapp.com","username":"medhac","status":"Netapp"},"change_message_id":"26dd69905a39f2ea11faf90e625c1229bc06576d","unresolved":false,"context_lines":[{"line_number":312,"context_line":"            # SVM scoped account to access the /cluster endpoint, that\u0027s why"},{"line_number":313,"context_line":"            # we keep /private/cli as a safety net fallback."},{"line_number":314,"context_line":""},{"line_number":315,"context_line":"            response \u003d self.send_request(\u0027/private/cli/version\u0027, \u0027get\u0027,"},{"line_number":316,"context_line":"                                         query\u003dquery)"},{"line_number":317,"context_line":"            try:"},{"line_number":318,"context_line":"                # NOTE: depending on the ONTAP release, /private/cli/version"},{"line_number":319,"context_line":"                # may return \u0027version\u0027 as a plain string, e.g.:"}],"source_content_type":"text/x-python","patch_set":3,"id":"f947ace4_5295d00a","line":316,"range":{"start_line":315,"start_character":12,"end_line":316,"end_character":53},"in_reply_to":"9ead071e_6c9affd3","updated":"2026-10-12 05:16:18.000000000","message":"Done","commit_id":"3662b1abc3d637c97ecf7a503dc0b10b2e8d3a9d"},{"author":{"_account_id":38059,"name":"Anoop Kumar Shukla","display_name":"Anoop Shukla","email":"anoop.shukla@netapp.com","username":"anoop2","status":"NetApp"},"change_message_id":"cbdceed095814fd17923b6e8cca293a467ef01dc","unresolved":true,"context_lines":[{"line_number":349,"context_line":"                                  response[\u0027version\u0027][\u0027minor\u0027]),"},{"line_number":350,"context_line":"            }"},{"line_number":351,"context_line":"        except (KeyError, TypeError, IndexError, ValueError):"},{"line_number":352,"context_line":"            msg \u003d _(\"Failed to parse the ONTAP version from the \""},{"line_number":353,"context_line":"                    \"/cluster response: %s\") % response"},{"line_number":354,"context_line":"            LOG.error(msg)"},{"line_number":355,"context_line":"            raise na_utils.NetAppDriverException(msg)"},{"line_number":356,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"96e9e0fb_48262b42","line":353,"range":{"start_line":352,"start_character":11,"end_line":353,"end_character":55},"updated":"2026-09-09 14:24:19.000000000","message":"Lets not print the entire response as this can flood the logs and be very verbose.","commit_id":"3662b1abc3d637c97ecf7a503dc0b10b2e8d3a9d"},{"author":{"_account_id":39161,"name":"Medha Choudhary netapp","display_name":"Medha Choudhary (netapp)","email":"medhac@netapp.com","username":"medhac","status":"Netapp"},"change_message_id":"26dd69905a39f2ea11faf90e625c1229bc06576d","unresolved":false,"context_lines":[{"line_number":349,"context_line":"                                  response[\u0027version\u0027][\u0027minor\u0027]),"},{"line_number":350,"context_line":"            }"},{"line_number":351,"context_line":"        except (KeyError, TypeError, IndexError, ValueError):"},{"line_number":352,"context_line":"            msg \u003d _(\"Failed to parse the ONTAP version from the \""},{"line_number":353,"context_line":"                    \"/cluster response: %s\") % response"},{"line_number":354,"context_line":"            LOG.error(msg)"},{"line_number":355,"context_line":"            raise na_utils.NetAppDriverException(msg)"},{"line_number":356,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"733f68f6_bcae1076","line":353,"range":{"start_line":352,"start_character":11,"end_line":353,"end_character":55},"in_reply_to":"96e9e0fb_48262b42","updated":"2026-10-12 05:16:18.000000000","message":"Done","commit_id":"3662b1abc3d637c97ecf7a503dc0b10b2e8d3a9d"},{"author":{"_account_id":38059,"name":"Anoop Kumar Shukla","display_name":"Anoop Shukla","email":"anoop.shukla@netapp.com","username":"anoop2","status":"NetApp"},"change_message_id":"86315f5ca9f2665a6256eb01d72e9b83a11be502","unresolved":true,"context_lines":[{"line_number":336,"context_line":"                    \u0027/cluster response.\u0027)"},{"line_number":337,"context_line":"            raise na_utils.NetAppDriverException(msg)"},{"line_number":338,"context_line":""},{"line_number":339,"context_line":"    def _parse_cluster_version(self, version_field):"},{"line_number":340,"context_line":"        \"\"\"Normalize the /cluster ``version`` field."},{"line_number":341,"context_line":""},{"line_number":342,"context_line":"        ONTAP may return a string such as"}],"source_content_type":"text/x-python","patch_set":4,"id":"40e4808d_87dbf9b0","line":339,"updated":"2026-10-19 05:13:56.000000000","message":"This method IMO should go to utils.py due to its nature and reusability concerns.","commit_id":"57a630581374513b12c168ca33be091aa86febad"},{"author":{"_account_id":38371,"name":"Kumar Tadepalli","display_name":"Kumar Tadepalli","email":"kumart.lead@gmail.com","username":"kumart","status":"NetApp"},"change_message_id":"4f7d034edffe1f72e9efde1c79dca57940fa9258","unresolved":true,"context_lines":[{"line_number":336,"context_line":"                    \u0027/cluster response.\u0027)"},{"line_number":337,"context_line":"            raise na_utils.NetAppDriverException(msg)"},{"line_number":338,"context_line":""},{"line_number":339,"context_line":"    def _parse_cluster_version(self, version_field):"},{"line_number":340,"context_line":"        \"\"\"Normalize the /cluster ``version`` field."},{"line_number":341,"context_line":""},{"line_number":342,"context_line":"        ONTAP may return a string such as"}],"source_content_type":"text/x-python","patch_set":4,"id":"ad464d01_bc0eb172","line":339,"in_reply_to":"40e4808d_87dbf9b0","updated":"2026-10-26 17:46:04.000000000","message":"@anoop.shukla@netapp.com I believe this will be used only when parsing the REST response and the actual value required by callers will be exposed from get_ontap_version(). So this can be private method to rest client.\n\n@medhac@netapp.com I believe ZAPI uses XML parsing. please confirm.","commit_id":"57a630581374513b12c168ca33be091aa86febad"}],"manila/share/drivers/netapp/dataontap/cluster_mode/lib_multi_svm.py":[{"author":{"_account_id":38059,"name":"Anoop Kumar Shukla","display_name":"Anoop Shukla","email":"anoop.shukla@netapp.com","username":"anoop2","status":"NetApp"},"change_message_id":"cbdceed095814fd17923b6e8cca293a467ef01dc","unresolved":true,"context_lines":[{"line_number":2923,"context_line":"                            \"data LIF limit {%(lif_limit)s}\") % msg_args"},{"line_number":2924,"context_line":"                    LOG.error(msg)"},{"line_number":2925,"context_line":"                    raise exception.NetAppException(msg)"},{"line_number":2926,"context_line":"            else:"},{"line_number":2927,"context_line":"                msg \u003d _(\"Data LIF details for node %(node)s were not \""},{"line_number":2928,"context_line":"                        \"found; cannot verify data LIF limit for its HA \""},{"line_number":2929,"context_line":"                        \"pair.\") % {\u0027node\u0027: node}"},{"line_number":2930,"context_line":"                LOG.error(msg)"},{"line_number":2931,"context_line":"                raise exception.NetAppException(msg)"}],"source_content_type":"text/x-python","patch_set":3,"id":"cfbae261_f7eeacd1","line":2931,"range":{"start_line":2926,"start_character":11,"end_line":2931,"end_character":52},"updated":"2026-09-09 14:24:19.000000000","message":"IMO this fix should go to a different patch as it fixes a different issue.","commit_id":"3662b1abc3d637c97ecf7a503dc0b10b2e8d3a9d"},{"author":{"_account_id":39161,"name":"Medha Choudhary netapp","display_name":"Medha Choudhary (netapp)","email":"medhac@netapp.com","username":"medhac","status":"Netapp"},"change_message_id":"26dd69905a39f2ea11faf90e625c1229bc06576d","unresolved":false,"context_lines":[{"line_number":2923,"context_line":"                            \"data LIF limit {%(lif_limit)s}\") % msg_args"},{"line_number":2924,"context_line":"                    LOG.error(msg)"},{"line_number":2925,"context_line":"                    raise exception.NetAppException(msg)"},{"line_number":2926,"context_line":"            else:"},{"line_number":2927,"context_line":"                msg \u003d _(\"Data LIF details for node %(node)s were not \""},{"line_number":2928,"context_line":"                        \"found; cannot verify data LIF limit for its HA \""},{"line_number":2929,"context_line":"                        \"pair.\") % {\u0027node\u0027: node}"},{"line_number":2930,"context_line":"                LOG.error(msg)"},{"line_number":2931,"context_line":"                raise exception.NetAppException(msg)"}],"source_content_type":"text/x-python","patch_set":3,"id":"777dec3e_76c41fea","line":2931,"range":{"start_line":2926,"start_character":11,"end_line":2931,"end_character":52},"in_reply_to":"cfbae261_f7eeacd1","updated":"2026-10-12 05:16:18.000000000","message":"Done","commit_id":"3662b1abc3d637c97ecf7a503dc0b10b2e8d3a9d"}]}
