Cập nhật network port
/v2.0/ports/{port_id}Cập nhật thuộc tính của một network port hiện có.
Chỉ các field có thể thay đổi mới được cập nhật. Các field như id, network_id, project_id / tenant_id và timestamp là chỉ đọc.
Request
Tham số path
port_idstringbắt buộcID của port cần cập nhật.
Cấu trúc body
Object JSON cấp cao nhất phải chứa một object port duy nhất với một hoặc nhiều thuộc tính có thể cập nhật.
Tham số có thể cập nhật
portobjectbắt buộcObject bao ngoài chứa các field cần cập nhật. Chỉ cung cấp các field bạn muốn thay đổi.
namestringTên dễ đọc của port.
descriptionstringMô tả dễ đọc (mặc định là chuỗi rỗng).
admin_state_upbooleanTrạng thái quản trị: up (true) hoặc down (false).
device_idstringID của thiết bị (server, router, v.v.) sử dụng port này.
device_ownerstringLoại entity sử dụng port (compute:nova, network:dhcp, network:router_interface, v.v.).
security_groupsarrayDanh sách ID security group cần áp dụng. Thay thế danh sách hiện có.
fixed_ipsarrayDanh sách ánh xạ fixed IP mới. Mỗi phần tử có thể gồm subnet_id và/hoặc ip_address. Toàn bộ danh sách bị thay thế nếu bạn cung cấp. Xem tài liệu tạo port để biết cách cấp phát.
allowed_address_pairsarrayDanh sách object, mỗi object có ip_address (bắt buộc) và mac_address tuỳ chọn. Thay thế danh sách hiện có.
extra_dhcp_optsarrayDanh sách object DHCP option (opt_name, opt_value). Thay thế danh sách hiện có.
port_security_enabledbooleanBật/tắt việc áp dụng security group và anti-spoofing.
qos_policy_idstringQoS policy cần liên kết (hoặc null để xoá).
binding:host_idstringID host nơi port nằm. Thường do hệ thống / scheduler đặt; chỉ admin được ghi đè.
binding:profileobjectDict thông tin VIF đặc thù backend. Dùng null để đặt lại thành {}. Có thể chứa device_mac_address cho binding direct-physical để ghi đè mac_address được expose.
binding:vnic_typestringLoại vNIC mong muốn (normal, macvtap, direct, baremetal, direct-physical, virtio-forwarder, smart-nic, remote-managed). Việc thay đổi sau khi bind lần đầu có thể bị deployment giới hạn.
mac_addressstringĐịa chỉ MAC của port. Thường không thể thay đổi sau khi tạo, trừ một số trường hợp binding cụ thể (ví dụ direct-physical với device_mac_address).
dns_domainstringDNS domain cần liên kết.
dns_namestringDNS name (hostname) cần liên kết.
hintsobjectHint mechanism driver chỉ admin (ví dụ {"openvswitch": {"other_config": {"tx-steering": "hash"}}}). Độ dài tối đa 4095 ký tự sau khi serialize.
numa_affinity_policystringPolicy NUMA affinity: none, required, preferred hoặc legacy.
propagate_uplink_statusbooleanCó bật lan truyền trạng thái uplink hay không.
mac_learning_enabledbooleanBật MAC learning trên port.
port_trusted_vifbooleanTrạng thái trusted VIF. Được phản ánh trong binding:profile.
allowed_address_pairs[*].ip_addressstringbắt buộcĐịa chỉ IP hoặc CIDR.
allowed_address_pairs[*].mac_addressstringĐịa chỉ MAC; mặc định dùng MAC của port nếu bỏ qua.
Lưu ý: Các field bị bỏ qua sẽ giữ nguyên. Với thuộc tính dạng list (ví dụ
security_groups,allowed_address_pairs,fixed_ips), cung cấp list sẽ thay thế toàn bộ list hiện có.
Request mẫu
curl -ks -X PUT -H 'Content-Type: application/json' \
-H 'X-Auth-Token: gAAAAA<...>' \
-d '{
"port": {
"name": "dhcp-port",
"device_owner": "network:dhcp",
"device_id": "dhcpe52a9a47-9f6a-5406-9193-a4d7333f9889-f858b8d1-e66b-4a48-bc2e-3f16483b1b58"
}
}' \
https://<node_IP_addr>:9696/v2.0/ports/c85ae844-9ff5-4866-97da-546c3bf0144b
Response
Tham số response
Nếu thành công, API trả về một object port đã cập nhật với tất cả thuộc tính hiện tại.
portobjectbắt buộcObject bao ngoài của port.
idstringbắt buộcID của port.
namestringbắt buộcTên port.
network_idstringbắt buộcID của mạng gắn với port.
tenant_idstringbắt buộcID project (field legacy).
project_idstringbắt buộcID project sở hữu.
mac_addressstringbắt buộcĐịa chỉ MAC (có thể bị ghi đè với direct-physical).
admin_state_upbooleanbắt buộcTrạng thái quản trị.
statusstringbắt buộcTrạng thái port: ACTIVE, DOWN, BUILD hoặc ERROR.
device_idstringbắt buộcID của thiết bị được gắn.
device_ownerstringbắt buộcLoại entity sử dụng port.
fixed_ipsarraybắt buộcDanh sách {subnet_id, ip_address} của port.
allowed_address_pairsarraybắt buộcAllowed address pair.
extra_dhcp_optsarraybắt buộcCác object DHCP option bổ sung.
security_groupsarraybắt buộcID các security group.
descriptionstringbắt buộcMô tả.
binding:vnic_typestringbắt buộcLoại vNIC.
binding:profileobjectbắt buộcThông tin VIF đặc thù backend ({} nếu không có).
binding:host_idstringbắt buộcID host nơi port nằm.
binding:vif_typestringbắt buộcLoại mechanism driver hoặc unbound / binding_failed.
binding:vif_detailsobjectbắt buộcThông tin bổ sung (port_filter, ovs_hybrid_plug, v.v.).
port_security_enabledbooleanbắt buộcPort security có được bật hay không.
qos_policy_idstringbắt buộcQoS policy áp dụng trực tiếp (hoặc null).
qos_network_policy_idstringbắt buộcQoS policy của mạng (hoặc null).
resource_requestobjectCác nhóm tài nguyên / trait Placement được yêu cầu.
tagsarraybắt buộcDanh sách tag.
created_atstringbắt buộcThời điểm tạo (ISO 8601).
updated_atstringbắt buộcThời điểm cập nhật gần nhất (ISO 8601) hoặc null.
revision_numberintegerbắt buộcRevision number.
ip_allocationstringbắt buộcChế độ cấp phát (immediate, deferred hoặc none).
dns_assignmentobjectbắt buộcGán DNS nội bộ (hostname, ip_address, fqdn).
dns_domainstringbắt buộcDNS domain.
dns_namestringbắt buộcDNS name.
hintsobjectbắt buộcHint điều khiển OVS Userspace Tx packet steering (chỉ admin) nếu có.
numa_affinity_policystringPolicy NUMA affinity.
propagate_uplink_statusbooleanbắt buộcCờ lan truyền trạng thái uplink.
mac_learning_enabledbooleanMAC learning có được bật hay không.
port_trusted_vifbooleanbắt buộcTrạng thái trusted VIF.
data_plane_statusstringbắt buộcTrạng thái data plane bên dưới nếu được báo cáo.
Mã trạng thái
Thành công
| Mã | Mô tả |
|---|---|
| 200 - OK | Request thành công. |
Lỗi
| Mã | Mô tả |
|---|---|
| 400 - Bad Request | Nội dung request không hợp lệ. |
| 401 - Unauthorized | Cần xác thực trước khi gửi request. |
| 403 - Forbidden | Policy không cho phép user hiện tại thực hiện thao tác này. |
| 404 - Not Found | Không tìm thấy tài nguyên được yêu cầu. |
| 409 - Conflict | Thao tác xung đột với một thao tác khác trên tài nguyên. |
| 412 - Precondition Failed | Server không đáp ứng điều kiện tiên quyết của request. |
Response mẫu
Response body
{
"port": {
"id": "2d74fa0c-3e43-4fd9-a234-cbb4996cc684",
"name": "dhcp-port",
"network_id": "f858b8d1-e66b-4a48-bc2e-3f16483b1b58",
"tenant_id": "f33507157a634f1cac71e06a70fb558e",
"mac_address": "fa:16:3e:7f:ae:b2",
"admin_state_up": true,
"status": "DOWN",
"device_id": "dhcpe52a9a47-9f6a-5406-9193-a4d7333f9889-f858b8d1-e66b-4a48-bc2e-3f16483b1b58",
"device_owner": "network:dhcp",
"fixed_ips": [
{
"subnet_id": "adffaac8-2261-43f7-9e4f-6044230f65f1",
"ip_address": "192.168.1.12"
}
],
"allowed_address_pairs": [],
"extra_dhcp_opts": [],
"security_groups": [
"e1c1aa83-7302-4493-9cf4-43c2407e8074"
],
"description": "",
"binding:vnic_type": "normal",
"port_security_enabled": true,
"qos_policy_id": null,
"qos_network_policy_id": "dfc42ced-02c8-4b1f-bbe6-14cc014f259d",
"tags": [],
"created_at": "2025-10-08T08:05:12Z",
"updated_at": "2025-10-08T08:21:32Z",
"revision_number": 3,
"project_id": "f33507157a634f1cac71e06a70fb558e"
}
}