支持按导出位置过滤共享

https://blueprints.launchpad.net/manila/+spec/support-filter-share-by-export-location

目前我们只能按共享名称、状态、共享类型、额外规格、共享服务器 ID、元数据、快照、主机、共享网络、项目 ID 和一致性组过滤共享,但这对于用户的各种用例来说太有限了。Manila 不支持按导出位置过滤共享。本规范旨在为 Manila 添加此功能。

问题描述

使用过滤器列出 NAS 共享是一个常见的用例,Manila 具有覆盖此功能的 API,但当需要导出位置过滤器时,它并不能满足需求。主要问题在于,虽然有导出位置,但我们无法知道哪个 Manila 共享拥有它。

用例

当用户有一个已挂载到 VM 的共享,并且用户只知道共享导出位置路径时,用户经常希望在 Manila 中通过共享导出位置快速过滤共享。此更改将帮助他实现这一点。

提议的变更

修改后的共享和共享实例列表版本在大部分情况下将是相同的,除了下面提到的部分

  • 将向共享和共享实例列表 API(GET shares 和 GET shares/detail,GET share-instances 和 GET share-instances/detail)引入一个查询参数 ‘export_location’。

  • 在 API 服务中,export_location 将添加到共享和共享实例搜索选项中。在 Manila DB 的方法中,将在 SQLAlchemy API 中添加一个新的导出位置过滤器,并添加一个新的逻辑,该逻辑将使用导出位置过滤所有共享或共享实例。

  • Manila 客户端也将添加一个参数 ‘–export_location’ 以支持此功能。

备选方案

我们可以从共享导出位置路径获取共享实例 ID,并使用 “share-instance-show <instance>” 命令来找到关联的共享。

数据模型影响

REST API 影响

对于以下新 API,必须提高 API 微版本。

共享和共享实例列表 API 将接受新的查询字符串参数 ‘export_location’。管理员可以传递 export_location 的路径和 ID 以检索过滤后的共享。

  • GET /v2/{tenant_id}/shares?export_location=test_path

  • GET /v2/{tenant_id}/share-instances?export_location=test_path

详细的共享和共享实例列表 API 也将接受新的查询字符串参数 ‘export_location’。管理员可以传递导出位置的路径和 ID 以检索过滤后的共享。

  • GET /v2/{tenant_id}/shares/detail?export_location=test_path

  • GET /v2/{tenant_id}/share-instances/detail?export_location=test_path

搜索将在“允许”范围内进行,对于用户,共享 - 他的所有共享和公共共享。

Manila 客户端影响

Manila 客户端将向 ‘list’ 命令添加一个新的参数 ‘–export_location <export-location>’,修改后的命令版本如下

* list --export_location <export-location> <other existing command arguments>
* share-instance-list --export_location <export-location> <other existing command arguments>

安全影响

通知影响

无。

其他最终用户影响

无。

性能影响

其他部署者影响

开发人员影响

实现

负责人

主要负责人

zhongjun2(jun.zhongjun2@gmail.com)

工作项

  • 向 ‘list’ 集合添加 ‘export_location’ 参数。

  • 在 Manila 中添加相关的测试。

  • 在 Manila 中添加文档。

  • 在 Manila 客户端中为 ‘list’ 命令添加新的参数。

  • 在 Manila 客户端中添加相关的测试。

依赖项

测试

  1. 单元和 tempest 测试,以验证新的 API 是否正常工作。

  2. Manila 客户端的单元测试和功能测试,针对新添加的参数。

文档影响

  1. Manila API 文档需要更新以反映 REST API 的更改。

参考资料