http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/30f2565d/docs/en-US/upload-template.xml
----------------------------------------------------------------------
diff --cc docs/en-US/upload-template.xml
index 9f0ae01,40b64bb..f270c89
--- a/docs/en-US/upload-template.xml
+++ b/docs/en-US/upload-template.xml
@@@ -5,63 -5,49 +5,63 @@@
  ]>
  
  <!-- 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.
 +      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.
  -->
 -
  <section id="upload-template">
 -    <title>Uploading Templates</title>
 +      <title>Uploading Templates</title>
-       <note><para>If you are uploading a template that was created using 
vSphere Client, be sure the OVA file does not contain an ISO. If it does, the 
deployment of VMs from the template will fail.</para></note>
+     <warning><title>vSphere Templates and ISOs</title><para>If you are 
uploading a template that was created using vSphere Client, be sure the OVA 
file does not contain an ISO. If it does, the deployment of VMs from the 
template will fail.</para></warning>
 -    <para>Templates are uploaded based on a URL. HTTP is the supported access 
protocol. Templates are frequently large files. You can optionally gzip them to 
decrease upload times.</para>
 -    <para>To upload a template:</para>
 -    <orderedlist>
 -        <listitem><para>In the left navigation bar, click 
Templates.</para></listitem>
 -        <listitem><para>Click Create Template.</para></listitem>
 -        <listitem><para>Provide the following:</para>
 -        <itemizedlist>
 -            <listitem><para><emphasis role="bold">Name and Display 
Text</emphasis>. These will be shown in the UI, so choose something 
descriptive.</para></listitem>
 -            <listitem><para>URL. The Management Server will download the file 
from the specified URL, such as 
http://my.web.server/filename.vhd.gz.</para></listitem>
 -            <listitem><para>Zone. Choose the zone where you want the template 
to be available, or All Zones to make it available throughout 
&PRODUCT;.</para></listitem>
 -            <listitem><para>OS Type: This helps &PRODUCT; and the hypervisor 
perform certain operations and make assumptions that improve the performance of 
the guest. Select one of the following:</para>
 -        <itemizedlist>
 -            <listitem><para>If the operating system of the stopped VM is 
listed, choose it.</para></listitem>
 -            <listitem><para>If the OS type of the stopped VM is not listed, 
choose Other.</para>
 +      <para>Templates are uploaded based on a URL. HTTP is the supported 
access protocol. Templates are frequently large files. You can optionally gzip 
them to decrease upload times.</para>
 +      <para>To upload a template:</para>
 +      <orderedlist>
 +              <listitem><para>In the left navigation bar, click 
Templates.</para></listitem>
 +              <listitem><para>Click Register Template.</para></listitem>
 +              <listitem><para>Provide the following:</para>
 +              <itemizedlist>
 +                      <listitem><para><emphasis role="bold">Name and 
Description</emphasis>. These will be shown in the UI, so
 +                                              choose something 
descriptive.</para></listitem>
 +                      <listitem><para><emphasis role="bold">URL</emphasis>. 
The Management Server will download the file from the
 +                                              specified URL, such as 
http://my.web.server/filename.vhd.gz.</para></listitem>
 +                      <listitem><para><emphasis role="bold">Zone</emphasis>. 
Choose the zone where you want the template to be
 +                                              available, or All Zones to make 
it available throughout
 +                                              &PRODUCT;.</para></listitem>
 +                      <listitem><para><emphasis role="bold">OS 
Type</emphasis>: This helps &PRODUCT; and the hypervisor perform
 +                                              certain operations and make 
assumptions that improve the performance of the
 +                                              guest. Select one of the 
following:</para>
 +                              <itemizedlist>
 +                                      <listitem><para>If the operating system 
of the stopped VM is listed, choose it.</para></listitem>
 +                                      <listitem><para>If the OS type of the 
stopped VM is not listed, choose Other.</para>
-                                       <note><para>Generally you should not 
choose an older version of the OS than the version in the image. For example, 
choosing CentOS 5.4 to support a CentOS 6.2 image will in general not work. In 
those cases you should choose Other.</para></note></listitem>
+             <note><para>You should not choose an older version of the OS than 
the version in the image. For example, choosing CentOS 5.4 to support a CentOS 
6.2 image will in general not work. In those cases you should choose 
Other.</para></note></listitem>
 -        </itemizedlist>
 -        </listitem>
 -        <listitem><para><emphasis 
role="bold">Hypervisor</emphasis></para></listitem>
 -        <listitem><para><emphasis role="bold">Format</emphasis>. The format 
of the template upload file, such as VHD or OVA.</para></listitem>
 -        <listitem><para><emphasis role="bold">Password Enabled</emphasis>. 
Choose Yes if your template has the &PRODUCT; password change script installed. 
See Adding Password Management to Your Templates</para></listitem>
 -        <listitem><para><emphasis role="bold">Extractable</emphasis>. Choose 
Yes if the template is available for extraction. If this option is selected, 
end users can download a full image of a template.</para></listitem>
 -        <listitem><para><emphasis role="bold">Public</emphasis>. Choose Yes 
to make this template accessible to all users of this &PRODUCT; installation. 
The template will appear in the Community Templates list. See <xref 
linkend="private-public-template"/></para></listitem>
 -        <listitem><para><emphasis role="bold">Featured</emphasis>. Choose Yes 
if you would like this template to be more prominent for users to select. The 
template will appear in the Featured Templates list. Only an administrator can 
make a template Featured.</para></listitem>
 -        </itemizedlist></listitem>
 -    </orderedlist>
 +                              </itemizedlist>                 
 +                      </listitem>     
 +                      <listitem><para><emphasis 
role="bold">Hypervisor</emphasis>: The supported hypervisors are listed. Select 
the desired one.</para></listitem>
 +                      <listitem><para><emphasis 
role="bold">Format</emphasis>. The format of the template upload file, such as 
VHD
 +                                              or OVA.</para></listitem>
 +                      <listitem><para><emphasis role="bold">Password 
Enabled</emphasis>. Choose Yes if your template has the
 +                                              &PRODUCT; password change 
script installed. See Adding Password
 +                                              Management to Your 
Templates</para></listitem>
 +                      <listitem><para><emphasis 
role="bold">Extractable</emphasis>. Choose Yes if the template is available for 
extraction. If this option is selected, end users can 
 +                               download a full image of a 
template.</para></listitem>
 +                      <listitem><para><emphasis 
role="bold">Public</emphasis>. Choose Yes to make this template accessible to 
all
 +                                              users of this &PRODUCT; 
installation. The template will appear in the
 +                                              Community Templates list. See 
<xref linkend="private-public-template"/>.</para></listitem>
 +                      <listitem><para><emphasis 
role="bold">Featured</emphasis>. Choose Yes if you would like this template to 
be
 +                                              more prominent for users to 
select. The template will appear in the Featured
 +                                              Templates list. Only an 
administrator can make a template Featured.</para></listitem>
 +                      </itemizedlist></listitem>
 +              
 +      </orderedlist>
  </section>

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/30f2565d/docs/en-US/using-multiple-guest-networks.xml
----------------------------------------------------------------------
diff --cc docs/en-US/using-multiple-guest-networks.xml
index 7a8ea48,9076a81..4e7da1e
--- a/docs/en-US/using-multiple-guest-networks.xml
+++ b/docs/en-US/using-multiple-guest-networks.xml
@@@ -5,28 -5,29 +5,28 @@@
  ]>
  
  <!-- 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.
 +    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.
  -->
 -
  <section id="using-multiple-guest-networks">
 -    <title>Using Multiple Guest Networks</title>
 -    <para>In zones that use advanced networking, additional networks for 
guest traffic may be added at any time after the initial installation. You can 
also customize the domain name associated with the network by specifying a DNS 
suffix for each network.</para>
 -    <para>A VM's networks are defined at VM creation time.  A VM cannot add 
or remove networks after it has been created, although the user can go into the 
guest and remove the IP address from the NIC on a particular network.</para>
 -    <para>Each VM has just one default network.  The virtual router's DHCP 
reply will set the guest's default gateway as that for the default network.  
Multiple non-default networks may be added to a guest in addition to the 
single, required default network. The administrator can control which networks 
are available as the default network.</para>
 +      <title>Using Multiple Guest Networks</title>
 +      <para>In zones that use advanced networking, additional networks for 
guest traffic may be added at any time after the initial installation. You can 
also customize the domain name associated with the network by specifying a DNS 
suffix for each network.</para>
 +      <para>A VM's networks are defined at VM creation time.  A VM cannot add 
or remove networks after it has been created, although the user can go into the 
guest and remove the IP address from the NIC on a particular network.</para>
 +      <para>Each VM has just one default network.  The virtual router's DHCP 
reply will set the guest's default gateway as that for the default network.  
Multiple non-default networks may be added to a guest in addition to the 
single, required default network. The administrator can control which networks 
are available as the default network.</para>
-       <para>Additional networks can either be available to all accounts or be 
assigned to a specific account.  Networks that are available to all accounts 
are zone-wide.  Any user with access to the zone can create a VM with access to 
that network.  These zone-wide networks provide little or no isolation between 
guests. Networks that are assigned to a specific account provide strong 
isolation.</para>
+     <para>Additional networks can either be available to all accounts or be 
assigned to a specific account. Networks that are available to all accounts are 
zone-wide. Any user with access to the zone can create a VM with access to that 
network.  These zone-wide networks provide little or no isolation between 
guests.Networks that are assigned to a specific account provide strong 
isolation.</para>
      <xi:include href="add-additional-guest-network.xml" 
xmlns:xi="http://www.w3.org/2001/XInclude"; />
      <xi:include href="change-network-offering-on-guest-network.xml" 
xmlns:xi="http://www.w3.org/2001/XInclude"; />
  </section>

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/30f2565d/docs/en-US/vcenter-maintenance-mode.xml
----------------------------------------------------------------------
diff --cc docs/en-US/vcenter-maintenance-mode.xml
index 2ed7162,fb896b2..d36dd7c
--- a/docs/en-US/vcenter-maintenance-mode.xml
+++ b/docs/en-US/vcenter-maintenance-mode.xml
@@@ -33,9 -34,8 +33,9 @@@
          <orderedlist numeration="loweralpha">
              <listitem><para>First use vCenter to exit the vCenter maintenance 
mode.</para>
              <para>This makes the host ready for &PRODUCT; to reactivate 
it.</para></listitem>
-             <listitem><para>Then use &PRODUCT;'s administrator UI to cancel 
the &PRODUCT; maintenance mode.</para>
-            <para>When the host comes back online, the VMs that were migrated 
off of it are migrated back to it and new VMs can be added.</para></listitem>
+             <listitem><para>Then use &PRODUCT;'s administrator UI to cancel 
the &PRODUCT; maintenance mode</para>
+            <para>When the host comes back online, the VMs that were migrated 
off of it may be migrated back to it manually and new VMs can be 
added.</para></listitem>
 -          </orderedlist></listitem>
 +          </orderedlist></listitem>        
         </orderedlist>
 +    
  </section>

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/30f2565d/docs/en-US/vm-lifecycle.xml
----------------------------------------------------------------------
diff --cc docs/en-US/vm-lifecycle.xml
index da526a5,ce09b0d..15d9f7d
--- a/docs/en-US/vm-lifecycle.xml
+++ b/docs/en-US/vm-lifecycle.xml
@@@ -23,21 -23,20 +23,21 @@@
  -->
  
  <section id="vm-lifecycle">
 -    <title>VM Lifecycle</title>
 -    <para>Virtual machines can be in the following states:</para>
 -    <mediaobject>
 -        <imageobject>
 -            <imagedata fileref="./images/basic-deployment.png" />
 -        </imageobject>
 +      <title>VM Lifecycle</title>
 +      <para>Virtual machines can be in the following states:</para>
 +      <mediaobject>
 +              <imageobject>
 +                      <imagedata fileref="./images/vm-lifecycle.png" />
 +              </imageobject>
-               <textobject><phrase>basic_deployment.png: Basic two-machine 
CloudStack deployment</phrase></textobject>
+         <textobject><phrase>basic-deployment.png: Basic two-machine &PRODUCT; 
deployment</phrase></textobject>
 -    </mediaobject>
 -    <para>Once a virtual machine is destroyed, it cannot be recovered. All 
the resources used by the virtual machine will be reclaimed by the system. This 
includes the virtual machine’s IP address.</para>
 -    <para>A stop will attempt to gracefully shut down the operating system, 
which typically involves terminating all the running applications. If the 
operation system cannot be stopped, it will be forcefully terminated. This has 
the same effect as pulling the power cord to a physical machine.</para>
 -    <para>A reboot is a stop followed by a start.</para>
 -    <para>&PRODUCT; preserves the state of the virtual machine hard disk 
until the machine is destroyed.</para>
 -    <para>A running virtual machine may fail because of hardware or network 
issues. A failed virtual machine is in the down state.</para>
 -    <para>The system places the virtual machine into the down state if it 
does not receive the heartbeat from the hypervisor for three minutes.</para>
 -    <para>The user can manually restart the virtual machine from the down 
state.</para>
 -    <para>The system will start the virtual machine from the down state 
automatically if the virtual machine is marked as HA-enabled.</para>
 +      </mediaobject>
 +      <para>Once a virtual machine is destroyed, it cannot be recovered. All 
the resources used by the virtual machine will be reclaimed by the system. This 
includes the virtual machine’s IP address.</para>
 +      <para>A stop will attempt to gracefully shut down the operating system, 
which typically involves terminating all the running applications. If the 
operation system cannot be stopped, it will be forcefully terminated. This has 
the same effect as pulling the power cord to a physical machine.</para>
 +      <para>A reboot is a stop followed by a start.</para>
 +      <para>&PRODUCT; preserves the state of the virtual machine hard disk 
until the machine is destroyed.</para>
 +      <para>A running virtual machine may fail because of hardware or network 
issues. A failed virtual machine is in the down state.</para>
 +      <para>The system places the virtual machine into the down state if it 
does not receive the heartbeat from the hypervisor for three minutes.</para>
 +      <para>The user can manually restart the virtual machine from the down 
state.</para>
 +      <para>The system will start the virtual machine from the down state 
automatically if the virtual machine is marked as HA-enabled.</para>
  </section>
 +

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/30f2565d/docs/en-US/windows-installation.xml
----------------------------------------------------------------------
diff --cc docs/en-US/windows-installation.xml
index 27f90f3,541f8dd..bcecc80
--- a/docs/en-US/windows-installation.xml
+++ b/docs/en-US/windows-installation.xml
@@@ -5,25 -5,27 +5,26 @@@
  ]>
  
  <!-- 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.
 +    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.
  -->
 -
  <section id="windows-installation">
 -  <title>Windows OS Installation</title>
 +      <title>Windows OS Installation</title>
-       <para>Download the installer, CloudInstanceManager.msi, from the <ulink
-             url="http://cloudstack.org/download.html";>Download page</ulink> 
and run the installer in
-         the newly created Windows VM.</para>
+   <para>Download the installer, CloudInstanceManager.msi, from 
+     <ulink url="http://cloudstack.org/download.html";>Download page</ulink> 
+     and run the installer in the newly created Windows VM.
+   </para>
  </section>

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/30f2565d/docs/en-US/work-with-usage.xml
----------------------------------------------------------------------
diff --cc docs/en-US/work-with-usage.xml
index 40130c8,939ba63..00a7fb5
--- a/docs/en-US/work-with-usage.xml
+++ b/docs/en-US/work-with-usage.xml
@@@ -5,31 -5,32 +5,32 @@@
  ]>
  
  <!-- 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.
 +    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.
  -->
+ 
  <chapter id="work-with-usage">
 -  <title>Working with Usage</title>
 -  <para>The Usage Server is an optional, separately-installed part of 
&PRODUCT; that provides aggregated usage records which you can use to create 
billing integration for &PRODUCT;. The Usage Server works by taking data from 
the events log and creating summary usage records that you can access using the 
listUsageRecords API call. </para>
 -  <para>The usage records show the amount of resources, such as VM run time 
or template storage
 -    space, consumed by guest instances.</para>
 -  <para>The Usage Server runs at least once per day. It can be configured to 
run multiple times per day.</para>
 -  <xi:include href="configure-usage-server.xml" 
xmlns:xi="http://www.w3.org/2001/XInclude"; />
 -  <xi:include href="set-usage-limit.xml" 
xmlns:xi="http://www.w3.org/2001/XInclude"; />
 -  <xi:include href="globally-configured-limits.xml" 
xmlns:xi="http://www.w3.org/2001/XInclude"; />
 -  <xi:include href="default-account-resource-limit.xml" 
xmlns:xi="http://www.w3.org/2001/XInclude"; />    
 -  <xi:include href="per-domain-limits.xml" 
xmlns:xi="http://www.w3.org/2001/XInclude"; />    
 -</chapter>
 +    <title>Working with Usage</title>
 +    <para>The Usage Server is an optional, separately-installed part of 
&PRODUCT; that provides aggregated usage records which you can use to create 
billing integration for &PRODUCT;. The Usage Server works by taking data from 
the events log and creating summary usage records that you can access using the 
listUsageRecords API call. </para>
 +    <para>The usage records show the amount of resources, such as VM run time 
or template storage
 +        space, consumed by guest instances.</para>
 +    <para>The Usage Server runs at least once per day. It can be configured 
to run multiple times per day.</para>
 +    <xi:include href="configure-usage-server.xml" 
xmlns:xi="http://www.w3.org/2001/XInclude"; />
 +    <xi:include href="set-usage-limit.xml" 
xmlns:xi="http://www.w3.org/2001/XInclude"; />
 +    <xi:include href="globally-configured-limits.xml" 
xmlns:xi="http://www.w3.org/2001/XInclude"; />
 +    <xi:include href="default-account-resource-limit.xml" 
xmlns:xi="http://www.w3.org/2001/XInclude"; />    
 +    <xi:include href="per-domain-limits.xml" 
xmlns:xi="http://www.w3.org/2001/XInclude"; />    
 +</chapter>

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/30f2565d/docs/en-US/working-with-hosts.xml
----------------------------------------------------------------------
diff --cc docs/en-US/working-with-hosts.xml
index 9bb524d,4dcb852..83cd8b2
--- a/docs/en-US/working-with-hosts.xml
+++ b/docs/en-US/working-with-hosts.xml
@@@ -23,17 -23,17 +23,17 @@@
  -->
  
  <chapter id="working-with-hosts">
 -  <title>Working With Hosts</title>
 -  <section id="adding-hosts">
 -    <title>Adding Hosts</title>
 +    <title>Working With Hosts</title>
 +    <section id="adding-hosts">
 +        <title>Adding Hosts</title>
-         <para>Additional hosts can be added at any time to provide more 
capacity for guest VMs. For requirements and instructions, see the Installation 
Guide.</para>
+     <para>Additional hosts can be added at any time to provide more capacity 
for guest VMs. For requirements and instructions, see <xref 
linkend="host-add"/>.</para>
 -  </section>
 -  <xi:include href="scheduled-maintenance-maintenance-mode-hosts.xml" 
xmlns:xi="http://www.w3.org/2001/XInclude"; />
 -  <xi:include href="disable-enable-zones-pods-clusters.xml" 
xmlns:xi="http://www.w3.org/2001/XInclude"; />
 -  <xi:include href="removing-hosts.xml" 
xmlns:xi="http://www.w3.org/2001/XInclude"; />
 -  <xi:include href="re-install-hosts.xml" 
xmlns:xi="http://www.w3.org/2001/XInclude"; />
 -  <xi:include href="maintain-hypervisors-on-hosts.xml" 
xmlns:xi="http://www.w3.org/2001/XInclude"; />
 -  <xi:include href="change-host-password.xml" 
xmlns:xi="http://www.w3.org/2001/XInclude"; />
 -  <xi:include href="host-allocation.xml" 
xmlns:xi="http://www.w3.org/2001/XInclude"; />
 -  <xi:include href="vlan-provisioning.xml" 
xmlns:xi="http://www.w3.org/2001/XInclude"; />
 -</chapter>
 +    </section>
 +    <xi:include href="scheduled-maintenance-maintenance-mode-hosts.xml" 
xmlns:xi="http://www.w3.org/2001/XInclude"; />
 +    <xi:include href="disable-enable-zones-pods-clusters.xml" 
xmlns:xi="http://www.w3.org/2001/XInclude"; />
 +    <xi:include href="removing-hosts.xml" 
xmlns:xi="http://www.w3.org/2001/XInclude"; />
 +    <xi:include href="re-install-hosts.xml" 
xmlns:xi="http://www.w3.org/2001/XInclude"; />
 +    <xi:include href="maintain-hypervisors-on-hosts.xml" 
xmlns:xi="http://www.w3.org/2001/XInclude"; />
 +    <xi:include href="change-host-password.xml" 
xmlns:xi="http://www.w3.org/2001/XInclude"; />
 +    <xi:include href="host-allocation.xml" 
xmlns:xi="http://www.w3.org/2001/XInclude"; />
 +    <xi:include href="vlan-provisioning.xml" 
xmlns:xi="http://www.w3.org/2001/XInclude"; />
 +</chapter>

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/30f2565d/docs/en-US/working-with-snapshots.xml
----------------------------------------------------------------------
diff --cc docs/en-US/working-with-snapshots.xml
index 1d8dbd9,d6b1458..82456dd
--- a/docs/en-US/working-with-snapshots.xml
+++ b/docs/en-US/working-with-snapshots.xml
@@@ -5,33 -5,28 +5,31 @@@
  ]>
  
  <!-- 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.
 +      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.
  -->
 -
  <section id="working-with-snapshots">
 -    <title>Working with Snapshots</title>
 +      <title>Working with Snapshots</title>
-       <para>(Supported for the following hypervisors: <emphasis 
role="bold">XenServer</emphasis>,
-                       <emphasis role="bold">VMware vSphere</emphasis>, and 
<emphasis role="bold"
-                       >KVM</emphasis>)</para>
-       <para>&PRODUCT; supports snapshots of disk volumes. Snapshots are a 
point-in-time capture of virtual machine disks. Memory and CPU states are not 
captured. If you are using the Oracle VM hypervisor, you can not take 
snapshots, since OVM does not support them.</para>
-       <para>Snapshots may be taken for volumes, including both root and data 
disks (except when the Oracle VM hypervisor is used, which does not support 
snapshots). The administrator places a limit on the number of stored snapshots 
per user. Users can create new volumes from the snapshot for recovery of 
particular files and they can create templates from snapshots to boot from a 
restored disk.</para>
+     <para>(Supported for the following hypervisors: <emphasis 
role="bold">XenServer</emphasis>, <emphasis role="bold">VMware 
vSphere</emphasis>, and <emphasis role="bold">KVM</emphasis>)</para>
+     <para>&PRODUCT; supports snapshots of disk volumes. Snapshots are a 
point-in-time capture of virtual machine disks. Memory and CPU states are not 
captured. <!-- If you are using the Oracle VM hypervisor, you can not take 
snapshots, since OVM does not support them. --></para>
+     <para>Snapshots may be taken for volumes, including both root and data 
disks. The administrator places a limit on the number of stored snapshots per 
user. Users can create new volumes from the snapshot for recovery of particular 
files and they can create templates from snapshots to boot from a restored 
disk.</para>
 -    <para>Users can create snapshots manually or by setting up automatic 
recurring snapshot policies. Users can also create disk volumes from snapshots, 
which may be attached to a VM like any other disk volume. Snapshots of both 
root disks and data disks are supported. However, &PRODUCT; does not currently 
support booting a VM from a recovered root disk. A disk recovered from snapshot 
of a root disk is treated as a regular data disk; the data on recovered disk 
can be accessed by attaching the disk to a VM.</para>
 -    <para>A completed snapshot is copied from primary storage to secondary 
storage, where it is stored until deleted or purged by newer snapshot.</para>
 +      <para>Users can create snapshots manually or by setting up automatic 
recurring snapshot policies. Users can also create disk volumes from snapshots, 
which may be attached to a VM like any other disk volume. Snapshots of both 
root disks and data disks are supported. However, &PRODUCT; does not currently 
support booting a VM from a recovered root disk. A disk recovered from snapshot 
of a root disk is treated as a regular data disk; the data on recovered disk 
can be accessed by attaching the disk to a VM.</para>
 +      <para>A completed snapshot is copied from primary storage to secondary 
storage, where it is stored until deleted or purged by newer snapshot.</para>
 +      <xi:include href="automatic-snapshot-creation-retention.xml" 
xmlns:xi="http://www.w3.org/2001/XInclude"; />
 +      <xi:include href="incremental-snapshots-backup.xml" 
xmlns:xi="http://www.w3.org/2001/XInclude"; />
 +      <xi:include href="volume-status.xml" 
xmlns:xi="http://www.w3.org/2001/XInclude"; />
 +      <xi:include href="snapshot-restore.xml" 
xmlns:xi="http://www.w3.org/2001/XInclude"; />
  </section>

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/30f2565d/docs/en-US/working-with-volumes.xml
----------------------------------------------------------------------
diff --cc docs/en-US/working-with-volumes.xml
index 1a9d297,1179120..ab567d2
--- a/docs/en-US/working-with-volumes.xml
+++ b/docs/en-US/working-with-volumes.xml
@@@ -23,16 -23,26 +23,27 @@@
  -->
  
  <section id="working-with-volumes">
-       <title>Working With Volumes</title>
-       <para>A volume provides storage to a guest VM.  The volume can provide 
for a root disk or an additional data disk.  &PRODUCT; supports additional 
volumes for guest VMs.</para>
-       <para>Volumes are created for a specific hypervisor type.   A volume 
that has been attached to guest using one hypervisor type (e.g, XenServer) may 
not be attached to a guest that is using another hypervisor type (e.g. vSphere, 
Oracle VM, KVM).  This is because the different hypervisors use different disk 
image formats.</para>
-       <para>&PRODUCT; defines a volume as a unit of storage available to a 
guest VM. Volumes are either root disks or data disks. The root disk has 
“/” in the file system and is usually the boot device. Data disks provide 
for additional storage (e.g. As “/opt” or “D:”). Every guest VM has a 
root disk, and VMs can also optionally have a data disk. End users can mount 
multiple data disks to guest VMs. Users choose data disks from the disk 
offerings created by administrators. The user can create a template from a 
volume as well; this is the standard procedure for private template creation.  
Volumes are hypervisor-specific: a volume from one hypervisor type may not be 
used on a guest of another hypervisor type.</para>       
-       <xi:include href="creating-new-volumes.xml" 
xmlns:xi="http://www.w3.org/2001/XInclude"; />
-       <xi:include href="upload-existing-volume-to-vm.xml" 
xmlns:xi="http://www.w3.org/2001/XInclude"; />
-       <xi:include href="attaching-volume.xml" 
xmlns:xi="http://www.w3.org/2001/XInclude"; />
-       <xi:include href="detach-move-volumes.xml" 
xmlns:xi="http://www.w3.org/2001/XInclude"; />
-       <xi:include href="vm-storage-migration.xml" 
xmlns:xi="http://www.w3.org/2001/XInclude"; />
-       <xi:include href="resizing-volumes.xml" 
xmlns:xi="http://www.w3.org/2001/XInclude"; />
-       <xi:include href="volume-deletion-garbage-collection.xml" 
xmlns:xi="http://www.w3.org/2001/XInclude"; />
+     <title>Using Swift for Secondary Storage</title>
+     <para>A volume provides storage to a guest VM.  The volume can provide for
+       a root disk or an additional data disk.  &PRODUCT; supports additional
+       volumes for guest VMs.
+     </para>
+     <para>Volumes are created for a specific hypervisor type. A volume that 
has
+       been attached to guest using one hypervisor type (e.g, XenServer) may 
not
+       be attached to a guest that is using another hypervisor type (e.g. 
+       vSphere, KVM).  This is because the different hypervisors use
+       different disk image formats.
+     </para>
+     <para>&PRODUCT; defines a volume as a unit of storage available to a guest
+       VM. Volumes are either root disks or data disks. The root disk has "/"
+       in the file system and is usually the boot device. Data disks provide
+       for additional storage (e.g. As "/opt" or "D:"). Every guest VM has a 
root
+       disk, and VMs can also optionally have a data disk. End users can mount
+       multiple data disks to guest VMs. Users choose data disks from the disk
+       offerings created by administrators. The user can create a template from
+       a volume as well; this is the standard procedure for private template
+       creation. Volumes are hypervisor-specific: a volume from one hypervisor
+       type may not be used on a guest of another hypervisor type.
+     </para>    
  </section>
 +

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/30f2565d/plugins/hypervisors/vmware/src/com/cloud/network/CiscoNexusVSMDeviceManagerImpl.java
----------------------------------------------------------------------
diff --cc 
plugins/hypervisors/vmware/src/com/cloud/network/CiscoNexusVSMDeviceManagerImpl.java
index e5da562,d3dcb77..c28f259
--- 
a/plugins/hypervisors/vmware/src/com/cloud/network/CiscoNexusVSMDeviceManagerImpl.java
+++ 
b/plugins/hypervisors/vmware/src/com/cloud/network/CiscoNexusVSMDeviceManagerImpl.java
@@@ -16,13 -16,8 +16,10 @@@
  // under the License.
  package com.cloud.network;
  
- import java.util.HashMap;
- 
  import java.util.List;
- import java.util.Map;
  
 +import javax.inject.Inject;
 +
  import org.apache.log4j.Logger;
  
  import com.cloud.agent.api.StartupCommand;

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/30f2565d/plugins/hypervisors/vmware/src/com/cloud/network/element/CiscoNexusVSMElement.java
----------------------------------------------------------------------
diff --cc 
plugins/hypervisors/vmware/src/com/cloud/network/element/CiscoNexusVSMElement.java
index ab3eb34,b9567dc..98ed3f8
--- 
a/plugins/hypervisors/vmware/src/com/cloud/network/element/CiscoNexusVSMElement.java
+++ 
b/plugins/hypervisors/vmware/src/com/cloud/network/element/CiscoNexusVSMElement.java
@@@ -219,12 -216,12 +218,12 @@@ public class CiscoNexusVSMElement exten
              response.setMgmtIpAddress(vsmDeviceVO.getipaddr());
              return response;
          }
 -
 +    
      public CiscoNexusVSMResponse 
createCiscoNexusVSMDetailedResponse(CiscoNexusVSMDevice vsmDeviceVO) {
        CiscoNexusVSMResponse response = new CiscoNexusVSMResponse();
-       response.setId(vsmDeviceVO.getId());
+       response.setId(vsmDeviceVO.getUuid());
        response.setDeviceName(vsmDeviceVO.getvsmName());
 -      response.setDeviceState(vsmDeviceVO.getvsmDeviceState().toString());
 +      response.setDeviceState(vsmDeviceVO.getvsmDeviceState().toString());    
        
        response.setMgmtIpAddress(vsmDeviceVO.getipaddr());
        // The following values can be null, so check for that.
        if(vsmDeviceVO.getvsmConfigMode() != null)

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/30f2565d/plugins/hypervisors/xen/src/com/cloud/hypervisor/xen/discoverer/XcpServerDiscoverer.java
----------------------------------------------------------------------
diff --cc 
plugins/hypervisors/xen/src/com/cloud/hypervisor/xen/discoverer/XcpServerDiscoverer.java
index f43e76f,48f9681..46eaa72
--- 
a/plugins/hypervisors/xen/src/com/cloud/hypervisor/xen/discoverer/XcpServerDiscoverer.java
+++ 
b/plugins/hypervisors/xen/src/com/cloud/hypervisor/xen/discoverer/XcpServerDiscoverer.java
@@@ -438,9 -437,9 +439,9 @@@ public class XcpServerDiscoverer extend
  
        if (prodBrand.equals("XenServer") && prodVersion.equals("6.0.2"))
                return new XenServer602Resource();
 -
 +      
-         if (prodBrand.equals("XenServer") && prodVersion.startsWith("6.0.9"))
-            return new XenServer602Resource();
+         if (prodBrand.equals("XenServer") && prodVersion.equals("6.1.0"))
+             return new XenServer610Resource();
  
        if(prodBrand.equals("XenServer") && prodVersion.equals("5.6.100"))  {
                String prodVersionTextShort = 
record.softwareVersion.get("product_version_text_short").trim();
@@@ -454,14 -453,14 +455,14 @@@
        if (prodBrand.equals("XCP_Kronos")) {
                return new XcpOssResource();
        }
 -
 +      
-       String msg = "Only support XCP 1.0.0, 1.1.0, 1.5 beta; XenServer 5.6,  
XenServer 5.6 FP1, XenServer 5.6 SP2, Xenserver 6.0, 6.0.2, 6.0.9 but this one 
is " + prodBrand + " " + prodVersion;
+         String msg = "Only support XCP 1.0.0, 1.1.0, 1.5 beta; XenServer 5.6, 
 XenServer 5.6 FP1, XenServer 5.6 SP2, Xenserver 6.0, 6.0.2, 6.1.0 but this one 
is " + prodBrand + " " + prodVersion;
 -        _alertMgr.sendAlert(AlertManager.ALERT_TYPE_HOST, dcId, podId, msg, 
msg);
 -        s_logger.debug(msg);
 -        throw new RuntimeException(msg);
 +                      _alertMgr.sendAlert(AlertManager.ALERT_TYPE_HOST, dcId, 
podId, msg, msg);
 +      s_logger.debug(msg);
 +      throw new RuntimeException(msg);
  
      }
 -
 +    
      protected void serverConfig() {      
          String value = _params.get(Config.XenSetupMultipath.key());
          _setupMultipath = Boolean.parseBoolean(value);

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/30f2565d/plugins/hypervisors/xen/src/com/cloud/hypervisor/xen/resource/CitrixResourceBase.java
----------------------------------------------------------------------
diff --cc 
plugins/hypervisors/xen/src/com/cloud/hypervisor/xen/resource/CitrixResourceBase.java
index 9a04903,36a12b1..b30ef23
--- 
a/plugins/hypervisors/xen/src/com/cloud/hypervisor/xen/resource/CitrixResourceBase.java
+++ 
b/plugins/hypervisors/xen/src/com/cloud/hypervisor/xen/resource/CitrixResourceBase.java
@@@ -4336,8 -4333,13 +4341,13 @@@ public abstract class CitrixResourceBas
              }
              XsLocalNetwork storageNic1 = null;
              storageNic1 = getNetworkByName(conn, _storageNetworkName1);
+             if (storageNic1 == null) {
+                 s_logger.warn("Unable to find storage network " + 
_storageNetworkName1 + " for host " + _host.ip);
+                 throw new IllegalArgumentException("Unable to find storage 
network " + _storageNetworkName1 + " for host " + _host.ip);
+             } else {
 -                _host.storageNetwork1 = 
storageNic1.getNetworkRecord(conn).uuid;
 -                _host.storagePif1 = storageNic1.getPifRecord(conn).uuid;
 +            _host.storageNetwork1 = storageNic1.getNetworkRecord(conn).uuid;
 +            _host.storagePif1 = storageNic1.getPifRecord(conn).uuid;
+             }
  
              XsLocalNetwork storageNic2 = null;
              if (_storageNetworkName2 != null) {
@@@ -6525,7 -6521,14 +6535,14 @@@
                          } finally {
                              deleteSnapshotBackup(conn, dcId, accountId, 
volumeId, secondaryStorageMountPath, snapshotBackupUuid);
                          }
+                     } else if (cmd.getS3() != null) {
+                         try {
+                             backupSnapshotToS3(conn, cmd.getS3(), 
snapshotSr.getUuid(conn), snapshotBackupUuid, isISCSI, wait);
+                             snapshotBackupUuid = snapshotBackupUuid + ".vhd";
+                         } finally {
+                             deleteSnapshotBackup(conn, dcId, accountId, 
volumeId, secondaryStorageMountPath, snapshotBackupUuid);
+                         }
 -                    }
 +                    }                    
                      success = true;
                  } finally {
                      if( snapshotSr != null) {

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/30f2565d/plugins/network-elements/elastic-loadbalancer/src/com/cloud/network/element/ElasticLoadBalancerElement.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/30f2565d/plugins/network-elements/elastic-loadbalancer/src/com/cloud/network/lb/ElasticLoadBalancerManagerImpl.java
----------------------------------------------------------------------
diff --cc 
plugins/network-elements/elastic-loadbalancer/src/com/cloud/network/lb/ElasticLoadBalancerManagerImpl.java
index f1eb791,736307b..e6dc1e8
--- 
a/plugins/network-elements/elastic-loadbalancer/src/com/cloud/network/lb/ElasticLoadBalancerManagerImpl.java
+++ 
b/plugins/network-elements/elastic-loadbalancer/src/com/cloud/network/lb/ElasticLoadBalancerManagerImpl.java
@@@ -30,11 -30,10 +30,12 @@@ import java.util.concurrent.ScheduledEx
  import java.util.concurrent.TimeUnit;
  
  import javax.ejb.Local;
 +import javax.inject.Inject;
  import javax.naming.ConfigurationException;
  
+ import 
org.apache.cloudstack.api.command.user.loadbalancer.CreateLoadBalancerRuleCmd;
  import org.apache.log4j.Logger;
 +import org.springframework.stereotype.Component;
  
  import com.cloud.agent.AgentManager;
  import com.cloud.agent.AgentManager.OnError;
@@@ -137,13 -136,12 +137,13 @@@ import com.cloud.vm.VirtualMachineProfi
  import com.cloud.vm.dao.DomainRouterDao;
  import com.cloud.vm.dao.NicDao;
  
 +@Component
  @Local(value = { ElasticLoadBalancerManager.class })
  public class ElasticLoadBalancerManagerImpl implements
-         ElasticLoadBalancerManager, Manager,  
VirtualMachineGuru<DomainRouterVO> {
+ ElasticLoadBalancerManager, Manager,  VirtualMachineGuru<DomainRouterVO> {
      private static final Logger s_logger = Logger
              .getLogger(ElasticLoadBalancerManagerImpl.class);
 -
 +    
      @Inject
      IPAddressDao _ipAddressDao;
      @Inject
@@@ -338,9 -334,10 +336,10 @@@
          return elbVm;
      }
  
+     @Override
      public boolean applyLoadBalancerRules(Network network,
              List<? extends FirewallRule> rules)
 -                    throws ResourceUnavailableException {
 +            throws ResourceUnavailableException {
          if (rules == null || rules.isEmpty()) {
              return true;
          }
@@@ -408,9 -405,7 +407,7 @@@
                  true, null, true, VirtualMachine.Type.ElasticLoadBalancerVm, 
true);
          
_elasticLbVmOffering.setUniqueName(ServiceOffering.elbVmDefaultOffUniqueName);
          _elasticLbVmOffering = 
_serviceOfferingDao.persistSystemServiceOffering(_elasticLbVmOffering);
 -
 +        
-         
-         
          String enabled = 
_configDao.getValue(Config.ElasticLoadBalancerEnabled.key());
          _enabled = (enabled == null) ? false: Boolean.parseBoolean(enabled);
          s_logger.info("Elastic Load balancer enabled: " + _enabled);
@@@ -431,8 -426,7 +428,7 @@@
              _gcThreadPool.scheduleAtFixedRate(new CleanupThread(), 
gcIntervalMinutes, gcIntervalMinutes, TimeUnit.MINUTES);
              _itMgr.registerGuru(VirtualMachine.Type.ElasticLoadBalancerVm, 
this);
          }
 -
 +        
- 
          return true;
      }
  
@@@ -486,9 -480,8 +482,8 @@@
                  s_logger.debug("Starting a ELB vm for network configurations: 
" + guestNetwork + " in " + dest);
              }
              assert guestNetwork.getState() == Network.State.Implemented 
 -                    || guestNetwork.getState() == Network.State.Setup 
 +                || guestNetwork.getState() == Network.State.Setup 
-                 || guestNetwork.getState() == Network.State.Implementing 
-                 : "Network is not yet fully implemented: "+ guestNetwork;
+                     || guestNetwork.getState() == Network.State.Implementing 
: "Network is not yet fully implemented: " + guestNetwork;
  
              DataCenterDeployment plan = null;
              DomainRouterVO elbVm = null;
@@@ -555,8 -546,7 +548,7 @@@
              return null;
          }
      }
 -
 +    
-     
      private DomainRouterVO stop(DomainRouterVO elbVm, boolean forced, User 
user, Account caller) throws ConcurrentOperationException, 
ResourceUnavailableException {
          s_logger.debug("Stopping ELB vm " + elbVm);
          try {

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/30f2565d/plugins/network-elements/f5/src/com/cloud/network/element/F5ExternalLoadBalancerElement.java
----------------------------------------------------------------------
diff --cc 
plugins/network-elements/f5/src/com/cloud/network/element/F5ExternalLoadBalancerElement.java
index bcb7c8b,735814c..33fae86
--- 
a/plugins/network-elements/f5/src/com/cloud/network/element/F5ExternalLoadBalancerElement.java
+++ 
b/plugins/network-elements/f5/src/com/cloud/network/element/F5ExternalLoadBalancerElement.java
@@@ -23,11 -23,10 +23,12 @@@ import java.util.Map
  import java.util.Set;
  
  import javax.ejb.Local;
 +import javax.inject.Inject;
  
  import org.apache.log4j.Logger;
 +import org.springframework.stereotype.Component;
  
+ import com.cloud.api.ApiDBUtils;
  import com.cloud.api.commands.AddExternalLoadBalancerCmd;
  import com.cloud.api.commands.AddF5LoadBalancerCmd;
  import com.cloud.api.commands.ConfigureF5LoadBalancerCmd;
@@@ -80,8 -80,9 +82,8 @@@ import com.cloud.network.rules.LbSticki
  import com.cloud.network.rules.LbStickinessMethod.StickinessMethodType;
  import com.cloud.offering.NetworkOffering;
  import com.cloud.resource.ServerResource;
- import com.cloud.server.api.response.ExternalLoadBalancerResponse;
+ import org.apache.cloudstack.api.response.ExternalLoadBalancerResponse;
  import com.cloud.utils.NumbersUtil;
 -import com.cloud.utils.component.Inject;
  import com.cloud.utils.exception.CloudRuntimeException;
  import com.cloud.vm.NicProfile;
  import com.cloud.vm.ReservationContext;

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/30f2565d/plugins/network-elements/juniper-srx/src/com/cloud/network/element/JuniperSRXExternalFirewallElement.java
----------------------------------------------------------------------
diff --cc 
plugins/network-elements/juniper-srx/src/com/cloud/network/element/JuniperSRXExternalFirewallElement.java
index 6ff46c5,0479648..ba0d7a8
--- 
a/plugins/network-elements/juniper-srx/src/com/cloud/network/element/JuniperSRXExternalFirewallElement.java
+++ 
b/plugins/network-elements/juniper-srx/src/com/cloud/network/element/JuniperSRXExternalFirewallElement.java
@@@ -23,11 -23,10 +23,12 @@@ import java.util.Map
  import java.util.Set;
  
  import javax.ejb.Local;
 +import javax.inject.Inject;
  
  import org.apache.log4j.Logger;
 +import org.springframework.stereotype.Component;
  
+ import com.cloud.api.ApiDBUtils;
  import com.cloud.api.commands.AddExternalFirewallCmd;
  import com.cloud.api.commands.AddSrxFirewallCmd;
  import com.cloud.api.commands.ConfigureSrxFirewallCmd;
@@@ -81,18 -82,18 +84,18 @@@ import com.cloud.network.rules.StaticNa
  import com.cloud.offering.NetworkOffering;
  import com.cloud.offerings.dao.NetworkOfferingDao;
  import com.cloud.resource.ServerResource;
- import com.cloud.server.api.response.ExternalFirewallResponse;
+ import org.apache.cloudstack.api.response.ExternalFirewallResponse;
  import com.cloud.utils.NumbersUtil;
 -import com.cloud.utils.component.Inject;
  import com.cloud.utils.exception.CloudRuntimeException;
  import com.cloud.vm.NicProfile;
  import com.cloud.vm.ReservationContext;
  import com.cloud.vm.VirtualMachine;
  import com.cloud.vm.VirtualMachineProfile;
  
 +@Component
  @Local(value = NetworkElement.class)
  public class JuniperSRXExternalFirewallElement extends 
ExternalFirewallDeviceManagerImpl implements SourceNatServiceProvider, 
FirewallServiceProvider,
-         PortForwardingServiceProvider, RemoteAccessVPNServiceProvider, 
IpDeployer, JuniperSRXFirewallElementService {
+         PortForwardingServiceProvider, RemoteAccessVPNServiceProvider, 
IpDeployer, JuniperSRXFirewallElementService, StaticNatServiceProvider {
  
      private static final Logger s_logger = 
Logger.getLogger(JuniperSRXExternalFirewallElement.class);
  

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/30f2565d/plugins/network-elements/netscaler/src/com/cloud/network/element/NetscalerElement.java
----------------------------------------------------------------------
diff --cc 
plugins/network-elements/netscaler/src/com/cloud/network/element/NetscalerElement.java
index 5f1b8f2,be9fc6f..30c51ee
--- 
a/plugins/network-elements/netscaler/src/com/cloud/network/element/NetscalerElement.java
+++ 
b/plugins/network-elements/netscaler/src/com/cloud/network/element/NetscalerElement.java
@@@ -96,8 -99,8 +101,7 @@@ import com.cloud.network.rules.LbSticki
  import com.cloud.network.rules.LbStickinessMethod.StickinessMethodType;
  import com.cloud.network.rules.StaticNat;
  import com.cloud.offering.NetworkOffering;
- import com.cloud.resource.ServerResource;
  import com.cloud.utils.NumbersUtil;
 -import com.cloud.utils.component.Inject;
  import com.cloud.utils.db.DB;
  import com.cloud.utils.db.Transaction;
  import com.cloud.utils.exception.CloudRuntimeException;
@@@ -108,12 -111,13 +112,14 @@@ import com.cloud.vm.VirtualMachine
  import com.cloud.vm.VirtualMachineProfile;
  import com.google.gson.Gson;
  
 +@Component
  @Local(value = NetworkElement.class)
  public class NetscalerElement extends ExternalLoadBalancerDeviceManagerImpl 
implements LoadBalancingServiceProvider, NetscalerLoadBalancerElementService, 
ExternalLoadBalancerDeviceManager, IpDeployer,
-         StaticNatServiceProvider {
+ StaticNatServiceProvider {
  
      private static final Logger s_logger = 
Logger.getLogger(NetscalerElement.class);
+     public static final AutoScaleCounterType AutoScaleCounterSnmp = new 
AutoScaleCounterType("snmp");
+     public static final AutoScaleCounterType AutoScaleCounterNetscaler = new 
AutoScaleCounterType("netscaler");
  
      @Inject
      NetworkManager _networkManager;
@@@ -145,10 -149,11 +151,11 @@@
      NetScalerPodDao _netscalerPodDao;
      @Inject
      DataCenterIpAddressDao _privateIpAddressDao;
 -
 +   
      private boolean canHandle(Network config, Service service) {
          DataCenter zone = _dcDao.findById(config.getDataCenterId());
-         boolean handleInAdvanceZone = (zone.getNetworkType() == 
NetworkType.Advanced && config.getGuestType() == Network.GuestType.Isolated && 
config.getTrafficType() == TrafficType.Guest);
+         boolean handleInAdvanceZone = (zone.getNetworkType() == 
NetworkType.Advanced &&
+                 (config.getGuestType() == Network.GuestType.Isolated || 
config.getGuestType() == Network.GuestType.Shared) && config.getTrafficType() 
== TrafficType.Guest);
          boolean handleInBasicZone = (zone.getNetworkType() == 
NetworkType.Basic && config.getGuestType() == Network.GuestType.Shared && 
config.getTrafficType() == TrafficType.Guest);
  
          if (!(handleInAdvanceZone || handleInBasicZone)) {
@@@ -608,8 -615,10 +617,10 @@@
              for (Service service : services) {
                  servicesList += service.getName() + " ";
              }
 -            s_logger.warn("NetScaler network element can only support LB and 
Static NAT services and service combination "
 +            s_logger.warn("NetScaler network element can only support LB and 
Static NAT services and service combination " 
                  + servicesList + " is not supported.");
+             s_logger.warn("NetScaler network element can only support LB and 
Static NAT services and service combination "
+                     + services + " is not supported.");
              return false;
          }
  

Reply via email to