支持 Servers IPs API 响应中非唯一网络名称¶
https://blueprints.launchpad.net/nova/+spec/servers-ips-non-unique-network-names
当虚拟机使用多个同名网络时,正确报告服务器 IP 信息。此规范建议在 Server IPs API 资源中使用网络 ID 而不是名称来分组虚拟机网络。
问题描述¶
Neutron 允许存在多个同名网络。Nova 允许将多个网络添加到虚拟机。
当将两个同名网络添加到虚拟机并发出 Servers IPs API 请求时,将返回不正确的信息。响应与只有一个网络且具有多个 IP 地址的情况相同。
// GET /servers/68c1b82f-adf2-4b71-a411-0b70da3c1748/ips
{
"addresses": {
"testnet1": [
{
"OS-EXT-IPS-MAC:mac_addr": "fa:16:3e:65:83:12",
"version": 4,
"addr": "192.168.0.12",
"OS-EXT-IPS:type": "fixed"
},
{
"OS-EXT-IPS-MAC:mac_addr": "fa:16:3e:7c:67:72",
"version": 4,
"addr": "192.168.1.4",
"OS-EXT-IPS:type": "fixed"
}
]
}
}
相反,响应应指示存在两个网络,每个网络具有一个地址。此外,应保留网络标签。请注意删除不必要的 OS-EXT-IPS-MAC 和 OS-EXT-IPS 前缀。
// GET /servers/68c1b82f-adf2-4b71-a411-0b70da3c1748/ips
{
"addresses":{
"b7388c79-b206-4ddf-9d75-95ec4488b906":{
"name":"testnet1",
"ips":[
{
"mac_addr":"fa:16:3e:65:83:12",
"version":4,
"addr":"192.168.0.12",
"type":"fixed"
}
]
},
"b69db569-85b3-4fd6-b053-11be7d23fbc6":{
"name":"testnet1",
"ips":[
{
"mac_addr":"fa:16:3e:7c:67:72",
"version":4,
"addr":"192.168.1.4",
"type":"fixed"
}
]
}
}
}
因此,对特定网络的请求将从
/servers/{server_id}/ips/{network_label}
变为
/servers/{server_id}/ips/{network_id}
服务器详情响应将相应更新,因为它们包含类似的地址部分
GET /servers/detail
GET /servers/{server_id}
PUT /servers/{server_id}
GET /servers/{server_id/action (rebuild)
用例¶
作为附加到多个同名网络的服务器的 API 用户,我希望能够唯一标识服务器 IP 地址与哪些网络相关联。
提议的变更¶
此规范建议通过更改响应模式和资源路径来修复此错误,作为微版本。由于更改会影响 API 消费者,因此不会修复遗留 API。
备选方案¶
不允许添加与现有网络同名的网络
将服务器 IP 地址报告为数组,而不是字典
数据模型影响¶
无
REST API 影响¶
通过新的微版本对 API 的五项更改
更改资源路径从
/servers/{server_id}/ips/{network_label}
变为
/servers/{server_id}/ips/{network_id}
更改 /servers/{server_id}/ips 资源的模式为
按 ID 分组网络
在网络组中保留网络名称
使数据模型与
/servers/detail路径通用
{
"addresses":{
"b7388c79-b206-4ddf-9d75-95ec4488b906":{
"name":"testnet1",
"ips":[
{
"mac_addr":"fa:16:3e:65:83:12",
"version":4,
"addr":"192.168.0.12",
"type":"fixed"
}
]
}
}
}
更改以下路由中的模式,以匹配与 /servers/{server_id}/ips 中 ID 标识的地址响应
GET /servers/detail
GET /servers/{server_id}
PUT /servers/{server_id}
POST /servers/{server_id}/action (rebuild)
...
"addresses":{
"b7388c79-b206-4ddf-9d75-95ec4488b906":{
"name":"testnet1",
"ips":[
{
"mac_addr":"aa:bb:cc:dd:ee:ff",
"type":"fixed",
"addr":"192.168.0.12",
"version":4
}
]
},
},
...
安全影响¶
无
通知影响¶
无
其他最终用户影响¶
无
性能影响¶
无
其他部署者影响¶
无
开发人员影响¶
无
升级影响¶
无
实现¶
负责人¶
- 主要负责人
Jonghan Park <jhan12.park@samsung.com> Maciej Kucia <maciej@kucia.net>
工作项¶
通过新的微版本修复 API
在 nova-client 中反映 API 更改
在文档中反映 API 更改
依赖项¶
无
测试¶
应更新测试以反映 API 更改。
文档影响¶
更新 api-ref 以反映新的 API 模式和路径。
参考资料¶
历史¶
发布名称 |
描述 |
|---|---|
Rocky |
引入 |