Merge pull request #17 from phillipkent/dev_add_urllib_safe_option

Add note in dev.rst about use of the safe option in urllib.quote_plus()
diff --git a/rtd/source/_static/images/cloudian-s3_ss_cache.png b/rtd/source/_static/images/cloudian-s3_ss_cache.png
new file mode 100644
index 0000000..5d97186
--- /dev/null
+++ b/rtd/source/_static/images/cloudian-s3_ss_cache.png
Binary files differ
diff --git a/rtd/source/_static/images/cloudian-s3_ss_config.png b/rtd/source/_static/images/cloudian-s3_ss_config.png
new file mode 100644
index 0000000..3ad273a
--- /dev/null
+++ b/rtd/source/_static/images/cloudian-s3_ss_config.png
Binary files differ
diff --git a/rtd/source/_static/images/cloudian-ss_globalopt.png b/rtd/source/_static/images/cloudian-ss_globalopt.png
new file mode 100644
index 0000000..d1b9272
--- /dev/null
+++ b/rtd/source/_static/images/cloudian-ss_globalopt.png
Binary files differ
diff --git a/rtd/source/_static/images/cloudian-tab.png b/rtd/source/_static/images/cloudian-tab.png
new file mode 100644
index 0000000..57383e8
--- /dev/null
+++ b/rtd/source/_static/images/cloudian-tab.png
Binary files differ
diff --git a/rtd/source/_static/images/nuage_iso_net_off.png b/rtd/source/_static/images/nuage_iso_net_off.png
new file mode 100644
index 0000000..2ebb03b
--- /dev/null
+++ b/rtd/source/_static/images/nuage_iso_net_off.png
Binary files differ
diff --git a/rtd/source/_static/images/nuage_kvm_traffic_label.jpg b/rtd/source/_static/images/nuage_kvm_traffic_label.jpg
new file mode 100644
index 0000000..e81c0f5
--- /dev/null
+++ b/rtd/source/_static/images/nuage_kvm_traffic_label.jpg
Binary files differ
diff --git a/rtd/source/_static/images/nuage_sha_net_off.png b/rtd/source/_static/images/nuage_sha_net_off.png
new file mode 100644
index 0000000..71ddcfc
--- /dev/null
+++ b/rtd/source/_static/images/nuage_sha_net_off.png
Binary files differ
diff --git a/rtd/source/_static/images/nuage_source_nat_net_off.png b/rtd/source/_static/images/nuage_source_nat_net_off.png
new file mode 100644
index 0000000..00f7955
--- /dev/null
+++ b/rtd/source/_static/images/nuage_source_nat_net_off.png
Binary files differ
diff --git a/rtd/source/_static/images/nuage_underlay_api_usage.png b/rtd/source/_static/images/nuage_underlay_api_usage.png
new file mode 100644
index 0000000..6761dc8
--- /dev/null
+++ b/rtd/source/_static/images/nuage_underlay_api_usage.png
Binary files differ
diff --git a/rtd/source/_static/images/nuage_vmware_traffic_label.jpg b/rtd/source/_static/images/nuage_vmware_traffic_label.jpg
new file mode 100644
index 0000000..6f7a7c1
--- /dev/null
+++ b/rtd/source/_static/images/nuage_vmware_traffic_label.jpg
Binary files differ
diff --git a/rtd/source/_static/images/nuage_vpc_net_off.png b/rtd/source/_static/images/nuage_vpc_net_off.png
new file mode 100644
index 0000000..b45e8fe
--- /dev/null
+++ b/rtd/source/_static/images/nuage_vpc_net_off.png
Binary files differ
diff --git a/rtd/source/_static/images/nuage_vpc_off.png b/rtd/source/_static/images/nuage_vpc_off.png
new file mode 100644
index 0000000..a353e2f
--- /dev/null
+++ b/rtd/source/_static/images/nuage_vpc_off.png
Binary files differ
diff --git a/rtd/source/_static/images/nuage_vsd_device_add.png b/rtd/source/_static/images/nuage_vsd_device_add.png
new file mode 100644
index 0000000..60513d2
--- /dev/null
+++ b/rtd/source/_static/images/nuage_vsd_device_add.png
Binary files differ
diff --git a/rtd/source/_static/images/nuage_vsp_isolation_method_setting.png b/rtd/source/_static/images/nuage_vsp_isolation_method_setting.png
new file mode 100644
index 0000000..9dabf9a
--- /dev/null
+++ b/rtd/source/_static/images/nuage_vsp_isolation_method_setting.png
Binary files differ
diff --git a/rtd/source/_static/images/nuage_vsp_nsp_enable.png b/rtd/source/_static/images/nuage_vsp_nsp_enable.png
new file mode 100644
index 0000000..df7f0b4
--- /dev/null
+++ b/rtd/source/_static/images/nuage_vsp_nsp_enable.png
Binary files differ
diff --git a/rtd/source/_static/images/nuage_vsp_nsp_status.png b/rtd/source/_static/images/nuage_vsp_nsp_status.png
new file mode 100644
index 0000000..c8dd02e
--- /dev/null
+++ b/rtd/source/_static/images/nuage_vsp_nsp_status.png
Binary files differ
diff --git a/rtd/source/_static/images/nuage_vsp_vpc_off.png b/rtd/source/_static/images/nuage_vsp_vpc_off.png
new file mode 100644
index 0000000..b1c4f29
--- /dev/null
+++ b/rtd/source/_static/images/nuage_vsp_vpc_off.png
Binary files differ
diff --git a/rtd/source/ansible.rst b/rtd/source/ansible.rst
index 6be0134..0493923 100644
--- a/rtd/source/ansible.rst
+++ b/rtd/source/ansible.rst
@@ -294,7 +294,7 @@
 
    - name: Ensure vhdutil is in correct location
 
-     get\_url: url=http://download.cloud.com.s3.amazonaws.com/tools/vhd-util dest=/usr/share/cloudstack-common/scripts/vm/hypervisor/xenserver/vhd-util mode=0755
+     get\_url: url=https://download.cloudstack.org/tools/vhd-util dest=/usr/share/cloudstack-common/scripts/vm/hypervisor/xenserver/vhd-util mode=0755
 
 
 Save this as `/etc/ansible/roles/cloudstack-management/tasks/main.yml`
@@ -355,13 +355,13 @@
 
    - name: Seed secondary storage
      command:
-   /usr/share/cloudstack-common/scripts/storage/secondary/cloud-install-sys-tmplt -m {{ tmp\_nfs\_path }} -u http://download.cloud.com/templates/4.2/systemvmtemplate-2013-06-12-master-kvm.qcow2.bz2 -h kvm -F
+   /usr/share/cloudstack-common/scripts/storage/secondary/cloud-install-sys-tmplt -m {{ tmp\_nfs\_path }} -u https://download.cloudstack.org/templates/4.2/systemvmtemplate-2013-06-12-master-kvm.qcow2.bz2 -h kvm -F
 
      command:
-   /usr/share/cloudstack-common/scripts/storage/secondary/cloud-install-sys-tmplt -m {{ tmp\_nfs\_path }} -u http://download.cloud.com/templates/4.2/systemvmtemplate-2013-07-12-master-xen.vhd.bz2 -h xenserver -F
+   /usr/share/cloudstack-common/scripts/storage/secondary/cloud-install-sys-tmplt -m {{ tmp\_nfs\_path }} -u https://download.cloudstack.org/templates/4.2/systemvmtemplate-2013-07-12-master-xen.vhd.bz2 -h xenserver -F
 
      command:
-   /usr/share/cloudstack-common/scripts/storage/secondary/cloud-install-sys-tmplt -m {{ tmp\_nfs\_path }} -u http://download.cloud.com/templates/4.2/systemvmtemplate-4.2-vh7.ov -h vmware -F
+   /usr/share/cloudstack-common/scripts/storage/secondary/cloud-install-sys-tmplt -m {{ tmp\_nfs\_path }} -u https://download.cloudstack.org/templates/4.2/systemvmtemplate-4.2-vh7.ov -h vmware -F
 
 
 Save this as `/etc/ansible/roles/cloudstack-manager/tasks/seedstorage.yml`
diff --git a/rtd/source/concepts.rst b/rtd/source/concepts.rst
index e3ea3b8..d61e8c5 100644
--- a/rtd/source/concepts.rst
+++ b/rtd/source/concepts.rst
@@ -141,7 +141,7 @@
 deployment.
 
 The management server typically runs on a dedicated machine or as a virtual 
-machine.  It controls allocation of virtual machines to hosts and assigns 
+machine. It controls allocation of virtual machines to hosts and assigns 
 storage and IP addresses to the virtual machine instances. The Management 
 Server runs in an Apache Tomcat container and requires a MySQL database for 
 persistence.
diff --git a/rtd/source/conf.py b/rtd/source/conf.py
index f99e2ee..1fc6e29 100644
--- a/rtd/source/conf.py
+++ b/rtd/source/conf.py
@@ -63,16 +63,16 @@
 
 # General information about the project.
 project = u'Apache CloudStack'
-copyright = u'2016, Apache CloudStack'
+copyright = u'2017, Apache CloudStack'
 
 # The version info for the project you're documenting, acts as replacement for
 # |version| and |release|, also used in various other places throughout the
 # built documents.
 #
 # The short X.Y version.
-version = '4.8'
+version = '4.11'
 # The full version, including alpha/beta/rc tags.
-release = '4.8.0'
+release = '4.11.0'
 
 # The language for content autogenerated by Sphinx. Refer to documentation
 # for a list of supported languages.
diff --git a/rtd/source/index.rst b/rtd/source/index.rst
index 1502896..1788da7 100644
--- a/rtd/source/index.rst
+++ b/rtd/source/index.rst
@@ -19,8 +19,8 @@
    contain the root `toctree` directive.
 
 
-Welcome to CloudStack Documentation !
-=====================================
+Welcome to CloudStack Documentation!
+====================================
 
 .. figure:: /_static/images/acslogo.png
    :align: center
@@ -32,8 +32,8 @@
 Introduction
 ------------
 
-If you are new to CloudStack you should go through this short introduction on 
-concepts and terminology before proceeding to the installation or 
+If you are new to CloudStack, you should go through this short introduction on
+concepts and terminology before proceeding to the installation or
 administration guides.
 
 .. toctree::
@@ -45,21 +45,33 @@
 Navigating the docs
 -------------------
 
-Now that you have gone over the basic concepts of CloudStack you are ready to 
+Now that you have gone over the basic concepts of CloudStack you are ready to
 dive into installation and operation documentation.
 
--  `Installation Guide 
+-  `Installation Guide
    <http://docs.cloudstack.apache.org/projects/cloudstack-installation>`_
 
--  `Administration Guide 
+-  `Administration Guide
    <http://docs.cloudstack.apache.org/projects/cloudstack-administration>`_
 
--  `Release Notes 
+-  `Release Notes
    <http://docs.cloudstack.apache.org/projects/cloudstack-release-notes>`_
 
-Below you will find very specific documentation on advanced networking_ which 
-you can skip if you are just getting started. Developers will also find below 
-a short developers_ guide. 
+Below you will find very specific documentation on advanced networking_ which
+you can skip if you are just getting started. Developers will also find below
+a short developers_ guide.
+
+
+.. _integrations:
+
+Integration Guides
+------------------
+
+.. toctree::
+   :maxdepth: 2
+
+   integration/cloudian-connector.rst
+
 
 .. _networking:
 
@@ -72,12 +84,12 @@
 
    networking/nicira-plugin
    networking/nuage-plugin
-   networking/midonet
    networking/vxlan.rst
    networking/ovs-plugin
    networking/ipv6
    networking/autoscale_without_netscaler.rst
 
+
 .. _developers:
 
 
diff --git a/rtd/source/integration/cloudian-connector.rst b/rtd/source/integration/cloudian-connector.rst
new file mode 100644
index 0000000..58bb170
--- /dev/null
+++ b/rtd/source/integration/cloudian-connector.rst
@@ -0,0 +1,473 @@
+.. Licensed to the Apache Software Foundation (ASF) under one
+   or more contributor license agreements.  See the NOTICE file
+   distributed with this work for additional information#
+   regarding copyright ownership.  The ASF licenses this file
+   to you under the Apache License, Version 2.0 (the
+   "License"); you may not use this file except in compliance
+   with the License.  You may obtain a copy of the License at
+   http://www.apache.org/licenses/LICENSE-2.0
+   Unless required by applicable law or agreed to in writing,
+   software distributed under the License is distributed on an
+   "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+   KIND, either express or implied.  See the License for the
+   specific language governing permissions and limitations
+   under the License.
+
+
+The Cloudian Connector Plugin
+=============================
+
+Introduction to the Cloudian Connector Plugin
+---------------------------------------------
+
+The Cloudian (HyperStore) Connector is a native CloudStack plugin that allow
+integration between Apache CloudStack and Cloudian Management Console (CMC). The
+Connector integrates Cloudian S3 Storage into the CloudStack Management GUI and
+allows administrators to easily give their CloudStack users access to and manage
+their own S3 storage areas.
+
+Compatibilty
+~~~~~~~~~~~~
+
+The following table shows the compatiblity of Cloudian Connector with CloudStack.
+
+.. cssclass:: table-striped table-bordered table-hover
+
++---------------------+----------------------+-------------------------+
+| Connector Version   | CloudStack version   | Cloudian Compatibility  |
++=====================+======================+=========================+
+| 4.9_6.2-1           | 4.9                  | Version 6.2 and onwards |
++---------------------+----------------------+-------------------------+
+| 4.11+               | 4.11+                | Version 6.2 and onwards |
++---------------------+----------------------+-------------------------+
+
+Table: Support Matrix
+
+.. note::
+   Starting CloudStack 4.11, the Connector will be part of the CloudStack
+   release and will not need to be externally installed.
+
+Connector Overview
+------------------
+
+Single-Sign-On Integration
+~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+The connector plugin adds a Cloudian Storage button to the CloudStack UI. This
+button is available for all users on the bottom left of the menu.
+
+.. figure:: /_static/images/cloudian-tab.png
+   :align: center
+   :alt: a screenshot of an enabled Cloudian Connector
+
+When a user clicks this button, a new window or tab (depending on the web
+browser preferences) is opened for the HyperStore CMC GUI. The CloudStack user
+is automatically logged in to CMC as the correctly mapped HyperStore user using
+Single-Sign-On (SSO).
+
+With the connector enabled, when the user clicks ‘Log Out’ in the CloudStack UI
+this first logs the user out of CloudStack and then redirects the page to log
+out any logged-in Cloudian user out of CMC GUI and finally redirects the page to
+the CloudStack login page.
+
+Single-Sign-On is a technique where CloudStack and HyperStore are configured to
+trust each other. This is achieved by configuring both HyperStore and the
+CloudStack connector with the same SSO Shared Key. The CloudStack connector
+creates a special login URL for CMC which it signs using this shared key. Upon
+receiving the special signed login URL, CMC validates the request by comparing
+the signature to its own copy of the shared key and the user is automatically
+logged in.
+
+User Mapping and Provisioning/De-provisioning
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+CloudStack domains are mapped to Cloudian Groups. CloudStack accounts within
+those domains are mapped to Cloudian users. The Cloudian user and group are
+created on demand if it doesn’t already exist when the CloudStack user accesses
+CMC through the Cloudian Storage button. When accounts and domains are created
+or removed in CloudStack, they automatically create or remove users or groups in
+CMC.
+
+.. cssclass:: table-striped table-bordered table-hover
+
++---------------------+----------------------------+
+| CloudStack Entity   | Equivalent Cloudian Entity |
++=====================+============================+
+| Account             | User                       |
++---------------------+----------------------------+
+| Domain              | Group                      |
++---------------------+----------------------------+
+
+Table: Mapping Between Cloudian and CloudStack
+
+.. note::
+   Adding groups or users directly through Cloudian does not add
+   corresponding CloudStack Domains or Accounts. The integration is driven
+   completely from the CloudStack side.
+
+Special Admin User Mapping
+~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+The special CloudStack admin is are mapped to a special HyperStore Admin user
+account which defaults to the user id admin. As the admin user on HyperStore is
+configurable, there is a configuration option to control this mapping. This
+mapping dictates which HyperStore user is automatically logged in using SSO when
+the CloudStack admin user clicks "Cloudian Storage".
+
+.. note::
+   The Cloudian Admin user default is called admin. Older versions of
+   Cloudian used to use admin@cloudian.com.
+
+DNS Resolution Requirements
+~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+The CloudStack Management Server will need to be access the Cloudian admin
+service. The Cloudian admin service is commonly run on the same nodes as your
+Cloudian S3 servers. The admin service is used to provision and deprovision
+Cloudian users and groups automatically by CloudStack.
+
+Additionally, your CloudStack users will need to be able to resolve your CMC
+server hostname on their desktops so that they can access CMC.
+
+Example domain names that should resolve:
+
+.. cssclass:: table-striped table-bordered table-hover
+
++---------------------+----------------------+------------------------------+
+| Resolvable Name     | Required By          | Description                  |
++=====================+======================+==============================+
+| mgmt.abc-cloud.com  | User's browser       | CloudStack Management Server |
++---------------------+----------------------+------------------------------+
+| cmc.abc-cloud.com   | User's browser       | Cloudian CMC                 |
++---------------------+----------------------+------------------------------+
+| admin.abc-cloud.com | Management Server    | Cloudian Admin Server        |
++---------------------+----------------------+------------------------------+
+
+Table: DNS Name Resolution Example
+
+
+Configuring the Cloudian Connector
+----------------------------------
+
+Prerequisites
+~~~~~~~~~~~~~
+
+Cloudian ships with SSO disabled by default. You will need to enable it on each
+CMC server. Additionally, you will need to choose a unique SSO shared key that
+you will also configure in the CloudStack connector further below.
+
+Edit Puppet config to enable SSO on all CMC servers:
+
+   ::
+
+     # vi /etc/cloudian-[version]-puppet/modules/cmc/templates/mts-ui.properties.erb
+       sso.enabled=true
+       sso.shared.key=YourSecretKeyHere
+
+
+.. note::
+   Once configured in Puppet, you should roll out out to each CMC server and
+   restart CMC services. Please refer to the HyperStore documentation for how to
+   do this.
+
+Connector Configuration
+~~~~~~~~~~~~~~~~~~~~~~~
+
+The main way to configure, enable and disable the connector is using the
+CloudStack global setting. The global settings provide an easy way to configure
+the connector and synchronize setting across multiple management server(s). The
+following global setting can be accessed and changed using the CloudStack UI:
+
+.. cssclass:: table-striped table-bordered table-hover
+
++------------------------------+------------------------------------------------+
+| Global Setting               | Description                                    |
++==============================+================================================+
+| cloudian.connector.enabled   | Setting to enable/disable the plugin           |
++------------------------------+------------------------------------------------+
+| cloudian.admin.host          | The Cloudian admin server host                 |
++------------------------------+------------------------------------------------+
+| cloudian.admin.port          | The Cloudian admin server port, usually 19443  |
+|                              | (https) or 18081 (http)                        |
++------------------------------+------------------------------------------------+
+| cloudian.admin.protocol      | The Cloudian admin server protocol, http/https |
++------------------------------+------------------------------------------------+
+| cloudian.validate.ssl        | Whether to validate SSL certificate of Cloudian|
+|                              | admin service while making API calls           |
++------------------------------+------------------------------------------------+
+| cloudian.admin.user          | Basic auth user name for Cloudian admin server |
++------------------------------+------------------------------------------------+
+| cloudian.admin.password      | Basic auth password for Cloudian admin server  |
++------------------------------+------------------------------------------------+
+| cloudian.api.request.timeout | The admin API request timeout in seconds       |
++------------------------------+------------------------------------------------+
+| cloudian.cmc.admin.user      | The user id of the CMC admin that maps to      |
+|                              | CloudStack admin user                          |
++------------------------------+------------------------------------------------+
+| cloudian.cmc.host            | The Cloudian Management Console hostname       |
++------------------------------+------------------------------------------------+
+| cloudian.cmc.port            | The Cloudian Management Console port           |
++------------------------------+------------------------------------------------+
+| cloudian.cmc.protocol        | The Cloudian Management Console protocol       |
++------------------------------+------------------------------------------------+
+| cloudian.sso.key             | The shared secret as configured in Cloudian CMC|
++------------------------------+------------------------------------------------+
+
+Table: Cloudian Connector Global Settings
+
+.. note::
+   Change in only ‘cloudian.connector.enabled’ setting requires restarting of
+   all the CloudStack management server(s), rest of the setting can be changed
+   dynamically without requiring to restart the CloudStack management server(s).
+
+Enabling the Cloudian Connector
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+The Cloudian Connector comes disabled by default, enabling the connector is the
+last step. You should have already configured the Cloudian Connector global
+settings. To enable the connector, ensure that the global setting
+"cloudian.connector.enabled" is set to true. Finally, restart each of the
+management server(s) to reload and enable the connector.
+
+For example, here is how you can restart the CloudStack management server
+installed on CentOS7:
+
+   ::
+
+     # systemctl restart cloudstack-management
+
+
+Troubleshooting
+~~~~~~~~~~~~~~~~
+
+Most of the trouble you may run into will be configuration related.
+
+There are a few things which can go wrong for SSO. Here are the most common
+problems and things to check:
+
+-  Does the global settings cloudian.cmc.admin.user point to the correct Cloudian
+   (admin) user?
+
+-  Is SSO configured and enabled on Cloudian HyperStore CMC?
+
+-  Check for errors in the CMC log file.
+
+-  Are both CloudStack and HyperStore CMC configured with the same cloudian.sso.key?
+
+-  Check the /var/log/cloudstack/management/management-server.log file and
+   search for errors relating to SSO.
+
+-  Try access the CMC host directly from the problem users host using the
+   configured cloudian.cmc.host, cloudian.cmc.port and cloudian.cmc.protocol
+   configured in the CloudStack global settings.
+
+-  If you log out of the management server and log in again, does the Cloudian
+   Storage button work?
+
+
+Adding/Deleting Domains or Accounts fails: These operations use the Cloudian
+Admin Server. It's likely that something has changed with the connection or the
+admin server is down. Check list:
+
+-  Is the admin server alive and listening?
+
+-  Try access the admin server host directly from the problem users host using
+   the configured cloudian.admin.host, cloudian.admin.port and
+   cloudian.admin.protocol configured in the CloudStack global settings. Check the
+   configured auth settings cloudian.admin.user and cloudian.admin.password.
+
+-  If you’re experiencing timeout issues, trying changing the API timeout value
+   defined in cloudian.api.request.timeout global setting.
+
+-  Look for errors in the admin log file /var/log/cloudian/cloudian-admin.log.
+
+
+------------
+
+
+Cloudian as CloudStack Secondary Storage
+----------------------------------------
+
+This section is a supplementary guide for CloudStack and describes how to
+configure CloudStack to use Cloudian HyperStore as Secondary Storage. Please
+also review CloudStack’s documentation (Getting Started Guide) for configuring
+and using S3 as Secondary Storage.
+
+CloudStack, as of version 4.2.1, can utilize Cloudian HyperStore as S3 Secondary
+Storage out of the box. There is no need for any modifications or to install any
+connectors. Secondary Storage is used to store ISOs, Templates, Snapshots and
+Volumes.
+
+.. note::
+   CloudStack still requires an NFS Secondary Storage Staging Server with is
+   mentioned in the requirements below.
+
+Requirements:
+
+-  CloudStack 4.5+ (installed/configured and running)
+-  Cloudian HyperStore 5.0 or greater (installed/configured and running)
+
+NFS Secondary Storage Staging Server Requirement
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+The use of S3 as Secondary Storage for CloudStack also requires an NFS server.
+The NFS server is required because the various hypervisors cannot yet talk
+directly to S3 but instead talk through the standard file system API. As such,
+CloudStack requires an NFS staging server which the Hypervisors use to read and
+write data from/to. The NFS storage requirements for the staging server are
+small however as space is only required while objects are staged (moving)
+between the S3 server and the VMs.
+
+
+DNS Name Resolution Requirement
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+All CloudStack Management Servers, system VMs and customer VMs (if required)
+must be able to resolve your S3 bucket names. Usually, if you already have
+Cloudian installed and running in your environment, this is already working.
+At a minimum the following names should resolve to the correct IP addresses
+using the DNS server that your Management Server and System VMs are using.
+
+.. cssclass:: table-striped table-bordered table-hover
+
++---------------------+------------------------------+
+| Example Name        | DNS Name Types               |
++=====================+==============================+
+| s3.mycloud.com      | Cloudian S3 Endpoint         |
++---------------------+------------------------------+
+| sec.s3.mycloud.com  | Bucket for Secondary Storage |
++---------------------+------------------------------+
+| s3-admin.mycloud.com| Cloudian Admin Server        |
++---------------------+------------------------------+
+
+Table: Example Domain Names that should Resolve on CloudStack Servers
+
+Adding Cloudian as CloudStack Secondary Storage
+-----------------------------------------------
+
+Setup a Cloudian User and Bucket for Secondary Storage
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+S3 Secondary Storage stores the CloudStack templates, snapshots etc in a
+dedicated S3 Bucket. To properly configure CloudStack you will need to know the
+S3 Bucket name and how to access your S3 Server (the S3 endpoint, access key and
+secret key).
+
+Below, we will create a dedicated Cloudian user and a dedicated bucket which we
+will assign for use as Secondary Storage.
+
+Create a dedicated user/group:
+
+-  Login to the Cloudian Management Console (CMC) as the Cloudian admin user.
+
+-  Create a new group called cloudstack. Any group name is ok.
+
+-  Create a new user called cloudstack in the cloudstack group. Any user name is ok.
+
+
+Create a dedicated bucket:
+
+-  Login to CMC as the cloudstack user created above.
+
+-  Create a bucket called secondary. Any bucket name will do.
+
+-  On the top menu bar on the right hand side, use the drop down menu under your
+   user name to select Security Credentials and copy and paste your Access and
+   Secret Keys to a note for later use. CloudStack will need these when you attach
+   Cloudian as Secondary Storage in a later step below.
+
+Open Up Access to your S3 Network from Secondary Storage
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+If your S3 server is on a different network to your Secondary Storage VM, you
+will need to open up access to the S3 network. This also allows users to
+download templates from their S3 object store areas.
+
+.. figure:: /_static/images/cloudian-ss_globalopt.png
+   :align: center
+   :alt: a screenshot of changing global settings
+
+.. note::
+   Editing the Global Settings requires you to restart the management server(s).
+
+Add an NFS Secondary Storage Staging Server
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+As mentioned previously, S3 Secondary Storage currently requires the use of an
+NFS Secondary Staging Server. Add NFS Secondary Storage Staging Server:
+
+-  Login to CloudStack Management Server as the admin user.
+
+-  Navigate to Infrastructure → Secondary Storage.
+
+-  Click Select View and select Secondary Staging Store.
+
+-  Click Add Secondary Staging Store.
+
+-  Configure the zone, server and path for your desired secondary staging store.
+   For example nfs.mycloud.com and /export/staging.
+
+.. figure:: /_static/images/cloudian-s3_ss_cache.png
+   :align: center
+   :alt: a screenshot of adding secondary staging store
+
+Attach Cloudian as Secondary Storage
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+CloudStack supports using either S3 or NFS as Secondary Storage but not both.
+The below instructions assume you are not using Secondary Storage on NFS and
+that you can delete it to add the S3 storage.
+
+.. note::
+  Already using NFS for Secondary Storage with CloudStack? You need to migrate
+  your Secondary Storage. Refer to CloudStack’s instructions for migrating
+  existing NFS Secondary Storage to an S3 object storage. CloudStack 4.5 onwards
+  supports migrating data via special commands which are described in the Getting
+  Started Guide in a section titled Upgrading from NFS to Object Storage.
+
+Adding S3 Secondary Storage:
+
+-  Login to CloudStack Management Server as the admin user.
+
+-  Navigate to Infrastructure → Secondary Storage.
+
+-  If it exists, select and delete any existing NFS Secondary Storage server
+   setting. NOTE: Do not do this if you want to migrate existing NFS secondary
+   storage to S3. Instead, see warning above.
+
+-  Click the Add Secondary Storage button. This will open up a pop-up form which
+   you can fill out similarly to below.
+
+.. figure:: /_static/images/cloudian-s3_ss_config.png
+   :align: center
+   :alt: a screenshot of configuring S3 secondary storage
+
+.. note::
+   CloudStack doesn’t currently allow you to re-edit the S3 configuration so take
+   time to double check what you enter. If you make a mistake the only options
+   currently are either a) delete and recreate the storage or b) directly edit the
+   entry in the database.
+
+When you have finished adding Cloudian as Secondary Storage in the previous
+steps, CloudStack will populate the new secondary storage with the system and
+default templates. This can take some time do download as the templates are
+quite big.
+
+.. note::
+   You can check if the system template and the default template have properly
+   downloaded to the new secondary storage by navigating to Templates, selecting a
+   template, clicking on the Zones tab and checking its Status is Ready 100%
+   Downloaded.
+
+.. note::
+   Should you continue to have problems, sometimes it is necessary to restart
+   the Secondary Storage VM. You can do this by navigating to Infrastructure,
+   System VMs, selecting and rebooting the Secondary Storage VM.
+
+CloudStack should now ready to use Cloudian HyperStore for S3 Secondary Storage.
+
+Revision History
+----------------
+
+-  Fri Oct 6 2017 Rohit Yadav rohit.yadav@shapeblue.com Documentation
+   created for 4.11.0 version of the Cloudian Connector Plugin
diff --git a/rtd/source/locale/pot/networking.pot b/rtd/source/locale/pot/networking.pot
index c27f11e..7722d94 100644
--- a/rtd/source/locale/pot/networking.pot
+++ b/rtd/source/locale/pot/networking.pot
@@ -47,7 +47,6 @@
 msgstr ""
 
 #: ../../networking/autoscale_without_netscaler.rst:17
-#: ../../networking/midonet.rst:46
 #: ../../networking/nicira-plugin.rst:54
 #: ../../networking/ovs-plugin.rst:51
 # d15bd6b6f1064d51bfaf9e80a5565e96
@@ -418,47 +417,6 @@
 msgid "On Ubuntu 12.10"
 msgstr ""
 
-#: ../../networking/midonet.rst:2
-# f4e5c6a4da61434aa40dd7ba93484347
-msgid "The MidoNet Plugin"
-msgstr ""
-
-#: ../../networking/midonet.rst:5
-# 5b3351f0b1bc467ab6133d431de2a226
-msgid "Introduction to the MidoNet Plugin"
-msgstr ""
-
-#: ../../networking/midonet.rst:7
-# 43f5b5c6fc1241dfb632510a30e519ae
-msgid "The MidoNet plugin allows CloudStack to use the MidoNet virtualized networking solution as a provider for CloudStack networks and services. For more information on MidoNet and how it works, see http://www.midokura.com/midonet/."
-msgstr ""
-
-#: ../../networking/midonet.rst:13
-# c889a6c491c042388e4a20497669eb79
-msgid "Features of the MidoNet Plugin"
-msgstr ""
-
-#: ../../networking/midonet.rst:15
-# 835bde43c8534aefac5e1ccd81e317f4
-msgid "In CloudStack 4.2.0 only the KVM hypervisor is supported for use in combination with MidoNet."
-msgstr ""
-
-#: ../../networking/midonet.rst:18
-# cb53a8ffabf047298535ec3e31beb1ad
-msgid "In CloudStack release 4.2.0 this plugin supports several services in the Advanced Isolated network mode."
-msgstr ""
-
-#: ../../networking/midonet.rst:21
-# 5408bf0f7ed04335a07c1ac3f3448d26
-msgid "When tenants create new isolated layer 3 networks, instead of spinning up extra Virtual Router VMs, the relevant L3 elements (routers etc) are created in the MidoNet virtual topology by making the appropriate calls to the MidoNet API. Instead of using VLANs, isolation is provided by MidoNet."
-msgstr ""
-
-#: ../../networking/midonet.rst:27
-# 08c1c37a1bbd47dc96340d462ad72de6
-msgid "Aside from the above service (Connectivity), several extra features are supported in the 4.2.0 release:"
-msgstr ""
-
-#: ../../networking/midonet.rst:30
 #: ../../networking/nicira-plugin.rst:135
 #: ../../networking/nicira-plugin.rst:171
 #: ../../networking/nicira-plugin.rst:249
@@ -473,12 +431,6 @@
 msgid "DHCP"
 msgstr ""
 
-#: ../../networking/midonet.rst:32
-# 0114445c01474c868169c1cc09fcf6a3
-msgid "Firewall (ingress)"
-msgstr ""
-
-#: ../../networking/midonet.rst:34
 #: ../../networking/nicira-plugin.rst:23
 #: ../../networking/nicira-plugin.rst:145
 #: ../../networking/nicira-plugin.rst:177
@@ -495,7 +447,6 @@
 msgid "Source NAT"
 msgstr ""
 
-#: ../../networking/midonet.rst:36
 #: ../../networking/nicira-plugin.rst:25
 #: ../../networking/nicira-plugin.rst:147
 #: ../../networking/nicira-plugin.rst:179
@@ -514,7 +465,6 @@
 msgid "Static NAT"
 msgstr ""
 
-#: ../../networking/midonet.rst:38
 #: ../../networking/nicira-plugin.rst:27
 #: ../../networking/ovs-plugin.rst:24
 # 0de776336a694f4dafd899038007d024
@@ -523,202 +473,6 @@
 msgid "Port Forwarding"
 msgstr ""
 
-#: ../../networking/midonet.rst:40
-# 5ecfd1fd0fc6494988c5a472673fbc7d
-msgid "The plugin has been tested with MidoNet version 12.12. (Caddo)."
-msgstr ""
-
-#: ../../networking/midonet.rst:43
-# b8b2387b8d4b4e849ba66caea5e01c81
-msgid "Using the MidoNet Plugin"
-msgstr ""
-
-#: ../../networking/midonet.rst:48
-# 2668ec6a367641e69ff49062e49ce7e6
-msgid "In order to use the MidoNet plugin, the compute hosts must be running the MidoNet Agent, and the MidoNet API server must be available. Please consult the MidoNet User Guide for more information. The following section describes the CloudStack side setup."
-msgstr ""
-
-#: ../../networking/midonet.rst:53
-# 99b96e8acec34a0d8d7c21d78e2703fd
-msgid "CloudStack needs to have at least one physical network with the isolation method set to \"MIDO\". This network should be enabled for the Guest and Public traffic types."
-msgstr ""
-
-#: ../../networking/midonet.rst:57
-# 8b171ca5cb9e484397531f31e7b4d842
-msgid "Next, we need to set the following CloudStack settings under \"Global Settings\" in the UI:"
-msgstr ""
-
-#: ../../networking/midonet.rst:61
-# b69a22dee5ce48f4938914d6c4377874
-msgid "Setting Name"
-msgstr ""
-
-#: ../../networking/midonet.rst:61
-# db6dfe91d7fc49a7a23c8ec6f5589d9b
-msgid "Description"
-msgstr ""
-
-#: ../../networking/midonet.rst:61
-# 8ce816e9b802465f8f5f6375c4bda427
-msgid "Example"
-msgstr ""
-
-#: ../../networking/midonet.rst:63
-# 9b5539562d8347e5a40e744f9b8086e7
-msgid "midonet.apiserver.address"
-msgstr ""
-
-#: ../../networking/midonet.rst:63
-# a95222e0e61e4a3c9b250cd37d5cf298
-msgid "Specify the address at which the Midonet API server can be contacted"
-msgstr ""
-
-#: ../../networking/midonet.rst:63
-# 4188583e5177441b9821e4f5f89578a2
-msgid "http://192.168.1.144:8081/midolmanj-mgmt"
-msgstr ""
-
-#: ../../networking/midonet.rst:65
-# 665afa499ac44b54a7a8c0e53a749d66
-msgid "midonet.providerrouter.id"
-msgstr ""
-
-#: ../../networking/midonet.rst:65
-# 78c4feefb6d543d1ba12f3992e48e7fa
-msgid "Specifies the UUID of the Midonet provider router"
-msgstr ""
-
-#: ../../networking/midonet.rst:65
-# f7035c39c3a04d189249f37810cd413f
-msgid "d7c5e6a3-e2f4-426b-b728-b7ce6a0448e5"
-msgstr ""
-
-#: ../../networking/midonet.rst:68
-# 65914ae089bc4ab6ad82c66df94e9d49
-msgid "Table: CloudStack settings"
-msgstr ""
-
-#: ../../networking/midonet.rst:70
-# 20e830daf68a461a81d396114ad184ec
-msgid "We also want MidoNet to take care of public traffic, so in *componentContext.xml* we need to replace this line:"
-msgstr ""
-
-#: ../../networking/midonet.rst:78
-# 00b49b309af944c58397a9f4dbf0ff2a
-msgid "With this:"
-msgstr ""
-
-#: ../../networking/midonet.rst:85
-# 6c11d6b3c68e4451a5ca2b6c31e2c584
-msgid "On the compute host, MidoNet takes advantage of per-traffic type VIF driver support in CloudStack KVM."
-msgstr ""
-
-#: ../../networking/midonet.rst:88
-# d02ca0b479ba4720b56679504af434b7
-msgid "In agent.properties, we set the following to make MidoNet take care of Guest and Public traffic:"
-msgstr ""
-
-#: ../../networking/midonet.rst:96
-# 29db8f221b5641ea84be16cfdf0202f0
-msgid "This is explained further in MidoNet User Guide."
-msgstr ""
-
-#: ../../networking/midonet.rst:99
-# 3a516331b1ea440298354c98069645bb
-msgid "Enabling the MidoNet service provider via the UI"
-msgstr ""
-
-#: ../../networking/midonet.rst:101
-# 830c1e31051e44c98c0f34a05952b2f7
-msgid "To allow CloudStack to use the MidoNet Plugin the network service provider needs to be enabled on the physical network."
-msgstr ""
-
-#: ../../networking/midonet.rst:104
-# cb5416ba9cad4f6b82d36a759957167f
-msgid "The steps to enable via the UI are as follows:"
-msgstr ""
-
-#: ../../networking/midonet.rst:106
-# 3c9f034a471d460fa1e78d7fc0d23038
-msgid "In the left navbar, click Infrastructure"
-msgstr ""
-
-#: ../../networking/midonet.rst:108
-# bcb7494347d2406d87ebd01a0c91fb20
-msgid "In Zones, click View All"
-msgstr ""
-
-#: ../../networking/midonet.rst:110
-# 95f2fb5dc5884524a69094143f6bb76d
-msgid "Click the name of the Zone on which you are setting up MidoNet"
-msgstr ""
-
-#: ../../networking/midonet.rst:112
-# 188fd04a8ae145fda2c3a8c890d5462e
-msgid "Click the Physical Network tab"
-msgstr ""
-
-#: ../../networking/midonet.rst:114
-# 1e542d7390884d2bad2f3c47877542b1
-msgid "Click the Name of the Network on which you are setting up MidoNet"
-msgstr ""
-
-#: ../../networking/midonet.rst:116
-# aaaf74a3d52b42ebae8f4e88c8b40355
-msgid "Click Configure on the Network Service Providers box"
-msgstr ""
-
-#: ../../networking/midonet.rst:118
-# 04d5bfd6646f4a97989e347474116368
-msgid "Click on the name MidoNet"
-msgstr ""
-
-#: ../../networking/midonet.rst:120
-# 642adc3b1cf44faab16425e912c923f5
-msgid "Click the Enable Provider button in the Network tab"
-msgstr ""
-
-#: ../../networking/midonet.rst:123
-# cf7eda3b5d3f4866846e763c3caf4b70
-msgid "Enabling the MidoNet service provider via the API"
-msgstr ""
-
-#: ../../networking/midonet.rst:125
-# c59c00a7fa6f46119faf3eca40367b44
-msgid "To enable via the API, use the following API calls:"
-msgstr ""
-
-#: ../../networking/midonet.rst:127
-# 8282ec8f110b4fe89bffca6181a46725
-msgid "*addNetworkServiceProvider*"
-msgstr ""
-
-#: ../../networking/midonet.rst:129
-# 60147b795fda499aa9cf7558014d88d5
-msgid "name = \"MidoNet\""
-msgstr ""
-
-#: ../../networking/midonet.rst:131
-# bcc67ccf4214467e8e400256884b5a51
-msgid "physicalnetworkid = <the uuid of the physical network>"
-msgstr ""
-
-#: ../../networking/midonet.rst:133
-# ea8ad1ea1ce440f293268c6ce2be6c7d
-msgid "*updateNetworkServiceProvider*"
-msgstr ""
-
-#: ../../networking/midonet.rst:135
-# 4415a0b5d7c345c297f91727eda61212
-msgid "id = <the provider uuid returned by the previous call>"
-msgstr ""
-
-#: ../../networking/midonet.rst:137
-# df55f4d520bf4f90a9d0988e752af678
-msgid "state = \"Enabled\""
-msgstr ""
-
-#: ../../networking/midonet.rst:140
 #: ../../networking/nicira-plugin.rst:338
 #: ../../networking/ovs-plugin.rst:226
 # dfc989938200446f8f7792e0488afccf
@@ -727,11 +481,6 @@
 msgid "Revision History"
 msgstr ""
 
-#: ../../networking/midonet.rst:142
-# 65c949887213426e8c750fcc37c11160
-msgid "0-0 Wed Mar 13 2013 Dave Cahill dcahill@midokura.com Documentation created for 4.2.0 version of the MidoNet Plugin"
-msgstr ""
-
 #: ../../networking/nicira-plugin.rst:2
 # 5a81d39c1e9e4666b11b0d2062315f8b
 msgid "The Nicira NVP Plugin"
diff --git a/rtd/source/networking/midonet.rst b/rtd/source/networking/midonet.rst
deleted file mode 100644
index fab489e..0000000
--- a/rtd/source/networking/midonet.rst
+++ /dev/null
@@ -1,168 +0,0 @@
-.. Licensed to the Apache Software Foundation (ASF) under one
-   or more contributor license agreements.  See the NOTICE file
-   distributed with this work for additional information#
-   regarding copyright ownership.  The ASF licenses this file
-   to you under the Apache License, Version 2.0 (the
-   "License"); you may not use this file except in compliance
-   with the License.  You may obtain a copy of the License at
-   http://www.apache.org/licenses/LICENSE-2.0
-   Unless required by applicable law or agreed to in writing,
-   software distributed under the License is distributed on an
-   "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-   KIND, either express or implied.  See the License for the
-   specific language governing permissions and limitations
-   under the License.
-
-
-The MidoNet Plugin
-==================
-
-Introduction to the MidoNet Plugin
-----------------------------------
-
-The MidoNet plugin allows CloudStack to use the MidoNet virtualized
-networking solution as a provider for CloudStack networks and services. For
-more information on MidoNet and how it works, see
-http://www.midokura.com/midonet/.
-
-
-Features of the MidoNet Plugin
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-.. note::
-   In CloudStack 4.2.0 only the KVM hypervisor is supported for use in
-   combination with MidoNet.
-
-In CloudStack release 4.2.0 this plugin supports several services in the
-Advanced Isolated network mode.
-
-When tenants create new isolated layer 3 networks, instead of spinning
-up extra Virtual Router VMs, the relevant L3 elements (routers etc) are
-created in the MidoNet virtual topology by making the appropriate calls
-to the MidoNet API. Instead of using VLANs, isolation is provided by
-MidoNet.
-
-Aside from the above service (Connectivity), several extra features are
-supported in the 4.2.0 release:
-
--  DHCP
-
--  Firewall (ingress)
-
--  Source NAT
-
--  Static NAT
-
--  Port Forwarding
-
-The plugin has been tested with MidoNet version 12.12. (Caddo).
-
-
-Using the MidoNet Plugin
-------------------------
-
-Prerequisites
-~~~~~~~~~~~~~
-
-In order to use the MidoNet plugin, the compute hosts must be running
-the MidoNet Agent, and the MidoNet API server must be available. Please
-consult the MidoNet User Guide for more information. The following
-section describes the CloudStack side setup.
-
-#. CloudStack needs to have at least one physical network with the
-   isolation method set to "MIDO". This network should be enabled for
-   the Guest and Public traffic types.
-
-#. Next, we need to set the following CloudStack settings under "Global
-   Settings" in the UI:
-
-   .. cssclass:: table-striped table-bordered table-hover
-
-   +-----------------------------+------------------------------------------------------------------------+--------------------------------------------+
-   | Setting Name                | Description                                                            | Example                                    |
-   +=============================+========================================================================+============================================+
-   | midonet.apiserver.address   | Specify the address at which the Midonet API server can be contacted   | http://192.168.1.144:8081/midolmanj-mgmt   |
-   +-----------------------------+------------------------------------------------------------------------+--------------------------------------------+
-   | midonet.providerrouter.id   | Specifies the UUID of the Midonet provider router                      | d7c5e6a3-e2f4-426b-b728-b7ce6a0448e5       |
-   +-----------------------------+------------------------------------------------------------------------+--------------------------------------------+
-
-   Table: CloudStack settings
-
-#. We also want MidoNet to take care of public traffic, so in
-   *componentContext.xml* we need to replace this line:
-
-   ::
-
-      <bean id="PublicNetworkGuru" class="com.cloud.network.guru.PublicNetworkGuru">
-         
-
-   With this:
-
-   ::
-
-      <bean id="PublicNetworkGuru" class="com.cloud.network.guru.MidoNetPublicNetworkGuru">
-         
-
-.. note::
-   On the compute host, MidoNet takes advantage of per-traffic type VIF
-   driver support in CloudStack KVM.
-
-   In agent.properties, we set the following to make MidoNet take care
-   of Guest and Public traffic:
-
-   ::
-
-      libvirt.vif.driver.Guest=com.cloud.network.resource.MidoNetVifDriver
-      libvirt.vif.driver.Public=com.cloud.network.resource.MidoNetVifDriver
-
-   This is explained further in MidoNet User Guide.
-
-
-Enabling the MidoNet service provider via the UI
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-To allow CloudStack to use the MidoNet Plugin the network service provider
-needs to be enabled on the physical network.
-
-The steps to enable via the UI are as follows:
-
-#. In the left navbar, click Infrastructure
-
-#. In Zones, click View All
-
-#. Click the name of the Zone on which you are setting up MidoNet
-
-#. Click the Physical Network tab
-
-#. Click the Name of the Network on which you are setting up MidoNet
-
-#. Click Configure on the Network Service Providers box
-
-#. Click on the name MidoNet
-
-#. Click the Enable Provider button in the Network tab
-
-
-Enabling the MidoNet service provider via the API
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-To enable via the API, use the following API calls:
-
-*addNetworkServiceProvider*
-
--  name = "MidoNet"
-
--  physicalnetworkid = <the uuid of the physical network>
-
-*updateNetworkServiceProvider*
-
--  id = <the provider uuid returned by the previous call>
-
--  state = "Enabled"
-
-
-Revision History
-----------------
-
-0-0 Wed Mar 13 2013 Dave Cahill dcahill@midokura.com Documentation
-created for 4.2.0 version of the MidoNet Plugin
diff --git a/rtd/source/networking/nuage-plugin.rst b/rtd/source/networking/nuage-plugin.rst
index dc645fa..7e1c907 100644
--- a/rtd/source/networking/nuage-plugin.rst
+++ b/rtd/source/networking/nuage-plugin.rst
@@ -17,107 +17,133 @@
 The Nuage VSP Plugin
 ====================
 
+
 Introduction
 ------------
 
-The Nuage VSP plugin is the Nuage Networks SDN
-implementation in CloudStack, which integrates with Release 3.2 of the
-Nuage Networks Virtualized Services Platform.
-The plugin can be used by CloudStack to leverage the scalability and rich features of Advanced SDN and to implement:
+The Nuage VSP Plugin is the Nuage Networks SDN
+implementation in CloudStack, which integrates with Nuage Networks
+Virtualized Services Platform (VSP).
+The plugin can be used by CloudStack to leverage the scalability and rich features of advanced SDN being provided by the Nuage VSP SDN Platform and to implement:
 
 * Isolated Guest Networks
-* Virtual Private Clouds (VPCs)
+* Virtual Private Clouds (VPC)
 * Shared Networks
 
 For more information about Nuage Networks, visit www.nuagenetworks.net.
 
+Supported Features
+~~~~~~~~~~~~~~~~~~
 
-Features
---------
-
-The following table lists the CloudStack network services provided by
-the Nuage VSP Plugin.
+The following table lists the supported Network services in a CloudStack deployment with NuageVsp being the Connectivity/Virtual Networking provider, with their providers and supported CloudStack versions.
 
 .. cssclass:: table-striped table-bordered table-hover
 
-+----------------------+----------------------+
-| Network Service      | CloudStack version   |
-+======================+======================+
-| Virtual Networking   | >= 4.5               |
-+----------------------+----------------------+
-| VPC                  | >= 4.5               |
-+----------------------+----------------------+
-| Source NAT           | >= 4.5               |
-+----------------------+----------------------+
-| Static NAT           | >= 4.5               |
-+----------------------+----------------------+
-| Firewall             | >= 4.5               |
-+----------------------+----------------------+
-| Network ACL          | >= 4.5               |
-+----------------------+----------------------+
-| User Data (*)        | >= 4.7               |
-+----------------------+----------------------+
++---------------------------+---------------------------+---------------------------+---------------------------+
+| Network Service           | Isolated Networks         | VPCs                      | Shared Networks           |
++===========================+===========================+===========================+===========================+
+| Virtual Networking        | NuageVsp (>=4.5)          | NuageVsp (>=4.5)          | NuageVsp (>=4.10)         |
++---------------------------+---------------------------+---------------------------+---------------------------+
+| Dhcp                      | NuageVsp (>=4.5)          | NuageVsp (>=4.5)          | NuageVsp (>=4.10)         |
++---------------------------+---------------------------+---------------------------+---------------------------+
+| SourceNat                 | NuageVsp (>=4.10)         | NuageVsp (>=4.10)         | N/A                       |
++---------------------------+---------------------------+---------------------------+---------------------------+
+| StaticNat                 | NuageVsp (>=4.5)          | NuageVsp (>=4.5)          | N/A                       |
++---------------------------+---------------------------+---------------------------+---------------------------+
+| Firewall                  | NuageVsp (>=4.5)          | N/A                       | N/A                       |
++---------------------------+---------------------------+---------------------------+---------------------------+
+| NetworkACL                | N/A                       | NuageVsp (>=4.5)          | N/A                       |
++---------------------------+---------------------------+---------------------------+---------------------------+
+| UserData                  | VirtualRouter (>=4.5)     | VpcVirtualRouter (>=4.5)  | VirtualRouter (>=4.10)    |
++---------------------------+---------------------------+---------------------------+---------------------------+
+| Dns                       | VirtualRouter (>=4.10)    | VpcVirtualRouter (>=4.10) | N/A                       |
++---------------------------+---------------------------+---------------------------+---------------------------+
+| Internal Lb               | N/A                       | InternalLbVm (>=4.9)      | N/A                       |
++---------------------------+---------------------------+---------------------------+---------------------------+
 
-(*) Through the use of VR Provider
-
-Table: Supported Services
+Table: Supported Network Services
 
 .. note::
    The Virtual Networking service was originally called 'Connectivity'
    in CloudStack 4.0
 
-The following hypervisors are supported by the Nuage VSP Plugin.
+Supported Hypervisors
+~~~~~~~~~~~~~~~~~~~~~
+
+The following hypervisors are supported by the Nuage VSP Plugin, with their supported CloudStack versions.
 
 .. cssclass:: table-striped table-bordered table-hover
 
-+--------------+----------------------+
-| Hypervisor   | CloudStack version   |
-+==============+======================+
-| XenServer    | >= 4.5               |
-+--------------+----------------------+
-| VmWare ESXi  | >= 4.5               |
-+--------------+----------------------+
-| KVM          | >= 4.7               |
-+--------------+----------------------+
++----------------------+----------------------+
+| Hypervisor           | CloudStack version   |
++======================+======================+
+| KVM 7.x              | >= 4.5               |
++----------------------+----------------------+
+| VMware ESXi 5.5      | >= 4.5               |
++----------------------+----------------------+
+| VMware ESXi 6.0      | >= 4.9               |
++----------------------+----------------------+
 
 Table: Supported Hypervisors
 
+Supported Nuage VSP SDN Platform Versions
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
-Configuring the Nuage-VSP Plugin
+The following Nuage VSP SDN Platform versions are supported by the Nuage VSP Plugin, with their supported CloudStack versions.
+
+.. cssclass:: table-striped table-bordered table-hover
+
++----------------------+----------------------+
+| Nuage VSP version    | CloudStack version   |
++======================+======================+
+| Nuage VSP v3.2       | >= 4.5               |
++----------------------+----------------------+
+| Nuage VSP v4.0       | >= 4.10              |
++----------------------+----------------------+
+
+Table: Supported Nuage VSP SDN Platform Versions
+
+
+Configuring The Nuage VSP Plugin
 --------------------------------
 
 Prerequisites
 ~~~~~~~~~~~~~
 
-Before building and using the Nuage plugin for ACS 4.7, verify that the platform you intend to use is supported.
+Before enabling and using the Nuage VSP Plugin with CloudStack.
 
-.. Note:: Only the release notes for Nuage VSP contain the most up-to-date information on supported versions. Please check them to verify that the information below is current.
+1. Verify that the CloudStack deployment (hypervisors) and Nuage VSP SDN Platform version you intend to use is being supported.
 
-Supported Versions
-~~~~~~~~~~~~~~~~~~
+.. Note:: Only the release notes for Nuage VSP contain the most up-to-date information on different supported versions. Please check them to verify that the information in this document is up-to-date.
 
-* Nuage VSP 3.2
-* Apache CloudStack 4.7
-* Citrix XenServer 6.2
-* KVM on Enterprise Linux 7.x
+2. Prepare and configure the hypervisors for CloudStack integration with Nuage VSP SDN Platform.
 
-Required VSD Configuration
-~~~~~~~~~~~~~~~~~~~~~~~~~~
+.. note::
+   Please refer to the Nuage VSP Install Guide on how to prepare the hypervisors for Nuage VSP SDN Platform integration.
 
-When configuring Nuage VSP as the network service provider, Nuage VSD must be added as a CSP user, and this user must be added to the CMS group. See `Enabling the Service Provider`_.
+Required Nuage VSD Configuration
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+When configuring Nuage VSP as the network service provider in a CloudStack Zone, a CSP user must be added in Nuage VSD, and this user must be added to the CMS group. See `Enable Nuage VSP Network Service Provider`_.
+
+.. note::
+   Nuage VSD is the programmable policy and analytics engine of the Nuage VSP SDN Platform with which the Nuage VSP Plugin interacts.
 
 Zone Configuration
 ~~~~~~~~~~~~~~~~~~
 
-Select VSP Isolation Method During Zone Creation
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+Select VSP Isolation Method
+~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
 The Nuage VSP solution is NOT supported in Basic zone provisioning mode. 
 
-1. When adding a zone, the ACS administrator should select **Advanced** mode in the zone wizard. 
+1. When adding a zone, the CloudStack administrator should select **Advanced** mode in the zone wizard.
 2. When laying out the physical network configuration during zone provisioning, the **Guest** network traffic should be put in a separate physical network of its own.
 3. This physical network carrying the **Guest** traffic should have **VSP** as the **Isolation Method**.
 
+.. figure:: ../_static/images/nuage_vsp_isolation_method_setting.png
+
+   Setting Isolation Method to VSP
 
 Update Traffic Labels
 ~~~~~~~~~~~~~~~~~~~~~
@@ -126,109 +152,362 @@
 
 Select **Edit** on the **Guest** traffic type panel and update the Traffic Label:
 
--  For XenServer, use **nuageManagedNetwork** as the **XenServer Traffic Label**.
 -  For KVM, use **alubr0** as the **KVM Traffic Label**.
 
-Enabling the Service Provider
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+.. figure:: ../_static/images/nuage_kvm_traffic_label.jpg
 
-Nuage VSP must be added to ACS as a Network Service Provider before it can be used. 
+   Specifying the Traffic Type in KVM
+
+-  For VMware ESXi, use the switch name used by **dVRS** for guest networking as the **vSwitch Name**, leave the **VLAN ID** field blank, and select **VMware vNetwork Distributed Switch** in the **vSwitch Type** drop down field.
+
+.. figure:: ../_static/images/nuage_vmware_traffic_label.jpg
+
+   Specifying the Traffic Type in VMware ESXi
+
+Enable Nuage VSP Network Service Provider
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+Nuage VSP must be added and enabled as a Network Service Provider in the CloudStack Zone before it can be used.
 
 :Step 1: Select **Infrastructure > Zone > [zone name] > Physical Network 2 > Configure Network Service Providers > Nuage Vsp > +**, which brings up the **Add Nuage Virtualized Services Directory (VSD)** panel. 
 
-:Step 2: Enter the VSD **Host Name**, **Username** and **Password** that was previously created. 
+:Step 2: Enter the Nuage VSD **Host Name**, **Username** and **Password** that was previously created.
 
-:Step 3: Specify the VSD API version by entering the API version in the appropriate field (format: ``v3_2``).
+:Step 3: Specify the Nuage VSD API version by entering the API version in the appropriate field (format: ``v4_0``).
 
-:Step 4: *EITHER* Add **Nuage VSD** and click the **OK** button,
+:Step 4: *EITHER* Add **Nuage VSD** by clicking the **OK** button,
 
-         *OR* use API calls to configure Nuage VSP as the Network Provider; see `Nuage VSD API`_ in the Appendix of the current document.
+         *OR* use Nuage VSP API calls to configure Nuage VSP as a Network Service Provider in the CloudStack Zone; see `Configure Nuage VSP API`_ in the Appendix of this document.
 
-:Step 5: Go to **Infrastructure > Zones > [zone name] > Physical Network 2 > Network Service Providers > Nuage Vsp > Devices > Details** tab as shown in the figure "Enabling Nuage VSP" below. This indicates the state of Nuage VSP. Enable Nuage VSP by clicking **Enable**.
+.. figure:: ../_static/images/nuage_vsd_device_add.png
 
-:Step 6: (Optional) View the Nuage VSP status on the list of Network Service Providers on the **Infrastructure > Zones > [zone name] > Physical Network 2 > Network Service Providers** page;
+   Adding Nuage VSD as the Network Service Provider
+
+:Step 5: Go to **Infrastructure > Zones > [zone name] > Physical Network 2 > Network Service Providers > Nuage Vsp > Devices > Details** tab as shown in the figure "Enabling Nuage VSP Network Service Provider" below. This indicates the state of Nuage VSP Network Service Provider. Enable Nuage VSP Network Service Provider by clicking **Enable**.
+
+.. figure:: ../_static/images/nuage_vsp_nsp_enable.png
+
+   Enabling Nuage VSP Network Service Provider
+
+:Step 6: (Optional) View the Nuage VSP Network Service Provider status on the list of Network Service Providers on the **Infrastructure > Zones > [zone name] > Physical Network 2 > Network Service Providers** page;
+
+.. figure:: ../_static/images/nuage_vsp_nsp_status.png
+
+   Viewing Network Service Providers Status
+
+
+Using The Nuage VSP Plugin
+--------------------------
 
 Network Offerings
 ~~~~~~~~~~~~~~~~~
 
-There are two types of Network Offerings that can be created:
+There are three types of Network Offerings that can be created:
 
--  If Isolated Networks are required, then create a network offering for use with Isolated Networks.
--  If VPC deployments are required, then create a new network offering for that.
+-  If Isolated Networks are required, then create a **Isolated** guest type network offering for use with Isolated Networks.
+-  If VPC deployments are required, then create a new **Isolated** guest type network offering for such deployments.
+-  If Shared Networks are required, then create a new **Shared** guest type network offering for use with Shared Networks.
+
+.. note::
+   **Per Zone** MUST always be selected as the **Supported Source NAT type** when **Source NAT** service is being provided by **NuageVsp**.
 
 Create and Enable Isolated Network Offering
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-1. Select **Service Offerings > Select Offering: Network Offerings > Add network offering**.
 
-2. In the **Supported Services** field select each of the following services - DHCP, Firewall, Source NAT, Static NAT, Virtual Networking and select Nuage VSP as the Provider.
+1. Select **Service Offerings > Select Offering: Network Offerings > Add network offering**, which brings up the **Add network offering**.
 
-3. If User Data service is desired in an Isolated Network, choose **VirtualRouter** as the User Data provider. **Per Zone** MUST be selected for the Source NAT Type for the Source NAT service.
+2. In the **Add network offering** panel, add a **Name** and a **Description** to the network offering. Select **Isolated** as the **Guest Type**. In the **Supported Services** field select services and providers that are supported by the Nuage VSP Plugin for Isolated Networks, see `Supported Features`_ at the beginning of this document.
 
-4. Click OK to create the offering. 
+.. figure:: ../_static/images/nuage_iso_net_off.png
 
-5. After the offering has been successfully created, enable it from the Service Offerings list.
+   Creating Isolated Network Offering
+
+3. Click the **OK** button to create the network offering.
+
+4. After the network offering has been successfully created, enable it from the **Service Offerings - Network Offerings** list.
 
 Create and Enable VPC Network Offering
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-1. Select **Service Offerings > Select Offering**: **Network Offerings > Add network offering**.
 
-2. Select the **VPC checkbox**. In the Supported Services field, select each of the following services and then select Nuage VSP as the Provider.
+1. Select **Service Offerings > Select Offering: Network Offerings > Add network offering**, which brings up the **Add network offering**.
 
-   *	DHCP
-   *	Source NAT
-   *  Static NAT
-   *	Virtual Networking 
+2. In the **Add network offering** panel, add a **Name** and a **Description** to the network offering. Select **Isolated** as the **Guest Type**. Select the **VPC** field. In the **Supported Services** field select services and providers that are supported by the Nuage VSP Plugin for VPCs, see `Supported Features`_ at the beginning of this document.
 
-3. (Optional) Select **VpcVirtualRouter** as the UserData provider if password reset or metadata feature is desired.
+.. figure:: ../_static/images/nuage_vpc_net_off.png
 
-4. (Optional) If network ACL is required, select **NuageVsp** as the network ACL provider. 
+   Creating VPC Network Offering
 
-   a) Ensure the *Persistent* checkbox is selected.
-   b) As the *Supported Source NAT Type*, select **Per Zone**.
+3. Click the **OK** button to create the network offering.
 
-5.  After the offering has been successfully created, enable it from the Service Offerings list.
+4. After the network offering has been successfully created, enable it from the **Service Offerings - Network Offerings** list.
 
-Dedicated Features That Come with Nuage VSP Plugin
---------------------------------------------------
+Create and Enable Shared Network Offering
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
-Domain Template Support for CloudStack in VSP
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+1. Select **Service Offerings > Select Offering: Network Offerings > Add network offering**, which brings up the **Add network offering**.
 
-Overview
-~~~~~~~~
+2. In the **Add network offering** panel, add a **Name** and a **Description** to the network offering. Select **Shared** as the **Guest Type**. In the **Supported Services** field select services and providers that are supported by the Nuage VSP Plugin for Shared Networks, see `Supported Features`_ at the beginning of this document.
 
-VSP's CloudStack plugin can be configured to use a VSD template when instantiating domains. The parameters and abstractions contained in the template are reused every time a new domain instance is created in CloudStack, and thus all the constructs defined in the template are available to the domain. 
+.. figure:: ../_static/images/nuage_sha_net_off.png
 
-Configuration
+   Creating Shared Network Offering
+
+.. note::
+   Selecting the **Supporting Public Access** field in the Shared Network offering enables Public/Internet access to the VMs in the Shared Network.
+
+3. Click the **OK** button to create the network offering.
+
+4. After the network offering has been successfully created, enable it from the **Service Offerings - Network Offerings** list.
+
+VPC Offerings
 ~~~~~~~~~~~~~
 
-Details of the global variables that have been added to support domain templates are listed below: 
+Pre-created and Enabled Nuage VSP VPC Offering
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
-:nuagevsp.isolatedntwk.domaintemplate.name: (Type: string) Name of the template to use for creation of domains for isolated networks.
+A VPC offering by the name **Nuage VSP VPC Offering** is pre-created and enabled in the list of **Service Offerings - VPC Offerings** (Select **Service Offerings > Select Offering: VPC Offerings**) which contains all the services and providers that are supported by the Nuage VSP Plugin for VPCs.
 
-:nuagevsp.vpc.domaintemplate.name: (Type: boolean) Name of the template to use for creation of domains for VPC.
+.. figure:: ../_static/images/nuage_vsp_vpc_off.png
 
-To configure a domain template for use by CloudStack, use VSD to create a domain template, using the global CloudStack parameters listed above.
+   Pre-created and Enabled Nuage VSP VPC Offering
 
-.. Note:: There will be only a single domain instance for ``nuagevsp.vpc.domaintemplate.name``.
+(Optional) Create and Enable VPC Offering
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
-Networks created in CloudStack will then use domain instances created from the template to which the name points.
+1. Select **Service Offerings > Select Offering: VPC Offerings > Add VPC Offering**, which brings up the **Add VPC Offering**.
+
+2. In the **Add VPC Offering** panel, add a **Name** and a **Description** to the network offering. In the **Supported Services** field select services and providers that are supported by the Nuage VSP Plugin for VPCs, see `Supported Features`_ at the beginning of this document.
+
+.. figure:: ../_static/images/nuage_vpc_off.png
+
+   Creating VPC Offering
+
+3. Click the **OK** button to create the VPC Offering.
+
+4. After the VPC Offering has been successfully created, enable it from the **Service Offerings - VPC Offerings** list.
+
+
+Dedicated Features Provided by The Nuage VSP Plugin
+---------------------------------------------------
+
+Nuage VSP Domain Template Feature Support for CloudStack
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+All the constructs (parameters and abstractions) defined in a Nuage VSD domain template can be made available to domain instances (i.e. networks) created in CloudStack. To do this, configure the Nuage VSP Plugin to use a pre-created Nuage VSD domain template when instantiating domains (i.e. creating networks). Networks created in CloudStack will then use domain instances created from the domain template.
+
+Typical use-cases are:
+
+* The basic ACLs on the top and bottom that bracket or 'contain' the end-user's ACLs.
+* Leakable domains/GRT Leaking (Nuage VSP feature).
+
+To configure a Nuage VSP domain template for use by CloudStack, use the Nuage VSD Architect (VSP's GUI) to create a domain template and configure it in the following CloudStack global settings.
+
+.. cssclass:: table-striped table-bordered table-hover
+
++-------------------------------------------+---------+------------------------------------------------------------------------------------------+---------------------------------+
+| Parameter                                 | Type    | Explanation                                                                              | Supported CloudStack versions   |
++===========================================+=========+==========================================================================================+=================================+
+| nuagevsp.isolatedntwk.domaintemplate.name | String  | Name of the Nuage VSP domain template to use for creating domains for isolated networks  | >= 4.5                          |
++-------------------------------------------+---------+------------------------------------------------------------------------------------------+---------------------------------+
+| nuagevsp.vpc.domaintemplate.name          | String  | Name of the Nuage VSP domain template to use for creating the domain for VPCs            | >= 4.5                          |
++-------------------------------------------+---------+------------------------------------------------------------------------------------------+---------------------------------+
+| nuagevsp.sharedntwk.domaintemplate.id     | UUID    | UUID of the Nuage VSP domain template to use for creating the domain for Shared Networks | >= 4.10                         |
++-------------------------------------------+---------+------------------------------------------------------------------------------------------+---------------------------------+
+
+Table: CloudStack Global Settings For Configuring Nuage VSP Domain Template Feature
+
+Nuage VSP Source NAT via the Underlay Feature Support For CloudStack
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+Supported CloudStack versions: >= 4.10
+
+CloudStack provides Source NAT service to enable guest VMs to send traffic out to the Internet without requiring a Static NAT IP (public IP) assigned to the VM. The Source NAT service must be enabled as part of the network offering used for creating the guest network. When a network is created using this network offering, the first public IP from the assigned public IP range is automatically acquired as the Source NAT IP for the network. All VMs attached to this network then use that Source NAT IP to send traffic to the Internet.
+
+The Nuage VSP Plugin for CloudStack supports CloudStack's native Source NAT service and enhances it by restricting to a minimum the number of public IP addresses assigned to any given tenant. This is achieved by not allocating a Source NAT IP for every network that is created.
+
+The Source NAT service that Nuage VSP calls the Port Address Translation (PAT) feature uses the hypervisor IP as the Source NAT IP address for all VMs in the hypervisor that need to send traffic out to the Internet. Configure this during Nuage VSP installation using the instructions given in the Nuage VSP Install Guide.
+
+This feature is supported for both VPCs and Isolated Networks. In the case of VPCs, Source NAT is applied at the Nuage VSP domain level, therefore there is no customization on the individual VPC network (tier) level.
+
+All VPCs and Isolated networks that are created from a Nuage VSP Source NAT-enabled network offering have this feature enabled automatically. An example Nuage VSP Source NAT-enabled network offering is shown in the figure "Nuage VSP Source NAT-enabled Network Offering" below.
+
+.. figure:: ../_static/images/nuage_source_nat_net_off.png
+
+   Nuage VSP Source NAT-enabled Network Offering
+
+Nuage VSP Static NAT via the Underlay Feature Support For CloudStack
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+Supported CloudStack versions: >= 4.10
+
+Static NAT is supported in Nuage VSP as FIP (Floating IP). Prior to Nuage VSP v3.2, FIP in Nuage VSP required a VXLAN GW/PE to be present in the data center. In Nuage VSP v3.2 and above FIP is supported via the underlay, which removes the requirement for a GW/PE in the DC.
+
+For the Static NAT without GW/PE feature to be operational in the CloudStack plugin, FIP in Nuage VSP must be configured to use the underlay. This operation takes place during Nuage VSP installation; instructions can be found in the Nuage VSP Install Guide.
+
+A new API called ``nuageunderlayvlaniprange`` has been introduced to enable/disable Static NAT via the Underlay feature support for CloudStack public IP ranges being used for Static NAT service. This API specifies whether the FIP to underlay support is required for the corresponding FIP subnet in Nuage VSD since there is no GW/PE in the data center. When the ``nuageunderlayvlaniprange`` API has been enabled/disabled for a public IP range and Static NAT is enabled on at-least one of its Public IPs, the plugin creates the corresponding shared FIP subnet in Nuage VSD using the ``sharednetworkresources`` API with the underlay flag set accordingly. The ``nuageunderlayvlaniprange`` API usage is shown in the figure "nuageunderlayvlaniprange API Usage" below.
+
+.. figure:: ../_static/images/nuage_underlay_api_usage.png
+
+   nuageunderlayvlaniprange API Usage
+
+By default, the Nuage VSP Plugin creates the corresponding shared FIP subnet in Nuage VSD with the underlay flag set to false (disabled). There is no support for the ``nuageunderlayvlaniprange`` API from the CloudStack UI.
+
+.. note::
+   Enabling/disabling the ``nuageunderlayvlaniprange`` API for CloudStack public IP ranges is supported only before the Nuage VSP plugin creates the corresponding shared FIP subnet in Nuage VSD. After a shared FIP subnet is created in Nuage VSD, its underlay flag cannot be changed. To change the underlay flag for a given shared FIP subnet, delete the Public vLanIPRange, recreate it and enable/disable the ``nuageunderlayvlaniprange`` API for it.
+
+
+Running The Nuage VSP Plugin Specific Marvin Tests
+--------------------------------------------------
+
+The Nuage VSP Plugin specific Marvin tests can be found under the directory test/integration/plugins/nuagevsp/ in the cloudstack tree.
+
+Here is the list of required Python packages and dependencies to run The Nuage VSP Plugin specific Marvin tests:
+
+- marvin
+- vspk
+- libVSD
+- pyyaml
+- netaddr
+- futures
+
+.. note::
+   vspk is a Python SDK for Nuage VSP's VSD and libVSD is a library that wraps vspk package, which are open sourced and can be found at https://github.com/nuagenetworks.
+
+Here is an example nosetests command to run The Nuage VSP Plugin specific Marvin tests:
+
+::
+
+   nosetests --with-marvin --marvin-config=path-to-marvin-config-file/nuage_marvin.cfg path-to-marvin-tests/test/integration/plugins/nuagevsp/test_nuage_vsp.py
+
+.. note::
+   For an example Marvin config file (i.e. nuage_marvin.cfg) required to run The Nuage VSP Plugin specific Marvin tests, refer `Nuage VSP Marvin Config File Format`_ in the Appendix of this document.
+
 
 Appendix
 --------
-Nuage VSD API
-~~~~~~~~~~~~~
 
-To add Nuage VSP as Network Service Provider, 
+Configure Nuage VSP API
+~~~~~~~~~~~~~~~~~~~~~~~
 
-1.  Add the specified network service provider:
+To configure Nuage VSP as a Network Service Provider in the CloudStack Zone.
+
+1.  Add Nuage VSP as a Network Service Provider in the Physical Network 2:
 
 ::
 
-        cloudmonkey add networkserviceprovider name=NuageVsp physicalnetworkid=<physicalNetworkId>
+   cloudmonkey add networkserviceprovider name=NuageVsp physicalnetworkid=<physicalNetwork2Id>
 
-2.  Add the specified Nuage VSD:
+2.  Add the Nuage VSD as a Nuage VSP Device in the Physical Network 2:
 
 ::
 
-    cloudmonkey add nuagevspdevice physicalnetworkid=<physicalNetworkId> hostname=<hostnameOfNuageVsp> username=<usernameOfNuageVspUser> password=<passwordOfNuageVspUser> port=<portUsedByNuageVsp> apiversion=<apiVersionOfNuageVsp> retrycount=<nrOfRetriesOnFailure> retryinterval=<intervalBetweenRetries>
+    cloudmonkey add nuagevspdevice physicalnetworkid=<physicalNetwork2Id> hostname=<hostnameOfNuageVsp> username=<usernameOfNuageVspUser> password=<passwordOfNuageVspUser> port=<portUsedByNuageVsp> apiversion=<apiVersionOfNuageVsp> retrycount=<nrOfRetriesOnFailure> retryinterval=<intervalBetweenRetries>
+
+
+Nuage VSP Marvin Config File Format
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+Format for the Marvin config file required to run The Nuage VSP Plugin specific Marvin tests.
+
+::
+
+   {
+    "zones": [
+        {
+            "name": "ZONE1NAME",
+            "physical_networks": [
+                {
+                    "name": "Physical Network 1",
+                    "isolationmethods": [
+                        "VLAN"
+                    ]
+                },
+                {
+                    "name": "Physical Network 2",
+                    "isolationmethods": [
+                        "VSP"
+                    ],
+                    "providers": [
+                        {
+                            "name": "NuageVsp",
+                            "devices": [
+                                {
+                                    "username": "VSDUSERNAME",
+                                    "retryinterval": "60",
+                                    "hostname": "VSDSERVER",
+                                    "apiversion": "VSDVERSION",
+                                    "retrycount": "4",
+                                    "password": "VSDUSERPASSWORD",
+                                    "port": VSDPORT
+                                }
+                            ]
+                        }
+                    ]
+                }
+            ],
+            "dcInternetConnectivityInfo" : {
+                "available": "INTERNETAVAILABLE",
+                "httpProxy": "HTTPPROXY",
+                "httpsProxy": "HTTPSPROXY"
+            }
+        },
+        {
+            "name": "ZONE2NAME",
+            "physical_networks": [
+                {
+                    "name": "Physical Network 1",
+                    "isolationmethods": [
+                        "VLAN"
+                    ]
+                },
+                {
+                    "name": "Physical Network 2",
+                    "isolationmethods": [
+                        "VSP"
+                    ],
+                    "providers": [
+                        {
+                            "name": "NuageVsp",
+                            "devices": [
+                                {
+                                    "username": "VSDUSERNAME",
+                                    "retryinterval": "60",
+                                    "hostname": "VSDSERVER",
+                                    "apiversion": "VSDVERSION",
+                                    "retrycount": "4",
+                                    "password": "VSDUSERPASSWORD",
+                                    "port": VSDPORT
+                                }
+                            ]
+                        }
+                    ]
+                }
+            ],
+            "dcInternetConnectivityInfo" : {
+                "available": "INTERNETAVAILABLE",
+                "httpProxy": "HTTPPROXY",
+                "httpsProxy": "HTTPSPROXY"
+            }
+        }
+    ],
+    "dbSvr": {
+        "dbSvr": "DBSERVER",
+        "passwd": "DBPASSWORD",
+        "db": "cloud",
+        "port": 3306,
+        "user": "DBUSERNAME"
+    },
+    "logger":
+        {
+            "LogFolderPath": "/tmp/LOGFOLDERNAME"
+        },
+    "mgtSvr": [
+        {
+            "mgtSvrIp": "MGNTSERVERIP",
+            "port": 8096,
+            "user": "MGNTUSERNAME",
+            "passwd": "MGNTPASSWORD"
+        }
+    ]
+    }
+
diff --git a/rtd/source/networking/vxlan.rst b/rtd/source/networking/vxlan.rst
index dcd6b7e..67eff6a 100644
--- a/rtd/source/networking/vxlan.rst
+++ b/rtd/source/networking/vxlan.rst
@@ -87,6 +87,16 @@
 In order to configure "jumbo frames" you can i.e. make physical interface/bridge with 9000 bytes MTU, then all the vxlan
 interfaces will be created with MTU of 8950 bytes, and then MTU size inside VM can be set to 8950 bytes.
 
+Important note on max number of multicast groups (and thus VXLAN intefaces)
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+Default value of "net.ipv4.igmp_max_memberships" (cat /proc/sys/net/ipv4/igmp_max_memberships) is "20", which means that host can be joined to max 20 multicast groups (attach max 20 multicast IPs on the host).
+Since all VXLAN (VTEP) interfaces provisioned on host are multicast-based (belong to certain multicast group, and thus has it's own multicast IP that is used as VTEP), this means that you can not provision more than 20 (working) VXLAN interfaces per host.
+On Linux kernel 3.x you actually can provision more than 20, but ARP request will silently fail and cause client's networking problems
+On Linux kernel 4.x you can NOT provision (start) more than 20 VXLAN interfaces and error message "No buffer space available" can be observed in Cloudstack Agent logs after provisioning required bridges and VXLAN interfaces.
+Increase needed parameter to sane value (i.e. 100 or 200) as required.
+If you need to operate more than 20 VMs from different client's network, this change above is required.
+
 Advanced: Build kernel and iproute2
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~