)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":38059,"name":"Anoop Kumar Shukla","display_name":"Anoop Shukla","email":"anoop.shukla@netapp.com","username":"anoop2","status":"NetApp"},"change_message_id":"3f03c5bd4183d95475963cf921c71a99811b4acf","unresolved":true,"context_lines":[{"line_number":4,"context_line":"Commit:     Kiran Pawar \u003ckinpaa@gmail.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2026-02-20 09:02:33 +0000"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Netapp: Add support for QoS type specs for dhss\u003dtrue"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"1. support fixed qos from share_type extra-specs"},{"line_number":10,"context_line":"2. support adaptive qos from qos_type specs"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":14,"id":"9efd24b2_5a6c0cce","line":7,"updated":"2026-02-23 05:51:07.000000000","message":"Since qos type is going to be our going forward feature for QoS management on NetApp Manila driver, just having support for dhss\u003dtrue is not going to help. What is blocking us from providing this support for dhss\u003dfalse as well?","commit_id":"6ec0eee4d042aa00085306560b722caddf0585c0"},{"author":{"_account_id":38059,"name":"Anoop Kumar Shukla","display_name":"Anoop Shukla","email":"anoop.shukla@netapp.com","username":"anoop2","status":"NetApp"},"change_message_id":"ed31b6213f03fd9906fb3b3b4cb94085102099a0","unresolved":true,"context_lines":[{"line_number":4,"context_line":"Commit:     Kiran Pawar \u003ckinpaa@gmail.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2026-02-20 09:02:33 +0000"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Netapp: Add support for QoS type specs for dhss\u003dtrue"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"1. support fixed qos from share_type extra-specs"},{"line_number":10,"context_line":"2. support adaptive qos from qos_type specs"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":14,"id":"ecc2d54e_98e5065c","line":7,"in_reply_to":"6bd7f7c7_eb563be7","updated":"2026-02-24 04:18:57.000000000","message":"Can we add the support for dhss\u003dfalse as well? We do not want to immediately remove the qos specs and AQOS support as of right now, but mark them as deprecated. We can remove it in a future release when appropriate.","commit_id":"6ec0eee4d042aa00085306560b722caddf0585c0"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"2c4e8054034183ced2ae0069b3614b84e46d0789","unresolved":true,"context_lines":[{"line_number":4,"context_line":"Commit:     Kiran Pawar \u003ckinpaa@gmail.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2026-02-20 09:02:33 +0000"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Netapp: Add support for QoS type specs for dhss\u003dtrue"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"1. support fixed qos from share_type extra-specs"},{"line_number":10,"context_line":"2. support adaptive qos from qos_type specs"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":14,"id":"6bd7f7c7_eb563be7","line":7,"in_reply_to":"9efd24b2_5a6c0cce","updated":"2026-02-23 06:57:25.000000000","message":"I think we can enable dhss\u003dfalse. But since dhss\u003dfalse support adaptive qos by predefined name, we can not support both i.e. predefined name as well as dynamic creation of adaptive qos. Also, In workflow meeting last month, I had mentioned that this will be enabled for dhss\u003dtrue only, and to which all agreed on.\n\nWhat we can do now is -\n1. Keep this enabled for dhss\u003dtrue (as current PR)\n2. Add another PR to enable for dhss\u003dfalse, remove qos specs, remove predefined adaptive qos policy support. \n\nAlso importantly, SAP dont support dhss\u003dfalse. So I can not test qos type specs with dhss\u003dfalse.","commit_id":"6ec0eee4d042aa00085306560b722caddf0585c0"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"6218c0f311dfa58b9fadf6dd9ef100791f047029","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Kiran Pawar \u003ckinpaa@gmail.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2026-02-20 09:02:33 +0000"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Netapp: Add support for QoS type specs for dhss\u003dtrue"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"1. support fixed qos from share_type extra-specs"},{"line_number":10,"context_line":"2. support adaptive qos from qos_type specs"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":14,"id":"7f2b22ce_7e7d2f8c","line":7,"in_reply_to":"ecc2d54e_98e5065c","updated":"2026-02-24 06:28:04.000000000","message":"Ok, I have enabled. Make sure its correct.","commit_id":"6ec0eee4d042aa00085306560b722caddf0585c0"}],"/PATCHSET_LEVEL":[{"author":{"_account_id":38373,"name":"Manideep","display_name":"Manideep","email":"manideep.openstack@gmail.com","username":"manideepn","status":"NetApp"},"change_message_id":"c7d4e992c3ccf15209a465d45a7e493b8ab5a76b","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"4b6ad874_a21bdec9","updated":"2026-01-31 12:59:18.000000000","message":"Run-NetApp CI","commit_id":"3036c81661e1d8460c320e347016b2701b187853"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"9934df4380c12f364204d239a6c31173062be2a0","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"08861e2c_e0fa8105","updated":"2026-02-02 18:51:00.000000000","message":"Tested for ZAPI\n1. share create with adaptive QOS\n2. share replica create with adaptive QOS\n3. share migration with same share type i.e. same default_qos_type\n4. share migration with different share type\n5. share snapshot create/delete\n6. share server migration.","commit_id":"3036c81661e1d8460c320e347016b2701b187853"},{"author":{"_account_id":38371,"name":"Kumar Tadepalli","display_name":"Kumar Tadepalli","email":"kumart.lead@gmail.com","username":"kumart","status":"NetApp"},"change_message_id":"0733bb429d2a245b2c25fdc19ddbf16e1cd0293c","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"5c7f8ee1_d78d6354","updated":"2026-02-10 07:28:56.000000000","message":"I have not yet completed a full review of the changes. These are my initial comments based on a first pass. Please address them.","commit_id":"4a0de745d3b8fc6d4240f36f98c9bdc4c70e0568"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"00a59e80469b858a6ec174e3e76cb709185d7f0b","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"b763d818_05678ee2","updated":"2026-02-13 11:03:32.000000000","message":"rebased after v1 api removal","commit_id":"4a0de745d3b8fc6d4240f36f98c9bdc4c70e0568"},{"author":{"_account_id":38059,"name":"Anoop Kumar Shukla","display_name":"Anoop Shukla","email":"anoop.shukla@netapp.com","username":"anoop2","status":"NetApp"},"change_message_id":"2038890d709a29afb83879d0b4eb9e65cc6a7d52","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"a75c5243_a544ed75","updated":"2026-02-16 13:58:51.000000000","message":"I do not see tempest tests for the new work added for manila. Do we plan to add new tests to the driver functional tests?","commit_id":"d5e55dd90403d33dad9948d404509fc9533f2163"},{"author":{"_account_id":38059,"name":"Anoop Kumar Shukla","display_name":"Anoop Shukla","email":"anoop.shukla@netapp.com","username":"anoop2","status":"NetApp"},"change_message_id":"2038890d709a29afb83879d0b4eb9e65cc6a7d52","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"3666c89b_23514213","updated":"2026-02-16 13:58:51.000000000","message":"I do not see tempest tests for the new work added for manila. Do we plan to add new tests to the driver tests?","commit_id":"d5e55dd90403d33dad9948d404509fc9533f2163"},{"author":{"_account_id":38371,"name":"Kumar Tadepalli","display_name":"Kumar Tadepalli","email":"kumart.lead@gmail.com","username":"kumart","status":"NetApp"},"change_message_id":"81bc8edf965c8d13e1dc1016b1726e93a1e5cc2e","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"2f10cc53_898694d7","updated":"2026-02-16 04:51:02.000000000","message":"Please address these comments.","commit_id":"d5e55dd90403d33dad9948d404509fc9533f2163"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"28d6314dd94bfb1f086be2fe1caed9635824f7d8","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"a40dcade_7f3e6d3d","in_reply_to":"3666c89b_23514213","updated":"2026-02-17 11:51:28.000000000","message":"the tempested are already there for manila API https://review.opendev.org/c/openstack/manila-tempest-plugin/+/973489","commit_id":"d5e55dd90403d33dad9948d404509fc9533f2163"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"28d6314dd94bfb1f086be2fe1caed9635824f7d8","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":7,"id":"e25bdbd2_2b575d37","in_reply_to":"a75c5243_a544ed75","updated":"2026-02-17 11:51:28.000000000","message":"Tempest tests will be added in future assuming NetApp CI is up and running for couple of weeks without any issue. I dont see tests for existing QoS as well. Do you have any reference of NetApp specific tests added in manila-tempest-plugin to test that driver feature, I will refer the same to add QoS type tests.","commit_id":"d5e55dd90403d33dad9948d404509fc9533f2163"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"2c4e8054034183ced2ae0069b3614b84e46d0789","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"7dddd542_fc2f909a","in_reply_to":"e25bdbd2_2b575d37","updated":"2026-02-23 06:57:25.000000000","message":"Done","commit_id":"d5e55dd90403d33dad9948d404509fc9533f2163"},{"author":{"_account_id":38371,"name":"Kumar Tadepalli","display_name":"Kumar Tadepalli","email":"kumart.lead@gmail.com","username":"kumart","status":"NetApp"},"change_message_id":"34becdd4b224af0aaf1a2d5ea94df54cc55959ee","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":9,"id":"39b38639_52cd1f28","updated":"2026-02-18 04:38:49.000000000","message":"Please address the comments.","commit_id":"e3a71c2759efd95083a9af68971767c795b48304"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"fd566890d8615e5eb9b3e7bdbce8b7b2188805da","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":11,"id":"62c979da_471a4091","updated":"2026-02-19 13:16:26.000000000","message":"After discussion with Netapp, instead of separate patch, same PR updated and existing qos specs are renamed to _legacy to keep supporting it as it is. The qos-type specs will handle both mbps and iops for min/max.","commit_id":"eacbfb1a7b4bf7170e668d0e5bb36b493fcbff3a"},{"author":{"_account_id":36180,"name":"Gireesh Awasthi","display_name":"Gireesh","email":"gawasthi2010@gmail.com","username":"agireesh","status":"NetApp"},"change_message_id":"4553a403e4e0269b73b630060ed2183cee26f0ff","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":14,"id":"b9fae402_a69b116b","updated":"2026-02-22 16:39:57.000000000","message":"Thanks kiran for working on this, code looks good for me, I have added few comments, please take a look.","commit_id":"6ec0eee4d042aa00085306560b722caddf0585c0"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"7e5659b80c648a346a0b18cbc2f22d43ac4ba488","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":15,"id":"af0c07d3_9196dca8","updated":"2026-02-23 13:22:10.000000000","message":"recheck","commit_id":"29043e4554fb89ebfdc041b1709c207dd03b4191"},{"author":{"_account_id":38059,"name":"Anoop Kumar Shukla","display_name":"Anoop Shukla","email":"anoop.shukla@netapp.com","username":"anoop2","status":"NetApp"},"change_message_id":"bdd22b701669d872cd80e5e8ad9ac5367061dee2","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":18,"id":"0daa32f3_05c6b707","updated":"2026-02-26 17:09:52.000000000","message":"I only have concerns around the DHSS\u003dfalse testing. Since we have not tested that workflow, we may need to follow up with any bug fixes that we find.","commit_id":"bf9681297af48adeb1175abb3ca15db704213035"},{"author":{"_account_id":38371,"name":"Kumar Tadepalli","display_name":"Kumar Tadepalli","email":"kumart.lead@gmail.com","username":"kumart","status":"NetApp"},"change_message_id":"dde8dc5d37acfb3388e70117a287044aa00b5bd0","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":18,"id":"911c3fed_3668acd1","updated":"2026-02-26 17:07:34.000000000","message":"LGTM","commit_id":"bf9681297af48adeb1175abb3ca15db704213035"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"08d0267597584a0541b23ac46ae6e0fb14aaefd3","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":18,"id":"6664a8c3_a738e2d3","updated":"2026-02-26 16:03:32.000000000","message":"Tested after core Manila change merged.\n\nShare create with default_qos_type fielding share type extra-specs\nShare replica create\nShare snapshot create\nShare migrate with same share type\nShare migrate with different share type\nModify QoS type and create new share","commit_id":"bf9681297af48adeb1175abb3ca15db704213035"},{"author":{"_account_id":36180,"name":"Gireesh Awasthi","display_name":"Gireesh","email":"gawasthi2010@gmail.com","username":"agireesh","status":"NetApp"},"change_message_id":"794e38111f8ccce5e6e64f1d8f257a5b4357802f","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":18,"id":"446c0d31_87a88271","updated":"2026-02-27 03:30:57.000000000","message":"Thanks Kiran for incorporating the review comments, changes looks good to me.","commit_id":"bf9681297af48adeb1175abb3ca15db704213035"},{"author":{"_account_id":18816,"name":"Maurice Escher","display_name":"carthaca","email":"maurice.escher@sap.com","username":"mapocace"},"change_message_id":"1f99632c95ed1d0ff8541c53f96ab31fc5a48263","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":18,"id":"142d47b7_cd91d7a3","updated":"2026-02-27 14:22:47.000000000","message":"please see my inline comments","commit_id":"bf9681297af48adeb1175abb3ca15db704213035"},{"author":{"_account_id":36180,"name":"Gireesh Awasthi","display_name":"Gireesh","email":"gawasthi2010@gmail.com","username":"agireesh","status":"NetApp"},"change_message_id":"3230b7ad478504103c27ee5870e901c2b07d57c9","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":18,"id":"61677d52_4cfdf797","updated":"2026-02-27 03:31:09.000000000","message":"recheck","commit_id":"bf9681297af48adeb1175abb3ca15db704213035"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"a8f70c4019cc3133dc5623277f065dc79f48f84f","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":18,"id":"2b60a943_a151f72a","in_reply_to":"0daa32f3_05c6b707","updated":"2026-02-26 17:15:29.000000000","message":"Yes, we can mention dhss\u003dfalse as experimental in current release and follow-up fixes if needed in RC1 and later as well.","commit_id":"bf9681297af48adeb1175abb3ca15db704213035"},{"author":{"_account_id":36180,"name":"Gireesh Awasthi","display_name":"Gireesh","email":"gawasthi2010@gmail.com","username":"agireesh","status":"NetApp"},"change_message_id":"794e38111f8ccce5e6e64f1d8f257a5b4357802f","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":18,"id":"497bbce7_64f53078","in_reply_to":"2b60a943_a151f72a","updated":"2026-02-27 03:30:57.000000000","message":"ACK","commit_id":"bf9681297af48adeb1175abb3ca15db704213035"},{"author":{"_account_id":29632,"name":"Carlos Eduardo","email":"ces.eduardo98@gmail.com","username":"silvacarlos"},"change_message_id":"0307d62de982de42c157b4d01821feaa9c45e8f4","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":20,"id":"7bd1b43a_3b54acc1","updated":"2026-02-27 18:37:57.000000000","message":"Sorry, as you pushed a PS while I was doing a review, most comments are in PS 19, but from what I looked, they still apply","commit_id":"2aac4ab9a86c6299fa990ea8462d39c43d6dc4cf"},{"author":{"_account_id":29632,"name":"Carlos Eduardo","email":"ces.eduardo98@gmail.com","username":"silvacarlos"},"change_message_id":"25433a235d529575b04cce8378aaa559f89c3698","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":20,"id":"c5f7f31d_5e58ca38","updated":"2026-02-27 18:35:28.000000000","message":"Thanks for working on this change, Kiran! Most comments are optimizations and I am happy if you do them in a follow-up. One of the comments I made highlights one of the things that happened: if we have the keys set somewhere, we can avoid duplication in the code or rewriting the same thing twice.","commit_id":"2aac4ab9a86c6299fa990ea8462d39c43d6dc4cf"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"8676102379c1c66f549accdcddbc9e7d50fb76f6","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":21,"id":"f398e9d8_b3446d1f","updated":"2026-02-27 18:46:38.000000000","message":"I will fix all optimization comemnts in follow up PR. Rest comments handled.","commit_id":"cb2911c3b5712be3768caa84c067b2ed98931ef2"},{"author":{"_account_id":29632,"name":"Carlos Eduardo","email":"ces.eduardo98@gmail.com","username":"silvacarlos"},"change_message_id":"a77b880944de10329987b3d0fde96236db0a7f8a","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":22,"id":"f4e63677_87ec88c6","updated":"2026-02-27 19:51:54.000000000","message":"CI seems to be passing, thanks for working on this change and also thanks to everyone that provided feedback. Please address the remaining comments in a follow-up change","commit_id":"72cc688bfcb14f28e797c6acba65122fa8575300"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"33aa5053e890e13466d0f35a3080c1b274b86240","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":25,"id":"69e7e002_46177ac8","updated":"2026-03-02 08:12:01.000000000","message":"Most comments addressed in https://review.opendev.org/c/openstack/manila/+/978294","commit_id":"5c290b901280ae676b3c50de26f7d2253b543fb8"},{"author":{"_account_id":29632,"name":"Carlos Eduardo","email":"ces.eduardo98@gmail.com","username":"silvacarlos"},"change_message_id":"1ac625f7faf80716fe413149e033921816d8fc65","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":25,"id":"74783cca_10a6ae75","updated":"2026-02-27 21:10:28.000000000","message":"Thanks for the fix, Goutham. Job seems to be happy now, let\u0027s get this in","commit_id":"5c290b901280ae676b3c50de26f7d2253b543fb8"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"ae65f647cac712a18c5b57413ec2d641f0f3f901","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":25,"id":"317cd03c_37cae9d5","updated":"2026-02-27 20:44:43.000000000","message":"hand editing on gerrit isn\u0027t fun. we\u0027ll survive though.. fixed up the reno, hopefully this doesn\u0027t break anything","commit_id":"5c290b901280ae676b3c50de26f7d2253b543fb8"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"426c10e47de8d02c26818233f90cdb6f862d3013","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":25,"id":"4d6bd709_d22452ca","updated":"2026-02-28 03:11:28.000000000","message":"recheck","commit_id":"5c290b901280ae676b3c50de26f7d2253b543fb8"}],"manila/share/drivers/netapp/dataontap/client/client_cmode.py":[{"author":{"_account_id":38371,"name":"Kumar Tadepalli","display_name":"Kumar Tadepalli","email":"kumart.lead@gmail.com","username":"kumart","status":"NetApp"},"change_message_id":"7f4b2ebad033103e8edd7d3829eb5c8b3f1a2d1b","unresolved":true,"context_lines":[{"line_number":6166,"context_line":"            api_args[\u0027max-throughput\u0027] \u003d max_throughput"},{"line_number":6167,"context_line":"        if min_throughput:"},{"line_number":6168,"context_line":"            api_args[\u0027min-throughput\u0027] \u003d min_throughput"},{"line_number":6169,"context_line":"        if capacity_shared:"},{"line_number":6170,"context_line":"            api_args[\u0027is-shared\u0027] \u003d \u0027true\u0027"},{"line_number":6171,"context_line":"        return self.send_request(\u0027qos-policy-group-create\u0027, api_args, False)"},{"line_number":6172,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"5e36878b_4323987e","line":6169,"updated":"2026-02-18 07:05:37.000000000","message":"The default value for is-shared in ZAPI is True where as in REST API it is False.\nZAPI: https://docs.netapp.com/us-en/ontap-cli/qos-policy-group-create.html#parameters\nREST: https://docs.netapp.com/us-en/ontap-restapi/post-storage-qos-policies.html#definitions\n\nI would suggest you to set this property as False in else case to make it uniform behavior with REST. We could document that if not specified it will be not a shared QoS policy.","commit_id":"e3a71c2759efd95083a9af68971767c795b48304"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"088df2a54027358f24ec4c06e7a48c13fd31b174","unresolved":false,"context_lines":[{"line_number":6166,"context_line":"            api_args[\u0027max-throughput\u0027] \u003d max_throughput"},{"line_number":6167,"context_line":"        if min_throughput:"},{"line_number":6168,"context_line":"            api_args[\u0027min-throughput\u0027] \u003d min_throughput"},{"line_number":6169,"context_line":"        if capacity_shared:"},{"line_number":6170,"context_line":"            api_args[\u0027is-shared\u0027] \u003d \u0027true\u0027"},{"line_number":6171,"context_line":"        return self.send_request(\u0027qos-policy-group-create\u0027, api_args, False)"},{"line_number":6172,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"54bc46b0_653453d3","line":6169,"in_reply_to":"5e36878b_4323987e","updated":"2026-02-18 11:23:47.000000000","message":"Done","commit_id":"e3a71c2759efd95083a9af68971767c795b48304"},{"author":{"_account_id":36180,"name":"Gireesh Awasthi","display_name":"Gireesh","email":"gawasthi2010@gmail.com","username":"agireesh","status":"NetApp"},"change_message_id":"4553a403e4e0269b73b630060ed2183cee26f0ff","unresolved":true,"context_lines":[{"line_number":6039,"context_line":"        return self.send_request("},{"line_number":6040,"context_line":"            \u0027qos-adaptive-policy-group-rename\u0027, api_args, False)"},{"line_number":6041,"context_line":""},{"line_number":6042,"context_line":"    @na_utils.trace"},{"line_number":6043,"context_line":"    def mark_adaptive_qos_policy_group_for_deletion(self,"},{"line_number":6044,"context_line":"                                                    qos_policy_group_name):"},{"line_number":6045,"context_line":"        \"\"\"Soft delete backing adaptive QoS policy group for manila share.\"\"\""},{"line_number":6046,"context_line":"        # NOTE(gouthamr): ONTAP deletes storage objects asynchronously. As"},{"line_number":6047,"context_line":"        # long as garbage collection hasn\u0027t occurred, assigned QoS policy may"},{"line_number":6048,"context_line":"        # still be tagged \"in use\". So, we rename the QoS policy group using a"},{"line_number":6049,"context_line":"        # specific pattern and later attempt on a best effort basis to"},{"line_number":6050,"context_line":"        # delete any QoS policy groups matching that pattern."},{"line_number":6051,"context_line":""},{"line_number":6052,"context_line":"        if self.adaptive_qos_policy_group_exists(qos_policy_group_name):"},{"line_number":6053,"context_line":"            new_name \u003d DELETED_PREFIX + qos_policy_group_name"},{"line_number":6054,"context_line":"            try:"},{"line_number":6055,"context_line":"                self.adaptive_qos_policy_group_rename(qos_policy_group_name,"},{"line_number":6056,"context_line":"                                                      new_name)"},{"line_number":6057,"context_line":"            except netapp_api.NaApiError as ex:"},{"line_number":6058,"context_line":"                msg \u003d (\u0027Rename failure in cleanup of cDOT adaptive QoS \u0027"},{"line_number":6059,"context_line":"                       \u0027policy group %(name)s: %(ex)s\u0027)"},{"line_number":6060,"context_line":"                msg_args \u003d {\u0027name\u0027: qos_policy_group_name, \u0027ex\u0027: ex}"},{"line_number":6061,"context_line":"                LOG.warning(msg, msg_args)"},{"line_number":6062,"context_line":"            # Attempt to delete any QoS policies named \"deleted_manila-*\"."},{"line_number":6063,"context_line":"            self.remove_unused_adaptive_qos_policy_groups()"},{"line_number":6064,"context_line":""},{"line_number":6065,"context_line":"    @na_utils.trace"},{"line_number":6066,"context_line":"    def remove_unused_adaptive_qos_policy_groups(self, prefix\u003dDELETED_PREFIX):"},{"line_number":6067,"context_line":"        \"\"\"Deletes all deletion ready adaptive QoS policy groups.\"\"\""},{"line_number":6068,"context_line":"        api_args \u003d {"},{"line_number":6069,"context_line":"            \u0027query\u0027: {"},{"line_number":6070,"context_line":"                \u0027qos-adaptive-policy-group-info\u0027: {"},{"line_number":6071,"context_line":"                    \u0027policy-group\u0027: \u0027%s*\u0027 % prefix"},{"line_number":6072,"context_line":"                }"},{"line_number":6073,"context_line":"            },"},{"line_number":6074,"context_line":"            \u0027max-records\u0027: 3500,"},{"line_number":6075,"context_line":"            \u0027continue-on-failure\u0027: \u0027true\u0027,"},{"line_number":6076,"context_line":"            \u0027return-success-list\u0027: \u0027false\u0027,"},{"line_number":6077,"context_line":"            \u0027return-failure-list\u0027: \u0027false\u0027,"},{"line_number":6078,"context_line":"        }"},{"line_number":6079,"context_line":""},{"line_number":6080,"context_line":"        try:"},{"line_number":6081,"context_line":"            self.send_request("},{"line_number":6082,"context_line":"                \u0027qos-adaptive-policy-group-delete-iter\u0027, api_args, False)"},{"line_number":6083,"context_line":"        except netapp_api.NaApiError as ex:"},{"line_number":6084,"context_line":"            msg \u003d (\u0027Could not delete adaptive QoS policy groups. Details: \u0027"},{"line_number":6085,"context_line":"                   \u0027%(ex)s\u0027)"},{"line_number":6086,"context_line":"            msg_args \u003d {\u0027ex\u0027: ex}"},{"line_number":6087,"context_line":"            LOG.debug(msg, msg_args)"},{"line_number":6088,"context_line":""},{"line_number":6089,"context_line":"    @na_utils.trace"},{"line_number":6090,"context_line":"    def qos_policy_group_exists(self, qos_policy_group_name):"},{"line_number":6091,"context_line":"        \"\"\"Checks if a QoS policy group exists.\"\"\""}],"source_content_type":"text/x-python","patch_set":14,"id":"d48bccd4_392532ad","line":6088,"range":{"start_line":6042,"start_character":10,"end_line":6088,"end_character":0},"updated":"2026-02-22 16:39:57.000000000","message":"I don’t see any use for these methods. QoS policies are always created for an SVM, and if the user deletes the SVM, all QoS policies associated with that SVM will be deleted from ONTAP.\nIn what scenario do you think an assigned QoS policy might still be in use?","commit_id":"6ec0eee4d042aa00085306560b722caddf0585c0"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"2c4e8054034183ced2ae0069b3614b84e46d0789","unresolved":false,"context_lines":[{"line_number":6039,"context_line":"        return self.send_request("},{"line_number":6040,"context_line":"            \u0027qos-adaptive-policy-group-rename\u0027, api_args, False)"},{"line_number":6041,"context_line":""},{"line_number":6042,"context_line":"    @na_utils.trace"},{"line_number":6043,"context_line":"    def mark_adaptive_qos_policy_group_for_deletion(self,"},{"line_number":6044,"context_line":"                                                    qos_policy_group_name):"},{"line_number":6045,"context_line":"        \"\"\"Soft delete backing adaptive QoS policy group for manila share.\"\"\""},{"line_number":6046,"context_line":"        # NOTE(gouthamr): ONTAP deletes storage objects asynchronously. As"},{"line_number":6047,"context_line":"        # long as garbage collection hasn\u0027t occurred, assigned QoS policy may"},{"line_number":6048,"context_line":"        # still be tagged \"in use\". So, we rename the QoS policy group using a"},{"line_number":6049,"context_line":"        # specific pattern and later attempt on a best effort basis to"},{"line_number":6050,"context_line":"        # delete any QoS policy groups matching that pattern."},{"line_number":6051,"context_line":""},{"line_number":6052,"context_line":"        if self.adaptive_qos_policy_group_exists(qos_policy_group_name):"},{"line_number":6053,"context_line":"            new_name \u003d DELETED_PREFIX + qos_policy_group_name"},{"line_number":6054,"context_line":"            try:"},{"line_number":6055,"context_line":"                self.adaptive_qos_policy_group_rename(qos_policy_group_name,"},{"line_number":6056,"context_line":"                                                      new_name)"},{"line_number":6057,"context_line":"            except netapp_api.NaApiError as ex:"},{"line_number":6058,"context_line":"                msg \u003d (\u0027Rename failure in cleanup of cDOT adaptive QoS \u0027"},{"line_number":6059,"context_line":"                       \u0027policy group %(name)s: %(ex)s\u0027)"},{"line_number":6060,"context_line":"                msg_args \u003d {\u0027name\u0027: qos_policy_group_name, \u0027ex\u0027: ex}"},{"line_number":6061,"context_line":"                LOG.warning(msg, msg_args)"},{"line_number":6062,"context_line":"            # Attempt to delete any QoS policies named \"deleted_manila-*\"."},{"line_number":6063,"context_line":"            self.remove_unused_adaptive_qos_policy_groups()"},{"line_number":6064,"context_line":""},{"line_number":6065,"context_line":"    @na_utils.trace"},{"line_number":6066,"context_line":"    def remove_unused_adaptive_qos_policy_groups(self, prefix\u003dDELETED_PREFIX):"},{"line_number":6067,"context_line":"        \"\"\"Deletes all deletion ready adaptive QoS policy groups.\"\"\""},{"line_number":6068,"context_line":"        api_args \u003d {"},{"line_number":6069,"context_line":"            \u0027query\u0027: {"},{"line_number":6070,"context_line":"                \u0027qos-adaptive-policy-group-info\u0027: {"},{"line_number":6071,"context_line":"                    \u0027policy-group\u0027: \u0027%s*\u0027 % prefix"},{"line_number":6072,"context_line":"                }"},{"line_number":6073,"context_line":"            },"},{"line_number":6074,"context_line":"            \u0027max-records\u0027: 3500,"},{"line_number":6075,"context_line":"            \u0027continue-on-failure\u0027: \u0027true\u0027,"},{"line_number":6076,"context_line":"            \u0027return-success-list\u0027: \u0027false\u0027,"},{"line_number":6077,"context_line":"            \u0027return-failure-list\u0027: \u0027false\u0027,"},{"line_number":6078,"context_line":"        }"},{"line_number":6079,"context_line":""},{"line_number":6080,"context_line":"        try:"},{"line_number":6081,"context_line":"            self.send_request("},{"line_number":6082,"context_line":"                \u0027qos-adaptive-policy-group-delete-iter\u0027, api_args, False)"},{"line_number":6083,"context_line":"        except netapp_api.NaApiError as ex:"},{"line_number":6084,"context_line":"            msg \u003d (\u0027Could not delete adaptive QoS policy groups. Details: \u0027"},{"line_number":6085,"context_line":"                   \u0027%(ex)s\u0027)"},{"line_number":6086,"context_line":"            msg_args \u003d {\u0027ex\u0027: ex}"},{"line_number":6087,"context_line":"            LOG.debug(msg, msg_args)"},{"line_number":6088,"context_line":""},{"line_number":6089,"context_line":"    @na_utils.trace"},{"line_number":6090,"context_line":"    def qos_policy_group_exists(self, qos_policy_group_name):"},{"line_number":6091,"context_line":"        \"\"\"Checks if a QoS policy group exists.\"\"\""}],"source_content_type":"text/x-python","patch_set":14,"id":"a2bb78d7_8ccd488f","line":6088,"range":{"start_line":6042,"start_character":10,"end_line":6088,"end_character":0},"in_reply_to":"d48bccd4_392532ad","updated":"2026-02-23 06:57:25.000000000","message":"This was added to keep parity with existing qos methods. But since we dont need it, removing with updated patchset.","commit_id":"6ec0eee4d042aa00085306560b722caddf0585c0"},{"author":{"_account_id":36180,"name":"Gireesh Awasthi","display_name":"Gireesh","email":"gawasthi2010@gmail.com","username":"agireesh","status":"NetApp"},"change_message_id":"4553a403e4e0269b73b630060ed2183cee26f0ff","unresolved":true,"context_lines":[{"line_number":6151,"context_line":"        return policy_info"},{"line_number":6152,"context_line":""},{"line_number":6153,"context_line":"    @na_utils.trace"},{"line_number":6154,"context_line":"    def qos_policy_group_create_legacy(self, qos_policy_group_name, vserver,"},{"line_number":6155,"context_line":"                                       max_throughput\u003dNone,"},{"line_number":6156,"context_line":"                                       min_throughput\u003dNone):"},{"line_number":6157,"context_line":"        \"\"\"Creates a QoS policy group.\"\"\""},{"line_number":6158,"context_line":"        api_args \u003d {"},{"line_number":6159,"context_line":"            \u0027policy-group\u0027: qos_policy_group_name,"},{"line_number":6160,"context_line":"            \u0027vserver\u0027: vserver,"}],"source_content_type":"text/x-python","patch_set":14,"id":"32cd4231_9981f6a4","line":6157,"range":{"start_line":6154,"start_character":1,"end_line":6157,"end_character":41},"updated":"2026-02-22 16:39:57.000000000","message":"It is nice you have added the support for both min and max throughput. could you please add the support for capacity_shared (is-shared) here. Once of the customer wanted to have the control to this param from OpenStack. This comment also applicable for Rest also.","commit_id":"6ec0eee4d042aa00085306560b722caddf0585c0"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"2c4e8054034183ced2ae0069b3614b84e46d0789","unresolved":false,"context_lines":[{"line_number":6151,"context_line":"        return policy_info"},{"line_number":6152,"context_line":""},{"line_number":6153,"context_line":"    @na_utils.trace"},{"line_number":6154,"context_line":"    def qos_policy_group_create_legacy(self, qos_policy_group_name, vserver,"},{"line_number":6155,"context_line":"                                       max_throughput\u003dNone,"},{"line_number":6156,"context_line":"                                       min_throughput\u003dNone):"},{"line_number":6157,"context_line":"        \"\"\"Creates a QoS policy group.\"\"\""},{"line_number":6158,"context_line":"        api_args \u003d {"},{"line_number":6159,"context_line":"            \u0027policy-group\u0027: qos_policy_group_name,"},{"line_number":6160,"context_line":"            \u0027vserver\u0027: vserver,"}],"source_content_type":"text/x-python","patch_set":14,"id":"532087c2_6a5700c0","line":6157,"range":{"start_line":6154,"start_character":1,"end_line":6157,"end_character":41},"in_reply_to":"32cd4231_9981f6a4","updated":"2026-02-23 06:57:25.000000000","message":"I had discussed this with Anoop and Kumar. AFAIK, The needed feature will not be provided with qos specs and customer will be informed to move to qos type specs.","commit_id":"6ec0eee4d042aa00085306560b722caddf0585c0"},{"author":{"_account_id":36180,"name":"Gireesh Awasthi","display_name":"Gireesh","email":"gawasthi2010@gmail.com","username":"agireesh","status":"NetApp"},"change_message_id":"794e38111f8ccce5e6e64f1d8f257a5b4357802f","unresolved":false,"context_lines":[{"line_number":6151,"context_line":"        return policy_info"},{"line_number":6152,"context_line":""},{"line_number":6153,"context_line":"    @na_utils.trace"},{"line_number":6154,"context_line":"    def qos_policy_group_create_legacy(self, qos_policy_group_name, vserver,"},{"line_number":6155,"context_line":"                                       max_throughput\u003dNone,"},{"line_number":6156,"context_line":"                                       min_throughput\u003dNone):"},{"line_number":6157,"context_line":"        \"\"\"Creates a QoS policy group.\"\"\""},{"line_number":6158,"context_line":"        api_args \u003d {"},{"line_number":6159,"context_line":"            \u0027policy-group\u0027: qos_policy_group_name,"},{"line_number":6160,"context_line":"            \u0027vserver\u0027: vserver,"}],"source_content_type":"text/x-python","patch_set":14,"id":"6a799f84_ce8aeab9","line":6157,"range":{"start_line":6154,"start_character":1,"end_line":6157,"end_character":41},"in_reply_to":"532087c2_6a5700c0","updated":"2026-02-27 03:30:57.000000000","message":"ACK","commit_id":"6ec0eee4d042aa00085306560b722caddf0585c0"},{"author":{"_account_id":29632,"name":"Carlos Eduardo","email":"ces.eduardo98@gmail.com","username":"silvacarlos"},"change_message_id":"25433a235d529575b04cce8378aaa559f89c3698","unresolved":true,"context_lines":[{"line_number":5916,"context_line":"            self.adaptive_qos_policy_group_get(qos_policy_group_name)"},{"line_number":5917,"context_line":"        except exception.NetAppException:"},{"line_number":5918,"context_line":"            return False"},{"line_number":5919,"context_line":"        return True"},{"line_number":5920,"context_line":""},{"line_number":5921,"context_line":"    @na_utils.trace"},{"line_number":5922,"context_line":"    def adaptive_qos_policy_group_get(self, qos_policy_group_name):"},{"line_number":5923,"context_line":"        \"\"\"Checks if an adaptive QoS policy group exists.\"\"\""},{"line_number":5924,"context_line":"        api_args \u003d {"}],"source_content_type":"text/x-python","patch_set":19,"id":"226fbab4_d74a94c9","line":5921,"range":{"start_line":5919,"start_character":0,"end_line":5921,"end_character":19},"updated":"2026-02-27 18:35:28.000000000","message":"```suggestion\n        return True\n    \n    def _get_qos_spec_keys():\n        return [\n            \u0027policy-group\u0027, \u0027vserver\u0027, \u0027peak-iops\u0027, \u0027peak-iops-allocation\u0027,\n            \u0027expected-iops\u0027, \u0027expected-iops-allocation\u0027, \u0027absolute-min-iops\u0027,\n            \u0027block-size\u0027, \u0027num-workload\u0027\n        ]\n\n    @na_utils.trace\n```","commit_id":"062ae20455a0b119e0baa7850a222b0192cf0d04"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"33aa5053e890e13466d0f35a3080c1b274b86240","unresolved":false,"context_lines":[{"line_number":5916,"context_line":"            self.adaptive_qos_policy_group_get(qos_policy_group_name)"},{"line_number":5917,"context_line":"        except exception.NetAppException:"},{"line_number":5918,"context_line":"            return False"},{"line_number":5919,"context_line":"        return True"},{"line_number":5920,"context_line":""},{"line_number":5921,"context_line":"    @na_utils.trace"},{"line_number":5922,"context_line":"    def adaptive_qos_policy_group_get(self, qos_policy_group_name):"},{"line_number":5923,"context_line":"        \"\"\"Checks if an adaptive QoS policy group exists.\"\"\""},{"line_number":5924,"context_line":"        api_args \u003d {"}],"source_content_type":"text/x-python","patch_set":19,"id":"4c57c4bd_e80e7e0c","line":5921,"range":{"start_line":5919,"start_character":0,"end_line":5921,"end_character":19},"in_reply_to":"226fbab4_d74a94c9","updated":"2026-03-02 08:12:01.000000000","message":"Not much impact for code optimization as ZAPI return key and Manila internal key are different. Changes applied for REST implementation though","commit_id":"062ae20455a0b119e0baa7850a222b0192cf0d04"},{"author":{"_account_id":29632,"name":"Carlos Eduardo","email":"ces.eduardo98@gmail.com","username":"silvacarlos"},"change_message_id":"25433a235d529575b04cce8378aaa559f89c3698","unresolved":true,"context_lines":[{"line_number":5920,"context_line":""},{"line_number":5921,"context_line":"    @na_utils.trace"},{"line_number":5922,"context_line":"    def adaptive_qos_policy_group_get(self, qos_policy_group_name):"},{"line_number":5923,"context_line":"        \"\"\"Checks if an adaptive QoS policy group exists.\"\"\""},{"line_number":5924,"context_line":"        api_args \u003d {"},{"line_number":5925,"context_line":"            \u0027query\u0027: {"},{"line_number":5926,"context_line":"                \u0027qos-adaptive-policy-group-info\u0027: {"}],"source_content_type":"text/x-python","patch_set":19,"id":"62f24a22_2226cba2","line":5923,"updated":"2026-02-27 18:35:28.000000000","message":"these keys are being repeated in a lot of places, maybe we can save them somehwere and read from this place, so that we don\u0027t forget about any in the code? see suggestions","commit_id":"062ae20455a0b119e0baa7850a222b0192cf0d04"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"33aa5053e890e13466d0f35a3080c1b274b86240","unresolved":false,"context_lines":[{"line_number":5920,"context_line":""},{"line_number":5921,"context_line":"    @na_utils.trace"},{"line_number":5922,"context_line":"    def adaptive_qos_policy_group_get(self, qos_policy_group_name):"},{"line_number":5923,"context_line":"        \"\"\"Checks if an adaptive QoS policy group exists.\"\"\""},{"line_number":5924,"context_line":"        api_args \u003d {"},{"line_number":5925,"context_line":"            \u0027query\u0027: {"},{"line_number":5926,"context_line":"                \u0027qos-adaptive-policy-group-info\u0027: {"}],"source_content_type":"text/x-python","patch_set":19,"id":"6afae0ae_90c2ebbc","line":5923,"in_reply_to":"62f24a22_2226cba2","updated":"2026-03-02 08:12:01.000000000","message":"Acknowledged","commit_id":"062ae20455a0b119e0baa7850a222b0192cf0d04"},{"author":{"_account_id":29632,"name":"Carlos Eduardo","email":"ces.eduardo98@gmail.com","username":"silvacarlos"},"change_message_id":"25433a235d529575b04cce8378aaa559f89c3698","unresolved":true,"context_lines":[{"line_number":5929,"context_line":"            },"},{"line_number":5930,"context_line":"            \u0027desired-attributes\u0027: {"},{"line_number":5931,"context_line":"                \u0027qos-adaptive-policy-group-info\u0027: {"},{"line_number":5932,"context_line":"                    \u0027policy-group\u0027: None,"},{"line_number":5933,"context_line":"                    \u0027vserver\u0027: None,"},{"line_number":5934,"context_line":"                    \u0027peak-iops\u0027: None,"},{"line_number":5935,"context_line":"                    \u0027peak-iops-allocation\u0027: None,"},{"line_number":5936,"context_line":"                    \u0027expected-iops\u0027: None,"},{"line_number":5937,"context_line":"                    \u0027expected-iops-allocation\u0027: None,"},{"line_number":5938,"context_line":"                    \u0027absolute-min-iops\u0027: None,"},{"line_number":5939,"context_line":"                    \u0027block-size\u0027: None,"},{"line_number":5940,"context_line":"                    \u0027num-workloads\u0027: None"},{"line_number":5941,"context_line":"                },"},{"line_number":5942,"context_line":"            },"},{"line_number":5943,"context_line":"        }"}],"source_content_type":"text/x-python","patch_set":19,"id":"5baf54c7_c0dec5a8","line":5940,"range":{"start_line":5932,"start_character":20,"end_line":5940,"end_character":41},"updated":"2026-02-27 18:35:28.000000000","message":"```suggestion\n                    policy_key: None for policy_key in self._get_qos_spec_keys()\n```","commit_id":"062ae20455a0b119e0baa7850a222b0192cf0d04"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"33aa5053e890e13466d0f35a3080c1b274b86240","unresolved":false,"context_lines":[{"line_number":5929,"context_line":"            },"},{"line_number":5930,"context_line":"            \u0027desired-attributes\u0027: {"},{"line_number":5931,"context_line":"                \u0027qos-adaptive-policy-group-info\u0027: {"},{"line_number":5932,"context_line":"                    \u0027policy-group\u0027: None,"},{"line_number":5933,"context_line":"                    \u0027vserver\u0027: None,"},{"line_number":5934,"context_line":"                    \u0027peak-iops\u0027: None,"},{"line_number":5935,"context_line":"                    \u0027peak-iops-allocation\u0027: None,"},{"line_number":5936,"context_line":"                    \u0027expected-iops\u0027: None,"},{"line_number":5937,"context_line":"                    \u0027expected-iops-allocation\u0027: None,"},{"line_number":5938,"context_line":"                    \u0027absolute-min-iops\u0027: None,"},{"line_number":5939,"context_line":"                    \u0027block-size\u0027: None,"},{"line_number":5940,"context_line":"                    \u0027num-workloads\u0027: None"},{"line_number":5941,"context_line":"                },"},{"line_number":5942,"context_line":"            },"},{"line_number":5943,"context_line":"        }"}],"source_content_type":"text/x-python","patch_set":19,"id":"1b39b73d_958ba239","line":5940,"range":{"start_line":5932,"start_character":20,"end_line":5940,"end_character":41},"in_reply_to":"5baf54c7_c0dec5a8","updated":"2026-03-02 08:12:01.000000000","message":"Done","commit_id":"062ae20455a0b119e0baa7850a222b0192cf0d04"},{"author":{"_account_id":29632,"name":"Carlos Eduardo","email":"ces.eduardo98@gmail.com","username":"silvacarlos"},"change_message_id":"25433a235d529575b04cce8378aaa559f89c3698","unresolved":true,"context_lines":[{"line_number":5964,"context_line":"        qos_policy_group_info \u003d attributes_list.get_child_by_name("},{"line_number":5965,"context_line":"            \u0027qos-adaptive-policy-group-info\u0027) or netapp_api.NaElement(\u0027none\u0027)"},{"line_number":5966,"context_line":""},{"line_number":5967,"context_line":"        policy_info \u003d {"},{"line_number":5968,"context_line":"            \u0027policy-group\u0027: qos_policy_group_info.get_child_content("},{"line_number":5969,"context_line":"                \u0027policy-group\u0027),"},{"line_number":5970,"context_line":"            \u0027vserver\u0027: qos_policy_group_info.get_child_content(\u0027vserver\u0027),"},{"line_number":5971,"context_line":"            \u0027num-workloads\u0027: int(qos_policy_group_info.get_child_content("},{"line_number":5972,"context_line":"                \u0027num-workloads\u0027)),"},{"line_number":5973,"context_line":"            \u0027block_size\u0027: qos_policy_group_info.get_child_content("},{"line_number":5974,"context_line":"                \u0027block-size\u0027),"},{"line_number":5975,"context_line":"            \u0027absolute_min_iops\u0027: qos_policy_group_info.get_child_content("},{"line_number":5976,"context_line":"                \u0027absolute-min-iops\u0027),"},{"line_number":5977,"context_line":"            \u0027peak_iops\u0027: qos_policy_group_info.get_child_content("},{"line_number":5978,"context_line":"                \u0027peak-iops\u0027),"},{"line_number":5979,"context_line":"            \u0027peak_iops_allocation\u0027: qos_policy_group_info.get_child_content("},{"line_number":5980,"context_line":"                \u0027peak-iops-allocation\u0027),"},{"line_number":5981,"context_line":"            \u0027expected_iops\u0027: qos_policy_group_info.get_child_content("},{"line_number":5982,"context_line":"                \u0027expected-iops\u0027),"},{"line_number":5983,"context_line":"            \u0027expected_iops_allocation\u0027: ("},{"line_number":5984,"context_line":"                qos_policy_group_info.get_child_content("},{"line_number":5985,"context_line":"                    \u0027expected-iops-allocation\u0027)),"},{"line_number":5986,"context_line":"        }"},{"line_number":5987,"context_line":"        return policy_info"},{"line_number":5988,"context_line":""},{"line_number":5989,"context_line":"    @na_utils.trace"}],"source_content_type":"text/x-python","patch_set":19,"id":"c6f94594_ced76bd5","line":5986,"range":{"start_line":5967,"start_character":8,"end_line":5986,"end_character":9},"updated":"2026-02-27 18:35:28.000000000","message":"```suggestion\n        policy_info \u003d {\n            policy_key: qos_policy_group_info.get_child_content(\n                policy_key) for policy_key in _get_qos_spec_keys()\n        }\n```","commit_id":"062ae20455a0b119e0baa7850a222b0192cf0d04"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"33aa5053e890e13466d0f35a3080c1b274b86240","unresolved":false,"context_lines":[{"line_number":5964,"context_line":"        qos_policy_group_info \u003d attributes_list.get_child_by_name("},{"line_number":5965,"context_line":"            \u0027qos-adaptive-policy-group-info\u0027) or netapp_api.NaElement(\u0027none\u0027)"},{"line_number":5966,"context_line":""},{"line_number":5967,"context_line":"        policy_info \u003d {"},{"line_number":5968,"context_line":"            \u0027policy-group\u0027: qos_policy_group_info.get_child_content("},{"line_number":5969,"context_line":"                \u0027policy-group\u0027),"},{"line_number":5970,"context_line":"            \u0027vserver\u0027: qos_policy_group_info.get_child_content(\u0027vserver\u0027),"},{"line_number":5971,"context_line":"            \u0027num-workloads\u0027: int(qos_policy_group_info.get_child_content("},{"line_number":5972,"context_line":"                \u0027num-workloads\u0027)),"},{"line_number":5973,"context_line":"            \u0027block_size\u0027: qos_policy_group_info.get_child_content("},{"line_number":5974,"context_line":"                \u0027block-size\u0027),"},{"line_number":5975,"context_line":"            \u0027absolute_min_iops\u0027: qos_policy_group_info.get_child_content("},{"line_number":5976,"context_line":"                \u0027absolute-min-iops\u0027),"},{"line_number":5977,"context_line":"            \u0027peak_iops\u0027: qos_policy_group_info.get_child_content("},{"line_number":5978,"context_line":"                \u0027peak-iops\u0027),"},{"line_number":5979,"context_line":"            \u0027peak_iops_allocation\u0027: qos_policy_group_info.get_child_content("},{"line_number":5980,"context_line":"                \u0027peak-iops-allocation\u0027),"},{"line_number":5981,"context_line":"            \u0027expected_iops\u0027: qos_policy_group_info.get_child_content("},{"line_number":5982,"context_line":"                \u0027expected-iops\u0027),"},{"line_number":5983,"context_line":"            \u0027expected_iops_allocation\u0027: ("},{"line_number":5984,"context_line":"                qos_policy_group_info.get_child_content("},{"line_number":5985,"context_line":"                    \u0027expected-iops-allocation\u0027)),"},{"line_number":5986,"context_line":"        }"},{"line_number":5987,"context_line":"        return policy_info"},{"line_number":5988,"context_line":""},{"line_number":5989,"context_line":"    @na_utils.trace"}],"source_content_type":"text/x-python","patch_set":19,"id":"a97f3a4d_a44f35fe","line":5986,"range":{"start_line":5967,"start_character":8,"end_line":5986,"end_character":9},"in_reply_to":"c6f94594_ced76bd5","updated":"2026-03-02 08:12:01.000000000","message":"return key is \"peak-iops\" while policy_info key is \"peak_iops\" So dropping it.","commit_id":"062ae20455a0b119e0baa7850a222b0192cf0d04"},{"author":{"_account_id":29632,"name":"Carlos Eduardo","email":"ces.eduardo98@gmail.com","username":"silvacarlos"},"change_message_id":"25433a235d529575b04cce8378aaa559f89c3698","unresolved":true,"context_lines":[{"line_number":5991,"context_line":"                                         qos_type_specs):"},{"line_number":5992,"context_line":""},{"line_number":5993,"context_line":"        \"\"\"Creates an adaptive QoS policy group.\"\"\""},{"line_number":5994,"context_line":"        api_args \u003d {"},{"line_number":5995,"context_line":"            \u0027policy-group\u0027: qos_policy_group_name,"},{"line_number":5996,"context_line":"            \u0027vserver\u0027: vserver,"},{"line_number":5997,"context_line":"        }"},{"line_number":5998,"context_line":"        api_args[\u0027peak-iops\u0027] \u003d qos_type_specs.get(\u0027peak_iops\u0027)"},{"line_number":5999,"context_line":"        api_args[\u0027expected-iops\u0027] \u003d qos_type_specs.get(\u0027expected_iops\u0027)"},{"line_number":6000,"context_line":""},{"line_number":6001,"context_line":"        if qos_type_specs.get(\u0027absolute_min_iops\u0027):"},{"line_number":6002,"context_line":"            api_args[\u0027absolute-min-iops\u0027] \u003d qos_type_specs.get("},{"line_number":6003,"context_line":"                \u0027absolute_min_iops\u0027)"},{"line_number":6004,"context_line":"        if qos_type_specs.get(\u0027block_size\u0027):"},{"line_number":6005,"context_line":"            api_args[\u0027block-size\u0027] \u003d qos_type_specs.get(\u0027block_size\u0027)"},{"line_number":6006,"context_line":"        if qos_type_specs.get(\u0027expected_iops_allocation\u0027):"},{"line_number":6007,"context_line":"            api_args[\u0027expected-iops-allocation\u0027] \u003d qos_type_specs.get("},{"line_number":6008,"context_line":"                \u0027expected_iops_allocation\u0027)"},{"line_number":6009,"context_line":"        if qos_type_specs.get(\u0027peak_iops_allocation\u0027):"},{"line_number":6010,"context_line":"            api_args[\u0027peak-iops-allocation\u0027] \u003d qos_type_specs.get("},{"line_number":6011,"context_line":"                \u0027peak_iops_allocation\u0027)"},{"line_number":6012,"context_line":""},{"line_number":6013,"context_line":"        return self.send_request(\u0027qos-adaptive-policy-group-create\u0027,"},{"line_number":6014,"context_line":"                                 api_args, False)"},{"line_number":6015,"context_line":""},{"line_number":6016,"context_line":"    @na_utils.trace"},{"line_number":6017,"context_line":"    def adaptive_qos_policy_group_modify(self, qos_policy_group_name,"}],"source_content_type":"text/x-python","patch_set":19,"id":"d6c439d9_feef11af","line":6014,"range":{"start_line":5994,"start_character":8,"end_line":6014,"end_character":49},"updated":"2026-02-27 18:35:28.000000000","message":"same sort of optimizations could also be applied here","commit_id":"062ae20455a0b119e0baa7850a222b0192cf0d04"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"33aa5053e890e13466d0f35a3080c1b274b86240","unresolved":false,"context_lines":[{"line_number":5991,"context_line":"                                         qos_type_specs):"},{"line_number":5992,"context_line":""},{"line_number":5993,"context_line":"        \"\"\"Creates an adaptive QoS policy group.\"\"\""},{"line_number":5994,"context_line":"        api_args \u003d {"},{"line_number":5995,"context_line":"            \u0027policy-group\u0027: qos_policy_group_name,"},{"line_number":5996,"context_line":"            \u0027vserver\u0027: vserver,"},{"line_number":5997,"context_line":"        }"},{"line_number":5998,"context_line":"        api_args[\u0027peak-iops\u0027] \u003d qos_type_specs.get(\u0027peak_iops\u0027)"},{"line_number":5999,"context_line":"        api_args[\u0027expected-iops\u0027] \u003d qos_type_specs.get(\u0027expected_iops\u0027)"},{"line_number":6000,"context_line":""},{"line_number":6001,"context_line":"        if qos_type_specs.get(\u0027absolute_min_iops\u0027):"},{"line_number":6002,"context_line":"            api_args[\u0027absolute-min-iops\u0027] \u003d qos_type_specs.get("},{"line_number":6003,"context_line":"                \u0027absolute_min_iops\u0027)"},{"line_number":6004,"context_line":"        if qos_type_specs.get(\u0027block_size\u0027):"},{"line_number":6005,"context_line":"            api_args[\u0027block-size\u0027] \u003d qos_type_specs.get(\u0027block_size\u0027)"},{"line_number":6006,"context_line":"        if qos_type_specs.get(\u0027expected_iops_allocation\u0027):"},{"line_number":6007,"context_line":"            api_args[\u0027expected-iops-allocation\u0027] \u003d qos_type_specs.get("},{"line_number":6008,"context_line":"                \u0027expected_iops_allocation\u0027)"},{"line_number":6009,"context_line":"        if qos_type_specs.get(\u0027peak_iops_allocation\u0027):"},{"line_number":6010,"context_line":"            api_args[\u0027peak-iops-allocation\u0027] \u003d qos_type_specs.get("},{"line_number":6011,"context_line":"                \u0027peak_iops_allocation\u0027)"},{"line_number":6012,"context_line":""},{"line_number":6013,"context_line":"        return self.send_request(\u0027qos-adaptive-policy-group-create\u0027,"},{"line_number":6014,"context_line":"                                 api_args, False)"},{"line_number":6015,"context_line":""},{"line_number":6016,"context_line":"    @na_utils.trace"},{"line_number":6017,"context_line":"    def adaptive_qos_policy_group_modify(self, qos_policy_group_name,"}],"source_content_type":"text/x-python","patch_set":19,"id":"8eae74b0_45c80ff7","line":6014,"range":{"start_line":5994,"start_character":8,"end_line":6014,"end_character":49},"in_reply_to":"d6c439d9_feef11af","updated":"2026-03-02 08:12:01.000000000","message":"same as above.","commit_id":"062ae20455a0b119e0baa7850a222b0192cf0d04"},{"author":{"_account_id":29632,"name":"Carlos Eduardo","email":"ces.eduardo98@gmail.com","username":"silvacarlos"},"change_message_id":"25433a235d529575b04cce8378aaa559f89c3698","unresolved":true,"context_lines":[{"line_number":6019,"context_line":"        \"\"\"Modifies an adaptive QoS policy group.\"\"\""},{"line_number":6020,"context_line":"        api_args \u003d {"},{"line_number":6021,"context_line":"            \u0027policy-group\u0027: qos_policy_group_name,"},{"line_number":6022,"context_line":"        }"},{"line_number":6023,"context_line":""},{"line_number":6024,"context_line":"        if qos_type_specs.get(\u0027peak_iops\u0027):"},{"line_number":6025,"context_line":"            api_args[\u0027peak-iops\u0027] \u003d qos_type_specs.get(\u0027peak_iops\u0027)"}],"source_content_type":"text/x-python","patch_set":19,"id":"cde28291_9f34e37a","line":6022,"updated":"2026-02-27 18:35:28.000000000","message":"I\u0027m assuming as it is a modify call, this won\u0027t need the vserver to be present, right?","commit_id":"062ae20455a0b119e0baa7850a222b0192cf0d04"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"8676102379c1c66f549accdcddbc9e7d50fb76f6","unresolved":false,"context_lines":[{"line_number":6019,"context_line":"        \"\"\"Modifies an adaptive QoS policy group.\"\"\""},{"line_number":6020,"context_line":"        api_args \u003d {"},{"line_number":6021,"context_line":"            \u0027policy-group\u0027: qos_policy_group_name,"},{"line_number":6022,"context_line":"        }"},{"line_number":6023,"context_line":""},{"line_number":6024,"context_line":"        if qos_type_specs.get(\u0027peak_iops\u0027):"},{"line_number":6025,"context_line":"            api_args[\u0027peak-iops\u0027] \u003d qos_type_specs.get(\u0027peak_iops\u0027)"}],"source_content_type":"text/x-python","patch_set":19,"id":"28237a51_492ad9c2","line":6022,"in_reply_to":"cde28291_9f34e37a","updated":"2026-02-27 18:46:38.000000000","message":"yes","commit_id":"062ae20455a0b119e0baa7850a222b0192cf0d04"},{"author":{"_account_id":29632,"name":"Carlos Eduardo","email":"ces.eduardo98@gmail.com","username":"silvacarlos"},"change_message_id":"25433a235d529575b04cce8378aaa559f89c3698","unresolved":true,"context_lines":[{"line_number":6161,"context_line":""},{"line_number":6162,"context_line":"        if iops is not None:"},{"line_number":6163,"context_line":"            if isinstance(iops, float) and iops.is_integer():"},{"line_number":6164,"context_line":"                mbps \u003d int(iops)"},{"line_number":6165,"context_line":"            parts.append(f\"{iops}iops\")"},{"line_number":6166,"context_line":"        return \",\".join(parts)"},{"line_number":6167,"context_line":""}],"source_content_type":"text/x-python","patch_set":19,"id":"91b7233e_38964fe0","line":6164,"range":{"start_line":6164,"start_character":16,"end_line":6164,"end_character":32},"updated":"2026-02-27 18:35:28.000000000","message":"iops \u003d int(iops)?","commit_id":"062ae20455a0b119e0baa7850a222b0192cf0d04"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"8676102379c1c66f549accdcddbc9e7d50fb76f6","unresolved":false,"context_lines":[{"line_number":6161,"context_line":""},{"line_number":6162,"context_line":"        if iops is not None:"},{"line_number":6163,"context_line":"            if isinstance(iops, float) and iops.is_integer():"},{"line_number":6164,"context_line":"                mbps \u003d int(iops)"},{"line_number":6165,"context_line":"            parts.append(f\"{iops}iops\")"},{"line_number":6166,"context_line":"        return \",\".join(parts)"},{"line_number":6167,"context_line":""}],"source_content_type":"text/x-python","patch_set":19,"id":"1a4e183d_5f44be9a","line":6164,"range":{"start_line":6164,"start_character":16,"end_line":6164,"end_character":32},"in_reply_to":"91b7233e_38964fe0","updated":"2026-02-27 18:46:38.000000000","message":"Done","commit_id":"062ae20455a0b119e0baa7850a222b0192cf0d04"},{"author":{"_account_id":29632,"name":"Carlos Eduardo","email":"ces.eduardo98@gmail.com","username":"silvacarlos"},"change_message_id":"25433a235d529575b04cce8378aaa559f89c3698","unresolved":true,"context_lines":[{"line_number":6171,"context_line":""},{"line_number":6172,"context_line":"        mbps_match \u003d re.search(r\u0027([\\d.]+)\\s*MB/s\u0027, throughput, re.IGNORECASE)"},{"line_number":6173,"context_line":"        if mbps_match:"},{"line_number":6174,"context_line":"            mbps \u003d int(mbps_match.group(1))"},{"line_number":6175,"context_line":""},{"line_number":6176,"context_line":"        iops_match \u003d re.search(r\u0027(\\d+)\\s*iops\u0027, throughput, re.IGNORECASE)"},{"line_number":6177,"context_line":"        if iops_match:"}],"source_content_type":"text/x-python","patch_set":19,"id":"5f6c74fd_57ec637d","line":6174,"range":{"start_line":6174,"start_character":12,"end_line":6174,"end_character":43},"updated":"2026-02-27 18:35:28.000000000","message":"if iops is a float, this can throw an exception","commit_id":"062ae20455a0b119e0baa7850a222b0192cf0d04"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"8676102379c1c66f549accdcddbc9e7d50fb76f6","unresolved":false,"context_lines":[{"line_number":6171,"context_line":""},{"line_number":6172,"context_line":"        mbps_match \u003d re.search(r\u0027([\\d.]+)\\s*MB/s\u0027, throughput, re.IGNORECASE)"},{"line_number":6173,"context_line":"        if mbps_match:"},{"line_number":6174,"context_line":"            mbps \u003d int(mbps_match.group(1))"},{"line_number":6175,"context_line":""},{"line_number":6176,"context_line":"        iops_match \u003d re.search(r\u0027(\\d+)\\s*iops\u0027, throughput, re.IGNORECASE)"},{"line_number":6177,"context_line":"        if iops_match:"}],"source_content_type":"text/x-python","patch_set":19,"id":"e3ad980c_a3d705a8","line":6174,"range":{"start_line":6174,"start_character":12,"end_line":6174,"end_character":43},"in_reply_to":"5f6c74fd_57ec637d","updated":"2026-02-27 18:46:38.000000000","message":"Earlier all params are int only, we follow same with qos_type_specs","commit_id":"062ae20455a0b119e0baa7850a222b0192cf0d04"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"3a892eb362f5c593b6f967783c4fd3c3c307dab8","unresolved":true,"context_lines":[{"line_number":6161,"context_line":""},{"line_number":6162,"context_line":"        if iops is not None:"},{"line_number":6163,"context_line":"            if isinstance(iops, float) and iops.is_integer():"},{"line_number":6164,"context_line":"                mbps \u003d int(iops)"},{"line_number":6165,"context_line":"            parts.append(f\"{iops}iops\")"},{"line_number":6166,"context_line":"        return \",\".join(parts)"},{"line_number":6167,"context_line":""}],"source_content_type":"text/x-python","patch_set":20,"id":"e68b8671_c806970c","line":6164,"updated":"2026-02-27 18:15:44.000000000","message":"Copy-paste error? ``iops \u003d int(iops)``","commit_id":"2aac4ab9a86c6299fa990ea8462d39c43d6dc4cf"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"b39e1bff856d6c2beb925fde7e5dfde26f0163d3","unresolved":false,"context_lines":[{"line_number":6161,"context_line":""},{"line_number":6162,"context_line":"        if iops is not None:"},{"line_number":6163,"context_line":"            if isinstance(iops, float) and iops.is_integer():"},{"line_number":6164,"context_line":"                mbps \u003d int(iops)"},{"line_number":6165,"context_line":"            parts.append(f\"{iops}iops\")"},{"line_number":6166,"context_line":"        return \",\".join(parts)"},{"line_number":6167,"context_line":""}],"source_content_type":"text/x-python","patch_set":20,"id":"a8d80840_27dc5557","line":6164,"in_reply_to":"e68b8671_c806970c","updated":"2026-02-27 18:39:41.000000000","message":"Done","commit_id":"2aac4ab9a86c6299fa990ea8462d39c43d6dc4cf"}],"manila/share/drivers/netapp/dataontap/client/client_cmode_rest.py":[{"author":{"_account_id":38371,"name":"Kumar Tadepalli","display_name":"Kumar Tadepalli","email":"kumart.lead@gmail.com","username":"kumart","status":"NetApp"},"change_message_id":"81bc8edf965c8d13e1dc1016b1726e93a1e5cc2e","unresolved":true,"context_lines":[{"line_number":2010,"context_line":"                                 body\u003dbody)"},{"line_number":2011,"context_line":""},{"line_number":2012,"context_line":"    @na_utils.trace"},{"line_number":2013,"context_line":"    def adaptive_qos_policy_group_modify(self, qos_policy_group_name,"},{"line_number":2014,"context_line":"                                         qos_type_specs):"},{"line_number":2015,"context_line":"        \"\"\"Modifies an adaptive QoS policy group.\"\"\""},{"line_number":2016,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"0b10dfb6_6286cb71","line":2013,"updated":"2026-02-16 04:51:02.000000000","message":"Where this function is being used?\nI remember from the spec discussion, we need to modify the policy(if qos_type policy values changes) while creation of second share on same share server.\nIs that part of code is pending?","commit_id":"d5e55dd90403d33dad9948d404509fc9533f2163"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"28d6314dd94bfb1f086be2fe1caed9635824f7d8","unresolved":true,"context_lines":[{"line_number":2010,"context_line":"                                 body\u003dbody)"},{"line_number":2011,"context_line":""},{"line_number":2012,"context_line":"    @na_utils.trace"},{"line_number":2013,"context_line":"    def adaptive_qos_policy_group_modify(self, qos_policy_group_name,"},{"line_number":2014,"context_line":"                                         qos_type_specs):"},{"line_number":2015,"context_line":"        \"\"\"Modifies an adaptive QoS policy group.\"\"\""},{"line_number":2016,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"cb2c9d49_351383fe","line":2013,"in_reply_to":"0b10dfb6_6286cb71","updated":"2026-02-17 11:51:28.000000000","message":"This is to keep parity of functions we have in existing code and in future plan to use in ensure_shares. The QoS type are carefully designed similar to share type and need not to expect frequent changes. Thus I skip to modify(apply to all shares except first) in regular share create workflow. However I plan to apply to those modification in ensure_shares. but if you think, that we must check for all shares and find out difference with qos-type specs and modify policy, update here and I will do add it in next iteration.","commit_id":"d5e55dd90403d33dad9948d404509fc9533f2163"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"088df2a54027358f24ec4c06e7a48c13fd31b174","unresolved":false,"context_lines":[{"line_number":2010,"context_line":"                                 body\u003dbody)"},{"line_number":2011,"context_line":""},{"line_number":2012,"context_line":"    @na_utils.trace"},{"line_number":2013,"context_line":"    def adaptive_qos_policy_group_modify(self, qos_policy_group_name,"},{"line_number":2014,"context_line":"                                         qos_type_specs):"},{"line_number":2015,"context_line":"        \"\"\"Modifies an adaptive QoS policy group.\"\"\""},{"line_number":2016,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"d642f3fa_4fdf30b9","line":2013,"in_reply_to":"27116751_fdc6343e","updated":"2026-02-18 11:23:47.000000000","message":"as I said earlier, I will do in next iteration, fixed.","commit_id":"d5e55dd90403d33dad9948d404509fc9533f2163"},{"author":{"_account_id":38371,"name":"Kumar Tadepalli","display_name":"Kumar Tadepalli","email":"kumart.lead@gmail.com","username":"kumart","status":"NetApp"},"change_message_id":"34becdd4b224af0aaf1a2d5ea94df54cc55959ee","unresolved":true,"context_lines":[{"line_number":2010,"context_line":"                                 body\u003dbody)"},{"line_number":2011,"context_line":""},{"line_number":2012,"context_line":"    @na_utils.trace"},{"line_number":2013,"context_line":"    def adaptive_qos_policy_group_modify(self, qos_policy_group_name,"},{"line_number":2014,"context_line":"                                         qos_type_specs):"},{"line_number":2015,"context_line":"        \"\"\"Modifies an adaptive QoS policy group.\"\"\""},{"line_number":2016,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"d1909ed5_47159a11","line":2013,"in_reply_to":"cb2c9d49_351383fe","updated":"2026-02-18 04:38:49.000000000","message":"This query was raised by the community as well as by @anoop.shukla@netapp.com.\nDuring our specification discussion, you had clarified that the specification update would take effect only during the next share creation on the same share server. If you intend to incorporate this update within the ensure_share logic, that is acceptable; however, it is important to note that ensure_share will be triggered only when the service is restarted. Therefore, the ideal approach is to ensure that this behavior is also handled within the share‑creation workflow when the applicable policy exists.\nI am fine with addressing this in a subsequent iteration or a new PR, but it must be completed within the Gazpacho release.\nFor now, please add a TODO comment in code to track this item.","commit_id":"d5e55dd90403d33dad9948d404509fc9533f2163"},{"author":{"_account_id":38371,"name":"Kumar Tadepalli","display_name":"Kumar Tadepalli","email":"kumart.lead@gmail.com","username":"kumart","status":"NetApp"},"change_message_id":"aac7361fd4ee3233aae6c9848a7c7f7d52199b55","unresolved":true,"context_lines":[{"line_number":2010,"context_line":"                                 body\u003dbody)"},{"line_number":2011,"context_line":""},{"line_number":2012,"context_line":"    @na_utils.trace"},{"line_number":2013,"context_line":"    def adaptive_qos_policy_group_modify(self, qos_policy_group_name,"},{"line_number":2014,"context_line":"                                         qos_type_specs):"},{"line_number":2015,"context_line":"        \"\"\"Modifies an adaptive QoS policy group.\"\"\""},{"line_number":2016,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"27116751_fdc6343e","line":2013,"in_reply_to":"d1909ed5_47159a11","updated":"2026-02-18 04:41:38.000000000","message":"@kinpaa@gmail.com I mean to say you can handle in ensure_share but handling during share-creation is must have.","commit_id":"d5e55dd90403d33dad9948d404509fc9533f2163"},{"author":{"_account_id":18816,"name":"Maurice Escher","display_name":"carthaca","email":"maurice.escher@sap.com","username":"mapocace"},"change_message_id":"1f99632c95ed1d0ff8541c53f96ab31fc5a48263","unresolved":true,"context_lines":[{"line_number":2251,"context_line":"            body[\u0027fixed.min_throughput_iops\u0027] \u003d int("},{"line_number":2252,"context_line":"                qos_type_specs.get(\u0027min_throughput_iops\u0027))"},{"line_number":2253,"context_line":"        if qos_type_specs.get(\u0027capacity_shared\u0027):"},{"line_number":2254,"context_line":"            body[\u0027fixed.capacity_shared\u0027] \u003d \u0027true\u0027"},{"line_number":2255,"context_line":"        else:"},{"line_number":2256,"context_line":"            body[\u0027fixed.capacity_shared\u0027] \u003d \u0027false\u0027"},{"line_number":2257,"context_line":""}],"source_content_type":"text/x-python","patch_set":18,"id":"e903ff3f_39431763","line":2254,"range":{"start_line":2254,"start_character":44,"end_line":2254,"end_character":50},"updated":"2026-02-27 14:22:47.000000000","message":"Shouldn\u0027t this be a boolean to be posted to REST API?, same for the else-case","commit_id":"bf9681297af48adeb1175abb3ca15db704213035"},{"author":{"_account_id":18816,"name":"Maurice Escher","display_name":"carthaca","email":"maurice.escher@sap.com","username":"mapocace"},"change_message_id":"2f7334f8f5a206962f6f730f786e3804c47d65e0","unresolved":false,"context_lines":[{"line_number":2251,"context_line":"            body[\u0027fixed.min_throughput_iops\u0027] \u003d int("},{"line_number":2252,"context_line":"                qos_type_specs.get(\u0027min_throughput_iops\u0027))"},{"line_number":2253,"context_line":"        if qos_type_specs.get(\u0027capacity_shared\u0027):"},{"line_number":2254,"context_line":"            body[\u0027fixed.capacity_shared\u0027] \u003d \u0027true\u0027"},{"line_number":2255,"context_line":"        else:"},{"line_number":2256,"context_line":"            body[\u0027fixed.capacity_shared\u0027] \u003d \u0027false\u0027"},{"line_number":2257,"context_line":""}],"source_content_type":"text/x-python","patch_set":18,"id":"3f1f9893_17f162a3","line":2254,"range":{"start_line":2254,"start_character":44,"end_line":2254,"end_character":50},"in_reply_to":"1d06218b_84113181","updated":"2026-02-27 17:50:22.000000000","message":"I still think this should be boolean, e.g. NetApp\u0027s own python client library implements it that way, too https://library.netapp.com/ecmdocs/ECMLP3364865/html/resources/qos_policy.html\n\nBut maybe the Rest API accepts strings, too, for compatibility?\n\nI\u0027m okay with merging now and doing bugfixing later","commit_id":"bf9681297af48adeb1175abb3ca15db704213035"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"6f98055df18f0dd977f281273b3a32bb35c775ca","unresolved":false,"context_lines":[{"line_number":2251,"context_line":"            body[\u0027fixed.min_throughput_iops\u0027] \u003d int("},{"line_number":2252,"context_line":"                qos_type_specs.get(\u0027min_throughput_iops\u0027))"},{"line_number":2253,"context_line":"        if qos_type_specs.get(\u0027capacity_shared\u0027):"},{"line_number":2254,"context_line":"            body[\u0027fixed.capacity_shared\u0027] \u003d \u0027true\u0027"},{"line_number":2255,"context_line":"        else:"},{"line_number":2256,"context_line":"            body[\u0027fixed.capacity_shared\u0027] \u003d \u0027false\u0027"},{"line_number":2257,"context_line":""}],"source_content_type":"text/x-python","patch_set":18,"id":"1d06218b_84113181","line":2254,"range":{"start_line":2254,"start_character":44,"end_line":2254,"end_character":50},"in_reply_to":"e903ff3f_39431763","updated":"2026-02-27 14:49:41.000000000","message":"the boolean params are specified as \"true\" and \"false\" only e.g. encryption.enabled https://docs.netapp.com/us-en/ontap-restapi-9131/patch-storage-volumes-.html#definitions","commit_id":"bf9681297af48adeb1175abb3ca15db704213035"},{"author":{"_account_id":18816,"name":"Maurice Escher","display_name":"carthaca","email":"maurice.escher@sap.com","username":"mapocace"},"change_message_id":"1f99632c95ed1d0ff8541c53f96ab31fc5a48263","unresolved":true,"context_lines":[{"line_number":2252,"context_line":"                qos_type_specs.get(\u0027min_throughput_iops\u0027))"},{"line_number":2253,"context_line":"        if qos_type_specs.get(\u0027capacity_shared\u0027):"},{"line_number":2254,"context_line":"            body[\u0027fixed.capacity_shared\u0027] \u003d \u0027true\u0027"},{"line_number":2255,"context_line":"        else:"},{"line_number":2256,"context_line":"            body[\u0027fixed.capacity_shared\u0027] \u003d \u0027false\u0027"},{"line_number":2257,"context_line":""},{"line_number":2258,"context_line":"        return self.send_request(\u0027/storage/qos/policies\u0027, \u0027post\u0027,"}],"source_content_type":"text/x-python","patch_set":18,"id":"47d1011c_73650a5b","line":2255,"updated":"2026-02-27 14:22:47.000000000","message":"This path is never reached, in lib_base we are normalizing that this spec is a string `in [\u0027true\u0027, \u0027false\u0027]` which is always evaluating to True\n\nsuggesting to test with `if qos_type_specs.get(\u0027capacity_shared\u0027) \u003d\u003d \u0027true\u0027:`","commit_id":"bf9681297af48adeb1175abb3ca15db704213035"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"6f98055df18f0dd977f281273b3a32bb35c775ca","unresolved":false,"context_lines":[{"line_number":2252,"context_line":"                qos_type_specs.get(\u0027min_throughput_iops\u0027))"},{"line_number":2253,"context_line":"        if qos_type_specs.get(\u0027capacity_shared\u0027):"},{"line_number":2254,"context_line":"            body[\u0027fixed.capacity_shared\u0027] \u003d \u0027true\u0027"},{"line_number":2255,"context_line":"        else:"},{"line_number":2256,"context_line":"            body[\u0027fixed.capacity_shared\u0027] \u003d \u0027false\u0027"},{"line_number":2257,"context_line":""},{"line_number":2258,"context_line":"        return self.send_request(\u0027/storage/qos/policies\u0027, \u0027post\u0027,"}],"source_content_type":"text/x-python","patch_set":18,"id":"edd05bd9_aeda43cb","line":2255,"in_reply_to":"47d1011c_73650a5b","updated":"2026-02-27 14:49:41.000000000","message":"Done","commit_id":"bf9681297af48adeb1175abb3ca15db704213035"},{"author":{"_account_id":18816,"name":"Maurice Escher","display_name":"carthaca","email":"maurice.escher@sap.com","username":"mapocace"},"change_message_id":"1f99632c95ed1d0ff8541c53f96ab31fc5a48263","unresolved":true,"context_lines":[{"line_number":2339,"context_line":"            policy_info[\u0027min_throughput_iops\u0027] \u003d min_iops"},{"line_number":2340,"context_line":""},{"line_number":2341,"context_line":"        policy_info[\u0027capacity_shared\u0027] \u003d qos_policy_group_info.get("},{"line_number":2342,"context_line":"            \u0027fixed\u0027, {}).get(\u0027capacity_shared\u0027, \u0027false\u0027)"},{"line_number":2343,"context_line":""},{"line_number":2344,"context_line":"        return policy_info"},{"line_number":2345,"context_line":""}],"source_content_type":"text/x-python","patch_set":18,"id":"d7f5cf48_133eed0c","line":2342,"updated":"2026-02-27 14:22:47.000000000","message":"Isn\u0027t this returning a boolean, so the default should be `False`, not `\u0027false\u0027` I think","commit_id":"bf9681297af48adeb1175abb3ca15db704213035"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"6f98055df18f0dd977f281273b3a32bb35c775ca","unresolved":false,"context_lines":[{"line_number":2339,"context_line":"            policy_info[\u0027min_throughput_iops\u0027] \u003d min_iops"},{"line_number":2340,"context_line":""},{"line_number":2341,"context_line":"        policy_info[\u0027capacity_shared\u0027] \u003d qos_policy_group_info.get("},{"line_number":2342,"context_line":"            \u0027fixed\u0027, {}).get(\u0027capacity_shared\u0027, \u0027false\u0027)"},{"line_number":2343,"context_line":""},{"line_number":2344,"context_line":"        return policy_info"},{"line_number":2345,"context_line":""}],"source_content_type":"text/x-python","patch_set":18,"id":"9d72b69b_139f81eb","line":2342,"in_reply_to":"d7f5cf48_133eed0c","updated":"2026-02-27 14:49:41.000000000","message":"https://docs.netapp.com/us-en/ontap-restapi/get-storage-qos-policies.html#definitions says false. I have updated condition.","commit_id":"bf9681297af48adeb1175abb3ca15db704213035"},{"author":{"_account_id":29632,"name":"Carlos Eduardo","email":"ces.eduardo98@gmail.com","username":"silvacarlos"},"change_message_id":"25433a235d529575b04cce8378aaa559f89c3698","unresolved":true,"context_lines":[{"line_number":1961,"context_line":"            \u0027vserver\u0027: qos_policy_group_info.get(\u0027svm\u0027, {}).get(\u0027name\u0027),"},{"line_number":1962,"context_line":"            \u0027num-workloads\u0027: int(qos_policy_group_info.get(\u0027object_count\u0027)),"},{"line_number":1963,"context_line":"        }"},{"line_number":1964,"context_line":"        policy_info[\u0027absolute_min_iops\u0027] \u003d qos_policy_group_info.get("},{"line_number":1965,"context_line":"            \u0027adaptive\u0027, {}).get(\u0027absolute_min_iops\u0027)"},{"line_number":1966,"context_line":"        policy_info[\u0027block_size\u0027] \u003d qos_policy_group_info.get("},{"line_number":1967,"context_line":"            \u0027adaptive\u0027, {}).get(\u0027block_size\u0027)"},{"line_number":1968,"context_line":"        policy_info[\u0027peak_iops\u0027] \u003d qos_policy_group_info.get("},{"line_number":1969,"context_line":"            \u0027adaptive\u0027, {}).get(\u0027peak_iops\u0027)"},{"line_number":1970,"context_line":"        policy_info[\u0027peak_iops_allocation\u0027] \u003d qos_policy_group_info.get("},{"line_number":1971,"context_line":"            \u0027adaptive\u0027, {}).get(\u0027peak_iops_allocation\u0027)"},{"line_number":1972,"context_line":"        policy_info[\u0027expected_iops\u0027] \u003d qos_policy_group_info.get("},{"line_number":1973,"context_line":"            \u0027adaptive\u0027, {}).get(\u0027expected_iops\u0027)"},{"line_number":1974,"context_line":"        policy_info[\u0027expected_iops_allocation\u0027] \u003d qos_policy_group_info.get("},{"line_number":1975,"context_line":"            \u0027adaptive\u0027, {}).get(\u0027expected_iops_allocation\u0027)"},{"line_number":1976,"context_line":""},{"line_number":1977,"context_line":"        return policy_info"},{"line_number":1978,"context_line":""}],"source_content_type":"text/x-python","patch_set":19,"id":"f9b1f52a_c34fb080","line":1975,"range":{"start_line":1964,"start_character":7,"end_line":1975,"end_character":59},"updated":"2026-02-27 18:35:28.000000000","message":"as in the other file, there\u0027s space for some optimization here, which will also help with readability and maintenance in the future","commit_id":"062ae20455a0b119e0baa7850a222b0192cf0d04"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"33aa5053e890e13466d0f35a3080c1b274b86240","unresolved":false,"context_lines":[{"line_number":1961,"context_line":"            \u0027vserver\u0027: qos_policy_group_info.get(\u0027svm\u0027, {}).get(\u0027name\u0027),"},{"line_number":1962,"context_line":"            \u0027num-workloads\u0027: int(qos_policy_group_info.get(\u0027object_count\u0027)),"},{"line_number":1963,"context_line":"        }"},{"line_number":1964,"context_line":"        policy_info[\u0027absolute_min_iops\u0027] \u003d qos_policy_group_info.get("},{"line_number":1965,"context_line":"            \u0027adaptive\u0027, {}).get(\u0027absolute_min_iops\u0027)"},{"line_number":1966,"context_line":"        policy_info[\u0027block_size\u0027] \u003d qos_policy_group_info.get("},{"line_number":1967,"context_line":"            \u0027adaptive\u0027, {}).get(\u0027block_size\u0027)"},{"line_number":1968,"context_line":"        policy_info[\u0027peak_iops\u0027] \u003d qos_policy_group_info.get("},{"line_number":1969,"context_line":"            \u0027adaptive\u0027, {}).get(\u0027peak_iops\u0027)"},{"line_number":1970,"context_line":"        policy_info[\u0027peak_iops_allocation\u0027] \u003d qos_policy_group_info.get("},{"line_number":1971,"context_line":"            \u0027adaptive\u0027, {}).get(\u0027peak_iops_allocation\u0027)"},{"line_number":1972,"context_line":"        policy_info[\u0027expected_iops\u0027] \u003d qos_policy_group_info.get("},{"line_number":1973,"context_line":"            \u0027adaptive\u0027, {}).get(\u0027expected_iops\u0027)"},{"line_number":1974,"context_line":"        policy_info[\u0027expected_iops_allocation\u0027] \u003d qos_policy_group_info.get("},{"line_number":1975,"context_line":"            \u0027adaptive\u0027, {}).get(\u0027expected_iops_allocation\u0027)"},{"line_number":1976,"context_line":""},{"line_number":1977,"context_line":"        return policy_info"},{"line_number":1978,"context_line":""}],"source_content_type":"text/x-python","patch_set":19,"id":"304f951b_1f8adf06","line":1975,"range":{"start_line":1964,"start_character":7,"end_line":1975,"end_character":59},"in_reply_to":"f9b1f52a_c34fb080","updated":"2026-03-02 08:12:01.000000000","message":"Done","commit_id":"062ae20455a0b119e0baa7850a222b0192cf0d04"},{"author":{"_account_id":29632,"name":"Carlos Eduardo","email":"ces.eduardo98@gmail.com","username":"silvacarlos"},"change_message_id":"25433a235d529575b04cce8378aaa559f89c3698","unresolved":true,"context_lines":[{"line_number":1994,"context_line":"        if qos_type_specs.get(\u0027block_size\u0027):"},{"line_number":1995,"context_line":"            body[\u0027adaptive.block_size\u0027] \u003d qos_type_specs.get("},{"line_number":1996,"context_line":"                \u0027block_size\u0027)"},{"line_number":1997,"context_line":"        if qos_type_specs.get(\u0027expected_iops\u0027):"},{"line_number":1998,"context_line":"            body[\u0027adaptive.expected_iops\u0027] \u003d qos_type_specs.get("},{"line_number":1999,"context_line":"                \u0027expected_iops\u0027)"},{"line_number":2000,"context_line":"        if qos_type_specs.get(\u0027expected_iops_allocation\u0027):"},{"line_number":2001,"context_line":"            body[\u0027adaptive.expected_iops_allocation\u0027] \u003d qos_type_specs.get("},{"line_number":2002,"context_line":"                \u0027expected_iops_allocation\u0027)"}],"source_content_type":"text/x-python","patch_set":19,"id":"ea95df91_63160bfe","line":1999,"range":{"start_line":1997,"start_character":8,"end_line":1999,"end_character":32},"updated":"2026-02-27 18:35:28.000000000","message":"this is already being set on line 1989","commit_id":"062ae20455a0b119e0baa7850a222b0192cf0d04"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"8676102379c1c66f549accdcddbc9e7d50fb76f6","unresolved":false,"context_lines":[{"line_number":1994,"context_line":"        if qos_type_specs.get(\u0027block_size\u0027):"},{"line_number":1995,"context_line":"            body[\u0027adaptive.block_size\u0027] \u003d qos_type_specs.get("},{"line_number":1996,"context_line":"                \u0027block_size\u0027)"},{"line_number":1997,"context_line":"        if qos_type_specs.get(\u0027expected_iops\u0027):"},{"line_number":1998,"context_line":"            body[\u0027adaptive.expected_iops\u0027] \u003d qos_type_specs.get("},{"line_number":1999,"context_line":"                \u0027expected_iops\u0027)"},{"line_number":2000,"context_line":"        if qos_type_specs.get(\u0027expected_iops_allocation\u0027):"},{"line_number":2001,"context_line":"            body[\u0027adaptive.expected_iops_allocation\u0027] \u003d qos_type_specs.get("},{"line_number":2002,"context_line":"                \u0027expected_iops_allocation\u0027)"}],"source_content_type":"text/x-python","patch_set":19,"id":"e8114498_11994804","line":1999,"range":{"start_line":1997,"start_character":8,"end_line":1999,"end_character":32},"in_reply_to":"ea95df91_63160bfe","updated":"2026-02-27 18:46:38.000000000","message":"Done","commit_id":"062ae20455a0b119e0baa7850a222b0192cf0d04"},{"author":{"_account_id":29632,"name":"Carlos Eduardo","email":"ces.eduardo98@gmail.com","username":"silvacarlos"},"change_message_id":"25433a235d529575b04cce8378aaa559f89c3698","unresolved":true,"context_lines":[{"line_number":2000,"context_line":"        if qos_type_specs.get(\u0027expected_iops_allocation\u0027):"},{"line_number":2001,"context_line":"            body[\u0027adaptive.expected_iops_allocation\u0027] \u003d qos_type_specs.get("},{"line_number":2002,"context_line":"                \u0027expected_iops_allocation\u0027)"},{"line_number":2003,"context_line":"        if qos_type_specs.get(\u0027peak_iops\u0027):"},{"line_number":2004,"context_line":"            body[\u0027adaptive.peak_iops\u0027] \u003d qos_type_specs.get("},{"line_number":2005,"context_line":"                \u0027peak_iops\u0027)"},{"line_number":2006,"context_line":"        if qos_type_specs.get(\u0027peak_iops_allocation\u0027):"},{"line_number":2007,"context_line":"            body[\u0027adaptive.peak_iops_allocation\u0027] \u003d qos_type_specs.get("},{"line_number":2008,"context_line":"                \u0027peak_iops_allocation\u0027)"}],"source_content_type":"text/x-python","patch_set":19,"id":"ab86cbd5_a5d2dc3f","line":2005,"range":{"start_line":2003,"start_character":8,"end_line":2005,"end_character":28},"updated":"2026-02-27 18:35:28.000000000","message":"this is already being set on line 1988","commit_id":"062ae20455a0b119e0baa7850a222b0192cf0d04"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"8676102379c1c66f549accdcddbc9e7d50fb76f6","unresolved":false,"context_lines":[{"line_number":2000,"context_line":"        if qos_type_specs.get(\u0027expected_iops_allocation\u0027):"},{"line_number":2001,"context_line":"            body[\u0027adaptive.expected_iops_allocation\u0027] \u003d qos_type_specs.get("},{"line_number":2002,"context_line":"                \u0027expected_iops_allocation\u0027)"},{"line_number":2003,"context_line":"        if qos_type_specs.get(\u0027peak_iops\u0027):"},{"line_number":2004,"context_line":"            body[\u0027adaptive.peak_iops\u0027] \u003d qos_type_specs.get("},{"line_number":2005,"context_line":"                \u0027peak_iops\u0027)"},{"line_number":2006,"context_line":"        if qos_type_specs.get(\u0027peak_iops_allocation\u0027):"},{"line_number":2007,"context_line":"            body[\u0027adaptive.peak_iops_allocation\u0027] \u003d qos_type_specs.get("},{"line_number":2008,"context_line":"                \u0027peak_iops_allocation\u0027)"}],"source_content_type":"text/x-python","patch_set":19,"id":"721d69f9_732ceb6a","line":2005,"range":{"start_line":2003,"start_character":8,"end_line":2005,"end_character":28},"in_reply_to":"ab86cbd5_a5d2dc3f","updated":"2026-02-27 18:46:38.000000000","message":"Done","commit_id":"062ae20455a0b119e0baa7850a222b0192cf0d04"},{"author":{"_account_id":29632,"name":"Carlos Eduardo","email":"ces.eduardo98@gmail.com","username":"silvacarlos"},"change_message_id":"25433a235d529575b04cce8378aaa559f89c3698","unresolved":true,"context_lines":[{"line_number":2030,"context_line":"        if qos_type_specs.get(\u0027block_size\u0027):"},{"line_number":2031,"context_line":"            body[\u0027adaptive.block_size\u0027] \u003d qos_type_specs.get("},{"line_number":2032,"context_line":"                \u0027block_size\u0027)"},{"line_number":2033,"context_line":"        if qos_type_specs.get(\u0027expected_iops\u0027):"},{"line_number":2034,"context_line":"            body[\u0027adaptive.expected_iops\u0027] \u003d qos_type_specs.get("},{"line_number":2035,"context_line":"                \u0027expected_iops\u0027)"},{"line_number":2036,"context_line":"        if qos_type_specs.get(\u0027expected_iops_allocation\u0027):"},{"line_number":2037,"context_line":"            body[\u0027adaptive.expected_iops_allocation\u0027] \u003d qos_type_specs.get("},{"line_number":2038,"context_line":"                \u0027expected_iops_allocation\u0027)"}],"source_content_type":"text/x-python","patch_set":19,"id":"fe25c576_89a585a5","line":2035,"range":{"start_line":2033,"start_character":0,"end_line":2035,"end_character":32},"updated":"2026-02-27 18:35:28.000000000","message":"duplicate, same already being done above","commit_id":"062ae20455a0b119e0baa7850a222b0192cf0d04"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"8676102379c1c66f549accdcddbc9e7d50fb76f6","unresolved":false,"context_lines":[{"line_number":2030,"context_line":"        if qos_type_specs.get(\u0027block_size\u0027):"},{"line_number":2031,"context_line":"            body[\u0027adaptive.block_size\u0027] \u003d qos_type_specs.get("},{"line_number":2032,"context_line":"                \u0027block_size\u0027)"},{"line_number":2033,"context_line":"        if qos_type_specs.get(\u0027expected_iops\u0027):"},{"line_number":2034,"context_line":"            body[\u0027adaptive.expected_iops\u0027] \u003d qos_type_specs.get("},{"line_number":2035,"context_line":"                \u0027expected_iops\u0027)"},{"line_number":2036,"context_line":"        if qos_type_specs.get(\u0027expected_iops_allocation\u0027):"},{"line_number":2037,"context_line":"            body[\u0027adaptive.expected_iops_allocation\u0027] \u003d qos_type_specs.get("},{"line_number":2038,"context_line":"                \u0027expected_iops_allocation\u0027)"}],"source_content_type":"text/x-python","patch_set":19,"id":"c27e32bf_2407d17b","line":2035,"range":{"start_line":2033,"start_character":0,"end_line":2035,"end_character":32},"in_reply_to":"fe25c576_89a585a5","updated":"2026-02-27 18:46:38.000000000","message":"Done","commit_id":"062ae20455a0b119e0baa7850a222b0192cf0d04"},{"author":{"_account_id":29632,"name":"Carlos Eduardo","email":"ces.eduardo98@gmail.com","username":"silvacarlos"},"change_message_id":"25433a235d529575b04cce8378aaa559f89c3698","unresolved":true,"context_lines":[{"line_number":2036,"context_line":"        if qos_type_specs.get(\u0027expected_iops_allocation\u0027):"},{"line_number":2037,"context_line":"            body[\u0027adaptive.expected_iops_allocation\u0027] \u003d qos_type_specs.get("},{"line_number":2038,"context_line":"                \u0027expected_iops_allocation\u0027)"},{"line_number":2039,"context_line":"        if qos_type_specs.get(\u0027peak_iops\u0027):"},{"line_number":2040,"context_line":"            body[\u0027adaptive.peak_iops\u0027] \u003d qos_type_specs.get("},{"line_number":2041,"context_line":"                \u0027peak_iops\u0027)"},{"line_number":2042,"context_line":"        if qos_type_specs.get(\u0027peak_iops_allocation\u0027):"},{"line_number":2043,"context_line":"            body[\u0027adaptive.peak_iops_allocation\u0027] \u003d qos_type_specs.get("},{"line_number":2044,"context_line":"                \u0027peak_iops_allocation\u0027)"}],"source_content_type":"text/x-python","patch_set":19,"id":"c7533806_56e94dce","line":2041,"range":{"start_line":2039,"start_character":0,"end_line":2041,"end_character":28},"updated":"2026-02-27 18:35:28.000000000","message":"duplicate, same already being done line 2022","commit_id":"062ae20455a0b119e0baa7850a222b0192cf0d04"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"8676102379c1c66f549accdcddbc9e7d50fb76f6","unresolved":false,"context_lines":[{"line_number":2036,"context_line":"        if qos_type_specs.get(\u0027expected_iops_allocation\u0027):"},{"line_number":2037,"context_line":"            body[\u0027adaptive.expected_iops_allocation\u0027] \u003d qos_type_specs.get("},{"line_number":2038,"context_line":"                \u0027expected_iops_allocation\u0027)"},{"line_number":2039,"context_line":"        if qos_type_specs.get(\u0027peak_iops\u0027):"},{"line_number":2040,"context_line":"            body[\u0027adaptive.peak_iops\u0027] \u003d qos_type_specs.get("},{"line_number":2041,"context_line":"                \u0027peak_iops\u0027)"},{"line_number":2042,"context_line":"        if qos_type_specs.get(\u0027peak_iops_allocation\u0027):"},{"line_number":2043,"context_line":"            body[\u0027adaptive.peak_iops_allocation\u0027] \u003d qos_type_specs.get("},{"line_number":2044,"context_line":"                \u0027peak_iops_allocation\u0027)"}],"source_content_type":"text/x-python","patch_set":19,"id":"6e63a483_d025ee2c","line":2041,"range":{"start_line":2039,"start_character":0,"end_line":2041,"end_character":28},"in_reply_to":"c7533806_56e94dce","updated":"2026-02-27 18:46:38.000000000","message":"Done","commit_id":"062ae20455a0b119e0baa7850a222b0192cf0d04"},{"author":{"_account_id":29632,"name":"Carlos Eduardo","email":"ces.eduardo98@gmail.com","username":"silvacarlos"},"change_message_id":"25433a235d529575b04cce8378aaa559f89c3698","unresolved":true,"context_lines":[{"line_number":2229,"context_line":"        self.send_request(f\u0027/storage/qos/policies/{uuid}\u0027, \u0027patch\u0027,"},{"line_number":2230,"context_line":"                          body\u003dbody)"},{"line_number":2231,"context_line":""},{"line_number":2232,"context_line":"    @na_utils.trace"},{"line_number":2233,"context_line":"    def qos_policy_group_create(self, qos_policy_group_name, vserver,"},{"line_number":2234,"context_line":"                                qos_type_specs):"},{"line_number":2235,"context_line":"        \"\"\"Creates a QoS policy group.\"\"\""}],"source_content_type":"text/x-python","patch_set":19,"id":"5fe9e145_a1badd16","line":2232,"updated":"2026-02-27 18:35:28.000000000","message":"won\u0027t you need a regex-like style for this file as well?","commit_id":"062ae20455a0b119e0baa7850a222b0192cf0d04"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"8676102379c1c66f549accdcddbc9e7d50fb76f6","unresolved":false,"context_lines":[{"line_number":2229,"context_line":"        self.send_request(f\u0027/storage/qos/policies/{uuid}\u0027, \u0027patch\u0027,"},{"line_number":2230,"context_line":"                          body\u003dbody)"},{"line_number":2231,"context_line":""},{"line_number":2232,"context_line":"    @na_utils.trace"},{"line_number":2233,"context_line":"    def qos_policy_group_create(self, qos_policy_group_name, vserver,"},{"line_number":2234,"context_line":"                                qos_type_specs):"},{"line_number":2235,"context_line":"        \"\"\"Creates a QoS policy group.\"\"\""}],"source_content_type":"text/x-python","patch_set":19,"id":"8f8ddaf7_b2a65f97","line":2232,"in_reply_to":"5fe9e145_a1badd16","updated":"2026-02-27 18:46:38.000000000","message":"No, REST accepts direct params","commit_id":"062ae20455a0b119e0baa7850a222b0192cf0d04"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"3a892eb362f5c593b6f967783c4fd3c3c307dab8","unresolved":true,"context_lines":[{"line_number":1985,"context_line":"            \u0027name\u0027: qos_policy_group_name,"},{"line_number":1986,"context_line":"            \u0027svm.name\u0027: vserver,"},{"line_number":1987,"context_line":"        }"},{"line_number":1988,"context_line":"        body[\u0027adaptive.peak_iops\u0027] \u003d qos_type_specs.get(\u0027peak_iops\u0027)"},{"line_number":1989,"context_line":"        body[\u0027adaptive.expected_iops\u0027] \u003d qos_type_specs.get(\u0027expected_iops\u0027)"},{"line_number":1990,"context_line":""},{"line_number":1991,"context_line":"        if qos_type_specs.get(\u0027absolute_min_iops\u0027):"}],"source_content_type":"text/x-python","patch_set":20,"id":"92df356e_bf05f859","line":1988,"updated":"2026-02-27 18:15:44.000000000","message":"Lines 1997-2006 do this conditionally... Same kinda duplication exists in ``adaptive_qos_policy_group_modify`` at lines 2023-2043","commit_id":"2aac4ab9a86c6299fa990ea8462d39c43d6dc4cf"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"b39e1bff856d6c2beb925fde7e5dfde26f0163d3","unresolved":false,"context_lines":[{"line_number":1985,"context_line":"            \u0027name\u0027: qos_policy_group_name,"},{"line_number":1986,"context_line":"            \u0027svm.name\u0027: vserver,"},{"line_number":1987,"context_line":"        }"},{"line_number":1988,"context_line":"        body[\u0027adaptive.peak_iops\u0027] \u003d qos_type_specs.get(\u0027peak_iops\u0027)"},{"line_number":1989,"context_line":"        body[\u0027adaptive.expected_iops\u0027] \u003d qos_type_specs.get(\u0027expected_iops\u0027)"},{"line_number":1990,"context_line":""},{"line_number":1991,"context_line":"        if qos_type_specs.get(\u0027absolute_min_iops\u0027):"}],"source_content_type":"text/x-python","patch_set":20,"id":"214cf95f_52e2dace","line":1988,"in_reply_to":"92df356e_bf05f859","updated":"2026-02-27 18:39:41.000000000","message":"these are mandatory params and hence for create no if condition added while in modify added.","commit_id":"2aac4ab9a86c6299fa990ea8462d39c43d6dc4cf"}],"manila/share/drivers/netapp/dataontap/cluster_mode/lib_base.py":[{"author":{"_account_id":38371,"name":"Kumar Tadepalli","display_name":"Kumar Tadepalli","email":"kumart.lead@gmail.com","username":"kumart","status":"NetApp"},"change_message_id":"0733bb429d2a245b2c25fdc19ddbf16e1cd0293c","unresolved":true,"context_lines":[{"line_number":1774,"context_line":"        if qos_type_specs.get(\u0027policy_type\u0027) \u003d\u003d \u0027fixed\u0027:"},{"line_number":1775,"context_line":"            max_throughput \u003d self._get_qos_type_max_throughput(qos_type_specs)"},{"line_number":1776,"context_line":"            min_throughput \u003d self._get_qos_type_min_throughput(qos_type_specs)"},{"line_number":1777,"context_line":"            qos_policy_group_name \u003d ("},{"line_number":1778,"context_line":"                \"FIXED_QOS_\" + vserver + \"_\" + qos_type_name)"},{"line_number":1779,"context_line":"            if not client.qos_policy_group_exists("},{"line_number":1780,"context_line":"                    qos_policy_group_name):"}],"source_content_type":"text/x-python","patch_set":6,"id":"ee51a4a2_fb552abd","line":1777,"updated":"2026-02-10 07:28:56.000000000","message":"As we discussed, please truncate the name to 127 chars\n\nfull_string \u003d f\"FIXED_QOS_{vserver_name}_{policy_name}\"\nqosname \u003d full_string[:127]","commit_id":"4a0de745d3b8fc6d4240f36f98c9bdc4c70e0568"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"00a59e80469b858a6ec174e3e76cb709185d7f0b","unresolved":false,"context_lines":[{"line_number":1774,"context_line":"        if qos_type_specs.get(\u0027policy_type\u0027) \u003d\u003d \u0027fixed\u0027:"},{"line_number":1775,"context_line":"            max_throughput \u003d self._get_qos_type_max_throughput(qos_type_specs)"},{"line_number":1776,"context_line":"            min_throughput \u003d self._get_qos_type_min_throughput(qos_type_specs)"},{"line_number":1777,"context_line":"            qos_policy_group_name \u003d ("},{"line_number":1778,"context_line":"                \"FIXED_QOS_\" + vserver + \"_\" + qos_type_name)"},{"line_number":1779,"context_line":"            if not client.qos_policy_group_exists("},{"line_number":1780,"context_line":"                    qos_policy_group_name):"}],"source_content_type":"text/x-python","patch_set":6,"id":"eba203ed_254a718b","line":1777,"in_reply_to":"ee51a4a2_fb552abd","updated":"2026-02-13 11:03:32.000000000","message":"Done","commit_id":"4a0de745d3b8fc6d4240f36f98c9bdc4c70e0568"},{"author":{"_account_id":38371,"name":"Kumar Tadepalli","display_name":"Kumar Tadepalli","email":"kumart.lead@gmail.com","username":"kumart","status":"NetApp"},"change_message_id":"0733bb429d2a245b2c25fdc19ddbf16e1cd0293c","unresolved":true,"context_lines":[{"line_number":1783,"context_line":"                                               min_throughput\u003dmin_throughput)"},{"line_number":1784,"context_line":"            return qos_policy_group_name"},{"line_number":1785,"context_line":"        elif qos_type_specs.get(\u0027policy_type\u0027) \u003d\u003d \u0027adaptive\u0027:"},{"line_number":1786,"context_line":"            adaptive_qos_policy_group_name \u003d ("},{"line_number":1787,"context_line":"                \"ADAPTIVE_QOS_\" + vserver + \"_\" + qos_type_name)"},{"line_number":1788,"context_line":"            if not client.adaptive_qos_policy_group_exists("},{"line_number":1789,"context_line":"                    adaptive_qos_policy_group_name):"}],"source_content_type":"text/x-python","patch_set":6,"id":"e39056ec_f838bb01","line":1786,"updated":"2026-02-10 07:28:56.000000000","message":"As we discussed, please truncate the name to 127 chars\n\nfull_string \u003d f\"FIXED_QOS_{vserver_name}_{policy_name}\"\nqosname \u003d full_string[:127]","commit_id":"4a0de745d3b8fc6d4240f36f98c9bdc4c70e0568"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"00a59e80469b858a6ec174e3e76cb709185d7f0b","unresolved":false,"context_lines":[{"line_number":1783,"context_line":"                                               min_throughput\u003dmin_throughput)"},{"line_number":1784,"context_line":"            return qos_policy_group_name"},{"line_number":1785,"context_line":"        elif qos_type_specs.get(\u0027policy_type\u0027) \u003d\u003d \u0027adaptive\u0027:"},{"line_number":1786,"context_line":"            adaptive_qos_policy_group_name \u003d ("},{"line_number":1787,"context_line":"                \"ADAPTIVE_QOS_\" + vserver + \"_\" + qos_type_name)"},{"line_number":1788,"context_line":"            if not client.adaptive_qos_policy_group_exists("},{"line_number":1789,"context_line":"                    adaptive_qos_policy_group_name):"}],"source_content_type":"text/x-python","patch_set":6,"id":"e62151e8_5402bf3d","line":1786,"in_reply_to":"e39056ec_f838bb01","updated":"2026-02-13 11:03:32.000000000","message":"Done","commit_id":"4a0de745d3b8fc6d4240f36f98c9bdc4c70e0568"},{"author":{"_account_id":38371,"name":"Kumar Tadepalli","display_name":"Kumar Tadepalli","email":"kumart.lead@gmail.com","username":"kumart","status":"NetApp"},"change_message_id":"81bc8edf965c8d13e1dc1016b1726e93a1e5cc2e","unresolved":true,"context_lines":[{"line_number":1645,"context_line":"        if policy_type \u003d\u003d \u0027fixed\u0027:"},{"line_number":1646,"context_line":"            FIXED_QOS_MAX_SPECS \u003d ["},{"line_number":1647,"context_line":"                \u0027max_throughput_iops\u0027, \u0027max_throughput_mbps\u0027]"},{"line_number":1648,"context_line":"            FIXED_QOS_MIX_SPECS \u003d ["},{"line_number":1649,"context_line":"                \u0027min_throughput_iops\u0027, \u0027min_throughput_mbps\u0027]"},{"line_number":1650,"context_line":""},{"line_number":1651,"context_line":"            valid_spec_keys \u003d FIXED_QOS_MAX_SPECS.copy()"}],"source_content_type":"text/x-python","patch_set":7,"id":"856a94d4_ae6f0d44","line":1648,"updated":"2026-02-16 04:51:02.000000000","message":"FIXED_QOS_MIN_SPECS ??","commit_id":"d5e55dd90403d33dad9948d404509fc9533f2163"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"28d6314dd94bfb1f086be2fe1caed9635824f7d8","unresolved":false,"context_lines":[{"line_number":1645,"context_line":"        if policy_type \u003d\u003d \u0027fixed\u0027:"},{"line_number":1646,"context_line":"            FIXED_QOS_MAX_SPECS \u003d ["},{"line_number":1647,"context_line":"                \u0027max_throughput_iops\u0027, \u0027max_throughput_mbps\u0027]"},{"line_number":1648,"context_line":"            FIXED_QOS_MIX_SPECS \u003d ["},{"line_number":1649,"context_line":"                \u0027min_throughput_iops\u0027, \u0027min_throughput_mbps\u0027]"},{"line_number":1650,"context_line":""},{"line_number":1651,"context_line":"            valid_spec_keys \u003d FIXED_QOS_MAX_SPECS.copy()"}],"source_content_type":"text/x-python","patch_set":7,"id":"720bcfb4_5cddf4a1","line":1648,"in_reply_to":"856a94d4_ae6f0d44","updated":"2026-02-17 11:51:28.000000000","message":"Done","commit_id":"d5e55dd90403d33dad9948d404509fc9533f2163"},{"author":{"_account_id":38059,"name":"Anoop Kumar Shukla","display_name":"Anoop Shukla","email":"anoop.shukla@netapp.com","username":"anoop2","status":"NetApp"},"change_message_id":"2038890d709a29afb83879d0b4eb9e65cc6a7d52","unresolved":true,"context_lines":[{"line_number":1649,"context_line":"                \u0027min_throughput_iops\u0027, \u0027min_throughput_mbps\u0027]"},{"line_number":1650,"context_line":""},{"line_number":1651,"context_line":"            valid_spec_keys \u003d FIXED_QOS_MAX_SPECS.copy()"},{"line_number":1652,"context_line":"            valid_spec_keys.extend(FIXED_QOS_MIX_SPECS)"},{"line_number":1653,"context_line":""},{"line_number":1654,"context_line":"            for key, value in specs.items():"},{"line_number":1655,"context_line":"                if key.lower() not in valid_spec_keys:"}],"source_content_type":"text/x-python","patch_set":7,"id":"9420a2ac_ee864e3c","line":1652,"updated":"2026-02-16 13:58:51.000000000","message":"What does MIX_SPECS mean?","commit_id":"d5e55dd90403d33dad9948d404509fc9533f2163"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"28d6314dd94bfb1f086be2fe1caed9635824f7d8","unresolved":false,"context_lines":[{"line_number":1649,"context_line":"                \u0027min_throughput_iops\u0027, \u0027min_throughput_mbps\u0027]"},{"line_number":1650,"context_line":""},{"line_number":1651,"context_line":"            valid_spec_keys \u003d FIXED_QOS_MAX_SPECS.copy()"},{"line_number":1652,"context_line":"            valid_spec_keys.extend(FIXED_QOS_MIX_SPECS)"},{"line_number":1653,"context_line":""},{"line_number":1654,"context_line":"            for key, value in specs.items():"},{"line_number":1655,"context_line":"                if key.lower() not in valid_spec_keys:"}],"source_content_type":"text/x-python","patch_set":7,"id":"576b59bf_f93e2da0","line":1652,"in_reply_to":"9420a2ac_ee864e3c","updated":"2026-02-17 11:51:28.000000000","message":"renamed.","commit_id":"d5e55dd90403d33dad9948d404509fc9533f2163"},{"author":{"_account_id":38371,"name":"Kumar Tadepalli","display_name":"Kumar Tadepalli","email":"kumart.lead@gmail.com","username":"kumart","status":"NetApp"},"change_message_id":"e2ca1f956943856ba05cd5ab21b53e26f9a0b915","unresolved":true,"context_lines":[{"line_number":1650,"context_line":""},{"line_number":1651,"context_line":"            valid_spec_keys \u003d FIXED_QOS_MAX_SPECS.copy()"},{"line_number":1652,"context_line":"            valid_spec_keys.extend(FIXED_QOS_MIX_SPECS)"},{"line_number":1653,"context_line":""},{"line_number":1654,"context_line":"            for key, value in specs.items():"},{"line_number":1655,"context_line":"                if key.lower() not in valid_spec_keys:"},{"line_number":1656,"context_line":"                    msg \u003d _(\"The qos-type spec policy_type is set to \u0027fixed\u0027, \""}],"source_content_type":"text/x-python","patch_set":7,"id":"d4bd1f50_e0c3c2c6","line":1653,"updated":"2026-02-16 05:03:47.000000000","message":"Please add support to specify the capacity_shared as well.\nCustomer is looking for this option\nhttps://bugs.launchpad.net/manila/+bug/2111905","commit_id":"d5e55dd90403d33dad9948d404509fc9533f2163"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"28d6314dd94bfb1f086be2fe1caed9635824f7d8","unresolved":false,"context_lines":[{"line_number":1650,"context_line":""},{"line_number":1651,"context_line":"            valid_spec_keys \u003d FIXED_QOS_MAX_SPECS.copy()"},{"line_number":1652,"context_line":"            valid_spec_keys.extend(FIXED_QOS_MIX_SPECS)"},{"line_number":1653,"context_line":""},{"line_number":1654,"context_line":"            for key, value in specs.items():"},{"line_number":1655,"context_line":"                if key.lower() not in valid_spec_keys:"},{"line_number":1656,"context_line":"                    msg \u003d _(\"The qos-type spec policy_type is set to \u0027fixed\u0027, \""}],"source_content_type":"text/x-python","patch_set":7,"id":"7279b785_530bac3d","line":1653,"in_reply_to":"d4bd1f50_e0c3c2c6","updated":"2026-02-17 11:51:28.000000000","message":"Done","commit_id":"d5e55dd90403d33dad9948d404509fc9533f2163"},{"author":{"_account_id":38371,"name":"Kumar Tadepalli","display_name":"Kumar Tadepalli","email":"kumart.lead@gmail.com","username":"kumart","status":"NetApp"},"change_message_id":"81bc8edf965c8d13e1dc1016b1726e93a1e5cc2e","unresolved":true,"context_lines":[{"line_number":1674,"context_line":"                        \"qos type. Cannot provision a QoS policy. \")"},{"line_number":1675,"context_line":"                raise exception.NetAppException(msg)"},{"line_number":1676,"context_line":""},{"line_number":1677,"context_line":"            if len(fixed_max_qos_specs) \u003e 1:"},{"line_number":1678,"context_line":"                msg \u003d _(\u0027Only one NetApp max-throughput QoS spec can be set \u0027"},{"line_number":1679,"context_line":"                        \u0027at a time. Specified QoS limits: %s\u0027)"},{"line_number":1680,"context_line":"                raise exception.NetAppException(msg % fixed_max_qos_specs)"}],"source_content_type":"text/x-python","patch_set":7,"id":"b5ba649a_ca9e2996","line":1677,"updated":"2026-02-16 04:51:02.000000000","message":"ONTAP supports both max limits to be set, driver should also supports it.\nThere is an ask from customer as well. (https://bugs.launchpad.net/manila/+bug/2111903)","commit_id":"d5e55dd90403d33dad9948d404509fc9533f2163"},{"author":{"_account_id":38371,"name":"Kumar Tadepalli","display_name":"Kumar Tadepalli","email":"kumart.lead@gmail.com","username":"kumart","status":"NetApp"},"change_message_id":"34becdd4b224af0aaf1a2d5ea94df54cc55959ee","unresolved":true,"context_lines":[{"line_number":1674,"context_line":"                        \"qos type. Cannot provision a QoS policy. \")"},{"line_number":1675,"context_line":"                raise exception.NetAppException(msg)"},{"line_number":1676,"context_line":""},{"line_number":1677,"context_line":"            if len(fixed_max_qos_specs) \u003e 1:"},{"line_number":1678,"context_line":"                msg \u003d _(\u0027Only one NetApp max-throughput QoS spec can be set \u0027"},{"line_number":1679,"context_line":"                        \u0027at a time. Specified QoS limits: %s\u0027)"},{"line_number":1680,"context_line":"                raise exception.NetAppException(msg % fixed_max_qos_specs)"}],"source_content_type":"text/x-python","patch_set":7,"id":"f7e86d01_c7a52262","line":1677,"in_reply_to":"45ae75dd_81421758","updated":"2026-02-18 04:38:49.000000000","message":"I am fine with addressing this in a subsequent iteration or a new PR, but it must be completed within the Gazpacho release. \nI will move the defect on to your name. \n\nFor now, please add a TODO comment in code to track this item.","commit_id":"d5e55dd90403d33dad9948d404509fc9533f2163"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"28d6314dd94bfb1f086be2fe1caed9635824f7d8","unresolved":true,"context_lines":[{"line_number":1674,"context_line":"                        \"qos type. Cannot provision a QoS policy. \")"},{"line_number":1675,"context_line":"                raise exception.NetAppException(msg)"},{"line_number":1676,"context_line":""},{"line_number":1677,"context_line":"            if len(fixed_max_qos_specs) \u003e 1:"},{"line_number":1678,"context_line":"                msg \u003d _(\u0027Only one NetApp max-throughput QoS spec can be set \u0027"},{"line_number":1679,"context_line":"                        \u0027at a time. Specified QoS limits: %s\u0027)"},{"line_number":1680,"context_line":"                raise exception.NetAppException(msg % fixed_max_qos_specs)"}],"source_content_type":"text/x-python","patch_set":7,"id":"45ae75dd_81421758","line":1677,"in_reply_to":"b5ba649a_ca9e2996","updated":"2026-02-17 11:51:28.000000000","message":"I am planning to keep this as it is since code is re-used from share-type qos specs. In follow-up PR, then all max and min would be supported. \n\nThe REST API accept 4 params, while ZAPI accept only 2 and then we need to add parsing of ZAPI get request. All this things I will handle in another PR. wdyt ?","commit_id":"d5e55dd90403d33dad9948d404509fc9533f2163"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"088df2a54027358f24ec4c06e7a48c13fd31b174","unresolved":false,"context_lines":[{"line_number":1674,"context_line":"                        \"qos type. Cannot provision a QoS policy. \")"},{"line_number":1675,"context_line":"                raise exception.NetAppException(msg)"},{"line_number":1676,"context_line":""},{"line_number":1677,"context_line":"            if len(fixed_max_qos_specs) \u003e 1:"},{"line_number":1678,"context_line":"                msg \u003d _(\u0027Only one NetApp max-throughput QoS spec can be set \u0027"},{"line_number":1679,"context_line":"                        \u0027at a time. Specified QoS limits: %s\u0027)"},{"line_number":1680,"context_line":"                raise exception.NetAppException(msg % fixed_max_qos_specs)"}],"source_content_type":"text/x-python","patch_set":7,"id":"3cce9fea_d2538091","line":1677,"in_reply_to":"f7e86d01_c7a52262","updated":"2026-02-18 11:23:47.000000000","message":"Done","commit_id":"d5e55dd90403d33dad9948d404509fc9533f2163"},{"author":{"_account_id":38371,"name":"Kumar Tadepalli","display_name":"Kumar Tadepalli","email":"kumart.lead@gmail.com","username":"kumart","status":"NetApp"},"change_message_id":"81bc8edf965c8d13e1dc1016b1726e93a1e5cc2e","unresolved":true,"context_lines":[{"line_number":1679,"context_line":"                        \u0027at a time. Specified QoS limits: %s\u0027)"},{"line_number":1680,"context_line":"                raise exception.NetAppException(msg % fixed_max_qos_specs)"},{"line_number":1681,"context_line":""},{"line_number":1682,"context_line":"            if len(fixed_min_qos_specs) \u003e 1:"},{"line_number":1683,"context_line":"                msg \u003d _(\u0027Only one NetApp min-throughput QoS spec can be set \u0027"},{"line_number":1684,"context_line":"                        \u0027at a time. Specified QoS limits: %s\u0027)"},{"line_number":1685,"context_line":"                raise exception.NetAppException(msg % fixed_min_qos_specs)"}],"source_content_type":"text/x-python","patch_set":7,"id":"1e0d55bc_e40754eb","line":1682,"updated":"2026-02-16 04:51:02.000000000","message":"ONTAP supports both max limits to be set, driver should also supports it.\nThere is an ask from customer as well. (https://bugs.launchpad.net/manila/+bug/2111903)","commit_id":"d5e55dd90403d33dad9948d404509fc9533f2163"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"28d6314dd94bfb1f086be2fe1caed9635824f7d8","unresolved":false,"context_lines":[{"line_number":1679,"context_line":"                        \u0027at a time. Specified QoS limits: %s\u0027)"},{"line_number":1680,"context_line":"                raise exception.NetAppException(msg % fixed_max_qos_specs)"},{"line_number":1681,"context_line":""},{"line_number":1682,"context_line":"            if len(fixed_min_qos_specs) \u003e 1:"},{"line_number":1683,"context_line":"                msg \u003d _(\u0027Only one NetApp min-throughput QoS spec can be set \u0027"},{"line_number":1684,"context_line":"                        \u0027at a time. Specified QoS limits: %s\u0027)"},{"line_number":1685,"context_line":"                raise exception.NetAppException(msg % fixed_min_qos_specs)"}],"source_content_type":"text/x-python","patch_set":7,"id":"9dac13c8_ad74cd9c","line":1682,"in_reply_to":"1e0d55bc_e40754eb","updated":"2026-02-17 11:51:28.000000000","message":"Done","commit_id":"d5e55dd90403d33dad9948d404509fc9533f2163"},{"author":{"_account_id":38059,"name":"Anoop Kumar Shukla","display_name":"Anoop Shukla","email":"anoop.shukla@netapp.com","username":"anoop2","status":"NetApp"},"change_message_id":"2038890d709a29afb83879d0b4eb9e65cc6a7d52","unresolved":true,"context_lines":[{"line_number":1698,"context_line":"            valid_spec_keys.extend(ADAPTIVE_QOS_OPTIONAL_SPECS)"},{"line_number":1699,"context_line":""},{"line_number":1700,"context_line":"            for key, value in specs.items():"},{"line_number":1701,"context_line":"                if key.lower() not in valid_spec_keys:"},{"line_number":1702,"context_line":"                    msg \u003d _(\"The qos-type spec policy_type is set to \""},{"line_number":1703,"context_line":"                            \"\u0027adaptive\u0027 but invalid key %s is specified in \""},{"line_number":1704,"context_line":"                            \"qos type.\")"},{"line_number":1705,"context_line":"                    raise exception.NetAppException(msg % key)"},{"line_number":1706,"context_line":"                if (key.lower() \u003d\u003d \u0027expected_iops_allocation\u0027 or"},{"line_number":1707,"context_line":"                        key.lower() \u003d\u003d \u0027peak_iops_allocation\u0027):"},{"line_number":1708,"context_line":"                    if value not in [\u0027used_space\u0027, \u0027allocated_space\u0027]:"},{"line_number":1709,"context_line":"                        msg \u003d _(\u0027Adaptive QoS optional spec %s from \u0027"},{"line_number":1710,"context_line":"                                \u0027qos-type specs is having invalid value\u0027)"},{"line_number":1711,"context_line":"                        raise exception.NetAppException(msg % key)"},{"line_number":1712,"context_line":"                if key.lower() \u003d\u003d \u0027block-size\u0027:"},{"line_number":1713,"context_line":"                    if value not in ["},{"line_number":1714,"context_line":"                        \u00274k\u0027, \u00278k\u0027, \u002716k\u0027, \u002732k\u0027, \u002764k\u0027, \u0027128k\u0027, \u0027any\u0027"},{"line_number":1715,"context_line":"                    ]:"},{"line_number":1716,"context_line":"                        msg \u003d _(\u0027Adaptive QoS Optional spec block-size from \u0027"},{"line_number":1717,"context_line":"                                \u0027qos-type specs is having invalid value %s.\u0027)"},{"line_number":1718,"context_line":"                        raise exception.NetAppException(msg % value)"},{"line_number":1719,"context_line":"                if key.lower() in ["},{"line_number":1720,"context_line":"                        \u0027peak_iops\u0027, \u0027expected_iops\u0027, \u0027absolute_min_iops\u0027]:"},{"line_number":1721,"context_line":"                    try:"},{"line_number":1722,"context_line":"                        specs[key] \u003d int(value)"},{"line_number":1723,"context_line":"                    except ValueError:"},{"line_number":1724,"context_line":"                        msg \u003d _(\u0027Adaptive QoS spec %s from qos-type specs \u0027"},{"line_number":1725,"context_line":"                                \u0027must have valid integer value.\u0027)"},{"line_number":1726,"context_line":"                        raise exception.NetAppException(msg % key)"},{"line_number":1727,"context_line":""},{"line_number":1728,"context_line":"            adaptive_qos_required_specs \u003d {"}],"source_content_type":"text/x-python","patch_set":7,"id":"58a94d5b_15010b46","line":1725,"range":{"start_line":1701,"start_character":19,"end_line":1725,"end_character":65},"updated":"2026-02-16 13:58:51.000000000","message":"With all these validations in place, I see there are a lot of chances of failures that the user may face and he will need to incrementally fix those issues to get around and make the feature work. We will need good amount of documentation to support what are expected values and keys that each adaptive and fixed qos policies support. How do we plan to document these limitations and expected values in driver doc?","commit_id":"d5e55dd90403d33dad9948d404509fc9533f2163"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"28d6314dd94bfb1f086be2fe1caed9635824f7d8","unresolved":true,"context_lines":[{"line_number":1698,"context_line":"            valid_spec_keys.extend(ADAPTIVE_QOS_OPTIONAL_SPECS)"},{"line_number":1699,"context_line":""},{"line_number":1700,"context_line":"            for key, value in specs.items():"},{"line_number":1701,"context_line":"                if key.lower() not in valid_spec_keys:"},{"line_number":1702,"context_line":"                    msg \u003d _(\"The qos-type spec policy_type is set to \""},{"line_number":1703,"context_line":"                            \"\u0027adaptive\u0027 but invalid key %s is specified in \""},{"line_number":1704,"context_line":"                            \"qos type.\")"},{"line_number":1705,"context_line":"                    raise exception.NetAppException(msg % key)"},{"line_number":1706,"context_line":"                if (key.lower() \u003d\u003d \u0027expected_iops_allocation\u0027 or"},{"line_number":1707,"context_line":"                        key.lower() \u003d\u003d \u0027peak_iops_allocation\u0027):"},{"line_number":1708,"context_line":"                    if value not in [\u0027used_space\u0027, \u0027allocated_space\u0027]:"},{"line_number":1709,"context_line":"                        msg \u003d _(\u0027Adaptive QoS optional spec %s from \u0027"},{"line_number":1710,"context_line":"                                \u0027qos-type specs is having invalid value\u0027)"},{"line_number":1711,"context_line":"                        raise exception.NetAppException(msg % key)"},{"line_number":1712,"context_line":"                if key.lower() \u003d\u003d \u0027block-size\u0027:"},{"line_number":1713,"context_line":"                    if value not in ["},{"line_number":1714,"context_line":"                        \u00274k\u0027, \u00278k\u0027, \u002716k\u0027, \u002732k\u0027, \u002764k\u0027, \u0027128k\u0027, \u0027any\u0027"},{"line_number":1715,"context_line":"                    ]:"},{"line_number":1716,"context_line":"                        msg \u003d _(\u0027Adaptive QoS Optional spec block-size from \u0027"},{"line_number":1717,"context_line":"                                \u0027qos-type specs is having invalid value %s.\u0027)"},{"line_number":1718,"context_line":"                        raise exception.NetAppException(msg % value)"},{"line_number":1719,"context_line":"                if key.lower() in ["},{"line_number":1720,"context_line":"                        \u0027peak_iops\u0027, \u0027expected_iops\u0027, \u0027absolute_min_iops\u0027]:"},{"line_number":1721,"context_line":"                    try:"},{"line_number":1722,"context_line":"                        specs[key] \u003d int(value)"},{"line_number":1723,"context_line":"                    except ValueError:"},{"line_number":1724,"context_line":"                        msg \u003d _(\u0027Adaptive QoS spec %s from qos-type specs \u0027"},{"line_number":1725,"context_line":"                                \u0027must have valid integer value.\u0027)"},{"line_number":1726,"context_line":"                        raise exception.NetAppException(msg % key)"},{"line_number":1727,"context_line":""},{"line_number":1728,"context_line":"            adaptive_qos_required_specs \u003d {"}],"source_content_type":"text/x-python","patch_set":7,"id":"b43639fa_e8117957","line":1725,"range":{"start_line":1701,"start_character":19,"end_line":1725,"end_character":65},"in_reply_to":"58a94d5b_15010b46","updated":"2026-02-17 11:51:28.000000000","message":"this is not expected to be provided by end-user during each share create. Its picked from QoS type which is carefully designed by cloud-admin. So there are less failures and it will work the way existing qos specs are normalized.\nRegarding documentation, yes we need to add detailed documentations and expected/allowed keys. I have added here in releasenotes, but detailed doc will also be updated after this PR. I will create PR afterwords. \nWe also, provide link to possible NetApp documentation where cloud-admin will get an idea about what fields they can provide. As Kumar pointed above some customer asked both min specs for QoS, we can assume that cloud-admin is very well aware of what they can provide.","commit_id":"d5e55dd90403d33dad9948d404509fc9533f2163"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"2c4e8054034183ced2ae0069b3614b84e46d0789","unresolved":false,"context_lines":[{"line_number":1698,"context_line":"            valid_spec_keys.extend(ADAPTIVE_QOS_OPTIONAL_SPECS)"},{"line_number":1699,"context_line":""},{"line_number":1700,"context_line":"            for key, value in specs.items():"},{"line_number":1701,"context_line":"                if key.lower() not in valid_spec_keys:"},{"line_number":1702,"context_line":"                    msg \u003d _(\"The qos-type spec policy_type is set to \""},{"line_number":1703,"context_line":"                            \"\u0027adaptive\u0027 but invalid key %s is specified in \""},{"line_number":1704,"context_line":"                            \"qos type.\")"},{"line_number":1705,"context_line":"                    raise exception.NetAppException(msg % key)"},{"line_number":1706,"context_line":"                if (key.lower() \u003d\u003d \u0027expected_iops_allocation\u0027 or"},{"line_number":1707,"context_line":"                        key.lower() \u003d\u003d \u0027peak_iops_allocation\u0027):"},{"line_number":1708,"context_line":"                    if value not in [\u0027used_space\u0027, \u0027allocated_space\u0027]:"},{"line_number":1709,"context_line":"                        msg \u003d _(\u0027Adaptive QoS optional spec %s from \u0027"},{"line_number":1710,"context_line":"                                \u0027qos-type specs is having invalid value\u0027)"},{"line_number":1711,"context_line":"                        raise exception.NetAppException(msg % key)"},{"line_number":1712,"context_line":"                if key.lower() \u003d\u003d \u0027block-size\u0027:"},{"line_number":1713,"context_line":"                    if value not in ["},{"line_number":1714,"context_line":"                        \u00274k\u0027, \u00278k\u0027, \u002716k\u0027, \u002732k\u0027, \u002764k\u0027, \u0027128k\u0027, \u0027any\u0027"},{"line_number":1715,"context_line":"                    ]:"},{"line_number":1716,"context_line":"                        msg \u003d _(\u0027Adaptive QoS Optional spec block-size from \u0027"},{"line_number":1717,"context_line":"                                \u0027qos-type specs is having invalid value %s.\u0027)"},{"line_number":1718,"context_line":"                        raise exception.NetAppException(msg % value)"},{"line_number":1719,"context_line":"                if key.lower() in ["},{"line_number":1720,"context_line":"                        \u0027peak_iops\u0027, \u0027expected_iops\u0027, \u0027absolute_min_iops\u0027]:"},{"line_number":1721,"context_line":"                    try:"},{"line_number":1722,"context_line":"                        specs[key] \u003d int(value)"},{"line_number":1723,"context_line":"                    except ValueError:"},{"line_number":1724,"context_line":"                        msg \u003d _(\u0027Adaptive QoS spec %s from qos-type specs \u0027"},{"line_number":1725,"context_line":"                                \u0027must have valid integer value.\u0027)"},{"line_number":1726,"context_line":"                        raise exception.NetAppException(msg % key)"},{"line_number":1727,"context_line":""},{"line_number":1728,"context_line":"            adaptive_qos_required_specs \u003d {"}],"source_content_type":"text/x-python","patch_set":7,"id":"589b4bec_bbb9b35c","line":1725,"range":{"start_line":1701,"start_character":19,"end_line":1725,"end_character":65},"in_reply_to":"b43639fa_e8117957","updated":"2026-02-23 06:57:25.000000000","message":"Done","commit_id":"d5e55dd90403d33dad9948d404509fc9533f2163"},{"author":{"_account_id":38371,"name":"Kumar Tadepalli","display_name":"Kumar Tadepalli","email":"kumart.lead@gmail.com","username":"kumart","status":"NetApp"},"change_message_id":"81bc8edf965c8d13e1dc1016b1726e93a1e5cc2e","unresolved":true,"context_lines":[{"line_number":1776,"context_line":"            min_throughput \u003d self._get_qos_type_min_throughput(qos_type_specs)"},{"line_number":1777,"context_line":"            qos_policy_group_full_name \u003d ("},{"line_number":1778,"context_line":"                \"FIXED_QOS_\" + vserver + \"_\" + qos_type_name)"},{"line_number":1779,"context_line":"            qos_policy_group_name \u003d qos_policy_group_full_name[:127]"},{"line_number":1780,"context_line":"            if not client.qos_policy_group_exists("},{"line_number":1781,"context_line":"                    qos_policy_group_name):"},{"line_number":1782,"context_line":"                client.qos_policy_group_create(qos_policy_group_name, vserver,"}],"source_content_type":"text/x-python","patch_set":7,"id":"fb3291ec_d7b7ac41","line":1779,"updated":"2026-02-16 04:51:02.000000000","message":"I would recommend to write an util function to accept all three values and return the short name and use it at all places to avoid duplication.","commit_id":"d5e55dd90403d33dad9948d404509fc9533f2163"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"28d6314dd94bfb1f086be2fe1caed9635824f7d8","unresolved":false,"context_lines":[{"line_number":1776,"context_line":"            min_throughput \u003d self._get_qos_type_min_throughput(qos_type_specs)"},{"line_number":1777,"context_line":"            qos_policy_group_full_name \u003d ("},{"line_number":1778,"context_line":"                \"FIXED_QOS_\" + vserver + \"_\" + qos_type_name)"},{"line_number":1779,"context_line":"            qos_policy_group_name \u003d qos_policy_group_full_name[:127]"},{"line_number":1780,"context_line":"            if not client.qos_policy_group_exists("},{"line_number":1781,"context_line":"                    qos_policy_group_name):"},{"line_number":1782,"context_line":"                client.qos_policy_group_create(qos_policy_group_name, vserver,"}],"source_content_type":"text/x-python","patch_set":7,"id":"bda3a092_eefe058f","line":1779,"in_reply_to":"fb3291ec_d7b7ac41","updated":"2026-02-17 11:51:28.000000000","message":"Done","commit_id":"d5e55dd90403d33dad9948d404509fc9533f2163"},{"author":{"_account_id":36180,"name":"Gireesh Awasthi","display_name":"Gireesh","email":"gawasthi2010@gmail.com","username":"agireesh","status":"NetApp"},"change_message_id":"4553a403e4e0269b73b630060ed2183cee26f0ff","unresolved":true,"context_lines":[{"line_number":565,"context_line":"        # possible with DHSS\u003dTrue"},{"line_number":566,"context_line":"        encryption_support \u003d None if self.configuration.safe_get("},{"line_number":567,"context_line":"            \u0027netapp_vserver\u0027) else [\u0027share_server\u0027]"},{"line_number":568,"context_line":"        qos_type_support \u003d False if self.configuration.safe_get("},{"line_number":569,"context_line":"            \u0027netapp_vserver\u0027) else True"},{"line_number":570,"context_line":""},{"line_number":571,"context_line":"        netapp_flexvol_encryption \u003d self._cluster_info.get("},{"line_number":572,"context_line":"            \u0027nve_support\u0027, False)"},{"line_number":573,"context_line":"        reserved_percentage \u003d self.configuration.reserved_share_percentage"}],"source_content_type":"text/x-python","patch_set":14,"id":"e1232df6_3bb43ee4","line":570,"range":{"start_line":568,"start_character":8,"end_line":570,"end_character":0},"updated":"2026-02-22 16:39:57.000000000","message":"From code it seems that we are not supporting the QOS for dhss_false. Any specific reason we are not supporting for dhss_false. I think it is better to support the for dhss_false also.\n\nCode at https://review.opendev.org/c/openstack/manila/+/973962/14/manila/share/drivers/netapp/dataontap/cluster_mode/lib_base.py#2007 \nsay that QOS policy is only applicable for cluster credential (I think we don\u0027t support this for SVM scopping) in that case you have to move this code to line no 559. The code should be \nif self._have_cluster_creds:\n  qos_type_support \u003d False if self.configuration.safe_get(\n            \u0027netapp_vserver\u0027) else True\nelse\n   qos_type_support \u003d False","commit_id":"6ec0eee4d042aa00085306560b722caddf0585c0"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"2c4e8054034183ced2ae0069b3614b84e46d0789","unresolved":false,"context_lines":[{"line_number":565,"context_line":"        # possible with DHSS\u003dTrue"},{"line_number":566,"context_line":"        encryption_support \u003d None if self.configuration.safe_get("},{"line_number":567,"context_line":"            \u0027netapp_vserver\u0027) else [\u0027share_server\u0027]"},{"line_number":568,"context_line":"        qos_type_support \u003d False if self.configuration.safe_get("},{"line_number":569,"context_line":"            \u0027netapp_vserver\u0027) else True"},{"line_number":570,"context_line":""},{"line_number":571,"context_line":"        netapp_flexvol_encryption \u003d self._cluster_info.get("},{"line_number":572,"context_line":"            \u0027nve_support\u0027, False)"},{"line_number":573,"context_line":"        reserved_percentage \u003d self.configuration.reserved_share_percentage"}],"source_content_type":"text/x-python","patch_set":14,"id":"ab4f66b8_30245817","line":570,"range":{"start_line":568,"start_character":8,"end_line":570,"end_character":0},"in_reply_to":"e1232df6_3bb43ee4","updated":"2026-02-23 06:57:25.000000000","message":"Done","commit_id":"6ec0eee4d042aa00085306560b722caddf0585c0"},{"author":{"_account_id":36180,"name":"Gireesh Awasthi","display_name":"Gireesh","email":"gawasthi2010@gmail.com","username":"agireesh","status":"NetApp"},"change_message_id":"4553a403e4e0269b73b630060ed2183cee26f0ff","unresolved":true,"context_lines":[{"line_number":1686,"context_line":"                        \"qos type. Cannot provision a QoS policy. \")"},{"line_number":1687,"context_line":"                raise exception.NetAppException(msg)"},{"line_number":1688,"context_line":""},{"line_number":1689,"context_line":"            fixed_max_qos_specs.update(fixed_min_qos_specs)"},{"line_number":1690,"context_line":"            fixed_max_qos_specs.update(fixed_qos_specs)"},{"line_number":1691,"context_line":"            fixed_max_qos_specs.update({\u0027policy_type\u0027: policy_type})"},{"line_number":1692,"context_line":"            return fixed_max_qos_specs"},{"line_number":1693,"context_line":"        elif policy_type \u003d\u003d \u0027adaptive\u0027:"},{"line_number":1694,"context_line":"            ADAPTIVE_QOS_OPTIONAL_SPECS \u003d ["},{"line_number":1695,"context_line":"                \u0027absolute_min_iops\u0027, \u0027block_size\u0027, \u0027expected_iops_allocation\u0027,"}],"source_content_type":"text/x-python","patch_set":14,"id":"3d29e116_0a19bcbc","line":1692,"range":{"start_line":1689,"start_character":12,"end_line":1692,"end_character":38},"updated":"2026-02-22 16:39:57.000000000","message":"Can you change the return variable, from return value it seems we are only returning max qos specs only. You can write the code as below\n\nfixed_qos_specs.update(fixed_max_qos_specs)\nfixed_qos_specs.update(fixed_min_qos_specs)\nfixed_qos_specs.update({\u0027policy_type\u0027: policy_type})\nreturn fixed_qos_specs","commit_id":"6ec0eee4d042aa00085306560b722caddf0585c0"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"2c4e8054034183ced2ae0069b3614b84e46d0789","unresolved":false,"context_lines":[{"line_number":1686,"context_line":"                        \"qos type. Cannot provision a QoS policy. \")"},{"line_number":1687,"context_line":"                raise exception.NetAppException(msg)"},{"line_number":1688,"context_line":""},{"line_number":1689,"context_line":"            fixed_max_qos_specs.update(fixed_min_qos_specs)"},{"line_number":1690,"context_line":"            fixed_max_qos_specs.update(fixed_qos_specs)"},{"line_number":1691,"context_line":"            fixed_max_qos_specs.update({\u0027policy_type\u0027: policy_type})"},{"line_number":1692,"context_line":"            return fixed_max_qos_specs"},{"line_number":1693,"context_line":"        elif policy_type \u003d\u003d \u0027adaptive\u0027:"},{"line_number":1694,"context_line":"            ADAPTIVE_QOS_OPTIONAL_SPECS \u003d ["},{"line_number":1695,"context_line":"                \u0027absolute_min_iops\u0027, \u0027block_size\u0027, \u0027expected_iops_allocation\u0027,"}],"source_content_type":"text/x-python","patch_set":14,"id":"adb9ddc7_c4c2a7d7","line":1692,"range":{"start_line":1689,"start_character":12,"end_line":1692,"end_character":38},"in_reply_to":"3d29e116_0a19bcbc","updated":"2026-02-23 06:57:25.000000000","message":"Done","commit_id":"6ec0eee4d042aa00085306560b722caddf0585c0"},{"author":{"_account_id":36180,"name":"Gireesh Awasthi","display_name":"Gireesh","email":"gawasthi2010@gmail.com","username":"agireesh","status":"NetApp"},"change_message_id":"4553a403e4e0269b73b630060ed2183cee26f0ff","unresolved":true,"context_lines":[{"line_number":1801,"context_line":"        # With Qos Type we create policy for share server instead of"},{"line_number":1802,"context_line":"        # individual share."},{"line_number":1803,"context_line":"        qos_type_name \u003d qos_types.get_qos_type_name_from_share(share)"},{"line_number":1804,"context_line":"        if qos_type_specs.get(\u0027policy_type\u0027) \u003d\u003d \u0027fixed\u0027:"},{"line_number":1805,"context_line":"            qos_policy_group_name \u003d self._generate_policy_group_name("},{"line_number":1806,"context_line":"                \"FIXED_QOS_\", vserver, qos_type_name)"},{"line_number":1807,"context_line":"            self._modify_or_create_qos_policy_group("}],"source_content_type":"text/x-python","patch_set":14,"id":"2c73fbcb_d198f92c","line":1804,"range":{"start_line":1804,"start_character":49,"end_line":1804,"end_character":54},"updated":"2026-02-22 16:39:57.000000000","message":"Can you move this to static variable or global string and use it all the places.","commit_id":"6ec0eee4d042aa00085306560b722caddf0585c0"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"2c4e8054034183ced2ae0069b3614b84e46d0789","unresolved":false,"context_lines":[{"line_number":1801,"context_line":"        # With Qos Type we create policy for share server instead of"},{"line_number":1802,"context_line":"        # individual share."},{"line_number":1803,"context_line":"        qos_type_name \u003d qos_types.get_qos_type_name_from_share(share)"},{"line_number":1804,"context_line":"        if qos_type_specs.get(\u0027policy_type\u0027) \u003d\u003d \u0027fixed\u0027:"},{"line_number":1805,"context_line":"            qos_policy_group_name \u003d self._generate_policy_group_name("},{"line_number":1806,"context_line":"                \"FIXED_QOS_\", vserver, qos_type_name)"},{"line_number":1807,"context_line":"            self._modify_or_create_qos_policy_group("}],"source_content_type":"text/x-python","patch_set":14,"id":"2b0129b7_bca94642","line":1804,"range":{"start_line":1804,"start_character":49,"end_line":1804,"end_character":54},"in_reply_to":"2c73fbcb_d198f92c","updated":"2026-02-23 06:57:25.000000000","message":"Done","commit_id":"6ec0eee4d042aa00085306560b722caddf0585c0"},{"author":{"_account_id":36180,"name":"Gireesh Awasthi","display_name":"Gireesh","email":"gawasthi2010@gmail.com","username":"agireesh","status":"NetApp"},"change_message_id":"4553a403e4e0269b73b630060ed2183cee26f0ff","unresolved":true,"context_lines":[{"line_number":1803,"context_line":"        qos_type_name \u003d qos_types.get_qos_type_name_from_share(share)"},{"line_number":1804,"context_line":"        if qos_type_specs.get(\u0027policy_type\u0027) \u003d\u003d \u0027fixed\u0027:"},{"line_number":1805,"context_line":"            qos_policy_group_name \u003d self._generate_policy_group_name("},{"line_number":1806,"context_line":"                \"FIXED_QOS_\", vserver, qos_type_name)"},{"line_number":1807,"context_line":"            self._modify_or_create_qos_policy_group("},{"line_number":1808,"context_line":"                qos_policy_group_name, vserver, qos_type_specs,"},{"line_number":1809,"context_line":"                vserver_client\u003dvserver_client"}],"source_content_type":"text/x-python","patch_set":14,"id":"f1135e51_cecd4a8b","line":1806,"range":{"start_line":1806,"start_character":17,"end_line":1806,"end_character":27},"updated":"2026-02-22 16:39:57.000000000","message":"Can we allow the end user to more flexibility to specify the prefix for the QoS and Adaptive QoS policy names? These prefixes can be get from the configuration file, and if not provided, the default values specified here (FIXED_QOS_ or ADAPTIVE_QOS_ ) will be used.","commit_id":"6ec0eee4d042aa00085306560b722caddf0585c0"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"2c4e8054034183ced2ae0069b3614b84e46d0789","unresolved":false,"context_lines":[{"line_number":1803,"context_line":"        qos_type_name \u003d qos_types.get_qos_type_name_from_share(share)"},{"line_number":1804,"context_line":"        if qos_type_specs.get(\u0027policy_type\u0027) \u003d\u003d \u0027fixed\u0027:"},{"line_number":1805,"context_line":"            qos_policy_group_name \u003d self._generate_policy_group_name("},{"line_number":1806,"context_line":"                \"FIXED_QOS_\", vserver, qos_type_name)"},{"line_number":1807,"context_line":"            self._modify_or_create_qos_policy_group("},{"line_number":1808,"context_line":"                qos_policy_group_name, vserver, qos_type_specs,"},{"line_number":1809,"context_line":"                vserver_client\u003dvserver_client"}],"source_content_type":"text/x-python","patch_set":14,"id":"d692fe5f_898c5cff","line":1806,"range":{"start_line":1806,"start_character":17,"end_line":1806,"end_character":27},"in_reply_to":"f1135e51_cecd4a8b","updated":"2026-02-23 06:57:25.000000000","message":"Done","commit_id":"6ec0eee4d042aa00085306560b722caddf0585c0"},{"author":{"_account_id":36180,"name":"Gireesh Awasthi","display_name":"Gireesh","email":"gawasthi2010@gmail.com","username":"agireesh","status":"NetApp"},"change_message_id":"4553a403e4e0269b73b630060ed2183cee26f0ff","unresolved":true,"context_lines":[{"line_number":1809,"context_line":"                vserver_client\u003dvserver_client"},{"line_number":1810,"context_line":"            )"},{"line_number":1811,"context_line":"            return qos_policy_group_name"},{"line_number":1812,"context_line":"        elif qos_type_specs.get(\u0027policy_type\u0027) \u003d\u003d \u0027adaptive\u0027:"},{"line_number":1813,"context_line":"            adaptive_qos_policy_group_name \u003d self._generate_policy_group_name("},{"line_number":1814,"context_line":"                \"ADAPTIVE_QOS_\", vserver, qos_type_name)"},{"line_number":1815,"context_line":"            self._modify_or_create_adaptive_qos_policy_group("}],"source_content_type":"text/x-python","patch_set":14,"id":"84da878b_55984420","line":1812,"range":{"start_line":1812,"start_character":51,"end_line":1812,"end_character":59},"updated":"2026-02-22 16:39:57.000000000","message":"Same as above","commit_id":"6ec0eee4d042aa00085306560b722caddf0585c0"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"2c4e8054034183ced2ae0069b3614b84e46d0789","unresolved":false,"context_lines":[{"line_number":1809,"context_line":"                vserver_client\u003dvserver_client"},{"line_number":1810,"context_line":"            )"},{"line_number":1811,"context_line":"            return qos_policy_group_name"},{"line_number":1812,"context_line":"        elif qos_type_specs.get(\u0027policy_type\u0027) \u003d\u003d \u0027adaptive\u0027:"},{"line_number":1813,"context_line":"            adaptive_qos_policy_group_name \u003d self._generate_policy_group_name("},{"line_number":1814,"context_line":"                \"ADAPTIVE_QOS_\", vserver, qos_type_name)"},{"line_number":1815,"context_line":"            self._modify_or_create_adaptive_qos_policy_group("}],"source_content_type":"text/x-python","patch_set":14,"id":"ea9646b5_8373c77f","line":1812,"range":{"start_line":1812,"start_character":51,"end_line":1812,"end_character":59},"in_reply_to":"84da878b_55984420","updated":"2026-02-23 06:57:25.000000000","message":"Done","commit_id":"6ec0eee4d042aa00085306560b722caddf0585c0"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"3a892eb362f5c593b6f967783c4fd3c3c307dab8","unresolved":true,"context_lines":[{"line_number":1649,"context_line":"        for key, value in specs.items():"},{"line_number":1650,"context_line":"            if key.lower() \u003d\u003d \u0027policy_type\u0027:"},{"line_number":1651,"context_line":"                policy_type \u003d value.lower()"},{"line_number":1652,"context_line":"                specs.pop(key)"},{"line_number":1653,"context_line":"                break"},{"line_number":1654,"context_line":""},{"line_number":1655,"context_line":"        if not policy_type:"}],"source_content_type":"text/x-python","patch_set":20,"id":"f7638e24_68c988e5","line":1652,"updated":"2026-02-27 18:15:44.000000000","message":"modifying this dict in-place could cause unexpected side effects on\nsubsequent operations, probably make a copy ``specs \u003d dict(specs)`` at the\ntop of the method.","commit_id":"2aac4ab9a86c6299fa990ea8462d39c43d6dc4cf"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"b39e1bff856d6c2beb925fde7e5dfde26f0163d3","unresolved":false,"context_lines":[{"line_number":1649,"context_line":"        for key, value in specs.items():"},{"line_number":1650,"context_line":"            if key.lower() \u003d\u003d \u0027policy_type\u0027:"},{"line_number":1651,"context_line":"                policy_type \u003d value.lower()"},{"line_number":1652,"context_line":"                specs.pop(key)"},{"line_number":1653,"context_line":"                break"},{"line_number":1654,"context_line":""},{"line_number":1655,"context_line":"        if not policy_type:"}],"source_content_type":"text/x-python","patch_set":20,"id":"c6643f84_9762f706","line":1652,"in_reply_to":"f7638e24_68c988e5","updated":"2026-02-27 18:39:41.000000000","message":"Done","commit_id":"2aac4ab9a86c6299fa990ea8462d39c43d6dc4cf"}],"manila/share/drivers/netapp/dataontap/cluster_mode/lib_multi_svm.py":[{"author":{"_account_id":36180,"name":"Gireesh Awasthi","display_name":"Gireesh","email":"gawasthi2010@gmail.com","username":"agireesh","status":"NetApp"},"change_message_id":"4553a403e4e0269b73b630060ed2183cee26f0ff","unresolved":true,"context_lines":[{"line_number":656,"context_line":"                        \"record will proceed anyway.\", vserver)"},{"line_number":657,"context_line":"            return"},{"line_number":658,"context_line":""},{"line_number":659,"context_line":"        # Delete all QoS policy groups created for vserver"},{"line_number":660,"context_line":"        vserver_client \u003d self._get_api_client(vserver\u003dvserver)"},{"line_number":661,"context_line":"        FIXED_PREFIX \u003d \"FIXED_QOS_\" + vserver"},{"line_number":662,"context_line":"        vserver_client.remove_unused_qos_policy_groups(prefix\u003dFIXED_PREFIX)"},{"line_number":663,"context_line":"        ADAPTIVE_PREFIX \u003d \"ADAPTIVE_QOS_\" + vserver"},{"line_number":664,"context_line":"        vserver_client.remove_unused_adaptive_qos_policy_groups("},{"line_number":665,"context_line":"            prefix\u003dADAPTIVE_PREFIX)"},{"line_number":666,"context_line":""},{"line_number":667,"context_line":"        self._delete_vserver(vserver, security_services\u003dsecurity_services)"},{"line_number":668,"context_line":""}],"source_content_type":"text/x-python","patch_set":14,"id":"01cfc61e_5fcd5fbf","line":665,"range":{"start_line":659,"start_character":6,"end_line":665,"end_character":35},"updated":"2026-02-22 16:39:57.000000000","message":"No need to delete the qos policies, all QoS policies will be automatically removed when the Vserver is deleted. I think you can remove this code.","commit_id":"6ec0eee4d042aa00085306560b722caddf0585c0"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"2c4e8054034183ced2ae0069b3614b84e46d0789","unresolved":false,"context_lines":[{"line_number":656,"context_line":"                        \"record will proceed anyway.\", vserver)"},{"line_number":657,"context_line":"            return"},{"line_number":658,"context_line":""},{"line_number":659,"context_line":"        # Delete all QoS policy groups created for vserver"},{"line_number":660,"context_line":"        vserver_client \u003d self._get_api_client(vserver\u003dvserver)"},{"line_number":661,"context_line":"        FIXED_PREFIX \u003d \"FIXED_QOS_\" + vserver"},{"line_number":662,"context_line":"        vserver_client.remove_unused_qos_policy_groups(prefix\u003dFIXED_PREFIX)"},{"line_number":663,"context_line":"        ADAPTIVE_PREFIX \u003d \"ADAPTIVE_QOS_\" + vserver"},{"line_number":664,"context_line":"        vserver_client.remove_unused_adaptive_qos_policy_groups("},{"line_number":665,"context_line":"            prefix\u003dADAPTIVE_PREFIX)"},{"line_number":666,"context_line":""},{"line_number":667,"context_line":"        self._delete_vserver(vserver, security_services\u003dsecurity_services)"},{"line_number":668,"context_line":""}],"source_content_type":"text/x-python","patch_set":14,"id":"d8fee85d_8af65002","line":665,"range":{"start_line":659,"start_character":6,"end_line":665,"end_character":35},"in_reply_to":"01cfc61e_5fcd5fbf","updated":"2026-02-23 06:57:25.000000000","message":"ok, tested manual deletion on filer, the policies are getting deleted when SVM is deleted, Removed.","commit_id":"6ec0eee4d042aa00085306560b722caddf0585c0"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"3a892eb362f5c593b6f967783c4fd3c3c307dab8","unresolved":true,"context_lines":[{"line_number":2282,"context_line":"         .validate_provisioning_options_for_share(provisioning_options,"},{"line_number":2283,"context_line":"                                                  extra_specs\u003dextra_specs,"},{"line_number":2284,"context_line":"                                                  qos_specs\u003dqos_specs,"},{"line_number":2285,"context_line":"                                                  qos_type_specs\u003dNone))"},{"line_number":2286,"context_line":""},{"line_number":2287,"context_line":"    def _get_different_keys_for_equal_ss_type(self, current_sec_service,"},{"line_number":2288,"context_line":"                                              new_sec_service):"}],"source_content_type":"text/x-python","patch_set":20,"id":"402b8d93_753a573c","line":2285,"updated":"2026-02-27 18:15:44.000000000","message":"Shouldn\u0027t this be ``qos_type_specs\u003dqos_type_specs``?","commit_id":"2aac4ab9a86c6299fa990ea8462d39c43d6dc4cf"},{"author":{"_account_id":29632,"name":"Carlos Eduardo","email":"ces.eduardo98@gmail.com","username":"silvacarlos"},"change_message_id":"25433a235d529575b04cce8378aaa559f89c3698","unresolved":true,"context_lines":[{"line_number":2282,"context_line":"         .validate_provisioning_options_for_share(provisioning_options,"},{"line_number":2283,"context_line":"                                                  extra_specs\u003dextra_specs,"},{"line_number":2284,"context_line":"                                                  qos_specs\u003dqos_specs,"},{"line_number":2285,"context_line":"                                                  qos_type_specs\u003dNone))"},{"line_number":2286,"context_line":""},{"line_number":2287,"context_line":"    def _get_different_keys_for_equal_ss_type(self, current_sec_service,"},{"line_number":2288,"context_line":"                                              new_sec_service):"}],"source_content_type":"text/x-python","patch_set":20,"id":"fbeb9be0_925d401d","line":2285,"in_reply_to":"402b8d93_753a573c","updated":"2026-02-27 18:35:28.000000000","message":"++","commit_id":"2aac4ab9a86c6299fa990ea8462d39c43d6dc4cf"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"b39e1bff856d6c2beb925fde7e5dfde26f0163d3","unresolved":false,"context_lines":[{"line_number":2282,"context_line":"         .validate_provisioning_options_for_share(provisioning_options,"},{"line_number":2283,"context_line":"                                                  extra_specs\u003dextra_specs,"},{"line_number":2284,"context_line":"                                                  qos_specs\u003dqos_specs,"},{"line_number":2285,"context_line":"                                                  qos_type_specs\u003dNone))"},{"line_number":2286,"context_line":""},{"line_number":2287,"context_line":"    def _get_different_keys_for_equal_ss_type(self, current_sec_service,"},{"line_number":2288,"context_line":"                                              new_sec_service):"}],"source_content_type":"text/x-python","patch_set":20,"id":"6f24d70c_59543cf7","line":2285,"in_reply_to":"402b8d93_753a573c","updated":"2026-02-27 18:39:41.000000000","message":"its was earlier when dhss\u003dfalse support was not added. Fixed","commit_id":"2aac4ab9a86c6299fa990ea8462d39c43d6dc4cf"}],"manila/share/qos_types.py":[{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"3a892eb362f5c593b6f967783c4fd3c3c307dab8","unresolved":true,"context_lines":[{"line_number":24,"context_line":"LOG \u003d log.getLogger(__name__)"},{"line_number":25,"context_line":""},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"def get_qos_type_specs(qos_type_id, key\u003dFalse):"},{"line_number":28,"context_line":"    qos_type \u003d db.qos_type_get(context.get_admin_context(),"},{"line_number":29,"context_line":"                               qos_type_id)"},{"line_number":30,"context_line":"    specs \u003d qos_type[\u0027specs\u0027]"}],"source_content_type":"text/x-python","patch_set":20,"id":"7cbefa87_2a62d2ce","line":27,"updated":"2026-02-27 18:15:44.000000000","message":"Suggest: ``key\u003dNone`` and ``return None`` instead.","commit_id":"2aac4ab9a86c6299fa990ea8462d39c43d6dc4cf"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"b39e1bff856d6c2beb925fde7e5dfde26f0163d3","unresolved":false,"context_lines":[{"line_number":24,"context_line":"LOG \u003d log.getLogger(__name__)"},{"line_number":25,"context_line":""},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"def get_qos_type_specs(qos_type_id, key\u003dFalse):"},{"line_number":28,"context_line":"    qos_type \u003d db.qos_type_get(context.get_admin_context(),"},{"line_number":29,"context_line":"                               qos_type_id)"},{"line_number":30,"context_line":"    specs \u003d qos_type[\u0027specs\u0027]"}],"source_content_type":"text/x-python","patch_set":20,"id":"51c55217_d569b9d8","line":27,"in_reply_to":"7cbefa87_2a62d2ce","updated":"2026-02-27 18:39:41.000000000","message":"Done","commit_id":"2aac4ab9a86c6299fa990ea8462d39c43d6dc4cf"}],"manila/tests/share/drivers/netapp/dataontap/cluster_mode/test_lib_base.py":[{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"3a892eb362f5c593b6f967783c4fd3c3c307dab8","unresolved":true,"context_lines":[{"line_number":2021,"context_line":"                              self.library._get_normalized_qos_type_specs,"},{"line_number":2022,"context_line":"                              specs)"},{"line_number":2023,"context_line":""},{"line_number":2024,"context_line":"    @ddt.data"},{"line_number":2025,"context_line":"    def test__create_qos_type_policy_group_fixed(self, test_modify):"},{"line_number":2026,"context_line":"        mock_qos_policy_create \u003d self.mock_object("},{"line_number":2027,"context_line":"            self.library._client, \u0027qos_policy_group_create\u0027)"}],"source_content_type":"text/x-python","patch_set":20,"id":"db5f30b4_ca0ca6b1","line":2024,"updated":"2026-02-27 18:15:44.000000000","message":"``@ddt.data`` without arguments or parentheses... Same issue at line 2060. Should be ``@ddt.data(True, False)``.","commit_id":"2aac4ab9a86c6299fa990ea8462d39c43d6dc4cf"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"b39e1bff856d6c2beb925fde7e5dfde26f0163d3","unresolved":false,"context_lines":[{"line_number":2021,"context_line":"                              self.library._get_normalized_qos_type_specs,"},{"line_number":2022,"context_line":"                              specs)"},{"line_number":2023,"context_line":""},{"line_number":2024,"context_line":"    @ddt.data"},{"line_number":2025,"context_line":"    def test__create_qos_type_policy_group_fixed(self, test_modify):"},{"line_number":2026,"context_line":"        mock_qos_policy_create \u003d self.mock_object("},{"line_number":2027,"context_line":"            self.library._client, \u0027qos_policy_group_create\u0027)"}],"source_content_type":"text/x-python","patch_set":20,"id":"49268d45_a3dc9a6e","line":2024,"in_reply_to":"db5f30b4_ca0ca6b1","updated":"2026-02-27 18:39:41.000000000","message":"Done","commit_id":"2aac4ab9a86c6299fa990ea8462d39c43d6dc4cf"}],"manila/tests/share/drivers/netapp/dataontap/fakes.py":[{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"3a892eb362f5c593b6f967783c4fd3c3c307dab8","unresolved":true,"context_lines":[{"line_number":1201,"context_line":"        \u0027create_share_from_snapshot_support\u0027: True,"},{"line_number":1202,"context_line":"        \u0027revert_to_snapshot_support\u0027: True,"},{"line_number":1203,"context_line":"        \u0027qos\u0027: False,"},{"line_number":1204,"context_line":"        \u0027qos_type_support\u0027: True,"},{"line_number":1205,"context_line":"        \u0027security_service_update_support\u0027: True,"},{"line_number":1206,"context_line":"        \u0027share_server_multiple_subnet_support\u0027: True,"},{"line_number":1207,"context_line":"        \u0027netapp_flexgroup\u0027: False,"}],"source_content_type":"text/x-python","patch_set":20,"id":"21ac77dc_5b9a4692","line":1204,"updated":"2026-02-27 18:15:44.000000000","message":"This pool in ``POOLS_VSERVER_CREDS`` has ``\u0027qos\u0027: False`` (correct - no cluster creds)\nbut ``\u0027qos_type_support\u0027: True``. It should really be ``False``.","commit_id":"2aac4ab9a86c6299fa990ea8462d39c43d6dc4cf"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"b39e1bff856d6c2beb925fde7e5dfde26f0163d3","unresolved":false,"context_lines":[{"line_number":1201,"context_line":"        \u0027create_share_from_snapshot_support\u0027: True,"},{"line_number":1202,"context_line":"        \u0027revert_to_snapshot_support\u0027: True,"},{"line_number":1203,"context_line":"        \u0027qos\u0027: False,"},{"line_number":1204,"context_line":"        \u0027qos_type_support\u0027: True,"},{"line_number":1205,"context_line":"        \u0027security_service_update_support\u0027: True,"},{"line_number":1206,"context_line":"        \u0027share_server_multiple_subnet_support\u0027: True,"},{"line_number":1207,"context_line":"        \u0027netapp_flexgroup\u0027: False,"}],"source_content_type":"text/x-python","patch_set":20,"id":"2acb19f2_d8009635","line":1204,"in_reply_to":"21ac77dc_5b9a4692","updated":"2026-02-27 18:39:41.000000000","message":"Done","commit_id":"2aac4ab9a86c6299fa990ea8462d39c43d6dc4cf"}],"releasenotes/notes/netapp-add-qos-policies-using-qos-type-60279fe007ce691f.yaml":[{"author":{"_account_id":38371,"name":"Kumar Tadepalli","display_name":"Kumar Tadepalli","email":"kumart.lead@gmail.com","username":"kumart","status":"NetApp"},"change_message_id":"0787338396c82ca400f15a7ac505bf823ed07671","unresolved":true,"context_lines":[{"line_number":23,"context_line":"    \u0027peak_iops\u0027, \u0027absolute_min_iops\u0027, \u0027block_size\u0027, \u0027peak_iops_allocation\u0027,"},{"line_number":24,"context_line":"    \u0027expected_iops_allocation\u0027."},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"    5. In order to create share with qos policy (defined using qos-type specs),"},{"line_number":27,"context_line":"    the qos-type name (from step 1) needs to be added in the share-type"},{"line_number":28,"context_line":"    extra-spec \u0027default_qos_type\u0027. During share creation, respective policy"},{"line_number":29,"context_line":"    with unique policy name will be created on share server (if not already"}],"source_content_type":"text/x-yaml","patch_set":9,"id":"a3e3b697_7395792b","line":26,"updated":"2026-02-18 07:08:27.000000000","message":"Please add a doc related to qos type policy update handling as well.","commit_id":"e3a71c2759efd95083a9af68971767c795b48304"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"088df2a54027358f24ec4c06e7a48c13fd31b174","unresolved":false,"context_lines":[{"line_number":23,"context_line":"    \u0027peak_iops\u0027, \u0027absolute_min_iops\u0027, \u0027block_size\u0027, \u0027peak_iops_allocation\u0027,"},{"line_number":24,"context_line":"    \u0027expected_iops_allocation\u0027."},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"    5. In order to create share with qos policy (defined using qos-type specs),"},{"line_number":27,"context_line":"    the qos-type name (from step 1) needs to be added in the share-type"},{"line_number":28,"context_line":"    extra-spec \u0027default_qos_type\u0027. During share creation, respective policy"},{"line_number":29,"context_line":"    with unique policy name will be created on share server (if not already"}],"source_content_type":"text/x-yaml","patch_set":9,"id":"2c89474d_f46ce496","line":26,"in_reply_to":"a3e3b697_7395792b","updated":"2026-02-18 11:23:47.000000000","message":"Done","commit_id":"e3a71c2759efd95083a9af68971767c795b48304"},{"author":{"_account_id":18816,"name":"Maurice Escher","display_name":"carthaca","email":"maurice.escher@sap.com","username":"mapocace"},"change_message_id":"1f99632c95ed1d0ff8541c53f96ab31fc5a48263","unresolved":true,"context_lines":[{"line_number":11,"context_line":""},{"line_number":12,"context_line":"    1. Create qos-type with unique name (maximum length 60)"},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"    2. Create qos-type specs. The specs contain fields neeed to define qos"},{"line_number":15,"context_line":"    policy. The spec with key \u0027policy_type\u0027 and valid value i.e. either"},{"line_number":16,"context_line":"    \u0027fixed\u0027 or \u0027adaptive\u0027 must be present in qos-type specs."},{"line_number":17,"context_line":""}],"source_content_type":"text/x-yaml","patch_set":18,"id":"9ab9340e_699f909b","line":14,"range":{"start_line":14,"start_character":55,"end_line":14,"end_character":60},"updated":"2026-02-27 14:22:47.000000000","message":"trivial: \"neeed\" → \"needed\"","commit_id":"bf9681297af48adeb1175abb3ca15db704213035"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"6f98055df18f0dd977f281273b3a32bb35c775ca","unresolved":false,"context_lines":[{"line_number":11,"context_line":""},{"line_number":12,"context_line":"    1. Create qos-type with unique name (maximum length 60)"},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"    2. Create qos-type specs. The specs contain fields neeed to define qos"},{"line_number":15,"context_line":"    policy. The spec with key \u0027policy_type\u0027 and valid value i.e. either"},{"line_number":16,"context_line":"    \u0027fixed\u0027 or \u0027adaptive\u0027 must be present in qos-type specs."},{"line_number":17,"context_line":""}],"source_content_type":"text/x-yaml","patch_set":18,"id":"8b48a777_ca228a10","line":14,"range":{"start_line":14,"start_character":55,"end_line":14,"end_character":60},"in_reply_to":"9ab9340e_699f909b","updated":"2026-02-27 14:49:41.000000000","message":"Done","commit_id":"bf9681297af48adeb1175abb3ca15db704213035"},{"author":{"_account_id":18816,"name":"Maurice Escher","display_name":"carthaca","email":"maurice.escher@sap.com","username":"mapocace"},"change_message_id":"1f99632c95ed1d0ff8541c53f96ab31fc5a48263","unresolved":true,"context_lines":[{"line_number":16,"context_line":"    \u0027fixed\u0027 or \u0027adaptive\u0027 must be present in qos-type specs."},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"    3. For fixed qos policy, remaining valid spec keys are \u0027max_throughput_iops\u0027,"},{"line_number":19,"context_line":"    \u0027max_throughput_mbps\u0027, \u0027min_throughput_iops\u0027, \u0027min_throughput_iops\u0027 and"},{"line_number":20,"context_line":"    \u0027capacity_shared\u0027."},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"    4. For adaptive qos policy, remaining valid spec keys are \u0027expected_iops\u0027,"}],"source_content_type":"text/x-yaml","patch_set":18,"id":"4c23683e_32b5347c","line":19,"range":{"start_line":19,"start_character":51,"end_line":19,"end_character":70},"updated":"2026-02-27 14:22:47.000000000","message":"\"min_throughput_iops\" is duplicated, should be \"min_throughput_mbps\"","commit_id":"bf9681297af48adeb1175abb3ca15db704213035"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"6f98055df18f0dd977f281273b3a32bb35c775ca","unresolved":false,"context_lines":[{"line_number":16,"context_line":"    \u0027fixed\u0027 or \u0027adaptive\u0027 must be present in qos-type specs."},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"    3. For fixed qos policy, remaining valid spec keys are \u0027max_throughput_iops\u0027,"},{"line_number":19,"context_line":"    \u0027max_throughput_mbps\u0027, \u0027min_throughput_iops\u0027, \u0027min_throughput_iops\u0027 and"},{"line_number":20,"context_line":"    \u0027capacity_shared\u0027."},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"    4. For adaptive qos policy, remaining valid spec keys are \u0027expected_iops\u0027,"}],"source_content_type":"text/x-yaml","patch_set":18,"id":"9ec19d78_cae407e6","line":19,"range":{"start_line":19,"start_character":51,"end_line":19,"end_character":70},"in_reply_to":"4c23683e_32b5347c","updated":"2026-02-27 14:49:41.000000000","message":"Done","commit_id":"bf9681297af48adeb1175abb3ca15db704213035"},{"author":{"_account_id":18816,"name":"Maurice Escher","display_name":"carthaca","email":"maurice.escher@sap.com","username":"mapocace"},"change_message_id":"2f7334f8f5a206962f6f730f786e3804c47d65e0","unresolved":false,"context_lines":[{"line_number":16,"context_line":"    \u0027fixed\u0027 or \u0027adaptive\u0027 must be present in qos-type specs."},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"    3. For fixed qos policy, remaining valid spec keys are \u0027max_throughput_iops\u0027,"},{"line_number":19,"context_line":"    \u0027max_throughput_mbps\u0027, \u0027min_throughput_iops\u0027, \u0027min_throughput_iops\u0027 and"},{"line_number":20,"context_line":"    \u0027capacity_shared\u0027."},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"    4. For adaptive qos policy, remaining valid spec keys are \u0027expected_iops\u0027,"}],"source_content_type":"text/x-yaml","patch_set":18,"id":"c55233c7_c2453f97","line":19,"range":{"start_line":19,"start_character":51,"end_line":19,"end_character":70},"in_reply_to":"9ec19d78_cae407e6","updated":"2026-02-27 17:50:22.000000000","message":"No, something went wrong now \u0027max_throughput_iops\u0027 is duplicated\n\ntrivial nit","commit_id":"bf9681297af48adeb1175abb3ca15db704213035"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"a8cfbc81cc9b2fe68bf044bddbd5b1e8c6637736","unresolved":false,"context_lines":[{"line_number":16,"context_line":"    \u0027fixed\u0027 or \u0027adaptive\u0027 must be present in qos-type specs."},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"    3. For fixed qos policy, remaining valid spec keys are \u0027max_throughput_iops\u0027,"},{"line_number":19,"context_line":"    \u0027max_throughput_mbps\u0027, \u0027min_throughput_iops\u0027, \u0027min_throughput_iops\u0027 and"},{"line_number":20,"context_line":"    \u0027capacity_shared\u0027."},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"    4. For adaptive qos policy, remaining valid spec keys are \u0027expected_iops\u0027,"}],"source_content_type":"text/x-yaml","patch_set":18,"id":"f41505fb_d82d8afc","line":19,"range":{"start_line":19,"start_character":51,"end_line":19,"end_character":70},"in_reply_to":"c55233c7_c2453f97","updated":"2026-02-27 17:54:01.000000000","message":"fixed this.","commit_id":"bf9681297af48adeb1175abb3ca15db704213035"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"3a892eb362f5c593b6f967783c4fd3c3c307dab8","unresolved":true,"context_lines":[{"line_number":2,"context_line":"upgrade:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    NetApp ONTAP driver is updated to consider fixed and adaptive qos policies"},{"line_number":5,"context_line":"    using qos-type and its specs for \u0027dhss\u003dtrue\u0027. The existing way of creating"},{"line_number":6,"context_line":"    fixed qos policy using share-type extra-specs will remain supported."},{"line_number":7,"context_line":"    However, a share-type will support either share-type extra-specs or"},{"line_number":8,"context_line":"    qos-type specs, but not both."}],"source_content_type":"text/x-yaml","patch_set":20,"id":"2b7cf432_12ffd72d","line":5,"updated":"2026-02-27 18:15:44.000000000","message":"QoS type support is also added for `drv_single_svm.py`` (dhss\u003dfalse). Both drivers set ``qos_type_support \u003d True``.","commit_id":"2aac4ab9a86c6299fa990ea8462d39c43d6dc4cf"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"b39e1bff856d6c2beb925fde7e5dfde26f0163d3","unresolved":false,"context_lines":[{"line_number":2,"context_line":"upgrade:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    NetApp ONTAP driver is updated to consider fixed and adaptive qos policies"},{"line_number":5,"context_line":"    using qos-type and its specs for \u0027dhss\u003dtrue\u0027. The existing way of creating"},{"line_number":6,"context_line":"    fixed qos policy using share-type extra-specs will remain supported."},{"line_number":7,"context_line":"    However, a share-type will support either share-type extra-specs or"},{"line_number":8,"context_line":"    qos-type specs, but not both."}],"source_content_type":"text/x-yaml","patch_set":20,"id":"6c572bcd_1e10982e","line":5,"in_reply_to":"2b7cf432_12ffd72d","updated":"2026-02-27 18:39:41.000000000","message":"Done","commit_id":"2aac4ab9a86c6299fa990ea8462d39c43d6dc4cf"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"6e755e3b449a4df29474cbda1687cc2661e46911","unresolved":true,"context_lines":[{"line_number":9,"context_line":""},{"line_number":10,"context_line":"    To use qos-type specs, admin must follow below steps:"},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"    1. Create qos-type with unique name (maximum length 60)"},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"    2. Create qos-type specs. The specs contain fields needed to define qos"},{"line_number":15,"context_line":"    policy. The spec with key \u0027policy_type\u0027 and valid value i.e. either"},{"line_number":16,"context_line":"    \u0027fixed\u0027 or \u0027adaptive\u0027 must be present in qos-type specs."},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"    3. For fixed qos policy, remaining valid spec keys are \u0027max_throughput_iops\u0027,"},{"line_number":19,"context_line":"    \u0027max_throughput_mbps\u0027, \u0027min_throughput_iops\u0027, \u0027min_throughput_mbps\u0027 and"},{"line_number":20,"context_line":"    \u0027capacity_shared\u0027."},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"    4. For adaptive qos policy, remaining valid spec keys are \u0027expected_iops\u0027,"},{"line_number":23,"context_line":"    \u0027peak_iops\u0027, \u0027absolute_min_iops\u0027, \u0027block_size\u0027, \u0027peak_iops_allocation\u0027,"},{"line_number":24,"context_line":"    \u0027expected_iops_allocation\u0027."},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"    5. In order to create share with qos policy (defined using qos-type specs),"},{"line_number":27,"context_line":"    the qos-type name (from step 1) needs to be added in the share-type"},{"line_number":28,"context_line":"    extra-spec \u0027default_qos_type\u0027. During share creation, respective policy"},{"line_number":29,"context_line":"    with unique policy name will be created on share server (if not already"},{"line_number":30,"context_line":"    present) and applied to share. If share-type extra-spec \u0027default_qos_type\u0027"},{"line_number":31,"context_line":"    is not defined, share will be created without qos policy."},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"    6. If qos-type specs are updated by cloud-admin, the updated values will"},{"line_number":34,"context_line":"    be validated and applied to existing qos policy created from that qos-type"},{"line_number":35,"context_line":"    specs. This will take effect once share is created after qos-type specs"},{"line_number":36,"context_line":"    modification."}],"source_content_type":"text/x-yaml","patch_set":21,"id":"d36e35dc_726391b1","line":36,"range":{"start_line":12,"start_character":0,"end_line":36,"end_character":17},"updated":"2026-02-27 18:45:54.000000000","message":"please drop the numbered bullets here, and just use \"-\" for consistency","commit_id":"cb2911c3b5712be3768caa84c067b2ed98931ef2"},{"author":{"_account_id":32919,"name":"kiran pawar","display_name":"Kiran Pawar","email":"kinpaa@gmail.com","username":"kpdev"},"change_message_id":"fb4836ce1292002bb73d96c602fc684c3d8df267","unresolved":false,"context_lines":[{"line_number":9,"context_line":""},{"line_number":10,"context_line":"    To use qos-type specs, admin must follow below steps:"},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"    1. Create qos-type with unique name (maximum length 60)"},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"    2. Create qos-type specs. The specs contain fields needed to define qos"},{"line_number":15,"context_line":"    policy. The spec with key \u0027policy_type\u0027 and valid value i.e. either"},{"line_number":16,"context_line":"    \u0027fixed\u0027 or \u0027adaptive\u0027 must be present in qos-type specs."},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"    3. For fixed qos policy, remaining valid spec keys are \u0027max_throughput_iops\u0027,"},{"line_number":19,"context_line":"    \u0027max_throughput_mbps\u0027, \u0027min_throughput_iops\u0027, \u0027min_throughput_mbps\u0027 and"},{"line_number":20,"context_line":"    \u0027capacity_shared\u0027."},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"    4. For adaptive qos policy, remaining valid spec keys are \u0027expected_iops\u0027,"},{"line_number":23,"context_line":"    \u0027peak_iops\u0027, \u0027absolute_min_iops\u0027, \u0027block_size\u0027, \u0027peak_iops_allocation\u0027,"},{"line_number":24,"context_line":"    \u0027expected_iops_allocation\u0027."},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"    5. In order to create share with qos policy (defined using qos-type specs),"},{"line_number":27,"context_line":"    the qos-type name (from step 1) needs to be added in the share-type"},{"line_number":28,"context_line":"    extra-spec \u0027default_qos_type\u0027. During share creation, respective policy"},{"line_number":29,"context_line":"    with unique policy name will be created on share server (if not already"},{"line_number":30,"context_line":"    present) and applied to share. If share-type extra-spec \u0027default_qos_type\u0027"},{"line_number":31,"context_line":"    is not defined, share will be created without qos policy."},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"    6. If qos-type specs are updated by cloud-admin, the updated values will"},{"line_number":34,"context_line":"    be validated and applied to existing qos policy created from that qos-type"},{"line_number":35,"context_line":"    specs. This will take effect once share is created after qos-type specs"},{"line_number":36,"context_line":"    modification."}],"source_content_type":"text/x-yaml","patch_set":21,"id":"0043f27a_4b9fdf90","line":36,"range":{"start_line":12,"start_character":0,"end_line":36,"end_character":17},"in_reply_to":"d36e35dc_726391b1","updated":"2026-02-27 18:50:05.000000000","message":"Done","commit_id":"cb2911c3b5712be3768caa84c067b2ed98931ef2"}]}
