支持按导出位置过滤共享¶
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_pathGET /v2/{tenant_id}/share-instances?export_location=test_path
详细的共享和共享实例列表 API 也将接受新的查询字符串参数 ‘export_location’。管理员可以传递导出位置的路径和 ID 以检索过滤后的共享。
GET /v2/{tenant_id}/shares/detail?export_location=test_pathGET /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 客户端中添加相关的测试。
依赖项¶
无
测试¶
单元和 tempest 测试,以验证新的 API 是否正常工作。
Manila 客户端的单元测试和功能测试,针对新添加的参数。
文档影响¶
Manila API 文档需要更新以反映 REST API 的更改。