[{"label":"Latest (4.4.0)","version":"latest"},{"version":"4.3.1"},{"link":"https://developer.vmware.com/apis/1127/vmware-cloud-foundation","version":"4.3"},{"link":"https://developer.vmware.com/apis/1078/vmware-cloud-foundation","version":"4.2"},{"link":"https://developer.vmware.com/apis/1033/vmware-cloud-foundation","version":"4.1"},{"link":"https://developer.vmware.com/apis/1003/vmware-cloud-foundation","version":"4.0.1"},{"link":"https://developer.vmware.com/apis/939/vmware-cloud-foundation","version":"4.0"}]
vcf-for-vxrail
VMware Cloud Foundation on Dell EMC VxRail API Reference Guide

NSX-T Edge Clusters

APIs for managing NSX-T Edge Clusters

1. Validate Edge Cluster

1.1. Prerequisites

Complete the required prerequisites before invoking the API.

  • Separate VLANs and subnets are available for Host TEP VLAN and Edge TEP VLAN use

  • Host TEP VLAN and Edge TEP VLAN need to be routed

  • If dynamic routing is desired, please set up two BGP peers (on TORs or infra ESG) with an interface IP, ASN and BGP password

  • Reserve an ASN to use for the NSX Edge cluster’s Tier-0 interfaces

  • DNS entries for NSX Edge components should be populated in customer managed DNS server

  • The vSphere clusters hosting the Edge clusters should be L2 Uniform. All hosts in a hosting vSphere cluster need to have identical management, uplink, Edge and host TEP networks

  • The vSphere clusters hosting the Edge nodes must have the same pNIC speed for NSX enabled VDS uplinks chosen for Edge overlay (e.g., either 10G or 25G but not both)

  • All nodes of an NSX Edge cluster must use the same set of NSX enabled VDS uplinks. The selected uplinks must be prepared for overlay use

The following data is required for the Validate an Edge Cluster spec API:

  • Edge cluster name

  • Maximum transmission unit

  • ASN to be used for the edge cluster

  • Edge cluster profile type, for example: DEFAULT, CUSTOM

  • Edge cluster type, for example: NSX-T

  • Edge cluster form factor, for example: SMALL, MEDIUM, LARGE

  • Edge cluster profile spec, refer to: NsxTEdgeClusterProfileSpec

  • Edge Node specs, refer to: NsxTEdgeNodeSpec

  • Name for the Tier-0 router

  • Tier-0 routing type, for example: EBGP, STATIC

  • High-Availability mode for Tier-0 router, for example: ACTIVE_ACTIVE, ACTIVE_STANDBY

  • Name for the Tier-1 router

Tip : Refer to: EdgeClusterCreationSpec.

1.2. Steps

  • Validate the input specification using Validate an Edge Cluster spec API.

cURL Request

$ curl 'https://sfo-vcf01.rainpole.io/v1/edge-clusters/validations' -i -X POST \
    -H 'Content-Type: application/json' \
    -H 'Accept: application/json' \
    -H 'Authorization: Bearer etYWRta....' \
    -d '{
  "edgeClusterName" : "sfo-w01-cl01-edge",
  "edgeClusterType" : "NSX-T",
  "edgeRootPassword" : "Acme123!Acme123!",
  "edgeAdminPassword" : "Acme123!Acme123!",
  "edgeAuditPassword" : "Acme123!Acme123!",
  "edgeFormFactor" : "MEDIUM",
  "tier0ServicesHighAvailability" : "ACTIVE_ACTIVE",
  "mtu" : 9000,
  "asn" : 65003,
  "edgeNodeSpecs" : [ {
    "edgeNodeName" : "sfo-m01-en01.rainpole.io",
    "managementIP" : "10.0.0.50/24",
    "managementGateway" : "10.0.0.250",
    "edgeTepGateway" : "192.168.52.1",
    "edgeTep1IP" : "192.168.52.10/24",
    "edgeTep2IP" : "192.168.52.11/24",
    "edgeTepVlan" : 1252,
    "clusterId" : "d1052c9c-6973-4e32-8034-06e7fa71e83c",
    "interRackCluster" : false,
    "uplinkNetwork" : [ {
      "uplinkVlan" : 2081,
      "uplinkInterfaceIP" : "192.168.16.2/24",
      "peerIP" : "192.168.16.10/24",
      "asnPeer" : 65001,
      "bgpPeerPassword" : "Acme1!"
    }, {
      "uplinkVlan" : 2082,
      "uplinkInterfaceIP" : "192.168.17.2/24",
      "peerIP" : "192.168.17.10/24",
      "asnPeer" : 65001,
      "bgpPeerPassword" : "Acme1!"
    } ]
  }, {
    "edgeNodeName" : "sfo-m01-en02.rainpole.io",
    "managementIP" : "10.0.0.51/24",
    "managementGateway" : "10.0.0.250",
    "edgeTepGateway" : "192.168.52.1",
    "edgeTep1IP" : "192.168.52.12/24",
    "edgeTep2IP" : "192.168.52.13/24",
    "edgeTepVlan" : 1252,
    "clusterId" : "d1052c9c-6973-4e32-8034-06e7fa71e83c",
    "interRackCluster" : false,
    "uplinkNetwork" : [ {
      "uplinkVlan" : 2081,
      "uplinkInterfaceIP" : "192.168.16.3/24",
      "peerIP" : "192.168.16.10/24",
      "asnPeer" : 65001,
      "bgpPeerPassword" : "Acme1!"
    }, {
      "uplinkVlan" : 2082,
      "uplinkInterfaceIP" : "192.168.17.3/24",
      "peerIP" : "192.168.17.10/24",
      "asnPeer" : 65001,
      "bgpPeerPassword" : "Acme1!"
    } ]
  } ],
  "tier0RoutingType" : "EBGP",
  "tier0Name" : "Acme-Tier0",
  "tier1Name" : "Acme-Tier1",
  "edgeClusterProfileType" : "DEFAULT"
}'

HTTP Request

POST /v1/edge-clusters/validations HTTP/1.1
Content-Type: application/json
Accept: application/json
Content-Length: 1981
Host: sfo-vcf01.rainpole.io
Authorization: Bearer etYWRta....

{
  "edgeClusterName" : "sfo-w01-cl01-edge",
  "edgeClusterType" : "NSX-T",
  "edgeRootPassword" : "Acme123!Acme123!",
  "edgeAdminPassword" : "Acme123!Acme123!",
  "edgeAuditPassword" : "Acme123!Acme123!",
  "edgeFormFactor" : "MEDIUM",
  "tier0ServicesHighAvailability" : "ACTIVE_ACTIVE",
  "mtu" : 9000,
  "asn" : 65003,
  "edgeNodeSpecs" : [ {
    "edgeNodeName" : "sfo-m01-en01.rainpole.io",
    "managementIP" : "10.0.0.50/24",
    "managementGateway" : "10.0.0.250",
    "edgeTepGateway" : "192.168.52.1",
    "edgeTep1IP" : "192.168.52.10/24",
    "edgeTep2IP" : "192.168.52.11/24",
    "edgeTepVlan" : 1252,
    "clusterId" : "d1052c9c-6973-4e32-8034-06e7fa71e83c",
    "interRackCluster" : false,
    "uplinkNetwork" : [ {
      "uplinkVlan" : 2081,
      "uplinkInterfaceIP" : "192.168.16.2/24",
      "peerIP" : "192.168.16.10/24",
      "asnPeer" : 65001,
      "bgpPeerPassword" : "Acme1!"
    }, {
      "uplinkVlan" : 2082,
      "uplinkInterfaceIP" : "192.168.17.2/24",
      "peerIP" : "192.168.17.10/24",
      "asnPeer" : 65001,
      "bgpPeerPassword" : "Acme1!"
    } ]
  }, {
    "edgeNodeName" : "sfo-m01-en02.rainpole.io",
    "managementIP" : "10.0.0.51/24",
    "managementGateway" : "10.0.0.250",
    "edgeTepGateway" : "192.168.52.1",
    "edgeTep1IP" : "192.168.52.12/24",
    "edgeTep2IP" : "192.168.52.13/24",
    "edgeTepVlan" : 1252,
    "clusterId" : "d1052c9c-6973-4e32-8034-06e7fa71e83c",
    "interRackCluster" : false,
    "uplinkNetwork" : [ {
      "uplinkVlan" : 2081,
      "uplinkInterfaceIP" : "192.168.16.3/24",
      "peerIP" : "192.168.16.10/24",
      "asnPeer" : 65001,
      "bgpPeerPassword" : "Acme1!"
    }, {
      "uplinkVlan" : 2082,
      "uplinkInterfaceIP" : "192.168.17.3/24",
      "peerIP" : "192.168.17.10/24",
      "asnPeer" : 65001,
      "bgpPeerPassword" : "Acme1!"
    } ]
  } ],
  "tier0RoutingType" : "EBGP",
  "tier0Name" : "Acme-Tier0",
  "tier1Name" : "Acme-Tier1",
  "edgeClusterProfileType" : "DEFAULT"
}

HTTP Response

HTTP/1.1 202 Accepted
Content-Type: application/json
Content-Length: 3402

{
  "id" : "80542638-7311-4e02-b0f6-50f009b0bb6c",
  "description" : "@@Validating NSX Edge cluster creation spec@@",
  "executionStatus" : "IN_PROGRESS",
  "resultStatus" : "UNKNOWN",
  "validationChecks" : [ {
    "description" : "@@Check for Edge management IP to Edge node FQDN resolution@@",
    "resultStatus" : "UNKNOWN"
  }, {
    "description" : "@@Two unique uplink interfaces per Edge node@@",
    "resultStatus" : "UNKNOWN"
  }, {
    "description" : "@@Check that Tier-1 with the same name does not exist@@",
    "resultStatus" : "UNKNOWN"
  }, {
    "description" : "@@Validate the specified NSX enabled VDS uplinks are prepared for Edge overlay@@",
    "resultStatus" : "UNKNOWN"
  }, {
    "description" : "@@Check vSphere cluster has all hosts with a vCPU count and RAM size to accommodate the selected Edge form factor@@",
    "resultStatus" : "UNKNOWN"
  }, {
    "description" : "@@Validate that IPs are in the same subnet@@",
    "resultStatus" : "UNKNOWN"
  }, {
    "description" : "@@Unique Edge TEP IPs for Edge nodes@@",
    "resultStatus" : "UNKNOWN"
  }, {
    "description" : "@@Check for duplicates: Duplicate Edge cluster name@@",
    "resultStatus" : "UNKNOWN"
  }, {
    "description" : "@@Check that management networks are reachable@@",
    "resultStatus" : "UNKNOWN"
  }, {
    "description" : "@@Edge cluster password(s) is not meeting NSX password policy standard@@",
    "resultStatus" : "UNKNOWN"
  }, {
    "description" : "@@Validate that TEP IPs, gateway, and management IP, gateway are in the same subnet@@",
    "resultStatus" : "UNKNOWN"
  }, {
    "description" : "@@Check that Edge cluster with the same name does not exist in NSX Manager@@",
    "resultStatus" : "UNKNOWN"
  }, {
    "description" : "@@Validate that the specified IP addresses in the input spec do not conflict with the Tier-0 transit subnets@@",
    "resultStatus" : "UNKNOWN"
  }, {
    "description" : "@@Check that the custom Edge cluster profile does not conflict with an existing profile@@",
    "resultStatus" : "UNKNOWN"
  }, {
    "description" : "@@Check that Edge node FQDNs are unique@@",
    "resultStatus" : "UNKNOWN"
  }, {
    "description" : "@@Check for L2 Non-uniform and L3 cluster@@",
    "resultStatus" : "UNKNOWN"
  }, {
    "description" : "@@Validate all vCenter clusters are not stretched@@",
    "resultStatus" : "UNKNOWN"
  }, {
    "description" : "@@Check for IP conflict for Edge management IP, Edge TEP IPs, Tier-0 uplink interface IPs@@",
    "resultStatus" : "UNKNOWN"
  }, {
    "description" : "@@Check that Tier-0 with the same name does not exist@@",
    "resultStatus" : "UNKNOWN"
  }, {
    "description" : "@@The vSphere cluster(s) hosting the Edge cluster belong to the same workload domain@@",
    "resultStatus" : "UNKNOWN"
  }, {
    "description" : "@@Check that uplink VLANs are valid@@",
    "resultStatus" : "UNKNOWN"
  }, {
    "description" : "@@Capacity check for hosting vSphere cluster(s)@@",
    "resultStatus" : "UNKNOWN"
  }, {
    "description" : "@@Check routing between Host TEP VLAN and Edge TEP VLAN@@",
    "resultStatus" : "UNKNOWN"
  }, {
    "description" : "@@Validate each Edge node's VLAN is consistent per vSphere cluster@@",
    "resultStatus" : "UNKNOWN"
  }, {
    "description" : "@@Check for unique IPs for Edge management IP, Edge TEP IPs, Tier-0 uplink interface IPs@@",
    "resultStatus" : "UNKNOWN"
  } ]
}
  • Poll the status of the validation using the validation API with the ID from the response of the previous API.

Tip : Refer to: Get Edge Cluster Validation.

2. Get Edge Cluster Validation

2.1. Prerequisites

The following data is required for the Get the Edge Cluster spec validation API.

  • ID of the Edge Cluster Validation

2.2. Steps

  • Invoke the Get the Edge Cluster spec validation API.

cURL Request

$ curl 'https://sfo-vcf01.rainpole.io/v1/edge-clusters/validations/9b7519ef-0b0e-48a8-bf70-fd9824e448b6' -i -X GET \
    -H 'Accept: application/json' \
    -H 'Authorization: Bearer etYWRta....'

HTTP Request

GET /v1/edge-clusters/validations/9b7519ef-0b0e-48a8-bf70-fd9824e448b6 HTTP/1.1
Accept: application/json
Host: sfo-vcf01.rainpole.io
Authorization: Bearer etYWRta....

HTTP Response

HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 3402

{
  "id" : "9b7519ef-0b0e-48a8-bf70-fd9824e448b6",
  "description" : "@@Validating NSX Edge cluster creation spec@@",
  "executionStatus" : "IN_PROGRESS",
  "resultStatus" : "UNKNOWN",
  "validationChecks" : [ {
    "description" : "@@Check for Edge management IP to Edge node FQDN resolution@@",
    "resultStatus" : "UNKNOWN"
  }, {
    "description" : "@@Two unique uplink interfaces per Edge node@@",
    "resultStatus" : "UNKNOWN"
  }, {
    "description" : "@@Check that Tier-1 with the same name does not exist@@",
    "resultStatus" : "UNKNOWN"
  }, {
    "description" : "@@Validate the specified NSX enabled VDS uplinks are prepared for Edge overlay@@",
    "resultStatus" : "UNKNOWN"
  }, {
    "description" : "@@Check vSphere cluster has all hosts with a vCPU count and RAM size to accommodate the selected Edge form factor@@",
    "resultStatus" : "UNKNOWN"
  }, {
    "description" : "@@Validate that IPs are in the same subnet@@",
    "resultStatus" : "UNKNOWN"
  }, {
    "description" : "@@Unique Edge TEP IPs for Edge nodes@@",
    "resultStatus" : "UNKNOWN"
  }, {
    "description" : "@@Check for duplicates: Duplicate Edge cluster name@@",
    "resultStatus" : "UNKNOWN"
  }, {
    "description" : "@@Check that management networks are reachable@@",
    "resultStatus" : "UNKNOWN"
  }, {
    "description" : "@@Edge cluster password(s) is not meeting NSX password policy standard@@",
    "resultStatus" : "UNKNOWN"
  }, {
    "description" : "@@Validate that TEP IPs, gateway, and management IP, gateway are in the same subnet@@",
    "resultStatus" : "UNKNOWN"
  }, {
    "description" : "@@Check that Edge cluster with the same name does not exist in NSX Manager@@",
    "resultStatus" : "UNKNOWN"
  }, {
    "description" : "@@Validate that the specified IP addresses in the input spec do not conflict with the Tier-0 transit subnets@@",
    "resultStatus" : "UNKNOWN"
  }, {
    "description" : "@@Check that the custom Edge cluster profile does not conflict with an existing profile@@",
    "resultStatus" : "UNKNOWN"
  }, {
    "description" : "@@Check that Edge node FQDNs are unique@@",
    "resultStatus" : "UNKNOWN"
  }, {
    "description" : "@@Check for L2 Non-uniform and L3 cluster@@",
    "resultStatus" : "UNKNOWN"
  }, {
    "description" : "@@Validate all vCenter clusters are not stretched@@",
    "resultStatus" : "UNKNOWN"
  }, {
    "description" : "@@Check for IP conflict for Edge management IP, Edge TEP IPs, Tier-0 uplink interface IPs@@",
    "resultStatus" : "UNKNOWN"
  }, {
    "description" : "@@Check that Tier-0 with the same name does not exist@@",
    "resultStatus" : "UNKNOWN"
  }, {
    "description" : "@@The vSphere cluster(s) hosting the Edge cluster belong to the same workload domain@@",
    "resultStatus" : "UNKNOWN"
  }, {
    "description" : "@@Check that uplink VLANs are valid@@",
    "resultStatus" : "UNKNOWN"
  }, {
    "description" : "@@Capacity check for hosting vSphere cluster(s)@@",
    "resultStatus" : "UNKNOWN"
  }, {
    "description" : "@@Check routing between Host TEP VLAN and Edge TEP VLAN@@",
    "resultStatus" : "UNKNOWN"
  }, {
    "description" : "@@Validate each Edge node's VLAN is consistent per vSphere cluster@@",
    "resultStatus" : "UNKNOWN"
  }, {
    "description" : "@@Check for unique IPs for Edge management IP, Edge TEP IPs, Tier-0 uplink interface IPs@@",
    "resultStatus" : "UNKNOWN"
  } ]
}

3. Create Edge Cluster

3.1. Prerequisites

Complete the required prerequisites before invoking the API.

  • Separate VLANs and subnets are available for Host TEP VLAN and Edge TEP VLAN use

  • Host TEP VLAN and Edge TEP VLAN need to be routed

  • If dynamic routing is desired, please set up two BGP peers (on TORs or infra ESG) with an interface IP, ASN and BGP password

  • Reserve an ASN to use for the NSX Edge cluster’s Tier-0 interfaces

  • DNS entries for NSX Edge components should be populated in customer managed DNS server

  • The vSphere clusters hosting the Edge clusters should be L2 Uniform. All hosts in a hosting vSphere cluster need to have identical management, uplink, Edge and host TEP networks

  • The vSphere clusters hosting the Edge nodes must have the same pNIC speed for NSX enabled VDS uplinks chosen for Edge overlay (e.g., either 10G or 25G but not both)

  • All nodes of an NSX Edge cluster must use the same set of NSX enabled VDS uplinks. The selected uplinks must be prepared for overlay use

The following data is required for the Create an Edge Cluster API:

  • Edge cluster name

  • Maximum transmission unit

  • ASN to be used for the edge cluster

  • Edge cluster profile type, for example: DEFAULT, CUSTOM

  • Edge cluster type, for example: NSX-T

  • Edge cluster form factor, for example: SMALL, MEDIUM, LARGE

  • Edge cluster profile spec, refer to: NsxTEdgeClusterProfileSpec

  • Edge Node specs, refer to: NsxTEdgeNodeSpec

  • Name for the Tier-0 router

  • Tier-0 routing type, for example: EBGP, STATIC

  • High-Availability mode for Tier-0 router, for example: ACTIVE_ACTIVE, ACTIVE_STANDBY

  • Name for the Tier-1 router

Tip : Refer to: EdgeClusterCreationSpec.

3.2. Steps

  • Invoke the Create an Edge Cluster API. This API returns a task which can be polled and monitored.

cURL Request

$ curl 'https://sfo-vcf01.rainpole.io/v1/edge-clusters' -i -X POST \
    -H 'Content-Type: application/json' \
    -H 'Accept: application/json' \
    -H 'Authorization: Bearer etYWRta....' \
    -d '{
  "edgeClusterName" : "sfo-w01-cl01-edge",
  "edgeClusterType" : "NSX-T",
  "edgeRootPassword" : "Acme123!Acme123!",
  "edgeAdminPassword" : "Acme123!Acme123!",
  "edgeAuditPassword" : "Acme123!Acme123!",
  "edgeFormFactor" : "MEDIUM",
  "tier0ServicesHighAvailability" : "ACTIVE_ACTIVE",
  "mtu" : 9000,
  "asn" : 65003,
  "edgeNodeSpecs" : [ {
    "edgeNodeName" : "sfo-m01-en01.rainpole.io",
    "managementIP" : "10.0.0.50/24",
    "managementGateway" : "10.0.0.250",
    "edgeTepGateway" : "192.168.52.1",
    "edgeTep1IP" : "192.168.52.10/24",
    "edgeTep2IP" : "192.168.52.11/24",
    "edgeTepVlan" : 1252,
    "clusterId" : "d1052c9c-6973-4e32-8034-06e7fa71e83c",
    "interRackCluster" : false,
    "uplinkNetwork" : [ {
      "uplinkVlan" : 2081,
      "uplinkInterfaceIP" : "192.168.16.2/24",
      "peerIP" : "192.168.16.10/24",
      "asnPeer" : 65001,
      "bgpPeerPassword" : "Acme1!"
    }, {
      "uplinkVlan" : 2082,
      "uplinkInterfaceIP" : "192.168.17.2/24",
      "peerIP" : "192.168.17.10/24",
      "asnPeer" : 65001,
      "bgpPeerPassword" : "Acme1!"
    } ]
  }, {
    "edgeNodeName" : "sfo-m01-en02.rainpole.io",
    "managementIP" : "10.0.0.51/24",
    "managementGateway" : "10.0.0.250",
    "edgeTepGateway" : "192.168.52.1",
    "edgeTep1IP" : "192.168.52.12/24",
    "edgeTep2IP" : "192.168.52.13/24",
    "edgeTepVlan" : 1252,
    "clusterId" : "d1052c9c-6973-4e32-8034-06e7fa71e83c",
    "interRackCluster" : false,
    "uplinkNetwork" : [ {
      "uplinkVlan" : 2081,
      "uplinkInterfaceIP" : "192.168.16.3/24",
      "peerIP" : "192.168.16.10/24",
      "asnPeer" : 65001,
      "bgpPeerPassword" : "Acme1!"
    }, {
      "uplinkVlan" : 2082,
      "uplinkInterfaceIP" : "192.168.17.3/24",
      "peerIP" : "192.168.17.10/24",
      "asnPeer" : 65001,
      "bgpPeerPassword" : "Acme1!"
    } ]
  } ],
  "tier0RoutingType" : "EBGP",
  "tier0Name" : "Acme-Tier0",
  "tier1Name" : "Acme-Tier1",
  "edgeClusterProfileType" : "DEFAULT"
}'

HTTP Request

POST /v1/edge-clusters HTTP/1.1
Content-Type: application/json
Accept: application/json
Content-Length: 1981
Host: sfo-vcf01.rainpole.io
Authorization: Bearer etYWRta....

{
  "edgeClusterName" : "sfo-w01-cl01-edge",
  "edgeClusterType" : "NSX-T",
  "edgeRootPassword" : "Acme123!Acme123!",
  "edgeAdminPassword" : "Acme123!Acme123!",
  "edgeAuditPassword" : "Acme123!Acme123!",
  "edgeFormFactor" : "MEDIUM",
  "tier0ServicesHighAvailability" : "ACTIVE_ACTIVE",
  "mtu" : 9000,
  "asn" : 65003,
  "edgeNodeSpecs" : [ {
    "edgeNodeName" : "sfo-m01-en01.rainpole.io",
    "managementIP" : "10.0.0.50/24",
    "managementGateway" : "10.0.0.250",
    "edgeTepGateway" : "192.168.52.1",
    "edgeTep1IP" : "192.168.52.10/24",
    "edgeTep2IP" : "192.168.52.11/24",
    "edgeTepVlan" : 1252,
    "clusterId" : "d1052c9c-6973-4e32-8034-06e7fa71e83c",
    "interRackCluster" : false,
    "uplinkNetwork" : [ {
      "uplinkVlan" : 2081,
      "uplinkInterfaceIP" : "192.168.16.2/24",
      "peerIP" : "192.168.16.10/24",
      "asnPeer" : 65001,
      "bgpPeerPassword" : "Acme1!"
    }, {
      "uplinkVlan" : 2082,
      "uplinkInterfaceIP" : "192.168.17.2/24",
      "peerIP" : "192.168.17.10/24",
      "asnPeer" : 65001,
      "bgpPeerPassword" : "Acme1!"
    } ]
  }, {
    "edgeNodeName" : "sfo-m01-en02.rainpole.io",
    "managementIP" : "10.0.0.51/24",
    "managementGateway" : "10.0.0.250",
    "edgeTepGateway" : "192.168.52.1",
    "edgeTep1IP" : "192.168.52.12/24",
    "edgeTep2IP" : "192.168.52.13/24",
    "edgeTepVlan" : 1252,
    "clusterId" : "d1052c9c-6973-4e32-8034-06e7fa71e83c",
    "interRackCluster" : false,
    "uplinkNetwork" : [ {
      "uplinkVlan" : 2081,
      "uplinkInterfaceIP" : "192.168.16.3/24",
      "peerIP" : "192.168.16.10/24",
      "asnPeer" : 65001,
      "bgpPeerPassword" : "Acme1!"
    }, {
      "uplinkVlan" : 2082,
      "uplinkInterfaceIP" : "192.168.17.3/24",
      "peerIP" : "192.168.17.10/24",
      "asnPeer" : 65001,
      "bgpPeerPassword" : "Acme1!"
    } ]
  } ],
  "tier0RoutingType" : "EBGP",
  "tier0Name" : "Acme-Tier0",
  "tier1Name" : "Acme-Tier1",
  "edgeClusterProfileType" : "DEFAULT"
}

HTTP Response

HTTP/1.1 202 Accepted
Content-Type: application/json
Location: /v1/tasks/745ffe3c-7f72-4b34-94d2-412fecc28654
Content-Length: 170

{
  "id" : "745ffe3c-7f72-4b34-94d2-412fecc28654",
  "name" : "Add a NSX-T edge cluster",
  "status" : "IN_PROGRESS",
  "creationTimestamp" : "2021-11-03T12:00:49.009Z"
}
  • Poll the status of the task using the task API with the ID from the response of the previous API.

Tip : Refer to: Get a Task.

4. Get the Edge Clusters

  • Get the Edge Clusters API is used to get all the edge clusters.

4.1. Prerequisites

None

4.2. Steps

  • Invoke the Get the Edge Clusters API.

cURL Request

$ curl 'https://sfo-vcf01.rainpole.io/v1/edge-clusters?clusterId=d1052c9c-6973-4e32-8034-06e7fa71e83c' -i -X GET \
    -H 'Accept: application/json' \
    -H 'Authorization: Bearer etYWRta....'

HTTP Request

GET /v1/edge-clusters?clusterId=d1052c9c-6973-4e32-8034-06e7fa71e83c HTTP/1.1
Accept: application/json
Host: sfo-vcf01.rainpole.io
Authorization: Bearer etYWRta....

HTTP Response

HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 583

{
  "elements" : [ {
    "id" : "555da97d-a2a9-4950-901f-7cd61f141d96",
    "name" : "sfo-m01-ecp01",
    "clusters" : [ {
      "id" : "d1052c9c-6973-4e32-8034-06e7fa71e83c"
    } ],
    "nsxtCluster" : {
      "id" : "21075d4b-b6cf-4d67-8497-5b41cade70d3",
      "vipFqdn" : "sfo-m01-ecp01.rainpole.io",
      "vip" : "10.0.0.30"
    },
    "edgeNodes" : [ {
      "id" : "e8f5b077-ca3f-4c43-a4b8-3e61ce00257d",
      "hostName" : "sfo-m01-en01.rainpole.io"
    }, {
      "id" : "55b9e159-7671-40bc-9d3f-b629c424b24a",
      "hostName" : "sfo-m01-en02.rainpole.io"
    } ]
  } ]
}

5. Get an Edge Cluster

  • Get an Edge Cluster API API is used to get a specific edge cluster.

5.1. Prerequisites

The following data is required:

  • ID of the Edge cluster

5.2. Steps

  • Invoke the Get an Edge Cluster API.

cURL Request

$ curl 'https://sfo-vcf01.rainpole.io/v1/edge-clusters/c7893365-fc2c-4d66-8c4e-f0f4d1219e8c' -i -X GET \
    -H 'Accept: application/json' \
    -H 'Authorization: Bearer etYWRta....'

HTTP Request

GET /v1/edge-clusters/c7893365-fc2c-4d66-8c4e-f0f4d1219e8c HTTP/1.1
Accept: application/json
Host: sfo-vcf01.rainpole.io
Authorization: Bearer etYWRta....

HTTP Response

HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 524

{
  "id" : "86350d2d-ee93-49dd-a6e6-9ec669e71ab5",
  "name" : "sfo-m01-ecp01",
  "clusters" : [ {
    "id" : "d1052c9c-6973-4e32-8034-06e7fa71e83c"
  } ],
  "nsxtCluster" : {
    "id" : "ddf15383-ceff-4f65-8f46-756fcbb52627",
    "vipFqdn" : "sfo-m01-ecp01.rainpole.io",
    "vip" : "10.0.0.30"
  },
  "edgeNodes" : [ {
    "id" : "5c287d18-7f82-4b6a-b202-e75a484d5ceb",
    "hostName" : "sfo-m01-en01.rainpole.io"
  }, {
    "id" : "b2e3c006-b0cf-4770-b40d-8bb302bd4fe7",
    "hostName" : "sfo-m01-en02.rainpole.io"
  } ]
}

6. Validate Edge Cluster Expansion

6.1. Prerequisites

Complete the required prerequisites before invoking the API.

  • Separate VLANs and subnets are available for Host TEP VLAN and Edge TEP VLAN use

  • Host TEP VLAN and Edge TEP VLAN need to be routed

  • If dynamic routing is desired, please set up two BGP peers (on TORs or infra ESG) with an interface IP, ASN and BGP password

  • Reserve an ASN to use for the NSX Edge cluster’s Tier-0 interfaces

  • DNS entries for NSX Edge components should be populated in customer managed DNS server

  • The vSphere clusters hosting the Edge clusters should be L2 Uniform. All host nodes in a hosting vSphere cluster need to have identical management, uplink, Edge and host TEP networks

  • The vSphere clusters hosting the NSX Edge node VMs must have the same pNIC speed for NSX enabled VDS uplinks chosen for Edge overlay (e.g., either 10G or 25G but not both)

  • All nodes of an NSX Edge cluster must use the same set of NSX enabled VDS uplinks. The selected uplinks must be prepared for overlay use

  • Please refer to the official NSX documentation for the deployed version

  • Make sure there is enough capacity on the cluster(s) to deploy additional Edge nodes based on the form factor

Tip : Refer to: Validate an NSX-T Edge Cluster update spec API and EdgeClusterUpdateSpec.

6.2. Steps

cURL Request

$ curl 'https://sfo-vcf01.rainpole.io/v1/edge-clusters/d1052c9c-6973-4e32-8034-06e7fa71e83c/validations' -i -X POST \
    -H 'Content-Type: application/json' \
    -H 'Accept: application/json' \
    -H 'Authorization: Bearer etYWRta....' \
    -d '{
  "edgeClusterExpansionSpec" : {
    "edgeNodeRootPassword" : "Acme123!Acme123!",
    "edgeNodeAdminPassword" : "Acme123!Acme123!",
    "edgeNodeAuditPassword" : "Acme123!Acme123!",
    "edgeNodeSpecs" : [ {
      "edgeNodeName" : "sfo-m01-en04.rainpole.io",
      "managementIP" : "10.0.0.53/24",
      "managementGateway" : "10.0.0.250",
      "edgeTepGateway" : "192.168.52.1",
      "edgeTep1IP" : "192.168.52.32/24",
      "edgeTep2IP" : "192.168.52.42/24",
      "edgeTepVlan" : 1252,
      "clusterId" : "cff07657-5697-4ecc-8f66-efd8ec345754",
      "interRackCluster" : false,
      "uplinkNetwork" : [ {
        "uplinkVlan" : 2081,
        "uplinkInterfaceIP" : "192.168.16.34/24",
        "bgpPeers" : [ {
          "ip" : "192.168.16.10/24",
          "asn" : 65001,
          "password" : "Acme1!"
        } ]
      }, {
        "uplinkVlan" : 2082,
        "uplinkInterfaceIP" : "192.168.17.34/24",
        "bgpPeers" : [ {
          "ip" : "192.168.17.10/24",
          "asn" : 65001,
          "password" : "Acme1!"
        } ]
      } ],
      "firstNsxVdsUplink" : "uplink1",
      "secondNsxVdsUplink" : "uplink2"
    } ]
  },
  "operation" : "EXPANSION"
}'

HTTP Request

POST /v1/edge-clusters/d1052c9c-6973-4e32-8034-06e7fa71e83c/validations HTTP/1.1
Content-Type: application/json
Accept: application/json
Content-Length: 1177
Host: sfo-vcf01.rainpole.io
Authorization: Bearer etYWRta....

{
  "edgeClusterExpansionSpec" : {
    "edgeNodeRootPassword" : "Acme123!Acme123!",
    "edgeNodeAdminPassword" : "Acme123!Acme123!",
    "edgeNodeAuditPassword" : "Acme123!Acme123!",
    "edgeNodeSpecs" : [ {
      "edgeNodeName" : "sfo-m01-en04.rainpole.io",
      "managementIP" : "10.0.0.53/24",
      "managementGateway" : "10.0.0.250",
      "edgeTepGateway" : "192.168.52.1",
      "edgeTep1IP" : "192.168.52.32/24",
      "edgeTep2IP" : "192.168.52.42/24",
      "edgeTepVlan" : 1252,
      "clusterId" : "cff07657-5697-4ecc-8f66-efd8ec345754",
      "interRackCluster" : false,
      "uplinkNetwork" : [ {
        "uplinkVlan" : 2081,
        "uplinkInterfaceIP" : "192.168.16.34/24",
        "bgpPeers" : [ {
          "ip" : "192.168.16.10/24",
          "asn" : 65001,
          "password" : "Acme1!"
        } ]
      }, {
        "uplinkVlan" : 2082,
        "uplinkInterfaceIP" : "192.168.17.34/24",
        "bgpPeers" : [ {
          "ip" : "192.168.17.10/24",
          "asn" : 65001,
          "password" : "Acme1!"
        } ]
      } ],
      "firstNsxVdsUplink" : "uplink1",
      "secondNsxVdsUplink" : "uplink2"
    } ]
  },
  "operation" : "EXPANSION"
}

HTTP Response

HTTP/1.1 202 Accepted
Content-Type: application/json
Content-Length: 3625

{
  "id" : "9fcba632-70f1-497a-bc64-48107ee497c7",
  "description" : "@@Validating NSX Edge cluster update spec@@",
  "executionStatus" : "IN_PROGRESS",
  "resultStatus" : "UNKNOWN",
  "validationChecks" : [ {
    "description" : "@@Check for Edge management IP to Edge node FQDN resolution@@",
    "resultStatus" : "UNKNOWN"
  }, {
    "description" : "@@Two unique uplink interfaces per Edge node@@",
    "resultStatus" : "UNKNOWN"
  }, {
    "description" : "@@Check that Tier-1 with the same name does not exist@@",
    "resultStatus" : "UNKNOWN"
  }, {
    "description" : "@@Validate the specified NSX enabled VDS uplinks are prepared for Edge overlay@@",
    "resultStatus" : "UNKNOWN"
  }, {
    "description" : "@@Check vSphere cluster has all hosts with a vCPU count and RAM size to accommodate the selected Edge form factor@@",
    "resultStatus" : "UNKNOWN"
  }, {
    "description" : "@@Compliance of Edge cluster size with Tier-0 High-Availability mode@@",
    "resultStatus" : "UNKNOWN"
  }, {
    "description" : "@@Validate that IPs are in the same subnet@@",
    "resultStatus" : "UNKNOWN"
  }, {
    "description" : "@@Unique Edge TEP IPs for Edge nodes@@",
    "resultStatus" : "UNKNOWN"
  }, {
    "description" : "@@Check that management networks are reachable@@",
    "resultStatus" : "UNKNOWN"
  }, {
    "description" : "@@Edge cluster password(s) is not meeting NSX password policy standard@@",
    "resultStatus" : "UNKNOWN"
  }, {
    "description" : "@@Check Tier-0 uplink settings@@",
    "resultStatus" : "UNKNOWN"
  }, {
    "description" : "@@Check NSX Edge cluster's health status@@",
    "resultStatus" : "UNKNOWN"
  }, {
    "description" : "@@Validate that TEP IPs, gateway, and management IP, gateway are in the same subnet@@",
    "resultStatus" : "UNKNOWN"
  }, {
    "description" : "@@Validate that the specified IP addresses in the input spec do not conflict with the Tier-0 transit subnets@@",
    "resultStatus" : "UNKNOWN"
  }, {
    "description" : "@@Additional Tier-1s can be configured if existing Edge cluster is not federated@@",
    "resultStatus" : "UNKNOWN"
  }, {
    "description" : "@@Check that Edge node FQDNs are unique@@",
    "resultStatus" : "UNKNOWN"
  }, {
    "description" : "@@Validate all vCenter clusters, both current and newly added, are either all stretched or none are stretched@@",
    "resultStatus" : "UNKNOWN"
  }, {
    "description" : "@@Check for L2 Non-uniform and L3 cluster@@",
    "resultStatus" : "UNKNOWN"
  }, {
    "description" : "@@Check for IP conflict for Edge management IP, Edge TEP IPs, Tier-0 uplink interface IPs@@",
    "resultStatus" : "UNKNOWN"
  }, {
    "description" : "@@The vSphere cluster(s) hosting the Edge cluster belong to the same workload domain@@",
    "resultStatus" : "UNKNOWN"
  }, {
    "description" : "@@Check that uplink VLANs are valid@@",
    "resultStatus" : "UNKNOWN"
  }, {
    "description" : "@@Capacity check for hosting vSphere cluster(s)@@",
    "resultStatus" : "UNKNOWN"
  }, {
    "description" : "@@Compliance checks for Edge cluster expansion spec@@",
    "resultStatus" : "UNKNOWN"
  }, {
    "description" : "@@Check routing between Host TEP VLAN and Edge TEP VLAN@@",
    "resultStatus" : "UNKNOWN"
  }, {
    "description" : "@@Validate each Edge node's VLAN is consistent per vSphere cluster@@",
    "resultStatus" : "UNKNOWN"
  }, {
    "description" : "@@Checking Edge cluster existence@@",
    "resultStatus" : "UNKNOWN"
  }, {
    "description" : "@@Check for unique IPs for Edge management IP, Edge TEP IPs, Tier-0 uplink interface IPs@@",
    "resultStatus" : "UNKNOWN"
  } ]
}
  • Poll the status of the validation using the Validation API with the ID from the response of the previous API.

Tip : Refer to: Get Edge Cluster Validation.

7. Expand an Edge Cluster

7.1. Prerequisites

Complete the required prerequisites before invoking the API.

  • Separate VLANs and subnets are available for Host TEP VLAN and Edge TEP VLAN use

  • Host TEP VLAN and Edge TEP VLAN need to be routed

  • If dynamic routing is desired, please set up two BGP peers (on TORs or infra ESG) with an interface IP, ASN and BGP password

  • Reserve an ASN to use for the NSX Edge cluster’s Tier-0 interfaces

  • DNS entries for NSX Edge components should be populated in customer managed DNS server

  • The vSphere clusters hosting the Edge clusters should be L2 Uniform. All host nodes in a hosting vSphere cluster need to have identical management, uplink, Edge and host TEP networks

  • The vSphere clusters hosting the NSX Edge node VMs must have the same pNIC speed for NSX enabled VDS uplinks chosen for Edge overlay (e.g., either 10G or 25G but not both)

  • All nodes of an NSX Edge cluster must use the same set of NSX enabled VDS uplinks. The selected uplinks must be prepared for overlay use

  • Please refer to the official NSX documentation for the deployed version

  • Make sure there is enough capacity on the cluster(s) to deploy additional Edge nodes based on the form factor

  • Validation API for expansion should complete successfully

Tip : Refer to: EdgeClusterUpdateSpec.

7.2. Steps

  • Invoke the Expand or Shrink an NSX-T Edge Cluster API. This API returns a task which can be polled and monitored.

cURL Request

$ curl 'https://sfo-vcf01.rainpole.io/v1/edge-clusters/d1052c9c-6973-4e32-8034-06e7fa71e83c' -i -X PATCH \
    -H 'Content-Type: application/json' \
    -H 'Accept: application/json' \
    -H 'Authorization: Bearer etYWRta....' \
    -d '{
  "edgeClusterExpansionSpec" : {
    "edgeNodeRootPassword" : "EvoSddc!2016",
    "edgeNodeAdminPassword" : "EvoSddc!2016",
    "edgeNodeAuditPassword" : "EvoSddc!2016",
    "edgeNodeSpecs" : [ {
      "edgeNodeName" : "sfo-m01-en05.rainpole.io",
      "managementIP" : "10.0.0.55/24",
      "managementGateway" : "10.0.0.250",
      "edgeTepGateway" : "192.168.52.1",
      "edgeTep1IP" : "192.168.52.15/24",
      "edgeTep2IP" : "192.168.52.16/24",
      "edgeTepVlan" : 1252,
      "clusterId" : "d1052c9c-6973-4e32-8034-06e7fa71e83d",
      "interRackCluster" : false,
      "uplinkNetwork" : [ {
        "uplinkVlan" : 2081,
        "uplinkInterfaceIP" : "192.168.16.14/24",
        "bgpPeers" : [ {
          "ip" : "192.168.16.10/24",
          "asn" : 65001,
          "password" : "VMware1!"
        } ]
      }, {
        "uplinkVlan" : 2082,
        "uplinkInterfaceIP" : "192.168.17.14/24",
        "bgpPeers" : [ {
          "ip" : "192.168.17.10/24",
          "asn" : 65001,
          "password" : "VMware1!"
        } ]
      } ]
    } ],
    "additionalTier1Names" : [ ]
  },
  "operation" : "EXPANSION"
}'

HTTP Request

PATCH /v1/edge-clusters/d1052c9c-6973-4e32-8034-06e7fa71e83c HTTP/1.1
Content-Type: application/json
Accept: application/json
Content-Length: 1124
Host: sfo-vcf01.rainpole.io
Authorization: Bearer etYWRta....

{
  "edgeClusterExpansionSpec" : {
    "edgeNodeRootPassword" : "EvoSddc!2016",
    "edgeNodeAdminPassword" : "EvoSddc!2016",
    "edgeNodeAuditPassword" : "EvoSddc!2016",
    "edgeNodeSpecs" : [ {
      "edgeNodeName" : "sfo-m01-en05.rainpole.io",
      "managementIP" : "10.0.0.55/24",
      "managementGateway" : "10.0.0.250",
      "edgeTepGateway" : "192.168.52.1",
      "edgeTep1IP" : "192.168.52.15/24",
      "edgeTep2IP" : "192.168.52.16/24",
      "edgeTepVlan" : 1252,
      "clusterId" : "d1052c9c-6973-4e32-8034-06e7fa71e83d",
      "interRackCluster" : false,
      "uplinkNetwork" : [ {
        "uplinkVlan" : 2081,
        "uplinkInterfaceIP" : "192.168.16.14/24",
        "bgpPeers" : [ {
          "ip" : "192.168.16.10/24",
          "asn" : 65001,
          "password" : "VMware1!"
        } ]
      }, {
        "uplinkVlan" : 2082,
        "uplinkInterfaceIP" : "192.168.17.14/24",
        "bgpPeers" : [ {
          "ip" : "192.168.17.10/24",
          "asn" : 65001,
          "password" : "VMware1!"
        } ]
      } ]
    } ],
    "additionalTier1Names" : [ ]
  },
  "operation" : "EXPANSION"
}

HTTP Response

HTTP/1.1 202 Accepted
Content-Type: application/json
Location: /v1/tasks/c50f284e-61bb-47ed-b48f-6dc9374040cd
Content-Length: 174

{
  "id" : "c50f284e-61bb-47ed-b48f-6dc9374040cd",
  "name" : "Update an NSX-T Edge Cluster",
  "status" : "IN_PROGRESS",
  "creationTimestamp" : "2021-11-03T12:00:47.621Z"
}

In case of edge cluster expansion for an edge cluster hosted on a stretched cluster, following are the sample requests and responses.
cURL Request

$ curl 'https://sfo-vcf01.rainpole.io/v1/edge-clusters/d1052c9c-6973-4e32-8034-06e7fa71e83c' -i -X PATCH \
    -H 'Content-Type: application/json' \
    -H 'Accept: application/json' \
    -H 'Authorization: Bearer etYWRta....' \
    -d '{
  "edgeClusterExpansionSpec" : {
    "edgeNodeRootPassword" : "EvoSddc!2016",
    "edgeNodeAdminPassword" : "EvoSddc!2016",
    "edgeNodeAuditPassword" : "EvoSddc!2016",
    "edgeNodeSpecs" : [ {
      "edgeNodeName" : "sfo-m01-en05.rainpole.io",
      "managementIP" : "10.0.0.55/24",
      "managementGateway" : "10.0.0.250",
      "edgeTepGateway" : "192.168.52.1",
      "edgeTep1IP" : "192.168.52.15/24",
      "edgeTep2IP" : "192.168.52.16/24",
      "edgeTepVlan" : 1252,
      "clusterId" : "d1052c9c-6973-4e32-8034-06e7fa71e83d",
      "interRackCluster" : false,
      "uplinkNetwork" : [ {
        "uplinkVlan" : 2081,
        "uplinkInterfaceIP" : "192.168.16.14/24",
        "bgpPeers" : [ {
          "ip" : "192.168.16.10/24",
          "asn" : 65001,
          "password" : "VMware1!"
        } ]
      }, {
        "uplinkVlan" : 2082,
        "uplinkInterfaceIP" : "192.168.17.14/24",
        "bgpPeers" : [ {
          "ip" : "192.168.17.10/24",
          "asn" : 65001,
          "password" : "VMware1!"
        } ]
      } ]
    } ],
    "additionalTier1Names" : [ ]
  },
  "operation" : "EXPANSION"
}'

HTTP Request

PATCH /v1/edge-clusters/d1052c9c-6973-4e32-8034-06e7fa71e83c HTTP/1.1
Content-Type: application/json
Accept: application/json
Content-Length: 1124
Host: sfo-vcf01.rainpole.io
Authorization: Bearer etYWRta....

{
  "edgeClusterExpansionSpec" : {
    "edgeNodeRootPassword" : "EvoSddc!2016",
    "edgeNodeAdminPassword" : "EvoSddc!2016",
    "edgeNodeAuditPassword" : "EvoSddc!2016",
    "edgeNodeSpecs" : [ {
      "edgeNodeName" : "sfo-m01-en05.rainpole.io",
      "managementIP" : "10.0.0.55/24",
      "managementGateway" : "10.0.0.250",
      "edgeTepGateway" : "192.168.52.1",
      "edgeTep1IP" : "192.168.52.15/24",
      "edgeTep2IP" : "192.168.52.16/24",
      "edgeTepVlan" : 1252,
      "clusterId" : "d1052c9c-6973-4e32-8034-06e7fa71e83d",
      "interRackCluster" : false,
      "uplinkNetwork" : [ {
        "uplinkVlan" : 2081,
        "uplinkInterfaceIP" : "192.168.16.14/24",
        "bgpPeers" : [ {
          "ip" : "192.168.16.10/24",
          "asn" : 65001,
          "password" : "VMware1!"
        } ]
      }, {
        "uplinkVlan" : 2082,
        "uplinkInterfaceIP" : "192.168.17.14/24",
        "bgpPeers" : [ {
          "ip" : "192.168.17.10/24",
          "asn" : 65001,
          "password" : "VMware1!"
        } ]
      } ]
    } ],
    "additionalTier1Names" : [ ]
  },
  "operation" : "EXPANSION"
}

HTTP Response

HTTP/1.1 202 Accepted
Content-Type: application/json
Location: /v1/tasks/c7f6a184-3d9d-44f4-ab69-75fece03fd5b
Content-Length: 174

{
  "id" : "c7f6a184-3d9d-44f4-ab69-75fece03fd5b",
  "name" : "Update an NSX-T Edge Cluster",
  "status" : "IN_PROGRESS",
  "creationTimestamp" : "2021-11-03T12:00:46.969Z"
}
  • Poll the status of the task using the task API with the ID from the response of the previous API.

Tip : Refer to: Get a Task.

8. Validate Edge Cluster Shrinkage

8.1. Prerequisites

Complete the required prerequisites before invoking the API.

  • Selected Edge cluster must be available in VCF inventory with ACTIVE status

  • Selected Edge node(s) must be available in VCF inventory

  • Edge cluster must contain more than 2 Edge nodes

  • Edge cluster must be hosted on one or more vSphere clusters from the same domain

  • Edge cluster must not be federated and/or stretched

  • If the selected Edge cluster was deployed with Tier-0 High-Availability mode ACTIVE_ACTIVE, then the Edge node selection will be allowed if the Edge cluster contains two or more Edge nodes with two or more Tier-0 routers (Service Router Component) after the shrinkage operation

  • If the selected Edge cluster was deployed with Tier-0 High-Availability mode ACTIVE_STANDBY, then the selected Edge node(s) should not be in Active or Standby mode for the Tier-0 Service Router

  • The selected Edge node list should not contain both Active and Standby Edge nodes of the same Tier-1 router

Tip : Refer to: Validate an NSX-T Edge Cluster update spec API> and EdgeClusterUpdateSpec.

8.2. Steps

cURL Request

$ curl 'https://sfo-vcf01.rainpole.io/v1/edge-clusters/d1052c9c-6973-4e32-8034-06e7fa71e83c/validations' -i -X POST \
    -H 'Content-Type: application/json' \
    -H 'Accept: application/json' \
    -H 'Authorization: Bearer etYWRta....' \
    -d '{
  "edgeClusterShrinkageSpec" : {
    "edgeNodeIds" : [ "73f034b7-d9bc-44ee-99e8-4a5290e44c08" ]
  },
  "operation" : "SHRINKAGE"
}'

HTTP Request

POST /v1/edge-clusters/d1052c9c-6973-4e32-8034-06e7fa71e83c/validations HTTP/1.1
Content-Type: application/json
Accept: application/json
Content-Length: 132
Host: sfo-vcf01.rainpole.io
Authorization: Bearer etYWRta....

{
  "edgeClusterShrinkageSpec" : {
    "edgeNodeIds" : [ "73f034b7-d9bc-44ee-99e8-4a5290e44c08" ]
  },
  "operation" : "SHRINKAGE"
}

HTTP Response

HTTP/1.1 202 Accepted
Content-Type: application/json
Content-Length: 1036

{
  "id" : "ff0ffa14-41b8-484a-9fee-279c8fd9830a",
  "description" : "@@Validating NSX Edge cluster update spec@@",
  "executionStatus" : "IN_PROGRESS",
  "resultStatus" : "UNKNOWN",
  "validationChecks" : [ {
    "description" : "@@Validate at least 2 nodes are required after shrinking Edge cluster@@",
    "resultStatus" : "UNKNOWN"
  }, {
    "description" : "@@Validate Edge cluster is not federated@@",
    "resultStatus" : "UNKNOWN"
  }, {
    "description" : "@@Validate all vCenter clusters are not stretched@@",
    "resultStatus" : "UNKNOWN"
  }, {
    "description" : "@@Validate the selection for Edge node(s) for hosting Tier-1 router@@",
    "resultStatus" : "UNKNOWN"
  }, {
    "description" : "@@Checking Edge cluster existence@@",
    "resultStatus" : "UNKNOWN"
  }, {
    "description" : "@@Validate the selection for Edge node(s) for hosting Tier-0 router@@",
    "resultStatus" : "UNKNOWN"
  }, {
    "description" : "@@Validate Edge node IDs are part of the Edge cluster@@",
    "resultStatus" : "UNKNOWN"
  } ]
}
  • Poll the status of the validation using the Validation API with the ID from the response of the previous API.

Tip : Refer to: Get Edge Cluster Validation.

9. Shrink an Edge Cluster

9.1. Prerequisites

Complete the required prerequisites before invoking the API.

  • Selected Edge cluster must be available in VCF inventory with ACTIVE status

  • Selected Edge node(s) must be available in VCF inventory

  • Edge cluster must contain more than 2 Edge nodes

  • Edge cluster must be hosted on one or more vSphere clusters from the same domain

  • Edge cluster must not be federated and/or stretched

  • If the selected Edge cluster was deployed with Tier-0 High-Availability mode ACTIVE_ACTIVE, then the Edge node selection will be allowed if the Edge cluster contains two or more Edge nodes with two or more Tier-0 routers (Service Router Component) after the shrinkage operation

  • If the selected Edge cluster was deployed with Tier-0 High-Availability mode ACTIVE_STANDBY, then the selected Edge node(s) should not be in Active or Standby mode for the Tier-0 Service Router

  • The selected Edge node list should not contain both Active and Standby Edge nodes of the same Tier-1 router

  • Validation API for shrinkage should complete successfully

Tip : Refer to: EdgeClusterUpdateSpec.

9.2. Steps

  • Invoke the Expand or Shrink an NSX-T Edge Cluster API. This API returns a task which can be polled and monitored.

cURL Request

$ curl 'https://sfo-vcf01.rainpole.io/v1/edge-clusters/d1052c9c-6973-4e32-8034-06e7fa71e83c' -i -X PATCH \
    -H 'Content-Type: application/json' \
    -H 'Accept: application/json' \
    -H 'Authorization: Bearer etYWRta....' \
    -d '{
  "edgeClusterShrinkageSpec" : {
    "edgeNodeIds" : [ "node-1", "node-2" ]
  },
  "operation" : "SHRINKAGE"
}'

HTTP Request

PATCH /v1/edge-clusters/d1052c9c-6973-4e32-8034-06e7fa71e83c HTTP/1.1
Content-Type: application/json
Accept: application/json
Content-Length: 112
Host: sfo-vcf01.rainpole.io
Authorization: Bearer etYWRta....

{
  "edgeClusterShrinkageSpec" : {
    "edgeNodeIds" : [ "node-1", "node-2" ]
  },
  "operation" : "SHRINKAGE"
}

HTTP Response

HTTP/1.1 202 Accepted
Content-Type: application/json
Location: /v1/tasks/469dc4c2-9f32-4653-a378-008c38a2c5f9
Content-Length: 174

{
  "id" : "469dc4c2-9f32-4653-a378-008c38a2c5f9",
  "name" : "Update an NSX-T Edge Cluster",
  "status" : "IN_PROGRESS",
  "creationTimestamp" : "2021-11-03T12:00:48.712Z"
}
  • Poll the status of the task using the task API with the ID from the response of the previous API

Tip : Refer to: Get a Task.

Last updated 2021-11-03 05:03:41 PDT

Operations



[{"label":"Latest (4.4.0)","version":"latest"},{"version":"4.3.1"},{"link":"https://developer.vmware.com/apis/1127/vmware-cloud-foundation","version":"4.3"},{"link":"https://developer.vmware.com/apis/1078/vmware-cloud-foundation","version":"4.2"},{"link":"https://developer.vmware.com/apis/1033/vmware-cloud-foundation","version":"4.1"},{"link":"https://developer.vmware.com/apis/1003/vmware-cloud-foundation","version":"4.0.1"},{"link":"https://developer.vmware.com/apis/939/vmware-cloud-foundation","version":"4.0"}]
vcf-for-vxrail
Feedback

Was this page helpful?