为风味展示和详细 API 调用添加额外规格¶
https://blueprints.launchpad.net/nova/+spec/add-extra-specs-to-flavor-list
为以下 API 添加新的微版本,以返回风味的 extra-specs。
GET /flavors/details
GET /flavors/{flavor_id}
POST /flavors
PUT /flavors/{flavor_id}
问题描述¶
目前,GET /flavors/details、GET /flavors/{flavor_id}、POST /flavors 和 PUT /flavors/{flavor_id} 的响应不包含 extra_specs 字段。用户必须再次调用 GET /flavors/{flavor_id}/extra_specs 来获取 extra_specs 字段。
像 shade 这样的 UI 和 SDK 在检索所有风味和额外规格之前可能会超时。
用例¶
UI 和 SDK 可以避免为每个风味进行单独的调用以获取 extra_specs,从而避免在此过程中发生超时。
提议的变更¶
为以下 API 添加新的微版本,以返回风味的 extra-specs。
GET /flavors/details
GET /flavors/{flavor_id}
POST /flavors
PUT /flavors/{flavor_id}
注意
当添加微版本 2.47 时,extra_specs 字段已包含在服务器详细信息响应中的嵌入式实例风味中,并且仅对满足特定策略的用户可见 [1]。
备选方案¶
无
数据模型影响¶
无
REST API 影响¶
以下更改将在新的 API 微版本中引入。
GET /flavors/details
将
extra_specs数据添加到响应体。JSON 响应体示例
{ "flavors": [ ... { "OS-FLV-DISABLED:disabled": false, "disk": 1, "OS-FLV-EXT-DATA:ephemeral": 0, "os-flavor-access:is_public": true, "id": "1", "links": [ { "href": "http://openstack.example.com/v2/6f70656e737461636b20342065766572/flavors/1", "rel": "self" }, { "href": "http://openstack.example.com/6f70656e737461636b20342065766572/flavors/1", "rel": "bookmark" } ], "name": "m1.tiny", "ram": 512, "swap": "", "vcpus": 1, "rxtx_factor": 1.0, "description": null, "extra_specs": { "key1": "value1", "key2": "value2" } }, ... ] }
GET /flavors/{flavor_id}
将
extra_specs数据添加到响应体。JSON 响应体示例
{ "flavor": { "OS-FLV-DISABLED:disabled": false, "disk": 20, "OS-FLV-EXT-DATA:ephemeral": 0, "os-flavor-access:is_public": true, "id": "7", "links": [ { "href": "http://openstack.example.com/v2/6f70656e737461636b20342065766572/flavors/7", "rel": "self" }, { "href": "http://openstack.example.com/6f70656e737461636b20342065766572/flavors/7", "rel": "bookmark" } ], "name": "m1.small.description", "ram": 2048, "swap": "", "vcpus": 1, "rxtx_factor": 1.0, "description": "test description", "extra_specs": { "key1": "value1", "key2": "value2" } } }
POST /flavors
将
extra_specs数据添加到响应体。JSON 响应体示例
{ "flavor": { "OS-FLV-DISABLED:disabled": false, "disk": 10, "OS-FLV-EXT-DATA:ephemeral": 0, "os-flavor-access:is_public": true, "id": "10", "links": [ { "href": "http://openstack.example.com/v2/6f70656e737461636b20342065766572/flavors/10", "rel": "self" }, { "href": "http://openstack.example.com/6f70656e737461636b20342065766572/flavors/10", "rel": "bookmark" } ], "name": "test_flavor", "ram": 1024, "swap": "", "rxtx_factor": 2.0, "vcpus": 2, "description": "test description", "extra_specs": {} } }
PUT /flavors/{flavor_id}
将
extra_specs数据添加到响应体。JSON 响应体示例
{ "flavor": { "OS-FLV-DISABLED:disabled": false, "disk": 1, "OS-FLV-EXT-DATA:ephemeral": 0, "os-flavor-access:is_public": true, "id": "1", "links": [ { "href": "http://openstack.example.com/v2.1/6f70656e737461636b20342065766572/flavors/1", "rel": "self" }, { "href": "http://openstack.example.com/6f70656e737461636b20342065766572/flavors/1", "rel": "bookmark" } ], "name": "m1.tiny", "ram": 512, "swap": "", "vcpus": 1, "rxtx_factor": 1.0, "description": "updated description", "extra_specs": { "key1": "value1", "key2": "value2" } } }
安全影响¶
风味资源中风味 extra_specs 的可见性将由与查询风味 extra_specs 相同的策略规则控制。
通知影响¶
无
其他最终用户影响¶
novaclient 和 openstackclient 已被修改为将 extra_specs 字段添加到响应中。
性能影响¶
由于我们在从数据库获取风味时始终连接额外规格,因此不会有性能影响,它已经可用,只是 API 响应中未公开。
其他部署者影响¶
无
开发人员影响¶
无
升级影响¶
无
实现¶
负责人¶
- 主要负责人
江益坤
- 其他贡献者
Kevin Zheng
工作项¶
将“extra_specs”字段添加到风味 API。
在 novaclient/openstackclient 中添加“extra_specs”字段
API 文档,包括“extra_specs”字段的说明
依赖项¶
无
测试¶
添加以下测试。
功能测试
负面单元测试
文档影响¶
API 参考
CLI 参考
参考资料¶
历史¶
发布名称 |
描述 |
|---|---|
Rocky |
提议 |