使用Postman调用NDO API添加静态端口与EPG域关联遇204无内容问题咨询
NDO API PATCH请求返回204 No Content但无配置变更的排查方案
问题场景
向NDO API地址https://{{ndo_host}}/mso/api/v1/schemas/{{schema_id}}发送PATCH请求,意图为EPG添加域关联和静态端口:
- 请求包含两个
add操作:- 域关联:dn为
uni/phys-TEST_PHD,域类型physicalDomain,部署/解析立即性设为immediate - 静态端口:路径
topology/pod-1/paths-101/pathep-[eth1/1],模式untagged,封装VLAN为{{vlan}},类型port
- 域关联:dn为
- 请求返回204 No Content,但NDO界面无任何变更;已确认变量正确(错误变量会返回400),拆分单个操作请求仍无效
- 当前环境:Nexus Dashboard 3.0.1i,Orchestrator 4.2.3e;Ansible的Cisco MSO/NDO模块可完成部署,但700个端口耗时约3小时,且无法查看底层API请求细节
排查步骤
1. 核对PATCH操作的目标路径精度
NDO API的PATCH操作要求路径精确指向要修改的子资源节点,否则服务器会返回204但不执行变更:
- 域关联的目标路径应为:
/templates/{{template_name}}/epgs/{{epg_name}}/domains/- - 静态端口的目标路径应为:
/templates/{{template_name}}/epgs/{{epg_name}}/staticPorts/- - 可通过GET请求
https://{{ndo_host}}/mso/api/v1/schemas/{{schema_id}}获取完整Schema结构,确认EPG的层级路径是否正确
2. 验证请求体的JSON Patch格式合规性
确保每个add操作的结构完全符合NDO API规范:
- 域关联的
value示例:{ "dn": "uni/phys-TEST_PHD", "type": "physicalDomain", "deployImmediacy": "immediate", "resolveImmediacy": "immediate" } - 静态端口的
value示例(注意encap格式必须为vlan-XXX而非纯数字):{ "path": "topology/pod-1/paths-101/pathep-[eth1/1]", "mode": "untagged", "encap": "vlan-{{vlan}}", "type": "port" }
3. 检查Schema的模板-站点关联状态
- 确认修改的EPG所属模板已关联到目标站点,且站点处于已部署状态。若模板未关联站点,API会接受请求但不会在NDO界面同步变更
- 通过GET请求返回的Schema数据,查看
templates[].sites字段的关联配置
4. 启用NDO API日志捕获细节
在Nexus Dashboard中:
- 进入Admin > Logs > Services,找到Orchestrator服务
- 开启API请求日志,重新发送PATCH请求
- 查看日志中的处理记录,排查是否存在资源未找到、权限隐性限制或非400级的格式错误
5. 间接对比Ansible模块的有效请求
通过NDO API日志捕获Ansible模块的底层请求:
- 开启NDO API日志
- 执行单个端口添加的Ansible任务
- 从日志中提取完整的PATCH请求URL和Payload,与自己的Postman请求做对比,定位差异点
6. 用PUT请求验证配置可行性
- 通过GET请求获取完整的Schema JSON
- 手动在JSON中添加域关联和静态端口配置
- 发送PUT请求到
https://{{ndo_host}}/mso/api/v1/schemas/{{schema_id}}- 若PUT请求生效,说明PATCH操作的路径或格式存在问题
- 若PUT也无效,排查Schema是否存在锁定、站点状态异常等问题
内容的提问来源于stack exchange,提问作者RtMt
相关产品推荐
相关产品推荐

