将 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。
文档影响¶
无
参考资料¶
无