You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cloudstack.apache.org by wi...@apache.org on 2012/08/11 23:10:17 UTC

[10/11] docs: Fix indentation according to coding convention

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/dcfa5a50/docs/en-US/removed-API-commands.xml
----------------------------------------------------------------------
diff --git a/docs/en-US/removed-API-commands.xml b/docs/en-US/removed-API-commands.xml
index ff29efb..51bb7cf 100644
--- a/docs/en-US/removed-API-commands.xml
+++ b/docs/en-US/removed-API-commands.xml
@@ -22,11 +22,11 @@
  under the License.
 -->
 
-	<section id="removed-API-commands">
-		<title>Removed API commands</title>
-			<itemizedlist>
-			<listitem><para>createConfiguration (Adds configuration value)</para></listitem>
-			<listitem><para>configureSimulator (Configures simulator)</para></listitem>
-			</itemizedlist>
-	</section>
+    <section id="removed-API-commands">
+        <title>Removed API commands</title>
+            <itemizedlist>
+            <listitem><para>createConfiguration (Adds configuration value)</para></listitem>
+            <listitem><para>configureSimulator (Configures simulator)</para></listitem>
+            </itemizedlist>
+    </section>
 

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/dcfa5a50/docs/en-US/requirements-templates.xml
----------------------------------------------------------------------
diff --git a/docs/en-US/requirements-templates.xml b/docs/en-US/requirements-templates.xml
index c42ad52..f434dbe 100644
--- a/docs/en-US/requirements-templates.xml
+++ b/docs/en-US/requirements-templates.xml
@@ -23,9 +23,9 @@
 -->
 
 <section id="requirements-templates">
-	<title>Requirements for Templates</title>
-	<itemizedlist>
-		<listitem><para>For XenServer, install PV drivers / Xen tools on each template that you create.  This will enable live migration and clean guest shutdown.</para></listitem>
-		<listitem><para>For vSphere, install VMware Tools on each template that you create.  This will enable console view to work properly.</para></listitem>
+    <title>Requirements for Templates</title>
+    <itemizedlist>
+        <listitem><para>For XenServer, install PV drivers / Xen tools on each template that you create.  This will enable live migration and clean guest shutdown.</para></listitem>
+        <listitem><para>For vSphere, install VMware Tools on each template that you create.  This will enable console view to work properly.</para></listitem>
 </itemizedlist>
 </section>

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/dcfa5a50/docs/en-US/resizing-volumes.xml
----------------------------------------------------------------------
diff --git a/docs/en-US/resizing-volumes.xml b/docs/en-US/resizing-volumes.xml
index 1209cfb..471411d 100644
--- a/docs/en-US/resizing-volumes.xml
+++ b/docs/en-US/resizing-volumes.xml
@@ -23,16 +23,16 @@
 -->
 
 <section id="resizing-volumes">
-	<title>Resizing Volumes</title>
-		<para>&PRODUCT; does not provide the ability to resize root disks or data disks; the disk size is fixed based on the template used to create the VM. However, the tool <ulink url="http://vmtoolkit.com/files/folders/converters/entry87.aspx/"> VHD Resizer</ulink>), while not officially supported by Cloud.com or Citrix, might provide a workaround. To increase disk size with VHD Resizer:</para>
-		<orderedlist>
-			<listitem><para>Get the VHD from the secondary storage.</para></listitem>
-			<listitem><para>Import it into VHD Resizer.</para></listitem>
-			<listitem><para>Resize the VHD.</para></listitem>
-			<listitem><para>Upload the new VHD.</para></listitem>
-			<listitem><para>Create a new VM.</para></listitem>
-			<listitem><para>Take a snapshot, then create a new template from that snapshot.</para>
-				<para>For more information, see <ulink url="http://support.citrix.com/article/CTX118608/"> How to Resize a Provisioning Server 5 Virtual Disk </ulink> at the Citrix Knowledge Center </para></listitem>
-		</orderedlist>
+    <title>Resizing Volumes</title>
+        <para>&PRODUCT; does not provide the ability to resize root disks or data disks; the disk size is fixed based on the template used to create the VM. However, the tool <ulink url="http://vmtoolkit.com/files/folders/converters/entry87.aspx/"> VHD Resizer</ulink>), while not officially supported by Cloud.com or Citrix, might provide a workaround. To increase disk size with VHD Resizer:</para>
+        <orderedlist>
+            <listitem><para>Get the VHD from the secondary storage.</para></listitem>
+            <listitem><para>Import it into VHD Resizer.</para></listitem>
+            <listitem><para>Resize the VHD.</para></listitem>
+            <listitem><para>Upload the new VHD.</para></listitem>
+            <listitem><para>Create a new VM.</para></listitem>
+            <listitem><para>Take a snapshot, then create a new template from that snapshot.</para>
+                <para>For more information, see <ulink url="http://support.citrix.com/article/CTX118608/"> How to Resize a Provisioning Server 5 Virtual Disk </ulink> at the Citrix Knowledge Center </para></listitem>
+        </orderedlist>
 </section>
 

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/dcfa5a50/docs/en-US/response-formats.xml
----------------------------------------------------------------------
diff --git a/docs/en-US/response-formats.xml b/docs/en-US/response-formats.xml
index b836d76..7b3f93a 100644
--- a/docs/en-US/response-formats.xml
+++ b/docs/en-US/response-formats.xml
@@ -23,34 +23,34 @@
 -->
 
 <section id="response-formats">
-	<title>Response Formats: XML and JSON</title>
-	<para>CloudStack supports two formats as the response to an API call. The default response is XML. If you would like the response to be in JSON, add &amp;response=json to the Command String.</para>
-	<para>Sample XML Response:</para>
-	<programlisting>
-	 &lt;listipaddressesresponse&gt; 
-		&lt;allocatedipaddress&gt;
-		&lt;ipaddress&gt;192.168.10.141&lt;/ipaddress&gt; 
-		&lt;allocated&gt;2009-09-18T13:16:10-0700&lt;/allocated&gt; 
-		&lt;zoneid&gt;4&lt;/zoneid&gt; 
-		    &lt;zonename&gt;WC&lt;/zonename&gt; 
-		    &lt;issourcenat&gt;true&lt;/issourcenat&gt; 
-		&lt;/allocatedipaddress&gt;
-	 &lt;/listipaddressesresponse&gt;
-	</programlisting>
-	<para>Sample JSON Response:</para>
-	<programlisting>
-		{ "listipaddressesresponse" : 
-		  { "allocatedipaddress" :
-		    [ 
-		      { 
-		        "ipaddress" : "192.168.10.141", 
-		        "allocated" : "2009-09-18T13:16:10-0700",
-		        "zoneid" : "4", 
-		        "zonename" : "WC", 
-		        "issourcenat" : "true" 
-		      } 
-		    ]
-		  } 
-		} 
-	</programlisting>
+    <title>Response Formats: XML and JSON</title>
+    <para>CloudStack supports two formats as the response to an API call. The default response is XML. If you would like the response to be in JSON, add &amp;response=json to the Command String.</para>
+    <para>Sample XML Response:</para>
+    <programlisting>
+     &lt;listipaddressesresponse&gt; 
+        &lt;allocatedipaddress&gt;
+        &lt;ipaddress&gt;192.168.10.141&lt;/ipaddress&gt; 
+        &lt;allocated&gt;2009-09-18T13:16:10-0700&lt;/allocated&gt; 
+        &lt;zoneid&gt;4&lt;/zoneid&gt; 
+            &lt;zonename&gt;WC&lt;/zonename&gt; 
+            &lt;issourcenat&gt;true&lt;/issourcenat&gt; 
+        &lt;/allocatedipaddress&gt;
+     &lt;/listipaddressesresponse&gt;
+    </programlisting>
+    <para>Sample JSON Response:</para>
+    <programlisting>
+        { "listipaddressesresponse" : 
+          { "allocatedipaddress" :
+            [ 
+              { 
+                "ipaddress" : "192.168.10.141", 
+                "allocated" : "2009-09-18T13:16:10-0700",
+                "zoneid" : "4", 
+                "zonename" : "WC", 
+                "issourcenat" : "true" 
+              } 
+            ]
+          } 
+        } 
+    </programlisting>
 </section>

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/dcfa5a50/docs/en-US/responses.xml
----------------------------------------------------------------------
diff --git a/docs/en-US/responses.xml b/docs/en-US/responses.xml
index 2e33102..9f70c87 100644
--- a/docs/en-US/responses.xml
+++ b/docs/en-US/responses.xml
@@ -26,5 +26,5 @@
     <title>Responses</title>
         <xi:include href="response-formats.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
         <xi:include href="max-result-page-returned.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
-        <xi:include href="error-handling.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />	
+        <xi:include href="error-handling.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />    
 </section>

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/dcfa5a50/docs/en-US/roles.xml
----------------------------------------------------------------------
diff --git a/docs/en-US/roles.xml b/docs/en-US/roles.xml
index a4bdf7e..473e37b 100644
--- a/docs/en-US/roles.xml
+++ b/docs/en-US/roles.xml
@@ -23,13 +23,13 @@
 -->
 
 <section id="roles">
-	<title>Roles</title>
-	<para>
-		The CloudPlatform API supports three access roles:</para>
-	<orderedlist>
-		<listitem><para>Root Admin. Access to all features of the cloud, including both virtual and physical resource management.</para></listitem>
-		<listitem><para>Domain Admin. Access to only the virtual resources of the clouds that belong to the administrator’s domain.</para></listitem>
-		<listitem><para>User. Access to only the features that allow management of the user’s virtual instances, storage, and network.</para></listitem>
-	</orderedlist>
+    <title>Roles</title>
+    <para>
+        The CloudPlatform API supports three access roles:</para>
+    <orderedlist>
+        <listitem><para>Root Admin. Access to all features of the cloud, including both virtual and physical resource management.</para></listitem>
+        <listitem><para>Domain Admin. Access to only the virtual resources of the clouds that belong to the administrator’s domain.</para></listitem>
+        <listitem><para>User. Access to only the features that allow management of the user’s virtual instances, storage, and network.</para></listitem>
+    </orderedlist>
 </section>
 

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/dcfa5a50/docs/en-US/root-admin-ui-overview.xml
----------------------------------------------------------------------
diff --git a/docs/en-US/root-admin-ui-overview.xml b/docs/en-US/root-admin-ui-overview.xml
index 591614f..f59aaea 100644
--- a/docs/en-US/root-admin-ui-overview.xml
+++ b/docs/en-US/root-admin-ui-overview.xml
@@ -23,6 +23,6 @@
 -->
 
 <section id="root-admin-ui-overview">
-	<title>Root Administrator's UI Overview</title>
-	<para>The &PRODUCT; UI helps the &PRODUCT; administrator provision, view, and manage the cloud infrastructure, domains, user accounts, projects, and configuration settings. The first time you start the UI after a fresh Management Server installation, you can choose to follow a guided tour to provision your cloud infrastructure. On subsequent logins, the dashboard of the logged-in user appears. The various links in this screen and the navigation bar on the left provide access to a variety of administrative functions. The root administrator can also use the UI to perform all the same tasks that are present in the end-user’s UI.</para>
+    <title>Root Administrator's UI Overview</title>
+    <para>The &PRODUCT; UI helps the &PRODUCT; administrator provision, view, and manage the cloud infrastructure, domains, user accounts, projects, and configuration settings. The first time you start the UI after a fresh Management Server installation, you can choose to follow a guided tour to provision your cloud infrastructure. On subsequent logins, the dashboard of the logged-in user appears. The various links in this screen and the navigation bar on the left provide access to a variety of administrative functions. The root administrator can also use the UI to perform all the same tasks that are present in the end-user’s UI.</para>
 </section>

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/dcfa5a50/docs/en-US/runtime-behavior-of-primary-storage.xml
----------------------------------------------------------------------
diff --git a/docs/en-US/runtime-behavior-of-primary-storage.xml b/docs/en-US/runtime-behavior-of-primary-storage.xml
index a5231d8..c656390 100644
--- a/docs/en-US/runtime-behavior-of-primary-storage.xml
+++ b/docs/en-US/runtime-behavior-of-primary-storage.xml
@@ -23,8 +23,8 @@
 -->
 
 <section id="runtime-behavior-of-primary-storage">
-	<title>Runtime Behavior of Primary Storage</title>
-	<para>Root volumes are created automatically when a virtual machine is created. Root volumes are deleted when the VM is destroyed. Data volumes can be created and dynamically attached to VMs (although, when the Oracle VM hypervisor is used, the VM must be stopped before an additional volume can be attached). Data volumes are not deleted when VMs are destroyed.</para>
-	<para>Administrators should monitor the capacity of primary storage devices and add additional primary storage as needed.  See the Advanced Installation Guide.</para>			
-	<para>Administrators add primary storage to the system by creating a &PRODUCT; storage pool. Each storage pool is associated with a cluster.</para>
+    <title>Runtime Behavior of Primary Storage</title>
+    <para>Root volumes are created automatically when a virtual machine is created. Root volumes are deleted when the VM is destroyed. Data volumes can be created and dynamically attached to VMs (although, when the Oracle VM hypervisor is used, the VM must be stopped before an additional volume can be attached). Data volumes are not deleted when VMs are destroyed.</para>
+    <para>Administrators should monitor the capacity of primary storage devices and add additional primary storage as needed.  See the Advanced Installation Guide.</para>            
+    <para>Administrators add primary storage to the system by creating a &PRODUCT; storage pool. Each storage pool is associated with a cluster.</para>
 </section>

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/dcfa5a50/docs/en-US/search-base.xml
----------------------------------------------------------------------
diff --git a/docs/en-US/search-base.xml b/docs/en-US/search-base.xml
index 2584da9..b8fc092 100644
--- a/docs/en-US/search-base.xml
+++ b/docs/en-US/search-base.xml
@@ -26,26 +26,26 @@
     <title>Search Base</title>
 <para>An LDAP query is relative to a given node of the LDAP directory tree, called the search base. The search base is the distinguished name (DN) of a level of the directory tree below which all users can be found. The users can be in the immediate base directory or in some subdirectory. The search base may be equivalent to the organization, group, or domain name. The syntax for writing a DN varies depending on which LDAP server you are using. A full discussion of distinguished names is outside the scope of our documentation. The following table shows some examples of search bases to find users in the testing department..</para>
      
-	<informaltable>
-		<tgroup cols="2" align="left" colsep="1" rowsep="1">
-		<thead>
-			<row>
-				<entry><para>LDAP Server</para></entry>
-				<entry><para>Example Search Base DN</para></entry>																	
-			</row>
-		</thead>
-		<tbody>
-			<row>
-			<entry><para>ApacheDS</para></entry>
-				<entry><para>ou=testing,o=project</para></entry>									
-			</row>
-			<row>
-				<entry><para>Active Directory</para></entry>
-				<entry><para>OU=testing, DC=company</para></entry>
-			</row>
-		</tbody>
-		</tgroup>
-	</informaltable>
+    <informaltable>
+        <tgroup cols="2" align="left" colsep="1" rowsep="1">
+        <thead>
+            <row>
+                <entry><para>LDAP Server</para></entry>
+                <entry><para>Example Search Base DN</para></entry>                                                                    
+            </row>
+        </thead>
+        <tbody>
+            <row>
+            <entry><para>ApacheDS</para></entry>
+                <entry><para>ou=testing,o=project</para></entry>                                    
+            </row>
+            <row>
+                <entry><para>Active Directory</para></entry>
+                <entry><para>OU=testing, DC=company</para></entry>
+            </row>
+        </tbody>
+        </tgroup>
+    </informaltable>
 
 
 </section>

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/dcfa5a50/docs/en-US/search-user-bind-dn.xml
----------------------------------------------------------------------
diff --git a/docs/en-US/search-user-bind-dn.xml b/docs/en-US/search-user-bind-dn.xml
index 4c427cf..a2d8b6a 100644
--- a/docs/en-US/search-user-bind-dn.xml
+++ b/docs/en-US/search-user-bind-dn.xml
@@ -23,25 +23,25 @@
 -->
 
 <section id="search-user-bind-dn">
-	<title>Search User Bind DN</title>
-	<para>The bind DN is the user on the external LDAP server permitted to search the LDAP directory within the defined search base. When the DN is returned, the DN and passed password are used to authenticate the &PRODUCT; user with an LDAP bind. A full discussion of bind DNs is outside the scope of our documentation. The following table shows some examples of bind DNs.</para>
-	<informaltable>
-	<tgroup cols="2" align="left" colsep="1" rowsep="1">
-	<thead>
-		<row>
-			<entry><para>LDAP Server</para></entry>
-			<entry><para>Example Bind DN</para></entry>
-		</row>
-	</thead>
-	<tbody>
-		<row>
-			<entry><para>ApacheDS</para></entry>
-			<entry><para>cn=Administrator,dc=testing,ou=project,ou=org</para></entry>
-		</row>
-		<row>
-			<entry><para>Active Directory</para></entry>
-			<entry><para>CN=Administrator, OU=testing, DC=company, DC=com</para></entry></row>
-	</tbody>
-	</tgroup>
-	</informaltable>
+    <title>Search User Bind DN</title>
+    <para>The bind DN is the user on the external LDAP server permitted to search the LDAP directory within the defined search base. When the DN is returned, the DN and passed password are used to authenticate the &PRODUCT; user with an LDAP bind. A full discussion of bind DNs is outside the scope of our documentation. The following table shows some examples of bind DNs.</para>
+    <informaltable>
+    <tgroup cols="2" align="left" colsep="1" rowsep="1">
+    <thead>
+        <row>
+            <entry><para>LDAP Server</para></entry>
+            <entry><para>Example Bind DN</para></entry>
+        </row>
+    </thead>
+    <tbody>
+        <row>
+            <entry><para>ApacheDS</para></entry>
+            <entry><para>cn=Administrator,dc=testing,ou=project,ou=org</para></entry>
+        </row>
+        <row>
+            <entry><para>Active Directory</para></entry>
+            <entry><para>CN=Administrator, OU=testing, DC=company, DC=com</para></entry></row>
+    </tbody>
+    </tgroup>
+    </informaltable>
 </section>

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/dcfa5a50/docs/en-US/secondary-storage-add.xml
----------------------------------------------------------------------
diff --git a/docs/en-US/secondary-storage-add.xml b/docs/en-US/secondary-storage-add.xml
index 060c899..15e8c74 100644
--- a/docs/en-US/secondary-storage-add.xml
+++ b/docs/en-US/secondary-storage-add.xml
@@ -23,6 +23,6 @@
 -->
 
 <section id="secondary-storage-add">
-	<title>Adding Secondary Storage</title>
-	<para>TODO</para>
+    <title>Adding Secondary Storage</title>
+    <para>TODO</para>
 </section>

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/dcfa5a50/docs/en-US/set-monitor-total-vm-limits-per-host.xml
----------------------------------------------------------------------
diff --git a/docs/en-US/set-monitor-total-vm-limits-per-host.xml b/docs/en-US/set-monitor-total-vm-limits-per-host.xml
index c11b956..0cc2475 100644
--- a/docs/en-US/set-monitor-total-vm-limits-per-host.xml
+++ b/docs/en-US/set-monitor-total-vm-limits-per-host.xml
@@ -24,6 +24,6 @@
 
 <section id="set-monitor-total-vm-limits-per-host">
     <title>Set and Monitor Total VM Limits per Host</title>
-	<para>The &PRODUCT; administrator should monitor the total number of VM instances in each cluster, and disable allocation to the cluster if the total is approaching the maximum that the hypervisor can handle. Be sure to leave a safety margin to allow for the possibility of one or more hosts failing, which would increase the VM load on the other hosts as the VMs are automatically redeployed. Consult the documentation for your chosen hypervisor to find the maximum permitted number of VMs per host, then use &PRODUCT; global configuration settings to set this as the default limit. Monitor the VM activity in each cluster at all times. Keep the total number of VMs below a safe level that allows for the occasional host failure. For example, if there are N hosts in the cluster, and you want to allow for one host in the cluster to be down at any given time, the total number of VM instances you can permit in the cluster is at most (N-1) * (per-host-limit). Once a cluster reaches this number 
 of VMs, use the &PRODUCT; UI to disable allocation of more VMs to the cluster.</para>
+    <para>The &PRODUCT; administrator should monitor the total number of VM instances in each cluster, and disable allocation to the cluster if the total is approaching the maximum that the hypervisor can handle. Be sure to leave a safety margin to allow for the possibility of one or more hosts failing, which would increase the VM load on the other hosts as the VMs are automatically redeployed. Consult the documentation for your chosen hypervisor to find the maximum permitted number of VMs per host, then use &PRODUCT; global configuration settings to set this as the default limit. Monitor the VM activity in each cluster at all times. Keep the total number of VMs below a safe level that allows for the occasional host failure. For example, if there are N hosts in the cluster, and you want to allow for one host in the cluster to be down at any given time, the total number of VM instances you can permit in the cluster is at most (N-1) * (per-host-limit). Once a cluster reaches this numb
 er of VMs, use the &PRODUCT; UI to disable allocation of more VMs to the cluster.</para>
 </section>
       

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/dcfa5a50/docs/en-US/signing-api-requests.xml
----------------------------------------------------------------------
diff --git a/docs/en-US/signing-api-requests.xml b/docs/en-US/signing-api-requests.xml
index b992206..581b32a 100644
--- a/docs/en-US/signing-api-requests.xml
+++ b/docs/en-US/signing-api-requests.xml
@@ -23,38 +23,38 @@
 -->
 
 <section id="signing-api-requests">
-	<title>Signing API Requests</title>
-	<para>Whether you access the CloudStack API with HTTP or HTTPS, it must still be signed so that CloudStack can verify the caller has been authenticated and authorized to execute the command.  Make sure that you have both the API Key and Secret Key provided by the CloudStack administrator for your account before proceeding with the signing process.</para>
-	<para>To show how to sign a request, we will re-use the previous example.</para>
-	<programlisting>http://http://localhost:8080/client/api?command=deployVirtualMachine&amp;serviceOfferingId=1&amp;diskOfferingId=1&amp;templateId=2&amp;zoneId=4&amp;apiKey=miVr6X7u6bN_sdahOBpjNejPgEsT35eXq-jB8CG20YI3yaxXcgpyuaIRmFI_EJTVwZ0nUkkJbPmY3y2bciKwFQ&amp;signature=Lxx1DM40AjcXU%2FcaiK8RAP0O1hU%3D</programlisting>
-	<para>Breaking this down, we have several distinct parts to this URL.</para>
-	<itemizedlist>
-		<listitem><para>Base URL: This is the base URL to the CloudStack Management Server.</para>
-			<programlisting>http://localhost:8080</programlisting>
-		</listitem>
-		<listitem><para>API Path: This is the path to the API Servlet that processes the incoming requests.</para>
-			<programlisting>/client/api?</programlisting>
-		</listitem>
-		<listitem><para>Command String: This part of the query string comprises of the command, its parameters, and the API Key that identifies the account.</para>
-			<note><para>As with all query string parameters of field-value pairs, the "field" component is case insensitive while all "value" values are case sensitive.</para></note>
-			<programlisting>command=deployVirtualMachine&amp;serviceOfferingId=1&amp;diskOfferingId=1&amp;templateId=2&amp;zoneId=4&amp;apiKey=miVr6X7u6bN_sdahOBpjNejPgEsT35eXq-jB8CG20YI3yaxXcgpyuaIRmFI_EJTVwZ0nUkkJbPmY3y2bciKwFQ</programlisting>
-		</listitem>
-		<listitem><para>Signature: This is the hashed signature of the Base URL that is generated using a combination of the user’s Secret Key and the HMAC SHA-1 hashing algorithm.</para>
-			<para>&amp;signature=Lxx1DM40AjcXU%2FcaiK8RAP0O1hU%3D</para>
-		</listitem>
-	</itemizedlist>
-	<para>Every API request has the format Base URL+API Path+Command String+Signature.</para>
-	<para>To generate the signature.</para>
-	<orderedlist>
-		<listitem><para>For each field-value pair (as separated by a '&amp;') in the Command String, URL encode each value so that it can be safely sent via HTTP GET.</para>
-			<note><para>Make sure all spaces are encoded as "%20" rather than "+".</para></note>
-		</listitem>
-		<listitem><para>Lower case the entire Command String and sort it alphabetically via the field for each field-value pair.  The result of this step would look like the following.</para>
-			<programlisting>apikey=mivr6x7u6bn_sdahobpjnejpgest35exq-jb8cg20yi3yaxxcgpyuairmfi_ejtvwz0nukkjbpmy3y2bcikwfq&amp;command=deployvirtualmachine&amp;diskofferingid=1&amp;serviceofferingid=1&amp;templateid=2&amp;zoneid=4</programlisting>
-		</listitem>
-		<listitem><para>Take the sorted Command String and run it through the HMAC SHA-1 hashing algorithm (most programming languages offer a utility method to do this) with the user’s Secret Key.  Base64 encode the resulting byte array in UTF-8 so that it can be safely transmitted via HTTP.  The final string produced after Base64 encoding should be "Lxx1DM40AjcXU%2FcaiK8RAP0O1hU%3D".</para>
-			<para>By reconstructing the final URL in the format Base URL+API Path+Command String+Signature, the final URL should look like:</para>
-			<programlisting>http://localhost:8080/client/api?command=deployVirtualMachine&amp;serviceOfferingId=1&amp;diskOfferingId=1&amp;templateId=2&amp;zoneId=4&amp;apiKey=miVr6X7u6bN_sdahOBpjNejPgEsT35eXq-jB8CG20YI3yaxXcgpyuaIRmFI_EJTVwZ0nUkkJbPmY3y2bciKwFQ&amp;signature=Lxx1DM40AjcXU%2FcaiK8RAP0O1hU%3D</programlisting>
-		</listitem>
-	</orderedlist>
+    <title>Signing API Requests</title>
+    <para>Whether you access the CloudStack API with HTTP or HTTPS, it must still be signed so that CloudStack can verify the caller has been authenticated and authorized to execute the command.  Make sure that you have both the API Key and Secret Key provided by the CloudStack administrator for your account before proceeding with the signing process.</para>
+    <para>To show how to sign a request, we will re-use the previous example.</para>
+    <programlisting>http://http://localhost:8080/client/api?command=deployVirtualMachine&amp;serviceOfferingId=1&amp;diskOfferingId=1&amp;templateId=2&amp;zoneId=4&amp;apiKey=miVr6X7u6bN_sdahOBpjNejPgEsT35eXq-jB8CG20YI3yaxXcgpyuaIRmFI_EJTVwZ0nUkkJbPmY3y2bciKwFQ&amp;signature=Lxx1DM40AjcXU%2FcaiK8RAP0O1hU%3D</programlisting>
+    <para>Breaking this down, we have several distinct parts to this URL.</para>
+    <itemizedlist>
+        <listitem><para>Base URL: This is the base URL to the CloudStack Management Server.</para>
+            <programlisting>http://localhost:8080</programlisting>
+        </listitem>
+        <listitem><para>API Path: This is the path to the API Servlet that processes the incoming requests.</para>
+            <programlisting>/client/api?</programlisting>
+        </listitem>
+        <listitem><para>Command String: This part of the query string comprises of the command, its parameters, and the API Key that identifies the account.</para>
+            <note><para>As with all query string parameters of field-value pairs, the "field" component is case insensitive while all "value" values are case sensitive.</para></note>
+            <programlisting>command=deployVirtualMachine&amp;serviceOfferingId=1&amp;diskOfferingId=1&amp;templateId=2&amp;zoneId=4&amp;apiKey=miVr6X7u6bN_sdahOBpjNejPgEsT35eXq-jB8CG20YI3yaxXcgpyuaIRmFI_EJTVwZ0nUkkJbPmY3y2bciKwFQ</programlisting>
+        </listitem>
+        <listitem><para>Signature: This is the hashed signature of the Base URL that is generated using a combination of the user’s Secret Key and the HMAC SHA-1 hashing algorithm.</para>
+            <para>&amp;signature=Lxx1DM40AjcXU%2FcaiK8RAP0O1hU%3D</para>
+        </listitem>
+    </itemizedlist>
+    <para>Every API request has the format Base URL+API Path+Command String+Signature.</para>
+    <para>To generate the signature.</para>
+    <orderedlist>
+        <listitem><para>For each field-value pair (as separated by a '&amp;') in the Command String, URL encode each value so that it can be safely sent via HTTP GET.</para>
+            <note><para>Make sure all spaces are encoded as "%20" rather than "+".</para></note>
+        </listitem>
+        <listitem><para>Lower case the entire Command String and sort it alphabetically via the field for each field-value pair.  The result of this step would look like the following.</para>
+            <programlisting>apikey=mivr6x7u6bn_sdahobpjnejpgest35exq-jb8cg20yi3yaxxcgpyuairmfi_ejtvwz0nukkjbpmy3y2bcikwfq&amp;command=deployvirtualmachine&amp;diskofferingid=1&amp;serviceofferingid=1&amp;templateid=2&amp;zoneid=4</programlisting>
+        </listitem>
+        <listitem><para>Take the sorted Command String and run it through the HMAC SHA-1 hashing algorithm (most programming languages offer a utility method to do this) with the user’s Secret Key.  Base64 encode the resulting byte array in UTF-8 so that it can be safely transmitted via HTTP.  The final string produced after Base64 encoding should be "Lxx1DM40AjcXU%2FcaiK8RAP0O1hU%3D".</para>
+            <para>By reconstructing the final URL in the format Base URL+API Path+Command String+Signature, the final URL should look like:</para>
+            <programlisting>http://localhost:8080/client/api?command=deployVirtualMachine&amp;serviceOfferingId=1&amp;diskOfferingId=1&amp;templateId=2&amp;zoneId=4&amp;apiKey=miVr6X7u6bN_sdahOBpjNejPgEsT35eXq-jB8CG20YI3yaxXcgpyuaIRmFI_EJTVwZ0nUkkJbPmY3y2bciKwFQ&amp;signature=Lxx1DM40AjcXU%2FcaiK8RAP0O1hU%3D</programlisting>
+        </listitem>
+    </orderedlist>
 </section>

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/dcfa5a50/docs/en-US/sticky-session-policies-for-lb-rules.xml
----------------------------------------------------------------------
diff --git a/docs/en-US/sticky-session-policies-for-lb-rules.xml b/docs/en-US/sticky-session-policies-for-lb-rules.xml
index 972a195..a8acfa0 100644
--- a/docs/en-US/sticky-session-policies-for-lb-rules.xml
+++ b/docs/en-US/sticky-session-policies-for-lb-rules.xml
@@ -23,8 +23,8 @@
 -->
 
 <section id="sticky-session-policies-for-lb-rules">
-	<title>Sticky Session Policies for Load Balancer Rules</title>
-	<para>Sticky sessions are used in Web-based applications to ensure continued availability of information across the multiple requests in a user's session. For example, if a shopper is filling a cart, you need to remember what has been purchased so far. The concept of "stickiness" is also referred to as persistence or maintaining state.</para>
-	<para>Any load balancer rule defined in &PRODUCT; can have a stickiness policy. The policy consists of a name, stickiness method, and parameters. The parameters are name-value pairs or flags, which are defined by the load balancer vendor. The stickiness method could be load balancer-generated cookie, application-generated cookie, or source-based. In the source-based method, the source IP address is used to identify the user and locate the user’s stored data. In the other methods, cookies are used. The cookie generated by the load balancer or application is included in request and response URLs to create persistence.  The cookie name can be specified by the administrator or automatically generated. A variety of options are provided to control the exact behavior of cookies, such as how they are generated and whether they are cached.</para>
-	<para>For the most up to date list of available stickiness methods, see the &PRODUCT; UI or call listNetworks and check the SupportedStickinessMethods capability.</para>
+    <title>Sticky Session Policies for Load Balancer Rules</title>
+    <para>Sticky sessions are used in Web-based applications to ensure continued availability of information across the multiple requests in a user's session. For example, if a shopper is filling a cart, you need to remember what has been purchased so far. The concept of "stickiness" is also referred to as persistence or maintaining state.</para>
+    <para>Any load balancer rule defined in &PRODUCT; can have a stickiness policy. The policy consists of a name, stickiness method, and parameters. The parameters are name-value pairs or flags, which are defined by the load balancer vendor. The stickiness method could be load balancer-generated cookie, application-generated cookie, or source-based. In the source-based method, the source IP address is used to identify the user and locate the user’s stored data. In the other methods, cookies are used. The cookie generated by the load balancer or application is included in request and response URLs to create persistence.  The cookie name can be specified by the administrator or automatically generated. A variety of options are provided to control the exact behavior of cookies, such as how they are generated and whether they are cached.</para>
+    <para>For the most up to date list of available stickiness methods, see the &PRODUCT; UI or call listNetworks and check the SupportedStickinessMethods capability.</para>
 </section>

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/dcfa5a50/docs/en-US/stopped-vm.xml
----------------------------------------------------------------------
diff --git a/docs/en-US/stopped-vm.xml b/docs/en-US/stopped-vm.xml
index 0983142..7024be7 100644
--- a/docs/en-US/stopped-vm.xml
+++ b/docs/en-US/stopped-vm.xml
@@ -23,13 +23,13 @@
 -->
 
 <section id="stopped-vm">
-	<title>Stopped VM</title>
-	<para>&PRODUCT; now supports creating a VM without starting it. You can determine whether the VM needs to be started as part of the VM deployment. A VM can now be deployed in two ways: create and start a VM (the default method); or create a VM and leave it in the stopped state.</para>
-	<para>A new request parameter, startVM, is introduced in the deployVm API to support the stopped VM feature.</para>
-	<para>The possible values are:</para>
-	<itemizedlist>
-		<listitem><para>true - The VM starts as a part of the VM deployment.</para></listitem>
-		<listitem><para>false - The VM is left in the stopped state at the end of the VM deployment.</para></listitem>
-	</itemizedlist>
-	<para>The default value is true.</para>
+    <title>Stopped VM</title>
+    <para>&PRODUCT; now supports creating a VM without starting it. You can determine whether the VM needs to be started as part of the VM deployment. A VM can now be deployed in two ways: create and start a VM (the default method); or create a VM and leave it in the stopped state.</para>
+    <para>A new request parameter, startVM, is introduced in the deployVm API to support the stopped VM feature.</para>
+    <para>The possible values are:</para>
+    <itemizedlist>
+        <listitem><para>true - The VM starts as a part of the VM deployment.</para></listitem>
+        <listitem><para>false - The VM is left in the stopped state at the end of the VM deployment.</para></listitem>
+    </itemizedlist>
+    <para>The default value is true.</para>
 </section>

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/dcfa5a50/docs/en-US/stopping-and-starting-vms.xml
----------------------------------------------------------------------
diff --git a/docs/en-US/stopping-and-starting-vms.xml b/docs/en-US/stopping-and-starting-vms.xml
index 845260e..8b294af 100644
--- a/docs/en-US/stopping-and-starting-vms.xml
+++ b/docs/en-US/stopping-and-starting-vms.xml
@@ -23,6 +23,6 @@
 -->
 
 <section id="stopping-and-starting-vms">
-	<title>Stopping and Starting VMs</title>
-	<para>Any user can access their own virtual machines. The administrator can access all VMs running in the cloud.</para>
+    <title>Stopping and Starting VMs</title>
+    <para>Any user can access their own virtual machines. The administrator can access all VMs running in the cloud.</para>
 </section>

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/dcfa5a50/docs/en-US/storage-tags.xml
----------------------------------------------------------------------
diff --git a/docs/en-US/storage-tags.xml b/docs/en-US/storage-tags.xml
index 6d18c90..39b55a6 100644
--- a/docs/en-US/storage-tags.xml
+++ b/docs/en-US/storage-tags.xml
@@ -23,7 +23,7 @@
 -->
 
 <section id="storage-tags">
-	<title>Storage Tags</title>
-	<para>Storage may be "tagged". A tag is a text string attribute associated with primary storage, a Disk Offering, or a Service Offering. Tags allow administrators to provide additional information about the storage. For example, that is a "SSD" or it is "slow". Tags are not interpreted by &PRODUCT;. They are matched against tags placed on service and disk offerings. &PRODUCT; requires all tags on service and disk offerings to exist on the primary storage before it allocates root or data disks on the primary storage. Service and disk offering tags are used to identify the requirements of the storage that those offerings have. For example, the high end service offering may require "fast" for its root disk volume.</para>
-	<para>The interaction between tags, allocation, and volume copying across clusters and pods can be complex. To simplify the situation, use the same set of tags on the primary storage for all clusters in a pod. Even if different devices are used to present those tags, the set of exposed tags can be the same.</para>
+    <title>Storage Tags</title>
+    <para>Storage may be "tagged". A tag is a text string attribute associated with primary storage, a Disk Offering, or a Service Offering. Tags allow administrators to provide additional information about the storage. For example, that is a "SSD" or it is "slow". Tags are not interpreted by &PRODUCT;. They are matched against tags placed on service and disk offerings. &PRODUCT; requires all tags on service and disk offerings to exist on the primary storage before it allocates root or data disks on the primary storage. Service and disk offering tags are used to identify the requirements of the storage that those offerings have. For example, the high end service offering may require "fast" for its root disk volume.</para>
+    <para>The interaction between tags, allocation, and volume copying across clusters and pods can be complex. To simplify the situation, use the same set of tags on the primary storage for all clusters in a pod. Even if different devices are used to present those tags, the set of exposed tags can be the same.</para>
 </section>

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/dcfa5a50/docs/en-US/storage.xml
----------------------------------------------------------------------
diff --git a/docs/en-US/storage.xml b/docs/en-US/storage.xml
index 7d1a657..c4df50f 100644
--- a/docs/en-US/storage.xml
+++ b/docs/en-US/storage.xml
@@ -23,8 +23,8 @@
 -->
 
 <section id="storage">
-	<title>Deleting VMs</title>
-	<para>&PRODUCT; defines two types of storage: primary and secondary. Primary storage can be accessed by either iSCSI or NFS. Additionally, direct attached storage may be used for primary storage. Secondary storage is always accessed using NFS.</para>
-	<para>There is no ephemeral storage in &PRODUCT;. All volumes on all nodes are persistent</para>	
+    <title>Deleting VMs</title>
+    <para>&PRODUCT; defines two types of storage: primary and secondary. Primary storage can be accessed by either iSCSI or NFS. Additionally, direct attached storage may be used for primary storage. Secondary storage is always accessed using NFS.</para>
+    <para>There is no ephemeral storage in &PRODUCT;. All volumes on all nodes are persistent</para>    
 </section>
 

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/dcfa5a50/docs/en-US/template-iso-snapshot-usage-record-format.xml
----------------------------------------------------------------------
diff --git a/docs/en-US/template-iso-snapshot-usage-record-format.xml b/docs/en-US/template-iso-snapshot-usage-record-format.xml
index 3f811a5..3f34f36 100644
--- a/docs/en-US/template-iso-snapshot-usage-record-format.xml
+++ b/docs/en-US/template-iso-snapshot-usage-record-format.xml
@@ -23,20 +23,20 @@
 -->
 
 <section id="template-iso-snapshot-usage-record-format">
-	<title>Template, ISO, and Snapshot Usage Record Format</title>
-	<itemizedlist>
-		<listitem><para>account – name of the account</para></listitem>
-		<listitem><para>accountid – ID of the account</para></listitem>
-		<listitem><para>domainid – ID of the domain in which this account resides</para></listitem>
-		<listitem><para>zoneid – Zone where the usage occurred</para></listitem>
-		<listitem><para>description – A string describing what the usage record is tracking</para></listitem>
-		<listitem><para>usage – String representation of the usage, including the units of usage (e.g. 'Hrs' for hours)</para></listitem>
-		<listitem><para>usagetype – A number representing the usage type (see Usage Types)</para></listitem>
-		<listitem><para>rawusage – A number representing the actual usage in hours</para></listitem>
-		<listitem><para>usageid – The ID of the the template, ISO, or snapshot</para></listitem>
-		<listitem><para>offeringid – The ID of the disk offering</para></listitem>
-		<listitem><para>templateid – – Included only for templates (usage type 7). Source template ID.</para></listitem>
-		<listitem><para>size – Size of the template, ISO, or snapshot</para></listitem>
-		<listitem><para>startdate, enddate – The range of time for which the usage is aggregated; see Dates in the Usage Record</para></listitem>	
-	</itemizedlist>
+    <title>Template, ISO, and Snapshot Usage Record Format</title>
+    <itemizedlist>
+        <listitem><para>account – name of the account</para></listitem>
+        <listitem><para>accountid – ID of the account</para></listitem>
+        <listitem><para>domainid – ID of the domain in which this account resides</para></listitem>
+        <listitem><para>zoneid – Zone where the usage occurred</para></listitem>
+        <listitem><para>description – A string describing what the usage record is tracking</para></listitem>
+        <listitem><para>usage – String representation of the usage, including the units of usage (e.g. 'Hrs' for hours)</para></listitem>
+        <listitem><para>usagetype – A number representing the usage type (see Usage Types)</para></listitem>
+        <listitem><para>rawusage – A number representing the actual usage in hours</para></listitem>
+        <listitem><para>usageid – The ID of the the template, ISO, or snapshot</para></listitem>
+        <listitem><para>offeringid – The ID of the disk offering</para></listitem>
+        <listitem><para>templateid – – Included only for templates (usage type 7). Source template ID.</para></listitem>
+        <listitem><para>size – Size of the template, ISO, or snapshot</para></listitem>
+        <listitem><para>startdate, enddate – The range of time for which the usage is aggregated; see Dates in the Usage Record</para></listitem>    
+    </itemizedlist>
 </section>

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/dcfa5a50/docs/en-US/ui.xml
----------------------------------------------------------------------
diff --git a/docs/en-US/ui.xml b/docs/en-US/ui.xml
index d01f1d2..bf0e521 100644
--- a/docs/en-US/ui.xml
+++ b/docs/en-US/ui.xml
@@ -4,6 +4,6 @@
 %BOOK_ENTITIES;
 ]>
 <chapter id="ui">
-	<title>User Interface</title>
-	<xi:include href="log-in.xml" xmlns:xi="http://www.w3.org/2001/XInclude"/>
+    <title>User Interface</title>
+    <xi:include href="log-in.xml" xmlns:xi="http://www.w3.org/2001/XInclude"/>
 </chapter>

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/dcfa5a50/docs/en-US/upgrade-virtual-router-with-service-offering.xml
----------------------------------------------------------------------
diff --git a/docs/en-US/upgrade-virtual-router-with-service-offering.xml b/docs/en-US/upgrade-virtual-router-with-service-offering.xml
index 72cb433..4114c79 100644
--- a/docs/en-US/upgrade-virtual-router-with-service-offering.xml
+++ b/docs/en-US/upgrade-virtual-router-with-service-offering.xml
@@ -9,7 +9,7 @@
     <orderedlist>
         <listitem><para>Define your custom system service offering. See <xref linkend="creating-system-service-offerings"/>. In System VM Type, choose Domain Router.</para></listitem>
         <listitem><para>Associate the system service offering with a network offering. See <xref linkend="creating-network-offerings"/></para></listitem>
-        <listitem><para>3.	Apply the network offering to the network where you want the virtual routers to use the new system service offering. If this is a new network, follow the steps in Adding an Additional Guest Network on page 66. To change the service offering for existing virtual routers, follow the steps in <xref linkend="change-network-offering-on-guest-network"/>.</para></listitem>
+        <listitem><para>3.    Apply the network offering to the network where you want the virtual routers to use the new system service offering. If this is a new network, follow the steps in Adding an Additional Guest Network on page 66. To change the service offering for existing virtual routers, follow the steps in <xref linkend="change-network-offering-on-guest-network"/>.</para></listitem>
         </orderedlist>
     
 </section>

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/dcfa5a50/docs/en-US/upload-existing-volume-to-vm.xml
----------------------------------------------------------------------
diff --git a/docs/en-US/upload-existing-volume-to-vm.xml b/docs/en-US/upload-existing-volume-to-vm.xml
index da6e157..fe96920 100644
--- a/docs/en-US/upload-existing-volume-to-vm.xml
+++ b/docs/en-US/upload-existing-volume-to-vm.xml
@@ -4,54 +4,54 @@
 %BOOK_ENTITIES;
 ]>
 <section id="upload-existing-volume-to-vm">
-	<title>Uploading an Existing Volume to a Virtual Machine</title>
-			<para>Existing data can be made accessible to a virtual machine. This is called uploading a volume to the VM. For example, this is useful to upload data from a local file system and attach it to a VM. Root administrators, domain administrators, and end users can all upload existing volumes to VMs.</para>
-			<para>The upload is performed using HTTP. The uploaded volume is placed in the zone's secondary storage</para>
-			<para>You cannot upload a volume if the preconfigured volume limit has already been reached. The default limit for the cloud is set in the global configuration parameter max.account.volumes, but administrators can also set per-domain limits that are different from the global default. See Setting Usage Limits </para>
-			<para>To upload a volume:</para>	
-			<orderedlist>
-				<listitem><para>(Optional) Create an MD5 hash (checksum) of the disk image file that you are going to upload. After uploading the data disk, CloudPlatform will use this value to verify that no data corruption has occurred.</para></listitem>
-				<listitem><para>Log in to the CloudPlatform UI as an administrator or user</para></listitem>
-				<listitem><para>In the left navigation bar, click Storage.</para></listitem>
-				<listitem><para>Click Upload Volume.</para></listitem>
-				<listitem><para>Provide the following:</para>
-				<itemizedlist>
-					<listitem><para>Name and Description. Any desired name and a brief description that can be shown in the UI.</para></listitem>
-					<listitem><para>Availability Zone. Choose the zone where you want to store the volume. VMs running on hosts in this zone can attach the volume.</para></listitem>
-					<listitem><para>Format. Choose one of the following to indicate the disk image format of the volume.</para>
-					<informaltable>
-						<tgroup cols="2" align="left" colsep="1" rowsep="1">
-							
-							<thead>
-								<row>
-									<entry><para>Hypervisor</para></entry>
-									<entry><para>Disk Image Format</para></entry>
-								</row>									
-							</thead>
-							<tbody>
-								<row>
-									<entry><para>XenServer</para></entry>
-									<entry><para>VHD</para></entry>
-								</row>
-								<row>
-									<entry><para>VMware</para></entry>
-									<entry><para>OVA</para></entry>
-								</row>
-								<row>
-									<entry><para>KVM</para></entry>
-									<entry><para>QCOW2</para></entry>
-								</row>
-								<row>
-									<entry><para>OVM</para></entry>
-									<entry><para>RAW</para></entry>
-								</row>
-							</tbody>
-						</tgroup>
-					</informaltable></listitem>								
-					<listitem><para>URL. The secure HTTP or HTTPS URL that CloudPlatform can use to access your disk. The type of file at the URL must match the value chosen in Format. For example, if Format is VHD, the URL might look like the following:</para>
-						<para>http://yourFileServerIP/userdata/myDataDisk.vhd</para></listitem>
-					<listitem><para>MD5 checksum. (Optional) Use the hash that you created in step 1.</para></listitem></itemizedlist></listitem>
-					<listitem><para>Wait until the status of the volume shows that the upload is complete. Click Instances - Volumes, find the name you specified in step 5, and make sure the status is Uploaded.</para></listitem>
-			</orderedlist>
-	</section>
+    <title>Uploading an Existing Volume to a Virtual Machine</title>
+            <para>Existing data can be made accessible to a virtual machine. This is called uploading a volume to the VM. For example, this is useful to upload data from a local file system and attach it to a VM. Root administrators, domain administrators, and end users can all upload existing volumes to VMs.</para>
+            <para>The upload is performed using HTTP. The uploaded volume is placed in the zone's secondary storage</para>
+            <para>You cannot upload a volume if the preconfigured volume limit has already been reached. The default limit for the cloud is set in the global configuration parameter max.account.volumes, but administrators can also set per-domain limits that are different from the global default. See Setting Usage Limits </para>
+            <para>To upload a volume:</para>    
+            <orderedlist>
+                <listitem><para>(Optional) Create an MD5 hash (checksum) of the disk image file that you are going to upload. After uploading the data disk, CloudPlatform will use this value to verify that no data corruption has occurred.</para></listitem>
+                <listitem><para>Log in to the CloudPlatform UI as an administrator or user</para></listitem>
+                <listitem><para>In the left navigation bar, click Storage.</para></listitem>
+                <listitem><para>Click Upload Volume.</para></listitem>
+                <listitem><para>Provide the following:</para>
+                <itemizedlist>
+                    <listitem><para>Name and Description. Any desired name and a brief description that can be shown in the UI.</para></listitem>
+                    <listitem><para>Availability Zone. Choose the zone where you want to store the volume. VMs running on hosts in this zone can attach the volume.</para></listitem>
+                    <listitem><para>Format. Choose one of the following to indicate the disk image format of the volume.</para>
+                    <informaltable>
+                        <tgroup cols="2" align="left" colsep="1" rowsep="1">
+                            
+                            <thead>
+                                <row>
+                                    <entry><para>Hypervisor</para></entry>
+                                    <entry><para>Disk Image Format</para></entry>
+                                </row>                                    
+                            </thead>
+                            <tbody>
+                                <row>
+                                    <entry><para>XenServer</para></entry>
+                                    <entry><para>VHD</para></entry>
+                                </row>
+                                <row>
+                                    <entry><para>VMware</para></entry>
+                                    <entry><para>OVA</para></entry>
+                                </row>
+                                <row>
+                                    <entry><para>KVM</para></entry>
+                                    <entry><para>QCOW2</para></entry>
+                                </row>
+                                <row>
+                                    <entry><para>OVM</para></entry>
+                                    <entry><para>RAW</para></entry>
+                                </row>
+                            </tbody>
+                        </tgroup>
+                    </informaltable></listitem>                                
+                    <listitem><para>URL. The secure HTTP or HTTPS URL that CloudPlatform can use to access your disk. The type of file at the URL must match the value chosen in Format. For example, if Format is VHD, the URL might look like the following:</para>
+                        <para>http://yourFileServerIP/userdata/myDataDisk.vhd</para></listitem>
+                    <listitem><para>MD5 checksum. (Optional) Use the hash that you created in step 1.</para></listitem></itemizedlist></listitem>
+                    <listitem><para>Wait until the status of the volume shows that the upload is complete. Click Instances - Volumes, find the name you specified in step 5, and make sure the status is Uploaded.</para></listitem>
+            </orderedlist>
+    </section>
 

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/dcfa5a50/docs/en-US/upload-template.xml
----------------------------------------------------------------------
diff --git a/docs/en-US/upload-template.xml b/docs/en-US/upload-template.xml
index 2021b6b..798a404 100644
--- a/docs/en-US/upload-template.xml
+++ b/docs/en-US/upload-template.xml
@@ -4,41 +4,41 @@
 %BOOK_ENTITIES;
 ]>
 <section id="upload-template">
-	<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>
-	<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 CloudPlatform.</para></listitem>
-			<listitem><para>OS Type: This helps CloudPlatform 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>
-				</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
-						CloudPlatform 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 CloudPlatform 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>
+    <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>
+    <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 CloudPlatform.</para></listitem>
+            <listitem><para>OS Type: This helps CloudPlatform 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>
+                </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
+                        CloudPlatform 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 CloudPlatform 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/dcfa5a50/docs/en-US/usage-record-format.xml
----------------------------------------------------------------------
diff --git a/docs/en-US/usage-record-format.xml b/docs/en-US/usage-record-format.xml
index 21dd326..5b32495 100644
--- a/docs/en-US/usage-record-format.xml
+++ b/docs/en-US/usage-record-format.xml
@@ -4,14 +4,14 @@
 %BOOK_ENTITIES;
 ]>
 <section id="usage-record-format">
-	<title>Usage Record Format</title>
-	<xi:include href="virtual-machine-usage-record-format.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
-	<xi:include href="network-usage-record-format.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
-	<xi:include href="ipaddress-usage-record-format.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
-	<xi:include href="disk-volume-usage-record-format.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
-	<xi:include href="template-iso-snapshot-usage-record-format.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
-	<xi:include href="loadbalancer-policy-port-forwarding-rule-usage-record-format.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
-	<xi:include href="network-offering-usage-record-format.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
-	<xi:include href="VPN-user-usage-record-format.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
+    <title>Usage Record Format</title>
+    <xi:include href="virtual-machine-usage-record-format.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
+    <xi:include href="network-usage-record-format.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
+    <xi:include href="ipaddress-usage-record-format.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
+    <xi:include href="disk-volume-usage-record-format.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
+    <xi:include href="template-iso-snapshot-usage-record-format.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
+    <xi:include href="loadbalancer-policy-port-forwarding-rule-usage-record-format.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
+    <xi:include href="network-offering-usage-record-format.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
+    <xi:include href="VPN-user-usage-record-format.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
 </section>
 

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/dcfa5a50/docs/en-US/usage-types.xml
----------------------------------------------------------------------
diff --git a/docs/en-US/usage-types.xml b/docs/en-US/usage-types.xml
index 868d331..c2a3ea7 100644
--- a/docs/en-US/usage-types.xml
+++ b/docs/en-US/usage-types.xml
@@ -4,98 +4,98 @@
 %BOOK_ENTITIES;
 ]>
 <section id="usage-types">
-		<title>Usage Types</title>
-		<para>The following table shows all usage types.</para>
-	<informaltable>
-		<tgroup cols="3">
-			<colspec colname="c1" colnum="1" colwidth="4cm" />
-			<colspec colname="c2" colnum="2" colwidth="8cm" />
-			<colspec colname="c3" colnum="3" colwidth="5cm" />
-			<thead>
-				<row>
-					<entry>Type ID</entry>
-					<entry>Type Name</entry>
-					<entry>Description</entry>
-				</row>
-			</thead>
-			<tbody>
-				<row>
-					<entry>1</entry>
-					<entry>RUNNING_VM</entry>
-					<entry>Tracks the total running time of a VM per usage record period.  If the VM is upgraded during the usage period, you will get a separate Usage Record for the new upgraded VM.</entry>
-				</row>
-				<row>
-					<entry><para>2</para></entry>
-					<entry><para>ALLOCATED_VM</para></entry>
-					<entry><para>Tracks the total time the VM has been created to the time when it has been destroyed.  This usage type is also useful in determining usage for specific templates such as Windows-based templates.</para></entry>
-				</row>
-				
-				<row>
-					<entry><para>3</para></entry>
-					<entry><para>IP_ADDRESS</para></entry>
-					<entry><para>Tracks the public IP address owned by the account.</para></entry>
-				</row>
-				
-				<row>
-					<entry><para>4</para></entry>
-					<entry><para>NETWORK_BYTES_SENT</para></entry>
-					<entry><para>Tracks the total number of bytes sent by all the VMs for an account.  Cloud.com does not currently track network traffic per VM.</para></entry>
-				</row>
-				
-				<row>
-					<entry><para>5</para></entry>
-					<entry><para>NETWORK_BYTES_RECEIVED</para></entry>
-					<entry><para>Tracks the total number of bytes received by all the VMs for an account.  Cloud.com does not currently track network traffic per VM.</para></entry>
-				</row>
-				
-				<row>
-					<entry><para>6</para></entry>
-					<entry><para>VOLUME</para></entry>
-					<entry><para>Tracks the total time a disk volume has been created to the time when it has been destroyed.</para></entry>
-				</row>
-				
-				<row>
-					<entry><para>7</para></entry>
-					<entry><para>TEMPLATE</para></entry>
-					<entry><para>Tracks the total time a template (either created from a snapshot or uploaded to the cloud) has been created to the time it has been destroyed.  The size of the template is also returned.</para></entry>
-				</row>
-				
-				<row>
-					<entry><para>8</para></entry>
-					<entry><para>ISO</para></entry>
-					<entry><para>Tracks the total time an ISO has been uploaded to the time it has been removed from the cloud.  The size of the ISO is also returned.</para></entry>
-				</row>
-				
-				<row>
-					<entry><para>9</para></entry>
-					<entry><para>SNAPSHOT</para></entry>
-					<entry><para>Tracks the total time from when a snapshot has been created to the time it have been destroyed.</para></entry>
-				</row>
-				
-				<row>
-					<entry><para>11</para></entry>
-					<entry><para>LOAD_BALANCER_POLICY</para></entry>
-					<entry><para>Tracks the total time a load balancer policy has been created to the time it has been removed.  Cloud.com does not track whether a VM has been assigned to a policy.</para></entry>
-				</row>
-				
-				<row>
-					<entry><para>12</para></entry>
-					<entry><para>PORT_FORWARDING_RULE</para></entry>
-					<entry><para>Tracks the time from when a port forwarding rule was created until the time it was removed.</para></entry>
-				</row>
-				
-				<row>
-					<entry><para>13</para></entry>
-					<entry><para>NETWORK_OFFERING</para></entry>
-					<entry><para>The time from when a network offering was assigned to a VM until it is removed.</para></entry>
-				</row>
-				
-				<row>
-					<entry><para>14</para></entry>
-					<entry><para>VPN_USERS</para></entry>
-					<entry><para>The time from when a VPN user is created until it is removed.</para></entry>
-				</row>
-			</tbody>
-		</tgroup>
-	</informaltable> 
-	</section>
+        <title>Usage Types</title>
+        <para>The following table shows all usage types.</para>
+    <informaltable>
+        <tgroup cols="3">
+            <colspec colname="c1" colnum="1" colwidth="4cm" />
+            <colspec colname="c2" colnum="2" colwidth="8cm" />
+            <colspec colname="c3" colnum="3" colwidth="5cm" />
+            <thead>
+                <row>
+                    <entry>Type ID</entry>
+                    <entry>Type Name</entry>
+                    <entry>Description</entry>
+                </row>
+            </thead>
+            <tbody>
+                <row>
+                    <entry>1</entry>
+                    <entry>RUNNING_VM</entry>
+                    <entry>Tracks the total running time of a VM per usage record period.  If the VM is upgraded during the usage period, you will get a separate Usage Record for the new upgraded VM.</entry>
+                </row>
+                <row>
+                    <entry><para>2</para></entry>
+                    <entry><para>ALLOCATED_VM</para></entry>
+                    <entry><para>Tracks the total time the VM has been created to the time when it has been destroyed.  This usage type is also useful in determining usage for specific templates such as Windows-based templates.</para></entry>
+                </row>
+                
+                <row>
+                    <entry><para>3</para></entry>
+                    <entry><para>IP_ADDRESS</para></entry>
+                    <entry><para>Tracks the public IP address owned by the account.</para></entry>
+                </row>
+                
+                <row>
+                    <entry><para>4</para></entry>
+                    <entry><para>NETWORK_BYTES_SENT</para></entry>
+                    <entry><para>Tracks the total number of bytes sent by all the VMs for an account.  Cloud.com does not currently track network traffic per VM.</para></entry>
+                </row>
+                
+                <row>
+                    <entry><para>5</para></entry>
+                    <entry><para>NETWORK_BYTES_RECEIVED</para></entry>
+                    <entry><para>Tracks the total number of bytes received by all the VMs for an account.  Cloud.com does not currently track network traffic per VM.</para></entry>
+                </row>
+                
+                <row>
+                    <entry><para>6</para></entry>
+                    <entry><para>VOLUME</para></entry>
+                    <entry><para>Tracks the total time a disk volume has been created to the time when it has been destroyed.</para></entry>
+                </row>
+                
+                <row>
+                    <entry><para>7</para></entry>
+                    <entry><para>TEMPLATE</para></entry>
+                    <entry><para>Tracks the total time a template (either created from a snapshot or uploaded to the cloud) has been created to the time it has been destroyed.  The size of the template is also returned.</para></entry>
+                </row>
+                
+                <row>
+                    <entry><para>8</para></entry>
+                    <entry><para>ISO</para></entry>
+                    <entry><para>Tracks the total time an ISO has been uploaded to the time it has been removed from the cloud.  The size of the ISO is also returned.</para></entry>
+                </row>
+                
+                <row>
+                    <entry><para>9</para></entry>
+                    <entry><para>SNAPSHOT</para></entry>
+                    <entry><para>Tracks the total time from when a snapshot has been created to the time it have been destroyed.</para></entry>
+                </row>
+                
+                <row>
+                    <entry><para>11</para></entry>
+                    <entry><para>LOAD_BALANCER_POLICY</para></entry>
+                    <entry><para>Tracks the total time a load balancer policy has been created to the time it has been removed.  Cloud.com does not track whether a VM has been assigned to a policy.</para></entry>
+                </row>
+                
+                <row>
+                    <entry><para>12</para></entry>
+                    <entry><para>PORT_FORWARDING_RULE</para></entry>
+                    <entry><para>Tracks the time from when a port forwarding rule was created until the time it was removed.</para></entry>
+                </row>
+                
+                <row>
+                    <entry><para>13</para></entry>
+                    <entry><para>NETWORK_OFFERING</para></entry>
+                    <entry><para>The time from when a network offering was assigned to a VM until it is removed.</para></entry>
+                </row>
+                
+                <row>
+                    <entry><para>14</para></entry>
+                    <entry><para>VPN_USERS</para></entry>
+                    <entry><para>The time from when a VPN user is created until it is removed.</para></entry>
+                </row>
+            </tbody>
+        </tgroup>
+    </informaltable> 
+    </section>

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/dcfa5a50/docs/en-US/user-services-overview.xml
----------------------------------------------------------------------
diff --git a/docs/en-US/user-services-overview.xml b/docs/en-US/user-services-overview.xml
index 3c24590..7e76507 100644
--- a/docs/en-US/user-services-overview.xml
+++ b/docs/en-US/user-services-overview.xml
@@ -1,41 +1,41 @@
 <section id="user-services-overview">
-		<title>User Services Overview</title>
-	<para>In addition to the physical and logical infrastructure of your cloud, and the CloudPlatform software and servers, you also need a layer of user services so that people can actually make use of the cloud. This means not just a user UI, but a set of options and resources that users can choose from, such as templates for creating virtual machines, disk storage, and more. If you are running a commercial service, you will be keeping track of what services and resources users are consuming and charging them for that usage. Even if you do not charge anything for people to use your cloud – say, if the users are strictly internal to your organization, or just friends who are sharing your cloud – you can still keep track of what services they use and how much of them.</para>
-	<section id="offerings-and-templates">
-		<title>Service Offerings, Disk Offerings, Network Offerings, and Templates</title>
-		<para>A user creating a new instance can make a variety of choices about its characteristics and capabilities. CloudPlatform provides several ways to present users with choices when creating a new instance:</para>
-		<itemizedlist>
-			<listitem><para>Service Offerings, defined by the CloudPlatform administrator, provide a choice of CPU speed, number of CPUs, RAM size, tags on the root disk, and other choices. See Creating a New Compute Offering.</para></listitem>
-			<listitem><para>Disk Offerings, defined by the CloudPlatform administrator, provide a choice of disk size for primary data storage. See Creating a New Disk Offering.</para></listitem>
-			<listitem><para>Network Offerings, defined by the CloudPlatform administrator, describe the feature set that is available to end users from the virtual router or external networking devices on a given guest network. See Network Offerings.</para></listitem>
-			<listitem><para> Templates, defined by the CloudPlatform administrator or by any CloudPlatform user, are the base OS images that the user can choose from when creating a new instance. For example, CloudPlatform includes CentOS as a template. See Working with Templates.</para></listitem>
-		</itemizedlist>
-		<para>In addition to these choices that are provided for users, there is another type of service offering which is available only to the CloudPlatform root administrator, and is used for configuring virtual infrastructure resources. For more information, see Upgrading a Virtual Router with System Service Offerings.</para>
-	</section>
-	<section id="accounts-users-domains">
-		<title>Accounts, Users, and Domains</title>
-		<para>An account typically represents a customer of the service provider or a department in a large organization. Multiple users can exist in an account. Users are like aliases in the account. Users in the same account are not isolated from each other, but they are isolated from users in other accounts. Most installations need not surface the notion of users; they just have one user per account.</para>
-		<para>Accounts are grouped by domains. Domains usually contain accounts that have some logical relationship to each other and a set of delegated administrators with some authority over the domain and its subdomains. For example, a service provider with several resellers could create a domain for each reseller.</para>
-		<para>Administrators are accounts with special privileges in the system. There may be multiple administrators in the system. Administrators can create or delete other administrators, and change the password for any user in the system. Root administrators have complete access to the system, including managing templates, service offerings, customer care administrators, and domains. Domain administrators can perform administrative operations for users who belong to that domain. Domain administrators do not have visibility into physical servers or other domains.</para>
-	</section>
-	<section id="using-ldap-server">
-		<title>Using an LDAP Server for User Authentication</title>
-		<para>You can use an external LDAP server such as Microsoft Active Directory or ApacheDS to authenticate CloudPlatform end-users. Just map CloudPlatform accounts to the corresponding LDAP accounts using a query filter. The query filter is written using the query syntax of the particular LDAP server, and can include special wildcard characters provided by CloudPlatform for matching common values such as the user’s email address and name. CloudPlatform will search the external LDAP directory tree starting at a specified base directory and return the distinguished name (DN) and password of the matching user. This information along with the given password is used to authenticate the user.</para>
-		<para>To set up LDAP authentication in CloudPlatform, call the CloudPlatform API command ldapConfig and provide the following:</para>
-		<itemizedlist>
-			<listitem><para>Hostname or IP address and listening port of the LDAP server</para></listitem>
-			<listitem><para>Base directory and query filter</para></listitem>
-			<listitem><para>Search user DN credentials, which give CloudPlatform permission to search on the LDAP server</para></listitem>
-			<listitem><para>SSL keystore and password, if SSL is used</para></listitem>
-		</itemizedlist>
-		<section id="example-ldap-commands">
-			<title>Example LDAP Configuration Commands</title>
-			<para>To understand the examples in this section, you need to know the basic concepts behind calling the CloudPlatform API, which are explained in the Developer’s Guide.</para>
-			<para>The following shows an example invocation of ldapConfig with an ApacheDS LDAP server.</para>
-			<programlisting>http://127.0.0.1:8080/client/api?command=ldapConfig&amp;hostname=127.0.0.1&amp;searchbase=ou%3Dtesting%2Co%3Dproject&amp;queryfilter=%28%26%28uid%3D%25u%29%29&amp;binddn=cn%3DJohn+Singh%2Cou%3Dtesting%2Co%project&amp;bindpass=secret&amp;port=10389&amp;ssl=true&amp;truststore=C%3A%2Fcompany%2Finfo%2Ftrusted.ks&amp;truststorepass=secret&amp;response=json&amp;apiKey=YourAPIKey&amp;signature=YourSignatureHash				
-			</programlisting>
-			<para>The command must be URL-encoded. Here is the same example without the URL encoding:</para>
-			<programlisting>
+        <title>User Services Overview</title>
+    <para>In addition to the physical and logical infrastructure of your cloud, and the CloudPlatform software and servers, you also need a layer of user services so that people can actually make use of the cloud. This means not just a user UI, but a set of options and resources that users can choose from, such as templates for creating virtual machines, disk storage, and more. If you are running a commercial service, you will be keeping track of what services and resources users are consuming and charging them for that usage. Even if you do not charge anything for people to use your cloud – say, if the users are strictly internal to your organization, or just friends who are sharing your cloud – you can still keep track of what services they use and how much of them.</para>
+    <section id="offerings-and-templates">
+        <title>Service Offerings, Disk Offerings, Network Offerings, and Templates</title>
+        <para>A user creating a new instance can make a variety of choices about its characteristics and capabilities. CloudPlatform provides several ways to present users with choices when creating a new instance:</para>
+        <itemizedlist>
+            <listitem><para>Service Offerings, defined by the CloudPlatform administrator, provide a choice of CPU speed, number of CPUs, RAM size, tags on the root disk, and other choices. See Creating a New Compute Offering.</para></listitem>
+            <listitem><para>Disk Offerings, defined by the CloudPlatform administrator, provide a choice of disk size for primary data storage. See Creating a New Disk Offering.</para></listitem>
+            <listitem><para>Network Offerings, defined by the CloudPlatform administrator, describe the feature set that is available to end users from the virtual router or external networking devices on a given guest network. See Network Offerings.</para></listitem>
+            <listitem><para> Templates, defined by the CloudPlatform administrator or by any CloudPlatform user, are the base OS images that the user can choose from when creating a new instance. For example, CloudPlatform includes CentOS as a template. See Working with Templates.</para></listitem>
+        </itemizedlist>
+        <para>In addition to these choices that are provided for users, there is another type of service offering which is available only to the CloudPlatform root administrator, and is used for configuring virtual infrastructure resources. For more information, see Upgrading a Virtual Router with System Service Offerings.</para>
+    </section>
+    <section id="accounts-users-domains">
+        <title>Accounts, Users, and Domains</title>
+        <para>An account typically represents a customer of the service provider or a department in a large organization. Multiple users can exist in an account. Users are like aliases in the account. Users in the same account are not isolated from each other, but they are isolated from users in other accounts. Most installations need not surface the notion of users; they just have one user per account.</para>
+        <para>Accounts are grouped by domains. Domains usually contain accounts that have some logical relationship to each other and a set of delegated administrators with some authority over the domain and its subdomains. For example, a service provider with several resellers could create a domain for each reseller.</para>
+        <para>Administrators are accounts with special privileges in the system. There may be multiple administrators in the system. Administrators can create or delete other administrators, and change the password for any user in the system. Root administrators have complete access to the system, including managing templates, service offerings, customer care administrators, and domains. Domain administrators can perform administrative operations for users who belong to that domain. Domain administrators do not have visibility into physical servers or other domains.</para>
+    </section>
+    <section id="using-ldap-server">
+        <title>Using an LDAP Server for User Authentication</title>
+        <para>You can use an external LDAP server such as Microsoft Active Directory or ApacheDS to authenticate CloudPlatform end-users. Just map CloudPlatform accounts to the corresponding LDAP accounts using a query filter. The query filter is written using the query syntax of the particular LDAP server, and can include special wildcard characters provided by CloudPlatform for matching common values such as the user’s email address and name. CloudPlatform will search the external LDAP directory tree starting at a specified base directory and return the distinguished name (DN) and password of the matching user. This information along with the given password is used to authenticate the user.</para>
+        <para>To set up LDAP authentication in CloudPlatform, call the CloudPlatform API command ldapConfig and provide the following:</para>
+        <itemizedlist>
+            <listitem><para>Hostname or IP address and listening port of the LDAP server</para></listitem>
+            <listitem><para>Base directory and query filter</para></listitem>
+            <listitem><para>Search user DN credentials, which give CloudPlatform permission to search on the LDAP server</para></listitem>
+            <listitem><para>SSL keystore and password, if SSL is used</para></listitem>
+        </itemizedlist>
+        <section id="example-ldap-commands">
+            <title>Example LDAP Configuration Commands</title>
+            <para>To understand the examples in this section, you need to know the basic concepts behind calling the CloudPlatform API, which are explained in the Developer’s Guide.</para>
+            <para>The following shows an example invocation of ldapConfig with an ApacheDS LDAP server.</para>
+            <programlisting>http://127.0.0.1:8080/client/api?command=ldapConfig&amp;hostname=127.0.0.1&amp;searchbase=ou%3Dtesting%2Co%3Dproject&amp;queryfilter=%28%26%28uid%3D%25u%29%29&amp;binddn=cn%3DJohn+Singh%2Cou%3Dtesting%2Co%project&amp;bindpass=secret&amp;port=10389&amp;ssl=true&amp;truststore=C%3A%2Fcompany%2Finfo%2Ftrusted.ks&amp;truststorepass=secret&amp;response=json&amp;apiKey=YourAPIKey&amp;signature=YourSignatureHash                
+            </programlisting>
+            <para>The command must be URL-encoded. Here is the same example without the URL encoding:</para>
+            <programlisting>
 http://127.0.0.1:8080/client/api?command=ldapConfig
 &amp;hostname=127.0.0.1
 &amp;searchbase=ou=testing,o=project
@@ -49,29 +49,29 @@ http://127.0.0.1:8080/client/api?command=ldapConfig
 &amp;response=json
 &amp;apiKey=YourAPIKey
 &amp;signature=YourSignatureHash
-			</programlisting>
-			<para>The following shows a similar command for Active Directory. Here, the search base is the testing group within a company, and the users are matched up based on email address.</para>
-			<programlisting>http://10.147.29.101:8080/client/api?command=ldapConfig&amp;hostname=10.147.28.250&amp;searchbase=OU%3Dtesting%2CDC%3Dcompany&amp;queryfilter=%28%26%28mail%3D%25e%29%29&amp;binddn=CN%3DAdministrator%2COU%3Dtesting%2CDC%3Dcompany&amp;bindpass=1111_aaaa&amp;port=389&amp;response=json&amp;apiKey=YourAPIKey&amp;signature=YourSignatureHash
-			</programlisting>
-			<para>The next few sections explain some of the concepts you will need to know when filling out the ldapConfig parameters.</para>
-		</section>
-		<section id="search-base">
-			<title>Search Base</title>
-			<para>Coming soon: TODO</para>
-		</section>
-		<section id="query-filter">
-			<title>Query Filter</title>
-			<para>Coming soon: TODO</para>
-		</section>
-		<section id="search-user-bind-dn">
-			<title>Search User Bind DN</title>
-			<para>Coming soon: TODO</para>
-		</section>
-		<section id="ssl-keystore-path-and-password">
-			<title>SSL Keystore Path and Password</title>
-			<para>Coming soon: TODO</para>
-		</section>
-		
-	</section>
+            </programlisting>
+            <para>The following shows a similar command for Active Directory. Here, the search base is the testing group within a company, and the users are matched up based on email address.</para>
+            <programlisting>http://10.147.29.101:8080/client/api?command=ldapConfig&amp;hostname=10.147.28.250&amp;searchbase=OU%3Dtesting%2CDC%3Dcompany&amp;queryfilter=%28%26%28mail%3D%25e%29%29&amp;binddn=CN%3DAdministrator%2COU%3Dtesting%2CDC%3Dcompany&amp;bindpass=1111_aaaa&amp;port=389&amp;response=json&amp;apiKey=YourAPIKey&amp;signature=YourSignatureHash
+            </programlisting>
+            <para>The next few sections explain some of the concepts you will need to know when filling out the ldapConfig parameters.</para>
+        </section>
+        <section id="search-base">
+            <title>Search Base</title>
+            <para>Coming soon: TODO</para>
+        </section>
+        <section id="query-filter">
+            <title>Query Filter</title>
+            <para>Coming soon: TODO</para>
+        </section>
+        <section id="search-user-bind-dn">
+            <title>Search User Bind DN</title>
+            <para>Coming soon: TODO</para>
+        </section>
+        <section id="ssl-keystore-path-and-password">
+            <title>SSL Keystore Path and Password</title>
+            <para>Coming soon: TODO</para>
+        </section>
+        
+    </section>
 </section>