在 os-fixed-ips API 中显示“已保留”状态¶
https://blueprints.launchpad.net/nova/+spec/show-reserved-status-in-os-fixed-ips-api
在 os-fixed-ips API 扩展中的 FixedIP 对象上显示“已保留”状态。该扩展允许保留和取消保留固定 IP,但 show 方法不会报告当前状态。
问题描述¶
目前,os-fixed-ips API 扩展允许在数据库中的 FixedIP 对象上设置“已保留”字段,但 show 方法不会返回当前值。因此,如果您想编写一个应用程序来保留/取消保留固定 IP,您必须在外部跟踪此信息,或者自行从数据库中获取它。
用例¶
作为云管理员,我希望能够保留/取消保留固定 IP,但在对固定 IP 执行操作之前,我需要知道给定固定 IP 的当前保留状态。
项目优先级¶
无
提议的变更¶
为 os-fixed-ips API 扩展添加一个新的 API 微版本,如果 API GET 请求的版本满足所需的最低版本,则在 fixed_ip 响应数据中包含“已保留”状态。
备选方案¶
我们可以将此信息添加到“nova-manage fixed list”输出中,但 nova-manage CLI 对于应该通过 Nova API 服务完成的事情来说,大部分已被弃用。
数据模型影响¶
无
REST API 影响¶
提议的更改只是更新 os-fixed-ips API 扩展中的 GET 响应数据,如果请求具有最低支持版本,则包含“已保留”布尔字段。
方法的规范
显示指定固定 IP 地址的信息。
方法类型:GET
正常的 http 响应代码:200
预期的错误 http 响应代码
400:如果请求中的地址无效。
404:如果请求中的地址与数据库中的 FixedIP 条目不匹配。
/v2.1/{tenant_id}/os-fixed-ips/{fixed_ip}可以通过 URL 传递的参数:固定 IP 地址
响应数据的 JSON schema 定义
get_fixed_ip = {
'status_code': [200],
'response_body': {
'type': 'object',
'properties': {
'fixed_ip': {
'type': 'object',
'properties': {
'address': {
'type': 'string',
'format': 'ip-address'
},
'cidr': {'type': 'string'},
'host': {'type': 'string'},
'hostname': {'type': 'string'},
'reserved': {'type': 'boolean'}
},
'required': ['address', 'cidr', 'host',
'hostname', 'reserved']
}
},
'required': ['fixed_ip']
}
}
示例用例
请求
GET –header “X-OpenStack-Nova-API-Version: 2.4” http://127.0.0.1:8774/v2.1/e0c1f4c0b9444fa086fa13881798144f/os-fixed-ips/192.168.1.1
响应
{
"fixed_ip": {
"address": "192.168.1.1",
"cidr": "192.168.1.0/24",
"host": "host",
"hostname": "openstack",
"reserved": false
}
}
此更改不应影响 policy.json 文件。
安全影响¶
无
通知影响¶
无
其他最终用户影响¶
如果“fixed_ip”字典响应包含“已保留”键,则可以更新 v2.1 python-novaclient fixed-ip-get 命令,以在输出中显示“已保留”状态。
性能影响¶
无
其他部署者影响¶
无;如果部署者使用 API 的所需最低版本来获取“已保留”数据,他们可以开始使用它,否则他们不会看到任何更改。
开发人员影响¶
无
实现¶
负责人¶
- 主要负责人
Matt Riedemann <mriedem@us.ibm.com>
工作项¶
添加一个新的微版本,并更改 nova/api/openstack/plugins/v3/fixed_ips.py 以使用它来确定是否应返回 FixedIP 对象上的“已保留”属性。
依赖项¶
无
测试¶
nova 树中的单元测试和可能的 API 示例功能测试。
目前,Tempest 中没有测试计算 API 微版本超过 v2.1。我们可以添加支持在 Tempest 中测试新版本,但到目前为止,API 至少已达到 v2.3,而无需更改 Tempest。
文档影响¶
将更新 nova/api/openstack/rest_api_version_history.rst 文档。
参考资料¶
bug 的旧 ML 线程
http://lists.openstack.org/pipermail/openstack-dev/2013-November/019506.html