[{"label":"Latest (5.0.0)","version":"latest"},{"version":"4.5.1"},{"version":"4.5.0"},{"version":"4.4.0"},{"version":"4.3.1"},{"link":"https://developer.vmware.com/apis/1126/vmware-cloud-foundation","version":"4.3"},{"link":"https://developer.vmware.com/apis/1077/vmware-cloud-foundation","version":"4.2"},{"link":"https://developer.vmware.com/apis/1032/vmware-cloud-foundation","version":"4.1"},{"link":"https://developer.vmware.com/apis/1002/vmware-cloud-foundation","version":"4.0.1"},{"link":"https://developer.vmware.com/apis/921/vmware-cloud-foundation","version":"4.0"},{"link":"https://developer.vmware.com/apis/925/vmware-cloud-foundation","version":"3.10"},{"link":"https://developer.vmware.com/apis/891/vmware-cloud-foundation","version":"3.9.1"},{"link":"https://developer.vmware.com/apis/723/vmware-cloud-foundation","version":"3.9.0"},{"link":"https://developer.vmware.com/apis/711/vmware-cloud-foundation","version":"3.8.1"},{"link":"https://developer.vmware.com/apis/685/vmware-cloud-foundation","version":"3.8"}]
vcf
VMware Cloud Foundation API Reference Guide

NSX-T Edge Clusters

APIs for managing NSX Edge Clusters

Table of Contents

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

  • 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" : "XXXXXXXXXXXXXXXX",
  "edgeAdminPassword" : "XXXXXXXXXXXXXXXX",
  "edgeAuditPassword" : "XXXXXXXXXXXXXXXX",
  "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" : "025b97aa-62ff-4e22-87b2-0d5a7a8622d2",
    "interRackCluster" : false,
    "uplinkNetwork" : [ {
      "uplinkVlan" : 2081,
      "uplinkInterfaceIP" : "192.168.16.2/24",
      "bgpPeers" : [ {
        "ip" : "192.168.16.10/24",
        "asn" : 65001,
        "password" : "XXXXXXXX"
      } ]
    }, {
      "uplinkVlan" : 2082,
      "uplinkInterfaceIP" : "192.168.17.2/24",
      "bgpPeers" : [ {
        "ip" : "192.168.17.10/24",
        "asn" : 65001,
        "password" : "XXXXXXXX"
      } ]
    } ]
  }, {
    "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" : "025b97aa-62ff-4e22-87b2-0d5a7a8622d2",
    "interRackCluster" : false,
    "uplinkNetwork" : [ {
      "uplinkVlan" : 2081,
      "uplinkInterfaceIP" : "192.168.16.3/24",
      "bgpPeers" : [ {
        "ip" : "192.168.16.10/24",
        "asn" : 65001,
        "password" : "XXXXXXXX"
      } ]
    }, {
      "uplinkVlan" : 2082,
      "uplinkInterfaceIP" : "192.168.17.3/24",
      "bgpPeers" : [ {
        "ip" : "192.168.17.10/24",
        "asn" : 65001,
        "password" : "XXXXXXXX"
      } ]
    } ]
  } ],
  "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: 2085
Host: sfo-vcf01.rainpole.io
Authorization: Bearer etYWRta....

{
  "edgeClusterName" : "sfo-w01-cl01-edge",
  "edgeClusterType" : "NSX-T",
  "edgeRootPassword" : "XXXXXXXXXXXXXXXX",
  "edgeAdminPassword" : "XXXXXXXXXXXXXXXX",
  "edgeAuditPassword" : "XXXXXXXXXXXXXXXX",
  "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" : "025b97aa-62ff-4e22-87b2-0d5a7a8622d2",
    "interRackCluster" : false,
    "uplinkNetwork" : [ {
      "uplinkVlan" : 2081,
      "uplinkInterfaceIP" : "192.168.16.2/24",
      "bgpPeers" : [ {
        "ip" : "192.168.16.10/24",
        "asn" : 65001,
        "password" : "XXXXXXXX"
      } ]
    }, {
      "uplinkVlan" : 2082,
      "uplinkInterfaceIP" : "192.168.17.2/24",
      "bgpPeers" : [ {
        "ip" : "192.168.17.10/24",
        "asn" : 65001,
        "password" : "XXXXXXXX"
      } ]
    } ]
  }, {
    "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" : "025b97aa-62ff-4e22-87b2-0d5a7a8622d2",
    "interRackCluster" : false,
    "uplinkNetwork" : [ {
      "uplinkVlan" : 2081,
      "uplinkInterfaceIP" : "192.168.16.3/24",
      "bgpPeers" : [ {
        "ip" : "192.168.16.10/24",
        "asn" : 65001,
        "password" : "XXXXXXXX"
      } ]
    }, {
      "uplinkVlan" : 2082,
      "uplinkInterfaceIP" : "192.168.17.3/24",
      "bgpPeers" : [ {
        "ip" : "192.168.17.10/24",
        "asn" : 65001,
        "password" : "XXXXXXXX"
      } ]
    } ]
  } ],
  "tier0RoutingType" : "EBGP",
  "tier0Name" : "Acme-Tier0",
  "tier1Name" : "Acme-Tier1",
  "edgeClusterProfileType" : "DEFAULT"
}

HTTP Response

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

{
  "id" : "46eb4662-7de6-4c20-b6d5-25172aa2cfb9",
  "description" : "@@Validating NSX Edge cluster creation spec@@",
  "executionStatus" : "IN_PROGRESS",
  "resultStatus" : "UNKNOWN",
  "validationChecks" : [ {
    "description" : "@@Validate Edge Node Management IP to FQDN Resolution@@",
    "resultStatus" : "UNKNOWN"
  }, {
    "description" : "@@Validate Distinct Uplink Interfaces per Edge Node@@",
    "resultStatus" : "UNKNOWN"
  }, {
    "description" : "@@Validate Tier-1 Gateway 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 IP Address Assigned to Same Subnet@@",
    "resultStatus" : "UNKNOWN"
  }, {
    "description" : "@@Validate Edge Node Overlay (TEP) IPs are Unique@@",
    "resultStatus" : "UNKNOWN"
  }, {
    "description" : "@@Validate Edge Cluster Name Does Not Exist@@",
    "resultStatus" : "UNKNOWN"
  }, {
    "description" : "@@Validate Management Network is Reachable@@",
    "resultStatus" : "UNKNOWN"
  }, {
    "description" : "@@Validate Edge Node Passwords Against NSX Password Policy@@",
    "resultStatus" : "UNKNOWN"
  }, {
    "description" : "@@Check for unique IPs for Edge management IP, Edge TEP IPs, Tier-0 uplink interface IPs & BGP Peer IPs across Edge Nodes.@@",
    "resultStatus" : "UNKNOWN"
  }, {
    "description" : "@@Validate that TEP IPs, gateway, and management IP, gateway are in the same subnet@@",
    "resultStatus" : "UNKNOWN"
  }, {
    "description" : "@@Validate Edge Cluster 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" : "@@Validate Edge Node FQDNs are Unique@@",
    "resultStatus" : "UNKNOWN"
  }, {
    "description" : "@@Validate L2 Non-Uniform and L3 Cluster@@",
    "resultStatus" : "UNKNOWN"
  }, {
    "description" : "@@Validate all vCenter clusters are either all stretched or none are stretched@@",
    "resultStatus" : "UNKNOWN"
  }, {
    "description" : "@@Validate IP Address Conflicts@@",
    "resultStatus" : "UNKNOWN"
  }, {
    "description" : "@@Validate Tier-0 Gateway Name Does Not Exist@@",
    "resultStatus" : "UNKNOWN"
  }, {
    "description" : "@@Validate vSphere Cluster Belongs to the Workload Domain@@",
    "resultStatus" : "UNKNOWN"
  }, {
    "description" : "@@Validate Uplink VLANs@@",
    "resultStatus" : "UNKNOWN"
  }, {
    "description" : "@@Validate Capacity for Hosting vSphere Cluster@@",
    "resultStatus" : "UNKNOWN"
  }, {
    "description" : "@@Validate Routing Between Host Overlay (TEP) and Edge Overlay (TEP)@@",
    "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/e971d665-e501-4b95-beec-66cbe5051247' -i -X GET \
    -H 'Accept: application/json' \
    -H 'Authorization: Bearer etYWRta....'

HTTP Request

GET /v1/edge-clusters/validations/e971d665-e501-4b95-beec-66cbe5051247 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: 3491

{
  "id" : "e971d665-e501-4b95-beec-66cbe5051247",
  "description" : "@@Validating NSX Edge cluster creation spec@@",
  "executionStatus" : "IN_PROGRESS",
  "resultStatus" : "UNKNOWN",
  "validationChecks" : [ {
    "description" : "@@Validate Edge Node Management IP to FQDN Resolution@@",
    "resultStatus" : "UNKNOWN"
  }, {
    "description" : "@@Validate Distinct Uplink Interfaces per Edge Node@@",
    "resultStatus" : "UNKNOWN"
  }, {
    "description" : "@@Validate Tier-1 Gateway 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 IP Address Assigned to Same Subnet@@",
    "resultStatus" : "UNKNOWN"
  }, {
    "description" : "@@Validate Edge Node Overlay (TEP) IPs are Unique@@",
    "resultStatus" : "UNKNOWN"
  }, {
    "description" : "@@Validate Edge Cluster Name Does Not Exist@@",
    "resultStatus" : "UNKNOWN"
  }, {
    "description" : "@@Validate Management Network is Reachable@@",
    "resultStatus" : "UNKNOWN"
  }, {
    "description" : "@@Validate Edge Node Passwords Against NSX Password Policy@@",
    "resultStatus" : "UNKNOWN"
  }, {
    "description" : "@@Check for unique IPs for Edge management IP, Edge TEP IPs, Tier-0 uplink interface IPs & BGP Peer IPs across Edge Nodes.@@",
    "resultStatus" : "UNKNOWN"
  }, {
    "description" : "@@Validate that TEP IPs, gateway, and management IP, gateway are in the same subnet@@",
    "resultStatus" : "UNKNOWN"
  }, {
    "description" : "@@Validate Edge Cluster 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" : "@@Validate Edge Node FQDNs are Unique@@",
    "resultStatus" : "UNKNOWN"
  }, {
    "description" : "@@Validate L2 Non-Uniform and L3 Cluster@@",
    "resultStatus" : "UNKNOWN"
  }, {
    "description" : "@@Validate all vCenter clusters are either all stretched or none are stretched@@",
    "resultStatus" : "UNKNOWN"
  }, {
    "description" : "@@Validate IP Address Conflicts@@",
    "resultStatus" : "UNKNOWN"
  }, {
    "description" : "@@Validate Tier-0 Gateway Name Does Not Exist@@",
    "resultStatus" : "UNKNOWN"
  }, {
    "description" : "@@Validate vSphere Cluster Belongs to the Workload Domain@@",
    "resultStatus" : "UNKNOWN"
  }, {
    "description" : "@@Validate Uplink VLANs@@",
    "resultStatus" : "UNKNOWN"
  }, {
    "description" : "@@Validate Capacity for Hosting vSphere Cluster@@",
    "resultStatus" : "UNKNOWN"
  }, {
    "description" : "@@Validate Routing Between Host Overlay (TEP) and Edge Overlay (TEP)@@",
    "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 of a single Edge cluster must all be unstretched clusters, or all stretched vSAN clusters. If they are hosted on stretched vSAN clusters, the Edge nodes are deployed to AZ1

  • 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

  • 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" : "XXXXXXXXXXXXXXXX",
  "edgeAdminPassword" : "XXXXXXXXXXXXXXXX",
  "edgeAuditPassword" : "XXXXXXXXXXXXXXXX",
  "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" : "025b97aa-62ff-4e22-87b2-0d5a7a8622d2",
    "interRackCluster" : false,
    "uplinkNetwork" : [ {
      "uplinkVlan" : 2081,
      "uplinkInterfaceIP" : "192.168.16.2/24",
      "bgpPeers" : [ {
        "ip" : "192.168.16.10/24",
        "asn" : 65001,
        "password" : "XXXXXXXX"
      } ]
    }, {
      "uplinkVlan" : 2082,
      "uplinkInterfaceIP" : "192.168.17.2/24",
      "bgpPeers" : [ {
        "ip" : "192.168.17.10/24",
        "asn" : 65001,
        "password" : "XXXXXXXX"
      } ]
    } ]
  }, {
    "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" : "025b97aa-62ff-4e22-87b2-0d5a7a8622d2",
    "interRackCluster" : false,
    "uplinkNetwork" : [ {
      "uplinkVlan" : 2081,
      "uplinkInterfaceIP" : "192.168.16.3/24",
      "bgpPeers" : [ {
        "ip" : "192.168.16.10/24",
        "asn" : 65001,
        "password" : "XXXXXXXX"
      } ]
    }, {
      "uplinkVlan" : 2082,
      "uplinkInterfaceIP" : "192.168.17.3/24",
      "bgpPeers" : [ {
        "ip" : "192.168.17.10/24",
        "asn" : 65001,
        "password" : "XXXXXXXX"
      } ]
    } ]
  } ],
  "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: 2085
Host: sfo-vcf01.rainpole.io
Authorization: Bearer etYWRta....

{
  "edgeClusterName" : "sfo-w01-cl01-edge",
  "edgeClusterType" : "NSX-T",
  "edgeRootPassword" : "XXXXXXXXXXXXXXXX",
  "edgeAdminPassword" : "XXXXXXXXXXXXXXXX",
  "edgeAuditPassword" : "XXXXXXXXXXXXXXXX",
  "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" : "025b97aa-62ff-4e22-87b2-0d5a7a8622d2",
    "interRackCluster" : false,
    "uplinkNetwork" : [ {
      "uplinkVlan" : 2081,
      "uplinkInterfaceIP" : "192.168.16.2/24",
      "bgpPeers" : [ {
        "ip" : "192.168.16.10/24",
        "asn" : 65001,
        "password" : "XXXXXXXX"
      } ]
    }, {
      "uplinkVlan" : 2082,
      "uplinkInterfaceIP" : "192.168.17.2/24",
      "bgpPeers" : [ {
        "ip" : "192.168.17.10/24",
        "asn" : 65001,
        "password" : "XXXXXXXX"
      } ]
    } ]
  }, {
    "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" : "025b97aa-62ff-4e22-87b2-0d5a7a8622d2",
    "interRackCluster" : false,
    "uplinkNetwork" : [ {
      "uplinkVlan" : 2081,
      "uplinkInterfaceIP" : "192.168.16.3/24",
      "bgpPeers" : [ {
        "ip" : "192.168.16.10/24",
        "asn" : 65001,
        "password" : "XXXXXXXX"
      } ]
    }, {
      "uplinkVlan" : 2082,
      "uplinkInterfaceIP" : "192.168.17.3/24",
      "bgpPeers" : [ {
        "ip" : "192.168.17.10/24",
        "asn" : 65001,
        "password" : "XXXXXXXX"
      } ]
    } ]
  } ],
  "tier0RoutingType" : "EBGP",
  "tier0Name" : "Acme-Tier0",
  "tier1Name" : "Acme-Tier1",
  "edgeClusterProfileType" : "DEFAULT"
}

HTTP Response

HTTP/1.1 202 Accepted
Content-Type: application/json
Location: /v1/tasks/c3ebe5e9-1b29-4d40-b125-b6f96c032bcb
Content-Length: 168

{
  "id" : "c3ebe5e9-1b29-4d40-b125-b6f96c032bcb",
  "name" : "Add a NSX edge cluster",
  "status" : "IN_PROGRESS",
  "creationTimestamp" : "2023-05-22T06:27:04.176Z"
}
  • 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 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" : "048147bf-a992-4787-b910-cc2cae07e752",
    "name" : "sfo-m01-ecp01",
    "clusters" : [ {
      "id" : "025b97aa-62ff-4e22-87b2-0d5a7a8622d2"
    } ],
    "nsxtCluster" : {
      "id" : "3363a45d-688b-45ea-aa42-0a6fb581729d",
      "vipFqdn" : "sfo-m01-ecp01.rainpole.io",
      "vip" : "10.0.0.30"
    },
    "edgeNodes" : [ {
      "id" : "6a8a870f-a469-4bd3-8a6d-495427a4c3b1",
      "hostName" : "sfo-m01-en01.rainpole.io"
    }, {
      "id" : "43e774e6-059b-423a-9fba-513495ef837f",
      "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/bf3703b7-237d-4854-824d-1ba5411ea107' -i -X GET \
    -H 'Accept: application/json' \
    -H 'Authorization: Bearer etYWRta....'

HTTP Request

GET /v1/edge-clusters/bf3703b7-237d-4854-824d-1ba5411ea107 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" : "39531696-f1f4-4c6a-92fc-a5369911c284",
  "name" : "sfo-m01-ecp01",
  "clusters" : [ {
    "id" : "025b97aa-62ff-4e22-87b2-0d5a7a8622d2"
  } ],
  "nsxtCluster" : {
    "id" : "6940eb0c-afaf-4faa-b467-0cbe4f13a61a",
    "vipFqdn" : "sfo-m01-ecp01.rainpole.io",
    "vip" : "10.0.0.30"
  },
  "edgeNodes" : [ {
    "id" : "b05f6d31-8abc-4e63-b405-c022cedff394",
    "hostName" : "sfo-m01-en01.rainpole.io"
  }, {
    "id" : "5dc7ac82-624b-41a9-bbbd-14feb06ba921",
    "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 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" : "XXXXXXXXXXXXXXXX",
    "edgeNodeAdminPassword" : "XXXXXXXXXXXXXXXX",
    "edgeNodeAuditPassword" : "XXXXXXXXXXXXXXXX",
    "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" : "XXXXXXXX"
        } ]
      }, {
        "uplinkVlan" : 2082,
        "uplinkInterfaceIP" : "192.168.17.34/24",
        "bgpPeers" : [ {
          "ip" : "192.168.17.10/24",
          "asn" : 65001,
          "password" : "XXXXXXXX"
        } ]
      } ],
      "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: 1181
Host: sfo-vcf01.rainpole.io
Authorization: Bearer etYWRta....

{
  "edgeClusterExpansionSpec" : {
    "edgeNodeRootPassword" : "XXXXXXXXXXXXXXXX",
    "edgeNodeAdminPassword" : "XXXXXXXXXXXXXXXX",
    "edgeNodeAuditPassword" : "XXXXXXXXXXXXXXXX",
    "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" : "XXXXXXXX"
        } ]
      }, {
        "uplinkVlan" : 2082,
        "uplinkInterfaceIP" : "192.168.17.34/24",
        "bgpPeers" : [ {
          "ip" : "192.168.17.10/24",
          "asn" : 65001,
          "password" : "XXXXXXXX"
        } ]
      } ],
      "firstNsxVdsUplink" : "uplink1",
      "secondNsxVdsUplink" : "uplink2"
    } ]
  },
  "operation" : "EXPANSION"
}

HTTP Response

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

{
  "id" : "a6f3820c-05c3-4ed4-af4d-b604fdf6f468",
  "description" : "@@Validating NSX Edge cluster update spec@@",
  "executionStatus" : "IN_PROGRESS",
  "resultStatus" : "UNKNOWN",
  "validationChecks" : [ {
    "description" : "@@Validate Edge Node Management IP to FQDN Resolution@@",
    "resultStatus" : "UNKNOWN"
  }, {
    "description" : "@@Validate Distinct Uplink Interfaces per Edge Node@@",
    "resultStatus" : "UNKNOWN"
  }, {
    "description" : "@@Validate Tier-1 Gateway 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 IP Address Assigned to Same Subnet@@",
    "resultStatus" : "UNKNOWN"
  }, {
    "description" : "@@Validate Edge Node Overlay (TEP) IPs are Unique@@",
    "resultStatus" : "UNKNOWN"
  }, {
    "description" : "@@Validate Management Network is Reachable@@",
    "resultStatus" : "UNKNOWN"
  }, {
    "description" : "@@Validate Edge Node Passwords Against NSX Password Policy@@",
    "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" : "@@Validate 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" : "@@Validate L2 Non-Uniform and L3 Cluster@@",
    "resultStatus" : "UNKNOWN"
  }, {
    "description" : "@@Validate IP Address Conflicts@@",
    "resultStatus" : "UNKNOWN"
  }, {
    "description" : "@@Validate vSphere Cluster Belongs to the Workload Domain@@",
    "resultStatus" : "UNKNOWN"
  }, {
    "description" : "@@Validate Uplink VLANs@@",
    "resultStatus" : "UNKNOWN"
  }, {
    "description" : "@@Validate Capacity for Hosting vSphere Cluster@@",
    "resultStatus" : "UNKNOWN"
  }, {
    "description" : "@@Compliance checks for Edge cluster expansion spec@@",
    "resultStatus" : "UNKNOWN"
  }, {
    "description" : "@@Validate Routing Between Host Overlay (TEP) and Edge Overlay (TEP)@@",
    "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 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" : "XXXXXXXX",
    "edgeNodeAdminPassword" : "XXXXXXXX",
    "edgeNodeAuditPassword" : "XXXXXXXX",
    "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" : "XXXXXXXX"
        } ]
      }, {
        "uplinkVlan" : 2082,
        "uplinkInterfaceIP" : "192.168.17.14/24",
        "bgpPeers" : [ {
          "ip" : "192.168.17.10/24",
          "asn" : 65001,
          "password" : "XXXXXXXX"
        } ]
      } ]
    } ],
    "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: 1112
Host: sfo-vcf01.rainpole.io
Authorization: Bearer etYWRta....

{
  "edgeClusterExpansionSpec" : {
    "edgeNodeRootPassword" : "XXXXXXXX",
    "edgeNodeAdminPassword" : "XXXXXXXX",
    "edgeNodeAuditPassword" : "XXXXXXXX",
    "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" : "XXXXXXXX"
        } ]
      }, {
        "uplinkVlan" : 2082,
        "uplinkInterfaceIP" : "192.168.17.14/24",
        "bgpPeers" : [ {
          "ip" : "192.168.17.10/24",
          "asn" : 65001,
          "password" : "XXXXXXXX"
        } ]
      } ]
    } ],
    "additionalTier1Names" : [ ]
  },
  "operation" : "EXPANSION"
}

HTTP Response

HTTP/1.1 202 Accepted
Content-Type: application/json
Location: /v1/tasks/4d13eed8-6e89-41d1-85f0-34abb5b1d9ab
Content-Length: 172

{
  "id" : "4d13eed8-6e89-41d1-85f0-34abb5b1d9ab",
  "name" : "Update an NSX Edge Cluster",
  "status" : "IN_PROGRESS",
  "creationTimestamp" : "2023-05-22T06:27:02.890Z"
}

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" : "XXXXXXXX",
    "edgeNodeAdminPassword" : "XXXXXXXX",
    "edgeNodeAuditPassword" : "XXXXXXXX",
    "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" : "XXXXXXXX"
        } ]
      }, {
        "uplinkVlan" : 2082,
        "uplinkInterfaceIP" : "192.168.17.14/24",
        "bgpPeers" : [ {
          "ip" : "192.168.17.10/24",
          "asn" : 65001,
          "password" : "XXXXXXXX"
        } ]
      } ]
    } ],
    "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: 1112
Host: sfo-vcf01.rainpole.io
Authorization: Bearer etYWRta....

{
  "edgeClusterExpansionSpec" : {
    "edgeNodeRootPassword" : "XXXXXXXX",
    "edgeNodeAdminPassword" : "XXXXXXXX",
    "edgeNodeAuditPassword" : "XXXXXXXX",
    "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" : "XXXXXXXX"
        } ]
      }, {
        "uplinkVlan" : 2082,
        "uplinkInterfaceIP" : "192.168.17.14/24",
        "bgpPeers" : [ {
          "ip" : "192.168.17.10/24",
          "asn" : 65001,
          "password" : "XXXXXXXX"
        } ]
      } ]
    } ],
    "additionalTier1Names" : [ ]
  },
  "operation" : "EXPANSION"
}

HTTP Response

HTTP/1.1 202 Accepted
Content-Type: application/json
Location: /v1/tasks/633973fa-5755-47a1-a1ae-12e869ff33a7
Content-Length: 172

{
  "id" : "633973fa-5755-47a1-a1ae-12e869ff33a7",
  "name" : "Update an NSX Edge Cluster",
  "status" : "IN_PROGRESS",
  "creationTimestamp" : "2023-05-22T06:27:02.431Z"
}
  • 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

  • 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 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: 923

{
  "id" : "bd4a16d9-f02c-4038-823a-c1477fe23474",
  "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 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

  • 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 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/45d538dc-c35b-40fe-8dbe-597ea1b6af56
Content-Length: 172

{
  "id" : "45d538dc-c35b-40fe-8dbe-597ea1b6af56",
  "name" : "Update an NSX Edge Cluster",
  "status" : "IN_PROGRESS",
  "creationTimestamp" : "2023-05-22T06:27:03.891Z"
}
  • 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 2023-05-21 23:30:49 PDT

Operations



[{"label":"Latest (5.0.0)","version":"latest"},{"version":"4.5.1"},{"version":"4.5.0"},{"version":"4.4.0"},{"version":"4.3.1"},{"link":"https://developer.vmware.com/apis/1126/vmware-cloud-foundation","version":"4.3"},{"link":"https://developer.vmware.com/apis/1077/vmware-cloud-foundation","version":"4.2"},{"link":"https://developer.vmware.com/apis/1032/vmware-cloud-foundation","version":"4.1"},{"link":"https://developer.vmware.com/apis/1002/vmware-cloud-foundation","version":"4.0.1"},{"link":"https://developer.vmware.com/apis/921/vmware-cloud-foundation","version":"4.0"},{"link":"https://developer.vmware.com/apis/925/vmware-cloud-foundation","version":"3.10"},{"link":"https://developer.vmware.com/apis/891/vmware-cloud-foundation","version":"3.9.1"},{"link":"https://developer.vmware.com/apis/723/vmware-cloud-foundation","version":"3.9.0"},{"link":"https://developer.vmware.com/apis/711/vmware-cloud-foundation","version":"3.8.1"},{"link":"https://developer.vmware.com/apis/685/vmware-cloud-foundation","version":"3.8"}]
vcf
Feedback

Was this page helpful?