Merge branch '4.11'
diff --git a/source/_static/images/CloudStack-ldap-screen1.fr.png b/source/_static/images/CloudStack-ldap-screen1.fr.png
new file mode 100644
index 0000000..f9cf0ee
--- /dev/null
+++ b/source/_static/images/CloudStack-ldap-screen1.fr.png
Binary files differ
diff --git a/source/_static/images/add-cifs.fr.png b/source/_static/images/add-cifs.fr.png
new file mode 100644
index 0000000..dfed035
--- /dev/null
+++ b/source/_static/images/add-cifs.fr.png
Binary files differ
diff --git a/source/_static/images/add-cluster.fr.png b/source/_static/images/add-cluster.fr.png
new file mode 100644
index 0000000..f8e050c
--- /dev/null
+++ b/source/_static/images/add-cluster.fr.png
Binary files differ
diff --git a/source/_static/images/add-gateway.fr.png b/source/_static/images/add-gateway.fr.png
new file mode 100644
index 0000000..5b6fa97
--- /dev/null
+++ b/source/_static/images/add-gateway.fr.png
Binary files differ
diff --git a/source/_static/images/add-gslb.fr.png b/source/_static/images/add-gslb.fr.png
new file mode 100644
index 0000000..98c5509
--- /dev/null
+++ b/source/_static/images/add-gslb.fr.png
Binary files differ
diff --git a/source/_static/images/add-tier.fr.png b/source/_static/images/add-tier.fr.png
new file mode 100644
index 0000000..9870d4a
--- /dev/null
+++ b/source/_static/images/add-tier.fr.png
Binary files differ
diff --git a/source/_static/images/resize-volume.fr.png b/source/_static/images/resize-volume.fr.png
new file mode 100644
index 0000000..47b5275
--- /dev/null
+++ b/source/_static/images/resize-volume.fr.png
Binary files differ
diff --git a/source/_static/images/tag-network1.png b/source/_static/images/tag-network1.png
new file mode 100644
index 0000000..9cb614b
--- /dev/null
+++ b/source/_static/images/tag-network1.png
Binary files differ
diff --git a/source/_static/images/tag-network2.png b/source/_static/images/tag-network2.png
new file mode 100644
index 0000000..86d7cdc
--- /dev/null
+++ b/source/_static/images/tag-network2.png
Binary files differ
diff --git a/source/_static/images/tag-network3.png b/source/_static/images/tag-network3.png
new file mode 100644
index 0000000..8d4793c
--- /dev/null
+++ b/source/_static/images/tag-network3.png
Binary files differ
diff --git a/source/_static/images/update-ssl-icon.fr.png b/source/_static/images/update-ssl-icon.fr.png
new file mode 100644
index 0000000..c3db9b0
--- /dev/null
+++ b/source/_static/images/update-ssl-icon.fr.png
Binary files differ
diff --git a/source/_static/images/update-ssl.fr.png b/source/_static/images/update-ssl.fr.png
new file mode 100644
index 0000000..3df7690
--- /dev/null
+++ b/source/_static/images/update-ssl.fr.png
Binary files differ
diff --git a/source/locale/fr/LC_MESSAGES/templates.po b/source/locale/fr/LC_MESSAGES/templates.po
index 4f606f3..6c90872 100644
--- a/source/locale/fr/LC_MESSAGES/templates.po
+++ b/source/locale/fr/LC_MESSAGES/templates.po
@@ -1556,11 +1556,11 @@
 
 #: ../../templates/_password.rst:51
 msgid ""
-"`http://download.cloud.com/templates/4.2/bindir/cloud-set-guest-password.in "
-"<http://download.cloud.com/templates/4.2/bindir/cloud-set-guest-password.in>`_"
+"`https://download.cloudstack.org/templates/4.2/bindir/cloud-set-guest-password.in "
+"<https://download.cloudstack.org/templates/4.2/bindir/cloud-set-guest-password.in>`_"
 msgstr ""
-"`http://download.cloud.com/templates/4.2/bindir/cloud-set-guest-password.in "
-"<http://download.cloud.com/templates/4.2/bindir/cloud-set-guest-password.in>`_"
+"`https://download.cloudstack.org/templates/4.2/bindir/cloud-set-guest-password.in "
+"<https://download.cloudstack.org/templates/4.2/bindir/cloud-set-guest-password.in>`_"
 
 #: ../../templates/_password.rst:54
 msgid "Rename the file:"
diff --git a/source/locale/fr/LC_MESSAGES/templates/_password.po b/source/locale/fr/LC_MESSAGES/templates/_password.po
index 6862aa6..48e3a3f 100644
--- a/source/locale/fr/LC_MESSAGES/templates/_password.po
+++ b/source/locale/fr/LC_MESSAGES/templates/_password.po
@@ -102,11 +102,11 @@
 
 #: ../../templates/_password.rst:51
 msgid ""
-"`http://download.cloud.com/templates/4.2/bindir/cloud-set-guest-password.in "
-"<http://download.cloud.com/templates/4.2/bindir/cloud-set-guest-password.in>`_"
+"`https://download.cloudstack.org/templates/4.2/bindir/cloud-set-guest-password.in "
+"<https://download.cloudstack.org/templates/4.2/bindir/cloud-set-guest-password.in>`_"
 msgstr ""
-"`http://download.cloud.com/templates/4.2/bindir/cloud-set-guest-password.in "
-"<http://download.cloud.com/templates/4.2/bindir/cloud-set-guest-password.in>`_"
+"`https://download.cloudstack.org/templates/4.2/bindir/cloud-set-guest-password.in "
+"<https://download.cloudstack.org/templates/4.2/bindir/cloud-set-guest-password.in>`_"
 
 #: ../../templates/_password.rst:54
 msgid "Rename the file:"
diff --git a/source/locale/zh_CN/LC_MESSAGES/systemvm.po b/source/locale/zh_CN/LC_MESSAGES/systemvm.po
index 3bcfb1d..34f19b2 100644
--- a/source/locale/zh_CN/LC_MESSAGES/systemvm.po
+++ b/source/locale/zh_CN/LC_MESSAGES/systemvm.po
@@ -953,18 +953,18 @@
 
 # 6ea0f846b0a34711b7c0090cb48d8c32
 #~ msgid ""
-#~ "http://download.cloud.com/templates/4.2/64bit/systemvmtemplate64-2013-07-15"
+#~ "https://download.cloudstack.org/templates/4.2/64bit/systemvmtemplate64-2013-07-15"
 #~ "-master-xen.vhd.bz2"
 #~ msgstr ""
-#~ "http://download.cloud.com/templates/4.2/64bit/systemvmtemplate64-2013-07-15"
+#~ "https://download.cloudstack.org/templates/4.2/64bit/systemvmtemplate64-2013-07-15"
 #~ "-master-xen.vhd.bz2"
 
 # fe251bca2b854129890cba8e7ac9bbbf
 #~ msgid ""
-#~ "http://download.cloud.com/templates/4.2/64bit/systemvmtemplate64-2013-07-15"
+#~ "https://download.cloudstack.org/templates/4.2/64bit/systemvmtemplate64-2013-07-15"
 #~ "-master-kvm.qcow2.bz2"
 #~ msgstr ""
-#~ "http://download.cloud.com/templates/4.2/64bit/systemvmtemplate64-2013-07-15"
+#~ "https://download.cloudstack.org/templates/4.2/64bit/systemvmtemplate64-2013-07-15"
 #~ "-master-kvm.qcow2.bz2"
 
 # 7be31349d45949dfa61f79105ade746f
diff --git a/source/locale/zh_CN/LC_MESSAGES/templates.po b/source/locale/zh_CN/LC_MESSAGES/templates.po
index 6d5502d..d762c6e 100644
--- a/source/locale/zh_CN/LC_MESSAGES/templates.po
+++ b/source/locale/zh_CN/LC_MESSAGES/templates.po
@@ -1350,12 +1350,12 @@
 
 #: ../../templates/_password.rst:51
 msgid ""
-"`http://download.cloud.com/templates/4.2/bindir/cloud-set-guest-"
-"password.in <http://download.cloud.com/templates/4.2/bindir/cloud-set-"
+"`https://download.cloudstack.org/templates/4.2/bindir/cloud-set-guest-"
+"password.in <https://download.cloudstack.org/templates/4.2/bindir/cloud-set-"
 "guest-password.in>`_"
 msgstr ""
-"`http://download.cloud.com/templates/4.2/bindir/cloud-set-guest-"
-"password.in <http://download.cloud.com/templates/4.2/bindir/cloud-set-"
+"`http://download.cloudstack.org/templates/4.2/bindir/cloud-set-guest-"
+"password.in <https://download.cloudstack.org/templates/4.2/bindir/cloud-set-"
 "guest-password.in>`_"
 
 #: ../../templates/_password.rst:54
diff --git a/source/networking/virtual_private_cloud_config.rst b/source/networking/virtual_private_cloud_config.rst
index 96ec786..b60eb19 100644
--- a/source/networking/virtual_private_cloud_config.rst
+++ b/source/networking/virtual_private_cloud_config.rst
@@ -489,7 +489,7 @@
 A private gateway can be added by the root admin only. The VPC private
 network has 1:1 relationship with the NIC of the physical network. You
 can configure multiple private gateways to a single VPC. No gateways
-with duplicated VLAN and IP are allowed in the same data center.
+with duplicated VLAN and IP are allowed in the same data center (but you can use different VLANs for different gateways, but with same IP ranges/networks)
 
 #. Log in to the CloudStack UI as an administrator or end user.
 
@@ -500,8 +500,8 @@
    All the VPCs that you have created for the account is listed in the
    page.
 
-#. Click the Configure button of the VPC to which you want to configure
-   load balancing rules.
+#. Click the Configure button of the VPC for which you want to configure
+   private gateway
 
    The VPC page is displayed where all the tiers you created are listed
    in a diagram.
@@ -541,7 +541,9 @@
 #. Specify the following:
 
    -  **Physical Network**: The physical network you have created in the
-      zone.
+      zone - this is the network which caries GUEST TRAFFIC
+      
+      See ":ref:`guest-priv-gw`".
 
    -  **IP Address**: The IP address associated with the VPC gateway.
 
@@ -566,6 +568,23 @@
    add more gateway for this VPC.
 
 
+.. _guest-priv-gw:
+
+GUEST TRAFFIC for Private Gateway
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+When you provision Private Gateway with i.e. vlan id 1500, CloudStack will try to provision vlan interface with that vlan id on top of the physical interface which is defined for the selected physical network - i.e. if you defined "bond0" as the "traffic label" for the selected Physical Network, this means CloudStack will try to create "bond0.1500" vlan interface, and this will work just fine.
+
+But in some cases, you might not be able to use current Guest Physical Network - i.e. if you are already running VXLAN as isolation method with i.e. bond0.150 being used as Traffic Label (vlan 150 caries all VXLAN tunnels) then CloudStack would try to provision "bond0.150.1500" interface, which will not work.
+In similar fashion, if you are using cloudbrX as Traffic Label for your Guest network (VLAN used as isolation method), this means CloudStack will try to provision "cloudbrX.1500" interface, which will also not work. 
+
+In cases described above, you would perhaps want to create additional Guest Physical Network, and specify bond0 as the Traffic Label (to comply with example values given above) - and here CloudStack will provision "bond0.1500" interface, which will work as expected.
+
+In cases where you have 2 (or more) Guest Physical Networks, and you want one of them to be used for regular Guest Traffic (vlans, or vxlan tunnels), but you want another Guest Physical Network to be used for Private Gateway functionality (solution to the problem described above), then we need to make sure that we properly TAG both Guest Physical Networks and the needed Network Offerings - both the regular Network Offerings and also the hidden network offering that is used for Private Gateways (visible only inside DB), named "System-Private-Gateway-Network-Offering". 
+
+For instruction on how to use tags with Physical networks and Network Offerings, please see ":ref:`tagging-networks`".
+
+
 .. _source-nat-priv-gw:
 
 Source NAT on Private Gateway
@@ -777,7 +796,7 @@
    address in port forwarding, load balancing, and static NAT rules.
 
 
-Releasing an IP Address Alloted to a VPC
+Releasing an IP Address Allocated to a VPC
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
 The IP address is a limited resource. If you no longer need a particular
@@ -1438,3 +1457,53 @@
    :alt: button to remove a VPC
 .. |restart-vpc.png| image:: /_static/images/restart-vpc.png
    :alt: button to restart a VPC
+
+
+.. _tagging-networks:
+
+Tagging Guest Physical Network and Network Offerings
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+In cases you have more than one Guest Physical Network, you might choose to use them for different purposes - i.e. to carry all "regular" VPC Guest Traffic (vlans/vxlans) on one Guest Physical Network, but use another Guest Physical Network for VPC Private Gateway (networks which are created as part of Private Gateway).
+
+Example above would be accomplished by assigning different tags on these two Guest Physical Networks, and then tag proper Guest Network offerings in certain way, as explained later.
+
+
+To edit tags in existing zone, for Guest Physical Networks, please do the following:
+
+#. Log in to the CloudStack UI as an administrator.
+
+#. Click on Infrastructure, then Zones, then particular Zone, then click on Physical Network tab, and from there select the correct Guest Network by clicking it, and again by clicking on "Guest / Configure" button.
+
+.. |tag-network1.png| image:: /_static/images/tag-network1.png
+   :alt: Tagging multiple Guest Physical Networks.
+
+
+#. In the presented screen, click on Edit button, and then you will be able to define tag for this particular Physical Network - set it to i.e. "guestvxlan".
+
+.. |tag-network2.png| image:: /_static/images/tag-network2.png
+   :alt: Tagging multiple Guest Physical Networks.
+
+#. Repeat this step for second (and any additional) Guest Physical Networks, and make sure to use different tag for each of networks (as needed). Here we set it to "guestprivgtw".
+
+.. |tag-network3.png| image:: /_static/images/tag-network3.png
+   :alt: Tagging multiple Guest Physical Networks.
+
+#. In this example above, we are setting tag "guestvxlan" for Guest Physical Network (bond0.150) that continues to carry VXLAN tunnels for VPCs, and we set tag "guestprivgtw" for Guest Physical Network (bond0) that will carry Private Gateway guest networks.
+
+Next, we need to edit tags on existing Guest Network Offerings. Depending on CloudStack versions, you will need to edit database records directly.
+
+General SQL query would look like following, but please use your own judgement to reflect your environment.
+ .. code:: bash
+
+   mysql> update network_offerings set tags="guestvxlan" where traffic_type="Guest";
+
+This would set tag for all existing Guest Network Offers.
+
+Now we want to put different tag on the hidden Network Offering that is used to provision Guest networks for Private Gateways.
+
+ .. code:: bash
+
+   mysql> update network_offerings set tags="guestprivgtw" where name="System-Private-Gateway-Network-Offering";
+
+From now one, whenever you provision regular Guest Network (private tiers, part of VPC), these networks will be created on Guest Physical Network with tag "guestvxlan", while Private Gateway Guest networks will be created on Guest Physical Network with tag "guestprivgtw".
diff --git a/source/storage.rst b/source/storage.rst
index 1c1396e..7c3b013 100644
--- a/source/storage.rst
+++ b/source/storage.rst
@@ -66,7 +66,7 @@
    Offerings).
 
 
-Runtime Behavior of Primary Storage
+Runtime Behaviour of Primary Storage
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
 Root volumes are created automatically when a virtual machine is
@@ -414,7 +414,7 @@
 VM Storage Migration
 ~~~~~~~~~~~~~~~~~~~~
 
-Supported in XenServer, KVM, and VMware.
+Supported in XenServer, VMware and KVM
 
 .. note:: 
    This procedure is different from moving disk volumes from one VM to 
@@ -446,6 +446,10 @@
    running when the live migration operation is requested.
 
 
+For KVM, live storage migration is available from the 4.11 release
+and currently only supports migration from NFS/CEPH to SolidFire Managed Storage.
+
+
 Migrating a Data Volume to a New Storage Pool
 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
@@ -458,11 +462,9 @@
    attach it to a new VM.
 
 
-Migrating Storage For a Running VM
+Migrating Storage For a Running VM on XenServer and VMware
 ''''''''''''''''''''''''''''''''''
 
-(Supported on XenServer and VMware)
-
 #. Log in to the CloudStack UI as a user or admin.
 
 #. In the left navigation bar, click Instances, click the VM name, and
@@ -480,6 +482,46 @@
 #. Watch for the volume status to change to Migrating, then back to
    Ready.
 
+Migrating Storage For a Running VM on KVM
+'''''''''''''''''''''''''''''''''''''''''
+
+KVM live storage migration is currently supported only from CEPH and NFS to SolidFire Managed Storage,
+and is currently only supported via API call (i.e. we can use CloudMonkey)
+
+#. Identify the VM UUID to be migrated.
+
+#. Identify the volume(s) UUID(s) which are attached to VM and needs to be migrated.
+
+#. Identify the SolidFire pool UUID to which you want to migrate VM's volumes.
+
+#. Identify suitable KVM host UUID to which the VM will be live migrated.
+
+Using CloudMonkey issue the command as in example given below:
+
+.. code:: bash
+
+   migrateVirtualMachineWithVolume virtualmachineid=ec5d3a84-2eb8-4a37-83f3-007b5013e3d9
+   hostid=bee55404-68e9-4710-bb10-ab9f4a3d357d
+   migrateto[0].pool=67654174-e2b6-4734-813d-2a4f0b027c0d migrateto[0].volume=ea390749-0194-4088-860c-71717c4efabe 
+   migrateto[1].pool=67654174-e2b6-4734-813d-2a4f0b027c0d migrateto[1].volume=3b37927b-2cd2-46d1-aeca-18d4af46bda2
+
+
+In the command above, new volumes are being created on SolidFire Managed Storage, 
+internal volume mirroring process is started via libvirt (from current storage NFS/CEPH to SolidFire)
+and at the end of the volume mirroring process, the VM live migration is done to the host defined above.
+
+In the command above we have "pairing" of volume and the storage pool to which to migrate specific volume to.
+In example above, we are migrating 2 volumes to the same SolidFire Storage Cluster, but optionally you could 
+migrate 2 volumes to 2 different SolidFire Storage Clusters.
+
+Order of volumes, as attached to VM, is NOT relevant - i.e. first volume in the migration command ( migrateto[0].volume )
+can be any DATA volume, while second volume ( migrateto[1].volume ) can be i.e. ROOT volume
+
+You can migrate only some or all of the volumes (attached to specific VM) to a new Storage Pool.
+
+Note, that depending on your configuration, you will need to change Compute/Data Disk Offerings, in case you have
+different storage tags set on CEPH/NFS versus tags on SolidFire (and in case your Compute/Data disk offerings reference these tags).
+
 
 Migrating Storage and Attaching to a Different VM
 '''''''''''''''''''''''''''''''''''''''''''''''''
@@ -798,6 +840,62 @@
    format, and will continue to work as expected.
 
 
+Disk caching (KVM)
+~~~~~~~~~~~~~~~~~~
+
+This is for advanced user only, since may cause issues with improper DB changes.
+
+Disk cache mode is the property of Compute Offering (ROOT disk) and Disk Offering (DATA disk).
+Currently, disk cache mode can only be set by editing "disk_offering" table inside "cloud" DB
+and can not be done via API/GUI (although there is "Write-cache Type" filed in the GUI on the "Add Disk Offering" wizard).
+Cache modes available are: write-back and write-through
+
+Before proceeding with changing cache mode on disks (Offerings), please make sure that you understand
+the consequences and limitations it might bring.
+
+#. If the guest storage is hosted on a clustered file system (or is read-only or is marked shareable), then the cache mode is ignored when determining if VM live migration can be allowed.
+#. If guest storage is hosted on shared storage (NFS/CEPH) libvirt will not allow VM live migration unless the cache mode is set to "none".
+#. This means that in case of NFS and CEPH, VM live migrations will not be possible, and this will also make it impossible to put host into maintenance mode (VMs being live migrated away from this host - will not work)
+
+In order to set disk write-back or write-through cache mode, we need to edit it's parent Compute Offering (for ROOT disk) or Disk Offering (for DATA disks). Please note that this means that all volumes/disks which are created from specific offering will inherit cache mode.
+
+.. code:: 
+
+   mysql> select id from disk_offering where name="8vCPU-64GB-HDD-STD-NFS";
+   +-----+
+   | id  |
+   +-----+
+   | 111 |
+   +-----+
+   1 row in set (0.00 sec)
+   mysql> select id from disk_offering where name="100GB-HDD-STD-NFS";
+   +-----+
+   | id  |
+   +-----+
+   | 114 |
+   +-----+
+   1 row in set (0.00 sec)
+   mysql> UPDATE disk_offering SET cache_mode='writeback' WHERE id in ('111','114');
+   Query OK, 2 rows affected (0.00 sec)
+   Rows matched: 2  Changed: 2  Warnings: 0
+
+In example above, we have set the write-back cache mode for a single Compute Offering and single Disk Offering.
+In order for KVM to actually pick-up the cache mode we have set, we need to stop VM and start VM. VM Reboot ("Reboot Instance" button)
+via GUI will not be enough.
+
+After VM is started we can confirm that the both the ROOT and DATA disk of a VM have cache mode set to write-back:
+
+.. code:: bash
+
+   root@ix1-c7-4:~# virsh dumpxml i-2-10-VM | grep cache -A2
+      <driver name='qemu' type='qcow2' cache='writeback'/>
+      <source file='/mnt/63a3ae7b-9ea9-3884-a772-1ea939ef6ec3/1b655159-ae10-41cf-8987-f1cfb47fe453'/>
+      <target dev='vda' bus='virtio'/>
+      ...
+      <driver name='qemu' type='qcow2' cache='writeback'/>
+      <source file='/mnt/63a3ae7b-9ea9-3884-a772-1ea939ef6ec3/09bdadcb-ec6e-4dda-b37b-17b1a749257f'/>
+      <target dev='vdb' bus='virtio'/>
+
 .. |AttachDiskButton.png| image:: _static/images/attach-disk-icon.png
    :alt: Attach Disk Button.
 .. |resize-volume-icon.png| image:: _static/images/resize-volume-icon.png
@@ -810,3 +908,4 @@
    :alt: Detach Disk Button.
 .. |Migrateinstance.png| image:: _static/images/migrate-instance.png
    :alt: button to migrate a volume.
+
diff --git a/source/templates/_password.rst b/source/templates/_password.rst
index dffde52..6759a94 100644
--- a/source/templates/_password.rst
+++ b/source/templates/_password.rst
@@ -48,8 +48,8 @@
 
 #. Download the script file cloud-set-guest-password:
 
-   -  `http://download.cloud.com/templates/4.2/bindir/cloud-set-guest-password.in 
-      <http://download.cloud.com/templates/4.2/bindir/cloud-set-guest-password.in>`_
+   -  `https://download.cloudstack.org/templates/4.2/bindir/cloud-set-guest-password.in 
+      <https://download.cloudstack.org/templates/4.2/bindir/cloud-set-guest-password.in>`_
 
 #. Rename the file: