)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":10058,"name":"Erlon R. Cruz","email":"erlon.rodrigues.cruz@canonical.com","username":"sombrafam"},"change_message_id":"3123f4d88ef02de2e4e9037e8f10f4d76898bb28","unresolved":true,"context_lines":[{"line_number":7,"context_line":"NetApp: Report used capacity consumed at FlexVol to Cinder pool"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Add netapp_driver_reports_physical_capacity option for accurate capacity reporting."},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"Introduce netapp_driver_reports_physical_capacity boolean config option"},{"line_number":12,"context_line":"to enable reporting of physical used space (flexvol space.physical_used)"},{"line_number":13,"context_line":"as provisioned_capacity_gb. This option takes precedence over"},{"line_number":14,"context_line":"netapp_driver_reports_provisioned_capacity."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"This addresses scenarios like Veritas NetBackup workflows where volumes"},{"line_number":17,"context_line":"are created from clone-of-clone operations that don\u0027t consume additional"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"23d68d42_103e0001","line":14,"range":{"start_line":10,"start_character":0,"end_line":14,"end_character":43},"updated":"2025-12-03 15:18:11.000000000","message":"This is doing the opposite of what you mentioned in the IRC meeting. I understand that calculating the size of each LUN in the storage can be resource-demanding, especially with some storage implementations (though I don\u0027t think it\u0027s the case with NetApp). Using a storage-provided functionality, like flexvol space.provisioned_capacity_gb, is always a better option. However, you are proposing to replace provisioned_capacity_gb with physical_used, which is fundamentally wrong.\n\nFor the scenarios you foresee, you should set the max_over_subscription_ratio to a higher value to accommodate those needs.","commit_id":"6c85abf9ad101d7cebbaaad2f125893635224a78"},{"author":{"_account_id":36171,"name":"jayaanand borra","display_name":"jayaanand borra","email":"jayaanand.borra@netapp.com","username":"jayaanan","status":"netapp"},"change_message_id":"f3f3da619e923a1dca44647a0844a6efb4f2b065","unresolved":false,"context_lines":[{"line_number":7,"context_line":"NetApp: Report used capacity consumed at FlexVol to Cinder pool"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Add netapp_driver_reports_physical_capacity option for accurate capacity reporting."},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"Introduce netapp_driver_reports_physical_capacity boolean config option"},{"line_number":12,"context_line":"to enable reporting of physical used space (flexvol space.physical_used)"},{"line_number":13,"context_line":"as provisioned_capacity_gb. This option takes precedence over"},{"line_number":14,"context_line":"netapp_driver_reports_provisioned_capacity."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"This addresses scenarios like Veritas NetBackup workflows where volumes"},{"line_number":17,"context_line":"are created from clone-of-clone operations that don\u0027t consume additional"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"215b9c4e_9f0929c8","line":14,"range":{"start_line":10,"start_character":0,"end_line":14,"end_character":43},"in_reply_to":"23d68d42_103e0001","updated":"2026-01-08 16:41:40.000000000","message":"Thank you! @erlon.rodrigues.cruz@canonical.com, We are not replacing provisioned_capacity_gb. Old implementation is intact and addressing specific user scenarios for customer where Cinder provisioned_capacity_gb is not actual provisioned_capacity_gb at ONTAP and proposed solution is specific to narrow workflows so we are implementing under new flag. Customer when running NetBackup with OpenStack are experiencing inflated capacity reporting issues:\nNetBackup creates volumes from snapshots for backup operations → these become clones on ONTAP and consume zero physical storage on your side.\nCinder counts them at full logical size in provisioned_capacity_gb resulting in 2x capacity inflation during backup and provisioning failure even when ample physical space. This is forcing customers to abandon full backups and revert to less efficient incremental-only strategies just to work around the reporting issue.","commit_id":"6c85abf9ad101d7cebbaaad2f125893635224a78"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"ac0b16dc6415a226769aacafe540a78206abda14","unresolved":true,"context_lines":[{"line_number":20,"context_line":"alert the user that both options must be enabled for clone exclusion"},{"line_number":21,"context_line":"to take effect."},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"This addresses scenarios like Veritas NetBackup workflows where volumes"},{"line_number":24,"context_line":"are created from clone-of-clone operations that don\u0027t consume additional"},{"line_number":25,"context_line":"physical storage at NetApp."},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"Change-Id: I81e5198089b3278e84e45a37c7734c45c3104e4a"},{"line_number":28,"context_line":"Signed-off-by: jayaanan \u003cjayaanand.borra@netapp.com\u003e"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":9,"id":"a4877a0b_cdf2a1c3","line":25,"range":{"start_line":23,"start_character":0,"end_line":25,"end_character":27},"updated":"2026-02-16 14:23:33.000000000","message":"I\u0027m still unclear on the problem statement.\nWhat is the exact use case and how does the change help mitigate it?\nI, along with other reviewers, might not have enough workflow knowledge of backup solutions like NetBackup and it would be good to elaborate what challenges are faced by it and how not including the clones fix it.","commit_id":"2623c2c046120eaf86ed04a4831b61219a21236f"},{"author":{"_account_id":38059,"name":"Anoop Kumar Shukla","display_name":"Anoop Shukla","email":"anoop.shukla@netapp.com","username":"anoop2","status":"NetApp"},"change_message_id":"29a95e535c7e02dd33df47add0fa3c66d6ace62d","unresolved":false,"context_lines":[{"line_number":20,"context_line":"alert the user that both options must be enabled for clone exclusion"},{"line_number":21,"context_line":"to take effect."},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"This addresses scenarios like Veritas NetBackup workflows where volumes"},{"line_number":24,"context_line":"are created from clone-of-clone operations that don\u0027t consume additional"},{"line_number":25,"context_line":"physical storage at NetApp."},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"Change-Id: I81e5198089b3278e84e45a37c7734c45c3104e4a"},{"line_number":28,"context_line":"Signed-off-by: jayaanan \u003cjayaanand.borra@netapp.com\u003e"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":9,"id":"39a6748c_ccde4c80","line":25,"range":{"start_line":23,"start_character":0,"end_line":25,"end_character":27},"in_reply_to":"6c2efd56_ba507b4e","updated":"2026-03-03 05:20:22.000000000","message":"Today for a sis clone, ONTAP does not report the actuals (additional block sizes) per LUN/namespace. This is something that we will need to open up as a requirement on the platform team.","commit_id":"2623c2c046120eaf86ed04a4831b61219a21236f"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"3dd98f1ccd246acc45d9eb24ab1392e74ad19f15","unresolved":false,"context_lines":[{"line_number":20,"context_line":"alert the user that both options must be enabled for clone exclusion"},{"line_number":21,"context_line":"to take effect."},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"This addresses scenarios like Veritas NetBackup workflows where volumes"},{"line_number":24,"context_line":"are created from clone-of-clone operations that don\u0027t consume additional"},{"line_number":25,"context_line":"physical storage at NetApp."},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"Change-Id: I81e5198089b3278e84e45a37c7734c45c3104e4a"},{"line_number":28,"context_line":"Signed-off-by: jayaanan \u003cjayaanand.borra@netapp.com\u003e"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":9,"id":"6c2efd56_ba507b4e","line":25,"range":{"start_line":23,"start_character":0,"end_line":25,"end_character":27},"in_reply_to":"96f8562e_fe50da95","updated":"2026-02-25 07:30:55.000000000","message":"\u003e Cinder counts each clone at full logical size in provisioned_capacity_gb\n\nI don\u0027t think it\u0027s accurate to say this. NetApp array is reporting snapshot size as equivalent to volume size and that is what Cinder scheduler considers while creating/scheduling new volumes. We are trying to address this by excluding snapshots in capacity calculations but IMO the right thing would be for the NetApp array to report on-disk size of snapshot hence no special handling would be needed. Not sure if that\u0027s feasible from the array side (any param/config to enable/disable this)","commit_id":"2623c2c046120eaf86ed04a4831b61219a21236f"},{"author":{"_account_id":36171,"name":"jayaanand borra","display_name":"jayaanand borra","email":"jayaanand.borra@netapp.com","username":"jayaanan","status":"netapp"},"change_message_id":"eabb548016e5d76f66e75bf7c522f8c4c95e1214","unresolved":false,"context_lines":[{"line_number":20,"context_line":"alert the user that both options must be enabled for clone exclusion"},{"line_number":21,"context_line":"to take effect."},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"This addresses scenarios like Veritas NetBackup workflows where volumes"},{"line_number":24,"context_line":"are created from clone-of-clone operations that don\u0027t consume additional"},{"line_number":25,"context_line":"physical storage at NetApp."},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"Change-Id: I81e5198089b3278e84e45a37c7734c45c3104e4a"},{"line_number":28,"context_line":"Signed-off-by: jayaanan \u003cjayaanand.borra@netapp.com\u003e"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":9,"id":"96f8562e_fe50da95","line":25,"range":{"start_line":23,"start_character":0,"end_line":25,"end_character":27},"in_reply_to":"9fdbd4a1_bc250ae7","updated":"2026-02-17 10:33:24.000000000","message":"Veritas NetBackup creates Cinder volumes from snapshots (openstack volume create --snapshot) for backup operations. On NetApp ONTAP, these are clone-of-clone (COW) volumes that consume zero additional physical storage — they are metadata pointers to the parent\u0027s data blocks. However, Cinder counts each clone at full logical size in provisioned_capacity_gb. Example: 1 source volume (10TB) + 2 NetBackup clone snapshots \u003d 30TB reported provisioned capacity, while actual physical consumption remains ~10TB. This causes the CapacityFilter to reject new volume creation requests because it believes the backend is overprovisioned.\n\nThe netapp_driver_exclude_clones_capacity option enables the NetApp driver to exclude ONTAP clones (identified via the is-clone attribute) from provisioned_capacity_gb, reporting only non-clone storage consumption. This is an opt-in driver configuration.","commit_id":"2623c2c046120eaf86ed04a4831b61219a21236f"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"92e96432ee3e2ede67a1718b3641dfd393062cd7","unresolved":true,"context_lines":[{"line_number":20,"context_line":"alert the user that both options must be enabled for clone exclusion"},{"line_number":21,"context_line":"to take effect."},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"This addresses scenarios like Veritas NetBackup workflows where volumes"},{"line_number":24,"context_line":"are created from clone-of-clone operations that don\u0027t consume additional"},{"line_number":25,"context_line":"physical storage at NetApp."},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"Change-Id: I81e5198089b3278e84e45a37c7734c45c3104e4a"},{"line_number":28,"context_line":"Signed-off-by: jayaanan \u003cjayaanand.borra@netapp.com\u003e"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":9,"id":"9fdbd4a1_bc250ae7","line":25,"range":{"start_line":23,"start_character":0,"end_line":25,"end_character":27},"in_reply_to":"a4877a0b_cdf2a1c3","updated":"2026-02-16 14:44:33.000000000","message":"Same question from me.","commit_id":"2623c2c046120eaf86ed04a4831b61219a21236f"}],"/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":"f3f3da619e923a1dca44647a0844a6efb4f2b065","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"1fdfcce7_b3b2f6a1","updated":"2026-01-08 16:41:40.000000000","message":"Thank you! @erlon.rodrigues.cruz@canonical.com. I really appreciate your time in review. I try to provide rational behind our implementation. can you please review again.","commit_id":"be414a7b254e9fb6537cbcac454ffa550d884eb2"},{"author":{"_account_id":38059,"name":"Anoop Kumar Shukla","display_name":"Anoop Shukla","email":"anoop.shukla@netapp.com","username":"anoop2","status":"NetApp"},"change_message_id":"496c70910fe5850c0f14aba67035896e018004e9","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":7,"id":"bf87988f_9c07f127","updated":"2026-01-14 14:47:43.000000000","message":"Missing releasenotes.","commit_id":"302320b76513a249a079fcfb15263ec0f7cd421f"},{"author":{"_account_id":36171,"name":"jayaanand borra","display_name":"jayaanand borra","email":"jayaanand.borra@netapp.com","username":"jayaanan","status":"netapp"},"change_message_id":"d66478a3edabd505068643083ddc7cb39cb2da40","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"17326320_a4d38127","updated":"2026-01-14 06:21:09.000000000","message":"recheck cinder-plugin-ceph-tempest failure is not related to change","commit_id":"302320b76513a249a079fcfb15263ec0f7cd421f"},{"author":{"_account_id":36171,"name":"jayaanand borra","display_name":"jayaanand borra","email":"jayaanand.borra@netapp.com","username":"jayaanan","status":"netapp"},"change_message_id":"2eedc32fc118e1958ef265f841bdf57bc1cc1c81","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"e104830a_b05b0cec","in_reply_to":"bf87988f_9c07f127","updated":"2026-01-15 03:52:25.000000000","message":"Thank you! Missing release notes are added.","commit_id":"302320b76513a249a079fcfb15263ec0f7cd421f"},{"author":{"_account_id":36171,"name":"jayaanand borra","display_name":"jayaanand borra","email":"jayaanand.borra@netapp.com","username":"jayaanan","status":"netapp"},"change_message_id":"b598687ded5816867a32768469379a6d0f523ca4","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":8,"id":"ccb1cbe3_2c32fbf0","updated":"2026-01-22 15:36:03.000000000","message":"@erlon.rodrigues.cruz@canonical.com, I appreciate your comment. Please take a look at my comments in line.Also is there a way to discount read-only volumes from provisioned capacity. Read only volumes are COW and pointer to original data and don\u0027t consume any capacity at ONTAP storage. We changed approach from earlier can you please look at changes and my comments.","commit_id":"01d1018c960cfc5c799d8f3356d091bf0c1c770f"},{"author":{"_account_id":36171,"name":"jayaanand borra","display_name":"jayaanand borra","email":"jayaanand.borra@netapp.com","username":"jayaanan","status":"netapp"},"change_message_id":"709dc09ac3bc7ee80d6711bf03dae6ae28999ddc","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":8,"id":"44dc97fa_95540a41","updated":"2026-01-29 12:08:21.000000000","message":"Hi Erlon,\n\nThank you for your continued engagement and the positive feedback!\n\nRegarding AllocatedCapacityWeigher - I\u0027ve analyzed this option thoroughly and unfortunately it does not solve our use case. Here\u0027s why:\n\nThe distinction is in HOW the clones are created:\n\nallocated_capacity_gb \u003d volumes tracked by Cinder (created via Cinder API)\nprovisioned_capacity_gb \u003d all volumes on storage backend\nIn the Veritas NetBackup workflow (as documented at https://www.veritas.com/support/en_US/doc/147269993-165972820-0/v148940490-165972820), NetBackup creates volumes through the Cinder API using openstack volume create --snapshot. These are NOT external volumes - they are Cinder-managed volumes.\n\nTherefore:\n\nBoth allocated_capacity_gb AND provisioned_capacity_gb include these clone volumes\nAllocatedCapacityWeigher would still see the inflated capacity\n\nPlease look at below example:\n3 base volumes + 3 clone-of-clone volumes of 1GB each(created via Cinder API)\nallocated_capacity_gb \u003d 6 GB (includes clones-of-clone)\nWith my fix: provisioned_capacity_gb \u003d 3.0 GB (excludes clones-of-clone)\nThe fundamental issue: On ONTAP, these are clone-of-clone (COW) volumes that consume zero additional physical storage. Neither allocated_capacity_gb nor standard provisioned_capacity_gb reflects this storage-efficient behavior. Only the driver has knowledge of the ONTAP is-clone attribute.\n\nI believe driver-level clone detection remains necessary for this use case. The option netapp_driver_discount_clones_capacity provides an opt-in mechanism for customers who need this behavior.\n\nCan you please reconsidering this approach again with this analysis.\n\nThank you!\nJayaanand.","commit_id":"01d1018c960cfc5c799d8f3356d091bf0c1c770f"},{"author":{"_account_id":10058,"name":"Erlon R. Cruz","email":"erlon.rodrigues.cruz@canonical.com","username":"sombrafam"},"change_message_id":"767fbcd01270de57ce4408e4d3a767e7759a3985","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":8,"id":"fb95380d_a2ec8fac","updated":"2026-01-21 12:21:02.000000000","message":"Hi Jayaanand,\n\nThis approach is breaking the Cinder thin provisioning concept and is not needed, since you can solve the problem you described using the available scheduling configurations in cinder (max_over_subscription_ratio) and with other scheduler options[1][3].\n\nAccording to the thin provisioning specs[2], provisioned_capacity_gb is defined as:\n\n\"The amount of capacity that would be used in the storage array\u0027s pool being used by Cinder if all the volumes present in there were completely full.\"\n\nYour implementation breaks this concept and reports used_capacity. But, used_capacity !\u003d provisioned_capacity. You mentions that:\n\n\"This addresses scenarios like Veritas NetBackup workflows where volumes are created from clone-of-clone operations that don\u0027t consume additional physical storage at NetApp\". \n\nThis is exactly what thin provisioning with deduplication/cloning is supposed to handle! The max_over_subscription_ratio exists precisely to allow this. If they want to account for storage efficiency, they could:\n\n1. Use the correct provisioned_capacity_gb (sum of volume sizes)\n2. Adjust their max_over_subscription_ratio to reflect their storage efficiency\n3. Optionally, use the auto mode for max_over_subscription_ratio which dynamically adjusts based on actual usage\n4. Use allocated_capacity_weight_multiplier/capacity_weight_multiplier\n5. Define custom filter functions: https://docs.openstack.org/cinder/latest/admin/driver-filter-weighing.html\n\n\n_______________\n[1] https://docs.openstack.org/cinder/pike/scheduler-weights.html#allocatedcapacityweigher\n\n[2] https://specs.openstack.org/openstack/cinder-specs/specs/queens/provisioning-improvements.html\n\n[3] https://docs.openstack.org/cinder/latest/admin/driver-filter-weighing.html","commit_id":"01d1018c960cfc5c799d8f3356d091bf0c1c770f"},{"author":{"_account_id":38059,"name":"Anoop Kumar Shukla","display_name":"Anoop Shukla","email":"anoop.shukla@netapp.com","username":"anoop2","status":"NetApp"},"change_message_id":"94b11f5d9d2fee9ebe8756adc1b9c6cceececc69","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":8,"id":"df601aec_6e85655b","updated":"2026-01-16 14:49:41.000000000","message":"LGTM","commit_id":"01d1018c960cfc5c799d8f3356d091bf0c1c770f"},{"author":{"_account_id":36171,"name":"jayaanand borra","display_name":"jayaanand borra","email":"jayaanand.borra@netapp.com","username":"jayaanan","status":"netapp"},"change_message_id":"2eedc32fc118e1958ef265f841bdf57bc1cc1c81","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":8,"id":"b8c4d6b2_9d153186","updated":"2026-01-15 03:52:25.000000000","message":"Thank you! Anoop, Missing release notes are added. Please review again.","commit_id":"01d1018c960cfc5c799d8f3356d091bf0c1c770f"},{"author":{"_account_id":30555,"name":"Fernando Ferraz","display_name":"Fernando Ferraz","email":"fesilva@redhat.com","username":"fernandoperches"},"change_message_id":"5e136b5ee21ef9b1c9f3059e531d35bd69dedb7f","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":8,"id":"38ea1e31_722fefdc","updated":"2026-02-05 13:23:43.000000000","message":"hi jayaanand borra, a few comments inline.","commit_id":"01d1018c960cfc5c799d8f3356d091bf0c1c770f"},{"author":{"_account_id":36171,"name":"jayaanand borra","display_name":"jayaanand borra","email":"jayaanand.borra@netapp.com","username":"jayaanan","status":"netapp"},"change_message_id":"c7a82d7c0c88f9e8a948c85767a165d41de80571","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":8,"id":"611fc42a_0f581467","updated":"2026-01-20 07:07:08.000000000","message":"recheck","commit_id":"01d1018c960cfc5c799d8f3356d091bf0c1c770f"},{"author":{"_account_id":10058,"name":"Erlon R. Cruz","email":"erlon.rodrigues.cruz@canonical.com","username":"sombrafam"},"change_message_id":"566dd2e67a874327ab274ea27841e353fc06a66a","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":8,"id":"e5e28eef_f9fb6132","in_reply_to":"ccb1cbe3_2c32fbf0","updated":"2026-01-28 12:58:23.000000000","message":"Thanks for reaching out and conducting a thorough investigation on the points I raised. Regarding number one, after reviewing, I considered whether that would be a possibility for the driver, and I think it\u0027s a good direction to proceed.\n\nWhat are your thoughts on the AllocatedCapacityWeigher? It would make scheduling behave similarly to the alternative implementation you are suggesting.\n\nI\u0027m looking forward for your next version implementing that approach.","commit_id":"01d1018c960cfc5c799d8f3356d091bf0c1c770f"},{"author":{"_account_id":36171,"name":"jayaanand borra","display_name":"jayaanand borra","email":"jayaanand.borra@netapp.com","username":"jayaanan","status":"netapp"},"change_message_id":"709dc09ac3bc7ee80d6711bf03dae6ae28999ddc","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":8,"id":"e51a26cd_e4a9491c","in_reply_to":"e5e28eef_f9fb6132","updated":"2026-01-29 12:08:21.000000000","message":"Hi Erlon,\n\nThank you for your continued engagement and the positive feedback!\n\nRegarding AllocatedCapacityWeigher - I\u0027ve analyzed this option thoroughly and unfortunately it does not solve our use case. Here\u0027s why:\n\nThe distinction is in HOW the clones are created:\n\nallocated_capacity_gb \u003d volumes tracked by Cinder (created via Cinder API)\nprovisioned_capacity_gb \u003d all volumes on storage backend\nIn the Veritas NetBackup workflow (as documented at https://www.veritas.com/support/en_US/doc/147269993-165972820-0/v148940490-165972820), NetBackup creates volumes through the Cinder API using openstack volume create --snapshot. These are NOT external volumes - they are Cinder-managed volumes.\n\nTherefore:\n\nBoth allocated_capacity_gb AND provisioned_capacity_gb include these clone volumes\nAllocatedCapacityWeigher would still see the inflated capacity\n\nPlease look at below example:\n3 base volumes + 3 clone-of-clone volumes of 1GB each(created via Cinder API)\nallocated_capacity_gb \u003d 6 GB (includes clones-of-clone)\nWith my fix: provisioned_capacity_gb \u003d 3.0 GB (excludes clones-of-clone)\nThe fundamental issue: On ONTAP, these are clone-of-clone (COW) volumes that consume zero additional physical storage. Neither allocated_capacity_gb nor standard provisioned_capacity_gb reflects this storage-efficient behavior. Only the driver has knowledge of the ONTAP is-clone attribute.\n\nI believe driver-level clone detection remains necessary for this use case. The option netapp_driver_discount_clones_capacity provides an opt-in mechanism for customers who need this behavior.\n\nCan you please reconsidering this approach again with this analysis.","commit_id":"01d1018c960cfc5c799d8f3356d091bf0c1c770f"},{"author":{"_account_id":36171,"name":"jayaanand borra","display_name":"jayaanand borra","email":"jayaanand.borra@netapp.com","username":"jayaanan","status":"netapp"},"change_message_id":"b598687ded5816867a32768469379a6d0f523ca4","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":8,"id":"58374f94_9e42e037","in_reply_to":"fb95380d_a2ec8fac","updated":"2026-01-22 15:36:03.000000000","message":"Hi Erlon,\n\nThank you for the detailed review and references. I appreciate your expertise suggestion on Cinder\u0027s thin provisioning architecture. Let me address your concerns point by point:\n\n1. Regarding provisioned_capacity_gb Definition\nYou\u0027re absolutely correct about the spec definition. I acknowledge that our initial implementation conflated provisioned_capacity with allocated_capacity. We will revise the implementation to:\n\nKeep provisioned_capacity_gb unchanged - it will continue to report the sum of all volume logical sizes as per the spec[2]\nWhen netapp_driver_discount_clones_capacity\u003dTrue, we will properly exclude read-only snapshot clones from the provisioned capacity calculation, while still counting volumes-from-snapshots that are user-facing volumes\nThis aligns with the thin provisioning spec\u0027s intent: \"capacity that would be used if all volumes were completely full\" - read-only snapshots cannot be \"filled\" and are genuinely zero-consumption in our specific workflow.\n\n2. Regarding Scheduler Options (max_over_subscription_ratio, filters, weighers)\nWe\u0027ve reviewed the scheduler configuration options you referenced [1][3], and they are excellent solutions for general thin provisioning scenarios. However, there\u0027s a specific technical limitation with the Veritas NetBackup workflow:\n\nThe Veritas NetBackup Scenario:\nIn Veritas backup workflows:\n\nBackup appliances create clone-of-clone volumes from Cinder snapshots\nThese clones are read-only by design in the backup workflow\nNetApp ONTAP\u0027s FlexClone technology means these consume zero additional physical blocks - they\u0027re purely metadata pointers\nHowever, Cinder treats these as full volumes in provisioned_capacity_gb\nThe Problem:\nA 10TB Cinder volume can spawn 50+ backup clones, making provisioned_capacity_gb report 510TB when actual consumption is still 10TB. Even with max_over_subscription_ratio\u003dauto, the scheduler uses provisioned_capacity_gb as the base metric, causing premature backend exhaustion. Our Client is a cloud provider, By increasing over subscription ration we are letting both Cinder volume and temporary clones to be treated same. We want user to consciously decide this flag for their specific workloads and be sure that clone-of-clones they will start writing. this will upset provisioning capacity calculations and storage capacity.\n\nWhy Scheduler Options Alone Don\u0027t Fully Solve This:\nmax_over_subscription_ratio - Works well for thin provisioning, but doesn\u0027t discount read-only clones only. This solution will be equally applicable for both LUNs and Clones equally.we\u0027re reporting clones as provisioned capacity when they\u0027re not.\n\nSpec compliance - read-only clones can\u0027t be \"filled\" per the spec definition\nScheduler effectiveness - max_over_subscription_ratio and weighers work with accurate data. Can you please review again and let me know if any other alternative will selectively mark volumes readonly and exclude from provisioned capacity GB as ONTAP takes care of not consuming any capacity for clone of clones until no change in capacity.","commit_id":"01d1018c960cfc5c799d8f3356d091bf0c1c770f"},{"author":{"_account_id":36171,"name":"jayaanand borra","display_name":"jayaanand borra","email":"jayaanand.borra@netapp.com","username":"jayaanan","status":"netapp"},"change_message_id":"a83168306bae635f5b01275898415e3d8f124b2f","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":9,"id":"89d0d6b0_59273986","updated":"2026-02-05 16:03:28.000000000","message":"@fesilva@redhat.com thank you for the comments. Updated logic and text to address your review comments. Please review again.","commit_id":"2623c2c046120eaf86ed04a4831b61219a21236f"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"92e96432ee3e2ede67a1718b3641dfd393062cd7","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":9,"id":"54cefe8f_df46de2d","updated":"2026-02-16 14:44:33.000000000","message":"Comments inline.","commit_id":"2623c2c046120eaf86ed04a4831b61219a21236f"},{"author":{"_account_id":38059,"name":"Anoop Kumar Shukla","display_name":"Anoop Shukla","email":"anoop.shukla@netapp.com","username":"anoop2","status":"NetApp"},"change_message_id":"ec25a23172d99a2abe227666c1eaa8f1137ebf46","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":9,"id":"dd287944_c80b31f4","updated":"2026-02-06 06:52:55.000000000","message":"LGTM","commit_id":"2623c2c046120eaf86ed04a4831b61219a21236f"},{"author":{"_account_id":36171,"name":"jayaanand borra","display_name":"jayaanand borra","email":"jayaanand.borra@netapp.com","username":"jayaanan","status":"netapp"},"change_message_id":"29a8f6eb934d8039acd1e35c9cb27ec75e905881","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":14,"id":"1b64bab9_0c1fcb52","updated":"2026-04-30 12:46:23.000000000","message":"recheck","commit_id":"4d288e1151ca9bf85f5520879bf3a37801e62716"},{"author":{"_account_id":10058,"name":"Erlon R. Cruz","email":"erlon.rodrigues.cruz@canonical.com","username":"sombrafam"},"change_message_id":"828e7a87038401a41336a12ed8ac3b2bc69cf9a2","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":15,"id":"2f0821b3_5028c59f","updated":"2026-04-24 14:27:01.000000000","message":"Hi guys, here are my considerations on this discussions after having reviewed my comments in the discussions and from others.The current design (PS15) — opt-in, coupled to netapp_driver_reports_provisioned_capacity, with a release note warning — is acceptable as a *tactical workaround*, but there are remaining objections are still legitimate and not fully answered:\n\n\n* Fernando\u0027s drift concern must be documented in the reno very clearly (enabling this may underreport provisioned capacity as clones are written to). \n\n* Rajat\u0027s ZAPI/REST concern is not resolved. I agree with Fernando\u0027s proposal: keep the REST path for LUN sizes, and only fall back to ZAPI is-clone when the exclude_clones flag is explicitly set. That\u0027s a small delta and closes the tech-debt criticism.\n\n* The array-side fix should be explicitly referenced in commit message as the long-term plan, with the Cinder option documented as an interim mitigation that will be removed/superseded once ONTAP reports per-FlexVol provisioned capacity excluding clones.\n\n* CI is not passing (might be just a recheck)","commit_id":"7b4593a0341370c877a4a3b5082b77a492076799"},{"author":{"_account_id":36171,"name":"jayaanand borra","display_name":"jayaanand borra","email":"jayaanand.borra@netapp.com","username":"jayaanan","status":"netapp"},"change_message_id":"29a8f6eb934d8039acd1e35c9cb27ec75e905881","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":15,"id":"ee6559db_c4c154e9","in_reply_to":"2f0821b3_5028c59f","updated":"2026-04-30 12:46:23.000000000","message":"First two review comments are addressed. Please review again.","commit_id":"7b4593a0341370c877a4a3b5082b77a492076799"},{"author":{"_account_id":36171,"name":"jayaanand borra","display_name":"jayaanand borra","email":"jayaanand.borra@netapp.com","username":"jayaanan","status":"netapp"},"change_message_id":"c012c6c0c0ac90f6ffbdd35e85f7e8267f9ebaea","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":16,"id":"5d72f37c_a9f1a4c9","updated":"2026-04-30 12:47:22.000000000","message":"Thank you! Erlon and Cores for suggestion and workaround. Please review again.","commit_id":"19bdf7102e367ec7bdf32f8ce10f9e77b6a7fe81"}],"cinder/tests/unit/volume/drivers/netapp/dataontap/test_nfs_cmode.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":"94b11f5d9d2fee9ebe8756adc1b9c6cceececc69","unresolved":true,"context_lines":[{"line_number":170,"context_line":"              {\u0027replication_backends\u0027: [],"},{"line_number":171,"context_line":"               \u0027cluster_credentials\u0027: True, \u0027is_fg\u0027: False,"},{"line_number":172,"context_line":"               \u0027report_provisioned_capacity\u0027: False,"},{"line_number":173,"context_line":"               \u0027report_physical_capacity\u0027: True}"},{"line_number":174,"context_line":"              )"},{"line_number":175,"context_line":"    @ddt.unpack"},{"line_number":176,"context_line":"    def test_get_pool_stats(self, replication_backends, cluster_credentials,"}],"source_content_type":"text/x-python","patch_set":8,"id":"5330c32f_b6bf704f","line":173,"updated":"2026-01-16 14:49:41.000000000","message":"Should we rename this name to a more relevant - discount_clones_capacity","commit_id":"01d1018c960cfc5c799d8f3356d091bf0c1c770f"},{"author":{"_account_id":36171,"name":"jayaanand borra","display_name":"jayaanand borra","email":"jayaanand.borra@netapp.com","username":"jayaanan","status":"netapp"},"change_message_id":"a83168306bae635f5b01275898415e3d8f124b2f","unresolved":false,"context_lines":[{"line_number":170,"context_line":"              {\u0027replication_backends\u0027: [],"},{"line_number":171,"context_line":"               \u0027cluster_credentials\u0027: True, \u0027is_fg\u0027: False,"},{"line_number":172,"context_line":"               \u0027report_provisioned_capacity\u0027: False,"},{"line_number":173,"context_line":"               \u0027report_physical_capacity\u0027: True}"},{"line_number":174,"context_line":"              )"},{"line_number":175,"context_line":"    @ddt.unpack"},{"line_number":176,"context_line":"    def test_get_pool_stats(self, replication_backends, cluster_credentials,"}],"source_content_type":"text/x-python","patch_set":8,"id":"3f5966dc_274f4d6c","line":173,"in_reply_to":"5330c32f_b6bf704f","updated":"2026-02-05 16:03:28.000000000","message":"updated discount_clones_capacity","commit_id":"01d1018c960cfc5c799d8f3356d091bf0c1c770f"}],"cinder/volume/drivers/netapp/dataontap/block_cmode.py":[{"author":{"_account_id":30555,"name":"Fernando Ferraz","display_name":"Fernando Ferraz","email":"fesilva@redhat.com","username":"fernandoperches"},"change_message_id":"5e136b5ee21ef9b1c9f3059e531d35bd69dedb7f","unresolved":true,"context_lines":[{"line_number":416,"context_line":"                ssc_vol_name)"},{"line_number":417,"context_line":"            pool[\u0027total_volumes\u0027] \u003d len(luns)"},{"line_number":418,"context_line":"            provisioned_cap \u003d 0"},{"line_number":419,"context_line":"            if self.configuration.netapp_driver_discount_clones_capacity:"},{"line_number":420,"context_line":"                # Exclude ONTAP clones from provisioned capacity"},{"line_number":421,"context_line":"                # This includes clones and volumes created from clones"},{"line_number":422,"context_line":"                # as space is consumed at ONTAP"}],"source_content_type":"text/x-python","patch_set":8,"id":"f342eadd_4c161480","line":419,"updated":"2026-02-05 13:23:43.000000000","message":"The word discound sounds quite weird to me in this context. I recomend changing to something like `netapp_driver_exclude_clones_capacity` instead.","commit_id":"01d1018c960cfc5c799d8f3356d091bf0c1c770f"},{"author":{"_account_id":36171,"name":"jayaanand borra","display_name":"jayaanand borra","email":"jayaanand.borra@netapp.com","username":"jayaanan","status":"netapp"},"change_message_id":"a83168306bae635f5b01275898415e3d8f124b2f","unresolved":false,"context_lines":[{"line_number":416,"context_line":"                ssc_vol_name)"},{"line_number":417,"context_line":"            pool[\u0027total_volumes\u0027] \u003d len(luns)"},{"line_number":418,"context_line":"            provisioned_cap \u003d 0"},{"line_number":419,"context_line":"            if self.configuration.netapp_driver_discount_clones_capacity:"},{"line_number":420,"context_line":"                # Exclude ONTAP clones from provisioned capacity"},{"line_number":421,"context_line":"                # This includes clones and volumes created from clones"},{"line_number":422,"context_line":"                # as space is consumed at ONTAP"}],"source_content_type":"text/x-python","patch_set":8,"id":"5c0e1657_28c6857c","line":419,"in_reply_to":"f342eadd_4c161480","updated":"2026-02-05 16:03:28.000000000","message":"Done modified to netapp_driver_exclude_clones_capacity","commit_id":"01d1018c960cfc5c799d8f3356d091bf0c1c770f"},{"author":{"_account_id":30555,"name":"Fernando Ferraz","display_name":"Fernando Ferraz","email":"fesilva@redhat.com","username":"fernandoperches"},"change_message_id":"5e136b5ee21ef9b1c9f3059e531d35bd69dedb7f","unresolved":true,"context_lines":[{"line_number":434,"context_line":"                pool[\u0027provisioned_capacity_gb\u0027] \u003d na_utils.round_down("},{"line_number":435,"context_line":"                    float(provisioned_cap) / units.Gi)"},{"line_number":436,"context_line":""},{"line_number":437,"context_line":"            elif self.configuration.netapp_driver_reports_provisioned_capacity:"},{"line_number":438,"context_line":"                LOG.debug(\u0027reports_provisioned_capacity is enabled. \u0027"},{"line_number":439,"context_line":"                          \u0027Processing %d LUNs in volume %s\u0027,"},{"line_number":440,"context_line":"                          len(luns), ssc_vol_name)"}],"source_content_type":"text/x-python","patch_set":8,"id":"ad1dfb4b_9cd1f625","line":437,"updated":"2026-02-05 13:23:43.000000000","message":"Since netapp_driver_reports_provisioned_capacity is very explicit about being the flag that enables the provisioned capacity report, I believe both options should be enabled together to enable provisioned capacity - excluded clone capacity. Also both code sections are almost the same except from the lun.get(\u0027is-clone\u0027) checking so you would save a some duplicated lines by having the two options enabled together.","commit_id":"01d1018c960cfc5c799d8f3356d091bf0c1c770f"},{"author":{"_account_id":36171,"name":"jayaanand borra","display_name":"jayaanand borra","email":"jayaanand.borra@netapp.com","username":"jayaanan","status":"netapp"},"change_message_id":"a83168306bae635f5b01275898415e3d8f124b2f","unresolved":false,"context_lines":[{"line_number":434,"context_line":"                pool[\u0027provisioned_capacity_gb\u0027] \u003d na_utils.round_down("},{"line_number":435,"context_line":"                    float(provisioned_cap) / units.Gi)"},{"line_number":436,"context_line":""},{"line_number":437,"context_line":"            elif self.configuration.netapp_driver_reports_provisioned_capacity:"},{"line_number":438,"context_line":"                LOG.debug(\u0027reports_provisioned_capacity is enabled. \u0027"},{"line_number":439,"context_line":"                          \u0027Processing %d LUNs in volume %s\u0027,"},{"line_number":440,"context_line":"                          len(luns), ssc_vol_name)"}],"source_content_type":"text/x-python","patch_set":8,"id":"6c3111d2_472f91dc","line":437,"in_reply_to":"ad1dfb4b_9cd1f625","updated":"2026-02-05 16:03:28.000000000","message":"yes, updated logic to use both flags.","commit_id":"01d1018c960cfc5c799d8f3356d091bf0c1c770f"},{"author":{"_account_id":30555,"name":"Fernando Ferraz","display_name":"Fernando Ferraz","email":"fesilva@redhat.com","username":"fernandoperches"},"change_message_id":"64f43d14f1c4027ca279c07af1ea558b03e4d8a5","unresolved":true,"context_lines":[{"line_number":464,"context_line":"                                  lun.get(\u0027is-clone\u0027))"},{"line_number":465,"context_line":"                        if lun.get(\u0027is-clone\u0027):"},{"line_number":466,"context_line":"                            continue"},{"line_number":467,"context_line":"                    provisioned_cap \u003d provisioned_cap + lun[\u0027size\u0027]"},{"line_number":468,"context_line":"                pool[\u0027provisioned_capacity_gb\u0027] \u003d na_utils.round_down("},{"line_number":469,"context_line":"                    float(provisioned_cap) / units.Gi)"},{"line_number":470,"context_line":"            elif self.configuration.netapp_driver_exclude_clones_capacity:"}],"source_content_type":"text/x-python","patch_set":9,"id":"6c447fba_7b07411c","line":467,"updated":"2026-02-10 04:33:37.000000000","message":"What concerns me with this approach (and correct me if I’m wrong) is that snapshots consume virtually zero disk space at creation, but once the active volume is modified in a way that it hits a block referenced by a snapshot, the snapshot grows in size to preserve the original block.\n\nSo while this helps address the issue with Veritas NetBackup, the provisioned capacity will become inconsistent over time due to snapshot growth.\n\nI\u0027m giving a -1 for now but just for us to get this clarified.","commit_id":"2623c2c046120eaf86ed04a4831b61219a21236f"},{"author":{"_account_id":30555,"name":"Fernando Ferraz","display_name":"Fernando Ferraz","email":"fesilva@redhat.com","username":"fernandoperches"},"change_message_id":"ca36bf3fa9a2798db08500bf2838095bf7998338","unresolved":true,"context_lines":[{"line_number":464,"context_line":"                                  lun.get(\u0027is-clone\u0027))"},{"line_number":465,"context_line":"                        if lun.get(\u0027is-clone\u0027):"},{"line_number":466,"context_line":"                            continue"},{"line_number":467,"context_line":"                    provisioned_cap \u003d provisioned_cap + lun[\u0027size\u0027]"},{"line_number":468,"context_line":"                pool[\u0027provisioned_capacity_gb\u0027] \u003d na_utils.round_down("},{"line_number":469,"context_line":"                    float(provisioned_cap) / units.Gi)"},{"line_number":470,"context_line":"            elif self.configuration.netapp_driver_exclude_clones_capacity:"}],"source_content_type":"text/x-python","patch_set":9,"id":"b2370784_e01d57cb","line":467,"in_reply_to":"6c447fba_7b07411c","updated":"2026-02-10 04:36:31.000000000","message":"Anyway this should only occur if the operator explicity set the excludes flag so maybe not so problematic. I believe it would be worth mentioning that in reno so operators would be sure on the consequences of enabling such flag.","commit_id":"2623c2c046120eaf86ed04a4831b61219a21236f"},{"author":{"_account_id":38059,"name":"Anoop Kumar Shukla","display_name":"Anoop Shukla","email":"anoop.shukla@netapp.com","username":"anoop2","status":"NetApp"},"change_message_id":"300e03b3268e8678b96859f436fa9860b01db8e4","unresolved":true,"context_lines":[{"line_number":464,"context_line":"                                  lun.get(\u0027is-clone\u0027))"},{"line_number":465,"context_line":"                        if lun.get(\u0027is-clone\u0027):"},{"line_number":466,"context_line":"                            continue"},{"line_number":467,"context_line":"                    provisioned_cap \u003d provisioned_cap + lun[\u0027size\u0027]"},{"line_number":468,"context_line":"                pool[\u0027provisioned_capacity_gb\u0027] \u003d na_utils.round_down("},{"line_number":469,"context_line":"                    float(provisioned_cap) / units.Gi)"},{"line_number":470,"context_line":"            elif self.configuration.netapp_driver_exclude_clones_capacity:"}],"source_content_type":"text/x-python","patch_set":9,"id":"c4997891_60844369","line":467,"in_reply_to":"b2370784_e01d57cb","updated":"2026-02-12 16:32:23.000000000","message":"Thanks @fesilva@redhat.com. The concern here is valid. Currently ONTAP does not report provisioned capacity at FlexVol level which includes provisioned capacity from all the LUNs and Namespace. This is the very reason NetApp driver needs to do it on orchestration layer instead of consuming it as a API response from ONTAP. We are in discussion with platform teams to provide support for provisioned capacity on ONTAP which includes only actual provisioned LUNs and does not count clones and clones of clones. Your concerns on volumes created via snapshots are valid but currently there is no way to report that from the platform and till the time we have that limitation on platform, we do not want to add more logic to openstack layer to calculate such capacities.","commit_id":"2623c2c046120eaf86ed04a4831b61219a21236f"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"ac0b16dc6415a226769aacafe540a78206abda14","unresolved":true,"context_lines":[{"line_number":464,"context_line":"                                  lun.get(\u0027is-clone\u0027))"},{"line_number":465,"context_line":"                        if lun.get(\u0027is-clone\u0027):"},{"line_number":466,"context_line":"                            continue"},{"line_number":467,"context_line":"                    provisioned_cap \u003d provisioned_cap + lun[\u0027size\u0027]"},{"line_number":468,"context_line":"                pool[\u0027provisioned_capacity_gb\u0027] \u003d na_utils.round_down("},{"line_number":469,"context_line":"                    float(provisioned_cap) / units.Gi)"},{"line_number":470,"context_line":"            elif self.configuration.netapp_driver_exclude_clones_capacity:"}],"source_content_type":"text/x-python","patch_set":9,"id":"f6553c8c_f2d5540c","line":467,"in_reply_to":"c4997891_60844369","updated":"2026-02-16 14:23:33.000000000","message":"The concern and response are both reasonable. I\u0027m just wondering what size does the netapp array report for lun[\u0027size\u0027] of a snapshot? I would think it should report the actual size consumed and not the volume size from which it is cloned.\nEg: If I create a 1 GB volume and a snapshot of it, I would expect the snapshot to report it\u0027s \"real\" size (some bytes for metadata tracking) on disk and not just copy/report the volume size of 1GB.","commit_id":"2623c2c046120eaf86ed04a4831b61219a21236f"},{"author":{"_account_id":36171,"name":"jayaanand borra","display_name":"jayaanand borra","email":"jayaanand.borra@netapp.com","username":"jayaanan","status":"netapp"},"change_message_id":"29a8f6eb934d8039acd1e35c9cb27ec75e905881","unresolved":false,"context_lines":[{"line_number":464,"context_line":"                                  lun.get(\u0027is-clone\u0027))"},{"line_number":465,"context_line":"                        if lun.get(\u0027is-clone\u0027):"},{"line_number":466,"context_line":"                            continue"},{"line_number":467,"context_line":"                    provisioned_cap \u003d provisioned_cap + lun[\u0027size\u0027]"},{"line_number":468,"context_line":"                pool[\u0027provisioned_capacity_gb\u0027] \u003d na_utils.round_down("},{"line_number":469,"context_line":"                    float(provisioned_cap) / units.Gi)"},{"line_number":470,"context_line":"            elif self.configuration.netapp_driver_exclude_clones_capacity:"}],"source_content_type":"text/x-python","patch_set":9,"id":"f39e0300_b9f7b4ee","line":467,"in_reply_to":"cdd3e1d6_9dda6e51","updated":"2026-04-30 12:46:23.000000000","message":"with current implementation we are reporting zero size for snapshot in provisioned capacity as we are filtering snapshots. Please find below data\n+-----------------------------------+--------------------------------------------------------+\n| Property                          | Value                                                  |\n+-----------------------------------+--------------------------------------------------------+\n| QoS_support                       | True                                                   |\n| allocated_capacity_gb             | 1                                                      |\n| cacheable                         | True                                                   |\n| consistencygroup_support          | True                                                   |\n| consistent_group_snapshot_enabled | True                                                   |\n| driver_version                    | 2.0.0                                                  |\n| filter_function                   | capabilities.utilization \u003c 70                          |\n| free_capacity_gb                  | 7.48                                                   |\n| goodness_function                 | 100 - capabilities.utilization                         |\n| max_over_subscription_ratio       | 20.0                                                   |\n| multiattach                       | True                                                   |\n| name                              | overcloud171-controller-0@tripleo_netapp_iscsi1#Data_4 |\n| netapp_aggregate                  | AstraInfra                                             |\n| netapp_aggregate_used_percent     | 34                                                     |\n| netapp_compression                | true                                                   |\n| netapp_dedup                      | true                                                   |\n| netapp_dedupe_used_percent        | 0.0                                                    |\n| netapp_disk_type                  | [\u0027SSD\u0027]                                                |\n| netapp_flexvol_encryption         | false                                                  |\n| netapp_hybrid_aggregate           | false                                                  |\n| netapp_is_flexgroup               | false                                                  |\n| netapp_mirrored                   | false                                                  |\n| netapp_qos_min_support            | true                                                   |\n| netapp_raid_type                  | raid_dp                                                |\n| netapp_thin_provisioned           | true                                                   |\n| online_extend_support             | True                                                   |\n| pool_name                         | Data_4                                                 |\n| provisioned_capacity_gb           | 1.0                                                    |\n| replication_enabled               | False                                                  |\n| reserved_percentage               | 0                                                      |\n| storage_protocol                  | iSCSI                                                  |\n| thick_provisioning_support        | False                                                  |\n| thin_provisioning_support         | True                                                   |\n| timestamp                         | 2026-02-24T10:48:28.439801                             |\n| total_capacity_gb                 | 9.5                                                    |\n| total_volumes                     | 2                                                      |\n| utilization                       | 31.34                                                  |\n| vendor_name                       | NetApp                                                 |\n| volume_backend_name               | tripleo_netapp_iscsi1                                  |\n+-----------------------------------+--------------------------------------------------------+\n(overcloud) [stack@rhosp171-undercloud ~]$ openstack volume create \\\n  --type netapp_iscsi1_data4 \\\n  --size 1 \\\n  test_vol_data4\n+---------------------+--------------------------------------+\n| Field               | Value                                |\n+---------------------+--------------------------------------+\n| attachments         | []                                   |\n| availability_zone   | nova                                 |\n| bootable            | false                                |\n| consistencygroup_id | None                                 |\n| created_at          | 2026-02-24T10:47:57.618216           |\n| description         | None                                 |\n| encrypted           | False                                |\n| id                  | 97bbc150-d851-4c17-9b7c-2ab5b8382c43 |\n| migration_status    | None                                 |\n| multiattach         | False                                |\n| name                | test_vol_data4                       |\n| properties          |                                      |\n| replication_status  | None                                 |\n| size                | 1                                    |\n| snapshot_id         | None                                 |\n| source_volid        | None                                 |\n| status              | creating                             |\n| type                | netapp_iscsi1_data4                  |\n| updated_at          | None                                 |\n| user_id             | 10f02404672e4ffc9c319e2c2dd46c0d     |\n+---------------------+--------------------------------------+\n\n(overcloud) [stack@rhosp171-undercloud ~]$ openstack volume snapshot create --volume test_vol_data4 snap_on_data4\n+-------------+--------------------------------------+\n| Field       | Value                                |\n+-------------+--------------------------------------+\n| created_at  | 2026-02-24T10:50:02.417456           |\n| description | None                                 |\n| id          | 06fa0100-f3f8-4230-97ce-6c3c00870224 |\n| name        | snap_on_data4                        |\n| properties  |                                      |\n| size        | 1                                    |\n| status      | creating                             |\n| updated_at  | None                                 |\n| volume_id   | 97bbc150-d851-4c17-9b7c-2ab5b8382c43 |\n+-------------+--------------------------------------+\n\n+-----------------------------------+--------------------------------------------------------+\n| Property                          | Value                                                  |\n+-----------------------------------+--------------------------------------------------------+\n| QoS_support                       | True                                                   |\n| allocated_capacity_gb             | 1                                                      |\n| cacheable                         | True                                                   |\n| consistencygroup_support          | True                                                   |\n| consistent_group_snapshot_enabled | True                                                   |\n| driver_version                    | 2.0.0                                                  |\n| filter_function                   | capabilities.utilization \u003c 70                          |\n| free_capacity_gb                  | 7.48                                                   |\n| goodness_function                 | 100 - capabilities.utilization                         |\n| max_over_subscription_ratio       | 20.0                                                   |\n| multiattach                       | True                                                   |\n| name                              | overcloud171-controller-0@tripleo_netapp_iscsi1#Data_4 |\n| netapp_aggregate                  | AstraInfra                                             |\n| netapp_aggregate_used_percent     | 34                                                     |\n| netapp_compression                | true                                                   |\n| netapp_dedup                      | true                                                   |\n| netapp_dedupe_used_percent        | 0.0                                                    |\n| netapp_disk_type                  | [\u0027SSD\u0027]                                                |\n| netapp_flexvol_encryption         | false                                                  |\n| netapp_hybrid_aggregate           | false                                                  |\n| netapp_is_flexgroup               | false                                                  |\n| netapp_mirrored                   | false                                                  |\n| netapp_qos_min_support            | true                                                   |\n| netapp_raid_type                  | raid_dp                                                |\n| netapp_thin_provisioned           | true                                                   |\n| online_extend_support             | True                                                   |\n| pool_name                         | Data_4                                                 |\n| provisioned_capacity_gb           | 2.0                                                    |\n| replication_enabled               | False                                                  |\n| reserved_percentage               | 0                                                      |\n| storage_protocol                  | iSCSI                                                  |\n| thick_provisioning_support        | False                                                  |\n| thin_provisioning_support         | True                                                   |\n| timestamp                         | 2026-02-24T10:51:28.569551                             |\n| total_capacity_gb                 | 9.5                                                    |\n| total_volumes                     | 3                                                      |\n| utilization                       | 31.35                                                  |\n| vendor_name                       | NetApp                                                 |\n| volume_backend_name               | tripleo_netapp_iscsi1                                  |\n+-----------------------------------+--------------------------------------------------------+","commit_id":"2623c2c046120eaf86ed04a4831b61219a21236f"},{"author":{"_account_id":38059,"name":"Anoop Kumar Shukla","display_name":"Anoop Shukla","email":"anoop.shukla@netapp.com","username":"anoop2","status":"NetApp"},"change_message_id":"fa72cb937ef858c03e7a688309f6d510657e81dc","unresolved":true,"context_lines":[{"line_number":464,"context_line":"                                  lun.get(\u0027is-clone\u0027))"},{"line_number":465,"context_line":"                        if lun.get(\u0027is-clone\u0027):"},{"line_number":466,"context_line":"                            continue"},{"line_number":467,"context_line":"                    provisioned_cap \u003d provisioned_cap + lun[\u0027size\u0027]"},{"line_number":468,"context_line":"                pool[\u0027provisioned_capacity_gb\u0027] \u003d na_utils.round_down("},{"line_number":469,"context_line":"                    float(provisioned_cap) / units.Gi)"},{"line_number":470,"context_line":"            elif self.configuration.netapp_driver_exclude_clones_capacity:"}],"source_content_type":"text/x-python","patch_set":9,"id":"cdd3e1d6_9dda6e51","line":467,"in_reply_to":"f6553c8c_f2d5540c","updated":"2026-02-19 05:56:08.000000000","message":"The size of the snapshot in this case would be the same size that of the original volume. But in reality the snapshot uses the same blocks as the volume (till its split). Since snapshots are readonly copies and cannot/should not be tampered with, the expectation from client is it costs 2x on disk while it doesnt on platform as ONTAP clones are pointers to the existing blocks unless split is performed. I will let Jayaanand respond with size details to make sure this is what we are getting from the platform.","commit_id":"2623c2c046120eaf86ed04a4831b61219a21236f"}],"cinder/volume/drivers/netapp/dataontap/client/client_cmode.py":[{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"ac0b16dc6415a226769aacafe540a78206abda14","unresolved":true,"context_lines":[{"line_number":448,"context_line":"    def get_lun_sizes_by_volume(self, volume_name):"},{"line_number":449,"context_line":"        \"\"\"Gets the list of LUNs and their sizes from a given volume name."},{"line_number":450,"context_line":""},{"line_number":451,"context_line":"        This method uses ZAPI and does not have a REST equivalent because"},{"line_number":452,"context_line":"        ONTAP REST API does not currently expose the \u0027is-clone\u0027 attribute"},{"line_number":453,"context_line":"        for LUNs. When REST support for this attribute becomes available"},{"line_number":454,"context_line":"        in future ONTAP releases, a REST implementation can be added to"}],"source_content_type":"text/x-python","patch_set":9,"id":"fc31f41d_e0ca6c98","line":451,"range":{"start_line":451,"start_character":8,"end_line":451,"end_character":65},"updated":"2026-02-16 14:23:33.000000000","message":"I\u0027m confused by this statement.\nOn one hand we are trying to remove ZAPI support and pushing towards REST ASAR2 changes, on other hand we are implementing a backend call that is only supported in ZAPI. Shouldn\u0027t we first add the is-clone parameter to REST implementation and then make this change in the REST client. what is the complexity and timeline for a such a change?\nIMO, this patch should be dependent on a work item to support is-clone in REST rather than implementing it using ZAPI.","commit_id":"2623c2c046120eaf86ed04a4831b61219a21236f"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"3dd98f1ccd246acc45d9eb24ab1392e74ad19f15","unresolved":false,"context_lines":[{"line_number":448,"context_line":"    def get_lun_sizes_by_volume(self, volume_name):"},{"line_number":449,"context_line":"        \"\"\"Gets the list of LUNs and their sizes from a given volume name."},{"line_number":450,"context_line":""},{"line_number":451,"context_line":"        This method uses ZAPI and does not have a REST equivalent because"},{"line_number":452,"context_line":"        ONTAP REST API does not currently expose the \u0027is-clone\u0027 attribute"},{"line_number":453,"context_line":"        for LUNs. When REST support for this attribute becomes available"},{"line_number":454,"context_line":"        in future ONTAP releases, a REST implementation can be added to"}],"source_content_type":"text/x-python","patch_set":9,"id":"9951c610_d1c089fb","line":451,"range":{"start_line":451,"start_character":8,"end_line":451,"end_character":65},"in_reply_to":"df18d8a5_4a7c3099","updated":"2026-02-25 07:30:55.000000000","message":"Acknowledged","commit_id":"2623c2c046120eaf86ed04a4831b61219a21236f"},{"author":{"_account_id":38059,"name":"Anoop Kumar Shukla","display_name":"Anoop Shukla","email":"anoop.shukla@netapp.com","username":"anoop2","status":"NetApp"},"change_message_id":"94c666d8889aa566eaf02a0b5b91174b42d31056","unresolved":true,"context_lines":[{"line_number":448,"context_line":"    def get_lun_sizes_by_volume(self, volume_name):"},{"line_number":449,"context_line":"        \"\"\"Gets the list of LUNs and their sizes from a given volume name."},{"line_number":450,"context_line":""},{"line_number":451,"context_line":"        This method uses ZAPI and does not have a REST equivalent because"},{"line_number":452,"context_line":"        ONTAP REST API does not currently expose the \u0027is-clone\u0027 attribute"},{"line_number":453,"context_line":"        for LUNs. When REST support for this attribute becomes available"},{"line_number":454,"context_line":"        in future ONTAP releases, a REST implementation can be added to"}],"source_content_type":"text/x-python","patch_set":9,"id":"df18d8a5_4a7c3099","line":451,"range":{"start_line":451,"start_character":8,"end_line":451,"end_character":65},"in_reply_to":"fc31f41d_e0ca6c98","updated":"2026-02-17 04:48:08.000000000","message":"Making changes to platform REST is not a quick process. We have already raised this as a gap on the platform team and they will address it in the upcoming releases. ASAr2 currently does not support ZAPIs and that was due to the older stance of NetApp where we said we will deprecate them. But given the popularity of ZAPIs in field, that decision is now withdrawn and is publically available : \n\nhttps://kb.netapp.com/on-prem/ontap/DM/REST-API/REST_API_KBs/Deferral_of_ONTAPI_ZAPI_End_of_Availability\n\nThat said, we have (as with any product) gaps on our REST support where ZAPIs and CLI being more mature may have the APIs but REST may not. In such scenarios, both, the manila and cinder drivers have option to use ZAPIs where possible. This does not mean we will continue to use ZAPIs. In future once these gaps are addressed, plan is to use either purely REST or purely ZAPIs and depending on the configuration selected. But this is going to be a journey and we will need to get the issues addressed on platform side before we can take that call.","commit_id":"2623c2c046120eaf86ed04a4831b61219a21236f"}],"cinder/volume/drivers/netapp/dataontap/client/client_cmode_rest.py":[{"author":{"_account_id":30555,"name":"Fernando Ferraz","display_name":"Fernando Ferraz","email":"fesilva@redhat.com","username":"fernandoperches"},"change_message_id":"5e136b5ee21ef9b1c9f3059e531d35bd69dedb7f","unresolved":true,"context_lines":[{"line_number":771,"context_line":""},{"line_number":772,"context_line":"        return lun_list"},{"line_number":773,"context_line":""},{"line_number":774,"context_line":"    def get_lun_sizes_by_volume(self, volume_name):"},{"line_number":775,"context_line":"        \"\"\"\"Gets the list of LUNs and their sizes from a given volume name\"\"\""},{"line_number":776,"context_line":""},{"line_number":777,"context_line":"        query \u003d {"}],"source_content_type":"text/x-python","patch_set":8,"id":"cdec85df_24a33953","side":"PARENT","line":774,"updated":"2026-02-05 13:23:43.000000000","message":"I don\u0027t get it, are you dropping REST support for getting lun sizes? Wouldn\u0027t this become a problem for future ONTAP releases?","commit_id":"e23e859dfd570ff1bd784ec62fc0258ca5681dee"},{"author":{"_account_id":30555,"name":"Fernando Ferraz","display_name":"Fernando Ferraz","email":"fesilva@redhat.com","username":"fernandoperches"},"change_message_id":"85b4cf9a2189ef5b03a42d45fb596613e6914096","unresolved":true,"context_lines":[{"line_number":771,"context_line":""},{"line_number":772,"context_line":"        return lun_list"},{"line_number":773,"context_line":""},{"line_number":774,"context_line":"    def get_lun_sizes_by_volume(self, volume_name):"},{"line_number":775,"context_line":"        \"\"\"\"Gets the list of LUNs and their sizes from a given volume name\"\"\""},{"line_number":776,"context_line":""},{"line_number":777,"context_line":"        query \u003d {"}],"source_content_type":"text/x-python","patch_set":8,"id":"9d231174_53fb6e53","side":"PARENT","line":774,"in_reply_to":"3646916e_fb318452","updated":"2026-02-10 04:44:08.000000000","message":"intead of removing the REST support completely, why not calling the ZAPI only when it is really required? The understanding is that ZAPIs are deprecated so they should be more prone to bugs as new ONTAP versions are released. The safest aproach in my opinion would be calling ZAPIs when the is-clone is really required, when the excludes flag is enabled.","commit_id":"e23e859dfd570ff1bd784ec62fc0258ca5681dee"},{"author":{"_account_id":30555,"name":"Fernando Ferraz","display_name":"Fernando Ferraz","email":"fesilva@redhat.com","username":"fernandoperches"},"change_message_id":"5a3db466b76463375fb60dc7f1813e5b55059312","unresolved":true,"context_lines":[{"line_number":771,"context_line":""},{"line_number":772,"context_line":"        return lun_list"},{"line_number":773,"context_line":""},{"line_number":774,"context_line":"    def get_lun_sizes_by_volume(self, volume_name):"},{"line_number":775,"context_line":"        \"\"\"\"Gets the list of LUNs and their sizes from a given volume name\"\"\""},{"line_number":776,"context_line":""},{"line_number":777,"context_line":"        query \u003d {"}],"source_content_type":"text/x-python","patch_set":8,"id":"c42600cd_7220f180","side":"PARENT","line":774,"in_reply_to":"94a7bf49_5fafa31e","updated":"2026-02-10 04:18:04.000000000","message":"how recent to ontap is the is_clone flag? any chance this may impact older hardware running versions in which the flag didn\u0027t exist?","commit_id":"e23e859dfd570ff1bd784ec62fc0258ca5681dee"},{"author":{"_account_id":38059,"name":"Anoop Kumar Shukla","display_name":"Anoop Shukla","email":"anoop.shukla@netapp.com","username":"anoop2","status":"NetApp"},"change_message_id":"300e03b3268e8678b96859f436fa9860b01db8e4","unresolved":true,"context_lines":[{"line_number":771,"context_line":""},{"line_number":772,"context_line":"        return lun_list"},{"line_number":773,"context_line":""},{"line_number":774,"context_line":"    def get_lun_sizes_by_volume(self, volume_name):"},{"line_number":775,"context_line":"        \"\"\"\"Gets the list of LUNs and their sizes from a given volume name\"\"\""},{"line_number":776,"context_line":""},{"line_number":777,"context_line":"        query \u003d {"}],"source_content_type":"text/x-python","patch_set":8,"id":"ec46fcc9_2caf8847","side":"PARENT","line":774,"in_reply_to":"9d231174_53fb6e53","updated":"2026-02-12 16:32:23.000000000","message":"ZAPIs are not deprecated. They will continue to work on ONTAP. \n\nhttps://kb.netapp.com/on-prem/ontap/DM/REST-API/REST_API_KBs/Deferral_of_ONTAPI_ZAPI_End_of_Availability\n\nThat said, the stance ONTAP is taking is - new features - REST only. Existing ZAPIs continued to be working as is. So any new feature will continue to be added via REST only.","commit_id":"e23e859dfd570ff1bd784ec62fc0258ca5681dee"},{"author":{"_account_id":38059,"name":"Anoop Kumar Shukla","display_name":"Anoop Shukla","email":"anoop.shukla@netapp.com","username":"anoop2","status":"NetApp"},"change_message_id":"ec25a23172d99a2abe227666c1eaa8f1137ebf46","unresolved":false,"context_lines":[{"line_number":771,"context_line":""},{"line_number":772,"context_line":"        return lun_list"},{"line_number":773,"context_line":""},{"line_number":774,"context_line":"    def get_lun_sizes_by_volume(self, volume_name):"},{"line_number":775,"context_line":"        \"\"\"\"Gets the list of LUNs and their sizes from a given volume name\"\"\""},{"line_number":776,"context_line":""},{"line_number":777,"context_line":"        query \u003d {"}],"source_content_type":"text/x-python","patch_set":8,"id":"94a7bf49_5fafa31e","side":"PARENT","line":774,"in_reply_to":"a74a26a0_0ee7a7dc","updated":"2026-02-06 06:52:55.000000000","message":"The is_clone attribute as query param is not available on REST APIs and we are following up with the platform team for that support. In the meanwhile, we are using this via the ZAPIs.","commit_id":"e23e859dfd570ff1bd784ec62fc0258ca5681dee"},{"author":{"_account_id":36171,"name":"jayaanand borra","display_name":"jayaanand borra","email":"jayaanand.borra@netapp.com","username":"jayaanan","status":"netapp"},"change_message_id":"8e5425af35416b28f539595559506e13bcc68b54","unresolved":false,"context_lines":[{"line_number":771,"context_line":""},{"line_number":772,"context_line":"        return lun_list"},{"line_number":773,"context_line":""},{"line_number":774,"context_line":"    def get_lun_sizes_by_volume(self, volume_name):"},{"line_number":775,"context_line":"        \"\"\"\"Gets the list of LUNs and their sizes from a given volume name\"\"\""},{"line_number":776,"context_line":""},{"line_number":777,"context_line":"        query \u003d {"}],"source_content_type":"text/x-python","patch_set":8,"id":"3646916e_fb318452","side":"PARENT","line":774,"in_reply_to":"c42600cd_7220f180","updated":"2026-02-10 04:26:17.000000000","message":"REST implementation is completely removed, This is applicable to all versions. In case of older hardware ZAPI which is default will function with current implementation. In case of REST, Fallback to ZAPI will take care of workflows. In both scenarios ZAPI has is_clone flag to fulfill all workflows.","commit_id":"e23e859dfd570ff1bd784ec62fc0258ca5681dee"},{"author":{"_account_id":36171,"name":"jayaanand borra","display_name":"jayaanand borra","email":"jayaanand.borra@netapp.com","username":"jayaanan","status":"netapp"},"change_message_id":"a83168306bae635f5b01275898415e3d8f124b2f","unresolved":false,"context_lines":[{"line_number":771,"context_line":""},{"line_number":772,"context_line":"        return lun_list"},{"line_number":773,"context_line":""},{"line_number":774,"context_line":"    def get_lun_sizes_by_volume(self, volume_name):"},{"line_number":775,"context_line":"        \"\"\"\"Gets the list of LUNs and their sizes from a given volume name\"\"\""},{"line_number":776,"context_line":""},{"line_number":777,"context_line":"        query \u003d {"}],"source_content_type":"text/x-python","patch_set":8,"id":"a74a26a0_0ee7a7dc","side":"PARENT","line":774,"in_reply_to":"cdec85df_24a33953","updated":"2026-02-05 16:03:28.000000000","message":"is_clone attribute is not supported in REST. Planning to bring back once REST implementation is available.","commit_id":"e23e859dfd570ff1bd784ec62fc0258ca5681dee"},{"author":{"_account_id":36171,"name":"jayaanand borra","display_name":"jayaanand borra","email":"jayaanand.borra@netapp.com","username":"jayaanan","status":"netapp"},"change_message_id":"c012c6c0c0ac90f6ffbdd35e85f7e8267f9ebaea","unresolved":false,"context_lines":[{"line_number":771,"context_line":""},{"line_number":772,"context_line":"        return lun_list"},{"line_number":773,"context_line":""},{"line_number":774,"context_line":"    def get_lun_sizes_by_volume(self, volume_name):"},{"line_number":775,"context_line":"        \"\"\"\"Gets the list of LUNs and their sizes from a given volume name\"\"\""},{"line_number":776,"context_line":""},{"line_number":777,"context_line":"        query \u003d {"}],"source_content_type":"text/x-python","patch_set":8,"id":"b5793fc1_eb6095ab","side":"PARENT","line":774,"in_reply_to":"ec46fcc9_2caf8847","updated":"2026-04-30 12:47:22.000000000","message":"added flag to address this suggestion","commit_id":"e23e859dfd570ff1bd784ec62fc0258ca5681dee"}],"cinder/volume/drivers/netapp/options.py":[{"author":{"_account_id":10058,"name":"Erlon R. Cruz","email":"erlon.rodrigues.cruz@canonical.com","username":"sombrafam"},"change_message_id":"3123f4d88ef02de2e4e9037e8f10f4d76898bb28","unresolved":true,"context_lines":[{"line_number":188,"context_line":"                      \u0027the number of API calls to the storage and \u0027"},{"line_number":189,"context_line":"                      \u0027requires more processing on host, which may impact \u0027"},{"line_number":190,"context_line":"                      \u0027volume report overall performance.\u0027)),"},{"line_number":191,"context_line":"    cfg.BoolOpt(\u0027netapp_driver_reports_physical_capacity\u0027,"},{"line_number":192,"context_line":"                default\u003dFalse,"},{"line_number":193,"context_line":"                help\u003d(\u0027Set to True for Cinder to query the storage system \u0027"},{"line_number":194,"context_line":"                      \u0027flexvol space.physical_used and report this value as \u0027"}],"source_content_type":"text/x-python","patch_set":4,"id":"c6df95ef_cc8fbca1","line":191,"range":{"start_line":191,"start_character":17,"end_line":191,"end_character":56},"updated":"2025-12-03 15:18:11.000000000","message":"You don\u0027t need this option since you can use max_over_subscription_ratio set to a high value.","commit_id":"6c85abf9ad101d7cebbaaad2f125893635224a78"},{"author":{"_account_id":36171,"name":"jayaanand borra","display_name":"jayaanand borra","email":"jayaanand.borra@netapp.com","username":"jayaanan","status":"netapp"},"change_message_id":"f3f3da619e923a1dca44647a0844a6efb4f2b065","unresolved":false,"context_lines":[{"line_number":188,"context_line":"                      \u0027the number of API calls to the storage and \u0027"},{"line_number":189,"context_line":"                      \u0027requires more processing on host, which may impact \u0027"},{"line_number":190,"context_line":"                      \u0027volume report overall performance.\u0027)),"},{"line_number":191,"context_line":"    cfg.BoolOpt(\u0027netapp_driver_reports_physical_capacity\u0027,"},{"line_number":192,"context_line":"                default\u003dFalse,"},{"line_number":193,"context_line":"                help\u003d(\u0027Set to True for Cinder to query the storage system \u0027"},{"line_number":194,"context_line":"                      \u0027flexvol space.physical_used and report this value as \u0027"}],"source_content_type":"text/x-python","patch_set":4,"id":"fb7ff111_65e011b0","line":191,"range":{"start_line":191,"start_character":17,"end_line":191,"end_character":56},"in_reply_to":"c6df95ef_cc8fbca1","updated":"2026-01-08 16:41:40.000000000","message":"Thank you! Erlon, Proposed solution is to provide a way for User to discount clones(i.e. some of Cinder volumes are clones at ONTAP) which are space efficient at ONTAP from provisioned_capacity_gb capacity calculations. Increasing max_over_subscription_ratio doesn\u0027t provide solution to user control in excluding clones and allows creation of Cinder volumes which can be real or clones at ONTAP. With this solution we want to avoid clone with additional Flag.","commit_id":"6c85abf9ad101d7cebbaaad2f125893635224a78"},{"author":{"_account_id":30555,"name":"Fernando Ferraz","display_name":"Fernando Ferraz","email":"fesilva@redhat.com","username":"fernandoperches"},"change_message_id":"5e136b5ee21ef9b1c9f3059e531d35bd69dedb7f","unresolved":true,"context_lines":[{"line_number":188,"context_line":"                      \u0027the number of API calls to the storage and \u0027"},{"line_number":189,"context_line":"                      \u0027requires more processing on host, which may impact \u0027"},{"line_number":190,"context_line":"                      \u0027volume report overall performance.\u0027)),"},{"line_number":191,"context_line":"    cfg.BoolOpt(\u0027netapp_driver_discount_clones_capacity\u0027,"},{"line_number":192,"context_line":"                default\u003dFalse,"},{"line_number":193,"context_line":"                help\u003d(\u0027Set to True for Cinder to exclude ONTAP clones from \u0027"},{"line_number":194,"context_line":"                      \u0027provisioned_capacity_gb calculations. This option \u0027"}],"source_content_type":"text/x-python","patch_set":8,"id":"8fa1c628_518d518e","line":191,"updated":"2026-02-05 13:23:43.000000000","message":"The word discound sounds quite weird to me in this context. I recomend changing to something like `netapp_driver_exclude_clones_capacity` instead. Also I believe it would make more sense to only apply this option if `netapp_driver_reports_provisioned_capacity` is also enabled.","commit_id":"01d1018c960cfc5c799d8f3356d091bf0c1c770f"},{"author":{"_account_id":36171,"name":"jayaanand borra","display_name":"jayaanand borra","email":"jayaanand.borra@netapp.com","username":"jayaanan","status":"netapp"},"change_message_id":"a83168306bae635f5b01275898415e3d8f124b2f","unresolved":false,"context_lines":[{"line_number":188,"context_line":"                      \u0027the number of API calls to the storage and \u0027"},{"line_number":189,"context_line":"                      \u0027requires more processing on host, which may impact \u0027"},{"line_number":190,"context_line":"                      \u0027volume report overall performance.\u0027)),"},{"line_number":191,"context_line":"    cfg.BoolOpt(\u0027netapp_driver_discount_clones_capacity\u0027,"},{"line_number":192,"context_line":"                default\u003dFalse,"},{"line_number":193,"context_line":"                help\u003d(\u0027Set to True for Cinder to exclude ONTAP clones from \u0027"},{"line_number":194,"context_line":"                      \u0027provisioned_capacity_gb calculations. This option \u0027"}],"source_content_type":"text/x-python","patch_set":8,"id":"24ad28fb_ff425be6","line":191,"in_reply_to":"8fa1c628_518d518e","updated":"2026-02-05 16:03:28.000000000","message":"updated to netapp_driver_exclude_clones_capacity","commit_id":"01d1018c960cfc5c799d8f3356d091bf0c1c770f"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"92e96432ee3e2ede67a1718b3641dfd393062cd7","unresolved":true,"context_lines":[{"line_number":197,"context_line":"                      \u0027the driver excludes LUNs that are ONTAP clones \u0027"},{"line_number":198,"context_line":"                      \u0027(including volumes created from snapshots) from the \u0027"},{"line_number":199,"context_line":"                      \u0027provisioned capacity calculation, reporting only \u0027"},{"line_number":200,"context_line":"                      \u0027non-clone storage consumption.\u0027)), ]"},{"line_number":201,"context_line":""},{"line_number":202,"context_line":"netapp_cluster_opts \u003d ["},{"line_number":203,"context_line":"    cfg.StrOpt(\u0027netapp_vserver\u0027,"}],"source_content_type":"text/x-python","patch_set":9,"id":"2971f423_d0a34463","line":200,"updated":"2026-02-16 14:44:33.000000000","message":"This could be a followup, but given that this new option is coupled to the one on line 181, you might want to do something like glance does [0] and call out the \"Related option\" explicitly in the help text.\n\n[0] https://opendev.org/openstack/glance/src/commit/9987754ba4a29ff6a811cbae354dd19df4d7cf83/glance/common/config.py#L295","commit_id":"2623c2c046120eaf86ed04a4831b61219a21236f"},{"author":{"_account_id":36171,"name":"jayaanand borra","display_name":"jayaanand borra","email":"jayaanand.borra@netapp.com","username":"jayaanan","status":"netapp"},"change_message_id":"eabb548016e5d76f66e75bf7c522f8c4c95e1214","unresolved":false,"context_lines":[{"line_number":197,"context_line":"                      \u0027the driver excludes LUNs that are ONTAP clones \u0027"},{"line_number":198,"context_line":"                      \u0027(including volumes created from snapshots) from the \u0027"},{"line_number":199,"context_line":"                      \u0027provisioned capacity calculation, reporting only \u0027"},{"line_number":200,"context_line":"                      \u0027non-clone storage consumption.\u0027)), ]"},{"line_number":201,"context_line":""},{"line_number":202,"context_line":"netapp_cluster_opts \u003d ["},{"line_number":203,"context_line":"    cfg.StrOpt(\u0027netapp_vserver\u0027,"}],"source_content_type":"text/x-python","patch_set":9,"id":"cf30ca4d_f5dd0c95","line":200,"in_reply_to":"2971f423_d0a34463","updated":"2026-02-17 10:33:24.000000000","message":"updated option similar to Glance","commit_id":"2623c2c046120eaf86ed04a4831b61219a21236f"}]}
