添加新的 cinder 附件 API 和多重挂载支持

https://blueprints.launchpad.net/glance-store/+spec/attachment-api-and-multiattach-support

使 glance cinder 存储使用 cinder 的新的附件 API 进行镜像操作。

问题描述

目前,当我们对 glance 发出同时请求,使用镜像创建多个卷或启动多个实例时,相同的镜像卷需要被多次挂载以服务这些请求,并且由于 glance cinder 存储中缺乏此支持,因此部分请求会失败。

提议的变更

Cinder 的新附件 API 在 microversion 3.27 中引入,应该被 cinder 支持,并且在通过 cinderclient 进行调用时需要通过。引入了 2 个新方法,attachment_complete 在 MV 3.44 中,以及在 attachment_create 中传递挂载模式在 MV 3.54 中,这些方法也都是必需的,因此我们将使用 MV 3.54 进行附件相关操作。所有这些更改都是在添加多重挂载处理之前必需的。

这应该是一个两阶段的变更

1) 将现有的 cinder 附件 API 调用替换为新的附件 API 调用

  1. 添加 glance cinder 用例的多重挂载处理

备选方案

使用 cinder 的镜像卷缓存,该缓存将克隆从镜像创建的第一个可启动卷,后续请求将导致 cinder 的克隆操作,而不是从 glance 下载镜像。

数据模型影响

REST API 影响

安全影响

通知影响

其他最终用户影响

性能影响

这将减少对 cinder 的调用次数,从而提高性能。例如:initialize_connection 和 attach 调用将被 attachment_update 替换,类似地,terminate_connection 和 detach 调用将被 attachment_delete 替换。

其他部署者影响

开发人员影响

实现

负责人

主要负责人: * whoami-rajat

其他贡献者

评审人员

核心评审人

  • abhishek-kekane

  • jokke

  • rosmaita

  • smcginnis

工作项

  • 将对旧附件方法的现有调用替换为新的附件 API 调用

  • 修改 cinderclient 调用以包含 microversion

  • 添加多重挂载处理代码

  • 添加适当的单元测试

依赖项

测试

单元测试将具有代码覆盖率,并且新的附件代码路径将通过在 glance gate 上运行的 glance cinder tempest 作业进行测试。

文档影响

参考资料