)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":10910,"name":"Stig Telfer","email":"stig.openstack@telfer.org","username":"stigtelfer"},"change_message_id":"d3565c11f95536df27523b906c261adbe82effa9","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":13,"id":"9dc70b8f_a32d142a","updated":"2026-06-16 09:49:18.000000000","message":"Thanks Volodymyr, I tested this functionality and was able to use it as specified.","commit_id":"2b02b0f0084dfa3c464654f4c705ac5f3a4c9fec"},{"author":{"_account_id":29632,"name":"Carlos Eduardo","email":"ces.eduardo98@gmail.com","username":"silvacarlos"},"change_message_id":"f9cbdb1c6bf20f11d764a7350b834375e86c23b6","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":13,"id":"abe75503_0effc45f","updated":"2026-07-08 19:30:51.000000000","message":"Thanks for working on this change and I apologize for the time I took to review. Please take a look at the comments inline","commit_id":"2b02b0f0084dfa3c464654f4c705ac5f3a4c9fec"}],"doc/source/configuration/shared-file-systems/drivers/vastdata_driver.rst":[{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"542dab08de9cf932298f41242aca4bd877668aeb","unresolved":true,"context_lines":[{"line_number":104,"context_line":"    openstack share create NFS ${size} --name ${share_name} --share-type ${share_type_name}"},{"line_number":105,"context_line":""},{"line_number":106,"context_line":"Multitenancy support via Share Types"},{"line_number":107,"context_line":"--------------------------------------------------"},{"line_number":108,"context_line":""},{"line_number":109,"context_line":"The VAST Share Driver supports multitenancy by allowing different share types"},{"line_number":110,"context_line":"to use different VIP pools. This enables tenant isolation and provides"}],"source_content_type":"text/x-rst","patch_set":8,"id":"29914443_07186c85","line":107,"range":{"start_line":107,"start_character":36,"end_line":107,"end_character":50},"updated":"2025-11-03 21:21:09.000000000","message":"nit: limit underline to text","commit_id":"9a94f280470b587eabec64e00c2830db7f6caee3"},{"author":{"_account_id":36962,"name":"Volodymyr Boiko","display_name":"Volodymyr","email":"volodymyr.boiko@vastdata.com","username":"fnn45"},"change_message_id":"84225bb41e9b2c27aa4c2e9c1e3c0c01cf27e66e","unresolved":false,"context_lines":[{"line_number":104,"context_line":"    openstack share create NFS ${size} --name ${share_name} --share-type ${share_type_name}"},{"line_number":105,"context_line":""},{"line_number":106,"context_line":"Multitenancy support via Share Types"},{"line_number":107,"context_line":"--------------------------------------------------"},{"line_number":108,"context_line":""},{"line_number":109,"context_line":"The VAST Share Driver supports multitenancy by allowing different share types"},{"line_number":110,"context_line":"to use different VIP pools. This enables tenant isolation and provides"}],"source_content_type":"text/x-rst","patch_set":8,"id":"6d873696_26b3988b","line":107,"range":{"start_line":107,"start_character":36,"end_line":107,"end_character":50},"in_reply_to":"29914443_07186c85","updated":"2026-02-02 02:54:28.000000000","message":"Done","commit_id":"9a94f280470b587eabec64e00c2830db7f6caee3"}],"manila/share/drivers/vastdata/driver.py":[{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"542dab08de9cf932298f41242aca4bd877668aeb","unresolved":true,"context_lines":[{"line_number":172,"context_line":"            \"Capacity,physical_space_in_use\","},{"line_number":173,"context_line":"        ]"},{"line_number":174,"context_line":"        metrics \u003d self.rest.capacity_metrics.get(metrics_list)"},{"line_number":175,"context_line":"        data \u003d dict("},{"line_number":176,"context_line":"            share_backend_name\u003dself._backend_name,"},{"line_number":177,"context_line":"            vendor_name\u003d\"VAST STORAGE\","},{"line_number":178,"context_line":"            driver_version\u003dself.VERSION,"},{"line_number":179,"context_line":"            storage_protocol\u003d\"NFS\","},{"line_number":180,"context_line":"            data_reduction\u003dmetrics.drr,"},{"line_number":181,"context_line":"            total_capacity_gb\u003dfloat(metrics.logical_space) / units.Gi,"},{"line_number":182,"context_line":"            free_capacity_gb\u003dfloat("},{"line_number":183,"context_line":"                metrics.logical_space - metrics.logical_space_in_use"},{"line_number":184,"context_line":"            )"},{"line_number":185,"context_line":"            / units.Gi,"},{"line_number":186,"context_line":"            provisioned_capacity_gb\u003dfloat("},{"line_number":187,"context_line":"                metrics.logical_space_in_use) / units.Gi,"},{"line_number":188,"context_line":"            snapshot_support\u003dTrue,"},{"line_number":189,"context_line":"            create_share_from_snapshot_support\u003dFalse,"},{"line_number":190,"context_line":"            mount_snapshot_support\u003dFalse,"},{"line_number":191,"context_line":"            revert_to_snapshot_support\u003dFalse,"},{"line_number":192,"context_line":"        )"},{"line_number":193,"context_line":""},{"line_number":194,"context_line":"        super()._update_share_stats(data)"},{"line_number":195,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"87824c08_dc04bc6d","line":192,"range":{"start_line":175,"start_character":8,"end_line":192,"end_character":9},"updated":"2025-11-03 21:21:09.000000000","message":"Other drivers here report each pool to the Manila Scheduler, and include a \"pool_name\" that share type extra-specs can match. You\u0027re choosing to implement a scoped extra-spec to specify pools. Have you identified any advantages to doing this?\n\nBy reporting the pool information to the Scheduler, you enable cloud administrators to discover the pool names that can then be mapped to specific share types if necessary.","commit_id":"9a94f280470b587eabec64e00c2830db7f6caee3"},{"author":{"_account_id":36962,"name":"Volodymyr Boiko","display_name":"Volodymyr","email":"volodymyr.boiko@vastdata.com","username":"fnn45"},"change_message_id":"84225bb41e9b2c27aa4c2e9c1e3c0c01cf27e66e","unresolved":false,"context_lines":[{"line_number":172,"context_line":"            \"Capacity,physical_space_in_use\","},{"line_number":173,"context_line":"        ]"},{"line_number":174,"context_line":"        metrics \u003d self.rest.capacity_metrics.get(metrics_list)"},{"line_number":175,"context_line":"        data \u003d dict("},{"line_number":176,"context_line":"            share_backend_name\u003dself._backend_name,"},{"line_number":177,"context_line":"            vendor_name\u003d\"VAST STORAGE\","},{"line_number":178,"context_line":"            driver_version\u003dself.VERSION,"},{"line_number":179,"context_line":"            storage_protocol\u003d\"NFS\","},{"line_number":180,"context_line":"            data_reduction\u003dmetrics.drr,"},{"line_number":181,"context_line":"            total_capacity_gb\u003dfloat(metrics.logical_space) / units.Gi,"},{"line_number":182,"context_line":"            free_capacity_gb\u003dfloat("},{"line_number":183,"context_line":"                metrics.logical_space - metrics.logical_space_in_use"},{"line_number":184,"context_line":"            )"},{"line_number":185,"context_line":"            / units.Gi,"},{"line_number":186,"context_line":"            provisioned_capacity_gb\u003dfloat("},{"line_number":187,"context_line":"                metrics.logical_space_in_use) / units.Gi,"},{"line_number":188,"context_line":"            snapshot_support\u003dTrue,"},{"line_number":189,"context_line":"            create_share_from_snapshot_support\u003dFalse,"},{"line_number":190,"context_line":"            mount_snapshot_support\u003dFalse,"},{"line_number":191,"context_line":"            revert_to_snapshot_support\u003dFalse,"},{"line_number":192,"context_line":"        )"},{"line_number":193,"context_line":""},{"line_number":194,"context_line":"        super()._update_share_stats(data)"},{"line_number":195,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"8282e761_800921de","line":192,"range":{"start_line":175,"start_character":8,"end_line":192,"end_character":9},"in_reply_to":"42163834_dc3b441e","updated":"2026-02-02 02:54:28.000000000","message":"I clarified if we have option of logical separation that we can represent as \"pool\" and we don\u0027t. \nSo for now better to stick to one \"default\" pool.","commit_id":"9a94f280470b587eabec64e00c2830db7f6caee3"},{"author":{"_account_id":36962,"name":"Volodymyr Boiko","display_name":"Volodymyr","email":"volodymyr.boiko@vastdata.com","username":"fnn45"},"change_message_id":"4ad46bfa1fd6c393829ccf745dcaee461617189a","unresolved":true,"context_lines":[{"line_number":172,"context_line":"            \"Capacity,physical_space_in_use\","},{"line_number":173,"context_line":"        ]"},{"line_number":174,"context_line":"        metrics \u003d self.rest.capacity_metrics.get(metrics_list)"},{"line_number":175,"context_line":"        data \u003d dict("},{"line_number":176,"context_line":"            share_backend_name\u003dself._backend_name,"},{"line_number":177,"context_line":"            vendor_name\u003d\"VAST STORAGE\","},{"line_number":178,"context_line":"            driver_version\u003dself.VERSION,"},{"line_number":179,"context_line":"            storage_protocol\u003d\"NFS\","},{"line_number":180,"context_line":"            data_reduction\u003dmetrics.drr,"},{"line_number":181,"context_line":"            total_capacity_gb\u003dfloat(metrics.logical_space) / units.Gi,"},{"line_number":182,"context_line":"            free_capacity_gb\u003dfloat("},{"line_number":183,"context_line":"                metrics.logical_space - metrics.logical_space_in_use"},{"line_number":184,"context_line":"            )"},{"line_number":185,"context_line":"            / units.Gi,"},{"line_number":186,"context_line":"            provisioned_capacity_gb\u003dfloat("},{"line_number":187,"context_line":"                metrics.logical_space_in_use) / units.Gi,"},{"line_number":188,"context_line":"            snapshot_support\u003dTrue,"},{"line_number":189,"context_line":"            create_share_from_snapshot_support\u003dFalse,"},{"line_number":190,"context_line":"            mount_snapshot_support\u003dFalse,"},{"line_number":191,"context_line":"            revert_to_snapshot_support\u003dFalse,"},{"line_number":192,"context_line":"        )"},{"line_number":193,"context_line":""},{"line_number":194,"context_line":"        super()._update_share_stats(data)"},{"line_number":195,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"f5724c48_5b0d8b33","line":192,"range":{"start_line":175,"start_character":8,"end_line":192,"end_character":9},"in_reply_to":"87824c08_dc04bc6d","updated":"2026-01-16 01:10:29.000000000","message":"Thanks Goutham. \nCould you explain what is a benefit of separated pools?\nVAST doesn\u0027 have option to report usage by pools. It is one total_capacity_gb per whole cluster.","commit_id":"9a94f280470b587eabec64e00c2830db7f6caee3"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"8e68c63259a72b6c7fe6b3e26ff9d37babdfd8a5","unresolved":true,"context_lines":[{"line_number":172,"context_line":"            \"Capacity,physical_space_in_use\","},{"line_number":173,"context_line":"        ]"},{"line_number":174,"context_line":"        metrics \u003d self.rest.capacity_metrics.get(metrics_list)"},{"line_number":175,"context_line":"        data \u003d dict("},{"line_number":176,"context_line":"            share_backend_name\u003dself._backend_name,"},{"line_number":177,"context_line":"            vendor_name\u003d\"VAST STORAGE\","},{"line_number":178,"context_line":"            driver_version\u003dself.VERSION,"},{"line_number":179,"context_line":"            storage_protocol\u003d\"NFS\","},{"line_number":180,"context_line":"            data_reduction\u003dmetrics.drr,"},{"line_number":181,"context_line":"            total_capacity_gb\u003dfloat(metrics.logical_space) / units.Gi,"},{"line_number":182,"context_line":"            free_capacity_gb\u003dfloat("},{"line_number":183,"context_line":"                metrics.logical_space - metrics.logical_space_in_use"},{"line_number":184,"context_line":"            )"},{"line_number":185,"context_line":"            / units.Gi,"},{"line_number":186,"context_line":"            provisioned_capacity_gb\u003dfloat("},{"line_number":187,"context_line":"                metrics.logical_space_in_use) / units.Gi,"},{"line_number":188,"context_line":"            snapshot_support\u003dTrue,"},{"line_number":189,"context_line":"            create_share_from_snapshot_support\u003dFalse,"},{"line_number":190,"context_line":"            mount_snapshot_support\u003dFalse,"},{"line_number":191,"context_line":"            revert_to_snapshot_support\u003dFalse,"},{"line_number":192,"context_line":"        )"},{"line_number":193,"context_line":""},{"line_number":194,"context_line":"        super()._update_share_stats(data)"},{"line_number":195,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"42163834_dc3b441e","line":192,"range":{"start_line":175,"start_character":8,"end_line":192,"end_character":9},"in_reply_to":"f5724c48_5b0d8b33","updated":"2026-01-16 19:09:02.000000000","message":"I see the same concern with CephFS. Space accounting is across the storage cluster rather than specific pools - but reporting pools individually with cluster capacity stats isn\u0027t really going to break anything. \n\nThe biggest benefit I\u0027m thinking of is cloud administrators knowing what vippool names exist. If the driver reports these to manila, they\u0027ll see it when they use: \"openstack share pool list --detail\".","commit_id":"9a94f280470b587eabec64e00c2830db7f6caee3"}],"manila/share/drivers/vastdata/rest.py":[{"author":{"_account_id":29632,"name":"Carlos Eduardo","email":"ces.eduardo98@gmail.com","username":"silvacarlos"},"change_message_id":"f9cbdb1c6bf20f11d764a7350b834375e86c23b6","unresolved":true,"context_lines":[{"line_number":31,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":32,"context_line":""},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"class NoCookiesJar(cookies.RequestsCookieJar):"},{"line_number":35,"context_line":"    def set(self, name, value, **kwargs):"},{"line_number":36,"context_line":"        return None"},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"    def set_cookie(self, cookie, *args, **kwargs):"},{"line_number":39,"context_line":"        return"},{"line_number":40,"context_line":""},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"class Session(requests.Session):"},{"line_number":43,"context_line":""}],"source_content_type":"text/x-python","patch_set":13,"id":"099ff80b_2f539ada","line":40,"range":{"start_line":34,"start_character":0,"end_line":40,"end_character":0},"updated":"2026-07-08 19:30:51.000000000","message":"is this an integral part of this change? if not, can we keep this as a separate enhancement?","commit_id":"2b02b0f0084dfa3c464654f4c705ac5f3a4c9fec"},{"author":{"_account_id":29632,"name":"Carlos Eduardo","email":"ces.eduardo98@gmail.com","username":"silvacarlos"},"change_message_id":"f9cbdb1c6bf20f11d764a7350b834375e86c23b6","unresolved":true,"context_lines":[{"line_number":85,"context_line":"                \"POST\","},{"line_number":86,"context_line":"                f\"{self.base_url}/token/\","},{"line_number":87,"context_line":"                verify\u003dself.ssl_verify,"},{"line_number":88,"context_line":"                timeout\u003d30,"},{"line_number":89,"context_line":"                json\u003d{\"username\": self.username, \"password\": self.password},"},{"line_number":90,"context_line":"            )"},{"line_number":91,"context_line":"            resp.raise_for_status()"}],"source_content_type":"text/x-python","patch_set":13,"id":"a30a8ea1_0c183a59","line":88,"range":{"start_line":88,"start_character":0,"end_line":88,"end_character":27},"updated":"2026-07-08 19:30:51.000000000","message":"same question about being an integral part of this change","commit_id":"2b02b0f0084dfa3c464654f4c705ac5f3a4c9fec"},{"author":{"_account_id":29632,"name":"Carlos Eduardo","email":"ces.eduardo98@gmail.com","username":"silvacarlos"},"change_message_id":"f9cbdb1c6bf20f11d764a7350b834375e86c23b6","unresolved":true,"context_lines":[{"line_number":142,"context_line":"        # non-paginated responses from the API"},{"line_number":143,"context_line":"        if isinstance(ret, dict) and \"results\" in ret and \"count\" in ret:"},{"line_number":144,"context_line":"            # This is a paginated response, extract the results array"},{"line_number":145,"context_line":"            ret \u003d ret[\"results\"]"},{"line_number":146,"context_line":""},{"line_number":147,"context_line":"        if ret and log_result:"},{"line_number":148,"context_line":"            formatted_response \u003d textwrap.indent("}],"source_content_type":"text/x-python","patch_set":13,"id":"03263b8b_aa353381","line":145,"range":{"start_line":145,"start_character":13,"end_line":145,"end_character":32},"updated":"2026-07-08 19:30:51.000000000","message":"wouldn\u0027t there be any other data you\u0027d need from ret other than results?","commit_id":"2b02b0f0084dfa3c464654f4c705ac5f3a4c9fec"},{"author":{"_account_id":29632,"name":"Carlos Eduardo","email":"ces.eduardo98@gmail.com","username":"silvacarlos"},"change_message_id":"f9cbdb1c6bf20f11d764a7350b834375e86c23b6","unresolved":true,"context_lines":[{"line_number":209,"context_line":"        self.session \u003d rest.session"},{"line_number":210,"context_line":""},{"line_number":211,"context_line":"    def list(self, **params):"},{"line_number":212,"context_line":"        \"\"\"Get a list of entries with optional filtering params\"\"\""},{"line_number":213,"context_line":"        return self.session.get(self.resource_name, params\u003dparams)"},{"line_number":214,"context_line":""},{"line_number":215,"context_line":"    def create(self, **params):"}],"source_content_type":"text/x-python","patch_set":13,"id":"c429338a_1cd2d67f","line":212,"range":{"start_line":212,"start_character":0,"end_line":212,"end_character":66},"updated":"2026-07-08 19:30:51.000000000","message":"I appreciate looking out for spelling issues but I\u0027d discourage making this change a part of this patch, as it will impact the history and can throw people off while checking the commit history. So could you please change this and fix it in a follow-up? Same applies to the change below","commit_id":"2b02b0f0084dfa3c464654f4c705ac5f3a4c9fec"},{"author":{"_account_id":29632,"name":"Carlos Eduardo","email":"ces.eduardo98@gmail.com","username":"silvacarlos"},"change_message_id":"f9cbdb1c6bf20f11d764a7350b834375e86c23b6","unresolved":true,"context_lines":[{"line_number":224,"context_line":""},{"line_number":225,"context_line":"    def delete(self, **params):"},{"line_number":226,"context_line":"        \"\"\"Delete entry by provided params. Skip if entry not found.\"\"\""},{"line_number":227,"context_line":"        entry \u003d self.one(**params)"},{"line_number":228,"context_line":"        if not entry:"},{"line_number":229,"context_line":"            resource \u003d self.__class__.__name__.lower()"},{"line_number":230,"context_line":"            serialized_params \u003d json.dumps(params, separators\u003d(\",\", \":\"))"}],"source_content_type":"text/x-python","patch_set":13,"id":"a25241d0_08ec9247","line":227,"updated":"2026-07-08 19:30:51.000000000","message":"create and other methods switched to using the tenant_id - would we need it here too?","commit_id":"2b02b0f0084dfa3c464654f4c705ac5f3a4c9fec"},{"author":{"_account_id":29632,"name":"Carlos Eduardo","email":"ces.eduardo98@gmail.com","username":"silvacarlos"},"change_message_id":"f9cbdb1c6bf20f11d764a7350b834375e86c23b6","unresolved":true,"context_lines":[{"line_number":242,"context_line":"            **params,"},{"line_number":243,"context_line":"        )"},{"line_number":244,"context_line":""},{"line_number":245,"context_line":"    def one(self, *, fail_if_missing\u003dFalse, **params):"},{"line_number":246,"context_line":"        \"\"\"Retrieve a single entry by provided filter parameters."},{"line_number":247,"context_line":""},{"line_number":248,"context_line":"        Args:"}],"source_content_type":"text/x-python","patch_set":13,"id":"242007b4_ab532c01","line":245,"range":{"start_line":245,"start_character":17,"end_line":245,"end_character":20},"updated":"2026-07-08 19:30:51.000000000","message":"uhm, a bit complicated - any other way we can keep parameters more visible here?","commit_id":"2b02b0f0084dfa3c464654f4c705ac5f3a4c9fec"},{"author":{"_account_id":29632,"name":"Carlos Eduardo","email":"ces.eduardo98@gmail.com","username":"silvacarlos"},"change_message_id":"f9cbdb1c6bf20f11d764a7350b834375e86c23b6","unresolved":true,"context_lines":[{"line_number":406,"context_line":"        self.snapshots \u003d Snapshots(self)"},{"line_number":407,"context_line":"        self.folders \u003d Folders(self)"},{"line_number":408,"context_line":""},{"line_number":409,"context_line":"        if not api_token:"},{"line_number":410,"context_line":"            # Refresh auth token to avoid initial \"forbidden\" status error."},{"line_number":411,"context_line":"            self.session.refresh_auth_token()"},{"line_number":412,"context_line":""}],"source_content_type":"text/x-python","patch_set":13,"id":"cab4d014_638b0a75","line":409,"range":{"start_line":409,"start_character":0,"end_line":409,"end_character":25},"updated":"2026-07-08 19:30:51.000000000","message":"also not sure if this is an important piece of the multitenancy change","commit_id":"2b02b0f0084dfa3c464654f4c705ac5f3a4c9fec"}],"releasenotes/notes/vastdata-multitenancly-6936c95f94213548.yaml":[{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"7b63ebafc7b178d1b6d5b425b215242e16c2a769","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":8,"id":"4e9fab89_c371da67","updated":"2025-11-03 21:23:42.000000000","message":"typo in the file name: multitenancy","commit_id":"9a94f280470b587eabec64e00c2830db7f6caee3"},{"author":{"_account_id":36962,"name":"Volodymyr Boiko","display_name":"Volodymyr","email":"volodymyr.boiko@vastdata.com","username":"fnn45"},"change_message_id":"e5532c9ab3906698f18269ea87f8faa512673f3e","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":8,"id":"c29928ab_f1521297","in_reply_to":"4e9fab89_c371da67","updated":"2026-03-02 09:24:19.000000000","message":"Done","commit_id":"9a94f280470b587eabec64e00c2830db7f6caee3"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"542dab08de9cf932298f41242aca4bd877668aeb","unresolved":true,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    The VAST Manila driver now supports multitenancy via share types using"},{"line_number":5,"context_line":"    namespaced extra specs. Administrators can specify different VIP pools"},{"line_number":6,"context_line":"    per share type using the ``vast:vippool_name`` extra spec, enabling"},{"line_number":7,"context_line":"    network isolation between different tenants or projects. This allows"}],"source_content_type":"text/x-yaml","patch_set":8,"id":"fd598c32_f3780920","line":4,"range":{"start_line":4,"start_character":31,"end_line":4,"end_character":39},"updated":"2025-11-03 21:21:09.000000000","message":"enhances?\n\nMultitenancy was always supported, i.e., all OpenStack Manila resources are namespace isolated; however, by dedicating pools to tenants, you\u0027re enabling a different level of data isolation. \n\nI presume this can be done today by setting up multiple VAST backend sections, each specifying a different vast_vippool_name","commit_id":"9a94f280470b587eabec64e00c2830db7f6caee3"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"8e68c63259a72b6c7fe6b3e26ff9d37babdfd8a5","unresolved":true,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    The VAST Manila driver now supports multitenancy via share types using"},{"line_number":5,"context_line":"    namespaced extra specs. Administrators can specify different VIP pools"},{"line_number":6,"context_line":"    per share type using the ``vast:vippool_name`` extra spec, enabling"},{"line_number":7,"context_line":"    network isolation between different tenants or projects. This allows"}],"source_content_type":"text/x-yaml","patch_set":8,"id":"f607c47c_cfbb20ca","line":4,"range":{"start_line":4,"start_character":31,"end_line":4,"end_character":39},"in_reply_to":"6f3d11ca_a91b16b4","updated":"2026-01-16 19:09:02.000000000","message":"yes, i meant replacing \"supports\" with \"enhances\" in the text will be better because right now it sounds as though multitenancy wasn\u0027t supported at all.","commit_id":"9a94f280470b587eabec64e00c2830db7f6caee3"},{"author":{"_account_id":36962,"name":"Volodymyr Boiko","display_name":"Volodymyr","email":"volodymyr.boiko@vastdata.com","username":"fnn45"},"change_message_id":"84225bb41e9b2c27aa4c2e9c1e3c0c01cf27e66e","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    The VAST Manila driver now supports multitenancy via share types using"},{"line_number":5,"context_line":"    namespaced extra specs. Administrators can specify different VIP pools"},{"line_number":6,"context_line":"    per share type using the ``vast:vippool_name`` extra spec, enabling"},{"line_number":7,"context_line":"    network isolation between different tenants or projects. This allows"}],"source_content_type":"text/x-yaml","patch_set":8,"id":"061c7749_03d00f6f","line":4,"range":{"start_line":4,"start_character":31,"end_line":4,"end_character":39},"in_reply_to":"f607c47c_cfbb20ca","updated":"2026-02-02 02:54:28.000000000","message":"Done","commit_id":"9a94f280470b587eabec64e00c2830db7f6caee3"},{"author":{"_account_id":36962,"name":"Volodymyr Boiko","display_name":"Volodymyr","email":"volodymyr.boiko@vastdata.com","username":"fnn45"},"change_message_id":"4ad46bfa1fd6c393829ccf745dcaee461617189a","unresolved":true,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    The VAST Manila driver now supports multitenancy via share types using"},{"line_number":5,"context_line":"    namespaced extra specs. Administrators can specify different VIP pools"},{"line_number":6,"context_line":"    per share type using the ``vast:vippool_name`` extra spec, enabling"},{"line_number":7,"context_line":"    network isolation between different tenants or projects. This allows"}],"source_content_type":"text/x-yaml","patch_set":8,"id":"6f3d11ca_a91b16b4","line":4,"range":{"start_line":4,"start_character":31,"end_line":4,"end_character":39},"in_reply_to":"fd598c32_f3780920","updated":"2026-01-16 01:10:29.000000000","message":"Probably there is misunderstanding. \nMy change has nothing to do with Openstack tenants as wwell as Multitenancy is not related to Openstack.\n\nAll these terms are also used in Vast and here I\u0027d like to be able to specify different vast vip pools for connection (vast vip pool is list of ip addresses assigned to specific vast tenant)\n\nNamely we have manila.conf where I can specify vastdata_vip_pool as one of required arguments. So far only this vip pool ( all ips of vip pool is all available export locations of manila share) was used for connections.\n\nBut we have request from customer who wants to use different vip pools thus different tenants for different shares.\n\nOne way to provide \"extra\" vip pools besides one that is specified in manila.conf is to use extra specs where you can actually provide arbitrary, driver related key value pairs. I saw this approach in some cinder drivers.","commit_id":"9a94f280470b587eabec64e00c2830db7f6caee3"}]}
