Feature Reference

CLOUDSTACK-9806 - Getting issue details... STATUS






When deploying CloudStack with Nuage VSP (Virtualized Services Plugin/Platform), the Cloud/Network Administrator has the ability to define “Domain Templates” in the Nuage VSP Platform and reuse (and instantiate) those when creating networks inside CloudStack. This allows for predefining advanced networking topologies in the SDN platform, and integrate those seamlessly within the CloudStack workflows, without the need of porting all those SDN capabilities (e.g. GRT leaking, Advanced ACL’s, Service Chaining, ...) into CloudStack.

Today this mechanism works via global settings and allows for one Nuage VSP Domain Template to be specified per CloudStack Network type (Shared, Isolated, VPC). This is fine for most deployments but it doesn’t leave room for hybrid deployments in which different CloudStack networks need individually differentiated SDN capabilities. Especially for VPC’s it would be nice to have finer grained domain template control.

With the proposed new features, we add the ability to configure a domain template per VPC, i.e. each VPC created in CloudStack can be configured with a different domain template. We will make this option accessible through the UI also, but applicable to Nuage supporting zones only.

Use cases

As a Cloud/Network Administrator, I want to be able to configure Domain Templates in the Nuage VSP platform, containing pre-defined networking constructs such as basic ACLs and/or other domain level SDN configuration.

As a CloudStack User, when creating a VPC from Cloudstack, I want to be able to pick and choose a Domain Template (optionally). If I select a Domain Template, the selected Domain Template will be used to instantiate the domain instance in the Nuage VSP platform, upon creating the VPC.

User Stories
  • As CloudStack API user, I can create a VPC and link it to a predefined Domain Template in Nuage VSP.

  • As a CloudStack UI user, I can select a domain template from a dropdown list when creating a VPC. Only the domain templates created directly in Nuage VSP are shown in the dropdown list.

Core extensions


API extensions

We are adding Nuage specific API support for linking a particular VPC with a preconfigured domain template, in order to make it selectable per VPC. There are no ACS Core API’s changes.

  • listNuageVspDomainTemplates : This API will list all domain templates configured in the VSP under a certain enterprise. Only the name and description will be returned.

    • Required parameters :

      • domainid : the UUID of the CloudStack domain

    • Optional parameters:

      • physicalnetworkid : the UUID of the physical network. This parameter is required if no zoneid is provided.

      • zoneid: The UUID of the zone containing the VPC. This parameter is required if no physicalNetworkID is provided.

      • Keyword: templates filtered on the given keyword (check if domain template name contains keyword)

  • associateNuageVspDomainTemplate : This API will associate a preconfigured domain template with the given VPC. It must be invoked after VPC creation, but prior to VPC tier creation.

    • Required parameters :

      • vpcid : The UUID of the VPC

      • domaintemplate : The name of the domain template to be linked with

    • Failure cases :

      • We will check if the given domain template exists in the VSP, if this domain template doesn’t exist, association will fail.

      • If the VPC already has a tier configured, association will fail since updating the domain template is not possible.

Internally, we use metadata for storing the VPC-associated domain template, i.e. store the info in “vpc_details” table. Hence no changes to ACS core are needed. When implementing the first tier of a VPC, the name of the preconfigured domain template is retrieved from the VPC metadata. If a VPC has metadata called “nuagevsp.vpc.domaintemplate.name”, we will use this value in order to look up the domain template. This value can be different for each VPC. When the selected domain template doesn’t exist in Nuage VSP, tier creation will fail and an exception will be thrown. The tier however will stay in allocated state (normal ACS behaviour) and the user will need to manually delete the tier or make the domain template available on the VSD.

For backwards-compatibility, we are keeping the existing global setting called “nuagevsp.vpc.domaintemplate.name”, this will be the default value throughout the system. This means that in the ui, if the global setting is set, the checkbox “use preconfigured domain template” is automatically checked and the first value shown in the drop down list is the global domain template (see below for UI changes).

UI extension

Selecting a Domain Template when creating a VPC can be done from within the CloudStack UI as long as you choose a zone which supports Nuage. If the Zone does not support Nuage, the UI changes are not visible.

We will add a new dropdown (accompanied by a checkbox), which will be filled with the returned values of the above mentioned listNuageVspDomainTemplates API call if the user chooses a zone with Nuage for the VPC. When the user clicks on the “OK” button during VPC creation, the UI will submit the  associateNuageVspVpcDomainTemplate API call next to VPC creation itself, to register the value selected in the dropdown as metadata value for this VPC. If the domain template is not valid, the creation of the VPC will be rolled back. In the case, when the domain template does not exist anymore at Tier creation, an error is shown in the UI. To resolve this error the user has to delete his VPC and create a new one with another existing domain template.

Below two screenshots indicate what the user will see when creating a VPC in a zone MyZone which has Nuage support (and in which case at least one pre-configured domain template is present in the Nuage VSP platform).

In case the Zone is a native VR zone or is any zone without Nuage support, or in case no domain domain template is present inside the Nuage VSP platform, the UI comes unchanged, as is shown below.

  • No labels