DDPC: "property nwSeg is missing" Error for Host Network Operations via v1 API
Summary: When using the legacy Dell NativeEdge v1 Gateway API POST /rest/v1/jobs to add, update, or delete a host network (endpoint:network:hostNw:*), the request may fail withHTTP 400 and the message property "nwSeg" is missing. This happens when the hostNw payload objects do not include the endpoint id field. The v2 Gateway API is recommended; if v1 must be used, include the endpoint UUID as the id in each hostNw object. ...
Symptoms
POST /rest/v1/jobswith operationendpoint:network:hostNw:Add, hostNw:Update, or hostNw:DeletereturnsHTTP 400.- Response contains an error similar to: Error at
/payload/nwSeg: property "nwSeg"is missing. - The equivalent v2 operation,
POST /rest/v2/edge/endpoints/{id}/host-networks, works and returnsHTTP 202.
Cause
The v1 ModifyNetworkRequest payload uses an OpenAPI oneOf schema with multiple network-operation alternatives. If the hostNw object in the payload does not contain the endpoint id field, the validator resolves the request to the wrong schema and reports that the nwSeg property is missing. Including the id field allows the request to validate correctly.
Resolution
Recommended approach
Use the v2 Gateway API POST /rest/v2/edge/endpoints/{id}/host-networks for networking operations. The v2 API was introduced in the DDPC 4.3.0.0 and does not exhibit this issue.
If the v1 API must be used
Include the endpoint UUID as the id field inside every object in the payload.hostNw array. For example:
POST https://<orchestrator-host>/rest/v1/jobs
{
"endpoint_id": "<endpoint-uuid>",
"operation": "endpoint:network:hostNw:Add",
"payload": {
"hostNw": [
{
"id": "<endpoint-uuid>",
"name": "<host-network-name>",
"dhcp": true,
"device": "<network-device>"
}
]
}
}
A successful v1 request returns HTTP 202 with a job ID, similar to the v2 response.
All the v1 API requsts need this workaround:
endpoint:network:hostNw:Add -> HostNetworkRequest
endpoint:network:hostNw:Update -> HostNetworkRequest
endpoint:network:hostNw:Delete -> HostNetworkRequest
endpoint:network:segment:Create -> VSNRequest
endpoint:network:segment:Update -> ModifyNetworkRequest
endpoint:network:segment:Delete -> VSNRequest
endpoint:network:ntp:Add -> NTPRequest
endpoint:network:ntp:Delete -> NTPRequest
endpoint:network:device:CreateBond -> CreateNetworkBondRequest
endpoint:network:device:DeleteBond -> DeleteNetworkBondRequest
endpoint:network:device:Enable -> EnableNetworkDevicesRequest
endpoint:network:device:Disable -> DisableNetworkDevicesRequest
endpoint:storage:device:DisableRAID -> DisableStorageRAIDRequest