标准化 Nova 镜像

https://blueprints.launchpad.net/nova/+spec/standardize-nova-image

将 Nova 的 nova.image 模块标准化,使其工作方式与 nova.network.api 和 nova.volume.cinder 类似。

问题描述

由于某种原因,nova.image 的处理方式与其他 nova.volume 和 nova.network 不同。Nova.compute.manager 不像实例化 self.network_api 和 self.volume_api 那样实例化 self.image_api 对象,而是调用 nova.image.glance 模块的一系列晦涩的函数。

此蓝图围绕着创建新的 nova.image.api 模块,并使其像 Nova 中的其他子模块“内部 API”一样被调用。

提议的变更

将创建一个新的 nova.image.api 模块,风格上遵循 nova.network.api 和 nova.volume.cinder。nova.image.api 模块中将包含一个 API 类,其约定与 nova.volume.cinder.API 类完全相同,具有用于列出(get_all)、显示(get)、创建(create)、更新(update)和删除(delete)后端镜像存储中镜像的方法。将有一个 nova.image.driver 模块,其中包含一个基础驱动程序类。

nova.image.glance 模块将被更新,以继承基础驱动程序类。

备选方案

目前有一系列补丁正在 Nova 中审查,试图添加对 Glance V2 API 操作的支持

https://review.openstack.org/#/q/status:open+project:openstack/nova+branch:master+topic:bp/use-glance-v2-api,n,z

不幸的是,我认为这组补丁进一步模糊了 Nova 内部的镜像服务,而不是使其更清晰和标准化,与 Nova 的其余外部 API 接口保持一致。

此蓝图的想法是首先标准化 Nova 内部的镜像 API,为未来的 V2 Glance API 工作奠定良好的基础。

数据模型影响

REST API 影响

安全影响

通知影响

其他最终用户影响

性能影响

其他部署者影响

开发人员影响

请参阅上面链接到 Eddie Sheffield 的补丁系列,该系列将受到此蓝图中的代码影响。然而,希望一旦镜像 API 与其他 Nova 内部到外部 API 保持一致,V2 Glance API 的工作应该会容易得多。

实现

负责人

主要负责人

jaypipes

工作项

  • 创建 nova.image.api 模块,该模块实例化一个驱动程序

  • 创建基础镜像驱动程序类,模仿 refactor-network-api 蓝图代码创建的新 nova.network.driver 类。

  • 将现有的 glance 代码移动到子类化的驱动程序中

依赖项

测试

文档影响

参考资料