)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":36180,"name":"Gireesh Awasthi","display_name":"Gireesh","email":"gawasthi2010@gmail.com","username":"agireesh","status":"NetApp"},"change_message_id":"37776a83abe2b62098f7c78381056156c5db7322","unresolved":true,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"netapp: Enable adaptive-QoS for dhss\u003dtrue"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Adapative QoS policy supported by NetApp ONTAP driver is restricted to"},{"line_number":10,"context_line":"dhss\u003dfalse scenario. This is updated to support for dhss\u003dtrue as well."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"In this case, Admin should provide adaptive qos policy name along-with"},{"line_number":13,"context_line":"mandatory extra-specs such as \u0027netapp:expectediopspergib\u0027 and"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"4275b3c6_a7390040","line":10,"range":{"start_line":9,"start_character":1,"end_line":10,"end_character":19},"updated":"2025-07-10 14:41:06.000000000","message":"Previously, we supported the adaptive QoS policy only for dhss_false when the user provided a pre-created policy name through extra specs. However, this implementation differs, here, we create the adaptive QoS policy from OpenStack, and it applies to both dhss_true and dhss_false.\n\nCan you change the above sentence accordingly.","commit_id":"70b46e96abae81b1556899bd9b6b2a883860486a"},{"author":{"_account_id":38059,"name":"Anoop Kumar Shukla","display_name":"Anoop Shukla","email":"anoop.shukla@netapp.com","username":"anoop2","status":"NetApp"},"change_message_id":"53f97f361b1f9ff9429a2ae8e399198639ba8d0e","unresolved":true,"context_lines":[{"line_number":9,"context_line":"Adapative QoS policy supported by NetApp ONTAP driver is restricted to"},{"line_number":10,"context_line":"dhss\u003dfalse scenario. This is updated to support for dhss\u003dtrue as well."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"In this case, Admin should provide adaptive qos policy name along-with"},{"line_number":13,"context_line":"mandatory extra-specs such as \u0027netapp:expectediopspergib\u0027 and"},{"line_number":14,"context_line":"\u0027netapp:peakiopspergib\u0027. In addition to this, Admin can also provide"},{"line_number":15,"context_line":"optional extra-specs such as \u0027netapp:expectediopsallocation\u0027,"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"2c77c9a8_f81d6e85","line":12,"updated":"2025-12-18 17:14:36.000000000","message":"We need to call out that this cannot be used with SVM scoped admins/users and requires a cluster admin user.","commit_id":"70b46e96abae81b1556899bd9b6b2a883860486a"}],"/PATCHSET_LEVEL":[{"author":{"_account_id":36180,"name":"Gireesh Awasthi","display_name":"Gireesh","email":"gawasthi2010@gmail.com","username":"agireesh","status":"NetApp"},"change_message_id":"37776a83abe2b62098f7c78381056156c5db7322","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"4273226b_7cb4abbb","updated":"2025-07-10 14:41:06.000000000","message":"Thanks kiran, for implementing this feature, I have provide few comments, please take a look at them.","commit_id":"70b46e96abae81b1556899bd9b6b2a883860486a"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"967534270aaee5f130bf08bc463e415dbdeab802","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"a1ca4f09_4c251245","updated":"2025-12-19 08:44:48.000000000","message":"This PR was before qos_type. With qos_type, this issue will be addressed under qos_type topics.","commit_id":"70b46e96abae81b1556899bd9b6b2a883860486a"}],"manila/share/drivers/netapp/dataontap/client/client_cmode.py":[{"author":{"_account_id":36180,"name":"Gireesh Awasthi","display_name":"Gireesh","email":"gawasthi2010@gmail.com","username":"agireesh","status":"NetApp"},"change_message_id":"37776a83abe2b62098f7c78381056156c5db7322","unresolved":true,"context_lines":[{"line_number":5407,"context_line":"            \u0027peak-iops\u0027: \u0027%sIOPS/GB\u0027 % adaptive_qos_specs[\u0027peakiopspergib\u0027],"},{"line_number":5408,"context_line":"        }"},{"line_number":5409,"context_line":""},{"line_number":5410,"context_line":"        if \u0027expectediopsallocation\u0027 in adaptive_qos_specs:"},{"line_number":5411,"context_line":"            api_args[\u0027expected-iops-allocation\u0027] \u003d adaptive_qos_specs["},{"line_number":5412,"context_line":"                \u0027expectediopsallocation\u0027]"},{"line_number":5413,"context_line":"        if \u0027peakiopsallocation\u0027 in adaptive_qos_specs:"},{"line_number":5414,"context_line":"            api_args[\u0027peak-iops-allocation\u0027] \u003d adaptive_qos_specs["},{"line_number":5415,"context_line":"                \u0027peakiopsallocation\u0027]"},{"line_number":5416,"context_line":"        if \u0027absoluteminiops\u0027 in adaptive_qos_specs:"},{"line_number":5417,"context_line":"            api_args[\u0027absolute-min-iops\u0027] \u003d adaptive_qos_specs["},{"line_number":5418,"context_line":"                \u0027absoluteminiops\u0027]"},{"line_number":5419,"context_line":"        if \u0027blocksize\u0027 in adaptive_qos_specs:"},{"line_number":5420,"context_line":"            api_args[\u0027block-size\u0027] \u003d adaptive_qos_specs[\u0027blocksize\u0027]"},{"line_number":5421,"context_line":""},{"line_number":5422,"context_line":"        return self.send_request("},{"line_number":5423,"context_line":"            \u0027qos-adaptive-policy-group-create\u0027, api_args, False)"}],"source_content_type":"text/x-python","patch_set":1,"id":"87a1bda1_38a54d77","line":5420,"range":{"start_line":5410,"start_character":8,"end_line":5420,"end_character":68},"updated":"2025-07-10 14:41:06.000000000","message":"You can optimize this code and write it as below \n\noptional_keys_map \u003d {\n    \u0027expectediopsallocation\u0027: \u0027expected-iops-allocation\u0027,\n    \u0027peakiopsallocation\u0027: \u0027peak-iops-allocation\u0027,\n    \u0027absoluteminiops\u0027: \u0027absolute-min-iops\u0027,\n    \u0027blocksize\u0027: \u0027block-size\u0027,\n}\n\nfor spec_key, api_key in optional_keys_map.items():\n    value \u003d adaptive_qos_specs.get(spec_key)\n    if value is not None:\n        api_args[api_key] \u003d value","commit_id":"70b46e96abae81b1556899bd9b6b2a883860486a"}],"manila/share/drivers/netapp/dataontap/client/client_cmode_rest.py":[{"author":{"_account_id":36180,"name":"Gireesh Awasthi","display_name":"Gireesh","email":"gawasthi2010@gmail.com","username":"agireesh","status":"NetApp"},"change_message_id":"37776a83abe2b62098f7c78381056156c5db7322","unresolved":true,"context_lines":[{"line_number":1779,"context_line":"                int(adaptive_qos_specs[\u0027peakiopspergib\u0027]) / 1024),"},{"line_number":1780,"context_line":"        }"},{"line_number":1781,"context_line":""},{"line_number":1782,"context_line":"        if \u0027expectediopsallocation\u0027 in adaptive_qos_specs:"},{"line_number":1783,"context_line":"            body[\u0027adaptive.expected_iops_allocation\u0027] \u003d adaptive_qos_specs["},{"line_number":1784,"context_line":"                \u0027expectediopsallocation\u0027]"},{"line_number":1785,"context_line":"        if \u0027peakiopsallocation\u0027 in adaptive_qos_specs:"},{"line_number":1786,"context_line":"            body[\u0027adaptive.peak_iops_allocation\u0027] \u003d adaptive_qos_specs["},{"line_number":1787,"context_line":"                \u0027peakiopsallocation\u0027]"},{"line_number":1788,"context_line":"        if \u0027absoluteminiops\u0027 in adaptive_qos_specs:"},{"line_number":1789,"context_line":"            body[\u0027adaptive.absolute_min_iops\u0027] \u003d adaptive_qos_specs["},{"line_number":1790,"context_line":"                \u0027absoluteminiops\u0027]"},{"line_number":1791,"context_line":"        if \u0027blocksize\u0027 in adaptive_qos_specs:"},{"line_number":1792,"context_line":"            body[\u0027adaptive.block_size\u0027] \u003d adaptive_qos_specs[\u0027blocksize\u0027]"},{"line_number":1793,"context_line":""},{"line_number":1794,"context_line":"        return self.send_request(\u0027/storage/qos/policies\u0027, \u0027post\u0027,"},{"line_number":1795,"context_line":"                                 body\u003dbody)"}],"source_content_type":"text/x-python","patch_set":1,"id":"ad98737f_467b7110","line":1792,"range":{"start_line":1782,"start_character":8,"end_line":1792,"end_character":73},"updated":"2025-07-10 14:41:06.000000000","message":"Same comment which is given for ZAPI is applicable for REST also.","commit_id":"70b46e96abae81b1556899bd9b6b2a883860486a"},{"author":{"_account_id":38059,"name":"Anoop Kumar Shukla","display_name":"Anoop Shukla","email":"anoop.shukla@netapp.com","username":"anoop2","status":"NetApp"},"change_message_id":"53f97f361b1f9ff9429a2ae8e399198639ba8d0e","unresolved":true,"context_lines":[{"line_number":1791,"context_line":"        if \u0027blocksize\u0027 in adaptive_qos_specs:"},{"line_number":1792,"context_line":"            body[\u0027adaptive.block_size\u0027] \u003d adaptive_qos_specs[\u0027blocksize\u0027]"},{"line_number":1793,"context_line":""},{"line_number":1794,"context_line":"        return self.send_request(\u0027/storage/qos/policies\u0027, \u0027post\u0027,"},{"line_number":1795,"context_line":"                                 body\u003dbody)"},{"line_number":1796,"context_line":""},{"line_number":1797,"context_line":"    @na_utils.trace"}],"source_content_type":"text/x-python","patch_set":1,"id":"0f46f487_a24da456","line":1794,"updated":"2025-12-18 17:14:36.000000000","message":"This call may fail in case the user uses SVM scoped credentials. I do not see that being validated anywhere. Should we validate if the customer is using the right privileges?","commit_id":"70b46e96abae81b1556899bd9b6b2a883860486a"}],"manila/share/drivers/netapp/dataontap/cluster_mode/lib_base.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":"53f97f361b1f9ff9429a2ae8e399198639ba8d0e","unresolved":true,"context_lines":[{"line_number":1583,"context_line":""},{"line_number":1584,"context_line":"        if (normalized_adaptive_qos_specs.get(\u0027expectediopspergib\u0027) \u003e"},{"line_number":1585,"context_line":"                normalized_adaptive_qos_specs.get(\u0027peakiopspergib\u0027)):"},{"line_number":1586,"context_line":"            msg \u003d _(\u0027Adaptive maximum limit should be greater than or equal \u0027"},{"line_number":1587,"context_line":"                    \u0027to the adaptive minimum limit.\u0027)"},{"line_number":1588,"context_line":"            raise exception.NetAppException(msg)"},{"line_number":1589,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"d8f15ef3_31d2e1e3","line":1586,"updated":"2025-12-18 17:14:36.000000000","message":"Instead can we say \"Expected IOPS per GB cannot be greater than peak IOPS.\"","commit_id":"70b46e96abae81b1556899bd9b6b2a883860486a"},{"author":{"_account_id":36180,"name":"Gireesh Awasthi","display_name":"Gireesh","email":"gawasthi2010@gmail.com","username":"agireesh","status":"NetApp"},"change_message_id":"37776a83abe2b62098f7c78381056156c5db7322","unresolved":true,"context_lines":[{"line_number":1661,"context_line":"        provisioning_options \u003d self._get_provisioning_options(extra_specs)"},{"line_number":1662,"context_line":"        qos_specs \u003d self._get_normalized_qos_specs(extra_specs)"},{"line_number":1663,"context_line":""},{"line_number":1664,"context_line":"        adaptive_qos_specs \u003d None"},{"line_number":1665,"context_line":"        if provisioning_options.get(\u0027adaptive_qos_policy_group\u0027):"},{"line_number":1666,"context_line":"            adaptive_qos_specs \u003d self._get_normalized_adaptive_qos_specs("},{"line_number":1667,"context_line":"                extra_specs)"},{"line_number":1668,"context_line":""},{"line_number":1669,"context_line":"        self.validate_provisioning_options_for_share(provisioning_options,"},{"line_number":1670,"context_line":"                                                     extra_specs\u003dextra_specs,"},{"line_number":1671,"context_line":"                                                     qos_specs\u003dqos_specs)"}],"source_content_type":"text/x-python","patch_set":1,"id":"9e776e55_22d9d116","line":1668,"range":{"start_line":1664,"start_character":8,"end_line":1668,"end_character":0},"updated":"2025-07-10 14:41:06.000000000","message":"Currently, for dhss_false, we support the use of an adaptive QoS policy group that is pre-created on ONTAP that user can specify it in the extra specs. In this scenario, how does it work? Are we not maintaining backward compatibility?\"\n\nCan you use the qos policy group implementation here to pickup the adaptive qos policy group name from manila.conf, like we have below option for qos group similar option we can have for adaptive qos policy group.\n\n\n cfg.StrOpt(\u0027netapp_qos_policy_group_name_template\u0027,\n               help\u003d\u0027NetApp QoS policy group name template.\u0027,\n               default\u003d\u0027qos_share_%(share_id)s\u0027),","commit_id":"70b46e96abae81b1556899bd9b6b2a883860486a"},{"author":{"_account_id":36180,"name":"Gireesh Awasthi","display_name":"Gireesh","email":"gawasthi2010@gmail.com","username":"agireesh","status":"NetApp"},"change_message_id":"37776a83abe2b62098f7c78381056156c5db7322","unresolved":true,"context_lines":[{"line_number":1674,"context_line":"                share, vserver, qos_specs, vserver_client)"},{"line_number":1675,"context_line":"            provisioning_options[\u0027qos_policy_group\u0027] \u003d qos_policy_group"},{"line_number":1676,"context_line":""},{"line_number":1677,"context_line":"        if adaptive_qos_specs and set_qos:"},{"line_number":1678,"context_line":"            self._create_adaptive_qos_policy_group("},{"line_number":1679,"context_line":"                share, vserver,"},{"line_number":1680,"context_line":"                provisioning_options.get(\u0027adaptive_qos_policy_group\u0027),"}],"source_content_type":"text/x-python","patch_set":1,"id":"f829fa21_4da7a116","line":1677,"range":{"start_line":1677,"start_character":8,"end_line":1677,"end_character":42},"updated":"2025-07-10 14:41:06.000000000","message":"this condition should be as below to make sure we are validating the policy group name before proceeding. \n\nif provisioning_options.get(\u0027adaptive_qos_policy_group\u0027) in not None and adaptive_qos_specs and set_qos:","commit_id":"70b46e96abae81b1556899bd9b6b2a883860486a"}]}
