Update VPC routing profile

View as Markdown
Change an existing FNN VPC to a configured routing profile with the opposite internal setting. Submit the destination `routingProfile` and optional exact `vni`; REST reads the current Core version internally and submits one change using that version. Core atomically changes the profile and active VNI, advances the version, and retains the old allocation. VPC identity, Instances, addresses, prefixes, NSGs, metadata, and the creation-time requested VNI are preserved. Requires the same Infrastructure Provider ownership, registered Site, and `PROVIDER_ADMIN` authorization as [routing-state inspection](#tag/VPC/operation/get-vpc-routing-profile). Core also enforces the Tenant's permitted access tier; Provider authorization does not permit broader Tenant routing access. Named source and destination profiles, nonoverlapping internal and external pools, and VNIs in 1..16777215 are required. Site-global VNIs, substantive VPC or interface routing overrides, and tenant-managed SitePrefix attachments are unsupported. Every serving Core must support the requested operation, including exact VNI selection; response validation cannot undo a change made by an older Core that ignores the exact VNI. REST makes no change if the initial read fails. A concurrent VPC update between the read and change returns 412 without rereading or retrying. Authorization, the read, and the change share one 50-second budget from handler entry within the HTTP request deadline. REST does not submit the change if its request context has expired before dispatch; a submitted workflow may outlive the caller. A timeout, lost response, or invalid acknowledgement after submission can leave a committed change; inspect the authoritative routing state before deciding on another request. Neither the mutation nor the full sequence is automatically retried. Each separate HTTP request is a new action, not a replay or deduplicated retry of a previous request. A 200 response confirms the Core configuration transaction, not restored traffic. Prevent attachment, peering, deletion, and profile-definition changes until all attached and directly peered DPUs and fabric routes have been independently verified and the inactive allocation released. Neither REST nor Core enforces this hold or verifies convergence. Release is a [separate operator action](#tag/VPC/operation/release-vpc-inactive-vni). A later change back must pass current validation; retaining the allocation does not guarantee reversal. External routing does not allocate public addresses or configure NAT, fabric routes, or NSGs.

Authentication

AuthorizationBearer
``` export JWT_BEARER_TOKEN="<jwt-bearer-token>" # Example org name: "acme-inc export ORG_NAME=<org-name> # Use the JWT bearer token in your API request auth header: curl -v -X GET -H "Content-Type: application/json" -H "Authorization: Bearer $JWT_BEARER_TOKEN" https://nico-rest-api.nico.svc.cluster.local/v2/org/$ORG_NAME/nico/user/current ```

Path parameters

orgstringRequired
Name of the Infrastructure Provider Org
vpcIdstringRequiredformat: "uuid"
REST ID of the VPC

Request

This endpoint expects an object.
routingProfilestringRequired1-64 characters

Required Site-configured destination profile with the opposite internal setting from the current profile. The REST aliases external, internal, and privileged-internal map to Core’s EXTERNAL, INTERNAL, and PRIVILEGED_INTERNAL names. Other configured names are passed unchanged; this is not a closed enum.

vniinteger or nullOptional1-16777215

Optional exact destination VNI. Omission or null reuses an allocation retained in the destination pool, otherwise allocates automatically. An exact request must match a retained destination allocation if present; otherwise it must name a free materialized entry in the destination pool, regardless of that entry’s automatic-allocation setting. A mismatched, occupied, missing, or already active VNI is rejected without fallback.

Response

Committed routing state, including the retained previous allocation; dataplane convergence is not verified

vpcIdstringformat: "uuid"

REST ID of the VPC selected in the request, which may differ from its Site-local Core ID.

versionstring

Core VPC version observed with these allocations. Use this exact value when approving release of the observed inactive VNI; it is not a DPU-applied version.

routingProfilestring or null

Persisted profile name, or null when no named profile is stored. Known Core names are returned as the REST aliases external, internal, and privileged-internal; other names are unchanged. The name can be returned even when its Site definition is unavailable.

activeVniuint0-4294967295

Persisted active VNI verified against pool ownership. Inspection accepts nonnegative values, including zero and values outside the profile-change range; successful inspection does not imply a profile change is supported.

retainedAllocationobject or null
Allocation owned by this VPC in the other pool, or null when the valid active allocation is its only allocation. Inconsistent ownership is an error, not a null result.

Errors

400
Bad Request Error
403
Forbidden Error
404
Not Found Error
412
Precondition Failed Error
429
Too Many Requests Error
500
Internal Server Error
501
Not Implemented Error
503
Service Unavailable Error
504
Gateway Timeout Error