)]}'
{"/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":"60a3ef2770233664b7dc1819af50284f2010a13e","unresolved":true,"context_lines":[{"line_number":4,"context_line":"Commit:     agireesh \u003cgawasthi2010@gmail.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2025-11-04 13:29:17 -0500"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"NetApp – Allow configuration of polling intervals for performance and"},{"line_number":8,"context_line":"deduplication data, and implement caching of counter information."},{"line_number":9,"context_line":""},{"line_number":10,"context_line":"Implemented logic to update the performance and deduplication statistics"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":9,"id":"1cc176a8_e94a21df","line":7,"updated":"2025-11-05 07:43:36.000000000","message":"Allow configuration of polling intervals for performance and dedup data as part of get_volume_stats, and implement local caching of performance object counter zapi.","commit_id":"18288763b84b2e9726ed6f150b26f2d19594a37b"},{"author":{"_account_id":36180,"name":"Gireesh Awasthi","display_name":"Gireesh","email":"gawasthi2010@gmail.com","username":"agireesh","status":"NetApp"},"change_message_id":"e9e2fb45a790c4bb1b2270a5d7b66c8340648b2b","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     agireesh \u003cgawasthi2010@gmail.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2025-11-04 13:29:17 -0500"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"NetApp – Allow configuration of polling intervals for performance and"},{"line_number":8,"context_line":"deduplication data, and implement caching of counter information."},{"line_number":9,"context_line":""},{"line_number":10,"context_line":"Implemented logic to update the performance and deduplication statistics"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":9,"id":"d616efe5_27b84694","line":7,"in_reply_to":"1cc176a8_e94a21df","updated":"2025-11-05 18:22:37.000000000","message":"Done","commit_id":"18288763b84b2e9726ed6f150b26f2d19594a37b"},{"author":{"_account_id":38059,"name":"Anoop Kumar Shukla","display_name":"Anoop Shukla","email":"anoop.shukla@netapp.com","username":"anoop2","status":"NetApp"},"change_message_id":"35861d905c3e6a3b82457b890b381cb69d229545","unresolved":true,"context_lines":[{"line_number":8,"context_line":"deduplication data, and implement caching of counter information."},{"line_number":9,"context_line":""},{"line_number":10,"context_line":"Implemented logic to update the performance and deduplication statistics"},{"line_number":11,"context_line":"of backend pools at configurable intervals. Performance counter"},{"line_number":12,"context_line":"information is cached to reduce the number of backend calls. Introduced"},{"line_number":13,"context_line":"two new options for the NetApp driver:"},{"line_number":14,"context_line":"netapp_performance_cache_expiry_duration and"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":10,"id":"ecba77b7_56653232","line":11,"updated":"2025-11-05 07:53:17.000000000","message":"Performance Object list information is cached.","commit_id":"5aa419fe7c16ac0d9b4c07040df12072c4547835"},{"author":{"_account_id":36180,"name":"Gireesh Awasthi","display_name":"Gireesh","email":"gawasthi2010@gmail.com","username":"agireesh","status":"NetApp"},"change_message_id":"e9e2fb45a790c4bb1b2270a5d7b66c8340648b2b","unresolved":false,"context_lines":[{"line_number":8,"context_line":"deduplication data, and implement caching of counter information."},{"line_number":9,"context_line":""},{"line_number":10,"context_line":"Implemented logic to update the performance and deduplication statistics"},{"line_number":11,"context_line":"of backend pools at configurable intervals. Performance counter"},{"line_number":12,"context_line":"information is cached to reduce the number of backend calls. Introduced"},{"line_number":13,"context_line":"two new options for the NetApp driver:"},{"line_number":14,"context_line":"netapp_performance_cache_expiry_duration and"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":10,"id":"a5c5c52c_5a1559b6","line":11,"in_reply_to":"ecba77b7_56653232","updated":"2025-11-05 18:22:37.000000000","message":"Done","commit_id":"5aa419fe7c16ac0d9b4c07040df12072c4547835"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"dc0cd70db545f79fcac89c750f2c499523be2470","unresolved":true,"context_lines":[{"line_number":4,"context_line":"Commit:     agireesh \u003cgawasthi2010@gmail.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2025-11-05 13:10:48 -0500"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"NetApp – Allow configuration of polling intervals for performance and"},{"line_number":8,"context_line":"deduplication data as part of get_volume_stats, and implement local"},{"line_number":9,"context_line":"caching of performance object counter ZAPI."},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"Implemented logic to update the performance and deduplication statistics"},{"line_number":12,"context_line":"of backend pools at configurable intervals. Performance Object list"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":11,"id":"c171e6ff_889464c5","line":9,"range":{"start_line":7,"start_character":0,"end_line":9,"end_character":43},"updated":"2025-11-07 23:36:24.000000000","message":"This should be a single 50 char line, something like\n\n```\nNetApp: polling interval config for perf data\n```\nSee https://wiki.openstack.org/wiki/GitCommitMessages#Summary_of_Git_commit_message_structure","commit_id":"337a070f4f21542e71435d23d72e0f6a3d4401c5"},{"author":{"_account_id":36180,"name":"Gireesh Awasthi","display_name":"Gireesh","email":"gawasthi2010@gmail.com","username":"agireesh","status":"NetApp"},"change_message_id":"798034ad869b59ed6acd5b962601ed9723420a58","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     agireesh \u003cgawasthi2010@gmail.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2025-11-05 13:10:48 -0500"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"NetApp – Allow configuration of polling intervals for performance and"},{"line_number":8,"context_line":"deduplication data as part of get_volume_stats, and implement local"},{"line_number":9,"context_line":"caching of performance object counter ZAPI."},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"Implemented logic to update the performance and deduplication statistics"},{"line_number":12,"context_line":"of backend pools at configurable intervals. Performance Object list"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":11,"id":"c5e94800_8e563aba","line":9,"range":{"start_line":7,"start_character":0,"end_line":9,"end_character":43},"in_reply_to":"c171e6ff_889464c5","updated":"2025-11-10 08:53:58.000000000","message":"Changed it to below \n\nNetApp – Optimizes the efficiency of pool statistics updates.","commit_id":"337a070f4f21542e71435d23d72e0f6a3d4401c5"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"dc0cd70db545f79fcac89c750f2c499523be2470","unresolved":true,"context_lines":[{"line_number":17,"context_line":"These options control the frequency of performance and deduplication"},{"line_number":18,"context_line":"data retrieval from ONTAP."},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"These options are need to fine-tune the frequency of querying"},{"line_number":21,"context_line":"performance and deduplication metrics, as these queries occur both"},{"line_number":22,"context_line":"during the delete volume workflow and in the update_volume_stats"},{"line_number":23,"context_line":"method, which is triggered by the periodic interval task. Users can"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":11,"id":"790935ef_6beeb6d1","line":20,"range":{"start_line":20,"start_character":18,"end_line":20,"end_character":22},"updated":"2025-11-07 23:36:24.000000000","message":"needed","commit_id":"337a070f4f21542e71435d23d72e0f6a3d4401c5"},{"author":{"_account_id":36180,"name":"Gireesh Awasthi","display_name":"Gireesh","email":"gawasthi2010@gmail.com","username":"agireesh","status":"NetApp"},"change_message_id":"798034ad869b59ed6acd5b962601ed9723420a58","unresolved":false,"context_lines":[{"line_number":17,"context_line":"These options control the frequency of performance and deduplication"},{"line_number":18,"context_line":"data retrieval from ONTAP."},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"These options are need to fine-tune the frequency of querying"},{"line_number":21,"context_line":"performance and deduplication metrics, as these queries occur both"},{"line_number":22,"context_line":"during the delete volume workflow and in the update_volume_stats"},{"line_number":23,"context_line":"method, which is triggered by the periodic interval task. Users can"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":11,"id":"59723988_567cb1e3","line":20,"range":{"start_line":20,"start_character":18,"end_line":20,"end_character":22},"in_reply_to":"790935ef_6beeb6d1","updated":"2025-11-10 08:53:58.000000000","message":"Done","commit_id":"337a070f4f21542e71435d23d72e0f6a3d4401c5"},{"author":{"_account_id":21129,"name":"Alan Bishop","email":"abishopsweng@gmail.com","username":"ASBishop","status":"ex Red Hat"},"change_message_id":"2b917935dd7592499c19584dfd3f17c1ac454011","unresolved":true,"context_lines":[{"line_number":7,"context_line":"NetApp – Optimizes the efficiency of pool statistics updates."},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Implemented logic to update the performance and deduplication statistics"},{"line_number":10,"context_line":"of backend pools at configurable intervals. Performance Object list"},{"line_number":11,"context_line":"information is cached to reduce the number of backend calls. Introduced"},{"line_number":12,"context_line":"two new options for the NetApp driver:"},{"line_number":13,"context_line":"netapp_performance_cache_expiry_duration and"},{"line_number":14,"context_line":"netapp_dedupe_cache_expiry_duration."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":16,"id":"f00ef9ff_a025220d","line":11,"range":{"start_line":10,"start_character":44,"end_line":11,"end_character":60},"updated":"2025-11-10 20:46:40.000000000","message":"I think this sentence is referring to the code changes in perf_base.py that uses a fixed 24hr refresh interval. That\u0027s fine, but you might want to relocate this sentence so it isn\u0027t in the middle of the text that\u0027s describing the two new configurable refresh intervals. \n\nIt\u0027s also hard for me to understand the difference between \"performance and deduplication statistics\" and \"performance object list information.\" Apparently the former require configurable refresh intervals, but the latter can use a fixed 24hr interval?","commit_id":"2cd97edd2a3ea991138e5d16a8496f3594cec800"},{"author":{"_account_id":36180,"name":"Gireesh Awasthi","display_name":"Gireesh","email":"gawasthi2010@gmail.com","username":"agireesh","status":"NetApp"},"change_message_id":"1ab39a28af76fe90035da597a8c3ac9dca4f07dc","unresolved":false,"context_lines":[{"line_number":7,"context_line":"NetApp – Optimizes the efficiency of pool statistics updates."},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Implemented logic to update the performance and deduplication statistics"},{"line_number":10,"context_line":"of backend pools at configurable intervals. Performance Object list"},{"line_number":11,"context_line":"information is cached to reduce the number of backend calls. Introduced"},{"line_number":12,"context_line":"two new options for the NetApp driver:"},{"line_number":13,"context_line":"netapp_performance_cache_expiry_duration and"},{"line_number":14,"context_line":"netapp_dedupe_cache_expiry_duration."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":16,"id":"382d615d_389f3199","line":11,"range":{"start_line":10,"start_character":44,"end_line":11,"end_character":60},"in_reply_to":"f00ef9ff_a025220d","updated":"2025-11-11 19:07:23.000000000","message":"yes, this is referring to the code change in perf_base.py, Below line added at the end \n\nPerformance statistics updates are further optimized by caching the performance object list information, which is refreshed every 24 hours, thereby reducing the number of backend calls.\n\n\nThere are two key points to note:\n\n1. We cache the perf and dedupe data for a configurable duration.\n2. For further optimization for perf stats update, we cache the data returned by the get_performance_counter_info ZAPI, since this data is generally static. The get_performance_counter_info ZAPI only returns different values when the customer performs an ONTAP upgrade. To handle this, we have implemented a fixed refresh interval of 24 hours to update the cached ZAPI data.","commit_id":"2cd97edd2a3ea991138e5d16a8496f3594cec800"}],"/PATCHSET_LEVEL":[{"author":{"_account_id":36171,"name":"jayaanand borra","display_name":"jayaanand borra","email":"jayaanand.borra@netapp.com","username":"jayaanan","status":"netapp"},"change_message_id":"ca6882db9baa3252f7074aadbf794d1d4cecd837","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"428d6bd6_8a55034e","updated":"2025-10-16 04:23:35.000000000","message":"This change can slow down _update_volume_stats() when performance cache updates.\nUpdates happen synchronously with stats collection. Decouple performance cache update from _update_volume_stats and add it to _add_looping_tasks and set timer based on configuration. Make sure to update performance stats at time of do_setup and subsequent cache update can happen periodically.","commit_id":"7362354386f5e73def7e63a976b73b1177e4fd7e"},{"author":{"_account_id":36180,"name":"Gireesh Awasthi","display_name":"Gireesh","email":"gawasthi2010@gmail.com","username":"agireesh","status":"NetApp"},"change_message_id":"ee621fcdbe9da3f5bd712ea5195427cece03f0ec","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"f274d107_0a1eaf20","updated":"2025-10-16 04:06:14.000000000","message":"recheck","commit_id":"7362354386f5e73def7e63a976b73b1177e4fd7e"},{"author":{"_account_id":38059,"name":"Anoop Kumar Shukla","display_name":"Anoop Shukla","email":"anoop.shukla@netapp.com","username":"anoop2","status":"NetApp"},"change_message_id":"35861d905c3e6a3b82457b890b381cb69d229545","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":10,"id":"8546505f_aa549df9","updated":"2025-11-05 07:53:17.000000000","message":"Please take a look at the comments.","commit_id":"5aa419fe7c16ac0d9b4c07040df12072c4547835"},{"author":{"_account_id":38059,"name":"Anoop Kumar Shukla","display_name":"Anoop Shukla","email":"anoop.shukla@netapp.com","username":"anoop2","status":"NetApp"},"change_message_id":"60a3ef2770233664b7dc1819af50284f2010a13e","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":10,"id":"979c8797_967071f5","updated":"2025-11-05 07:43:36.000000000","message":"Please take a look at the review comments below.","commit_id":"5aa419fe7c16ac0d9b4c07040df12072c4547835"},{"author":{"_account_id":36180,"name":"Gireesh Awasthi","display_name":"Gireesh","email":"gawasthi2010@gmail.com","username":"agireesh","status":"NetApp"},"change_message_id":"e9e2fb45a790c4bb1b2270a5d7b66c8340648b2b","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":10,"id":"dfb8aa05_3d21570f","updated":"2025-11-05 18:22:37.000000000","message":"Thanks Anoop for your review comments, I have incorporated most of them, please review it again and let me know.","commit_id":"5aa419fe7c16ac0d9b4c07040df12072c4547835"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"dc0cd70db545f79fcac89c750f2c499523be2470","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":11,"id":"963b6e94_60e152a5","updated":"2025-11-07 23:36:24.000000000","message":"Code and tests look fine; see inline for comments about wording in the help text, release note, and commit message.","commit_id":"337a070f4f21542e71435d23d72e0f6a3d4401c5"},{"author":{"_account_id":36180,"name":"Gireesh Awasthi","display_name":"Gireesh","email":"gawasthi2010@gmail.com","username":"agireesh","status":"NetApp"},"change_message_id":"5925e0fc1d17f1cd944483abb116e84ae7a7884f","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":11,"id":"fe7c7532_4d811e77","updated":"2025-11-06 04:04:49.000000000","message":"recheck","commit_id":"337a070f4f21542e71435d23d72e0f6a3d4401c5"},{"author":{"_account_id":35676,"name":"Max","email":"max.lamprecht@digits.schwarz","username":"lamprechtm"},"change_message_id":"385daee3ece395bfc77719babbf883653dfcbea0","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":12,"id":"5e469049_3d17555f","updated":"2025-11-10 10:07:21.000000000","message":"Hi @gawasthi2010@gmail.com,\n\nwould it also make sense to have an option to completly disable these stats. In our environment we observed the same problem and patched/removed the performance stats completly as we/our scheduler does not filter on these attributes anyway.","commit_id":"b3127d0d3eee1ccbde47cc5fa51fa7139a5ec230"},{"author":{"_account_id":36180,"name":"Gireesh Awasthi","display_name":"Gireesh","email":"gawasthi2010@gmail.com","username":"agireesh","status":"NetApp"},"change_message_id":"798034ad869b59ed6acd5b962601ed9723420a58","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":12,"id":"ee9d9392_d35435c2","updated":"2025-11-10 08:53:58.000000000","message":"Thanks @rosmaita.fossdev@gmail.com, for your review comments. I incorporated all of them, if still you have more comments, please let me know.","commit_id":"b3127d0d3eee1ccbde47cc5fa51fa7139a5ec230"},{"author":{"_account_id":36180,"name":"Gireesh Awasthi","display_name":"Gireesh","email":"gawasthi2010@gmail.com","username":"agireesh","status":"NetApp"},"change_message_id":"b1c8b382bde5456321ba48038d32371c4db9d5df","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":12,"id":"7f3bc78f_af12d1d9","in_reply_to":"5e469049_3d17555f","updated":"2025-11-10 11:24:29.000000000","message":"It is not advisable to disable these statistics completely. However, if a customer wants to effectively disable them in their environment, they can set a very large value for these options so that the stats are either never fetched or fetched only after a long interval. This allows customers to configure the settings according to their specific requirements.","commit_id":"b3127d0d3eee1ccbde47cc5fa51fa7139a5ec230"},{"author":{"_account_id":11224,"name":"Swami Reddy","email":"swamireddy@gmail.com","username":"swamireddy"},"change_message_id":"3d21145f3f61bbeb6039f97cc79b2e43ed842c0b","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":16,"id":"52df3ffa_451602e3","updated":"2025-11-10 17:52:23.000000000","message":"looks ok.","commit_id":"2cd97edd2a3ea991138e5d16a8496f3594cec800"},{"author":{"_account_id":36180,"name":"Gireesh Awasthi","display_name":"Gireesh","email":"gawasthi2010@gmail.com","username":"agireesh","status":"NetApp"},"change_message_id":"1ab39a28af76fe90035da597a8c3ac9dca4f07dc","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":17,"id":"ab32909b_84afc0b2","updated":"2025-11-11 19:07:23.000000000","message":"Thanks @abishop@redhat.com for your review comments, I have incorporated the most of the review comments. Please let me know if you have any further comments.","commit_id":"0fc09f968763196a0e949583e56ae625aac0db66"},{"author":{"_account_id":38059,"name":"Anoop Kumar Shukla","display_name":"Anoop Shukla","email":"anoop.shukla@netapp.com","username":"anoop2","status":"NetApp"},"change_message_id":"614b0217b33136bd1f360ae2176b2c204089058f","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":18,"id":"11e96aab_482a4d96","updated":"2025-11-12 10:17:18.000000000","message":"LGTM","commit_id":"648c88882057099acf67391d9aaad2559c8b3ef5"},{"author":{"_account_id":36180,"name":"Gireesh Awasthi","display_name":"Gireesh","email":"gawasthi2010@gmail.com","username":"agireesh","status":"NetApp"},"change_message_id":"4da4ca7641c1b81b79735f4880102298cb4b37b2","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":18,"id":"dd717289_a833d0ba","updated":"2025-11-12 05:29:18.000000000","message":"Thanks @abishop@redhat.com for your review comment, I incorporated those also. could you please relook again.","commit_id":"648c88882057099acf67391d9aaad2559c8b3ef5"},{"author":{"_account_id":11224,"name":"Swami Reddy","email":"swamireddy@gmail.com","username":"swamireddy"},"change_message_id":"58d679eebf7bfc517dc9d6f25f6947fa210eae71","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":19,"id":"77c6a207_9546aa74","updated":"2025-11-17 13:08:46.000000000","message":"looks good","commit_id":"9e16567bd63987462ae031232cac475e713ba115"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"95675cfa2dc78a553c40b9316a535225e7b5a14d","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":19,"id":"ae2161ed_0492b36c","updated":"2025-11-14 17:12:52.000000000","message":"my main concern is regarding the default values since that is what most deployments will use. I\u0027m inclined to setting them to 60 seconds as we already have our default stats polling update calls every 60 seconds.","commit_id":"9e16567bd63987462ae031232cac475e713ba115"},{"author":{"_account_id":36180,"name":"Gireesh Awasthi","display_name":"Gireesh","email":"gawasthi2010@gmail.com","username":"agireesh","status":"NetApp"},"change_message_id":"986415387a49ee73e579099e2472e948351df4df","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":20,"id":"7f5bcb61_20901da0","updated":"2025-11-16 14:37:15.000000000","message":"Thanks @rajatdhasmana@gmail.com, for your review comments. I incorporated all of your comments. Please review the patch again and let me know if you have any further comments.","commit_id":"65a025f691161515a9753f6e0395a7ab66b143d5"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"212dc42a151817595187243d1ac79d6e25a8d74e","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":21,"id":"4411525d_a4b59afb","updated":"2025-11-17 14:43:35.000000000","message":"My wording concerns have been addressed, and Rajat\u0027s questions about the default values were answered, and the third party CI is passing, so LGTM.","commit_id":"77730a35a245c22a1c145174e8b8ad31c6d2dbb2"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"eebfa43f0fc4c8945ae0e13c6fb587570c063e09","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":21,"id":"a4896a9f_16f02c82","updated":"2025-11-17 10:28:29.000000000","message":"NetApp iSCSI CI passing, NVMe-TCP is NV and FC is not reporting but looks like iSCSI is good enough for this patch. LGTM.","commit_id":"77730a35a245c22a1c145174e8b8ad31c6d2dbb2"},{"author":{"_account_id":38373,"name":"Manideep","display_name":"Manideep","email":"manideep.openstack@gmail.com","username":"manideepn","status":"NetApp"},"change_message_id":"f1e0caa5255948a441d36660e93703ac0d9a1e71","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":21,"id":"8d4348ad_796c24e7","updated":"2025-11-17 08:55:58.000000000","message":"Run-NetApp CI","commit_id":"77730a35a245c22a1c145174e8b8ad31c6d2dbb2"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"79fababd570ea7b8f73e748b708bce87cd7ec88e","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":21,"id":"749dab5a_7f635ea6","updated":"2025-11-17 07:41:14.000000000","message":"Thanks Gireesh for addressing my comments. LGTM. However, I don\u0027t see any run of the NetApp CI on this patch.","commit_id":"77730a35a245c22a1c145174e8b8ad31c6d2dbb2"},{"author":{"_account_id":36180,"name":"Gireesh Awasthi","display_name":"Gireesh","email":"gawasthi2010@gmail.com","username":"agireesh","status":"NetApp"},"change_message_id":"54efa5360180aed3e7c7d1a95090c0e0db4b30dc","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":21,"id":"ef99a220_dbb46aba","updated":"2025-11-17 04:01:31.000000000","message":"recheck","commit_id":"77730a35a245c22a1c145174e8b8ad31c6d2dbb2"}],"cinder/volume/drivers/netapp/dataontap/block_cmode.py":[{"author":{"_account_id":36171,"name":"jayaanand borra","display_name":"jayaanand borra","email":"jayaanand.borra@netapp.com","username":"jayaanan","status":"netapp"},"change_message_id":"ca6882db9baa3252f7074aadbf794d1d4cecd837","unresolved":true,"context_lines":[{"line_number":378,"context_line":"        if (self.using_cluster_credentials"},{"line_number":379,"context_line":"                and not self.configuration.netapp_disaggregated_platform):"},{"line_number":380,"context_line":"            # Get up-to-date node utilization metrics just once"},{"line_number":381,"context_line":"            if self.last_perf_update is None:"},{"line_number":382,"context_line":"                self.perf_library.update_performance_cache(ssc)"},{"line_number":383,"context_line":"                self.last_perf_update \u003d timeutils.utcnow().timestamp()"},{"line_number":384,"context_line":"            elif ((timeutils.utcnow().timestamp() - self.last_perf_update)"}],"source_content_type":"text/x-python","patch_set":1,"id":"8b36a2fd_a2b22db4","line":381,"updated":"2025-10-16 04:23:35.000000000","message":"This change can slow down _update_volume_stats() when performance cache updates.\nUpdates happen synchronously with stats collection. Decouple performance cache update from _update_volume_stats and add it to _add_looping_tasks and set timer based on configuration. Make sure to update performance stats at time of do_setup and subsequent cache update can happen periodically.","commit_id":"7362354386f5e73def7e63a976b73b1177e4fd7e"},{"author":{"_account_id":36180,"name":"Gireesh Awasthi","display_name":"Gireesh","email":"gawasthi2010@gmail.com","username":"agireesh","status":"NetApp"},"change_message_id":"c4b17d300a5fb19d3d8e6338fe1c02ac4efa35e1","unresolved":false,"context_lines":[{"line_number":378,"context_line":"        if (self.using_cluster_credentials"},{"line_number":379,"context_line":"                and not self.configuration.netapp_disaggregated_platform):"},{"line_number":380,"context_line":"            # Get up-to-date node utilization metrics just once"},{"line_number":381,"context_line":"            if self.last_perf_update is None:"},{"line_number":382,"context_line":"                self.perf_library.update_performance_cache(ssc)"},{"line_number":383,"context_line":"                self.last_perf_update \u003d timeutils.utcnow().timestamp()"},{"line_number":384,"context_line":"            elif ((timeutils.utcnow().timestamp() - self.last_perf_update)"}],"source_content_type":"text/x-python","patch_set":1,"id":"bafc509d_47f3f850","line":381,"in_reply_to":"8b36a2fd_a2b22db4","updated":"2025-11-02 18:00:25.000000000","message":"Added this logic but then then I again reverted is as we decide to keep the older logic as it is simple and community also agree on this.","commit_id":"7362354386f5e73def7e63a976b73b1177e4fd7e"},{"author":{"_account_id":21129,"name":"Alan Bishop","email":"abishopsweng@gmail.com","username":"ASBishop","status":"ex Red Hat"},"change_message_id":"a300f19999e09b57d4a8bcc7a8385fae41e1d497","unresolved":true,"context_lines":[{"line_number":85,"context_line":"        self.replication_enabled \u003d ("},{"line_number":86,"context_line":"            True if self.get_replication_backend_names("},{"line_number":87,"context_line":"                self.configuration) else False)"},{"line_number":88,"context_line":"        self.last_perf_update \u003d None"},{"line_number":89,"context_line":""},{"line_number":90,"context_line":"    def do_setup(self, context):"},{"line_number":91,"context_line":"        super(NetAppBlockStorageCmodeLibrary, self).do_setup(context)"}],"source_content_type":"text/x-python","patch_set":3,"id":"7913da95_8ae5faa7","line":88,"updated":"2025-10-22 20:28:38.000000000","message":"I think the logic you added below would be simplified if you initialize this to zero (0) rather than None.","commit_id":"2029afc78f9664b38aa348b272db963e65821c8b"},{"author":{"_account_id":36180,"name":"Gireesh Awasthi","display_name":"Gireesh","email":"gawasthi2010@gmail.com","username":"agireesh","status":"NetApp"},"change_message_id":"c4b17d300a5fb19d3d8e6338fe1c02ac4efa35e1","unresolved":false,"context_lines":[{"line_number":85,"context_line":"        self.replication_enabled \u003d ("},{"line_number":86,"context_line":"            True if self.get_replication_backend_names("},{"line_number":87,"context_line":"                self.configuration) else False)"},{"line_number":88,"context_line":"        self.last_perf_update \u003d None"},{"line_number":89,"context_line":""},{"line_number":90,"context_line":"    def do_setup(self, context):"},{"line_number":91,"context_line":"        super(NetAppBlockStorageCmodeLibrary, self).do_setup(context)"}],"source_content_type":"text/x-python","patch_set":3,"id":"f60ae401_4b005945","line":88,"in_reply_to":"7913da95_8ae5faa7","updated":"2025-11-02 18:00:25.000000000","message":"Done","commit_id":"2029afc78f9664b38aa348b272db963e65821c8b"},{"author":{"_account_id":21129,"name":"Alan Bishop","email":"abishopsweng@gmail.com","username":"ASBishop","status":"ex Red Hat"},"change_message_id":"a300f19999e09b57d4a8bcc7a8385fae41e1d497","unresolved":true,"context_lines":[{"line_number":377,"context_line":"        # TODO(jayaanan): Add support for performance metrics for ASA r2"},{"line_number":378,"context_line":"        if (self.using_cluster_credentials"},{"line_number":379,"context_line":"                and not self.configuration.netapp_disaggregated_platform):"},{"line_number":380,"context_line":"            # Get up-to-date node utilization metrics just once"},{"line_number":381,"context_line":"            if self.last_perf_update is None:"},{"line_number":382,"context_line":"                self.perf_library.update_performance_cache(ssc)"},{"line_number":383,"context_line":"                self.last_perf_update \u003d timeutils.utcnow().timestamp()"}],"source_content_type":"text/x-python","patch_set":3,"id":"ccb28a1f_fddbb6d8","line":380,"updated":"2025-10-22 20:28:38.000000000","message":"I think this comment could use an update. I\u0027m also unsure why it says \"just once\".","commit_id":"2029afc78f9664b38aa348b272db963e65821c8b"},{"author":{"_account_id":36180,"name":"Gireesh Awasthi","display_name":"Gireesh","email":"gawasthi2010@gmail.com","username":"agireesh","status":"NetApp"},"change_message_id":"c4b17d300a5fb19d3d8e6338fe1c02ac4efa35e1","unresolved":false,"context_lines":[{"line_number":377,"context_line":"        # TODO(jayaanan): Add support for performance metrics for ASA r2"},{"line_number":378,"context_line":"        if (self.using_cluster_credentials"},{"line_number":379,"context_line":"                and not self.configuration.netapp_disaggregated_platform):"},{"line_number":380,"context_line":"            # Get up-to-date node utilization metrics just once"},{"line_number":381,"context_line":"            if self.last_perf_update is None:"},{"line_number":382,"context_line":"                self.perf_library.update_performance_cache(ssc)"},{"line_number":383,"context_line":"                self.last_perf_update \u003d timeutils.utcnow().timestamp()"}],"source_content_type":"text/x-python","patch_set":3,"id":"c2fc8296_51434104","line":380,"in_reply_to":"ccb28a1f_fddbb6d8","updated":"2025-11-02 18:00:25.000000000","message":"When first time update is done I wanted to fetch the performance data from cluster.","commit_id":"2029afc78f9664b38aa348b272db963e65821c8b"},{"author":{"_account_id":21129,"name":"Alan Bishop","email":"abishopsweng@gmail.com","username":"ASBishop","status":"ex Red Hat"},"change_message_id":"a300f19999e09b57d4a8bcc7a8385fae41e1d497","unresolved":true,"context_lines":[{"line_number":378,"context_line":"        if (self.using_cluster_credentials"},{"line_number":379,"context_line":"                and not self.configuration.netapp_disaggregated_platform):"},{"line_number":380,"context_line":"            # Get up-to-date node utilization metrics just once"},{"line_number":381,"context_line":"            if self.last_perf_update is None:"},{"line_number":382,"context_line":"                self.perf_library.update_performance_cache(ssc)"},{"line_number":383,"context_line":"                self.last_perf_update \u003d timeutils.utcnow().timestamp()"},{"line_number":384,"context_line":"            elif ((timeutils.utcnow().timestamp() - self.last_perf_update)"}],"source_content_type":"text/x-python","patch_set":3,"id":"adb0e713_22fe36d9","line":381,"updated":"2025-10-22 20:28:38.000000000","message":"You don\u0027t need both conditionals if you initialized last_perf_update to 0!\n\nI also prefer avoiding multiple near-simultaneous calls the fetch the current time, so maybe consider this:\n\n            now \u003d timeutils.utcnow().timestamp()\n            if ((now - self.last_perf_update)\n                 \u003e self.configuration.netapp_perf_pool_interval):\n                LOG.debug(\"Updating perf cache for cluster.\")\n                self.perf_library.update_performance_cache(ssc)\n                self.last_perf_update \u003d now\n                LOG.debug(\"Successfully updated perf cache for cluster.\")","commit_id":"2029afc78f9664b38aa348b272db963e65821c8b"},{"author":{"_account_id":36180,"name":"Gireesh Awasthi","display_name":"Gireesh","email":"gawasthi2010@gmail.com","username":"agireesh","status":"NetApp"},"change_message_id":"c4b17d300a5fb19d3d8e6338fe1c02ac4efa35e1","unresolved":false,"context_lines":[{"line_number":378,"context_line":"        if (self.using_cluster_credentials"},{"line_number":379,"context_line":"                and not self.configuration.netapp_disaggregated_platform):"},{"line_number":380,"context_line":"            # Get up-to-date node utilization metrics just once"},{"line_number":381,"context_line":"            if self.last_perf_update is None:"},{"line_number":382,"context_line":"                self.perf_library.update_performance_cache(ssc)"},{"line_number":383,"context_line":"                self.last_perf_update \u003d timeutils.utcnow().timestamp()"},{"line_number":384,"context_line":"            elif ((timeutils.utcnow().timestamp() - self.last_perf_update)"}],"source_content_type":"text/x-python","patch_set":3,"id":"5fded41c_0c14a3a2","line":381,"in_reply_to":"adb0e713_22fe36d9","updated":"2025-11-02 18:00:25.000000000","message":"thanks for this optimize code, this is looking better, I updated my code with this.","commit_id":"2029afc78f9664b38aa348b272db963e65821c8b"},{"author":{"_account_id":38059,"name":"Anoop Kumar Shukla","display_name":"Anoop Shukla","email":"anoop.shukla@netapp.com","username":"anoop2","status":"NetApp"},"change_message_id":"35861d905c3e6a3b82457b890b381cb69d229545","unresolved":true,"context_lines":[{"line_number":85,"context_line":"        self.replication_enabled \u003d ("},{"line_number":86,"context_line":"            True if self.get_replication_backend_names("},{"line_number":87,"context_line":"                self.configuration) else False)"},{"line_number":88,"context_line":"        self.last_perf_update \u003d 0"},{"line_number":89,"context_line":"        self.last_dedupe_update \u003d 0"},{"line_number":90,"context_line":""},{"line_number":91,"context_line":"    def do_setup(self, context):"}],"source_content_type":"text/x-python","patch_set":10,"id":"28f1a0f8_3242f518","line":88,"updated":"2025-11-05 07:53:17.000000000","message":"Lets add comments on what this part of the initialization does and why we need to reinitialize","commit_id":"5aa419fe7c16ac0d9b4c07040df12072c4547835"},{"author":{"_account_id":36180,"name":"Gireesh Awasthi","display_name":"Gireesh","email":"gawasthi2010@gmail.com","username":"agireesh","status":"NetApp"},"change_message_id":"e9e2fb45a790c4bb1b2270a5d7b66c8340648b2b","unresolved":false,"context_lines":[{"line_number":85,"context_line":"        self.replication_enabled \u003d ("},{"line_number":86,"context_line":"            True if self.get_replication_backend_names("},{"line_number":87,"context_line":"                self.configuration) else False)"},{"line_number":88,"context_line":"        self.last_perf_update \u003d 0"},{"line_number":89,"context_line":"        self.last_dedupe_update \u003d 0"},{"line_number":90,"context_line":""},{"line_number":91,"context_line":"    def do_setup(self, context):"}],"source_content_type":"text/x-python","patch_set":10,"id":"190ea01c_aebd9df1","line":88,"in_reply_to":"28f1a0f8_3242f518","updated":"2025-11-05 18:22:37.000000000","message":"Done, I have added the comments in _get_pool_stats section where logic is implemented.","commit_id":"5aa419fe7c16ac0d9b4c07040df12072c4547835"},{"author":{"_account_id":38059,"name":"Anoop Kumar Shukla","display_name":"Anoop Shukla","email":"anoop.shukla@netapp.com","username":"anoop2","status":"NetApp"},"change_message_id":"35861d905c3e6a3b82457b890b381cb69d229545","unresolved":true,"context_lines":[{"line_number":381,"context_line":"            now \u003d timeutils.utcnow().timestamp()"},{"line_number":382,"context_line":"            expiry \u003d ("},{"line_number":383,"context_line":"                self.configuration.netapp_performance_cache_expiry_duration)"},{"line_number":384,"context_line":"            if (now - self.last_perf_update) \u003e expiry:"},{"line_number":385,"context_line":"                LOG.debug(\"Updating perf cache for cluster.\")"},{"line_number":386,"context_line":"                self.perf_library.update_performance_cache(ssc)"},{"line_number":387,"context_line":"                self.last_perf_update \u003d now"}],"source_content_type":"text/x-python","patch_set":10,"id":"e8a2bbf6_b8200d02","line":384,"updated":"2025-11-05 07:53:17.000000000","message":"We should log a debug log in else case as well for debugging.","commit_id":"5aa419fe7c16ac0d9b4c07040df12072c4547835"},{"author":{"_account_id":36180,"name":"Gireesh Awasthi","display_name":"Gireesh","email":"gawasthi2010@gmail.com","username":"agireesh","status":"NetApp"},"change_message_id":"e9e2fb45a790c4bb1b2270a5d7b66c8340648b2b","unresolved":false,"context_lines":[{"line_number":381,"context_line":"            now \u003d timeutils.utcnow().timestamp()"},{"line_number":382,"context_line":"            expiry \u003d ("},{"line_number":383,"context_line":"                self.configuration.netapp_performance_cache_expiry_duration)"},{"line_number":384,"context_line":"            if (now - self.last_perf_update) \u003e expiry:"},{"line_number":385,"context_line":"                LOG.debug(\"Updating perf cache for cluster.\")"},{"line_number":386,"context_line":"                self.perf_library.update_performance_cache(ssc)"},{"line_number":387,"context_line":"                self.last_perf_update \u003d now"}],"source_content_type":"text/x-python","patch_set":10,"id":"0b59a0df_827d7c34","line":384,"in_reply_to":"e8a2bbf6_b8200d02","updated":"2025-11-05 18:22:37.000000000","message":"Done","commit_id":"5aa419fe7c16ac0d9b4c07040df12072c4547835"},{"author":{"_account_id":38059,"name":"Anoop Kumar Shukla","display_name":"Anoop Shukla","email":"anoop.shukla@netapp.com","username":"anoop2","status":"NetApp"},"change_message_id":"35861d905c3e6a3b82457b890b381cb69d229545","unresolved":true,"context_lines":[{"line_number":450,"context_line":"            if (self.using_cluster_credentials and"},{"line_number":451,"context_line":"                    not self.configuration.netapp_disaggregated_platform):"},{"line_number":452,"context_line":"                now \u003d timeutils.utcnow().timestamp()"},{"line_number":453,"context_line":"                if ((now - self.last_dedupe_update) \u003e ("},{"line_number":454,"context_line":"                        self.configuration.netapp_dedupe_cache_expiry_duration"},{"line_number":455,"context_line":"                )):"},{"line_number":456,"context_line":"                    LOG.debug(\"Getting flexvol %s dedupe info.\", ssc_vol_name)"}],"source_content_type":"text/x-python","patch_set":10,"id":"65c87af4_02e029ff","line":453,"updated":"2025-11-05 07:53:17.000000000","message":"use the same pattern as above, create a local variable expiry and use it in the if conditional. It will be easier to understand and maintain that way.","commit_id":"5aa419fe7c16ac0d9b4c07040df12072c4547835"},{"author":{"_account_id":36180,"name":"Gireesh Awasthi","display_name":"Gireesh","email":"gawasthi2010@gmail.com","username":"agireesh","status":"NetApp"},"change_message_id":"e9e2fb45a790c4bb1b2270a5d7b66c8340648b2b","unresolved":false,"context_lines":[{"line_number":450,"context_line":"            if (self.using_cluster_credentials and"},{"line_number":451,"context_line":"                    not self.configuration.netapp_disaggregated_platform):"},{"line_number":452,"context_line":"                now \u003d timeutils.utcnow().timestamp()"},{"line_number":453,"context_line":"                if ((now - self.last_dedupe_update) \u003e ("},{"line_number":454,"context_line":"                        self.configuration.netapp_dedupe_cache_expiry_duration"},{"line_number":455,"context_line":"                )):"},{"line_number":456,"context_line":"                    LOG.debug(\"Getting flexvol %s dedupe info.\", ssc_vol_name)"}],"source_content_type":"text/x-python","patch_set":10,"id":"f0bafe6a_e3fc2ed4","line":453,"in_reply_to":"65c87af4_02e029ff","updated":"2025-11-05 18:22:37.000000000","message":"Done","commit_id":"5aa419fe7c16ac0d9b4c07040df12072c4547835"},{"author":{"_account_id":21129,"name":"Alan Bishop","email":"abishopsweng@gmail.com","username":"ASBishop","status":"ex Red Hat"},"change_message_id":"2b917935dd7592499c19584dfd3f17c1ac454011","unresolved":true,"context_lines":[{"line_number":471,"context_line":"                else:"},{"line_number":472,"context_line":"                    LOG.debug(\"Get the previous dedupe stats from pool %s\","},{"line_number":473,"context_line":"                              ssc_vol_name)"},{"line_number":474,"context_line":"                    if getattr(self, \u0027_stats\u0027, None):"},{"line_number":475,"context_line":"                        for prev_pool in self._stats.get(\u0027pools\u0027, {}):"},{"line_number":476,"context_line":"                            if prev_pool.get(\u0027pool_name\u0027) \u003d\u003d ssc_vol_name:"},{"line_number":477,"context_line":"                                dedupe_used \u003d prev_pool.get("}],"source_content_type":"text/x-python","patch_set":16,"id":"a4eb14df_702496bb","line":474,"updated":"2025-11-10 20:46:40.000000000","message":"Is this conditional necessary? It looks like \u0027_stats\u0027 is initialized to {}","commit_id":"2cd97edd2a3ea991138e5d16a8496f3594cec800"},{"author":{"_account_id":36180,"name":"Gireesh Awasthi","display_name":"Gireesh","email":"gawasthi2010@gmail.com","username":"agireesh","status":"NetApp"},"change_message_id":"3ca51dd7073ab29bdf1cd38c10b5d227f90c54f7","unresolved":true,"context_lines":[{"line_number":471,"context_line":"                else:"},{"line_number":472,"context_line":"                    LOG.debug(\"Get the previous dedupe stats from pool %s\","},{"line_number":473,"context_line":"                              ssc_vol_name)"},{"line_number":474,"context_line":"                    if getattr(self, \u0027_stats\u0027, None):"},{"line_number":475,"context_line":"                        for prev_pool in self._stats.get(\u0027pools\u0027, {}):"},{"line_number":476,"context_line":"                            if prev_pool.get(\u0027pool_name\u0027) \u003d\u003d ssc_vol_name:"},{"line_number":477,"context_line":"                                dedupe_used \u003d prev_pool.get("}],"source_content_type":"text/x-python","patch_set":16,"id":"fa8750a5_ff4a1387","line":474,"in_reply_to":"114494b9_4a5be95e","updated":"2025-11-12 14:15:39.000000000","message":"if getattr(self, \u0027_stats\u0027, None):\n\nI included this check to ensure that self has the _stat attribute, just to be on the safe side. Would you like me to remove it?","commit_id":"2cd97edd2a3ea991138e5d16a8496f3594cec800"},{"author":{"_account_id":36180,"name":"Gireesh Awasthi","display_name":"Gireesh","email":"gawasthi2010@gmail.com","username":"agireesh","status":"NetApp"},"change_message_id":"4aa400c4401fc9d1c43d7a8b2c456864ddc14e5a","unresolved":false,"context_lines":[{"line_number":471,"context_line":"                else:"},{"line_number":472,"context_line":"                    LOG.debug(\"Get the previous dedupe stats from pool %s\","},{"line_number":473,"context_line":"                              ssc_vol_name)"},{"line_number":474,"context_line":"                    if getattr(self, \u0027_stats\u0027, None):"},{"line_number":475,"context_line":"                        for prev_pool in self._stats.get(\u0027pools\u0027, {}):"},{"line_number":476,"context_line":"                            if prev_pool.get(\u0027pool_name\u0027) \u003d\u003d ssc_vol_name:"},{"line_number":477,"context_line":"                                dedupe_used \u003d prev_pool.get("}],"source_content_type":"text/x-python","patch_set":16,"id":"968c630a_e5023981","line":474,"in_reply_to":"67d27ece_3ed592e9","updated":"2025-11-13 08:33:51.000000000","message":"added below code assert isinstance(self._stats, dict). I tested this and it is working fine.","commit_id":"2cd97edd2a3ea991138e5d16a8496f3594cec800"},{"author":{"_account_id":36180,"name":"Gireesh Awasthi","display_name":"Gireesh","email":"gawasthi2010@gmail.com","username":"agireesh","status":"NetApp"},"change_message_id":"1ab39a28af76fe90035da597a8c3ac9dca4f07dc","unresolved":false,"context_lines":[{"line_number":471,"context_line":"                else:"},{"line_number":472,"context_line":"                    LOG.debug(\"Get the previous dedupe stats from pool %s\","},{"line_number":473,"context_line":"                              ssc_vol_name)"},{"line_number":474,"context_line":"                    if getattr(self, \u0027_stats\u0027, None):"},{"line_number":475,"context_line":"                        for prev_pool in self._stats.get(\u0027pools\u0027, {}):"},{"line_number":476,"context_line":"                            if prev_pool.get(\u0027pool_name\u0027) \u003d\u003d ssc_vol_name:"},{"line_number":477,"context_line":"                                dedupe_used \u003d prev_pool.get("}],"source_content_type":"text/x-python","patch_set":16,"id":"e8ad6f89_c0deca11","line":474,"in_reply_to":"a4eb14df_702496bb","updated":"2025-11-11 19:07:23.000000000","message":"Within each iteration of the for loop, we initialize pool as an empty dictionary.\npool \u003d dict()\nHere, I want to store the current value of dedupe from the existing pool so that this value remains unchanged while the deduplication time has not yet elapsed. At the end of each iteration, we append the pool dictionary to the pools list.","commit_id":"2cd97edd2a3ea991138e5d16a8496f3594cec800"},{"author":{"_account_id":36180,"name":"Gireesh Awasthi","display_name":"Gireesh","email":"gawasthi2010@gmail.com","username":"agireesh","status":"NetApp"},"change_message_id":"4da4ca7641c1b81b79735f4880102298cb4b37b2","unresolved":false,"context_lines":[{"line_number":471,"context_line":"                else:"},{"line_number":472,"context_line":"                    LOG.debug(\"Get the previous dedupe stats from pool %s\","},{"line_number":473,"context_line":"                              ssc_vol_name)"},{"line_number":474,"context_line":"                    if getattr(self, \u0027_stats\u0027, None):"},{"line_number":475,"context_line":"                        for prev_pool in self._stats.get(\u0027pools\u0027, {}):"},{"line_number":476,"context_line":"                            if prev_pool.get(\u0027pool_name\u0027) \u003d\u003d ssc_vol_name:"},{"line_number":477,"context_line":"                                dedupe_used \u003d prev_pool.get("}],"source_content_type":"text/x-python","patch_set":16,"id":"114494b9_4a5be95e","line":474,"in_reply_to":"b4415898_83633264","updated":"2025-11-12 05:29:18.000000000","message":"Thanks for understanding.","commit_id":"2cd97edd2a3ea991138e5d16a8496f3594cec800"},{"author":{"_account_id":21129,"name":"Alan Bishop","email":"abishopsweng@gmail.com","username":"ASBishop","status":"ex Red Hat"},"change_message_id":"c4dfe8c221d21f7af5f9a99e15ff6ce14586a158","unresolved":true,"context_lines":[{"line_number":471,"context_line":"                else:"},{"line_number":472,"context_line":"                    LOG.debug(\"Get the previous dedupe stats from pool %s\","},{"line_number":473,"context_line":"                              ssc_vol_name)"},{"line_number":474,"context_line":"                    if getattr(self, \u0027_stats\u0027, None):"},{"line_number":475,"context_line":"                        for prev_pool in self._stats.get(\u0027pools\u0027, {}):"},{"line_number":476,"context_line":"                            if prev_pool.get(\u0027pool_name\u0027) \u003d\u003d ssc_vol_name:"},{"line_number":477,"context_line":"                                dedupe_used \u003d prev_pool.get("}],"source_content_type":"text/x-python","patch_set":16,"id":"b4415898_83633264","line":474,"in_reply_to":"e8ad6f89_c0deca11","updated":"2025-11-11 20:00:45.000000000","message":"Yes, I understand. What I mean is self._stats is (I think) initialized to {}, so I don\u0027t see the reason for the conditional on L474. I do agree with what you\u0027re doing on L475 because the \u0027pools\u0027 field is reset.","commit_id":"2cd97edd2a3ea991138e5d16a8496f3594cec800"},{"author":{"_account_id":21129,"name":"Alan Bishop","email":"abishopsweng@gmail.com","username":"ASBishop","status":"ex Red Hat"},"change_message_id":"8cd084833d9240db3c321a17af84b7e5a8bb66a4","unresolved":true,"context_lines":[{"line_number":471,"context_line":"                else:"},{"line_number":472,"context_line":"                    LOG.debug(\"Get the previous dedupe stats from pool %s\","},{"line_number":473,"context_line":"                              ssc_vol_name)"},{"line_number":474,"context_line":"                    if getattr(self, \u0027_stats\u0027, None):"},{"line_number":475,"context_line":"                        for prev_pool in self._stats.get(\u0027pools\u0027, {}):"},{"line_number":476,"context_line":"                            if prev_pool.get(\u0027pool_name\u0027) \u003d\u003d ssc_vol_name:"},{"line_number":477,"context_line":"                                dedupe_used \u003d prev_pool.get("}],"source_content_type":"text/x-python","patch_set":16,"id":"67d27ece_3ed592e9","line":474,"in_reply_to":"fa8750a5_ff4a1387","updated":"2025-11-12 15:52:27.000000000","message":"The logic is already rather complicated and would benefit from some refactoring (probably to organize chunks of code into smaller functions). If you agree with my understanding that the \u0027_stats\u0027 field is initialized already, the conditional adds an extraneous nesting level.\n\nAnother approach would be to use an assert by replacing this:\n\n                    if getattr(self, \u0027_stats\u0027, None):\n                        \u003ccode block\u003e\n\nwith this:\n\n                    assert isinstance(self._stats, dict)\n                    \u003ccode block\u003e\n\nWe don\u0027t expect a run time fault as long as we expect \u0027_stats\u0027 to be properly initialized.","commit_id":"2cd97edd2a3ea991138e5d16a8496f3594cec800"},{"author":{"_account_id":21129,"name":"Alan Bishop","email":"abishopsweng@gmail.com","username":"ASBishop","status":"ex Red Hat"},"change_message_id":"2b917935dd7592499c19584dfd3f17c1ac454011","unresolved":true,"context_lines":[{"line_number":472,"context_line":"                    LOG.debug(\"Get the previous dedupe stats from pool %s\","},{"line_number":473,"context_line":"                              ssc_vol_name)"},{"line_number":474,"context_line":"                    if getattr(self, \u0027_stats\u0027, None):"},{"line_number":475,"context_line":"                        for prev_pool in self._stats.get(\u0027pools\u0027, {}):"},{"line_number":476,"context_line":"                            if prev_pool.get(\u0027pool_name\u0027) \u003d\u003d ssc_vol_name:"},{"line_number":477,"context_line":"                                dedupe_used \u003d prev_pool.get("},{"line_number":478,"context_line":"                                    \u0027netapp_dedupe_used_percent\u0027)"}],"source_content_type":"text/x-python","patch_set":16,"id":"891ee758_dec0c1d7","line":475,"range":{"start_line":475,"start_character":66,"end_line":475,"end_character":68},"updated":"2025-11-10 20:46:40.000000000","message":"\u0027pools\u0027 are an array, and so shouldn\u0027t the default be [] (not {})?","commit_id":"2cd97edd2a3ea991138e5d16a8496f3594cec800"},{"author":{"_account_id":21129,"name":"Alan Bishop","email":"abishopsweng@gmail.com","username":"ASBishop","status":"ex Red Hat"},"change_message_id":"2b917935dd7592499c19584dfd3f17c1ac454011","unresolved":true,"context_lines":[{"line_number":472,"context_line":"                    LOG.debug(\"Get the previous dedupe stats from pool %s\","},{"line_number":473,"context_line":"                              ssc_vol_name)"},{"line_number":474,"context_line":"                    if getattr(self, \u0027_stats\u0027, None):"},{"line_number":475,"context_line":"                        for prev_pool in self._stats.get(\u0027pools\u0027, {}):"},{"line_number":476,"context_line":"                            if prev_pool.get(\u0027pool_name\u0027) \u003d\u003d ssc_vol_name:"},{"line_number":477,"context_line":"                                dedupe_used \u003d prev_pool.get("},{"line_number":478,"context_line":"                                    \u0027netapp_dedupe_used_percent\u0027)"}],"source_content_type":"text/x-python","patch_set":16,"id":"d7da2ff9_ad9f6df5","line":475,"range":{"start_line":475,"start_character":28,"end_line":475,"end_character":37},"updated":"2025-11-10 20:46:40.000000000","message":"The \"prev_\" prefix makes it seem like you\u0027re referring to a \"previous pool\" when I think you mean the \"previous value in this pool\"","commit_id":"2cd97edd2a3ea991138e5d16a8496f3594cec800"},{"author":{"_account_id":36180,"name":"Gireesh Awasthi","display_name":"Gireesh","email":"gawasthi2010@gmail.com","username":"agireesh","status":"NetApp"},"change_message_id":"1ab39a28af76fe90035da597a8c3ac9dca4f07dc","unresolved":false,"context_lines":[{"line_number":472,"context_line":"                    LOG.debug(\"Get the previous dedupe stats from pool %s\","},{"line_number":473,"context_line":"                              ssc_vol_name)"},{"line_number":474,"context_line":"                    if getattr(self, \u0027_stats\u0027, None):"},{"line_number":475,"context_line":"                        for prev_pool in self._stats.get(\u0027pools\u0027, {}):"},{"line_number":476,"context_line":"                            if prev_pool.get(\u0027pool_name\u0027) \u003d\u003d ssc_vol_name:"},{"line_number":477,"context_line":"                                dedupe_used \u003d prev_pool.get("},{"line_number":478,"context_line":"                                    \u0027netapp_dedupe_used_percent\u0027)"}],"source_content_type":"text/x-python","patch_set":16,"id":"33fb1e23_8432097e","line":475,"range":{"start_line":475,"start_character":66,"end_line":475,"end_character":68},"in_reply_to":"891ee758_dec0c1d7","updated":"2025-11-11 19:07:23.000000000","message":"good point, this is list not dict","commit_id":"2cd97edd2a3ea991138e5d16a8496f3594cec800"},{"author":{"_account_id":36180,"name":"Gireesh Awasthi","display_name":"Gireesh","email":"gawasthi2010@gmail.com","username":"agireesh","status":"NetApp"},"change_message_id":"1ab39a28af76fe90035da597a8c3ac9dca4f07dc","unresolved":false,"context_lines":[{"line_number":472,"context_line":"                    LOG.debug(\"Get the previous dedupe stats from pool %s\","},{"line_number":473,"context_line":"                              ssc_vol_name)"},{"line_number":474,"context_line":"                    if getattr(self, \u0027_stats\u0027, None):"},{"line_number":475,"context_line":"                        for prev_pool in self._stats.get(\u0027pools\u0027, {}):"},{"line_number":476,"context_line":"                            if prev_pool.get(\u0027pool_name\u0027) \u003d\u003d ssc_vol_name:"},{"line_number":477,"context_line":"                                dedupe_used \u003d prev_pool.get("},{"line_number":478,"context_line":"                                    \u0027netapp_dedupe_used_percent\u0027)"}],"source_content_type":"text/x-python","patch_set":16,"id":"7dbe9dde_502fb005","line":475,"range":{"start_line":475,"start_character":28,"end_line":475,"end_character":37},"in_reply_to":"d7da2ff9_ad9f6df5","updated":"2025-11-11 19:07:23.000000000","message":"The variable \"prev_pool\" actually refers to the current backend pool, so I renamed it to current_pool for clarity. I initially wanted to rename it to pool, but since pool is already used in an outer loop, I chose current_pool instead.","commit_id":"2cd97edd2a3ea991138e5d16a8496f3594cec800"},{"author":{"_account_id":21129,"name":"Alan Bishop","email":"abishopsweng@gmail.com","username":"ASBishop","status":"ex Red Hat"},"change_message_id":"2b917935dd7592499c19584dfd3f17c1ac454011","unresolved":true,"context_lines":[{"line_number":474,"context_line":"                    if getattr(self, \u0027_stats\u0027, None):"},{"line_number":475,"context_line":"                        for prev_pool in self._stats.get(\u0027pools\u0027, {}):"},{"line_number":476,"context_line":"                            if prev_pool.get(\u0027pool_name\u0027) \u003d\u003d ssc_vol_name:"},{"line_number":477,"context_line":"                                dedupe_used \u003d prev_pool.get("},{"line_number":478,"context_line":"                                    \u0027netapp_dedupe_used_percent\u0027)"},{"line_number":479,"context_line":"                                break"},{"line_number":480,"context_line":"            else:"}],"source_content_type":"text/x-python","patch_set":16,"id":"2ba716d2_b88ffb04","line":477,"updated":"2025-11-10 20:46:40.000000000","message":"You\u0027ll only set dedupe_used when the conditional on L476 is True, but if you don\u0027t find the pool name in the list then dedupe_used won\u0027t be set, and L482 will raise an exception.\n\nI think the whole block (from L474..L477) could be cleaned up. I haven\u0027t actually tested this code, but consider trying something like this:\n\n                    pools \u003d self._stats.get(\u0027pools\u0027, [])\n                    poolgen \u003d (\n                        i for i, p in enumerate(pools) if p.get(\n                            \u0027pool_name\u0027) \u003d\u003d ssc_vol_name)\n                    pool \u003d next(poolgen, {})\n                    dedupe_used \u003d pool.get(\u0027netapp_dedupe_used_percent\u0027, 0.0)","commit_id":"2cd97edd2a3ea991138e5d16a8496f3594cec800"},{"author":{"_account_id":36180,"name":"Gireesh Awasthi","display_name":"Gireesh","email":"gawasthi2010@gmail.com","username":"agireesh","status":"NetApp"},"change_message_id":"1ab39a28af76fe90035da597a8c3ac9dca4f07dc","unresolved":false,"context_lines":[{"line_number":474,"context_line":"                    if getattr(self, \u0027_stats\u0027, None):"},{"line_number":475,"context_line":"                        for prev_pool in self._stats.get(\u0027pools\u0027, {}):"},{"line_number":476,"context_line":"                            if prev_pool.get(\u0027pool_name\u0027) \u003d\u003d ssc_vol_name:"},{"line_number":477,"context_line":"                                dedupe_used \u003d prev_pool.get("},{"line_number":478,"context_line":"                                    \u0027netapp_dedupe_used_percent\u0027)"},{"line_number":479,"context_line":"                                break"},{"line_number":480,"context_line":"            else:"}],"source_content_type":"text/x-python","patch_set":16,"id":"f30e2d4f_4a066006","line":477,"in_reply_to":"2ba716d2_b88ffb04","updated":"2025-11-11 19:07:23.000000000","message":"I tried this but this is not working. so, I keep my code.","commit_id":"2cd97edd2a3ea991138e5d16a8496f3594cec800"},{"author":{"_account_id":36180,"name":"Gireesh Awasthi","display_name":"Gireesh","email":"gawasthi2010@gmail.com","username":"agireesh","status":"NetApp"},"change_message_id":"4da4ca7641c1b81b79735f4880102298cb4b37b2","unresolved":false,"context_lines":[{"line_number":474,"context_line":"                    if getattr(self, \u0027_stats\u0027, None):"},{"line_number":475,"context_line":"                        for prev_pool in self._stats.get(\u0027pools\u0027, {}):"},{"line_number":476,"context_line":"                            if prev_pool.get(\u0027pool_name\u0027) \u003d\u003d ssc_vol_name:"},{"line_number":477,"context_line":"                                dedupe_used \u003d prev_pool.get("},{"line_number":478,"context_line":"                                    \u0027netapp_dedupe_used_percent\u0027)"},{"line_number":479,"context_line":"                                break"},{"line_number":480,"context_line":"            else:"}],"source_content_type":"text/x-python","patch_set":16,"id":"be479896_a1afe9c4","line":477,"in_reply_to":"53597050_f83e1cc6","updated":"2025-11-12 05:29:18.000000000","message":"thanks for pointing this. I made the change, could you please check that.","commit_id":"2cd97edd2a3ea991138e5d16a8496f3594cec800"},{"author":{"_account_id":21129,"name":"Alan Bishop","email":"abishopsweng@gmail.com","username":"ASBishop","status":"ex Red Hat"},"change_message_id":"c4dfe8c221d21f7af5f9a99e15ff6ce14586a158","unresolved":true,"context_lines":[{"line_number":474,"context_line":"                    if getattr(self, \u0027_stats\u0027, None):"},{"line_number":475,"context_line":"                        for prev_pool in self._stats.get(\u0027pools\u0027, {}):"},{"line_number":476,"context_line":"                            if prev_pool.get(\u0027pool_name\u0027) \u003d\u003d ssc_vol_name:"},{"line_number":477,"context_line":"                                dedupe_used \u003d prev_pool.get("},{"line_number":478,"context_line":"                                    \u0027netapp_dedupe_used_percent\u0027)"},{"line_number":479,"context_line":"                                break"},{"line_number":480,"context_line":"            else:"}],"source_content_type":"text/x-python","patch_set":16,"id":"53597050_f83e1cc6","line":477,"in_reply_to":"f30e2d4f_4a066006","updated":"2025-11-11 20:00:45.000000000","message":"That\u0027s fine, but I still think there\u0027s a path that leaves dedupe_used undefined. You set it in the loop, but only when L476 is True. Perhaps you need to initialize it to 0.0 before the loop, in case the pool isn\u0027t found inside the loop?","commit_id":"2cd97edd2a3ea991138e5d16a8496f3594cec800"},{"author":{"_account_id":21129,"name":"Alan Bishop","email":"abishopsweng@gmail.com","username":"ASBishop","status":"ex Red Hat"},"change_message_id":"8cd084833d9240db3c321a17af84b7e5a8bb66a4","unresolved":true,"context_lines":[{"line_number":454,"context_line":"                        provisioned_cap \u003d provisioned_cap + lun[\u0027size\u0027]"},{"line_number":455,"context_line":"                pool[\u0027provisioned_capacity_gb\u0027] \u003d na_utils.round_down("},{"line_number":456,"context_line":"                    float(provisioned_cap) / units.Gi)"},{"line_number":457,"context_line":"            dedupe_used \u003d 0.0"},{"line_number":458,"context_line":"            if (self.using_cluster_credentials and"},{"line_number":459,"context_line":"                    not self.configuration.netapp_disaggregated_platform):"},{"line_number":460,"context_line":"                dedupe_expiry \u003d ("}],"source_content_type":"text/x-python","patch_set":18,"id":"88cc1770_518d98d0","line":457,"updated":"2025-11-12 15:52:27.000000000","message":"+1","commit_id":"648c88882057099acf67391d9aaad2559c8b3ef5"},{"author":{"_account_id":36180,"name":"Gireesh Awasthi","display_name":"Gireesh","email":"gawasthi2010@gmail.com","username":"agireesh","status":"NetApp"},"change_message_id":"4aa400c4401fc9d1c43d7a8b2c456864ddc14e5a","unresolved":false,"context_lines":[{"line_number":454,"context_line":"                        provisioned_cap \u003d provisioned_cap + lun[\u0027size\u0027]"},{"line_number":455,"context_line":"                pool[\u0027provisioned_capacity_gb\u0027] \u003d na_utils.round_down("},{"line_number":456,"context_line":"                    float(provisioned_cap) / units.Gi)"},{"line_number":457,"context_line":"            dedupe_used \u003d 0.0"},{"line_number":458,"context_line":"            if (self.using_cluster_credentials and"},{"line_number":459,"context_line":"                    not self.configuration.netapp_disaggregated_platform):"},{"line_number":460,"context_line":"                dedupe_expiry \u003d ("}],"source_content_type":"text/x-python","patch_set":18,"id":"655e30ee_5598c4f5","line":457,"in_reply_to":"88cc1770_518d98d0","updated":"2025-11-13 08:33:51.000000000","message":"Thanks","commit_id":"648c88882057099acf67391d9aaad2559c8b3ef5"}],"cinder/volume/drivers/netapp/dataontap/performance/perf_base.py":[{"author":{"_account_id":38059,"name":"Anoop Kumar Shukla","display_name":"Anoop Shukla","email":"anoop.shukla@netapp.com","username":"anoop2","status":"NetApp"},"change_message_id":"60a3ef2770233664b7dc1819af50284f2010a13e","unresolved":true,"context_lines":[{"line_number":225,"context_line":"        counter_info \u003d self._get_counter_info(object_name, counter_name)"},{"line_number":226,"context_line":"        return counter_info[\u0027base-counter\u0027]"},{"line_number":227,"context_line":""},{"line_number":228,"context_line":"    def _get_counter_info(self, object_name, counter_name):"},{"line_number":229,"context_line":"        cache_key \u003d (object_name, counter_name)"},{"line_number":230,"context_line":"        now \u003d timeutils.utcnow().timestamp()"},{"line_number":231,"context_line":"        # In case of ONTAP upgrade, new counter information may be added,"}],"source_content_type":"text/x-python","patch_set":8,"id":"5b761f45_c601bc21","line":228,"updated":"2025-11-05 07:43:36.000000000","message":"Let\u0027s add some debug logs for the method and where we hit the ZAPI.","commit_id":"f6c21cd5b68a602e6715febbbfe6ccfa07ad291b"},{"author":{"_account_id":36180,"name":"Gireesh Awasthi","display_name":"Gireesh","email":"gawasthi2010@gmail.com","username":"agireesh","status":"NetApp"},"change_message_id":"e9e2fb45a790c4bb1b2270a5d7b66c8340648b2b","unresolved":false,"context_lines":[{"line_number":225,"context_line":"        counter_info \u003d self._get_counter_info(object_name, counter_name)"},{"line_number":226,"context_line":"        return counter_info[\u0027base-counter\u0027]"},{"line_number":227,"context_line":""},{"line_number":228,"context_line":"    def _get_counter_info(self, object_name, counter_name):"},{"line_number":229,"context_line":"        cache_key \u003d (object_name, counter_name)"},{"line_number":230,"context_line":"        now \u003d timeutils.utcnow().timestamp()"},{"line_number":231,"context_line":"        # In case of ONTAP upgrade, new counter information may be added,"}],"source_content_type":"text/x-python","patch_set":8,"id":"61e2a9bc_ed4aad56","line":228,"in_reply_to":"5b761f45_c601bc21","updated":"2025-11-05 18:22:37.000000000","message":"Done, Added under if condition","commit_id":"f6c21cd5b68a602e6715febbbfe6ccfa07ad291b"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"95675cfa2dc78a553c40b9316a535225e7b5a14d","unresolved":true,"context_lines":[{"line_number":25,"context_line":""},{"line_number":26,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":27,"context_line":"DEFAULT_UTILIZATION \u003d 50"},{"line_number":28,"context_line":"COUNTER_CACHE_REFRESH_INTERVAL_HOURS \u003d 24"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"class PerformanceLibrary(object):"}],"source_content_type":"text/x-python","patch_set":19,"id":"f673a287_37a923cb","line":28,"range":{"start_line":28,"start_character":0,"end_line":28,"end_character":36},"updated":"2025-11-14 17:12:52.000000000","message":"24 hours seems a lot but I\u0027m unsure about the context of the counter info so won\u0027t flag this. still would be good to know about the properties returned in counter info and when it is used?","commit_id":"9e16567bd63987462ae031232cac475e713ba115"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"79fababd570ea7b8f73e748b708bce87cd7ec88e","unresolved":false,"context_lines":[{"line_number":25,"context_line":""},{"line_number":26,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":27,"context_line":"DEFAULT_UTILIZATION \u003d 50"},{"line_number":28,"context_line":"COUNTER_CACHE_REFRESH_INTERVAL_HOURS \u003d 24"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"class PerformanceLibrary(object):"}],"source_content_type":"text/x-python","patch_set":19,"id":"fb83eb10_a30862b2","line":28,"range":{"start_line":28,"start_character":0,"end_line":28,"end_character":36},"in_reply_to":"18cf757a_f77ef68f","updated":"2025-11-17 07:41:14.000000000","message":"Ack","commit_id":"9e16567bd63987462ae031232cac475e713ba115"},{"author":{"_account_id":36180,"name":"Gireesh Awasthi","display_name":"Gireesh","email":"gawasthi2010@gmail.com","username":"agireesh","status":"NetApp"},"change_message_id":"986415387a49ee73e579099e2472e948351df4df","unresolved":false,"context_lines":[{"line_number":25,"context_line":""},{"line_number":26,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":27,"context_line":"DEFAULT_UTILIZATION \u003d 50"},{"line_number":28,"context_line":"COUNTER_CACHE_REFRESH_INTERVAL_HOURS \u003d 24"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"class PerformanceLibrary(object):"}],"source_content_type":"text/x-python","patch_set":19,"id":"18cf757a_f77ef68f","line":28,"range":{"start_line":28,"start_character":0,"end_line":28,"end_character":36},"in_reply_to":"f673a287_37a923cb","updated":"2025-11-16 14:37:15.000000000","message":"Below info return by self.zapi_client.get_performance_counter_info, ZAPI when object_name\u003dprocessor and counter_name is domain_busy. These value will never change until cluster is upgraded. These values remain constant until the cluster is upgraded. We use this data when calculating pool utilization.\n\n{\u0027name\u0027: \u0027domain_busy\u0027, \u0027labels\u0027: [\u0027idle\u0027, \u0027kahuna\u0027, \u0027storage\u0027, \u0027exempt\u0027, \u0027none\u0027, \u0027raid\u0027, \u0027raid_exempt\u0027, \u0027xor_exempt\u0027, \u0027target\u0027, \u0027wafl_exempt\u0027, \u0027wafl_mpcleaner\u0027, \u0027sm_exempt\u0027, \u0027protocol\u0027, \u0027nwk_exempt\u0027, \u0027network\u0027, \u0027hostOS\u0027, \u0027ssan_exempt\u0027, \u0027unclassified\u0027, \u0027kahuna_legacy\u0027, \u0027ha\u0027, \u0027ssan_exempt2\u0027, \u0027exempt_ise\u0027, \u0027exempt1\u0027, \u0027exempt2\u0027, \u0027reserved\u0027], \u0027base-counter\u0027: \u0027processor_elapsed_time\u0027}\n\nI have added below comment in Line no 230 where I am using this flag.\n\n         \na few additional attributes might be added; however, these will not significantly impact the calculation of pool utilization.","commit_id":"9e16567bd63987462ae031232cac475e713ba115"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"95675cfa2dc78a553c40b9316a535225e7b5a14d","unresolved":true,"context_lines":[{"line_number":230,"context_line":"        now \u003d timeutils.utcnow().timestamp()"},{"line_number":231,"context_line":"        # In case of ONTAP upgrade, new counter information may be added,"},{"line_number":232,"context_line":"        # therefore, we need to refresh the cache every 24 hours."},{"line_number":233,"context_line":"        counter_cache_refresh_interval \\"},{"line_number":234,"context_line":"            \u003d COUNTER_CACHE_REFRESH_INTERVAL_HOURS * 60 * 60"},{"line_number":235,"context_line":"        is_cache_period_expired \u003d ((now - self.last_counter_cache_update)"},{"line_number":236,"context_line":"                                   \u003e counter_cache_refresh_interval)"},{"line_number":237,"context_line":"        counter_info \u003d self._counter_info_cache.get(cache_key)"}],"source_content_type":"text/x-python","patch_set":19,"id":"2760acb6_67255ae6","line":234,"range":{"start_line":233,"start_character":8,"end_line":234,"end_character":60},"updated":"2025-11-14 17:12:52.000000000","message":"A more readable way to write this would have been\n\n    counter_cache_refresh_interval \u003d (\n        COUNTER_CACHE_REFRESH_INTERVAL_HOURS * 60 * 60)","commit_id":"9e16567bd63987462ae031232cac475e713ba115"},{"author":{"_account_id":36180,"name":"Gireesh Awasthi","display_name":"Gireesh","email":"gawasthi2010@gmail.com","username":"agireesh","status":"NetApp"},"change_message_id":"986415387a49ee73e579099e2472e948351df4df","unresolved":false,"context_lines":[{"line_number":230,"context_line":"        now \u003d timeutils.utcnow().timestamp()"},{"line_number":231,"context_line":"        # In case of ONTAP upgrade, new counter information may be added,"},{"line_number":232,"context_line":"        # therefore, we need to refresh the cache every 24 hours."},{"line_number":233,"context_line":"        counter_cache_refresh_interval \\"},{"line_number":234,"context_line":"            \u003d COUNTER_CACHE_REFRESH_INTERVAL_HOURS * 60 * 60"},{"line_number":235,"context_line":"        is_cache_period_expired \u003d ((now - self.last_counter_cache_update)"},{"line_number":236,"context_line":"                                   \u003e counter_cache_refresh_interval)"},{"line_number":237,"context_line":"        counter_info \u003d self._counter_info_cache.get(cache_key)"}],"source_content_type":"text/x-python","patch_set":19,"id":"857c274f_d1c1e284","line":234,"range":{"start_line":233,"start_character":8,"end_line":234,"end_character":60},"in_reply_to":"2760acb6_67255ae6","updated":"2025-11-16 14:37:15.000000000","message":"Done","commit_id":"9e16567bd63987462ae031232cac475e713ba115"}],"cinder/volume/drivers/netapp/options.py":[{"author":{"_account_id":38059,"name":"Anoop Kumar Shukla","display_name":"Anoop Shukla","email":"anoop.shukla@netapp.com","username":"anoop2","status":"NetApp"},"change_message_id":"f29a5694fc7852329e34a908f95bc069c8154e77","unresolved":true,"context_lines":[{"line_number":280,"context_line":"    cfg.IntOpt(\u0027netapp_perf_pool_interval\u0027,"},{"line_number":281,"context_line":"               min\u003d60,"},{"line_number":282,"context_line":"               default\u003d1800,"},{"line_number":283,"context_line":"               help\u003d\u0027Specifies the time (in seconds) between updates of \u0027"},{"line_number":284,"context_line":"                    \u0027performance data for ONTAP backend pools. Every time \u0027"},{"line_number":285,"context_line":"                    \u0027the scheduled update runs, if this much time has passed \u0027"},{"line_number":286,"context_line":"                    \u0027since the last update, the driver will update the \u0027"}],"source_content_type":"text/x-python","patch_set":1,"id":"34b633e3_e42691d8","line":283,"updated":"2025-10-16 06:49:59.000000000","message":"Specifies the time (in seconds) between updates of performance data for ONTAP backend pools. When scheduled update runs, performance data will not be updated unless the time specified is elapsed. Choosing a lower value would mean the performance data will be more frequently updated and add more load on ONTAP to perform ZAPI calls for perf data. Choosing a higher value would relieve ONTAP from more frequent runs, but perf data will be outdated by atleast the time in seconds specified.","commit_id":"7362354386f5e73def7e63a976b73b1177e4fd7e"},{"author":{"_account_id":36180,"name":"Gireesh Awasthi","display_name":"Gireesh","email":"gawasthi2010@gmail.com","username":"agireesh","status":"NetApp"},"change_message_id":"04c241f23525dfbfb0e7f4d1e168a73f903d74bc","unresolved":false,"context_lines":[{"line_number":280,"context_line":"    cfg.IntOpt(\u0027netapp_perf_pool_interval\u0027,"},{"line_number":281,"context_line":"               min\u003d60,"},{"line_number":282,"context_line":"               default\u003d1800,"},{"line_number":283,"context_line":"               help\u003d\u0027Specifies the time (in seconds) between updates of \u0027"},{"line_number":284,"context_line":"                    \u0027performance data for ONTAP backend pools. Every time \u0027"},{"line_number":285,"context_line":"                    \u0027the scheduled update runs, if this much time has passed \u0027"},{"line_number":286,"context_line":"                    \u0027since the last update, the driver will update the \u0027"}],"source_content_type":"text/x-python","patch_set":1,"id":"7c7ac3eb_e27ee200","line":283,"in_reply_to":"34b633e3_e42691d8","updated":"2025-10-21 10:27:17.000000000","message":"Done","commit_id":"7362354386f5e73def7e63a976b73b1177e4fd7e"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"dc0cd70db545f79fcac89c750f2c499523be2470","unresolved":true,"context_lines":[{"line_number":299,"context_line":"                    \u0027would mean the performance data will be more frequently \u0027"},{"line_number":300,"context_line":"                    \u0027updated and add more load on ONTAP to perform ZAPI calls \u0027"},{"line_number":301,"context_line":"                    \u0027for perf data. Choosing a higher value would relieve \u0027"},{"line_number":302,"context_line":"                    \u0027ONTAP from more frequent runs, but perf data will be \u0027"},{"line_number":303,"context_line":"                    \u0027outdated by minimum the time in seconds specified\u0027)]"},{"line_number":304,"context_line":""},{"line_number":305,"context_line":"netapp_replication_opts \u003d ["},{"line_number":306,"context_line":"    cfg.MultiOpt(\u0027netapp_replication_aggregate_map\u0027,"}],"source_content_type":"text/x-python","patch_set":11,"id":"1121faf5_75436c1b","line":303,"range":{"start_line":302,"start_character":66,"end_line":303,"end_character":70},"updated":"2025-11-07 23:36:24.000000000","message":"I\u0027m not clear on what this phrase means (for both options).  Also, I think you don\u0027t want operators to configure these to have the same value (see my comment on the release note), so you should probably say that here.","commit_id":"337a070f4f21542e71435d23d72e0f6a3d4401c5"},{"author":{"_account_id":36180,"name":"Gireesh Awasthi","display_name":"Gireesh","email":"gawasthi2010@gmail.com","username":"agireesh","status":"NetApp"},"change_message_id":"798034ad869b59ed6acd5b962601ed9723420a58","unresolved":false,"context_lines":[{"line_number":299,"context_line":"                    \u0027would mean the performance data will be more frequently \u0027"},{"line_number":300,"context_line":"                    \u0027updated and add more load on ONTAP to perform ZAPI calls \u0027"},{"line_number":301,"context_line":"                    \u0027for perf data. Choosing a higher value would relieve \u0027"},{"line_number":302,"context_line":"                    \u0027ONTAP from more frequent runs, but perf data will be \u0027"},{"line_number":303,"context_line":"                    \u0027outdated by minimum the time in seconds specified\u0027)]"},{"line_number":304,"context_line":""},{"line_number":305,"context_line":"netapp_replication_opts \u003d ["},{"line_number":306,"context_line":"    cfg.MultiOpt(\u0027netapp_replication_aggregate_map\u0027,"}],"source_content_type":"text/x-python","patch_set":11,"id":"651de0af_7ab69898","line":303,"range":{"start_line":302,"start_character":66,"end_line":303,"end_character":70},"in_reply_to":"1121faf5_75436c1b","updated":"2025-11-10 08:53:58.000000000","message":"I modified the description for both and made it more simple.","commit_id":"337a070f4f21542e71435d23d72e0f6a3d4401c5"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"95675cfa2dc78a553c40b9316a535225e7b5a14d","unresolved":true,"context_lines":[{"line_number":279,"context_line":"                    \u0027 error occurs.\u0027),"},{"line_number":280,"context_line":"    cfg.IntOpt(\u0027netapp_dedupe_cache_expiry_duration\u0027,"},{"line_number":281,"context_line":"               min\u003d60,"},{"line_number":282,"context_line":"               default\u003d600,"},{"line_number":283,"context_line":"               help\u003d\u0027Specifies the time interval (in seconds) between updates\u0027"},{"line_number":284,"context_line":"                    \u0027 of deduplication data for ONTAP backend pools. When the \u0027"},{"line_number":285,"context_line":"                    \u0027scheduled update runs, deduplication data will only be \u0027"}],"source_content_type":"text/x-python","patch_set":19,"id":"1811e2e1_bbf26605","line":282,"range":{"start_line":282,"start_character":23,"end_line":282,"end_character":26},"updated":"2025-11-14 17:12:52.000000000","message":"this default seems a lot higher (10 mins) than expected.\nIIUC, the main issue was that we were doing stat updates whenever we received a delete volume call (which happened every few seconds). If we set this to 60, we will only update the stats in 60 seconds right? irrespective of how many delete calls we receive?","commit_id":"9e16567bd63987462ae031232cac475e713ba115"},{"author":{"_account_id":36180,"name":"Gireesh Awasthi","display_name":"Gireesh","email":"gawasthi2010@gmail.com","username":"agireesh","status":"NetApp"},"change_message_id":"986415387a49ee73e579099e2472e948351df4df","unresolved":false,"context_lines":[{"line_number":279,"context_line":"                    \u0027 error occurs.\u0027),"},{"line_number":280,"context_line":"    cfg.IntOpt(\u0027netapp_dedupe_cache_expiry_duration\u0027,"},{"line_number":281,"context_line":"               min\u003d60,"},{"line_number":282,"context_line":"               default\u003d600,"},{"line_number":283,"context_line":"               help\u003d\u0027Specifies the time interval (in seconds) between updates\u0027"},{"line_number":284,"context_line":"                    \u0027 of deduplication data for ONTAP backend pools. When the \u0027"},{"line_number":285,"context_line":"                    \u0027scheduled update runs, deduplication data will only be \u0027"}],"source_content_type":"text/x-python","patch_set":19,"id":"dd7b1914_89d27b85","line":282,"range":{"start_line":282,"start_character":23,"end_line":282,"end_character":26},"in_reply_to":"1811e2e1_bbf26605","updated":"2025-11-16 14:37:15.000000000","message":"we figured out that dedupe is not used anywhere in any calculations and decision making. Additionally, it is not utilized by the scheduler to determine the provisioning of cinder volume creation. We only populate this field in the storage pool. Customers who wanted to see latest dedupe used for the pool can set the value according to their environment. We discussed this within the team and agreed upon this number.","commit_id":"9e16567bd63987462ae031232cac475e713ba115"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"79fababd570ea7b8f73e748b708bce87cd7ec88e","unresolved":false,"context_lines":[{"line_number":279,"context_line":"                    \u0027 error occurs.\u0027),"},{"line_number":280,"context_line":"    cfg.IntOpt(\u0027netapp_dedupe_cache_expiry_duration\u0027,"},{"line_number":281,"context_line":"               min\u003d60,"},{"line_number":282,"context_line":"               default\u003d600,"},{"line_number":283,"context_line":"               help\u003d\u0027Specifies the time interval (in seconds) between updates\u0027"},{"line_number":284,"context_line":"                    \u0027 of deduplication data for ONTAP backend pools. When the \u0027"},{"line_number":285,"context_line":"                    \u0027scheduled update runs, deduplication data will only be \u0027"}],"source_content_type":"text/x-python","patch_set":19,"id":"0964266a_bc50e050","line":282,"range":{"start_line":282,"start_character":23,"end_line":282,"end_character":26},"in_reply_to":"dd7b1914_89d27b85","updated":"2025-11-17 07:41:14.000000000","message":"Ack","commit_id":"9e16567bd63987462ae031232cac475e713ba115"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"95675cfa2dc78a553c40b9316a535225e7b5a14d","unresolved":true,"context_lines":[{"line_number":280,"context_line":"    cfg.IntOpt(\u0027netapp_dedupe_cache_expiry_duration\u0027,"},{"line_number":281,"context_line":"               min\u003d60,"},{"line_number":282,"context_line":"               default\u003d600,"},{"line_number":283,"context_line":"               help\u003d\u0027Specifies the time interval (in seconds) between updates\u0027"},{"line_number":284,"context_line":"                    \u0027 of deduplication data for ONTAP backend pools. When the \u0027"},{"line_number":285,"context_line":"                    \u0027scheduled update runs, deduplication data will only be \u0027"},{"line_number":286,"context_line":"                    \u0027refreshed if the specified time has elapsed since the \u0027"}],"source_content_type":"text/x-python","patch_set":19,"id":"e0d6751e_a35a5388","line":283,"range":{"start_line":283,"start_character":77,"end_line":283,"end_character":78},"updated":"2025-11-14 17:12:52.000000000","message":"nit: in all the other lines we\u0027ve kept the extra space towards the end but this is the only inconsistency","commit_id":"9e16567bd63987462ae031232cac475e713ba115"},{"author":{"_account_id":36180,"name":"Gireesh Awasthi","display_name":"Gireesh","email":"gawasthi2010@gmail.com","username":"agireesh","status":"NetApp"},"change_message_id":"986415387a49ee73e579099e2472e948351df4df","unresolved":false,"context_lines":[{"line_number":280,"context_line":"    cfg.IntOpt(\u0027netapp_dedupe_cache_expiry_duration\u0027,"},{"line_number":281,"context_line":"               min\u003d60,"},{"line_number":282,"context_line":"               default\u003d600,"},{"line_number":283,"context_line":"               help\u003d\u0027Specifies the time interval (in seconds) between updates\u0027"},{"line_number":284,"context_line":"                    \u0027 of deduplication data for ONTAP backend pools. When the \u0027"},{"line_number":285,"context_line":"                    \u0027scheduled update runs, deduplication data will only be \u0027"},{"line_number":286,"context_line":"                    \u0027refreshed if the specified time has elapsed since the \u0027"}],"source_content_type":"text/x-python","patch_set":19,"id":"d4741773_32b9fa94","line":283,"range":{"start_line":283,"start_character":77,"end_line":283,"end_character":78},"in_reply_to":"e0d6751e_a35a5388","updated":"2025-11-16 14:37:15.000000000","message":"Done","commit_id":"9e16567bd63987462ae031232cac475e713ba115"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"95675cfa2dc78a553c40b9316a535225e7b5a14d","unresolved":true,"context_lines":[{"line_number":291,"context_line":"                    \u0027ONTAP.\u0027),"},{"line_number":292,"context_line":"    cfg.IntOpt(\u0027netapp_performance_cache_expiry_duration\u0027,"},{"line_number":293,"context_line":"               min\u003d60,"},{"line_number":294,"context_line":"               default\u003d300,"},{"line_number":295,"context_line":"               help\u003d\u0027Specifies the time interval (in seconds) between updates\u0027"},{"line_number":296,"context_line":"                    \u0027 of performance data for ONTAP backend pools. When the \u0027"},{"line_number":297,"context_line":"                    \u0027scheduled update runs, performance data will only be \u0027"}],"source_content_type":"text/x-python","patch_set":19,"id":"f468b32b_763fbd68","line":294,"range":{"start_line":294,"start_character":23,"end_line":294,"end_character":26},"updated":"2025-11-14 17:12:52.000000000","message":"same as above, isn\u0027t 60 seconds a more reasonable time given that we won\u0027t be updating the stats for any reason before 60 seconds?\nAlso i understand these are configurable but generally deployments might not know about these and use the defaults that might cause the stats to go out of date from time to time.","commit_id":"9e16567bd63987462ae031232cac475e713ba115"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"79fababd570ea7b8f73e748b708bce87cd7ec88e","unresolved":false,"context_lines":[{"line_number":291,"context_line":"                    \u0027ONTAP.\u0027),"},{"line_number":292,"context_line":"    cfg.IntOpt(\u0027netapp_performance_cache_expiry_duration\u0027,"},{"line_number":293,"context_line":"               min\u003d60,"},{"line_number":294,"context_line":"               default\u003d300,"},{"line_number":295,"context_line":"               help\u003d\u0027Specifies the time interval (in seconds) between updates\u0027"},{"line_number":296,"context_line":"                    \u0027 of performance data for ONTAP backend pools. When the \u0027"},{"line_number":297,"context_line":"                    \u0027scheduled update runs, performance data will only be \u0027"}],"source_content_type":"text/x-python","patch_set":19,"id":"6dfb10c6_84f6199e","line":294,"range":{"start_line":294,"start_character":23,"end_line":294,"end_character":26},"in_reply_to":"83d779e9_acd76c92","updated":"2025-11-17 07:41:14.000000000","message":"Ack, looks like these don\u0027t influence the scheduler decisions much and the capacity stats (get_cluster_capacity) behaves the same way as before.","commit_id":"9e16567bd63987462ae031232cac475e713ba115"},{"author":{"_account_id":36180,"name":"Gireesh Awasthi","display_name":"Gireesh","email":"gawasthi2010@gmail.com","username":"agireesh","status":"NetApp"},"change_message_id":"986415387a49ee73e579099e2472e948351df4df","unresolved":false,"context_lines":[{"line_number":291,"context_line":"                    \u0027ONTAP.\u0027),"},{"line_number":292,"context_line":"    cfg.IntOpt(\u0027netapp_performance_cache_expiry_duration\u0027,"},{"line_number":293,"context_line":"               min\u003d60,"},{"line_number":294,"context_line":"               default\u003d300,"},{"line_number":295,"context_line":"               help\u003d\u0027Specifies the time interval (in seconds) between updates\u0027"},{"line_number":296,"context_line":"                    \u0027 of performance data for ONTAP backend pools. When the \u0027"},{"line_number":297,"context_line":"                    \u0027scheduled update runs, performance data will only be \u0027"}],"source_content_type":"text/x-python","patch_set":19,"id":"83d779e9_acd76c92","line":294,"range":{"start_line":294,"start_character":23,"end_line":294,"end_character":26},"in_reply_to":"f468b32b_763fbd68","updated":"2025-11-16 14:37:15.000000000","message":"We discussed this within the team and also consulted the performance team. The performance team suggested setting this value to 5 minutes. According to them, there is not much change in performance data within a 5-minute interval, and most of our manageability products also use a 5-minute interval to collect performance data from ONTAP.","commit_id":"9e16567bd63987462ae031232cac475e713ba115"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"95675cfa2dc78a553c40b9316a535225e7b5a14d","unresolved":true,"context_lines":[{"line_number":292,"context_line":"    cfg.IntOpt(\u0027netapp_performance_cache_expiry_duration\u0027,"},{"line_number":293,"context_line":"               min\u003d60,"},{"line_number":294,"context_line":"               default\u003d300,"},{"line_number":295,"context_line":"               help\u003d\u0027Specifies the time interval (in seconds) between updates\u0027"},{"line_number":296,"context_line":"                    \u0027 of performance data for ONTAP backend pools. When the \u0027"},{"line_number":297,"context_line":"                    \u0027scheduled update runs, performance data will only be \u0027"},{"line_number":298,"context_line":"                    \u0027refreshed if the specified time has elapsed since the \u0027"}],"source_content_type":"text/x-python","patch_set":19,"id":"06118702_26212301","line":295,"range":{"start_line":295,"start_character":77,"end_line":295,"end_character":78},"updated":"2025-11-14 17:12:52.000000000","message":"same","commit_id":"9e16567bd63987462ae031232cac475e713ba115"},{"author":{"_account_id":36180,"name":"Gireesh Awasthi","display_name":"Gireesh","email":"gawasthi2010@gmail.com","username":"agireesh","status":"NetApp"},"change_message_id":"986415387a49ee73e579099e2472e948351df4df","unresolved":false,"context_lines":[{"line_number":292,"context_line":"    cfg.IntOpt(\u0027netapp_performance_cache_expiry_duration\u0027,"},{"line_number":293,"context_line":"               min\u003d60,"},{"line_number":294,"context_line":"               default\u003d300,"},{"line_number":295,"context_line":"               help\u003d\u0027Specifies the time interval (in seconds) between updates\u0027"},{"line_number":296,"context_line":"                    \u0027 of performance data for ONTAP backend pools. When the \u0027"},{"line_number":297,"context_line":"                    \u0027scheduled update runs, performance data will only be \u0027"},{"line_number":298,"context_line":"                    \u0027refreshed if the specified time has elapsed since the \u0027"}],"source_content_type":"text/x-python","patch_set":19,"id":"e43bdd7a_69d460ff","line":295,"range":{"start_line":295,"start_character":77,"end_line":295,"end_character":78},"in_reply_to":"06118702_26212301","updated":"2025-11-16 14:37:15.000000000","message":"Done","commit_id":"9e16567bd63987462ae031232cac475e713ba115"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"95675cfa2dc78a553c40b9316a535225e7b5a14d","unresolved":true,"context_lines":[{"line_number":300,"context_line":"                    \u0027frequent updates, which increases the load on ONTAP. \u0027"},{"line_number":301,"context_line":"                    \u0027Conversely, selecting a higher value means the perf \u0027"},{"line_number":302,"context_line":"                    \u0027data may be slightly outdated but reduces the load on \u0027"},{"line_number":303,"context_line":"                    \u0027ONTAP.\u0027)]"},{"line_number":304,"context_line":""},{"line_number":305,"context_line":"netapp_replication_opts \u003d ["},{"line_number":306,"context_line":"    cfg.MultiOpt(\u0027netapp_replication_aggregate_map\u0027,"}],"source_content_type":"text/x-python","patch_set":19,"id":"e7eeb10f_3c6be0a7","line":303,"updated":"2025-11-14 17:12:52.000000000","message":"optional but would\u0027ve been good to also mention the properties that comes under performance stats and the one that comes under deduplication stats.","commit_id":"9e16567bd63987462ae031232cac475e713ba115"},{"author":{"_account_id":36180,"name":"Gireesh Awasthi","display_name":"Gireesh","email":"gawasthi2010@gmail.com","username":"agireesh","status":"NetApp"},"change_message_id":"986415387a49ee73e579099e2472e948351df4df","unresolved":false,"context_lines":[{"line_number":300,"context_line":"                    \u0027frequent updates, which increases the load on ONTAP. \u0027"},{"line_number":301,"context_line":"                    \u0027Conversely, selecting a higher value means the perf \u0027"},{"line_number":302,"context_line":"                    \u0027data may be slightly outdated but reduces the load on \u0027"},{"line_number":303,"context_line":"                    \u0027ONTAP.\u0027)]"},{"line_number":304,"context_line":""},{"line_number":305,"context_line":"netapp_replication_opts \u003d ["},{"line_number":306,"context_line":"    cfg.MultiOpt(\u0027netapp_replication_aggregate_map\u0027,"}],"source_content_type":"text/x-python","patch_set":19,"id":"83ef4aec_0f34c6f8","line":303,"in_reply_to":"e7eeb10f_3c6be0a7","updated":"2025-11-16 14:37:15.000000000","message":"Done. using the field name populated for pools.","commit_id":"9e16567bd63987462ae031232cac475e713ba115"}],"releasenotes/notes/bug-2128652-fix-enable-configurable-polling-intervals-and-counter-caching-4f1d33a10d08e4a5.yaml":[{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"dc0cd70db545f79fcac89c750f2c499523be2470","unresolved":true,"context_lines":[{"line_number":11,"context_line":"    netapp_performance_cache_expiry_duration and"},{"line_number":12,"context_line":"    netapp_dedupe_cache_expiry_duration."},{"line_number":13,"context_line":"    These options control the frequency of performance and deduplication"},{"line_number":14,"context_line":"    data retrieval from ONTAP."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"    These options are need to fine-tune the frequency of querying performance"},{"line_number":17,"context_line":"    and deduplication metrics, as these queries occur both during the delete"}],"source_content_type":"text/x-yaml","patch_set":11,"id":"a431d77b_4b82712a","line":14,"updated":"2025-11-07 23:36:24.000000000","message":"If you put the option names in double-backticks, they will be rendered in monospace font in the HTML release notes.","commit_id":"337a070f4f21542e71435d23d72e0f6a3d4401c5"},{"author":{"_account_id":36180,"name":"Gireesh Awasthi","display_name":"Gireesh","email":"gawasthi2010@gmail.com","username":"agireesh","status":"NetApp"},"change_message_id":"798034ad869b59ed6acd5b962601ed9723420a58","unresolved":false,"context_lines":[{"line_number":11,"context_line":"    netapp_performance_cache_expiry_duration and"},{"line_number":12,"context_line":"    netapp_dedupe_cache_expiry_duration."},{"line_number":13,"context_line":"    These options control the frequency of performance and deduplication"},{"line_number":14,"context_line":"    data retrieval from ONTAP."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"    These options are need to fine-tune the frequency of querying performance"},{"line_number":17,"context_line":"    and deduplication metrics, as these queries occur both during the delete"}],"source_content_type":"text/x-yaml","patch_set":11,"id":"b86b86ad_c5357388","line":14,"in_reply_to":"a431d77b_4b82712a","updated":"2025-11-10 08:53:58.000000000","message":"Done","commit_id":"337a070f4f21542e71435d23d72e0f6a3d4401c5"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"dc0cd70db545f79fcac89c750f2c499523be2470","unresolved":true,"context_lines":[{"line_number":13,"context_line":"    These options control the frequency of performance and deduplication"},{"line_number":14,"context_line":"    data retrieval from ONTAP."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"    These options are need to fine-tune the frequency of querying performance"},{"line_number":17,"context_line":"    and deduplication metrics, as these queries occur both during the delete"},{"line_number":18,"context_line":"    volume workflow and in the update_volume_stats method, which is triggered"},{"line_number":19,"context_line":"    by the periodic interval task. Users can configure these parameters to"}],"source_content_type":"text/x-yaml","patch_set":11,"id":"fa9d4699_52842406","line":16,"range":{"start_line":16,"start_character":22,"end_line":16,"end_character":26},"updated":"2025-11-07 23:36:24.000000000","message":"needed","commit_id":"337a070f4f21542e71435d23d72e0f6a3d4401c5"},{"author":{"_account_id":36180,"name":"Gireesh Awasthi","display_name":"Gireesh","email":"gawasthi2010@gmail.com","username":"agireesh","status":"NetApp"},"change_message_id":"798034ad869b59ed6acd5b962601ed9723420a58","unresolved":false,"context_lines":[{"line_number":13,"context_line":"    These options control the frequency of performance and deduplication"},{"line_number":14,"context_line":"    data retrieval from ONTAP."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"    These options are need to fine-tune the frequency of querying performance"},{"line_number":17,"context_line":"    and deduplication metrics, as these queries occur both during the delete"},{"line_number":18,"context_line":"    volume workflow and in the update_volume_stats method, which is triggered"},{"line_number":19,"context_line":"    by the periodic interval task. Users can configure these parameters to"}],"source_content_type":"text/x-yaml","patch_set":11,"id":"3df78841_1f8a348a","line":16,"range":{"start_line":16,"start_character":22,"end_line":16,"end_character":26},"in_reply_to":"fa9d4699_52842406","updated":"2025-11-10 08:53:58.000000000","message":"Done","commit_id":"337a070f4f21542e71435d23d72e0f6a3d4401c5"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"dc0cd70db545f79fcac89c750f2c499523be2470","unresolved":true,"context_lines":[{"line_number":16,"context_line":"    These options are need to fine-tune the frequency of querying performance"},{"line_number":17,"context_line":"    and deduplication metrics, as these queries occur both during the delete"},{"line_number":18,"context_line":"    volume workflow and in the update_volume_stats method, which is triggered"},{"line_number":19,"context_line":"    by the periodic interval task. Users can configure these parameters to"},{"line_number":20,"context_line":"    prevent the queries from running simultaneously when both workflows."},{"line_number":21,"context_line":""}],"source_content_type":"text/x-yaml","patch_set":11,"id":"bf1e090b_aca2fe5d","line":20,"range":{"start_line":19,"start_character":35,"end_line":20,"end_character":72},"updated":"2025-11-07 23:36:24.000000000","message":"This sentence is a bit confusing (and seems to be incomplete).  I think the point you want to make is that (a) performance-stats-gathering events, whether triggered by driver action or the periodic task, will respect the configured intervals, and (b) you don\u0027t want to set them to the same value or else they may run simultaneously and degrade array performance.  The default values observe a 300 sec difference between the two settings, which should be adequate for most installations.  And maybe say something about enable debug level logging to see the stats being fetched or skipped (though maybe that would be better in the driver documentation; it might be too much info for a release note).","commit_id":"337a070f4f21542e71435d23d72e0f6a3d4401c5"},{"author":{"_account_id":36180,"name":"Gireesh Awasthi","display_name":"Gireesh","email":"gawasthi2010@gmail.com","username":"agireesh","status":"NetApp"},"change_message_id":"798034ad869b59ed6acd5b962601ed9723420a58","unresolved":false,"context_lines":[{"line_number":16,"context_line":"    These options are need to fine-tune the frequency of querying performance"},{"line_number":17,"context_line":"    and deduplication metrics, as these queries occur both during the delete"},{"line_number":18,"context_line":"    volume workflow and in the update_volume_stats method, which is triggered"},{"line_number":19,"context_line":"    by the periodic interval task. Users can configure these parameters to"},{"line_number":20,"context_line":"    prevent the queries from running simultaneously when both workflows."},{"line_number":21,"context_line":""}],"source_content_type":"text/x-yaml","patch_set":11,"id":"a44df406_5da33dd3","line":20,"range":{"start_line":19,"start_character":35,"end_line":20,"end_character":72},"in_reply_to":"bf1e090b_aca2fe5d","updated":"2025-11-10 08:53:58.000000000","message":"Updated below info \n\nThese options allow fine-tuning of the frequency at which performance\n    and deduplication metrics are queried. Since both the delete volume \n    workflow and the periodic interval task update the volume stats, \n    running them simultaneously can degrade storage backend performance.\n    Users can adjust these parameters to ensure that performance and \n    deduplication metrics are fetched at configurable intervals, rather\n    than during every periodic task or volume delete workflow.","commit_id":"337a070f4f21542e71435d23d72e0f6a3d4401c5"}]}
