An external network is a reference to a portgroup on a vCenter server attached to vCloud Director. To create an external network, a system administrator must specify the vCenter server and a portgroup associated with it. External networks provide support for bridged organization networks.

Only a system administrator can create an external network. A system administrator can modify an external network to change properties such as its description, but cannot change the portgroup that backs the network. An organization administrator can retrieve a read-only representation of an external network to examine its properties.

Verify that you are logged in to the vCloud API as a system administrator.

Retrieve the list of available portgroups. See Retrieve a List of Available Portgroups and Switches from a vCenter Server.

1

Retrieve the XML representation of the vSphere platform extensions.

Use a request like this one.

GET https://vcloud.example.com/api/admin/extension
2

Examine the response to locate the Link element that contains the URL for adding external networks to the cloud.

This element has a rel attribute value of add and a type attribute value of application/vnd.vmware.admin.vmwexternalnet+xml, as shown here:

<Link
   type="application/vnd.vmware.admin.vmwexternalnet+xml"
   rel="add"
   href="https://vcloud.example.com/api/admin/extension/externalnets"/>
3

Choose a vCenter server to provide a portgroup for the network.

4

Create a VMWExternalNetwork element that specifies the properties of the external network.

These properties include the portgroup you specified in Step 3.

5

POST the VMWExternalNetwork element you created in Step 4 to the URL described in Step 2.

See the request portion of Example: Create an External Network.

The server creates the external network and returns a VMWExternalNetwork element that includes the contents you POSTed, along with a set of Link elements that you can use to access, remove, disable, or modify it. A reference to the new external network is added to the VMWExternalNetworkReferences element of the VCloud. The portgroup you specified is removed from the VimObjectRefList of the vCenter server.

This request creates an external network backed by a portgroup listed in the response portion of Retrieve a List of Available Portgroups and Switches from a vCenter Server.

Request:

POST https://vcloud.example.com/api/admin/extension/externalnets
Content-Type: application/vnd.vmware.admin.vmwexternalnet+xml
...
<?xml version="1.0" encoding="UTF-8"?>
<vmext:VMWExternalNetwork
   xmlns:vmext="http://www.vmware.com/vcloud/extension/v1.5"
   xmlns:vcloud="http://www.vmware.com/vcloud/v1.5"
   name="example-extnet"
   type="application/vnd.vmware.admin.vmwexternalnet+xml">
   <vcloud:Description>ExternalNet</vcloud:Description>
   <vcloud:Configuration>
      <vcloud:IpScopes>
         <vcloud:IpScope>
            <vcloud:IsInherited>false</vcloud:IsInherited>
            <vcloud:Gateway>10.24.64.126</vcloud:Gateway>
            <vcloud:Netmask>255.255.255.192</vcloud:Netmask>
            <vcloud:Dns1>10.115.120.71</vcloud:Dns1>
            <vcloud:Dns2>10.6.64.29</vcloud:Dns2>
            <vcloud:DnsSuffix>example.com</vcloud:DnsSuffix>
         </vcloud:IpScope>
      </vcloud:IpScopes>
      <vcloud:FenceMode>isolated</vcloud:FenceMode>
   </vcloud:Configuration>
   <vmext:VimPortGroupRef>
      <vmext:VimServerRef
         href="https://vcloud.example.com/api/admin/extension/vimServer/9" />
      <vmext:MoRef>network-175</vmext:MoRef>
      <vmext:VimObjectType>NETWORK</vmext:VimObjectType>
   </vmext:VimPortGroupRef>
</vmext:VMWExternalNetwork>

The response includes a Task that tracks the creation of the network, and a set of Link elements that you can use to operate on or modify it.

Response:

201 Created
Content-Type: application/vnd.vmware.admin/vmwexternalnet+xml
...
<vmext:VMWExternalNetwork
   xmlns:vmext="http://www.vmware.com/vcloud/extension/v1.5"
   xmlns:vcloud="http://www.vmware.com/vcloud/v1.5"
   name="example-extnet"
   id="urn:vcloud:network:85"
   type="application/vnd.vmware.admin.vmwexternalnet+xml"
   href="https://vcloud.example.com/api/admin/extension/externalnet/85"... >
   <vcloud:Link
      rel="alternate"
      type="application/vnd.vmware.admin.network+xml"
      href="https://vcloud.example.com/api/admin/network/85" />
   <vcloud:Link
      rel="edit"
      type="application/vnd.vmware.admin.vmwexternalnet+xml"
      href="https://vcloud.example.com/api/admin/extension/externalnet/85" />
   <vcloud:Link
      rel="remove"
      href="https://vcloud.example.com/api/admin/extension/externalnet/85" />
   <vcloud:Link
      rel="up"
      type="application/vnd.vmware.admin.vmwExternalNetworkReferences+xml"
      href="https://vcloud.example.com/api/admin/extension/externalNetworkReferences" />
   <vcloud:Link
      rel="repair"
      type="application/vnd.vmware.admin.network+xml"
      href="https://vcloud.example.com/api/admin/network/85/action/reset" />
   <vcloud:Description>ExternalNet</vcloud:Description>
   <vcloud:Tasks>
      <vcloud:Task
         status="running"
         startTime="2011-03-10T06:08:31.506-08:00"
         operationName="_network_create_provider_network"
         operation="Busy Network example-extnet(85)" ... >
         ...
       </vcloud:Task>
   </vcloud:Tasks>
   <vcloud:Configuration>
      <vcloud:IpScope>
         <vcloud:IsInherited>false</vcloud:IsInherited>
         <vcloud:Gateway>10.24.64.126</vcloud:Gateway>
         <vcloud:Netmask>255.255.255.192</vcloud:Netmask>
         <vcloud:Dns1>10.115.120.71</vcloud:Dns1>
         <vcloud:Dns2>10.6.64.29</vcloud:Dns2>
         <vcloud:DnsSuffix>eng.vmware.com</vcloud:DnsSuffix>
      </vcloud:IpScope>
      <vcloud:FenceMode>isolated</vcloud:FenceMode>
   </vcloud:Configuration>
   <vmext:VimPortGroupRef>
      <vmext:VimServerRef
         type="application/vnd.vmware.admin.vmwvirtualcenter+xml"
         href="https://vcloud.example.com/api/admin/extension/vimServer/9" />
      <vmext:MoRef>network-175</vmext:MoRef>
      <vmext:VimObjectType>NETWORK</vmext:VimObjectType>
   </vmext:VimPortGroupRef>
</vmext:VMWExternalNetwork>