API 扩展策略移除¶
https://blueprints.launchpad.net/nova/+spec/api-extensions-policy-removal
本规范旨在弃用 API 扩展策略,这些策略是在引入 API 扩展时专门添加的。
问题描述¶
Nova API 扩展概念已在 Pike 中移除。但代码仍然存在于不同的文件中。例如:api/openstack/compute/extended_availability_zone.py 扩展通过扩展 Show 和 Detail 方法,在 GET server API 中添加了 AZ。
这些扩展代码具有自身的策略强制执行。例如,extended_availability_zone.py 扩展了 GET server API 响应,并具有策略 ‘os_compute_api:os-extended-availability-zone’。因此,GET server API 具有多重策略强制执行:show server 策略 + 每个扩展的策略。
虽然无法在 API 中启用/禁用扩展,但我们允许扩展策略控制 API 的扩展行为。
这可能会导致互操作性问题,而移除 API 扩展概念正是为了解决这个问题。
此外,我找不到这些策略的实际用例,它们是随着扩展一起添加的。
用例¶
作为操作员,我希望 API 的策略清晰明了。为不同的响应元素控制单个 API 的多个策略可能并不总是好的和清晰的。
作为 API 开发人员,我希望通过清理遗留扩展策略来轻松维护 API 的策略。
提议的变更¶
本规范建议弃用以下策略,这些策略非常特定于 API 扩展,并且默认情况下并非仅限于管理员:
服务器扩展
Config Drive
文件:api/openstack/compute/config_drive.py
目的:在 GET server 响应中添加 ‘config_drive’
策略:‘os_compute_api:os-config-drive’
策略强制执行:软性(不引发异常)
建议:弃用。
扩展 AZ
文件:api/openstack/compute/extended_availability_zone.py
目的:在 GET server 响应中添加 ‘OS-EXT-AZ:availability_zone’
策略:‘os_compute_api:os-extended-availability-zone’
策略强制执行:软性(不引发异常)
建议:弃用。
扩展状态
文件:api/openstack/compute/extended_status.py
目的:在 GET server 响应中添加服务器状态(‘task_state’、‘vm_state’、‘power_state’)属性
策略:‘os_compute_api:os-extended-status’
策略强制执行:软性(不引发异常)
建议:弃用。
扩展卷
文件:api/openstack/compute/extended_volumes.py
目的:在 GET server 响应中添加 ‘os-extended-volumes:volumes_attached’。
策略:‘os_compute_api:os-extended-volumes’
策略强制执行:软性(不引发异常)
建议:弃用。
隐藏服务器地址:这将由其他 BP 处理。 - https://blueprints.launchpad.net/nova/+spec/remove-configurable-hide-server-address-feature
密钥对
文件:api/openstack/compute/keypairs.py
目的:在 GET server 响应中添加 ‘key_name’
策略:‘os_compute_api:os-keypairs’
策略强制执行:软性(不引发异常)
建议:弃用。
安全组
文件:api/openstack/compute/security_groups.py
目的:在 GET、POST server 响应中添加 ‘security_groups’
策略:‘os_compute_api:os-security-groups’
策略强制执行:软性(不引发异常)
注意:相同的策略也由其他安全组 API 使用,因此此处的建议是从 GET、POST server API 中移除策略强制执行。
建议:仅从 GET、POST /servers API 弃用。
服务器使用情况
文件:api/openstack/compute/server_usage.py
目的:在 GET server 响应中添加 ‘OS-SRV-USG:launched_at’、‘OS-SRV-USG:terminated_at’。
策略:‘os_compute_api:os-server-usage’
策略强制执行:软性(不引发异常)
建议:弃用。
Flavor 扩展
Flavor rxtx
文件:api/openstack/compute/flavor_rxtx.py
目的:在 GET、POST flavor 响应中添加 ‘os-flavor-rxtx’
策略:‘os_compute_api:os-flavor-rxtx’
策略强制执行:软性(不引发异常)
建议:弃用。
Flavor 访问
文件:api/openstack/compute/flavor_access.py
目的:在 GET、POST flavor 响应中添加 ‘os-flavor-access:is_public’
策略:‘os_compute_api:os-flavor-access’
策略强制执行:软性(不引发异常)
注意:此策略也由 flavor 访问 API 使用(GET /flavors/{flavor_id}/os-flavor-access),不会更改。此处的建议是从 GET、POST flavor API 中移除此策略强制执行。
建议:仅针对 GET、POST /flavors API 弃用。
Image 扩展
Image 大小
文件:api/openstack/compute/image_size.py
目的:在 GET image 响应中添加 ‘OS-EXT-IMG-SIZE:size’
策略:‘os_compute_api:image-size’
策略强制执行:软性(不引发异常)
建议:弃用。
上述所有策略都建议在一个周期内弃用。
备选方案¶
保留策略并继续在单个 API 中进行多重策略强制执行。
数据模型影响¶
无
REST API 影响¶
以下提到的策略将在下一个周期中弃用并移除。移除后,这些策略将不再控制扩展属性,并且这些属性将始终添加,而无需检查这些特定策略。这些 API 的主要策略仍然有效且已强制执行。
主要策略是 Show、Detail API 的现有策略(如果有的话)。例如:GET servers/{server_id} - “os_compute_api:servers:show” GET servers/detail - “os_compute_api:servers:detail” POST flavors - ‘os_compute_api:os-flavor-manage:create’
GET flavors 没有 Show、Detail API 的策略。GET images 没有 Show、Detail API 的策略。
显示和列出详细服务器
GET /servers/{server_id}
GET /servers/detail
Policies to be deprecated:
'os_compute_api:os-config-drive'
'os_compute_api:os-extended-availability-zone'
'os_compute_api:os-extended-status'
'os_compute_api:os-extended-volumes'
'os_compute_api:os-keypairs'
'os_compute_api:os-security-groups'
'os_compute_api:os-server-usage'
创建、显示和列出详细 flavor
POST /flavors
GET /flavors/{flavor_id}
GET /flavors/detail
Policies to be deprecated:
'os_compute_api:os-flavor-rxtx'
'os_compute_api:os-flavor-access'
显示和列出详细 image
GET /images/{image_id}
GET /images/detail
Policies to be deprecated:
'os_compute_api:image-size'
由于所有这些策略都是软性强制执行的,并且在失败时不会引发异常,因此 API 的成功案例不会发生变化。
安全影响¶
覆盖上述策略的云提供商将受到策略弃用和然后在各自 API 中移除策略的影响。
通知影响¶
无
其他最终用户影响¶
无
性能影响¶
无
其他部署者影响¶
控制扩展属性的策略将不再控制其在响应中的添加。
开发人员影响¶
无
实现¶
负责人¶
- 主要负责人
Ghanshyam Mann <ghanshyammann@gmail.com>
工作项¶
在 queens 周期中弃用相应的策略。
在下一个(Rocky)周期中移除已弃用的策略。
依赖项¶
Oslo Policy 弃用 BP:https://blueprints.launchpad.net/oslo.policy/+spec/policy-deprecation
测试¶
相应的单元测试和功能测试将被修改。
文档影响¶
无
参考资料¶
无
历史¶
发布名称 |
描述 |
|---|---|
Queens |
引入 |