将 EC2 API 转换为使用 nova 对象

https://blueprints.launchpad.net/nova/+spec/ec2-api-objects

此蓝图涵盖更新 EC2 API 和相关函数,以便对所有数据库交互使用 Nova 对象模型,就像计算管理器和 nova-network 中的实现一样。

问题描述

目前 EC2 API 使用原始的数据库 API 来从数据库中获取数据。

提议的变更

需要修改的文件包括

  • nova/api/ec2/cloud.py

  • nova/api/ec2/ec2utils.py

  • nova/tests/api/ec2/test_cinder_cloud.py

  • nova/tests/api/ec2/test_cloud.py

  • nova/tests/api/ec2/test_ec2_validate.py

备选方案

数据模型影响

包含四个部分,EC2SnapshotIdMapping、EC2VolumeIdMapping、EC2S3Image、EC2InstanceIdMapping。

所有这些都需要进行修改,以便使用对象而不是直接使用数据库 API 来管理 UUID 到 EC2 ID 的映射。

  • 现在 ‘EC2VolumeMapping’ 和 ‘EC2InstanceMapping’ 需要与 russellb 合作,他正在处理对象。

  • ‘EC2SnapshotIdMapping’ 和 ‘EC2S3Image’ 对象需要在 nova/objects.ec2.py 中添加和实现。

REST API 影响

安全影响

通知影响

其他最终用户影响

性能影响

其他部署者影响

开发人员影响

实现

负责人

主要负责人

wingwj

其他贡献者

russellb

工作项

  • 添加 ‘EC2VolumeMapping’ 对象 - (需要与 russellb 合作)

  • 添加 ‘EC2InstanceMapping’ 对象 - (需要与 russellb 合作)

  • 在 /nova/objects/ec2.py 中添加 ‘EC2SnapshotIdMapping’ 和 ‘EC2S3Image’ 对象

  • 在 EC2 API 和相关测试中使用 ‘EC2VolumeMapping’

  • 在 EC2 API 和相关测试中使用 ‘EC2InstanceMapping’

  • 在 EC2 API 和相关测试中使用 ‘EC2SnapshotIdMapping’

  • 在 EC2 API 和相关测试中使用 ‘EC2S3Image’

依赖项

测试

原始单元测试也需要使用 nova 对象重写。修改后,将一起验证所有更改的 API。

文档影响

参考资料