在添加租户访问权限前检查风味类型¶
https://blueprints.launchpad.net/nova/+spec/check-flavor-type-before-add-tenant
问题描述¶
我们无法向公共风味添加租户访问权限。 尝试这样做会在稍后显示风味时导致令人困惑的错误消息
$ nova flavor-access-add 1 2
+-----------+-----------+
| Flavor_ID | Tenant_ID |
+-----------+-----------+
| 1 | 2 |
+-----------+-----------+
$ nova flavor-access-list --flavor 1
ERROR (CommandError): Failed to get access list for public flavor type.
我们应该检查风味是否为公共风味,并拒绝向公共风味添加访问权限的 API 调用。 但这是一个向后不兼容的错误,每个 API 变更都需要规范,因此需要一个微版本来处理此问题。
用例¶
如果风味是公共风味,用户将收到无法添加访问权限的通知,但有一些例外情况。
项目优先级¶
无
提议的变更¶
在 API 层,对于风味的“addTenantAccess”,我们执行以下操作以添加访问权限,因此建议的更改是在添加访问权限之前,添加一个验证来检查类型,并在风味为私有类型时引发异常。
api/openstack/compute/plugins/v3/flavor_access.py
flavor = objects.Flavor(context=context, flavorid=id)
try:
flavor.add_access(tenant)
这是一个不向后兼容的修复,因此将添加一个新的微版本,并且仅当传入的 API 版本等于或高于此版本时,才会进行检查。
备选方案¶
让用户继续使用现有的代码,即使它是一个错误。
数据模型影响¶
无
REST API 影响¶
根据讨论的“Proposed change”(建议的更改),将在调用 add_access 之前添加一个检查。 它将类似于
def _check_flavor_type(self, req, flavor):
if req.version > target_version:
if flavor.type is public:
raise HTTPBadRequest
安全影响¶
无
通知影响¶
无
其他最终用户影响¶
无
性能影响¶
无
其他部署者影响¶
无
开发人员影响¶
无
实现¶
负责人¶
jichenjc <jichenjc@cn.ibm.com>
工作项¶
通过微版本添加 API 变更,因为它向后不兼容。 1) 向 os-flavor-access/addTenantAccess 添加微版本 2) 在添加访问权限之前添加验证。
依赖项¶
无
测试¶
无
文档影响¶
无
参考资料¶
[1] https://bugs.launchpad.net/nova/+bug/1361476 [2] https://review.openstack.org/#/c/124338/