You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

OpenStack Zed修改浮动IP其他属性致QoS策略丢失是否为BUG?

OpenStack Zed浮动IP修改非QoS属性时qos_policy_id被重置为Null的问题

这是一个BUG,正常情况下修改浮动IP的非QoS相关属性(如description)不应该清除已关联的QoS策略ID。

问题重现步骤

  1. 查看浮动IP当前的QoS策略ID:
openstack floating ip show 75c41f3f-ea12-4555-947e-7a4803147c0a |grep qos
| qos_policy_id       | 60e612d2-fa01-421a-a4cd-96043c3c7587                                                                                                                                 |
  1. 通过PUT API仅修改description属性:
curl -X PUT -H "X-Auth-Token: $token" http://10.0.52.1:9696/v2.0/floatingips/75c41f3f-ea12-4555-947e-7a4803147c0a -d '{"floatingip": {"description": "testing"}}' 

返回结果显示qos_policy_id已被设为null:

{"floatingip": {"id": "75c41f3f-ea12-4555-947e-7a4803147c0a", "tenant_id": "c13998dac04045a5acb4464bf2274272", "floating_ip_address": "10.0.56.130", "floating_network_id": "46f94d26-b0b0-49f4-b1e6-d67b5189c018", "router_id": "037c542b-82a1-449a-ac3f-8c29b1f49344", "port_id": "a805c597-0ac7-48fa-bde9-f727beeb5b0e", "fixed_ip_address": "192.168.50.14", "status": "ACTIVE", "description": "testing", "qos_policy_id": null, "port_details": {"name": "test", "network_id": "c2ebde5e-8766-4d4e-9517-f95fd6fd3ec7", "mac_address": "fa:16:3e:7c:fd:c4", "admin_state_up": true, "status": "DOWN", "device_id": "", "device_owner": ""}, "port_forwardings": [], "tags": ["flow_model"], "created_at": "2023-07-04T10:21:20Z", "updated_at": "2023-07-07T06:01:29Z", "revision_number": 262, "project_id": "c13998dac04045a5acb4464bf2274272"}}
  1. 再次查看浮动IP的QoS策略ID,确认已被清空:
openstack floating ip show 75c41f3f-ea12-4555-947e-7a4803147c0a |grep qos
| qos_policy_id       | None 

问题原因

Neutron服务在处理浮动IP的PUT请求时,未对请求体中未指定的字段做保留处理,而是默认将qos_policy_id设为null,违背了"仅修改指定属性"的预期行为。

临时解决办法

  • 方法1:PUT请求时附带当前QoS策略ID
    在修改其他属性时,将当前的qos_policy_id一并放入请求体,避免被重置:
    curl -X PUT -H "X-Auth-Token: $token" http://10.0.52.1:9696/v2.0/floatingips/75c41f3f-ea12-4555-947e-7a4803147c0a -d '{"floatingip": {"description": "testing", "qos_policy_id": "60e612d2-fa01-421a-a4cd-96043c3c7587"}}'
    
  • 方法2:改用PATCH请求做部分更新
    PATCH请求是REST规范中用于部分资源更新的标准方式,只会修改指定字段,不会影响其他未提及的属性:
    curl -X PATCH -H "X-Auth-Token: $token" http://10.0.52.1:9696/v2.0/floatingips/75c41f3f-ea12-4555-947e-7a4803147c0a -d '{"floatingip": {"description": "testing"}}'
    

内容的提问来源于stack exchange,提问作者alex

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.16 16:57:39