<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Version 4.2.0 Release Notes</title><link rel="stylesheet" type="text/css" href="Common_Content/css/default.css" /><link rel="stylesheet" media="print" href="Common_Content/css/print.css" type="text/css" /><meta name="generator" content="publican 2.8" /><meta name="package" content="Apache_CloudStack-Release_Notes-4.2.0-en-US-1-" /><meta name="description" content="Release notes for the Apache CloudStack 4.2.0 release." /><script type="text/javascript" src="../../../../../toc.js"></script><script type="text/javascript">
              addID('Apache_CloudStack');
              
	      addID('Apache_CloudStack.4.2.0');
              
              addID('Apache_CloudStack.4.2.0.books');
	      addID('Apache_CloudStack.4.2.0.Release_Notes');
              </script></head><body class="toc_embeded "><div id="tocdiv" class="toc"><iframe id="tocframe" class="toc" src="../../../../toc.html">This is an iframe, to view it upgrade your browser or enable iframe display.</iframe></div><p id="title"><a class="left" href="http://cloudstack.apache.org"><img src="Common_Content/images/image_left.png" alt="Product Site" /></a><a class="right" href="http://cloudstack.apache.org/docs"><img src="Common_Content/images/image_right.png" alt="Documentation Site" /></a></p><div xml:lang="en-US" class="book" id="idm52562272" lang="en-US"><div class="titlepage"><div><div class="producttitle"><span class="productname">Apache CloudStack</span> <span class="productnumber"></span></div><div><h1 id="idm52562272" class="title">Version 4.2.0 Release Notes</h1></div><div><h3 class="corpauthor">
		<span class="inlinemediaobject"><object data="Common_Content/images/title_logo.svg" type="image/svg+xml"> </object></span>

	</h3></div><div><div xml:lang="en-US" class="authorgroup" lang="en-US"><div class="author"><h3 class="author"><span class="firstname">Apache</span> <span class="surname">CloudStack</span></h3></div></div></div><hr /><div><div id="idm49814864" class="legalnotice"><h1 class="legalnotice">Legal Notice</h1><div class="para">
		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
	</div><div class="para">
		http://www.apache.org/licenses/LICENSE-2.0
	</div><div class="para">
		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.
	</div><div class="para">
		Apache CloudStack is an effort undergoing incubation at The Apache Software Foundation (ASF).
	</div><div class="para">
		Incubation is required of all newly accepted projects until a further review indicates that the infrastructure, communications, and decision making process have stabilized in a manner consistent with other successful ASF projects. While incubation status is not necessarily a reflection of the completeness or stability of the code, it does indicate that the project has yet to be fully endorsed by the ASF.
	</div><div class="para">
		CloudStack® is a registered trademark of the Apache Software Foundation.
	</div><div class="para">
		Apache CloudStack, the CloudStack word design, the Apache CloudStack word design, and the cloud monkey logo are trademarks of the Apache Software Foundation.
	</div></div></div><div><div class="abstract"><h6>Abstract</h6><div class="para">
			Release notes for the Apache CloudStack 4.2.0 release.
		</div></div></div></div><hr /></div><div class="toc"><dl class="toc"><dt><span class="preface"><a href="#pref-cloudstack-Preface">Preface</a></span></dt><dd><dl><dt><span class="section"><a href="#idm42590336">1. Document Conventions</a></span></dt><dt><span class="section"><a href="#feedback">2. Feedback</a></span></dt></dl></dd><dt><span class="chapter"><a href="#welcome-4.2">1. Welcome to CloudStack 4.2</a></span></dt><dt><span class="chapter"><a href="#version-4.2">2. What's New in 4.2.0</a></span></dt><dd><dl><dt><span class="section"><a href="#workloads">2.1. Features to Support Heterogeneous Workloads</a></span></dt><dt><span class="section"><a href="#third-party-plugin">2.2. Third-Party UI Plugin Framework</a></span></dt><dt><span class="section"><a href="#networking">2.3. Networking Enhancements</a></span></dt><dt><span class="section"><a href="#host-and-vm-enhancements">2.4. Host and Virtual Machine Enhancements</a></span></dt><dt><span class="section"><a href="#ops">2.5. Monitoring, Maintenance, and Operations Enhancements</a></span></dt><dt><span class="section"><a href="#issues-fixed-4.2">2.6. Issues Fixed in 4.2.0</a></span></dt><dt><span class="section"><a href="#known-issues-4.2">2.7. Known Issues in 4.2.0</a></span></dt></dl></dd><dt><span class="chapter"><a href="#upgrade-instructions">3. Upgrade Instructions for 4.2</a></span></dt><dd><dl><dt><span class="section"><a href="#upgrade-from-4.0-to-4.1">3.1. Upgrade from 4.1.x to 4.2.0</a></span></dt><dt><span class="section"><a href="#upgrade-from-3.0.x-to-4.0">3.2. Upgrade from 3.0.x to 4.2.0</a></span></dt><dt><span class="section"><a href="#upgrade-from-2.2.x-to-4.1">3.3. Upgrade from 2.2.14 to 4.2.0</a></span></dt></dl></dd><dt><span class="chapter"><a href="#api-changes">4. API Changes in 4.2</a></span></dt><dd><dl><dt><span class="section"><a href="#added-API-commands-4.2">4.1. Added API Commands in 4.2</a></span></dt><dt><span class="section"><a href="#changed-api-commands-4.2">4.2. Changed API Commands in 4.2</a></span></dt><dt><span class="section"><a href="#removed-api-4.2">4.3. Deprecated APIs</a></span></dt></dl></dd></dl></div><div xml:lang="en-US" class="preface" id="pref-cloudstack-Preface" lang="en-US"><div class="titlepage"><div><div><h1 class="title">Preface</h1></div></div></div><div xml:lang="en-US" class="section" id="idm42590336" lang="en-US"><div class="titlepage"><div><div><h2 class="title" id="idm42590336">1. Document Conventions</h2></div></div></div><div class="para">
		This manual uses several conventions to highlight certain words and phrases and draw attention to specific pieces of information.
	</div><div class="para">
		In PDF and paper editions, this manual uses typefaces drawn from the <a href="https://fedorahosted.org/liberation-fonts/">Liberation Fonts</a> set. The Liberation Fonts set is also used in HTML editions if the set is installed on your system. If not, alternative but equivalent typefaces are displayed. Note: Red Hat Enterprise Linux 5 and later includes the Liberation Fonts set by default.
	</div><div class="section" id="idm51371040"><div class="titlepage"><div><div><h3 class="title" id="idm51371040">1.1. Typographic Conventions</h3></div></div></div><div class="para">
			Four typographic conventions are used to call attention to specific words and phrases. These conventions, and the circumstances they apply to, are as follows.
		</div><div class="para">
			<code class="literal">Mono-spaced Bold</code>
		</div><div class="para">
			Used to highlight system input, including shell commands, file names and paths. Also used to highlight keycaps and key combinations. For example:
		</div><div class="blockquote"><blockquote class="blockquote"><div class="para">
				To see the contents of the file <code class="filename">my_next_bestselling_novel</code> in your current working directory, enter the <code class="command">cat my_next_bestselling_novel</code> command at the shell prompt and press <span class="keycap"><strong>Enter</strong></span> to execute the command.
			</div></blockquote></div><div class="para">
			The above includes a file name, a shell command and a keycap, all presented in mono-spaced bold and all distinguishable thanks to context.
		</div><div class="para">
			Key combinations can be distinguished from keycaps by the hyphen connecting each part of a key combination. For example:
		</div><div class="blockquote"><blockquote class="blockquote"><div class="para">
				Press <span class="keycap"><strong>Enter</strong></span> to execute the command.
			</div><div class="para">
				Press <span class="keycap"><strong>Ctrl</strong></span>+<span class="keycap"><strong>Alt</strong></span>+<span class="keycap"><strong>F2</strong></span> to switch to the first virtual terminal. Press <span class="keycap"><strong>Ctrl</strong></span>+<span class="keycap"><strong>Alt</strong></span>+<span class="keycap"><strong>F1</strong></span> to return to your X-Windows session.
			</div></blockquote></div><div class="para">
			The first paragraph highlights the particular keycap to press. The second highlights two key combinations (each a set of three keycaps with each set pressed simultaneously).
		</div><div class="para">
			If source code is discussed, class names, methods, functions, variable names and returned values mentioned within a paragraph will be presented as above, in <code class="literal">mono-spaced bold</code>. For example:
		</div><div class="blockquote"><blockquote class="blockquote"><div class="para">
				File-related classes include <code class="classname">filesystem</code> for file systems, <code class="classname">file</code> for files, and <code class="classname">dir</code> for directories. Each class has its own associated set of permissions.
			</div></blockquote></div><div class="para">
			<span class="application"><strong>Proportional Bold</strong></span>
		</div><div class="para">
			This denotes words or phrases encountered on a system, including application names; dialog box text; labeled buttons; check-box and radio button labels; menu titles and sub-menu titles. For example:
		</div><div class="blockquote"><blockquote class="blockquote"><div class="para">
				Choose <span class="guimenu"><strong>System</strong></span> → <span class="guisubmenu"><strong>Preferences</strong></span> → <span class="guimenuitem"><strong>Mouse</strong></span> from the main menu bar to launch <span class="application"><strong>Mouse Preferences</strong></span>. In the <span class="guilabel"><strong>Buttons</strong></span> tab, click the <span class="guilabel"><strong>Left-handed mouse</strong></span> check box and click <span class="guibutton"><strong>Close</strong></span> to switch the primary mouse button from the left to the right (making the mouse suitable for use in the left hand).
			</div><div class="para">
				To insert a special character into a <span class="application"><strong>gedit</strong></span> file, choose <span class="guimenu"><strong>Applications</strong></span> → <span class="guisubmenu"><strong>Accessories</strong></span> → <span class="guimenuitem"><strong>Character Map</strong></span> from the main menu bar. Next, choose <span class="guimenu"><strong>Search</strong></span> → <span class="guimenuitem"><strong>Find…</strong></span> from the <span class="application"><strong>Character Map</strong></span> menu bar, type the name of the character in the <span class="guilabel"><strong>Search</strong></span> field and click <span class="guibutton"><strong>Next</strong></span>. The character you sought will be highlighted in the <span class="guilabel"><strong>Character Table</strong></span>. Double-click this highlighted character to place it in the <span class="guilabel"><strong>Text to copy</strong></span> field and then click the <span class="guibutton"><strong>Copy</strong></span> button. Now switch back to your document and choose <span class="guimenu"><strong>Edit</strong></span> → <span class="guimenuitem"><strong>Paste</strong></span> from the <span class="application"><strong>gedit</strong></span> menu bar.
			</div></blockquote></div><div class="para">
			The above text includes application names; system-wide menu names and items; application-specific menu names; and buttons and text found within a GUI interface, all presented in proportional bold and all distinguishable by context.
		</div><div class="para">
			<code class="command"><em class="replaceable"><code>Mono-spaced Bold Italic</code></em></code> or <span class="application"><strong><em class="replaceable"><code>Proportional Bold Italic</code></em></strong></span>
		</div><div class="para">
			Whether mono-spaced bold or proportional bold, the addition of italics indicates replaceable or variable text. Italics denotes text you do not input literally or displayed text that changes depending on circumstance. For example:
		</div><div class="blockquote"><blockquote class="blockquote"><div class="para">
				To connect to a remote machine using ssh, type <code class="command">ssh <em class="replaceable"><code>username</code></em>@<em class="replaceable"><code>domain.name</code></em></code> at a shell prompt. If the remote machine is <code class="filename">example.com</code> and your username on that machine is john, type <code class="command">ssh john@example.com</code>.
			</div><div class="para">
				The <code class="command">mount -o remount <em class="replaceable"><code>file-system</code></em></code> command remounts the named file system. For example, to remount the <code class="filename">/home</code> file system, the command is <code class="command">mount -o remount /home</code>.
			</div><div class="para">
				To see the version of a currently installed package, use the <code class="command">rpm -q <em class="replaceable"><code>package</code></em></code> command. It will return a result as follows: <code class="command"><em class="replaceable"><code>package-version-release</code></em></code>.
			</div></blockquote></div><div class="para">
			Note the words in bold italics above — username, domain.name, file-system, package, version and release. Each word is a placeholder, either for text you enter when issuing a command or for text displayed by the system.
		</div><div class="para">
			Aside from standard usage for presenting the title of a work, italics denotes the first use of a new and important term. For example:
		</div><div class="blockquote"><blockquote class="blockquote"><div class="para">
				Publican is a <em class="firstterm">DocBook</em> publishing system.
			</div></blockquote></div></div><div class="section" id="idm76306240"><div class="titlepage"><div><div><h3 class="title" id="idm76306240">1.2. Pull-quote Conventions</h3></div></div></div><div class="para">
			Terminal output and source code listings are set off visually from the surrounding text.
		</div><div class="para">
			Output sent to a terminal is set in <code class="computeroutput">mono-spaced roman</code> and presented thus:
		</div><pre class="screen">books        Desktop   documentation  drafts  mss    photos   stuff  svn
books_tests  Desktop1  downloads      images  notes  scripts  svgs</pre><div class="para">
			Source-code listings are also set in <code class="computeroutput">mono-spaced roman</code> but add syntax highlighting as follows:
		</div><pre class="programlisting">package org.<span class="perl_Function">jboss</span>.<span class="perl_Function">book</span>.<span class="perl_Function">jca</span>.<span class="perl_Function">ex1</span>;

<span class="perl_Keyword">import</span> javax.naming.InitialContext;

<span class="perl_Keyword">public</span> <span class="perl_Keyword">class</span> ExClient
{
   <span class="perl_Keyword">public</span> <span class="perl_DataType">static</span> <span class="perl_DataType">void</span> <span class="perl_Function">main</span>(String args[]) 
       <span class="perl_Keyword">throws</span> Exception
   {
      InitialContext iniCtx = <span class="perl_Keyword">new</span> InitialContext();
      Object         ref    = iniCtx.<span class="perl_Function">lookup</span>(<span class="perl_String">"EchoBean"</span>);
      EchoHome       home   = (EchoHome) ref;
      Echo           echo   = home.<span class="perl_Function">create</span>();

      System.<span class="perl_Function">out</span>.<span class="perl_Function">println</span>(<span class="perl_String">"Created Echo"</span>);

      System.<span class="perl_Function">out</span>.<span class="perl_Function">println</span>(<span class="perl_String">"Echo.echo('Hello') = "</span> + echo.<span class="perl_Function">echo</span>(<span class="perl_String">"Hello"</span>));
   }
}</pre></div><div class="section" id="idp4734176"><div class="titlepage"><div><div><h3 class="title" id="idp4734176">1.3. Notes and Warnings</h3></div></div></div><div class="para">
			Finally, we use three visual styles to draw attention to information that might otherwise be overlooked.
		</div><div class="note"><div class="admonition_header"><h2>Note</h2></div><div class="admonition"><div class="para">
				Notes are tips, shortcuts or alternative approaches to the task at hand. Ignoring a note should have no negative consequences, but you might miss out on a trick that makes your life easier.
			</div></div></div><div class="important"><div class="admonition_header"><h2>Important</h2></div><div class="admonition"><div class="para">
				Important boxes detail things that are easily missed: configuration changes that only apply to the current session, or services that need restarting before an update will apply. Ignoring a box labeled 'Important' will not cause data loss but may cause irritation and frustration.
			</div></div></div><div class="warning"><div class="admonition_header"><h2>Warning</h2></div><div class="admonition"><div class="para">
				Warnings should not be ignored. Ignoring warnings will most likely cause data loss.
			</div></div></div></div></div><div xml:lang="en-US" class="section" id="feedback" lang="en-US"><div class="titlepage"><div><div><h2 class="title">2. Feedback</h2></div></div></div><div class="para">
		to-do
	</div></div></div><div class="chapter" id="welcome-4.2"><div class="titlepage"><div><div><h1 class="title">Chapter 1. Welcome to CloudStack 4.2</h1></div></div></div><div class="para">
			Welcome to the 4.2.0 release of CloudStack, the second major release from the Apache CloudStack project since its graduation from the Apache Incubator. CloudStack 4.2 includes more than 70 new features and enhancements. The focus of the release is on three major areas:
		</div><div class="itemizedlist"><ul><li class="listitem"><div class="para">
					Improved support for both legacy-style and cloud-style workloads
				</div></li><li class="listitem"><div class="para">
					New third-party plug-in architecture
				</div></li><li class="listitem"><div class="para">
					Networking enhancements
				</div></li></ul></div><div class="para">
			In addition to these major new areas of functionality, CloudStack 4.2 provides many additional enhancements in a variety of product areas. All of the new features are summarized later in this Release Note.
		</div><div class="para">
			This document contains information specific to this release of CloudStack, including upgrade instructions from prior releases, new features added to CloudStack, API changes, and issues fixed in the release. For installation instructions, please see the <a href="http://cloudstack.apache.org/docs/en-US/Apache_CloudStack/4.2.0/html/Installation_Guide/index.html">Installation Guide</a>. For usage and administration instructions, please see the <a href="http://cloudstack.apache.org/docs/en-US/Apache_CloudStack/4.2.0/html/Admin_Guide/index.html">CloudStack Administrator's Guide</a>. Developers and users who wish to work with the API will find instruction in the <a href="http://cloudstack.apache.org/docs/en-US/Apache_CloudStack/4.0.1-incubating/html/API_Developers_Guide/index.html">CloudStack API Developer's Guide</a>
		</div><div class="para">
			If you find any errors or problems in this guide, please see <a class="xref" href="#feedback">Section 2, “Feedback”</a>. We hope you enjoy working with CloudStack!
		</div></div><div class="chapter" id="version-4.2"><div class="titlepage"><div><div><h1 class="title">Chapter 2. What's New in 4.2.0</h1></div></div></div><div class="toc"><dl class="toc"><dt><span class="section"><a href="#workloads">2.1. Features to Support Heterogeneous Workloads</a></span></dt><dt><span class="section"><a href="#third-party-plugin">2.2. Third-Party UI Plugin Framework</a></span></dt><dt><span class="section"><a href="#networking">2.3. Networking Enhancements</a></span></dt><dt><span class="section"><a href="#host-and-vm-enhancements">2.4. Host and Virtual Machine Enhancements</a></span></dt><dt><span class="section"><a href="#ops">2.5. Monitoring, Maintenance, and Operations Enhancements</a></span></dt><dt><span class="section"><a href="#issues-fixed-4.2">2.6. Issues Fixed in 4.2.0</a></span></dt><dt><span class="section"><a href="#known-issues-4.2">2.7. Known Issues in 4.2.0</a></span></dt></dl></div><div class="para">
			CloudStack 4.2 includes the following new features.
		</div><div class="section" id="workloads"><div class="titlepage"><div><div><h2 class="title">2.1. Features to Support Heterogeneous Workloads</h2></div></div></div><div class="para">
				The following new features help CloudStack 4.2 better support both legacy and cloud-era style zones.
			</div><div class="section" id="regions"><div class="titlepage"><div><div><h3 class="title">2.1.1. Regions</h3></div></div></div><div class="para">
					To increase reliability of the cloud, you can optionally group resources into geographic regions. A region is the largest available organizational unit within a cloud deployment. A region is made up of several availability zones, where each zone is equivalent to a datacenter. Each region is controlled by its own cluster of Management Servers, running in one of the zones. The zones in a region are typically located in close geographical proximity. Regions are a useful technique for providing fault tolerance and disaster recovery.
				</div><div class="para">
					By grouping zones into regions, the cloud can achieve higher availability and scalability. User accounts can span regions, so that users can deploy VMs in multiple, widely-dispersed regions. Even if one of the regions becomes unavailable, the services are still available to the end-user through VMs deployed in another region. And by grouping communities of zones under their own nearby Management Servers, the latency of communications within the cloud is reduced compared to managing widely-dispersed zones from a single central Management Server.
				</div><div class="para">
					Usage records can also be consolidated and tracked at the region level, creating reports or invoices for each geographic region.
				</div></div><div class="section" id="object-store"><div class="titlepage"><div><div><h3 class="title">2.1.2. Object Storage Plugin Architecture</h3></div></div></div><div class="para">
					Artifacts such as templates, ISOs and snapshots are kept in storage which CloudStack refers to as secondary storage. To improve scalability and performance, as when a number of hosts access secondary storage concurrently, object storage can be used for secondary storage. Object storage can also provide built-in high availability capability. When using object storage, access to secondary storage data can be made available across multiple zones in a region. This is a huge benefit, as it is no longer necessary to copy templates, snapshots etc. across zones as would be needed in an NFS-only environment.
				</div><div class="para">
					Object storage is provided through third-party software such as Amazon Simple Storage Service (S3) or any other object storage that supports the S3 interface. These third party object storages can be integrated with CloudStack by writing plugin software that uses the object storage plugin capability introduced in CloudStack 4.2. Several new pluggable service interfaces are available so that different storage providers can develop vendor-specific plugins based on the well-defined contracts that can be seamlessly managed by CloudStack.
				</div></div><div class="section" id="zone-wide-primary-storage"><div class="titlepage"><div><div><h3 class="title">2.1.3. Zone-Wide Primary Storage</h3></div></div></div><div class="para">
					(Supported on KVM and VMware)
				</div><div class="para">
					In CloudStack 4.2, you can provision primary storage on a per-zone basis. Data volumes in the primary storage can be attached to any VM on any host in the zone.
				</div><div class="para">
					In previous CloudStack versions, each cluster had its own primary storage. Data in the primary storage was directly available only to VMs within that cluster. If a VM in a different cluster needed some of the data, it must be copied from one cluster to another, using the zone's secondary storage as an intermediate step. This operation was unnecessarily time-consuming.
				</div></div><div class="section" id="vmware-datacenter"><div class="titlepage"><div><div><h3 class="title">2.1.4. VMware Datacenter Now Visible As a CloudStack Zone</h3></div></div></div><div class="para">
					In order to support zone-wide functions for VMware, changes have been made so that CloudStack is now aware of VMware Datacenters and can map each Datacenter to a CloudStack zone. Previously, CloudStack was only aware of VMware Clusters, a smaller organizational unit than Datacenters. This implies that a single CloudStack zone could possibly contain clusters from different VMware Datacenters. In order for zone-wide functions, such as zone-wide primary storage, to work for VMware hosts, CloudStack has to make sure that a zone contains only a single VMware Datacenter. Therefore, when you are creating a new CloudStack zone, you will now be able to select a VMware Datacenter for the zone. If you are provisioning multiple VMware Datacenters, each one will be set up as a single zone in CloudStack.
				</div><div class="note"><div class="admonition_header"><h2>Note</h2></div><div class="admonition"><div class="para">
						If you are upgrading from a previous CloudStack version, and your existing deployment contains a zone with clusters from multiple VMware Datacenters, that zone will not be forcibly migrated to the new model. It will continue to function as before. However, any new zone-wide operations, such as zone-wide primary storage, will not be available in that zone.
					</div></div></div><div class="para">
				</div></div></div><div class="section" id="third-party-plugin"><div class="titlepage"><div><div><h2 class="title">2.2. Third-Party UI Plugin Framework</h2></div></div></div><div class="para">
				Using the new third-party plugin framework, you can write and install extensions to CloudStack. The installed and enabled plugins will appear in the UI.
			</div><div class="para">
				The basic procedure for adding a UI plugin is explained in the Developer Guide. In summary, the plugin developer creates the plugin code itself (in Javascript), a thumbnail image, the plugin listing, and a CSS file. The CloudStack administrator adds the folder containing the plugin code under the CloudStack PLUGINS folder and adds the plugin name to a configuration file (plugins.js).
			</div><div class="para">
				The next time the user refreshes the UI in the browser, the plugin will appear under the Plugins button in the left navigation bar.
			</div></div><div class="section" id="networking"><div class="titlepage"><div><div><h2 class="title">2.3. Networking Enhancements</h2></div></div></div><div class="para">
				The following new features provide additional networking functionality in CloudStack 4.2.
			</div><div class="section" id="ipv6"><div class="titlepage"><div><div><h3 class="title">2.3.1. IPv6 </h3></div></div></div><div class="para">
					CloudStack 4.2 introduces initial support for IPv6. This feature is provided as a technical preview only. Full support is planned for a future release.
				</div></div><div class="section" id="portable-ip"><div class="titlepage"><div><div><h3 class="title">2.3.2. Portable IPs</h3></div></div></div><div class="para">
					Portable IPs in CloudStack are elastic IPs that can be transferred across geographically separated zones. As an administrator, you can provision a pool of portable IPs at region level and are available for user consumption. The users can acquire portable IPs if admin has provisioned portable public IPs at the region level they are part of. These IPs can be used for any service within an advanced zone. You can also use portable IPs for EIP service in Basic zones. Additionally, a portable IP can be transferred from one network to another network.
				</div></div><div class="section" id="ntier-apps"><div class="titlepage"><div><div><h3 class="title">2.3.3. N-Tier Applications</h3></div></div></div><div class="para">
					In CloudStack 3.0.6, a functionality was added to allow users to create a multi-tier application connected to a single instance of a Virtual Router that supports inter-VLAN routing. Such a multi-tier application is called a virtual private cloud (VPC). Users were also able to connect their multi-tier applications to a private Gateway or a Site-to-Site VPN tunnel and route certain traffic to those gateways. For CloudStack 4.2, additional features are implemented to enhance VPC applications.
				</div><div class="itemizedlist"><ul><li class="listitem"><div class="para">
							<a class="xref" href="#kvm-vpc">Section 2.3.3.1, “Support for KVM”</a>
						</div></li><li class="listitem"><div class="para">
							<a class="xref" href="#add-loadbalancer-rule-vpc">Section 2.3.3.2, “Load Balancing Support for VPC”</a>
						</div></li><li class="listitem"><div class="para">
							<a class="xref" href="#current-lb-vpc">Section 2.3.3.2.1, “Load Balancing Within a Tier (External LB)”</a>
						</div></li><li class="listitem"><div class="para">
							<a class="xref" href="#across-tiers-lb">Section 2.3.3.2.2, “Load Balancing Across Tiers”</a>
						</div></li><li class="listitem"><div class="para">
							<a class="xref" href="#ns-support">Section 2.3.3.2.3, “Netscaler Support for VPC”</a>
						</div></li><li class="listitem"><div class="para">
							<a class="xref" href="#configure-acl">Section 2.3.3.3, “Enhanced Access Control List”</a>
						</div></li><li class="listitem"><div class="para">
							<a class="xref" href="#acl-private-gateway">Section 2.3.3.3.1, “ACL on Private Gateway”</a>
						</div></li><li class="listitem"><div class="para">
							<a class="xref" href="#allow-acl">Section 2.3.3.3.2, “Allow ACL on All Level 4 Protocols”</a>
						</div></li><li class="listitem"><div class="para">
							<a class="xref" href="#acl-deny">Section 2.3.3.3.3, “Support for ACL Deny Rules”</a>
						</div></li><li class="listitem"><div class="para">
							<a class="xref" href="#add-vm-tier-sharednw">Section 2.3.3.4, “Deploying VMs to a VPC Tier and Shared Networks”</a>
						</div></li><li class="listitem"><div class="para">
							<a class="xref" href="#add-gateway-vpc">Section 2.3.3.5, “Adding a Private Gateway to a VPC”</a>
						</div></li><li class="listitem"><div class="para">
							<a class="xref" href="#sourcenat-private-gateway">Section 2.3.3.5.1, “Source NAT on Private Gateway”</a>
						</div></li><li class="listitem"><div class="para">
							<a class="xref" href="#eightvpn">Section 2.3.3.5.2, “VPN Gateways”</a>
						</div></li><li class="listitem"><div class="para">
							<a class="xref" href="#static-route">Section 2.3.3.5.3, “Creating a Static Route”</a>
						</div></li><li class="listitem"><div class="para">
							<a class="xref" href="#blacklist-route">Section 2.3.3.5.4, “Blacklisting Routes”</a>
						</div></li></ul></div><div class="section" id="kvm-vpc"><div class="titlepage"><div><div><h4 class="title">2.3.3.1. Support for KVM</h4></div></div></div><div class="para">
						VPC is now supported on KVM hypervisors.
					</div></div><div class="section" id="add-loadbalancer-rule-vpc"><div class="titlepage"><div><div><h4 class="title">2.3.3.2. Load Balancing Support for VPC</h4></div></div></div><div class="para">
						In a VPC, you can configure two types of load balancing—external LB and internal LB. External LB is nothing but a LB rule created to redirect the traffic received at a public IP of the VPC virtual router. The traffic is load balanced within a tier based on your configuration. Citrix NetScaler and VPC virtual router are supported for external LB. When you use internal LB service, traffic received at a tier is load balanced across different VMs within that tier. For example, traffic reached at Web tier is redirected to another VM in that tier. External load balancing devices are not supported for internal LB. The service is provided by a internal LB VM configured on the target tier.
					</div><div class="section" id="current-lb-vpc"><div class="titlepage"><div><div><h5 class="title">2.3.3.2.1. Load Balancing Within a Tier (External LB)</h5></div></div></div><div class="para">
							A CloudStack user or administrator may create load balancing rules that balance traffic received at a public IP to one or more VMs that belong to a network tier that provides load balancing service in a VPC. A user creates a rule, specifies an algorithm, and assigns the rule to a set of VMs within a tier.
						</div></div><div class="section" id="across-tiers-lb"><div class="titlepage"><div><div><h5 class="title">2.3.3.2.2. Load Balancing Across Tiers</h5></div></div></div><div class="para">
							CloudStack supports sharing workload across different tiers within your VPC. Assume that multiple tiers are set up in your environment, such as Web tier and Application tier. Traffic to each tier is balanced on the VPC virtual router on the public side. If you want the traffic coming from the Web tier to the Application tier to be balanced, use the internal load balancing feature offered by CloudStack.
						</div></div><div class="section" id="ns-support"><div class="titlepage"><div><div><h5 class="title">2.3.3.2.3. Netscaler Support for VPC</h5></div></div></div><div class="para">
							Citrix NetScaler is supported for external LB. Certified version for this feature is NetScaler 10.0 Build 74.4006.e.
						</div></div></div><div class="section" id="configure-acl"><div class="titlepage"><div><div><h4 class="title">2.3.3.3. Enhanced Access Control List</h4></div></div></div><div class="para">
						Network Access Control List (ACL) on the VPC virtual router is enhanced. The network ACLs can be created for the tiers only if the NetworkACL service is supported. In CloudStack terminology, Network ACL is a group of Network ACL items. Network ACL items are nothing but numbered rules that are evaluated in order, starting with the lowest numbered rule. These rules determine whether traffic is allowed in or out of any tier associated with the network ACL. You need to add the Network ACL items to the Network ACL, then associate the Network ACL with a tier. Network ACL is associated with a VPC and can be assigned to multiple VPC tiers within a VPC. A Tier is associated with a Network ACL at all the times. Each tier can be associated with only one ACL.
					</div><div class="para">
						The default Network ACL is used when no ACL is associated. Default behavior is all incoming traffic to guest networks is blocked and all outgoing traffic from guest networks is allowed. Default network ACL cannot be removed or modified.
					</div><div class="section" id="acl-private-gateway"><div class="titlepage"><div><div><h5 class="title">2.3.3.3.1. ACL on Private Gateway</h5></div></div></div><div class="para">
							The traffic on the VPC private gateway is controlled by creating both ingress and egress network ACL rules. The ACLs contains both allow and deny rules. As per the rule, all the ingress traffic to the private gateway interface and all the egress traffic out from the private gateway interface are blocked. You can change this default behaviour while creating a private gateway.
						</div></div><div class="section" id="allow-acl"><div class="titlepage"><div><div><h5 class="title">2.3.3.3.2. Allow ACL on All Level 4 Protocols</h5></div></div></div><div class="para">
							In addition to the existing protocol support for ICMP, TCP, UDP, support for All Level 4 protocols is added. The protocol numbers from 0 to 255 are supported.
						</div></div><div class="section" id="acl-deny"><div class="titlepage"><div><div><h5 class="title">2.3.3.3.3. Support for ACL Deny Rules</h5></div></div></div><div class="para">
							In addition to the existing support for ACL Allow rules, support for ACL Deny rules has been added in CloudStack 4.2. As part of this, two operations are supported: Number and Action. You can configure a rule, allow or deny, by using action. Use Number to add a rule number.
						</div></div></div><div class="section" id="add-vm-tier-sharednw"><div class="titlepage"><div><div><h4 class="title">2.3.3.4. Deploying VMs to a VPC Tier and Shared Networks</h4></div></div></div><div class="para">
						CloudStack allows you to deploy VMs on a VPC tier and one or more shared networks. With this feature, the VMs deployed in a multi-tier application can receive services offered by a service provider over the shared network. One example of such a service is monitoring service.
					</div></div><div class="section" id="add-gateway-vpc"><div class="titlepage"><div><div><h4 class="title">2.3.3.5. Adding a Private Gateway to a VPC</h4></div></div></div><div class="para">
						A private gateway can be added by the root admin only. The VPC private network has 1:1 relationship with the NIC of the physical network. You can configure multiple private gateways to a single VPC. No gateways with duplicated VLAN and IP are allowed in the same data center.
					</div><div class="section" id="sourcenat-private-gateway"><div class="titlepage"><div><div><h5 class="title">2.3.3.5.1. Source NAT on Private Gateway</h5></div></div></div><div class="para">
							You might want to deploy multiple VPCs with the same super CIDR and guest tier CIDR. Therefore, multiple guest VMs from different VPCs can have the same IPs to reach a enterprise data center through the private gateway. In such cases, a NAT service need to be configured on the private gateway. If Source NAT is enabled, the guest VMs in VPC reaches the enterprise network via private gateway IP address by using the NAT service.
						</div><div class="para">
							The Source NAT service on a private gateway can be enabled while adding the private gateway. On deletion of a private gateway, source NAT rules specific to the private gateway are deleted.
						</div></div><div class="section" id="eightvpn"><div class="titlepage"><div><div><h5 class="title">2.3.3.5.2. VPN Gateways</h5></div></div></div><div class="para">
							Support up to 8 VPN Gateways is added.
						</div></div><div class="section" id="static-route"><div class="titlepage"><div><div><h5 class="title">2.3.3.5.3. Creating a Static Route</h5></div></div></div><div class="para">
							CloudStack enables you to specify routing for the VPN connection you create. You can enter one or CIDR addresses to indicate which traffic is to be routed back to the gateway.
						</div></div><div class="section" id="blacklist-route"><div class="titlepage"><div><div><h5 class="title">2.3.3.5.4. Blacklisting Routes</h5></div></div></div><div class="para">
							CloudStack enables you to block a list of routes so that they are not assigned to any of the VPC private gateways. Specify the list of routes that you want to blacklist in the <code class="code">blacklisted.routes</code> global parameter. Note that the parameter update affects only new static route creations. If you block an existing static route, it remains intact and continue functioning. You cannot add a static route if the route is blacklisted for the zone.
						</div></div></div></div><div class="section" id="vlan-assign-isolated-nw"><div class="titlepage"><div><div><h3 class="title">2.3.4. Assigning VLANs to Isolated Networks</h3></div></div></div><div class="para">
					CloudStack provides you the ability to control VLAN assignment to Isolated networks. You can assign a VLAN ID when a network is created, just the way it's done for Shared networks.
				</div><div class="para">
					The former behaviour also is supported — VLAN is randomly allocated to a network from the VNET range of the physical network when the network turns to Implemented state. The VLAN is released back to the VNET pool when the network shuts down as a part of the Network Garbage Collection. The VLAN can be re-used either by the same network when it is implemented again, or by any other network. On each subsequent implementation of a network, a new VLAN can be assigned.
				</div><div class="note"><div class="admonition_header"><h2>Note</h2></div><div class="admonition"><div class="para">
						You cannot change a VLAN once it's assigned to the network. The VLAN remains with the network for its entire life cycle.
					</div></div></div></div><div class="section" id="persistent-network"><div class="titlepage"><div><div><h3 class="title">2.3.5. Persistent Networks</h3></div></div></div><div class="para">
					CloudStack 4.2 supports Persistent Networks. The network that you can provision without having to deploy any VMs on it is called a Persistent Network. A Persistent Network can be part of a VPC or a non-VPC environment. With the addition of this feature, you will have the ability to create a network in CloudStack in which physical devices can be deployed without having to run any VMs. Additionally, you can deploy physical devices on that network. Another advantages is that you can create a VPC with a tier that consists only physical devices. For example, you might create a VPC for a three-tier application, deploy VMs for Web and Application tier, and use physical machines for the Database tier. Another use case is that if you are providing services by using physical hardware, you can define the network as persistent and therefore even if all its VMs are destroyed the services will not be discontinued.
				</div></div><div class="section" id="vnmc-cisco"><div class="titlepage"><div><div><h3 class="title">2.3.6. Cisco VNMC Support</h3></div></div></div><div class="para">
					Cisco Virtual Network Management Center (VNMC) provides centralized multi-device and policy management for Cisco Network Virtual Services. When Cisco VNMC is integrated with ASA 1000v Cloud Firewall and Cisco Nexus 1000v dvSwitch in CloudStack you will be able to:
				</div><div class="itemizedlist"><ul><li class="listitem"><div class="para">
							Configure Cisco ASA 1000v Firewalls
						</div></li><li class="listitem"><div class="para">
							Create and apply security profiles that contain ACL policy sets for both ingress and egress traffic, and NAT policy sets
						</div></li></ul></div><div class="para">
					CloudStack supports Cisco VNMC on Cisco Nexus 1000v dvSwich-enabled VMware hypervisors.
				</div></div><div class="section" id="vmware-vswitch"><div class="titlepage"><div><div><h3 class="title">2.3.7. VMware vNetwork Distributed vSwitch</h3></div></div></div><div class="para">
					CloudStack supports VMware vSphere Distributed Switch (VDS) for virtual network configuration in a VMware vSphere environment. Each vCenter server instance can support up to 128 VDSs and each VDS can manage up to 500 VMware hosts. CloudStack supports configuring virtual networks in a deployment with a mix of Virtual Distributed Switch, Standard Virtual Switch and Nexus 1000v Virtual Switch.
				</div></div><div class="section" id="reserved-ip-addresses-non-csvms"><div class="titlepage"><div><div><h3 class="title">2.3.8. IP Reservation in Isolated Guest Networks</h3></div></div></div><div class="para">
					In Isolated guest networks in CloudStack 4.2, a part of the guest IP address space can be reserved for non-CloudStack VMs or physical servers. To do so, you configure a range of Reserved IP addresses by specifying the CIDR when a guest network is in Implemented state. The advantage of having this feature is that if your customers wish to have non-CloudStack controlled VMs or physical servers on the same network, they can use a part of the IP address space that is primarily provided to the guest network. When IP reservation is configured, the administrator can add additional VMs or physical servers that are not part of CloudStack to the same network and assign them the Reserved IP addresses. CloudStack guest VMs cannot acquire IPs from the Reserved IP Range.
				</div></div><div class="section" id="ip-vlan-tenant"><div class="titlepage"><div><div><h3 class="title">2.3.9. Dedicated Resources: Public IP Addresses and VLANs Per Account</h3></div></div></div><div class="para">
					CloudStack provides you the ability to reserve a set of public IP addresses and VLANs exclusively for an account. During zone creation, you can continue to define a set of VLANs and multiple public IP ranges. This feature extends the functionality to enable you to dedicate a fixed set of VLANs and guest IP addresses for a tenant.
				</div><div class="para">
					This feature provides you the following capabilities:
				</div><div class="itemizedlist"><ul><li class="listitem"><div class="para">
							Reserve a VLAN range and public IP address range from an Advanced zone and assign it to an account
						</div></li><li class="listitem"><div class="para">
							Disassociate a VLAN and public IP address range from an account
						</div></li></ul></div><div class="note"><div class="admonition_header"><h2>Note</h2></div><div class="admonition"><div class="para">
						Ensure that you check whether the required range is available and conforms to account limits. The maximum IPs per account limit cannot be superseded.
					</div></div></div></div><div class="section" id="egress-firewall"><div class="titlepage"><div><div><h3 class="title">2.3.10. Enhanced Juniper SRX Support for Egress Firewall Rules</h3></div></div></div><div class="para">
					Egress firewall rules were previously supported on virtual routers, and now they are also supported on Juniper SRX external networking devices.
				</div><div class="para">
					Egress traffic originates from a private network to a public network, such as the Internet. By default, the egress traffic is blocked, so no outgoing traffic is allowed from a guest network to the Internet. However, you can control the egress traffic in an Advanced zone by creating egress firewall rules. When an egress firewall rule is applied, the traffic specific to the rule is allowed and the remaining traffic is blocked. When all the firewall rules are removed the default policy, Block, is applied.
				</div><div class="note"><div class="admonition_header"><h2>Note</h2></div><div class="admonition"><div class="para">
						Egress firewall rules are not supported on Shared networks. They are supported only on Isolated guest networks.
					</div></div></div></div><div class="section" id="default-egress-policy"><div class="titlepage"><div><div><h3 class="title">2.3.11. Configuring the Default Egress Policy</h3></div></div></div><div class="para">
					The default egress policy for Isolated guest network can be configured by using Network offering. Use the create network offering option to determine whether the default policy should be block or allow all the traffic to the public network from a guest network. Use this network offering to create the network. If no policy is specified, by default all the traffic is allowed from the guest network that you create by using this network offering.
				</div><div class="para">
					You have two options: Allow and Deny.
				</div><div class="para">
					If you select Allow for a network offering, by default egress traffic is allowed. However, when an egress rule is configured for a guest network, rules are applied to block the specified traffic and rest are allowed. If no egress rules are configured for the network, egress traffic is accepted. If you select Deny for a network offering, by default egress traffic for the guest network is blocked. However, when an egress rules is configured for a guest network, rules are applied to allow the specified traffic. While implementing a guest network, CloudStack adds the firewall egress rule specific to the default egress policy for the guest network.
				</div><div class="para">
					This feature is supported only on virtual router and Juniper SRX.
				</div></div><div class="section" id="non-contiguous-vlan"><div class="titlepage"><div><div><h3 class="title">2.3.12. Non-Contiguous VLAN Ranges</h3></div></div></div><div class="para">
					CloudStack provides you with the flexibility to add non contiguous VLAN ranges to your network. The administrator can either update an existing VLAN range or add multiple non contiguous VLAN ranges while creating a zone. You can also use the UpdatephysicalNetwork API to extend the VLAN range.
				</div></div><div class="section" id="pvlan"><div class="titlepage"><div><div><h3 class="title">2.3.13. Isolation in Advanced Zone Using Private VLAN</h3></div></div></div><div class="para">
					Isolation of guest traffic in shared networks can be achieved by using Private VLANs (PVLAN). PVLANs provide Layer 2 isolation between ports within the same VLAN. In a PVLAN-enabled shared network, a user VM cannot reach other user VM though they can reach the DHCP server and gateway, this would in turn allow users to control traffic within a network and help them deploy multiple applications without communication between application as well as prevent communication with other users’ VMs.
				</div><div class="itemizedlist"><ul><li class="listitem"><div class="para">
							Isolate VMs in a shared networks by using Private VLANs.
						</div></li><li class="listitem"><div class="para">
							Supported on KVM, XenServer, and VMware hypervisors.
						</div></li><li class="listitem"><div class="para">
							PVLAN-enabled shared network can be a part of multiple networks of a guest VM.
						</div></li></ul></div><div class="para">
					For further reading:
				</div><div class="itemizedlist"><ul><li class="listitem"><div class="para">
							<a href="http://www.cisco.com/en/US/docs/switches/lan/catalyst3750/software/release/12.2_25_see/configuration/guide/swpvlan.html#wp1038379">Understanding Private VLANs</a>
						</div></li><li class="listitem"><div class="para">
							<a href="http://tools.ietf.org/html/rfc5517">Cisco Systems' Private VLANs: Scalable Security in a Multi-Client Environment</a>
						</div></li><li class="listitem"><div class="para">
							<a href="http://kb.vmware.com">Private VLAN (PVLAN) on vNetwork Distributed Switch - Concept Overview (1010691)</a>
						</div></li></ul></div></div><div class="section" id="multiple-ip-nic"><div class="titlepage"><div><div><h3 class="title">2.3.14. Configuring Multiple IP Addresses on a Single NIC</h3></div></div></div><div class="para">
					(Supported on XenServer, KVM, and VMware hypervisors)
				</div><div class="para">
					CloudStack now provides you the ability to associate multiple private IP addresses per guest VM NIC. This feature is supported on all the network configurations—Basic, Advanced, and VPC. Security Groups, Static NAT and Port forwarding services are supported on these additional IPs. In addition to the primary IP, you can assign additional IPs to the guest VM NIC. Up to 256 IP addresses are allowed per NIC.
				</div><div class="para">
					As always, you can specify an IP from the guest subnet; if not specified, an IP is automatically picked up from the guest VM subnet. You can view the IPs associated with for each guest VM NICs on the UI. You can apply NAT on these additional guest IPs by using firewall configuration in the CloudStack UI. You must specify the NIC to which the IP should be associated.
				</div></div><div class="section" id="multiple-ip-range"><div class="titlepage"><div><div><h3 class="title">2.3.15. Adding Multiple IP Ranges</h3></div></div></div><div class="para">
					(Supported on KVM, xenServer, and VMware hypervisors)
				</div><div class="para">
					CloudStack 4.2 provides you with the flexibility to add guest IP ranges from different subnets in Basic zones and security groups-enabled Advanced zones. For security groups-enabled Advanced zones, it implies multiple subnets can be added to the same VLAN. With the addition of this feature, you will be able to add IP address ranges from the same subnet or from a different one when IP address are exhausted. This would in turn allows you to employ higher number of subnets and thus reduce the address management overhead.
				</div><div class="para">
					Ensure that you manually configure the gateway of the new subnet before adding the IP range. Note that CloudStack supports only one gateway for a subnet; overlapping subnets are not currently supported.
				</div><div class="para">
					You can also delete IP ranges. This operation fails if an IP from the remove range is in use. If the remove range contains the IP address on which the DHCP server is running, CloudStack acquires a new IP from the same subnet. If no IP is available in the subnet, the remove operation fails.
				</div><div class="note"><div class="admonition_header"><h2>Note</h2></div><div class="admonition"><div class="para">
						The feature can only be implemented on IPv4 addresses.
					</div></div></div></div><div class="section" id="add-remove-network-vm"><div class="titlepage"><div><div><h3 class="title">2.3.16. Support for Multiple Networks in VMs</h3></div></div></div><div class="para">
					(Supported on XenServer, VMware and KVM hypervisors)
				</div><div class="para">
					CloudStack 4.2 provides you the ability to add and remove multiple networks to a VM. You can remove a network from a VM and add a new network. You can also change the default network of a VM. With this functionality, hybrid or traditional server loads can be accommodated with ease.
				</div><div class="para">
					For adding or removing a NIC to work on VMware, ensure that vm-tools are running on guest VMs.
				</div></div><div class="section" id="gslb"><div class="titlepage"><div><div><h3 class="title">2.3.17. Global Server Load Balancing</h3></div></div></div><div class="para">
					CloudStack 4.2 supports Global Server Load Balancing (GSLB) functionalities to provide business continuity by load balancing traffic to an instance on active zones only in case of zone failures . CloudStack achieve this by extending its functionality of integrating with NetScaler Application Delivery Controller (ADC), which also provides various GSLB capabilities, such as disaster recovery and load balancing. The DNS redirection technique is used to achieve GSLB in CloudStack. In order to support this functionality, region level services and service provider are introduced. A new service 'GSLB' is introduced as a region level service. The GSLB service provider is introduced that will provider the GSLB service. Currently, NetScaler is the supported GSLB provider in CloudStack. GSLB functionality works in an Active-Active data center environment.
				</div></div><div class="section" id="lb-on-shared-vlan"><div class="titlepage"><div><div><h3 class="title">2.3.18. Enhanced Load Balancing Services Using External Provider on Shared VLANs</h3></div></div></div><div class="para">
					Network services like Firewall, Load Balancing, and NAT are now supported in shared networks created in an advanced zone. In effect, the following network services shall be made available to a VM in a shared network: Source NAT, Static NAT, Port Forwarding, Firewall and Load balancing. Subset of these service can be chosen while creating a network offering for shared networks. Services available in a shared network is defined by the network offering and the service chosen in the network offering. For example, if network offering for a shared network has source NAT service enabled, a public IP shall be provisioned and source NAT is configured on the firewall device to provide public access to the VMs on the shared network. Static NAT, Port Forwarding, Load Balancing, and Firewall services shall be available only on the acquired public IPs associated with a shared network.
				</div><div class="para">
					Additionally, Netscaler and Juniper SRX firewall device can be configured inline or side-by-side mode.
				</div></div><div class="section" id="health-check"><div class="titlepage"><div><div><h3 class="title">2.3.19. Health Checks for Load Balanced Instances</h3></div></div></div><div class="note"><div class="admonition_header"><h2>Note</h2></div><div class="admonition"><div class="para">
						This feature is supported only on NetScaler version 10.0 and beyond.
					</div></div></div><div class="para">
					(NetScaler load balancer only) A load balancer rule distributes requests among a pool of services (a service in this context means an application running on a virtual machine). When creating a load balancer rule, you can specify a health check which will ensure that the rule forwards requests only to services that are healthy (running and available). When a health check is in effect, the load balancer will stop forwarding requests to any resources that it has found to be unhealthy. If the resource later becomes available again, the periodic health check (periodicity is configurable) will discover it and the resource will once again be made available to the load balancer.
				</div><div class="para">
					To configure how often the health check is performed by default, use the global configuration setting healthcheck.update.interval. This default applies to all the health check policies in the cloud. You can override this value for an individual health check policy.
				</div></div></div><div class="section" id="host-and-vm-enhancements"><div class="titlepage"><div><div><h2 class="title">2.4. Host and Virtual Machine Enhancements</h2></div></div></div><div class="para">
				The following new features expand the ways you can use hosts and virtual machines.
			</div><div class="section" id="vmware-drs"><div class="titlepage"><div><div><h3 class="title">2.4.1. VMware DRS Support</h3></div></div></div><div class="para">
					The VMware vSphere Distributed Resources Scheduler (DRS) is supported.
				</div></div><div class="section" id="windows-8"><div class="titlepage"><div><div><h3 class="title">2.4.2. Windows 8 and Windows Server 2012 as VM Guest OS</h3></div></div></div><div class="para">
					(Supported on XenServer, VMware, and KVM)
				</div><div class="para">
					Windows 8 and Windows Server 2012 can now be used as OS types on guest virtual machines. The OS would be made available the same as any other, by uploading an ISO or a template. The instructions for uploading ISOs and templates are given in the Administrator's Guide.
				</div><div class="note"><div class="admonition_header"><h2>Note</h2></div><div class="admonition"><div class="para">
						<span class="bold bold"><strong>Limitation:</strong></span> When used with VMware hosts, this feature works only for the following versions: vSphere ESXi 5.1 and ESXi 5.0 Patch 4.
					</div></div></div><div class="para">
				</div></div><div class="section" id="change-account"><div class="titlepage"><div><div><h3 class="title">2.4.3. Change Account Ownership of Virtual Machines</h3></div></div></div><div class="para">
					A root administrator can now change the ownership of any virtual machine from one account to any other account. A domain or sub-domain administrator can do the same for VMs within the domain from one account to any other account in the domain.
				</div></div><div class="section" id="dedicated-resources"><div class="titlepage"><div><div><h3 class="title">2.4.4. Private Pod, Cluster, or Host</h3></div></div></div><div class="para">
					Dedicating pod, cluster or host to a specific domain/account means that the domain/account will have sole access to the dedicated pod, cluster or hosts such that scalability, security and manageability within a domain/account can be improved. The resources which belong to that tenant will be placed into that dedicated pod, cluster or host.
				</div></div><div class="section" id="resize-volume"><div class="titlepage"><div><div><h3 class="title">2.4.5. Resizing Volumes</h3></div></div></div><div class="para">
					CloudStack provides the ability to resize data disks; CloudStack controls volume size by using disk offerings. This provides CloudStack administrators with the flexibility to choose how much space they want to make available to the end users. Volumes within the disk offerings with the same storage tag can be resized. For example, if you only want to offer 10, 50, and 100 GB offerings, the allowed resize should stay within those limits. That implies if you define a 10 GB, a 50 GB and a 100 GB disk offerings, a user can upgrade from 10 GB to 50 GB, or 50 GB to 100 GB. If you create a custom-sized disk offering, then you have the option to resize the volume by specifying a new, larger size. Additionally, using the resizeVolume API, a data volume can be moved from a static disk offering to a custom disk offering with the size specified. This functionality allows those who might be billing by certain volume sizes or disk offerings to stick to that model, while providing the flexibility to migrate to whatever custom size necessary. This feature is supported on KVM, XenServer, and VMware hosts. However, shrinking volumes is not supported on VMware hosts
				</div></div><div class="section" id="volume-snapshot-enhancement"><div class="titlepage"><div><div><h3 class="title">2.4.6. VMware Volume Snapshot Improved Performance</h3></div></div></div><div class="para">
					When you take a snapshot of a data volume on VMware, CloudStack will now use a more efficient storage technique to improve performance.
				</div><div class="para">
					Previously, every snapshot was immediately exported from vCenter to a mounted NFS share and packaged into an OVA file format. This operation consumed time and resources. Starting from 4.2, the original file formats (e.g., VMDK) provided by vCenter will be retained. An OVA file will only be created as needed, on demand.
				</div><div class="para">
					The new process applies only to newly created snapshots after upgrade to CloudStack 4.2. Snapshots that have already been taken and stored in OVA format will continue to exist in that format, and will continue to work as expected.
				</div></div><div class="section" id="storage-migration"><div class="titlepage"><div><div><h3 class="title">2.4.7. Storage Migration: XenMotion and vMotion</h3></div></div></div><div class="para">
					(Supported on XenServer and VMware)
				</div><div class="para">
					Storage migration allows VMs to be moved from one host to another, where the VMs are not located on storage shared between the two hosts. It provides the option to live migrate a VM’s disks along with the VM itself. It is now possible to migrate a VM from one XenServer resource pool / VMware cluster to another, or to migrate a VM whose disks are on local storage, or even to migrate a VM’s disks from one storage repository to another, all while the VM is running.
				</div></div><div class="section" id="vmware-configure-linked-clones"><div class="titlepage"><div><div><h3 class="title">2.4.8. Configuring Usage of Linked Clones on VMware</h3></div></div></div><div class="para">
					(For ESX hypervisor in conjunction with vCenter)
				</div><div class="para">
					In CloudStack 4.2, the creation of VMs as full clones is allowed. In previous versions, only linked clones were possible.
				</div><div class="para">
					For a full description of clone types, refer to VMware documentation. In summary: A full clone is a copy of an existing virtual machine which, once created, does not depend in any way on the original virtual machine. A linked clone is also a copy of an existing virtual machine, but it has ongoing dependency on the original. A linked clone shares the virtual disk of the original VM, and retains access to all files that were present at the time the clone was created.
				</div><div class="para">
					A new global configuration setting has been added, vmware.create.full.clone. When the administrator sets this to true, end users can create guest VMs only as full clones. The default value is true for new installations. For customers upgrading from a previous version of CloudStack, the default value of vmware.create.full.clone is false.
				</div></div><div class="section" id="host-deployment-rules"><div class="titlepage"><div><div><h3 class="title">2.4.9. VM Deployment Rules</h3></div></div></div><div class="para">
					Rules can be set up to ensure that particular VMs are not placed on the same physical host. These "anti-affinity rules" can increase the reliability of applications by ensuring that the failure of a single host can not take down the entire group of VMs supporting a given application. See Affinity Groups in the CloudStack 4.2 Administration Guide.
				</div></div><div class="section" id="cpu-ram-dynamic-scaling"><div class="titlepage"><div><div><h3 class="title">2.4.10. CPU and Memory Scaling for Running VMs</h3></div></div></div><div class="para">
					(Supported on VMware and XenServer)
				</div><div class="para">
					You can now change the CPU and RAM values for a running virtual machine. In previous versions of CloudStack, this could only be done on a stopped VM.
				</div><div class="para">
					It is not always possible to accurately predict the CPU and RAM requirements when you first deploy a VM. You might need to increase or decrease these resources at any time during the life of a VM. With the new ability to dynamically modify CPU and RAM levels, you can change these resources for a running VM without incurring any downtime.
				</div><div class="para">
					Dynamic CPU and RAM scaling can be used in the following cases:
				</div><div class="itemizedlist"><ul><li class="listitem"><div class="para">
							New VMs that are created after the installation of CloudStack 4.2. If you are upgrading from a previous version of CloudStack, your existing VMs created with previous versions will not have the dynamic scaling capability.
						</div></li><li class="listitem"><div class="para">
							User VMs on hosts running VMware and XenServer.
						</div></li><li class="listitem"><div class="para">
							System VMs on VMware.
						</div></li><li class="listitem"><div class="para">
							VM Tools or XenServer Tools must be installed on the virtual machine.
						</div></li><li class="listitem"><div class="para">
							The new requested CPU and RAM values must be within the constraints allowed by the hypervisor and the VM operating system.
						</div></li></ul></div><div class="para">
					To configure this feature, use the following new global configuration variables:
				</div><div class="itemizedlist"><ul><li class="listitem"><div class="para">
							enable.dynamic.scale.vm: Set to True to enable the feature. By default, the feature is turned off.
						</div></li><li class="listitem"><div class="para">
							scale.retry: How many times to attempt the scaling operation. Default = 2.
						</div></li></ul></div></div><div class="section" id="cpu-ram-overcommit"><div class="titlepage"><div><div><h3 class="title">2.4.11. CPU and Memory Over-Provisioning</h3></div></div></div><div class="para">
					(Supported for XenServer, KVM, and VMware)
				</div><div class="para">
					In CloudStack 4.2, CPU and memory (RAM) over-provisioning factors can be set for each cluster to change the number of VMs that can run on each host in the cluster. This helps optimize the use of resources. By increasing the over-provisioning ratio, more resource capacity will be used. If the ratio is set to 1, no over-provisioning is done.
				</div><div class="para">
					In previous releases, CloudStack did not perform memory over-provisioning. It performed CPU over-provisioning based on a ratio configured by the administrator in the global configuration setting cpu.overprovisioning.factor. Starting in 4.2, the administrator can specify a memory over-provisioning ratio, and can specify both CPU and memory over-provisioning ratios on a per-cluster basis, rather than only on a global basis.
				</div><div class="para">
					In any given cloud, the optimum number of VMs for each host is affected by such things as the hypervisor, storage, and hardware configuration. These may be different for each cluster in the same cloud. A single global over-provisioning setting could not provide the best utilization for all the different clusters in the cloud. It had to be set for the lowest common denominator. The new per-cluster setting provides a finer granularity for better utilization of resources, no matter where the CloudStack placement algorithm decides to place a VM.
				</div></div><div class="section" id="baremetal"><div class="titlepage"><div><div><h3 class="title">2.4.12. Kickstart Installation for Bare Metal Provisioning</h3></div></div></div><div class="para">
					CloudStack 4.2 supports the kick start installation method for RPM-based Linux operating systems on baremetal hosts in basic zones. Users can provision a baremetal host managed by CloudStack as long as they have the kick start file and corresponding OS installation ISO ready.
				</div><div class="para">
					Tested on CentOS 5.5, CentOS 6.2, CentOS 6.3, Ubuntu 12.04.
				</div><div class="para">
					For more information, see the Baremetal Installation Guide.
				</div></div><div class="section" id="baremetal-ucs"><div class="titlepage"><div><div><h3 class="title">2.4.13. Enhanced Bare Metal Support on Cisco UCS</h3></div></div></div><div class="para">
					You can now more easily provision new Cisco UCS server blades into CloudStack for use as bare metal hosts. The goal is to enable easy expansion of the cloud by leveraging the programmability of the UCS converged infrastructure and CloudStack’s knowledge of the cloud architecture and ability to orchestrate. With this new feature, CloudStack can automatically understand the UCS environment, server profiles, etc. to make it easy to deploy a bare metal OS on a Cisco UCS.
				</div></div><div class="section" id="update-vm-image"><div class="titlepage"><div><div><h3 class="title">2.4.14. Changing a VM's Base Image</h3></div></div></div><div class="para">
					Every VM is created from a base image, which is a template or ISO which has been created and stored in CloudStack. Both cloud administrators and end users can create and modify templates, ISOs, and VMs.
				</div><div class="para">
					In CloudStack 4.2, there is a new way to modify an existing VM. You can change an existing VM from one base image to another. For example, suppose there is a template based on a particular operating system, and the OS vendor releases a software patch. The administrator or user naturally wants to apply the patch and then make sure existing VMs start using it. Whether a software update is involved or not, it's also possible to simply switch a VM from its current template to any other desired template.
				</div></div><div class="section" id="reset-vm-reboot"><div class="titlepage"><div><div><h3 class="title">2.4.15. Reset VM on Reboot</h3></div></div></div><div class="para">
					In CloudStack 4.2, you can specify that you want to discard the root disk and create a new one whenever a given VM is rebooted. This is useful for secure environments that need a fresh start on every boot and for desktops that should not retain state. The IP address of the VM will not change due to this operation.
				</div></div><div class="section" id="vm-snapshots"><div class="titlepage"><div><div><h3 class="title">2.4.16. Virtual Machine Snapshots for VMware</h3></div></div></div><div class="para">
					(VMware hosts only) In addition to the existing CloudStack ability to snapshot individual VM volumes, you can now take a VM snapshot to preserve all the VM's data volumes as well as (optionally) its CPU/memory state. This is useful for quick restore of a VM. For example, you can snapshot a VM, then make changes such as software upgrades. If anything goes wrong, simply restore the VM to its previous state using the previously saved VM snapshot.
				</div><div class="para">
					The snapshot is created using the VMware native snapshot facility. The VM snapshot includes not only the data volumes, but optionally also whether the VM is running or turned off (CPU state) and the memory contents. The snapshot is stored in CloudStack's primary storage.
				</div><div class="para">
					VM snapshots can have a parent/child relationship. Each successive snapshot of the same VM is the child of the snapshot that came before it. Each time you take an additional snapshot of the same VM, it saves only the differences between the current state of the VM and the state stored in the most recent previous snapshot. The previous snapshot becomes a parent, and the new snapshot is its child. It is possible to create a long chain of these parent/child snapshots, which amount to a "redo" record leading from the current state of the VM back to the original.
				</div></div><div class="section" id="vm-userdata"><div class="titlepage"><div><div><h3 class="title">2.4.17. Increased Userdata Size When Deploying a VM</h3></div></div></div><div class="para">
					You can now specify up to 32KB of userdata when deploying a virtual machine through the CloudStack UI or the deployVirtualMachine API call.
				</div></div><div class="section" id="vmware-cluster-limit"><div class="titlepage"><div><div><h3 class="title">2.4.18. Set VMware Cluster Size Limit Depending on VMware Version</h3></div></div></div><div class="para">
					The maximum number of hosts in a vSphere cluster is determined by the VMware hypervisor software. For VMware versions 4.2, 4.1, 5.0, and 5.1, the limit is 32 hosts.
				</div><div class="para">
					For CloudStack 4.2, the global configuration setting vmware.percluster.host.max has been removed. The maximum number of hosts in a VMware cluster is now determined by the underlying hypervisor software.
				</div><div class="note"><div class="admonition_header"><h2>Note</h2></div><div class="admonition"><div class="para">
						Best Practice: It is advisable for VMware clusters in CloudStack to be smaller than the VMware hypervisor's maximum size. A cluster size of up to 8 hosts has been found optimal for most real-world situations.
					</div></div></div></div><div class="section" id="limit-accounts-domains-rn"><div class="titlepage"><div><div><h3 class="title">2.4.19. Limiting Resource Usage</h3></div></div></div><div class="para">
					Previously in CloudStack, resource usage limit was imposed based on the resource count, that is, restrict a user or domain on the basis of the number of VMs, volumes, or snapshots used. In CloudStack 4.2, a new set of resource types has been added to the existing pool of resources (VMs, Volumes, and Snapshots) to support the customization model—need-basis usage, such as large VM or small VM. The new resource types are now broadly classified as CPU, RAM, Primary storage, and Secondary storage. CloudStack 4.2 allows the root administrator to impose resource usage limit by the following resource types for Domain, Project and Accounts.
				</div><div class="itemizedlist"><ul><li class="listitem"><div class="para">
							CPUs
						</div></li><li class="listitem"><div class="para">
							Memory (RAM)
						</div></li><li class="listitem"><div class="para">
							Primary Storage (Volumes)
						</div></li><li class="listitem"><div class="para">
							Secondary Storage (Snapshots, Templates, ISOs)
						</div></li></ul></div></div></div><div class="section" id="ops"><div class="titlepage"><div><div><h2 class="title">2.5. Monitoring, Maintenance, and Operations Enhancements</h2></div></div></div><div class="section" id="delete-alerts"><div class="titlepage"><div><div><h3 class="title">2.5.1. Deleting and Archiving Events and Alerts</h3></div></div></div><div class="para">
					In addition to viewing a list of events and alerts in the UI, the administrator can now delete and archive them. In order to support deleting and archiving alerts, the following global parameters have been added:
				</div><div class="itemizedlist"><ul><li class="listitem"><div class="para">
							<span class="bold bold"><strong>alert.purge.delay</strong></span>: The alerts older than specified number of days are purged. Set the value to 0 to never purge alerts automatically.
						</div></li><li class="listitem"><div class="para">
							<span class="bold bold"><strong>alert.purge.interval</strong></span>: The interval in seconds to wait before running the alert purge thread. The default is 86400 seconds (one day).
						</div></li></ul></div><div class="note"><div class="admonition_header"><h2>Note</h2></div><div class="admonition"><div class="para">
						Archived alerts or events cannot be viewed in the UI, or by using the API. They are maintained in the database for auditing or compliance purposes.
					</div></div></div></div><div class="section" id="global-parameters"><div class="titlepage"><div><div><h3 class="title">2.5.2. Increased Granularity for Configuration Parameters</h3></div></div></div><div class="para">
					Some configuration parameters which were previously available only at the global level of the cloud can now be set for smaller components of the cloud, such as at the zone level. To set these parameters, look for the new Settings tab in the UI. You will find it on the detail page for an account, cluster, zone, or primary storage.
				</div><div class="para">
					The account level parameters are: <code class="code">remote.access.vpn.client.iprange</code>, <code class="code">allow.public.user.templates</code>, <code class="code">use.system.public.ips</code>, and <code class="code">use.system.guest.vlans</code>
				</div><div class="para">
					The cluster level parameters are <code class="code">cluster.storage.allocated.capacity.notificationthreshold</code>, <code class="code">cluster.storage.capacity.notificationthreshold</code>, <code class="code">cluster.cpu.allocated.capacity.notificationthreshold</code>, <code class="code">cluster.memory.allocated.capacity.notificationthreshold</code>, <code class="code"> cluster.cpu.allocated.capacity.disablethreshold</code>, <code class="code">cluster.memory.allocated.capacity.disablethreshold</code>, <code class="code">cpu.overprovisioning.factor</code>, <code class="code">mem.overprovisioning.factor</code>, <code class="code">vmware.reserve.cpu</code>, and <code class="code">vmware.reserve.mem</code>.
				</div><div class="para">
					The zone level parameters are <code class="code">pool.storage.allocated.capacity.disablethreshold</code>, <code class="code">pool.storage.capacity.disablethreshold</code>, <code class="code">storage.overprovisioning.factor</code>, <code class="code">network.throttling.rate</code>, <code class="code">guest.domain.suffix</code>, <code class="code">router.template.xen</code>, <code class="code">router.template.kvm</code>, <code class="code">router.template.vmware</code>, <code class="code">router.template.hyperv</code>, <code class="code">router.template.lx</code>c, <code class="code">enable.dynamic.scale.vm</code>, <code class="code">use.external.dns</code>, and <code class="code">blacklisted.routes</code>.
				</div></div><div class="section" id="api-request-throttling"><div class="titlepage"><div><div><h3 class="title">2.5.3. API Request Throttling</h3></div></div></div><div class="para">
					In CloudStack 4.2, you can limit the rate at which API requests can be placed for each account. This is useful to avoid malicious attacks on the Management Server, prevent performance degradation, and provide fairness to all accounts.
				</div><div class="para">
					If the number of API calls exceeds the threshold, an error message is returned for any additional API calls. The caller will have to retry these API calls at another time.
				</div><div class="para">
					To control the API request throttling, use the following new global configuration settings:
				</div><div class="itemizedlist"><ul><li class="listitem"><div class="para">
							api.throttling.enabled - Enable/Disable API throttling. By default, this setting is false, so API throttling is not enabled.
						</div></li><li class="listitem"><div class="para">
							api.throttling.interval (in seconds) - Time interval during which the number of API requests is to be counted. When the interval has passed, the API count is reset to 0.
						</div></li><li class="listitem"><div class="para">
							api.throttling.max - Maximum number of APIs that can be placed within the api.throttling.interval period.
						</div></li><li class="listitem"><div class="para">
							api.throttling.cachesize - Cache size for storing API counters. Use a value higher than the total number of accounts managed by the cloud. One cache entry is needed for each account, to store the running API total for that account within the current time window.
						</div></li></ul></div></div><div class="section" id="external-alert-managers"><div class="titlepage"><div><div><h3 class="title">2.5.4. Sending Alerts to External SNMP and Syslog Managers</h3></div></div></div><div class="para">
					In addition to showing administrator alerts on the Dashboard in the CloudStack UI and sending them in email, CloudStack now can also send the same alerts to external SNMP or Syslog management software. This is useful if you prefer to use an SNMP or Syslog manager to monitor your cloud.
				</div><div class="para">
					The supported protocol is SNMP version 2.
				</div></div><div class="section" id="default-pwd-engine"><div class="titlepage"><div><div><h3 class="title">2.5.5. Changing the Default Password Encryption</h3></div></div></div><div class="para">
					Passwords are encoded when creating or updating users. The new default preferred encoder, replacing MD5, is SHA256. It is more secure than MD5 hashing. If you take no action to customize password encryption and authentication, SHA256 Salt will be used.
				</div><div class="para">
					If you prefer a different authentication mechanism, CloudStack 4.2 provides a way for you to determine the default encoding and authentication mechanism for admin and user logins. Two new configurable lists have been introduced: userPasswordEncoders and userAuthenticators. userPasswordEncoders allow you to configure the order of preference for encoding passwords, and userAuthenticator allows you to configure the order in which authentication schemes are invoked to validate user passwords.
				</div><div class="para">
					The plain text user authenticator has been modified not to convert supplied passwords to their md5 sums before checking them with the database entries. It performs a simple string comparison between retrieved and supplied login passwords instead of comparing the retrieved md5 hash of the stored password against the supplied md5 hash of the password, because clients no longer hash the password.
				</div></div><div class="section" id="cloud-bugtool"><div class="titlepage"><div><div><h3 class="title">2.5.6. Log Collection Utility cloud-bugtool</h3></div></div></div><div class="para">
					CloudStack provides a command-line utility called cloud-bugtool to make it easier to collect the logs and other diagnostic data required for troubleshooting. This is especially useful when interacting with Citrix Technical Support.
				</div><div class="para">
					You can use cloud-bugtool to collect the following:
				</div><div class="itemizedlist"><ul><li class="listitem"><div class="para">
							Basic system and environment information and network configuration including IP addresses, routing, and name resolver settings
						</div></li><li class="listitem"><div class="para">
							Information about running processes
						</div></li><li class="listitem"><div class="para">
							Management Server logs
						</div></li><li class="listitem"><div class="para">
							System logs in /var/log/
						</div></li><li class="listitem"><div class="para">
							Dump of the cloud database
						</div></li></ul></div><div class="warning"><div class="admonition_header"><h2>Warning</h2></div><div class="admonition"><div class="para">
						cloud-bugtool collects information which might be considered sensitive and confidential. Using the <code class="code">--nodb</code> option to avoid the cloud database can reduce this concern, though it is not guaranteed to exclude all sensitive data.
					</div></div></div><div class="para">
				</div></div><div class="section" id="rbd-primary-storage"><div class="titlepage"><div><div><h3 class="title">2.5.7. Snaphotting, Backups, Cloning and System VMs for RBD Primary Storage</h3></div></div></div><div class="note"><div class="admonition_header"><h2>Note</h2></div><div class="admonition"><div class="para">
						These new RBD features require at least librbd 0.61.7 (Cuttlefish) and libvirt 0.9.14 on the KVM hypervisors.
					</div></div></div><div class="para">
					This release of CloudStack will leverage the features of RBD format 2. This allows snapshotting and backing up those snapshots.
				</div><div class="para">
					Backups of snapshots to Secondary Storage are full copies of the RBD snapshot, they are not RBD diffs. This because when restoring a backup of a snapshot it is not mandatory that this backup is deployed on RBD again, it could also be a NFS Primary Storage.
				</div><div class="para">
					Another key feature of RBD format 2 is cloning. With this release templates will be copied to Primary Storage once and by using the cloning mechanism new disks will be cloned from this parent template. This saves space and decreases deployment time for instances dramatically.
				</div><div class="para">
					Before this release, a NFS Primary Storage was still required for running the System VMs from. The reason was a so called 'patch disk' that was generated by the hypervisor which contained metadata for the System VM. The scripts generating this disk didn't support RBD and thus System VMs had to be deployed from NFS. With 4.2 instead of the patch disk a VirtIO serial console is used to pass meta information to System VMs. This enabled the deployment of System VMs on RBD Primary Storage.
				</div></div></div><div class="section" id="issues-fixed-4.2"><div class="titlepage"><div><div><h2 class="title">2.6. Issues Fixed in 4.2.0</h2></div></div></div><div class="para">
				Apache CloudStack uses <a href="https://issues.apache.org/jira/browse/CLOUDSTACK">Jira</a> to track its issues. All new features and bugs for 4.2.0 have been tracked in Jira, and have a standard naming convention of "CLOUDSTACK-NNNN" where "NNNN" is the issue number.
			</div><div class="para">
				For the list of issues fixed, see <a href="https://issues.apache.org/jira/issues/?filter=12324870">Issues Fixed in 4.2</a>.
			</div></div><div class="section" id="known-issues-4.2"><div class="titlepage"><div><div><h2 class="title">2.7. Known Issues in 4.2.0</h2></div></div></div><div class="para">
				This section includes a summary of known issues that were fixed in 4.2.0. For the list of known issues, see <a href="https://issues.apache.org/jira/issues/?filter=12324873">Known Issues</a>.
			</div></div></div><div class="chapter" id="upgrade-instructions"><div class="titlepage"><div><div><h1 class="title">Chapter 3. Upgrade Instructions for 4.2</h1></div></div></div><div class="toc"><dl class="toc"><dt><span class="section"><a href="#upgrade-from-4.0-to-4.1">3.1. Upgrade from 4.1.x to 4.2.0</a></span></dt><dt><span class="section"><a href="#upgrade-from-3.0.x-to-4.0">3.2. Upgrade from 3.0.x to 4.2.0</a></span></dt><dt><span class="section"><a href="#upgrade-from-2.2.x-to-4.1">3.3. Upgrade from 2.2.14 to 4.2.0</a></span></dt></dl></div><div class="para">
			This section contains upgrade instructions from prior versions of CloudStack to Apache CloudStack 4.2.0. We include instructions on upgrading to Apache CloudStack from pre-Apache versions of Citrix CloudStack (last version prior to Apache is 3.0.2) and from the releases made while CloudStack was in the Apache Incubator.
		</div><div class="para">
			If you run into any issues during upgrades, please feel free to ask questions on users@cloudstack.apache.org or dev@cloudstack.apache.org.
		</div><div class="note"><div class="admonition_header"><h2>Overprovisioning cautions</h2></div><div class="admonition"><div class="para">
				If the CloudStack instance you are upgrading is leveraging overprovisioning you need to read and understand <a class="xref" href="#cpu-ram-overcommit">Section 2.4.11, “CPU and Memory Over-Provisioning”</a>. The overprovisioning factors are now cluster specific and should you be overprovisioned, your new system VMs may not start up.
			</div></div></div><div class="section" id="upgrade-from-4.0-to-4.1"><div class="titlepage"><div><div><h2 class="title">3.1. Upgrade from 4.1.x to 4.2.0</h2></div></div></div><div class="para">
				This section will guide you from CloudStack 4.1.x versions to CloudStack 4.2.0.
			</div><div class="para">
				Any steps that are hypervisor-specific will be called out with a note.
			</div><div class="para">
				We recommend reading through this section once or twice before beginning your upgrade procedure, and working through it on a test system before working on a production system.
			</div><div class="orderedlist"><ol><li class="listitem"><div class="para">
						Most users of CloudStack manage the installation and upgrades of CloudStack with one of Linux's predominant package systems, RPM or APT. This guide assumes you'll be using RPM and Yum (for Red Hat Enterprise Linux or CentOS), or APT and Debian packages (for Ubuntu).
					</div></li><li class="listitem"><div class="para">
						Create RPM or Debian packages (as appropriate) and a repository from the 4.2.0 source, or check the Apache CloudStack downloads page at <a href="http://cloudstack.apache.org/downloads.html">http://cloudstack.apache.org/downloads.html</a> for package repositories supplied by community members. You will need them for step <a class="xref" href="#upgrade-deb-packages">7</a> or step <a class="xref" href="#upgrade-rpm-packages">10</a>.
					</div><div class="para">
						Instructions for creating packages from the CloudStack source are in the <a href="http://cloudstack.apache.org/docs/en-US/index.html">Installation Guide</a>.
					</div></li><li class="listitem"><div class="para">
						Stop your management server or servers. Run this on all management server hosts:
					</div><pre class="programlisting"><code class="prompt">#</code> service cloudstack-management stop</pre></li><li class="listitem"><div class="para">
						If you are running a usage server or usage servers, stop those as well:
					</div><pre class="programlisting"><code class="prompt">#</code> service cloudstack-usage stop</pre></li><li class="listitem"><div class="para">
						Make a backup of your MySQL database. If you run into any issues or need to roll back the upgrade, this will assist in debugging or restoring your existing environment. You'll be prompted for your password.
					</div><pre class="programlisting"><code class="prompt">#</code> mysqldump -u root -p cloud &gt; cloudstack-backup.sql</pre></li><li class="listitem"><div class="para">
						(KVM Only) If primary storage of type local storage is in use, the path for this storage needs to be verified to ensure it passes new validation. Check local storage by querying the cloud.storage_pool table:
					</div><pre class="programlisting"><code class="prompt">#</code>mysql -u cloud -p -e "select id,name,path from cloud.storage_pool where pool_type='Filesystem'"</pre><div class="para">
						If local storage paths are found to have a trailing forward slash, remove it: 
<pre class="programlisting"><code class="prompt">#</code>mysql -u cloud -p -e 'update cloud.storage_pool set path="/var/lib/libvirt/images" where path="/var/lib/libvirt/images/"';</pre>

					</div></li><li class="listitem" id="upgrade-deb-packages"><div class="para">
						If you are using Ubuntu, follow this procedure to upgrade your packages. If not, skip to step <a class="xref" href="#upgrade-rpm-packages">10</a>.
					</div><div class="note"><div class="admonition_header"><h2>Community Packages</h2></div><div class="admonition"><div class="para">
							This section assumes you're using the community supplied packages for CloudStack. If you've created your own packages and APT repository, substitute your own URL for the ones used in these examples.
						</div></div></div><div class="orderedlist" id="debsteps"><ol class="loweralpha"><li class="listitem"><div class="para">
								The first order of business will be to change the sources list for each system with CloudStack packages. This means all management servers, and any hosts that have the KVM agent. (No changes should be necessary for hosts that are running VMware or Xen.)
							</div><div class="para">
								Start by opening <code class="filename">/etc/apt/sources.list.d/cloudstack.list</code> on any systems that have CloudStack packages installed.
							</div><div class="para">
								This file should have one line, which contains:
							</div><pre class="programlisting">deb http://cloudstack.apt-get.eu/ubuntu precise 4.0</pre><div class="para">
								We'll change it to point to the new package repository:
							</div><pre class="programlisting">deb http://cloudstack.apt-get.eu/ubuntu precise 4.2</pre><div class="para">
								If you're using your own package repository, change this line to read as appropriate for your 4.2.0 repository.
							</div></li><li class="listitem"><div class="para">
								Now update your apt package list:
							</div><pre class="programlisting">$ <span class="perl_BString">sudo</span> apt-get update</pre></li><li class="listitem" id="deb-master"><div class="para">
								Now that you have the repository configured, it's time to install the <code class="filename">cloudstack-management</code> package. This will pull in any other dependencies you need.
							</div><pre class="programlisting">$ <span class="perl_BString">sudo</span> apt-get <span class="perl_BString">install</span> cloudstack-management</pre></li><li class="listitem" id="kvm-agent-deb"><div class="para">
								You will need to manually install the <code class="filename">cloudstack-agent</code> package:
							</div><pre class="programlisting">$ <span class="perl_BString">sudo</span> apt-get <span class="perl_BString">install</span> cloudstack-agent</pre><div class="para">
								During the installation of <code class="filename">cloudstack-agent</code>, APT will copy your <code class="filename">agent.properties</code>, <code class="filename">log4j-cloud.xml</code>, and <code class="filename">environment.properties</code> from <code class="filename">/etc/cloud/agent</code> to <code class="filename">/etc/cloudstack/agent</code>.
							</div><div class="para">
								When prompted whether you wish to keep your configuration, say Yes.
							</div></li><li class="listitem"><div class="para">
								Verify that the file <code class="filename">/etc/cloudstack/agent/environment.properties</code> has a line that reads:
							</div><pre class="programlisting">paths.<span class="perl_Others">script=</span>/usr/share/cloudstack-common</pre><div class="para">
								If not, add the line.
							</div></li><li class="listitem"><div class="para">
								Restart the agent:
							</div><pre class="programlisting">
service cloudstack-agent stop
<span class="perl_BString">killall</span> jsvc
service cloudstack-agent start
</pre></li></ol></div></li><li class="listitem"><div class="para">
						(VMware only) Additional steps are required for each VMware cluster. These steps will not affect running guests in the cloud. These steps are required only for clouds using VMware clusters:
					</div><div class="orderedlist"><ol class="loweralpha"><li class="listitem"><div class="para">
								Stop the Management Server:
							</div><pre class="programlisting">service cloudstack-management stop</pre></li><li class="listitem"><div class="para">
								Generate the encrypted equivalent of your vCenter password:
							</div><pre class="programlisting">java -classpath /usr/share/cloudstack-common/lib/jasypt-1.9.0.jar org.jasypt.intf.cli.JasyptPBEStringEncryptionCLI encrypt.sh input="_your_vCenter_password_" password="`cat /etc/cloudstack/management/key`" verbose=false</pre><div class="para">
								Store the output from this step, we need to add this in cluster_details table and vmware_data_center tables in place of the plain text password
							</div></li><li class="listitem"><div class="para">
								Find the ID of the row of cluster_details table that you have to update:
							</div><pre class="programlisting">mysql -u &lt;username&gt; -p&lt;password&gt;</pre><pre class="programlisting">select * from cloud.cluster_details;</pre></li><li class="listitem"><div class="para">
								Update the plain text password with the encrypted one
							</div><pre class="programlisting">update cloud.cluster_details set value = '_ciphertext_from_step_1_' where id = _id_from_step_2_;</pre></li><li class="listitem"><div class="para">
								Confirm that the table is updated:
							</div><pre class="programlisting">select * from cloud.cluster_details;</pre></li><li class="listitem"><div class="para">
								Find the ID of the correct row of vmware_data_center that you want to update
							</div><pre class="programlisting">select * from cloud.vmware_data_center;</pre></li><li class="listitem"><div class="para">
								update the plain text password with the encrypted one:
							</div><pre class="programlisting">update cloud.vmware_data_center set password = '_ciphertext_from_step_1_' where id = _id_from_step_5_;</pre></li><li class="listitem"><div class="para">
								Confirm that the table is updated:
							</div><pre class="programlisting">select * from cloud.vmware_data_center;</pre></li><li class="listitem"><div class="para">
								Start the CloudStack Management server
							</div><pre class="programlisting">service cloudstack-management start</pre></li></ol></div></li><li class="listitem"><div class="para">
						(KVM only) Additional steps are required for each KVM host. These steps will not affect running guests in the cloud. These steps are required only for clouds using KVM as hosts and only on the KVM hosts.
					</div><div class="orderedlist"><ol class="loweralpha"><li class="listitem"><div class="para">
								Configure the CloudStack yum repository as detailed above.
							</div></li><li class="listitem"><div class="para">
								Stop the running agent.
							</div><pre class="programlisting"># service cloud-agent stop</pre></li><li class="listitem"><div class="para">
								Update the agent software.
							</div><pre class="programlisting"># yum update cloudstack-agent</pre></li><li class="listitem"><div class="para">
								Start the agent.
							</div><pre class="programlisting"># service cloudstack-agent start</pre></li></ol></div></li><li class="listitem" id="upgrade-rpm-packages"><div class="para">
						If you are using CentOS or RHEL, follow this procedure to upgrade your packages. If not, skip to step <a class="xref" href="#restart-system-vms">12</a>.
					</div><div class="note"><div class="admonition_header"><h2>Community Packages</h2></div><div class="admonition"><div class="para">
							This section assumes you're using the community supplied packages for CloudStack. If you've created your own packages and yum repository, substitute your own URL for the ones used in these examples.
						</div></div></div><div class="orderedlist" id="rpmsteps"><ol class="loweralpha"><li class="listitem"><div class="para">
								The first order of business will be to change the yum repository for each system with CloudStack packages. This means all management servers, and any hosts that have the KVM agent.
							</div><div class="para">
								(No changes should be necessary for hosts that are running VMware or Xen.)
							</div><div class="para">
								Start by opening <code class="filename">/etc/yum.repos.d/cloudstack.repo</code> on any systems that have CloudStack packages installed.
							</div><div class="para">
								This file should have content similar to the following:
							</div><pre class="programlisting">
[apache-cloudstack]
<span class="perl_Others">name=</span>Apache CloudStack
<span class="perl_Others">baseurl=</span>http://cloudstack.apt-get.eu/rhel/4.0/
<span class="perl_Others">enabled=</span>1
<span class="perl_Others">gpgcheck=</span>0
</pre><div class="para">
								If you are using the community provided package repository, change the base url to http://cloudstack.apt-get.eu/rhel/4.2/
							</div><div class="para">
								If you're using your own package repository, change this line to read as appropriate for your 4.2.0 repository.
							</div></li><li class="listitem" id="rpm-master"><div class="para">
								Now that you have the repository configured, it's time to install the <code class="filename">cloudstack-management</code> package by upgrading the older <code class="filename">cloudstack-management</code> package.
							</div><pre class="programlisting">$ <span class="perl_BString">sudo</span> yum upgrade cloudstack-management</pre></li><li class="listitem" id="kvm-agent-rpm"><div class="para">
								For KVM hosts, you will need to upgrade the <code class="filename">cloud-agent</code> package, similarly installing the new version as <code class="filename">cloudstack-agent</code>.
							</div><pre class="programlisting">$ <span class="perl_BString">sudo</span> yum upgrade cloudstack-agent</pre></li><li class="listitem"><div class="para">
								Verify that the file <code class="filename">/etc/cloudstack/agent/environment.properties</code> has a line that reads:
							</div><pre class="programlisting">paths.<span class="perl_Others">script=</span>/usr/share/cloudstack-common</pre><div class="para">
								If not, add the line.
							</div></li><li class="listitem"><div class="para">
								Restart the agent:
							</div><pre class="programlisting">
service cloudstack-agent stop
<span class="perl_BString">killall</span> jsvc
service cloudstack-agent start
</pre></li></ol></div></li><li class="listitem" id="restart-mgmt-server"><div class="para">
						Now it's time to restart the management server
					</div><pre class="programlisting"><span class="perl_Comment"># service cloudstack-management start</span></pre></li><li class="listitem" id="restart-system-vms"><div class="para">
						Once you've upgraded the packages on your management servers, you'll need to restart the system VMs. Ensure that the admin port is set to 8096 by using the "integration.api.port" global parameter. This port is used by the cloud-sysvmadm script at the end of the upgrade procedure. For information about how to set this parameter, see "Setting Global Configuration Parameters" in the Installation Guide. Changing this parameter will require management server restart. Also make sure port 8096 is open in your local host firewall to do this.
					</div><div class="para">
						There is a script that will do this for you, all you need to do is run the script and supply the IP address for your MySQL instance and your MySQL credentials:
					</div><pre class="programlisting"><span class="perl_Comment"># nohup cloudstack-sysvmadm -d IP address -u cloud -p -a &gt; sysvm.log 2&gt;&amp;1 &amp;</span></pre><div class="para">
						You can monitor the log for progress. The process of restarting the system VMs can take an hour or more.
					</div><pre class="programlisting"><span class="perl_Comment"># tail -f sysvm.log</span></pre><div class="para">
						The output to <code class="filename">sysvm.log</code> will look something like this:
					</div><pre class="programlisting">
Stopping and starting 1 secondary storage vm<span class="perl_Keyword">(</span>s<span class="perl_Keyword">)</span>...
Done stopping and starting secondary storage vm<span class="perl_Keyword">(</span>s<span class="perl_Keyword">)</span>
Stopping and starting 1 console proxy vm<span class="perl_Keyword">(</span>s<span class="perl_Keyword">)</span>...
Done stopping and starting console proxy vm<span class="perl_Keyword">(</span>s<span class="perl_Keyword">)</span>.
Stopping and starting 4 running routing vm<span class="perl_Keyword">(</span>s<span class="perl_Keyword">)</span>...
Done restarting router<span class="perl_Keyword">(</span>s<span class="perl_Keyword">)</span>.
</pre></li><li class="listitem"><div class="note"><div class="admonition_header"><h2>For Xen Hosts: Copy vhd-utils</h2></div><div class="admonition"><div class="para">
							This step is only for CloudStack installs that are using Xen hosts.
						</div></div></div><div class="para">
						Copy the file <code class="filename">vhd-utils</code> to <code class="filename">/usr/share/cloudstack-common/scripts/vm/hypervisor/xenserver</code>.
					</div></li></ol></div></div><div class="section" id="upgrade-from-3.0.x-to-4.0"><div class="titlepage"><div><div><h2 class="title">3.2. Upgrade from 3.0.x to 4.2.0</h2></div></div></div><div class="para">
				This section will guide you from Citrix CloudStack 3.0.x to Apache CloudStack 4.2.0. Sections that are hypervisor-specific will be called out with a note.
			</div><div class="orderedlist"><ol><li class="listitem"><div class="note"><div class="admonition_header"><h2>Note</h2></div><div class="admonition"><div class="para">
							The following upgrade instructions apply only if you're using VMware hosts. If you're not using VMware hosts, skip this step and move on to <a class="xref" href="#stopping-usage-servers">3</a>.
						</div></div></div><div class="para">
						In each zone that includes VMware hosts, you need to add a new system VM template.
					</div><div class="orderedlist"><ol class="loweralpha"><li class="listitem"><div class="para">
								While running the existing 3.0.x system, log in to the UI as root administrator.
							</div></li><li class="listitem"><div class="para">
								In the left navigation bar, click Templates.
							</div></li><li class="listitem"><div class="para">
								In Select view, click Templates.
							</div></li><li class="listitem"><div class="para">
								Click Register template.
							</div><div class="para">
								The Register template dialog box is displayed.
							</div></li><li class="listitem"><div class="para">
								In the Register template dialog box, specify the following values (do not change these):
							</div><div class="informaltable"><table border="1"><colgroup><col width="33%" align="left" class="1" /><col width="67%" align="left" class="2" /></colgroup><thead><tr><th class="" align="left">
												<div class="para">
													Hypervisor
												</div>
											</th><th class="" align="left">
												<div class="para">
													Description
												</div>
											</th></tr></thead><tbody><tr><td class="" align="left">
												<div class="para">
													XenServer
												</div>
											</td><td class="" align="left">
												<div class="para">
													Name: systemvm-xenserver-4.2
												</div>
												 <div class="para">
													Description: systemvm-xenserver-4.2
												</div>
												 <div class="para">
													URL:http://download.cloud.com/templates/4.2/systemvmtemplate-2013-07-12-master-xen.vhd.bz2
												</div>
												 <div class="para">
													Zone: Choose the zone where this hypervisor is used
												</div>
												 <div class="para">
													Hypervisor: XenServer
												</div>
												 <div class="para">
													Format: VHD
												</div>
												 <div class="para">
													OS Type: Debian GNU/Linux 7.0 (32-bit) (or the highest Debian release number available in the dropdown)
												</div>
												 <div class="para">
													Extractable: no
												</div>
												 <div class="para">
													Password Enabled: no
												</div>
												 <div class="para">
													Public: no
												</div>
												 <div class="para">
													Featured: no
												</div>

											</td></tr><tr><td class="" align="left">
												<div class="para">
													KVM
												</div>
											</td><td class="" align="left">
												<div class="para">
													Name: systemvm-kvm-4.2
												</div>
												 <div class="para">
													Description: systemvm-kvm-4.2
												</div>
												 <div class="para">
													URL: http://download.cloud.com/templates/4.2/systemvmtemplate-2013-06-12-master-kvm.qcow2.bz2
												</div>
												 <div class="para">
													Zone: Choose the zone where this hypervisor is used
												</div>
												 <div class="para">
													Hypervisor: KVM
												</div>
												 <div class="para">
													Format: QCOW2
												</div>
												 <div class="para">
													OS Type: Debian GNU/Linux 7.0 (32-bit) (or the highest Debian release number available in the dropdown)
												</div>
												 <div class="para">
													Extractable: no
												</div>
												 <div class="para">
													Password Enabled: no
												</div>
												 <div class="para">
													Public: no
												</div>
												 <div class="para">
													Featured: no
												</div>

											</td></tr><tr><td class="" align="left">
												<div class="para">
													VMware
												</div>
											</td><td class="" align="left">
												<div class="para">
													Name: systemvm-vmware-4.2
												</div>
												 <div class="para">
													Description: systemvm-vmware-4.2
												</div>
												 <div class="para">
													URL: http://download.cloud.com/templates/4.2/systemvmtemplate-4.2-vh7.ova
												</div>
												 <div class="para">
													Zone: Choose the zone where this hypervisor is used
												</div>
												 <div class="para">
													Hypervisor: VMware
												</div>
												 <div class="para">
													Format: OVA
												</div>
												 <div class="para">
													OS Type: Debian GNU/Linux 7.0 (32-bit) (or the highest Debian release number available in the dropdown)
												</div>
												 <div class="para">
													Extractable: no
												</div>
												 <div class="para">
													Password Enabled: no
												</div>
												 <div class="para">
													Public: no
												</div>
												 <div class="para">
													Featured: no
												</div>

											</td></tr></tbody></table></div></li><li class="listitem"><div class="para">
								Watch the screen to be sure that the template downloads successfully and enters the READY state. Do not proceed until this is successful.
							</div></li></ol></div></li><li class="listitem"><div class="para">
						(KVM on RHEL 6.0/6.1 only) If your existing CloudStack deployment includes one or more clusters of KVM hosts running RHEL 6.0 or RHEL 6.1, perform the following:
					</div><div class="orderedlist"><ol class="loweralpha"><li class="listitem"><div class="para">
								Ensure that you upgrade the operating system version on those hosts before upgrading CloudStack
							</div><div class="para">
								To do that, change the yum repository for each system with CloudStack packages, that implies that all the Management Servers and any hosts that have the KVM agent.
							</div></li><li class="listitem"><div class="para">
								Open <code class="filename">/etc/yum.repos.d/cloudstack.repo</code> on any systems that have CloudStack packages installed.
							</div></li><li class="listitem"><div class="para">
								Edit as follows:
							</div><pre class="programlisting">
            [upgrade]
            name=rhel63
            baseurl=url-of-your-rhel6.3-repo
            enabled=1
            gpgcheck=0
            [apache CloudStack]
            name= Apache CloudStack
            baseurl= http://cloudstack.apt-get.eu/rhel/4.0/
            enabled=1
            gpgcheck=0</pre><div class="para">
								If you are using the community provided package repository, change the baseurl to http:// cloudstack.apt-get.eu/rhel/4.2/
							</div><div class="para">
								If you are using your own package repository, change this line to read as appropriate for your 4.2.0 repository.
							</div></li><li class="listitem"><div class="para">
								Now that you have the repository configured, upgrade the host operating system from RHEL 6.0 to 6.3:
							</div><pre class="programlisting"># yum upgrade</pre></li></ol></div></li><li class="listitem" id="stopping-usage-servers"><div class="para">
						Stop all Usage Servers if running. Run this on all Usage Server hosts.
					</div><pre class="programlisting"><span class="perl_Comment"># service cloud-usage stop</span></pre></li><li class="listitem"><div class="para">
						Stop the Management Servers. Run this on all Management Server hosts.
					</div><pre class="programlisting"><span class="perl_Comment"># service cloud-management stop</span></pre></li><li class="listitem"><div class="para">
						On the MySQL master, take a backup of the MySQL databases. We recommend performing this step even in test upgrades. If there is an issue, this will assist with debugging.
					</div><div class="para">
						In the following commands, it is assumed that you have set the root password on the database, which is a CloudStack recommended best practice. Substitute your own MySQL root password.
					</div><pre class="programlisting"><code class="prompt">#</code> <code class="command">mysqldump</code> -u root -p<em class="replaceable"><code>mysql_password</code></em> cloud &gt; <code class="filename">cloud-backup.dmp</code>
                        <code class="prompt">#</code> <code class="command">mysqldump</code> -u root -p<em class="replaceable"><code>mysql_password</code></em> cloud_usage &gt; <code class="filename">cloud-usage-backup.dmp</code></pre></li><li class="listitem"><div class="para">
						Either build RPM/DEB packages as detailed in the Installation Guide, or use one of the community provided yum/apt repositories to gain access to the CloudStack binaries.
					</div></li><li class="listitem" id="upgrade-deb-packages-302"><div class="para">
						If you are using Ubuntu, follow this procedure to upgrade your packages. If not, skip to step <a class="xref" href="#upgrade-rpm-packages-302">8</a>.
					</div><div class="note"><div class="admonition_header"><h2>Community Packages</h2></div><div class="admonition"><div class="para">
							This section assumes you're using the community supplied packages for CloudStack. If you've created your own packages and APT repository, substitute your own URL for the ones used in these examples.
						</div></div></div><div class="orderedlist" id="debsteps-302"><ol class="loweralpha"><li class="listitem"><div class="para">
								The first order of business will be to change the sources list for each system with CloudStack packages. This means all management servers, and any hosts that have the KVM agent. (No changes should be necessary for hosts that are running VMware or Xen.)
							</div><div class="para">
								Start by opening <code class="filename">/etc/apt/sources.list.d/cloudstack.list</code> on any systems that have CloudStack packages installed.
							</div><div class="para">
								This file should have one line, which contains:
							</div><pre class="programlisting">deb http://cloudstack.apt-get.eu/ubuntu precise 4.0</pre><div class="para">
								We'll change it to point to the new package repository:
							</div><pre class="programlisting">deb http://cloudstack.apt-get.eu/ubuntu precise 4.2</pre><div class="para">
								If you're using your own package repository, change this line to read as appropriate for your 4.2.0 repository.
							</div></li><li class="listitem"><div class="para">
								Now update your apt package list:
							</div><pre class="programlisting">$ <span class="perl_BString">sudo</span> apt-get update</pre></li><li class="listitem" id="deb-master-302"><div class="para">
								Now that you have the repository configured, it's time to install the <code class="filename">cloudstack-management</code> package. This will pull in any other dependencies you need.
							</div><pre class="programlisting">$ <span class="perl_BString">sudo</span> apt-get <span class="perl_BString">install</span> cloudstack-management</pre></li><li class="listitem" id="kvm-agent-deb-302"><div class="para">
								You will need to manually install the <code class="filename">cloudstack-agent</code> package:
							</div><pre class="programlisting">$ <span class="perl_BString">sudo</span> apt-get <span class="perl_BString">install</span> cloudstack-agent</pre><div class="para">
								During the installation of <code class="filename">cloudstack-agent</code>, APT will copy your <code class="filename">agent.properties</code>, <code class="filename">log4j-cloud.xml</code>, and <code class="filename">environment.properties</code> from <code class="filename">/etc/cloud/agent</code> to <code class="filename">/etc/cloudstack/agent</code>.
							</div><div class="para">
								When prompted whether you wish to keep your configuration, say Yes.
							</div></li><li class="listitem"><div class="para">
								Verify that the file <code class="filename">/etc/cloudstack/agent/environment.properties</code> has a line that reads:
							</div><pre class="programlisting">paths.<span class="perl_Others">script=</span>/usr/share/cloudstack-common</pre><div class="para">
								If not, add the line.
							</div></li><li class="listitem"><div class="para">
								Restart the agent:
							</div><pre class="programlisting">
service cloud-agent stop
<span class="perl_BString">killall</span> jsvc
service cloudstack-agent start
</pre></li><li class="listitem"><div class="para">
								During the upgrade, <code class="filename">log4j-cloud.xml</code> was simply copied over, so the logs will continue to be added to <code class="filename">/var/log/cloud/agent/agent.log</code>. There's nothing <span class="emphasis"><em>wrong</em></span> with this, but if you prefer to be consistent, you can change this by copying over the sample configuration file:
							</div><pre class="programlisting">
<span class="perl_Reserved">cd</span> /etc/cloudstack/agent
<span class="perl_BString">mv</span> log4j-cloud.xml.dpkg-dist log4j-cloud.xml
service cloudstack-agent restart
</pre></li><li class="listitem"><div class="para">
								Once the agent is running, you can uninstall the old cloud-* packages from your system:
							</div><pre class="programlisting"><span class="perl_BString">sudo</span> dpkg --purge cloud-agent</pre></li></ol></div></li><li class="listitem" id="upgrade-rpm-packages-302"><div class="para">
						If you are using CentOS or RHEL, follow this procedure to upgrade your packages. If not, skip to step <a class="xref" href="#correct-components-xml-302">9</a>.
					</div><div class="note"><div class="admonition_header"><h2>Community Packages</h2></div><div class="admonition"><div class="para">
							This section assumes you're using the community supplied packages for CloudStack. If you've created your own packages and yum repository, substitute your own URL for the ones used in these examples.
						</div></div></div><div class="orderedlist" id="rpmsteps-302"><ol class="loweralpha"><li class="listitem"><div class="para">
								The first order of business will be to change the yum repository for each system with CloudStack packages. This means all management servers, and any hosts that have the KVM agent. (No changes should be necessary for hosts that are running VMware or Xen.)
							</div><div class="para">
								Start by opening <code class="filename">/etc/yum.repos.d/cloudstack.repo</code> on any systems that have CloudStack packages installed.
							</div><div class="para">
								This file should have content similar to the following:
							</div><pre class="programlisting">
[apache-cloudstack]
<span class="perl_Others">name=</span>Apache CloudStack
<span class="perl_Others">baseurl=</span>http://cloudstack.apt-get.eu/rhel/4.0/
<span class="perl_Others">enabled=</span>1
<span class="perl_Others">gpgcheck=</span>0
</pre><div class="para">
								If you are using the community provided package repository, change the baseurl to http://cloudstack.apt-get.eu/rhel/4.2/
							</div><div class="para">
								If you're using your own package repository, change this line to read as appropriate for your 4.2.0 repository.
							</div></li><li class="listitem" id="rpm-master-302"><div class="para">
								Now that you have the repository configured, it's time to install the <code class="filename">cloudstack-management</code> package by upgrading the older <code class="filename">cloud-client</code> package.
							</div><pre class="programlisting">$ <span class="perl_BString">sudo</span> yum upgrade cloud-client</pre></li><li class="listitem" id="kvm-agent-rpm-302"><div class="para">
								For KVM hosts, you will need to upgrade the <code class="filename">cloud-agent</code> package, similarly installing the new version as <code class="filename">cloudstack-agent</code>.
							</div><pre class="programlisting">$ <span class="perl_BString">sudo</span> yum upgrade cloud-agent</pre><div class="para">
								During the installation of <code class="filename">cloudstack-agent</code>, the RPM will copy your <code class="filename">agent.properties</code>, <code class="filename">log4j-cloud.xml</code>, and <code class="filename">environment.properties</code> from <code class="filename">/etc/cloud/agent</code> to <code class="filename">/etc/cloudstack/agent</code>.
							</div></li><li class="listitem"><div class="para">
								Verify that the file <code class="filename">/etc/cloudstack/agent/environment.properties</code> has a line that reads:
							</div><pre class="programlisting">paths.<span class="perl_Others">script=</span>/usr/share/cloudstack-common</pre><div class="para">
								If not, add the line.
							</div></li><li class="listitem"><div class="para">
								Restart the agent:
							</div><pre class="programlisting">
service cloud-agent stop
<span class="perl_BString">killall</span> jsvc
service cloudstack-agent start
</pre></li></ol></div></li><li class="listitem" id="correct-components-xml-302"><div class="para">
						If you have made changes to your copy of <code class="filename">/etc/cloud/management/components.xml</code> the changes will be preserved in the upgrade. However, you need to do the following steps to place these changes in a new version of the file which is compatible with version 4.2.0.
					</div><div class="orderedlist"><ol class="loweralpha"><li class="listitem"><div class="para">
								Make a backup copy of <code class="filename">/etc/cloud/management/components.xml</code>. For example:
							</div><pre class="programlisting"># mv /etc/cloud/management/components.xml /etc/cloud/management/components.xml-backup</pre></li><li class="listitem"><div class="para">
								Copy <code class="filename">/etc/cloud/management/components.xml.rpmnew</code> to create a new <code class="filename">/etc/cloud/management/components.xml</code>:
							</div><pre class="programlisting"># cp -ap /etc/cloud/management/components.xml.rpmnew /etc/cloud/management/components.xml</pre></li><li class="listitem"><div class="para">
								Merge your changes from the backup file into the new <code class="filename">components.xml</code>.
							</div><pre class="programlisting"># vi /etc/cloudstack/management/components.xml</pre></li></ol></div><div class="note"><div class="admonition_header"><h2>Note</h2></div><div class="admonition"><div class="para">
							If you have more than one management server node, repeat the upgrade steps on each node.
						</div></div></div></li><li class="listitem"><div class="para">
						After upgrading to 4.2, API clients are expected to send plain text passwords for login and user creation, instead of MD5 hash. Incase, api client changes are not acceptable, following changes are to be made for backward compatibility:
					</div><div class="para">
						Modify componentsContext.xml, and make PlainTextUserAuthenticator as the default authenticator (1st entry in the userAuthenticators adapter list is default)
					</div><pre class="programlisting">
<span class="perl_Comment">&lt;!-- Security adapters --&gt;</span>
<span class="perl_Keyword">&lt;bean</span><span class="perl_Others"> id=</span><span class="perl_String">"userAuthenticators"</span><span class="perl_Others"> class=</span><span class="perl_String">"com.cloud.utils.component.AdapterList"</span><span class="perl_Keyword">&gt;</span>
  <span class="perl_Keyword">&lt;property</span><span class="perl_Others"> name=</span><span class="perl_String">"Adapters"</span><span class="perl_Keyword">&gt;</span>
    <span class="perl_Keyword">&lt;list&gt;</span>
      <span class="perl_Keyword">&lt;ref</span><span class="perl_Others"> bean=</span><span class="perl_String">"PlainTextUserAuthenticator"</span><span class="perl_Keyword">/&gt;</span>
      <span class="perl_Keyword">&lt;ref</span><span class="perl_Others"> bean=</span><span class="perl_String">"MD5UserAuthenticator"</span><span class="perl_Keyword">/&gt;</span>
      <span class="perl_Keyword">&lt;ref</span><span class="perl_Others"> bean=</span><span class="perl_String">"LDAPUserAuthenticator"</span><span class="perl_Keyword">/&gt;</span>
    <span class="perl_Keyword">&lt;/list&gt;</span>
  <span class="perl_Keyword">&lt;/property&gt;</span>
<span class="perl_Keyword">&lt;/bean&gt;</span>
</pre><div class="para">
						PlainTextUserAuthenticator works the same way MD5UserAuthenticator worked prior to 4.2.
					</div></li><li class="listitem"><div class="para">
						Start the first Management Server. Do not start any other Management Server nodes yet.
					</div><pre class="programlisting"><span class="perl_Comment"># service cloudstack-management start</span></pre><div class="para">
						Wait until the databases are upgraded. Ensure that the database upgrade is complete. After confirmation, start the other Management Servers one at a time by running the same command on each node.
					</div><div class="note"><div class="admonition_header"><h2>Note</h2></div><div class="admonition"><div class="para">
							Failing to restart the Management Server indicates a problem in the upgrade. Having the Management Server restarted without any issues indicates that the upgrade is successfully completed.
						</div></div></div></li><li class="listitem"><div class="para">
						Start all Usage Servers (if they were running on your previous version). Perform this on each Usage Server host.
					</div><div class="para">
						<code class="command"># service cloudstack-usage start</code>
					</div></li><li class="listitem"><div class="para">
						Additional steps are required for each KVM host. These steps will not affect running guests in the cloud. These steps are required only for clouds using KVM as hosts and only on the KVM hosts.
					</div><div class="orderedlist"><ol class="loweralpha"><li class="listitem"><div class="para">
								Configure a yum or apt repository containing the CloudStack packages as outlined in the Installation Guide.
							</div></li><li class="listitem"><div class="para">
								Stop the running agent.
							</div><div class="para">
								<code class="command"># service cloud-agent stop</code>
							</div></li><li class="listitem"><div class="para">
								Update the agent software with one of the following command sets as appropriate for your environment.
							</div><div class="para">
								<code class="command"># yum update cloud-*</code>
							</div><div class="para">
								<code class="command"># apt-get update</code>
							</div><div class="para">
								<code class="command"># apt-get upgrade cloud-*</code>
							</div></li><li class="listitem"><div class="para">
								Edit <code class="filename">/etc/cloudstack/agent/agent.properties</code> to change the resource parameter from "com.cloud.agent.resource.computing.LibvirtComputingResource" to "com.cloud.hypervisor.kvm.resource.LibvirtComputingResource".
							</div></li><li class="listitem"><div class="para">
								Upgrade all the existing bridge names to new bridge names by running this script:
							</div><pre class="programlisting"> # cloudstack-agent-upgrade</pre></li><li class="listitem"><div class="para">
								Install a libvirt hook with the following commands:
							</div><pre class="programlisting"> # mkdir /etc/libvirt/hooks
 # cp /usr/share/cloudstack-agent/lib/libvirtqemuhook /etc/libvirt/hooks/qemu
 # chmod +x /etc/libvirt/hooks/qemu</pre></li><li class="listitem"><div class="para">
								Restart libvirtd.
							</div><pre class="programlisting"># service libvirtd restart</pre></li><li class="listitem"><div class="para">
								Start the agent.
							</div><pre class="programlisting"># service cloudstack-agent start</pre></li><li class="listitem"><div class="para">
								When the Management Server is up and running, log in to the CloudStack UI and restart the virtual router for proper functioning of all the features.
							</div></li></ol></div></li><li class="listitem"><div class="para">
						Log in to the CloudStack UI as administrator, and check the status of the hosts. All hosts should come to Up state (except those that you know to be offline). You may need to wait 20 or 30 minutes, depending on the number of hosts.
					</div><div class="note"><div class="admonition_header"><h2>Note</h2></div><div class="admonition"><div class="para">
							Troubleshooting: If login fails, clear your browser cache and reload the page.
						</div></div></div><div class="para">
						Do not proceed to the next step until the hosts show in Up state.
					</div></li><li class="listitem"><div class="para">
						If you are upgrading from 3.0.x, perform the following:
					</div><div class="orderedlist"><ol class="loweralpha"><li class="listitem"><div class="para">
								Ensure that the admin port is set to 8096 by using the "integration.api.port" global parameter.
							</div><div class="para">
								This port is used by the cloud-sysvmadm script at the end of the upgrade procedure. For information about how to set this parameter, see "Setting Global Configuration Parameters" in the Installation Guide.
							</div></li><li class="listitem"><div class="para">
								Restart the Management Server.
							</div><div class="note"><div class="admonition_header"><h2>Note</h2></div><div class="admonition"><div class="para">
									If you don't want the admin port to remain open, you can set it to null after the upgrade is done and restart the management server.
								</div></div></div></li></ol></div></li><li class="listitem"><div class="para">
						Run the <code class="command">cloudstack-sysvmadm</code> script to stop, then start, all Secondary Storage VMs, Console Proxy VMs, and virtual routers. Run the script once on each management server. Substitute your own IP address of the MySQL instance, the MySQL user to connect as, and the password to use for that user. In addition to those parameters, provide the <code class="command">-c</code> and <code class="command">-r</code> arguments. For example:
					</div><div class="para">
						<code class="command"># nohup cloudstack-sysvmadm -d 192.168.1.5 -u cloud -p password -c -r &gt; sysvm.log 2&gt;&amp;1 &amp;</code>
					</div><div class="para">
						<code class="command"># tail -f sysvm.log</code>
					</div><div class="para">
						This might take up to an hour or more to run, depending on the number of accounts in the system.
					</div></li><li class="listitem"><div class="para">
						If needed, upgrade all Citrix XenServer hypervisor hosts in your cloud to a version supported by CloudStack 4.2.0. The supported versions are XenServer 5.6 SP2 and 6.0.2. Instructions for upgrade can be found in the CloudStack 4.2.0 Installation Guide under "Upgrading XenServer Versions."
					</div></li><li class="listitem"><div class="para">
						Now apply the XenServer hotfix XS602E003 (and any other needed hotfixes) to XenServer v6.0.2 hypervisor hosts.
					</div><div class="orderedlist"><ol class="loweralpha"><li class="listitem"><div class="para">
								Disconnect the XenServer cluster from CloudStack.
							</div><div class="para">
								In the left navigation bar of the CloudStack UI, select Infrastructure. Under Clusters, click View All. Select the XenServer cluster and click Actions - Unmanage.
							</div><div class="para">
								This may fail if there are hosts not in one of the states Up, Down, Disconnected, or Alert. You may need to fix that before unmanaging this cluster.
							</div><div class="para">
								Wait until the status of the cluster has reached Unmanaged. Use the CloudStack UI to check on the status. When the cluster is in the unmanaged state, there is no connection to the hosts in the cluster.
							</div></li><li class="listitem"><div class="para">
								To clean up the VLAN, log in to one XenServer host and run:
							</div><div class="para">
								<code class="command">/opt/xensource/bin/cloud-clean-vlan.sh</code>
							</div></li><li class="listitem"><div class="para">
								Now prepare the upgrade by running the following on one XenServer host:
							</div><div class="para">
								<code class="command">/opt/xensource/bin/cloud-prepare-upgrade.sh</code>
							</div><div class="para">
								If you see a message like "can't eject CD", log in to the VM and unmount the CD, then run this script again.
							</div></li><li class="listitem"><div class="para">
								Upload the hotfix to the XenServer hosts. Always start with the Xen pool master, then the slaves. Using your favorite file copy utility (e.g. WinSCP), copy the hotfixes to the host. Place them in a temporary folder such as /tmp.
							</div><div class="para">
								On the Xen pool master, upload the hotfix with this command:
							</div><div class="para">
								<code class="command">xe patch-upload file-name=XS602E003.xsupdate</code>
							</div><div class="para">
								Make a note of the output from this command, which is a UUID for the hotfix file. You'll need it in another step later.
							</div><div class="note"><div class="admonition_header"><h2>Note</h2></div><div class="admonition"><div class="para">
									(Optional) If you are applying other hotfixes as well, you can repeat the commands in this section with the appropriate hotfix number. For example, XS602E004.xsupdate.
								</div></div></div></li><li class="listitem"><div class="para">
								Manually live migrate all VMs on this host to another host. First, get a list of the VMs on this host:
							</div><div class="para">
								<code class="command"># xe vm-list</code>
							</div><div class="para">
								Then use this command to migrate each VM. Replace the example host name and VM name with your own:
							</div><div class="para">
								<code class="command"># xe vm-migrate live=true host=<em class="replaceable"><code>host-name</code></em> vm=<em class="replaceable"><code>VM-name</code></em></code>
							</div><div class="note"><div class="admonition_header"><h2>Troubleshooting</h2></div><div class="admonition"><div class="para">
									If you see a message like "You attempted an operation on a VM which requires PV drivers to be installed but the drivers were not detected," run:
								</div><div class="para">
									<code class="command">/opt/xensource/bin/make_migratable.sh b6cf79c8-02ee-050b-922f-49583d9f1a14</code>.
								</div></div></div></li><li class="listitem"><div class="para">
								Apply the hotfix. First, get the UUID of this host:
							</div><pre class="programlisting"># xe host-list</pre><div class="para">
								Then use the following command to apply the hotfix. Replace the example host UUID with the current host ID, and replace the hotfix UUID with the output from the patch-upload command you ran on this machine earlier. You can also get the hotfix UUID by running xe patch-list.
							</div><pre class="programlisting"><code class="command">xe</code> patch-apply host-uuid=<em class="replaceable"><code>host-uuid</code></em> uuid=<em class="replaceable"><code>hotfix-uuid</code></em></pre></li><li class="listitem"><div class="para">
								Copy the following files from the CloudStack Management Server to the host.
							</div><div class="informaltable"><table border="1"><colgroup><col width="33%" align="left" class="1" /><col width="67%" align="left" class="2" /></colgroup><thead><tr><th class="" align="left">
												<div class="para">
													Copy from here...
												</div>
											</th><th class="" align="left">
												<div class="para">
													...to here
												</div>
											</th></tr></thead><tbody><tr><td class="" align="left">
												<div class="para">
													/usr/lib64/cloud/common/scripts/vm/hypervisor/xenserver/xenserver60/NFSSR.py
												</div>
											</td><td class="" align="left">
												<div class="para">
													/opt/xensource/sm/NFSSR.py
												</div>
											</td></tr><tr><td class="" align="left">
												<div class="para">
													/usr/lib64/cloud/common/scripts/vm/hypervisor/xenserver/setupxenserver.sh
												</div>
											</td><td class="" align="left">
												<div class="para">
													/opt/xensource/bin/setupxenserver.sh
												</div>
											</td></tr><tr><td class="" align="left">
												<div class="para">
													/usr/lib64/cloud/common/scripts/vm/hypervisor/xenserver/make_migratable.sh
												</div>
											</td><td class="" align="left">
												<div class="para">
													/opt/xensource/bin/make_migratable.sh
												</div>
											</td></tr></tbody></table></div></li><li class="listitem"><div class="para">
								(Only for hotfixes XS602E005 and XS602E007) You need to apply a new Cloud Support Pack.
							</div><div class="itemizedlist"><ul><li class="listitem"><div class="para">
										Download the CSP software onto the XenServer host from one of the following links:
									</div><div class="para">
										For hotfix XS602E005: <a href="http://coltrane.eng.hq.xensource.com/release/XenServer-6.x/XS-6.0.2/hotfixes/XS602E005/56710/xe-phase-2/xenserver-cloud-supp.tgz">http://coltrane.eng.hq.xensource.com/release/XenServer-6.x/XS-6.0.2/hotfixes/XS602E005/56710/xe-phase-2/xenserver-cloud-supp.tgz</a>
									</div><div class="para">
										For hotfix XS602E007: <a href="http://coltrane.eng.hq.xensource.com/release/XenServer-6.x/XS-6.0.2/hotfixes/XS602E007/57824/xe-phase-2/xenserver-cloud-supp.tgz">http://coltrane.eng.hq.xensource.com/release/XenServer-6.x/XS-6.0.2/hotfixes/XS602E007/57824/xe-phase-2/xenserver-cloud-supp.tgz</a>
									</div></li><li class="listitem"><div class="para">
										Extract the file:
									</div><pre class="programlisting"># tar xf xenserver-cloud-supp.tgz</pre></li><li class="listitem"><div class="para">
										Run the following script:
									</div><pre class="programlisting"># xe-install-supplemental-pack xenserver-cloud-supp.iso</pre></li><li class="listitem"><div class="para">
										If the XenServer host is part of a zone that uses basic networking, disable Open vSwitch (OVS):
									</div><pre class="programlisting"># xe-switch-network-backend  bridge</pre></li></ul></div></li><li class="listitem"><div class="para">
								Reboot this XenServer host.
							</div></li><li class="listitem"><div class="para">
								Run the following:
							</div><pre class="programlisting">/opt/xensource/bin/setupxenserver.sh</pre><div class="note"><div class="admonition_header"><h2>Note</h2></div><div class="admonition"><div class="para">
									If the message "mv: cannot stat `/etc/cron.daily/logrotate': No such file or directory" appears, you can safely ignore it.
								</div></div></div></li><li class="listitem"><div class="para">
								Run the following:
							</div><pre class="programlisting">for pbd in `xe pbd-list currently-attached=false| grep ^uuid | awk '{print $NF}'`; do xe pbd-plug uuid=$pbd ;</pre></li><li class="listitem"><div class="para">
								On each slave host in the Xen pool, repeat these steps, starting from "manually live migrate VMs."
							</div></li></ol></div></li></ol></div><div class="note"><div class="admonition_header"><h2>Troubleshooting Tip</h2></div><div class="admonition"><div class="para">
					If passwords which you know to be valid appear not to work after upgrade, or other UI issues are seen, try clearing your browser cache and reloading the UI page.
				</div></div></div></div><div class="section" id="upgrade-from-2.2.x-to-4.1"><div class="titlepage"><div><div><h2 class="title">3.3. Upgrade from 2.2.14 to 4.2.0</h2></div></div></div><div class="orderedlist"><ol><li class="listitem"><div class="para">
						Ensure that you query your IPaddress usage records and process them; for example, issue invoices for any usage that you have not yet billed users for.
					</div><div class="para">
						Starting in 3.0.2, the usage record format for IP addresses is the same as the rest of the usage types. Instead of a single record with the assignment and release dates, separate records are generated per aggregation period with start and end dates. After upgrading to 4.2.0, any existing IP address usage records in the old format will no longer be available.
					</div></li><li class="listitem"><div class="para">
						If you are using version 2.2.0 - 2.2.13, first upgrade to 2.2.14 by using the instructions in the <a href="http://download.cloud.com/releases/2.2.0/CloudStack2.2.14ReleaseNotes.pdf">2.2.14 Release Notes</a>.
					</div><div class="warning"><div class="admonition_header"><h2>KVM Hosts</h2></div><div class="admonition"><div class="para">
							If KVM hypervisor is used in your cloud, be sure you completed the step to insert a valid username and password into the host_details table on each KVM node as described in the 2.2.14 Release Notes. This step is critical, as the database will be encrypted after the upgrade to 4.2.0.
						</div></div></div></li><li class="listitem"><div class="para">
						While running the 2.2.14 system, log in to the UI as root administrator.
					</div></li><li class="listitem"><div class="para">
						Using the UI, add a new System VM template for each hypervisor type that is used in your cloud. In each zone, add a system VM template for each hypervisor used in that zone
					</div><div class="orderedlist"><ol><li class="listitem"><div class="para">
								In the left navigation bar, click Templates.
							</div></li><li class="listitem"><div class="para">
								In Select view, click Templates.
							</div></li><li class="listitem"><div class="para">
								Click Register template.
							</div><div class="para">
								The Register template dialog box is displayed.
							</div></li><li class="listitem"><div class="para">
								In the Register template dialog box, specify the following values depending on the hypervisor type (do not change these):
							</div><div class="informaltable"><table border="1"><colgroup><col width="33%" align="left" class="1" /><col width="67%" align="left" class="2" /></colgroup><thead><tr><th class="" align="left">
												<div class="para">
													Hypervisor
												</div>
											</th><th class="" align="left">
												<div class="para">
													Description
												</div>
											</th></tr></thead><tbody><tr><td class="" align="left">
												<div class="para">
													XenServer
												</div>
											</td><td class="" align="left">
												<div class="para">
													Name: systemvm-xenserver-4.2
												</div>
												 <div class="para">
													Description: systemvm-xenserver-4.2
												</div>
												 <div class="para">
													URL:http://download.cloud.com/templates/4.2/systemvmtemplate-2013-07-12-master-xen.vhd.bz2
												</div>
												 <div class="para">
													Zone: Choose the zone where this hypervisor is used
												</div>
												 <div class="para">
													Hypervisor: XenServer
												</div>
												 <div class="para">
													Format: VHD
												</div>
												 <div class="para">
													OS Type: Debian GNU/Linux 7.0 (32-bit) (or the highest Debian release number available in the dropdown)
												</div>
												 <div class="para">
													Extractable: no
												</div>
												 <div class="para">
													Password Enabled: no
												</div>
												 <div class="para">
													Public: no
												</div>
												 <div class="para">
													Featured: no
												</div>

											</td></tr><tr><td class="" align="left">
												<div class="para">
													KVM
												</div>
											</td><td class="" align="left">
												<div class="para">
													Name: systemvm-kvm-4.2
												</div>
												 <div class="para">
													Description: systemvm-kvm-4.2
												</div>
												 <div class="para">
													URL: http://download.cloud.com/templates/4.2/systemvmtemplate-2013-06-12-master-kvm.qcow2.bz2
												</div>
												 <div class="para">
													Zone: Choose the zone where this hypervisor is used
												</div>
												 <div class="para">
													Hypervisor: KVM
												</div>
												 <div class="para">
													Format: QCOW2
												</div>
												 <div class="para">
													OS Type: Debian GNU/Linux 7.0 (32-bit) (or the highest Debian release number available in the dropdown)
												</div>
												 <div class="para">
													Extractable: no
												</div>
												 <div class="para">
													Password Enabled: no
												</div>
												 <div class="para">
													Public: no
												</div>
												 <div class="para">
													Featured: no
												</div>

											</td></tr><tr><td class="" align="left">
												<div class="para">
													VMware
												</div>
											</td><td class="" align="left">
												<div class="para">
													Name: systemvm-vmware-4.2
												</div>
												 <div class="para">
													Description: systemvm-vmware-4.2
												</div>
												 <div class="para">
													URL: http://download.cloud.com/templates/4.2/systemvmtemplate-4.2-vh7.ova
												</div>
												 <div class="para">
													Zone: Choose the zone where this hypervisor is used
												</div>
												 <div class="para">
													Hypervisor: VMware
												</div>
												 <div class="para">
													Format: OVA
												</div>
												 <div class="para">
													OS Type: Debian GNU/Linux 7.0 (32-bit) (or the highest Debian release number available in the dropdown)
												</div>
												 <div class="para">
													Extractable: no
												</div>
												 <div class="para">
													Password Enabled: no
												</div>
												 <div class="para">
													Public: no
												</div>
												 <div class="para">
													Featured: no
												</div>

											</td></tr></tbody></table></div></li></ol></div></li><li class="listitem"><div class="para">
						Watch the screen to be sure that the template downloads successfully and enters the READY state. Do not proceed until this is successful
					</div></li><li class="listitem"><div class="para">
						<span class="bold bold"><strong>WARNING</strong></span>: If you use more than one type of hypervisor in your cloud, be sure you have repeated these steps to download the system VM template for each hypervisor type. Otherwise, the upgrade will fail.
					</div></li><li class="listitem"><div class="para">
						(KVM on RHEL 6.0/6.1 only) If your existing CloudStack deployment includes one or more clusters of KVM hosts running RHEL 6.0 or RHEL 6.1, perform the following:
					</div><div class="orderedlist"><ol class="loweralpha"><li class="listitem"><div class="para">
								Ensure that you upgrade the operating system version on those hosts before upgrading CloudStack
							</div><div class="para">
								To do that, change the yum repository for each system with CloudStack packages, that implies that all the Management Servers and any hosts that have the KVM agent.
							</div></li><li class="listitem"><div class="para">
								Open <code class="filename">/etc/yum.repos.d/cloudstack.repo</code> on any systems that have CloudStack packages installed.
							</div></li><li class="listitem"><div class="para">
								Edit as follows:
							</div><pre class="programlisting">
            [upgrade]
            name=rhel63
            baseurl=url-of-your-rhel6.3-repo
            enabled=1
            gpgcheck=0
            [apache CloudStack]
            name= Apache CloudStack
            baseurl= http://cloudstack.apt-get.eu/rhel/4.0/
            enabled=1
            gpgcheck=0</pre><div class="para">
								If you are using the community provided package repository, change the baseurl to http:// cloudstack.apt-get.eu/rhel/4.2/
							</div><div class="para">
								If you are using your own package repository, change this line to read as appropriate for your 4.2.0 repository.
							</div></li><li class="listitem"><div class="para">
								Now that you have the repository configured, upgrade the host operating system from RHEL 6.0 to 6.3:
							</div><pre class="programlisting"># yum upgrade</pre></li></ol></div></li><li class="listitem"><div class="para">
						Stop all Usage Servers if running. Run this on all Usage Server hosts.
					</div><pre class="programlisting"># service cloud-usage stop</pre></li><li class="listitem"><div class="para">
						Stop the Management Servers. Run this on all Management Server hosts.
					</div><pre class="programlisting"><span class="perl_Comment"># service cloud-management stop</span></pre></li><li class="listitem"><div class="para">
						On the MySQL master, take a backup of the MySQL databases. We recommend performing this step even in test upgrades. If there is an issue, this will assist with debugging.
					</div><div class="para">
						In the following commands, it is assumed that you have set the root password on the database, which is a CloudStack recommended best practice. Substitute your own MySQL root password.
					</div><pre class="programlisting"><code class="prompt">#</code> <code class="command">mysqldump</code> -u root -p<em class="replaceable"><code>mysql_password</code></em> cloud &gt; <code class="filename">cloud-backup.dmp</code>
                        <code class="prompt">#</code> <code class="command">mysqldump</code> -u root -p<em class="replaceable"><code>mysql_password</code></em> cloud_usage &gt; <code class="filename">cloud-usage-backup.dmp</code>
</pre></li><li class="listitem"><div class="para">
						Either build RPM/DEB packages as detailed in the Installation Guide, or use one of the community provided yum/apt repositories to gain access to the CloudStack binaries.
					</div></li><li class="listitem" id="upgrade-deb-packages-22"><div class="para">
						If you are using Ubuntu, follow this procedure to upgrade your packages. If not, skip to step <a class="xref" href="#upgrade-rpm-packages-22">13</a>.
					</div><div class="note"><div class="admonition_header"><h2>Community Packages</h2></div><div class="admonition"><div class="para">
							This section assumes you're using the community supplied packages for CloudStack. If you've created your own packages and APT repository, substitute your own URL for the ones used in these examples.
						</div></div></div><div class="orderedlist" id="debsteps-22"><ol class="loweralpha"><li class="listitem"><div class="para">
								The first order of business will be to change the sources list for each system with CloudStack packages. This means all management servers, and any hosts that have the KVM agent. (No changes should be necessary for hosts that are running VMware or Xen.)
							</div><div class="para">
								Start by opening <code class="filename">/etc/apt/sources.list.d/cloudstack.list</code> on any systems that have CloudStack packages installed.
							</div><div class="para">
								This file should have one line, which contains:
							</div><pre class="programlisting">deb http://cloudstack.apt-get.eu/ubuntu precise 4.0</pre><div class="para">
								We'll change it to point to the new package repository:
							</div><pre class="programlisting">deb http://cloudstack.apt-get.eu/ubuntu precise 4.2</pre><div class="para">
								If you're using your own package repository, change this line to read as appropriate for your 4.2.0 repository.
							</div></li><li class="listitem"><div class="para">
								Now update your apt package list:
							</div><pre class="programlisting">$ <span class="perl_BString">sudo</span> apt-get update</pre></li><li class="listitem" id="deb-master-22"><div class="para">
								Now that you have the repository configured, it's time to install the <code class="filename">cloudstack-management</code> package. This will pull in any other dependencies you need.
							</div><pre class="programlisting">$ <span class="perl_BString">sudo</span> apt-get <span class="perl_BString">install</span> cloudstack-management</pre></li><li class="listitem" id="kvm-agent-deb-22"><div class="para">
								On KVM hosts, you will need to manually install the <code class="filename">cloudstack-agent</code> package:
							</div><pre class="programlisting">$ <span class="perl_BString">sudo</span> apt-get <span class="perl_BString">install</span> cloudstack-agent</pre><div class="para">
								During the installation of <code class="filename">cloudstack-agent</code>, APT will copy your <code class="filename">agent.properties</code>, <code class="filename">log4j-cloud.xml</code>, and <code class="filename">environment.properties</code> from <code class="filename">/etc/cloud/agent</code> to <code class="filename">/etc/cloudstack/agent</code>.
							</div><div class="para">
								When prompted whether you wish to keep your configuration, say Yes.
							</div></li><li class="listitem"><div class="para">
								Verify that the file <code class="filename">/etc/cloudstack/agent/environment.properties</code> has a line that reads:
							</div><pre class="programlisting">paths.<span class="perl_Others">script=</span>/usr/share/cloudstack-common</pre><div class="para">
								If not, add the line.
							</div></li><li class="listitem"><div class="para">
								Restart the agent:
							</div><pre class="programlisting">
service cloud-agent stop
<span class="perl_BString">killall</span> jsvc
service cloudstack-agent start
</pre></li><li class="listitem"><div class="para">
								During the upgrade, <code class="filename">log4j-cloud.xml</code> was simply copied over, so the logs will continue to be added to <code class="filename">/var/log/cloud/agent/agent.log</code>. There's nothing <span class="emphasis"><em>wrong</em></span> with this, but if you prefer to be consistent, you can change this by copying over the sample configuration file:
							</div><pre class="programlisting">
<span class="perl_Reserved">cd</span> /etc/cloudstack/agent
<span class="perl_BString">mv</span> log4j-cloud.xml.dpkg-dist log4j-cloud.xml
service cloudstack-agent restart
</pre></li><li class="listitem"><div class="para">
								Once the agent is running, you can uninstall the old cloud-* packages from your system:
							</div><pre class="programlisting"><span class="perl_BString">sudo</span> dpkg --purge cloud-agent</pre></li></ol></div></li><li class="listitem" id="upgrade-rpm-packages-22"><div class="para">
						If you are using CentOS or RHEL, follow this procedure to upgrade your packages. If not, skip to step <a class="xref" href="#correct-components-xml-22">14</a>.
					</div><div class="note"><div class="admonition_header"><h2>Community Packages</h2></div><div class="admonition"><div class="para">
							This section assumes you're using the community supplied packages for CloudStack. If you've created your own packages and yum repository, substitute your own URL for the ones used in these examples.
						</div></div></div><div class="orderedlist" id="rpmsteps-22"><ol class="loweralpha"><li class="listitem"><div class="para">
								The first order of business will be to change the yum repository for each system with CloudStack packages. This means all management servers, and any hosts that have the KVM agent. (No changes should be necessary for hosts that are running VMware or Xen.)
							</div><div class="para">
								Start by opening <code class="filename">/etc/yum.repos.d/cloudstack.repo</code> on any systems that have CloudStack packages installed.
							</div><div class="para">
								This file should have content similar to the following:
							</div><pre class="programlisting">
[apache-cloudstack]
<span class="perl_Others">name=</span>Apache CloudStack
<span class="perl_Others">baseurl=</span>http://cloudstack.apt-get.eu/rhel/4.0/
<span class="perl_Others">enabled=</span>1
<span class="perl_Others">gpgcheck=</span>0
</pre><div class="para">
								If you are using the community provided package repository, change the baseurl to http://cloudstack.apt-get.eu/rhel/4.2/
							</div><div class="para">
								If you're using your own package repository, change this line to read as appropriate for your 4.2.0 repository.
							</div></li><li class="listitem" id="rpm-master-22"><div class="para">
								Now that you have the repository configured, it's time to install the <code class="filename">cloudstack-management</code> package by upgrading the older <code class="filename">cloud-client</code> package.
							</div><pre class="programlisting">$ <span class="perl_BString">sudo</span> yum upgrade cloud-client</pre></li><li class="listitem" id="kvm-agent-rpm-22"><div class="para">
								For KVM hosts, you will need to upgrade the <code class="filename">cloud-agent</code> package, similarly installing the new version as <code class="filename">cloudstack-agent</code>.
							</div><pre class="programlisting">$ <span class="perl_BString">sudo</span> yum upgrade cloud-agent</pre><div class="para">
								During the installation of <code class="filename">cloudstack-agent</code>, the RPM will copy your <code class="filename">agent.properties</code>, <code class="filename">log4j-cloud.xml</code>, and <code class="filename">environment.properties</code> from <code class="filename">/etc/cloud/agent</code> to <code class="filename">/etc/cloudstack/agent</code>.
							</div></li><li class="listitem"><div class="para">
								Verify that the file <code class="filename">/etc/cloudstack/agent/environment.properties</code> has a line that reads:
							</div><pre class="programlisting">paths.<span class="perl_Others">script=</span>/usr/share/cloudstack-common</pre><div class="para">
								If not, add the line.
							</div></li><li class="listitem"><div class="para">
								Restart the agent:
							</div><pre class="programlisting">
service cloud-agent stop
<span class="perl_BString">killall</span> jsvc
service cloudstack-agent start
</pre></li></ol></div></li><li class="listitem" id="correct-components-xml-22"><div class="para">
						If you have made changes to your existing copy of the file components.xml in your previous-version CloudStack installation, the changes will be preserved in the upgrade. However, you need to do the following steps to place these changes in a new version of the file which is compatible with version 4.0.0-incubating.
					</div><div class="note"><div class="admonition_header"><h2>Note</h2></div><div class="admonition"><div class="para">
							How will you know whether you need to do this? If the upgrade output in the previous step included a message like the following, then some custom content was found in your old components.xml, and you need to merge the two files:
						</div></div></div><pre class="programlisting">warning: /etc/cloud/management/components.xml created as /etc/cloud/management/components.xml.rpmnew</pre><div class="orderedlist"><ol class="loweralpha"><li class="listitem"><div class="para">
								Make a backup copy of your <code class="filename">/etc/cloud/management/components.xml</code> file. For example:
							</div><pre class="programlisting"><code class="prompt">#</code> <code class="command">mv</code> <code class="filename">/etc/cloud/management/components.xml</code> <code class="filename">/etc/cloud/management/components.xml-backup</code></pre></li><li class="listitem"><div class="para">
								Copy <code class="filename">/etc/cloud/management/components.xml.rpmnew</code> to create a new <code class="filename">/etc/cloud/management/components.xml</code>:
							</div><pre class="programlisting"><code class="prompt">#</code> <code class="command">cp</code> -ap <code class="filename">/etc/cloud/management/components.xml.rpmnew</code> <code class="filename">/etc/cloud/management/components.xml</code></pre></li><li class="listitem"><div class="para">
								Merge your changes from the backup file into the new components.xml file.
							</div><pre class="programlisting"><code class="prompt">#</code> <code class="command">vi</code> <code class="filename">/etc/cloudstack/management/components.xml</code>
</pre></li></ol></div></li><li class="listitem"><div class="para">
						After upgrading to 4.2, API clients are expected to send plain text passwords for login and user creation, instead of MD5 hash. If API client changes are not acceptable, following changes are to be made for backward compatibility:
					</div><div class="para">
						Modify componentsContext.xml, and make PlainTextUserAuthenticator as the default authenticator (1st entry in the userAuthenticators adapter list is default)
					</div><pre class="programlisting">
<span class="perl_Comment">&lt;!-- Security adapters --&gt;</span>
<span class="perl_Keyword">&lt;bean</span><span class="perl_Others"> id=</span><span class="perl_String">"userAuthenticators"</span><span class="perl_Others"> class=</span><span class="perl_String">"com.cloud.utils.component.AdapterList"</span><span class="perl_Keyword">&gt;</span>
  <span class="perl_Keyword">&lt;property</span><span class="perl_Others"> name=</span><span class="perl_String">"Adapters"</span><span class="perl_Keyword">&gt;</span>
    <span class="perl_Keyword">&lt;list&gt;</span>
      <span class="perl_Keyword">&lt;ref</span><span class="perl_Others"> bean=</span><span class="perl_String">"PlainTextUserAuthenticator"</span><span class="perl_Keyword">/&gt;</span>
      <span class="perl_Keyword">&lt;ref</span><span class="perl_Others"> bean=</span><span class="perl_String">"MD5UserAuthenticator"</span><span class="perl_Keyword">/&gt;</span>
      <span class="perl_Keyword">&lt;ref</span><span class="perl_Others"> bean=</span><span class="perl_String">"LDAPUserAuthenticator"</span><span class="perl_Keyword">/&gt;</span>
    <span class="perl_Keyword">&lt;/list&gt;</span>
  <span class="perl_Keyword">&lt;/property&gt;</span>
<span class="perl_Keyword">&lt;/bean&gt;</span>
</pre><div class="para">
						PlainTextUserAuthenticator works the same way MD5UserAuthenticator worked prior to 4.2.
					</div></li><li class="listitem"><div class="para">
						If you have made changes to your existing copy of the <code class="filename">/etc/cloud/management/db.properties</code> file in your previous-version CloudStack installation, the changes will be preserved in the upgrade. However, you need to do the following steps to place these changes in a new version of the file which is compatible with version 4.0.0-incubating.
					</div><div class="orderedlist"><ol class="loweralpha"><li class="listitem"><div class="para">
								Make a backup copy of your file <code class="filename">/etc/cloud/management/db.properties</code>. For example:
							</div><pre class="programlisting"><code class="prompt">#</code> <code class="command">mv</code> <code class="filename">/etc/cloud/management/db.properties</code> <code class="filename">/etc/cloud/management/db.properties-backup</code></pre></li><li class="listitem"><div class="para">
								Copy <code class="filename">/etc/cloud/management/db.properties.rpmnew</code> to create a new <code class="filename">/etc/cloud/management/db.properties</code>:
							</div><pre class="programlisting"><code class="prompt">#</code> <code class="command">cp</code> -ap <code class="filename">/etc/cloud/management/db.properties.rpmnew</code> <code class="filename">etc/cloud/management/db.properties</code></pre></li><li class="listitem"><div class="para">
								Merge your changes from the backup file into the new db.properties file.
							</div><pre class="programlisting"><code class="prompt">#</code> <code class="command">vi</code> <code class="filename">/etc/cloudstack/management/db.properties</code></pre></li></ol></div></li><li class="listitem"><div class="para">
						On the management server node, run the following command. It is recommended that you use the command-line flags to provide your own encryption keys. See Password and Key Encryption in the Installation Guide.
					</div><pre class="programlisting"><code class="prompt">#</code> <code class="command">cloudstack-setup-encryption</code> -e <em class="replaceable"><code>encryption_type</code></em> -m <em class="replaceable"><code>management_server_key</code></em> -k <em class="replaceable"><code>database_key</code></em></pre><div class="para">
						When used without arguments, as in the following example, the default encryption type and keys will be used:
					</div><div class="itemizedlist"><ul><li class="listitem"><div class="para">
								(Optional) For encryption_type, use file or web to indicate the technique used to pass in the database encryption password. Default: file.
							</div></li><li class="listitem"><div class="para">
								(Optional) For management_server_key, substitute the default key that is used to encrypt confidential parameters in the properties file. Default: password. It is highly recommended that you replace this with a more secure value
							</div></li><li class="listitem"><div class="para">
								(Optional) For database_key, substitute the default key that is used to encrypt confidential parameters in the CloudStack database. Default: password. It is highly recommended that you replace this with a more secure value.
							</div></li></ul></div></li><li class="listitem"><div class="para">
						Repeat steps 10 - 14 on every management server node. If you provided your own encryption key in step 14, use the same key on all other management servers.
					</div></li><li class="listitem"><div class="para">
						Start the first Management Server. Do not start any other Management Server nodes yet.
					</div><pre class="programlisting"><span class="perl_Comment"># service cloudstack-management start</span></pre><div class="para">
						Wait until the databases are upgraded. Ensure that the database upgrade is complete. You should see a message like "Complete! Done." After confirmation, start the other Management Servers one at a time by running the same command on each node.
					</div></li><li class="listitem"><div class="para">
						Start all Usage Servers (if they were running on your previous version). Perform this on each Usage Server host.
					</div><pre class="programlisting"><span class="perl_Comment"># service cloudstack-usage start</span></pre></li><li class="listitem"><div class="para">
						(KVM only) Perform the following additional steps on each KVM host.
					</div><div class="para">
						These steps will not affect running guests in the cloud. These steps are required only for clouds using KVM as hosts and only on the KVM hosts.
					</div><div class="orderedlist"><ol class="loweralpha"><li class="listitem"><div class="para">
								Configure your CloudStack package repositories as outlined in the Installation Guide
							</div></li><li class="listitem"><div class="para">
								Stop the running agent.
							</div><pre class="programlisting"># service cloud-agent stop</pre></li><li class="listitem"><div class="para">
								Update the agent software with one of the following command sets as appropriate.
							</div><pre class="programlisting"><code class="prompt">#</code> <code class="command">yum</code> update cloud-*</pre><pre class="programlisting">
 <code class="prompt">#</code> <code class="command">apt-get</code> update
 <code class="prompt">#</code> <code class="command">apt-get</code> upgrade cloud-*
</pre></li><li class="listitem"><div class="para">
								Copy the contents of the <code class="filename">agent.properties</code> file to the new <code class="filename">agent.properties</code> file by using the following command
							</div><pre class="programlisting"><code class="command">sed</code> -i 's/com.cloud.agent.resource.computing.LibvirtComputingResource/com.cloud.hypervisor.kvm.resource.LibvirtComputingResource/g' <code class="filename">/etc/cloudstack/agent/agent.properties</code></pre></li><li class="listitem"><div class="para">
								Upgrade all the existing bridge names to new bridge names by running this script:
							</div><pre class="programlisting"> # cloudstack-agent-upgrade</pre></li><li class="listitem"><div class="para">
								Install a libvirt hook with the following commands:
							</div><pre class="programlisting"> # mkdir /etc/libvirt/hooks
 # cp /usr/share/cloudstack-agent/lib/libvirtqemuhook /etc/libvirt/hooks/qemu
 # chmod +x /etc/libvirt/hooks/qemu</pre></li><li class="listitem"><div class="para">
								Restart libvirtd.
							</div><pre class="programlisting"># service libvirtd restart</pre></li><li class="listitem"><div class="para">
								Start the agent.
							</div><pre class="programlisting"># service cloudstack-agent start</pre></li><li class="listitem"><div class="para">
								When the Management Server is up and running, log in to the CloudStack UI and restart the virtual router for proper functioning of all the features.
							</div></li></ol></div></li><li class="listitem"><div class="para">
						Log in to the CloudStack UI as admin, and check the status of the hosts. All hosts should come to Up state (except those that you know to be offline). You may need to wait 20 or 30 minutes, depending on the number of hosts.
					</div><div class="para">
						Do not proceed to the next step until the hosts show in the Up state. If the hosts do not come to the Up state, contact support.
					</div></li><li class="listitem"><div class="para">
						Run the following script to stop, then start, all Secondary Storage VMs, Console Proxy VMs, and virtual routers.
					</div><div class="orderedlist"><ol class="loweralpha"><li class="listitem"><div class="para">
								Run the command once on one management server. Substitute your own IP address of the MySQL instance, the MySQL user to connect as, and the password to use for that user. In addition to those parameters, provide the "-c" and "-r" arguments. For example:
							</div><pre class="programlisting"><code class="prompt">#</code> <code class="command">nohup cloudstack-sysvmadm</code> -d <em class="replaceable"><code>192.168.1.5</code></em> -u cloud -p <em class="replaceable"><code>password</code></em> -c -r &gt; sysvm.log 2&gt;&amp;1 &amp;
<code class="prompt">#</code> <code class="command">tail</code> -f <code class="filename">sysvm.log</code></pre><div class="para">
								This might take up to an hour or more to run, depending on the number of accounts in the system.
							</div></li><li class="listitem"><div class="para">
								After the script terminates, check the log to verify correct execution:
							</div><pre class="programlisting"><code class="prompt">#</code> <code class="command">tail</code> -f <code class="filename">sysvm.log</code></pre><div class="para">
								The content should be like the following:
							</div><pre class="programlisting">
                                Stopping and starting 1 secondary storage vm(s)...
                                Done stopping and starting secondary storage vm(s)
                                Stopping and starting 1 console proxy vm(s)...
                                Done stopping and starting console proxy vm(s).
                                Stopping and starting 4 running routing vm(s)...
                                Done restarting router(s).
</pre></li></ol></div></li><li class="listitem"><div class="para">
						If you would like additional confirmation that the new system VM templates were correctly applied when these system VMs were rebooted, SSH into the System VM and check the version.
					</div><div class="para">
						Use one of the following techniques, depending on the hypervisor.
					</div><div class="formalpara"><h5 class="formalpara" id="idm42326208">XenServer or KVM:</h5>
							SSH in by using the link local IP address of the system VM. For example, in the command below, substitute your own path to the private key used to log in to the system VM and your own link local IP.
						</div><div class="para">
						Run the following commands on the XenServer or KVM host on which the system VM is present:
					</div><pre class="programlisting"><code class="prompt">#</code> <code class="command">ssh</code> -i <em class="replaceable"><code>private-key-path</code></em> <em class="replaceable"><code>link-local-ip</code></em> -p 3922
                        # cat /etc/cloudstack-release</pre><div class="para">
						The output should be like the following:
					</div><pre class="programlisting">Cloudstack Release 4.0.0-incubating Mon Oct 9 15:10:04 PST 2012</pre><div class="formalpara"><h5 class="formalpara" id="idm74165888">ESXi</h5>
							SSH in using the private IP address of the system VM. For example, in the command below, substitute your own path to the private key used to log in to the system VM and your own private IP.
						</div><div class="para">
						Run the following commands on the Management Server:
					</div><pre class="programlisting"><code class="prompt">#</code> <code class="command">ssh</code> -i <em class="replaceable"><code>private-key-path</code></em> <em class="replaceable"><code>private-ip</code></em> -p 3922
                        <code class="prompt">#</code> <code class="command">cat</code> <code class="filename">/etc/cloudstack-release</code>
</pre><div class="para">
						The output should be like the following:
					</div><pre class="programlisting">Cloudstack Release 4.0.0-incubating Mon Oct 9 15:10:04 PST 2012</pre></li><li class="listitem"><div class="para">
						If needed, upgrade all Citrix XenServer hypervisor hosts in your cloud to a version supported by CloudStack 4.0.0-incubating. The supported versions are XenServer 5.6 SP2 and 6.0.2. Instructions for upgrade can be found in the CloudStack 4.0.0-incubating Installation Guide.
					</div></li><li class="listitem"><div class="para">
						Apply the XenServer hotfix XS602E003 (and any other needed hotfixes) to XenServer v6.0.2 hypervisor hosts.
					</div><div class="orderedlist"><ol class="loweralpha"><li class="listitem"><div class="para">
								Disconnect the XenServer cluster from CloudStack.
							</div><div class="para">
								In the left navigation bar of the CloudStack UI, select Infrastructure. Under Clusters, click View All. Select the XenServer cluster and click Actions - Unmanage.
							</div><div class="para">
								This may fail if there are hosts not in one of the states Up, Down, Disconnected, or Alert. You may need to fix that before unmanaging this cluster.
							</div><div class="para">
								Wait until the status of the cluster has reached Unmanaged. Use the CloudStack UI to check on the status. When the cluster is in the unmanaged state, there is no connection to the hosts in the cluster.
							</div></li><li class="listitem"><div class="para">
								To clean up the VLAN, log in to one XenServer host and run:
							</div><pre class="programlisting">/opt/xensource/bin/cloud-clean-vlan.sh</pre></li><li class="listitem"><div class="para">
								Prepare the upgrade by running the following on one XenServer host:
							</div><pre class="programlisting">/opt/xensource/bin/cloud-prepare-upgrade.sh</pre><div class="para">
								If you see a message like "can't eject CD", log in to the VM and umount the CD, then run this script again.
							</div></li><li class="listitem"><div class="para">
								Upload the hotfix to the XenServer hosts. Always start with the Xen pool master, then the slaves. Using your favorite file copy utility (e.g. WinSCP), copy the hotfixes to the host. Place them in a temporary folder such as /root or /tmp.
							</div><div class="para">
								On the Xen pool master, upload the hotfix with this command:
							</div><pre class="programlisting">xe patch-upload file-name=XS602E003.xsupdate</pre><div class="para">
								Make a note of the output from this command, which is a UUID for the hotfix file. You'll need it in another step later.
							</div><div class="note"><div class="admonition_header"><h2>Note</h2></div><div class="admonition"><div class="para">
									(Optional) If you are applying other hotfixes as well, you can repeat the commands in this section with the appropriate hotfix number. For example, XS602E004.xsupdate.
								</div></div></div></li><li class="listitem"><div class="para">
								Manually live migrate all VMs on this host to another host. First, get a list of the VMs on this host:
							</div><pre class="programlisting"># xe vm-list</pre><div class="para">
								Then use this command to migrate each VM. Replace the example host name and VM name with your own:
							</div><pre class="programlisting"><code class="prompt">#</code> <code class="command">xe</code> vm-migrate live=true host=<em class="replaceable"><code>host-name</code></em> vm=<em class="replaceable"><code>VM-name</code></em></pre><div class="note"><div class="admonition_header"><h2>Troubleshooting</h2></div><div class="admonition"><div class="para">
									If you see a message like "You attempted an operation on a VM which requires PV drivers to be installed but the drivers were not detected," run:
								</div><div class="para">
									<code class="command">/opt/xensource/bin/make_migratable.sh b6cf79c8-02ee-050b-922f-49583d9f1a14</code>.
								</div></div></div></li><li class="listitem"><div class="para">
								Apply the hotfix. First, get the UUID of this host:
							</div><div class="para">
								<code class="command"># xe host-list</code>
							</div><div class="para">
								Then use the following command to apply the hotfix. Replace the example host UUID with the current host ID, and replace the hotfix UUID with the output from the patch-upload command you ran on this machine earlier. You can also get the hotfix UUID by running xe patch-list.
							</div><div class="para">
								<code class="command">xe patch-apply host-uuid=<em class="replaceable"><code>host-uuid</code></em> uuid=<em class="replaceable"><code>hotfix-uuid</code></em></code>
							</div></li><li class="listitem"><div class="para">
								Copy the following files from the CloudStack Management Server to the host.
							</div><div class="informaltable"><table border="1"><colgroup><col width="33%" align="left" class="1" /><col width="67%" align="left" class="2" /></colgroup><thead><tr><th class="" align="left">
												<div class="para">
													Copy from here...
												</div>
											</th><th class="" align="left">
												<div class="para">
													...to here
												</div>
											</th></tr></thead><tbody><tr><td class="" align="left">
												<div class="para">
													<code class="filename">/usr/share/cloudstack-common/scripts/vm/hypervisor/xenserver/xenserver60/NFSSR.py</code>
												</div>
											</td><td class="" align="left">
												<div class="para">
													<code class="filename">/opt/xensource/sm/NFSSR.py</code>
												</div>
											</td></tr><tr><td class="" align="left">
												<div class="para">
													<code class="filename">/usr/share/cloudstack-common/scripts/vm/hypervisor/xenserver/setupxenserver.sh</code>
												</div>
											</td><td class="" align="left">
												<div class="para">
													<code class="filename">/opt/xensource/bin/setupxenserver.sh</code>
												</div>
											</td></tr><tr><td class="" align="left">
												<div class="para">
													<code class="filename">/usr/lib64/cloudstack-common/scripts/vm/hypervisor/xenserver/make_migratable.sh</code>
												</div>
											</td><td class="" align="left">
												<div class="para">
													<code class="filename">/opt/xensource/bin/make_migratable.sh</code>
												</div>
											</td></tr></tbody></table></div></li><li class="listitem"><div class="para">
								(Only for hotfixes XS602E005 and XS602E007) You need to apply a new Cloud Support Pack.
							</div><div class="itemizedlist"><ul><li class="listitem"><div class="para">
										Download the CSP software onto the XenServer host from one of the following links:
									</div><div class="para">
										For hotfix XS602E005: <a href="http://coltrane.eng.hq.xensource.com/release/XenServer-6.x/XS-6.0.2/hotfixes/XS602E005/56710/xe-phase-2/xenserver-cloud-supp.tgz">http://coltrane.eng.hq.xensource.com/release/XenServer-6.x/XS-6.0.2/hotfixes/XS602E005/56710/xe-phase-2/xenserver-cloud-supp.tgz</a>
									</div><div class="para">
										For hotfix XS602E007: <a href="http://coltrane.eng.hq.xensource.com/release/XenServer-6.x/XS-6.0.2/hotfixes/XS602E007/57824/xe-phase-2/xenserver-cloud-supp.tgz">http://coltrane.eng.hq.xensource.com/release/XenServer-6.x/XS-6.0.2/hotfixes/XS602E007/57824/xe-phase-2/xenserver-cloud-supp.tgz</a>
									</div></li><li class="listitem"><div class="para">
										Extract the file:
									</div><div class="para">
										<code class="command"># tar xf xenserver-cloud-supp.tgz</code>
									</div></li><li class="listitem"><div class="para">
										Run the following script:
									</div><div class="para">
										<code class="command"># xe-install-supplemental-pack xenserver-cloud-supp.iso</code>
									</div></li><li class="listitem"><div class="para">
										If the XenServer host is part of a zone that uses basic networking, disable Open vSwitch (OVS):
									</div><div class="para">
										<code class="command"># xe-switch-network-backend bridge</code>
									</div></li></ul></div></li><li class="listitem"><div class="para">
								Reboot this XenServer host.
							</div></li><li class="listitem"><div class="para">
								Run the following:
							</div><div class="para">
								<code class="command">/opt/xensource/bin/setupxenserver.sh</code>
							</div><div class="note"><div class="admonition_header"><h2>Note</h2></div><div class="admonition"><div class="para">
									If the message "mv: cannot stat `/etc/cron.daily/logrotate': No such file or directory" appears, you can safely ignore it.
								</div></div></div></li><li class="listitem"><div class="para">
								Run the following:
							</div><div class="para">
								<code class="command">for pbd in `xe pbd-list currently-attached=false| grep ^uuid | awk '{print $NF}'`; do xe pbd-plug uuid=$pbd ; </code>
							</div></li><li class="listitem"><div class="para">
								On each slave host in the Xen pool, repeat these steps, starting from "manually live migrate VMs."
							</div></li></ol></div></li></ol></div></div></div><div class="chapter" id="api-changes"><div class="titlepage"><div><div><h1 class="title">Chapter 4. API Changes in 4.2</h1></div></div></div><div class="toc"><dl class="toc"><dt><span class="section"><a href="#added-API-commands-4.2">4.1. Added API Commands in 4.2</a></span></dt><dt><span class="section"><a href="#changed-api-commands-4.2">4.2. Changed API Commands in 4.2</a></span></dt><dt><span class="section"><a href="#removed-api-4.2">4.3. Deprecated APIs</a></span></dt></dl></div><div class="section" id="added-API-commands-4.2"><div class="titlepage"><div><div><h2 class="title">4.1. Added API Commands in 4.2</h2></div></div></div><div class="section" id="idp13610976"><div class="titlepage"><div><div><h3 class="title" id="idp13610976">4.1.1. Secondary Storage</h3></div></div></div><div class="itemizedlist"><ul><li class="listitem"><div class="para">
							addImageStore (Adds all types of secondary storage providers, S3/Swift/NFS)
						</div></li><li class="listitem"><div class="para">
							createSecondaryStagingStore (Adds a staging secondary storage in each zone)
						</div></li><li class="listitem"><div class="para">
							listImageStores (Lists all secondary storages, S3/Swift/NFS)
						</div></li><li class="listitem"><div class="para">
							listSecondaryStagingStores (Lists all staging secondary storages)
						</div></li><li class="listitem"><div class="para">
							addS3 (Adds a Amazon Simple Storage Service instance.) It is recommended to use addImageStore instead.
						</div></li><li class="listitem"><div class="para">
							listS3s (Lists all the Amazon Simple Storage Service instances.) It is recommended to use listImageStores instead.
						</div></li></ul></div></div><div class="section" id="idp467536"><div class="titlepage"><div><div><h3 class="title" id="idp467536">4.1.2. VM Snapshot</h3></div></div></div><div class="itemizedlist"><ul><li class="listitem"><div class="para">
							createVMSnapshot (Creates a virtual machine snapshot; see <a class="xref" href="#vm-snapshots">Section 2.4.16, “Virtual Machine Snapshots for VMware”</a>)
						</div></li><li class="listitem"><div class="para">
							deleteVMSnapshot (Deletes a virtual machine snapshot)
						</div></li><li class="listitem"><div class="para">
							listVMSnapshot (Shows a virtual machine snapshot)
						</div></li><li class="listitem"><div class="para">
							revertToVMSnapshot (Returns a virtual machine to the state and data saved in a given snapshot)
						</div></li></ul></div></div><div class="section" id="idp21861168"><div class="titlepage"><div><div><h3 class="title" id="idp21861168">4.1.3. Load Balancer Health Check</h3></div></div></div><div class="itemizedlist"><ul><li class="listitem"><div class="para">
							createLBHealthCheckPolicy (Creates a new health check policy for a load balancer rule; see <a class="xref" href="#health-check">Section 2.3.19, “Health Checks for Load Balanced Instances”</a>)
						</div></li><li class="listitem"><div class="para">
							deleteLBHealthCheckPolicy (Deletes an existing health check policy from a load balancer rule)
						</div></li><li class="listitem"><div class="para">
							listLBHealthCheckPolicies (Displays the health check policy for a load balancer rule)
						</div></li></ul></div></div><div class="section" id="idm23845408"><div class="titlepage"><div><div><h3 class="title" id="idm23845408">4.1.4. Egress Firewall Rules</h3></div></div></div><div class="itemizedlist"><ul><li class="listitem"><div class="para">
							createEgressFirewallRules (Creates an egress firewall rule on the guest network; see <a class="xref" href="#egress-firewall">Section 2.3.10, “Enhanced Juniper SRX Support for Egress Firewall Rules”</a>)
						</div></li><li class="listitem"><div class="para">
							deleteEgressFirewallRules (Deletes a egress firewall rule on the guest network.)
						</div></li><li class="listitem"><div class="para">
							listEgressFirewallRules (Lists the egress firewall rules configured for a guest network.)
						</div></li></ul></div></div><div class="section" id="idm44941472"><div class="titlepage"><div><div><h3 class="title" id="idm44941472">4.1.5. SSH Key</h3></div></div></div><div class="itemizedlist"><ul><li class="listitem"><div class="para">
							resetSSHKeyForVirtualMachine (Resets the SSHkey for virtual machine.)
						</div></li></ul></div></div><div class="section" id="idm44721824"><div class="titlepage"><div><div><h3 class="title" id="idm44721824">4.1.6. Bare Metal</h3></div></div></div><div class="itemizedlist"><ul><li class="listitem"><div class="para">
							addBaremetalHost (Adds a new host. Technically, this API command was present in v3.0.6, but its functionality was disabled. See <a class="xref" href="#baremetal">Section 2.4.12, “Kickstart Installation for Bare Metal Provisioning”</a>)
						</div></li><li class="listitem"><div class="para">
							addBaremetalDhcp (Adds a DHCP server for bare metal hosts)
						</div></li><li class="listitem"><div class="para">
							addBaremetalPxePingServer (Adds a PXE PING server for bare metal hosts)
						</div></li><li class="listitem"><div class="para">
							addBaremetalPxeKickStartServer (Adds a PXE server for bare metal hosts)
						</div></li><li class="listitem"><div class="para">
							listBaremetalDhcp (Shows the DHCP servers currently defined for bare metal hosts)
						</div></li><li class="listitem"><div class="para">
							listBaremetalPxePingServer (Shows the PXE PING servers currently defined for bare metal hosts)
						</div></li></ul></div></div><div class="section" id="idm40756672"><div class="titlepage"><div><div><h3 class="title" id="idm40756672">4.1.7. NIC</h3></div></div></div><div class="itemizedlist"><ul><li class="listitem"><div class="para">
							addNicToVirtualMachine (Adds a new NIC to the specified VM on a selected network; see <a class="xref" href="#multiple-ip-nic">Section 2.3.14, “Configuring Multiple IP Addresses on a Single NIC”</a>)
						</div></li><li class="listitem"><div class="para">
							removeNicFromVirtualMachine (Removes the specified NIC from a selected VM.)
						</div></li><li class="listitem"><div class="para">
							updateDefaultNicForVirtualMachine (Updates the specified NIC to be the default one for a selected VM.)
						</div></li><li class="listitem"><div class="para">
							addIpToNic (Assigns secondary IP to a NIC.)
						</div></li><li class="listitem"><div class="para">
							removeIpFromNic (Assigns secondary IP to a NIC.)
						</div></li><li class="listitem"><div class="para">
							listNics (Lists the NICs associated with a VM.)
						</div></li></ul></div></div><div class="section" id="idm24076864"><div class="titlepage"><div><div><h3 class="title" id="idm24076864">4.1.8. Regions</h3></div></div></div><div class="itemizedlist"><ul><li class="listitem"><div class="para">
							addRegion (Registers a Region into another Region; see <a class="xref" href="#regions">Section 2.1.1, “Regions”</a>)
						</div></li><li class="listitem"><div class="para">
							updateRegion (Updates Region details: ID, Name, Endpoint, User API Key, and User Secret Key.)
						</div></li><li class="listitem"><div class="para">
							removeRegion (Removes a Region from current Region.)
						</div></li><li class="listitem"><div class="para">
							listRegions (Get all the Regions. They can be filtered by using the ID or Name.)
						</div></li></ul></div></div><div class="section" id="idp2310112"><div class="titlepage"><div><div><h3 class="title" id="idp2310112">4.1.9. User</h3></div></div></div><div class="itemizedlist"><ul><li class="listitem"><div class="para">
							getUser (This API can only be used by the Admin. Get user account details by using the API Key.)
						</div></li></ul></div></div><div class="section" id="idp8748368"><div class="titlepage"><div><div><h3 class="title" id="idp8748368">4.1.10. API Throttling</h3></div></div></div><div class="itemizedlist"><ul><li class="listitem"><div class="para">
							getApiLimit (Show number of remaining APIs for the invoking user in current window)
						</div></li><li class="listitem"><div class="para">
							resetApiLimit (For root admin, if accountId parameter is passed, it will reset count for that particular account, otherwise it will reset all counters)
						</div></li><li class="listitem"><div class="para">
							resetApiLimit (Reset the API count.)
						</div></li></ul></div></div><div class="section" id="idm38094080"><div class="titlepage"><div><div><h3 class="title" id="idm38094080">4.1.11. Locking</h3></div></div></div><div class="itemizedlist"><ul><li class="listitem"><div class="para">
							lockAccount (Locks an account)
						</div></li><li class="listitem"><div class="para">
							lockUser (Locks a user account)
						</div></li></ul></div></div><div class="section" id="idm24725936"><div class="titlepage"><div><div><h3 class="title" id="idm24725936">4.1.12. VM Scaling</h3></div></div></div><div class="itemizedlist"><ul><li class="listitem"><div class="para">
							scaleVirtualMachine (Scales the virtual machine to a new service offering.)
						</div></li></ul></div></div><div class="section" id="idp5880848"><div class="titlepage"><div><div><h3 class="title" id="idp5880848">4.1.13. Migrate Volume</h3></div></div></div><div class="itemizedlist"><ul><li class="listitem"><div class="para">
							migrateVirtualMachineWithVolume (Attempts migrating VM with its volumes to a different host.)
						</div></li><li class="listitem"><div class="para">
							listStorageProviders (Lists storage providers.)
						</div></li><li class="listitem"><div class="para">
							findStoragePoolsForMigration (Lists storage pools available for migrating a volume.)
						</div></li></ul></div></div><div class="section" id="idp21019104"><div class="titlepage"><div><div><h3 class="title" id="idp21019104">4.1.14. Dedicated IP and VLAN</h3></div></div></div><div class="itemizedlist"><ul><li class="listitem"><div class="para">
							dedicatePublicIpRange (Dedicates a Public IP range to an account.)
						</div></li><li class="listitem"><div class="para">
							releasePublicIpRange (Releases a Public IP range back to the system pool.)
						</div></li><li class="listitem"><div class="para">
							dedicateGuestVlanRange (Dedicates a guest VLAN range to an account.)
						</div></li><li class="listitem"><div class="para">
							releaseDedicatedGuestVlanRange (Releases a dedicated guest VLAN range to the system.)
						</div></li><li class="listitem"><div class="para">
							listDedicatedGuestVlanRanges (Lists dedicated guest VLAN ranges.)
						</div></li></ul></div></div><div class="section" id="idm45539328"><div class="titlepage"><div><div><h3 class="title" id="idm45539328">4.1.15. Port Forwarding</h3></div></div></div><div class="itemizedlist"><ul><li class="listitem"><div class="para">
							updatePortForwardingRule (Updates a port forwarding rule. Only the private port and the VM can be updated.)
						</div></li></ul></div></div><div class="section" id="idm40008464"><div class="titlepage"><div><div><h3 class="title" id="idm40008464">4.1.16. Scale System VM</h3></div></div></div><div class="itemizedlist"><ul><li class="listitem"><div class="para">
							scaleSystemVm (Scale the service offering for a systemVM, console proxy, or secondary storage.)
						</div></li></ul></div></div><div class="section" id="idm24722864"><div class="titlepage"><div><div><h3 class="title" id="idm24722864">4.1.17. Deployment Planner</h3></div></div></div><div class="itemizedlist"><ul><li class="listitem"><div class="para">
							listDeploymentPlanners (Lists all the deployment planners available.)
						</div></li></ul></div></div><div class="section" id="idm31747376"><div class="titlepage"><div><div><h3 class="title" id="idm31747376">4.1.18. Archive and Delete Events and Alerts</h3></div></div></div><div class="itemizedlist"><ul><li class="listitem"><div class="para">
							archiveEvents (Archive one or more events.)
						</div></li><li class="listitem"><div class="para">
							deleteEvents (Delete one or more events.)
						</div></li><li class="listitem"><div class="para">
							archiveAlerts (Archive one or more alerts.)
						</div></li><li class="listitem"><div class="para">
							deleteAlerts (Delete one or more alerts.)
						</div></li></ul></div></div><div class="section" id="idm75213408"><div class="titlepage"><div><div><h3 class="title" id="idm75213408">4.1.19. Host Reservation</h3></div></div></div><div class="itemizedlist"><ul><li class="listitem"><div class="para">
							releaseHostReservation (Releases host reservation.)
						</div></li></ul></div></div><div class="section" id="idm76226640"><div class="titlepage"><div><div><h3 class="title" id="idm76226640">4.1.20. Resize Volume</h3></div></div></div><div class="itemizedlist"><ul><li class="listitem"><div class="para">
							resizeVolume (Resizes a volume.)
						</div></li><li class="listitem"><div class="para">
							updateVolume (Updates the volume.)
						</div></li></ul></div></div><div class="section" id="idp9000928"><div class="titlepage"><div><div><h3 class="title" id="idp9000928">4.1.21. Egress Firewall Rules</h3></div></div></div><div class="itemizedlist"><ul><li class="listitem"><div class="para">
							createEgressFirewallRule (Creates a egress firewall rule for a given network. )
						</div></li><li class="listitem"><div class="para">
							deleteEgressFirewallRule (Deletes an egress firewall rule.)
						</div></li><li class="listitem"><div class="para">
							listEgressFirewallRules (Lists all egress firewall rules for network.)
						</div></li></ul></div></div><div class="section" id="idp2986528"><div class="titlepage"><div><div><h3 class="title" id="idp2986528">4.1.22. Network ACL</h3></div></div></div><div class="itemizedlist"><ul><li class="listitem"><div class="para">
							updateNetworkACLItem (Updates ACL item with specified ID.)
						</div></li><li class="listitem"><div class="para">
							createNetworkACLList (Creates a Network ACL for the given VPC.)
						</div></li><li class="listitem"><div class="para">
							deleteNetworkACLList (Deletes a Network ACL.)
						</div></li><li class="listitem"><div class="para">
							replaceNetworkACLList (Replaces ACL associated with a Network or private gateway.)
						</div></li><li class="listitem"><div class="para">
							listNetworkACLLists (Lists all network ACLs.)
						</div></li></ul></div></div><div class="section" id="idp2592448"><div class="titlepage"><div><div><h3 class="title" id="idp2592448">4.1.23. Resource Detail</h3></div></div></div><div class="itemizedlist"><ul><li class="listitem"><div class="para">
							addResourceDetail (Adds detail for the Resource.)
						</div></li><li class="listitem"><div class="para">
							removeResourceDetail (Removes detail for the Resource.)
						</div></li><li class="listitem"><div class="para">
							listResourceDetails (List resource details.)
						</div></li></ul></div></div><div class="section" id="idp8991392"><div class="titlepage"><div><div><h3 class="title" id="idp8991392">4.1.24. Nicira Integration</h3></div></div></div><div class="itemizedlist"><ul><li class="listitem"><div class="para">
							addNiciraNvpDevice (Adds a Nicira NVP device.)
						</div></li><li class="listitem"><div class="para">
							deleteNiciraNvpDevice (Deletes a Nicira NVP device.)
						</div></li><li class="listitem"><div class="para">
							listNiciraNvpDevices (Lists Nicira NVP devices.)
						</div></li><li class="listitem"><div class="para">
							listNiciraNvpDeviceNetworks (Lists network that are using a Nicira NVP device.)
						</div></li></ul></div></div><div class="section" id="idp8630048"><div class="titlepage"><div><div><h3 class="title" id="idp8630048">4.1.25. BigSwitch VNS</h3></div></div></div><div class="itemizedlist"><ul><li class="listitem"><div class="para">
							addBigSwitchVnsDevice (Adds a BigSwitch VNS device.)
						</div></li><li class="listitem"><div class="para">
							deleteBigSwitchVnsDevice (Deletes a BigSwitch VNS device.)
						</div></li><li class="listitem"><div class="para">
							listBigSwitchVnsDevices (Lists BigSwitch VNS devices.)
						</div></li></ul></div></div><div class="section" id="idm20819152"><div class="titlepage"><div><div><h3 class="title" id="idm20819152">4.1.26. Simulator</h3></div></div></div><div class="itemizedlist"><ul><li class="listitem"><div class="para">
							configureSimulator (Configures a simulator.)
						</div></li></ul></div></div><div class="section" id="idm47555616"><div class="titlepage"><div><div><h3 class="title" id="idm47555616">4.1.27. API Discovery</h3></div></div></div><div class="itemizedlist"><ul><li class="listitem"><div class="para">
							listApis (Lists all the available APIs on the server, provided by the API Discovery plugin.)
						</div></li></ul></div></div><div class="section" id="idm43531104"><div class="titlepage"><div><div><h3 class="title" id="idm43531104">4.1.28. Global Load Balancer</h3></div></div></div><div class="itemizedlist"><ul><li class="listitem"><div class="para">
							createGlobalLoadBalancerRule (Creates a global load balancer rule.)
						</div></li><li class="listitem"><div class="para">
							deleteGlobalLoadBalancerRule (Deletes a global load balancer rule.)
						</div></li><li class="listitem"><div class="para">
							updateGlobalLoadBalancerRule (update global load balancer rules.)
						</div></li><li class="listitem"><div class="para">
							listGlobalLoadBalancerRules (Lists load balancer rules.)
						</div></li><li class="listitem"><div class="para">
							assignToGlobalLoadBalancerRule (Assign load balancer rule or list of load balancer rules to a global load balancer rules.)
						</div></li><li class="listitem"><div class="para">
							removeFromGlobalLoadBalancerRule (Removes a load balancer rule association with global load balancer rule)
						</div></li></ul></div></div><div class="section" id="idm43385680"><div class="titlepage"><div><div><h3 class="title" id="idm43385680">4.1.29. Load Balancer</h3></div></div></div><div class="itemizedlist"><ul><li class="listitem"><div class="para">
							createLoadBalancer (Creates a Load Balancer)
						</div></li><li class="listitem"><div class="para">
							listLoadBalancers (Lists Load Balancers)
						</div></li><li class="listitem"><div class="para">
							deleteLoadBalancer (Deletes a load balancer)
						</div></li><li class="listitem"><div class="para">
							configureInternalLoadBalancerElement (Configures an Internal Load Balancer element.)
						</div></li><li class="listitem"><div class="para">
							createInternalLoadBalancerElement (Create an Internal Load Balancer element.)
						</div></li><li class="listitem"><div class="para">
							listInternalLoadBalancerElements (Lists all available Internal Load Balancer elements.)
						</div></li></ul></div></div><div class="section" id="idm39843856"><div class="titlepage"><div><div><h3 class="title" id="idm39843856">4.1.30. Affinity Group</h3></div></div></div><div class="itemizedlist"><ul><li class="listitem"><div class="para">
							createAffinityGroup (Creates an affinity or anti-affinity group.)
						</div></li><li class="listitem"><div class="para">
							deleteAffinityGroup (Deletes an affinity group.)
						</div></li><li class="listitem"><div class="para">
							listAffinityGroups (Lists all the affinity groups.)
						</div></li><li class="listitem"><div class="para">
							updateVMAffinityGroup (Updates the affinity or anti-affinity group associations of a VM. The VM has to be stopped and restarted for the new properties to take effect.)
						</div></li><li class="listitem"><div class="para">
							listAffinityGroupTypes (Lists affinity group types available.)
						</div></li></ul></div></div><div class="section" id="idm25477504"><div class="titlepage"><div><div><h3 class="title" id="idm25477504">4.1.31. Portable IP</h3></div></div></div><div class="itemizedlist"><ul><li class="listitem"><div class="para">
							createPortableIpRange (Adds a range of portable portable IPs to a Region.)
						</div></li><li class="listitem"><div class="para">
							deletePortableIpRange (Deletes a range of portable portable IPs associated with a Region.)
						</div></li><li class="listitem"><div class="para">
							listPortableIpRanges (Lists portable IP ranges.)
						</div></li></ul></div></div><div class="section" id="idm38982592"><div class="titlepage"><div><div><h3 class="title" id="idm38982592">4.1.32. Internal Load Balancer VM</h3></div></div></div><div class="itemizedlist"><ul><li class="listitem"><div class="para">
							stopInternalLoadBalancerVM (Stops an Internal LB VM.)
						</div></li><li class="listitem"><div class="para">
							startInternalLoadBalancerVM (Starts an existing Internal LB VM.)
						</div></li><li class="listitem"><div class="para">
							listInternalLoadBalancerVMs (List internal LB VMs.)
						</div></li></ul></div></div><div class="section" id="idm35183456"><div class="titlepage"><div><div><h3 class="title" id="idm35183456">4.1.33. Network Isolation</h3></div></div></div><div class="itemizedlist"><ul><li class="listitem"><div class="para">
							listNetworkIsolationMethods (Lists supported methods of network isolation.)
						</div></li></ul></div></div><div class="section" id="idm44944272"><div class="titlepage"><div><div><h3 class="title" id="idm44944272">4.1.34. Dedicated Resources</h3></div></div></div><div class="itemizedlist"><ul><li class="listitem"><div class="para">
							dedicateZone (Dedicates a zone.)
						</div></li><li class="listitem"><div class="para">
							dedicatePod (Dedicates a pod.)
						</div></li><li class="listitem"><div class="para">
							dedicateCluster (Dedicate an existing cluster.)
						</div></li><li class="listitem"><div class="para">
							dedicateHost (Dedicates a host.)
						</div></li><li class="listitem"><div class="para">
							releaseDedicatedZone (Release dedication of zone.)
						</div></li><li class="listitem"><div class="para">
							releaseDedicatedPod (Release dedication for the pod.)
						</div></li><li class="listitem"><div class="para">
							releaseDedicatedCluster (Release dedication for cluster.)
						</div></li><li class="listitem"><div class="para">
							releaseDedicatedHost (Release dedication for host.)
						</div></li><li class="listitem"><div class="para">
							listDedicatedZones (List dedicated zones.)
						</div></li><li class="listitem"><div class="para">
							listDedicatedPods (Lists dedicated pods.)
						</div></li><li class="listitem"><div class="para">
							listDedicatedClusters (Lists dedicated clusters.)
						</div></li><li class="listitem"><div class="para">
							listDedicatedHosts (Lists dedicated hosts.)
						</div></li></ul></div></div></div><div class="section" id="changed-api-commands-4.2"><div class="titlepage"><div><div><h2 class="title">4.2. Changed API Commands in 4.2</h2></div></div></div><div class="informaltable"><table border="1"><colgroup><col width="50%" align="left" class="1" /><col width="50%" align="left" class="2" /></colgroup><thead><tr><th class="" align="left">
								<div class="para">
									API Commands
								</div>

							</th><th class="" align="left">
								<div class="para">
									Description
								</div>

							</th></tr></thead><tbody><tr><td class="" align="left">
								<div class="para">
									listNetworkACLs
								</div>

							</td><td class="" align="left">
								<div class="para">
									The following new request parameters are added: aclid (optional), action (optional), protocol (optional)
								</div>
								 <div class="para">
									The following new response parameters are added: aclid, action, number
								</div>

							</td></tr><tr><td class="" align="left">
								<div class="para">
									copyTemplate
								</div>

							</td><td class="" align="left">
								<div class="para">
									The following new response parameters are added: isdynamicallyscalable, sshkeyenabled
								</div>

							</td></tr><tr><td class="" align="left">
								<div class="para">
									listRouters
								</div>

							</td><td class="" align="left">
								<div class="para">
									The following new response parameters are added: ip6dns1, ip6dns2, role
								</div>

							</td></tr><tr><td class="" align="left">
								<div class="para">
									updateConfiguration
								</div>

							</td><td class="" align="left">
								<div class="para">
									The following new request parameters are added: accountid (optional), clusterid (optional), storageid (optional), zoneid (optional)
								</div>
								 <div class="para">
									The following new response parameters are added: id, scope
								</div>

							</td></tr><tr><td class="" align="left">
								<div class="para">
									listVolumes
								</div>

							</td><td class="" align="left">
								<div class="para">
									The following request parameter is removed: details
								</div>
								 <div class="para">
									The following new response parameter is added: displayvolume
								</div>

							</td></tr><tr><td class="" align="left">
								<div class="para">
									suspendProject
								</div>

							</td><td class="" align="left">
								<div class="para">
									The following new response parameters are added: cpuavailable, cpulimit, cputotal, ipavailable, iplimit, iptotal, memoryavailable, memorylimit, memorytotal, networkavailable, networklimit, networktotal, primarystorageavailable, primarystoragelimit, primarystoragetotal, secondarystorageavailable, secondarystoragelimit, secondarystoragetotal, snapshotavailable, snapshotlimit, snapshottotal, templateavailable, templatelimit, templatetotal, vmavailable, vmlimit, vmrunning, vmstopped, vmtotal, volumeavailable, volumelimit, volumetotal, vpcavailable, vpclimit, vpctotal
								</div>

							</td></tr><tr><td class="" align="left">
								<div class="para">
									listRemoteAccessVpns
								</div>

							</td><td class="" align="left">
								<div class="para">
									The following new response parameters are added: id
								</div>

							</td></tr><tr><td class="" align="left">
								<div class="para">
									registerTemplate
								</div>

							</td><td class="" align="left">
								<div class="para">
									The following new request parameters are added: imagestoreuuid (optional), isdynamicallyscalable (optional), isrouting (optional)
								</div>
								 <div class="para">
									The following new response parameters are added: isdynamicallyscalable, sshkeyenabled
								</div>

							</td></tr><tr><td class="" align="left">
								<div class="para">
									addTrafficMonitor
								</div>

							</td><td class="" align="left">
								<div class="para">
									The following response parameters are removed: privateinterface, privatezone, publicinterface, publiczone, usageinterface, username
								</div>

							</td></tr><tr><td class="" align="left">
								<div class="para">
									createTemplate
								</div>

							</td><td class="" align="left">
								<div class="para">
									The following response parameters are removed: clusterid, clustername, disksizeallocated, disksizetotal, disksizeused, ipaddress, path, podid, podname, state, tags, type
								</div>
								 <div class="para">
									The following new response parameters are added: account, accountid, bootable, checksum, crossZones, details, displaytext, domain, domainid, format, hostid, hostname, hypervisor, isdynamicallyscalable, isextractable, isfeatured, ispublic, isready, ostypeid, ostypename, passwordenabled, project, projectid, removed, size, sourcetemplateid, sshkeyenabled, status, templatetag, templatetype, tags
								</div>

							</td></tr><tr><td class="" align="left">
								<div class="para">
									listLoadBalancerRuleInstances
								</div>

							</td><td class="" align="left">
								<div class="para">
									The following new response parameters are added: diskioread, diskiowrite, diskkbsread, diskkbswrite, displayvm, isdynamicallyscalable, affinitygroup
								</div>

							</td></tr><tr><td class="" align="left">
								<div class="para">
									migrateVolume
								</div>

							</td><td class="" align="left">
								<div class="para">
									The following new request parameters is added: livemigrate (optional)
								</div>
								 <div class="para">
									The following new response parameters is added: displayvolume
								</div>

							</td></tr><tr><td class="" align="left">
								<div class="para">
									createAccount
								</div>

							</td><td class="" align="left">
								<div class="para">
									The following new request parameters are added: accountid (optional), userid (optional)
								</div>
								 <div class="para">
									The following new response parameters are added: accountdetails, cpuavailable, cpulimit, cputotal, defaultzoneid, ipavailable, iplimit, iptotal, iscleanuprequired, isdefault, memoryavailable, memorylimit, memorytotal, name, networkavailable, networkdomain, networklimit, networktotal, primarystorageavailable, primarystoragelimit, primarystoragetotal, projectavailable, projectlimit, projecttotal, receivedbytes, secondarystorageavailable, secondarystoragelimit, secondarystoragetotal, sentbytes, snapshotavailable, snapshotlimit, snapshottotal, templateavailable, templatelimit, templatetotal, vmavailable, vmlimit, vmrunning, vmstopped, vmtotal, volumeavailable, volumelimit, volumetotal, vpcavailable, vpclimit, vpctotal, user
								</div>
								 <div class="para">
									The following parameters are removed: account, accountid, apikey, created, email, firstname, lastname, secretkey, timezone, username
								</div>

							</td></tr><tr><td class="" align="left">
								<div class="para">
									updatePhysicalNetwork
								</div>

							</td><td class="" align="left">
								<div class="para">
									The following new request parameters is added: removevlan (optional)
								</div>

							</td></tr><tr><td class="" align="left">
								<div class="para">
									listTrafficMonitors
								</div>

							</td><td class="" align="left">
								<div class="para">
									The following response parameters are removed: privateinterface, privatezone, publicinterface, publiczone, usageinterface, username
								</div>

							</td></tr><tr><td class="" align="left">
								<div class="para">
									attachIso
								</div>

							</td><td class="" align="left">
								<div class="para">
									The following new response parameters are added: diskioread, diskiowrite, diskkbsread, diskkbswrite, displayvm, isdynamicallyscalable, affinitygroup
								</div>

							</td></tr><tr><td class="" align="left">
								<div class="para">
									listProjects
								</div>

							</td><td class="" align="left">
								<div class="para">
									The following new request parameters are added: cpuavailable, cpulimit, cputotal, ipavailable, iplimit, iptotal, memoryavailable, memorylimit, memorytotal, networkavailable, networklimit, networktotal, primarystorageavailable, primarystoragelimit, primarystoragetotal, secondarystorageavailable, secondarystoragelimit, secondarystoragetotal, snapshotavailable, snapshotlimit, snapshottotal, templateavailable, templatelimit, templatetotal, vmavailable, vmlimit, vmrunning, vmstopped, vmtotal, volumeavailable, volumelimit, volumetotal, vpcavailable, vpclimit, vpctotal
								</div>

							</td></tr><tr><td class="" align="left">
								<div class="para">
									enableAccount
								</div>

							</td><td class="" align="left">
								<div class="para">
									The following new response parameters are added: cpuavailable, cpulimit, cputotal, isdefault, memoryavailable, memorylimit, memorytotal, primarystorageavailable, primarystoragelimit, primarystoragetotal, secondarystorageavailable, secondarystoragelimit, secondarystoragetotal
								</div>

							</td></tr><tr><td class="" align="left">
								<div class="para">
									listPublicIpAddresses
								</div>

							</td><td class="" align="left">
								<div class="para">
									The following new response parameters are added: isportable, vmipaddress
								</div>

							</td></tr><tr><td class="" align="left">
								<div class="para">
									enableStorageMaintenance
								</div>

							</td><td class="" align="left">
								<div class="para">
									The following new response parameters are added: hypervisor, scope, suitableformigration
								</div>

							</td></tr><tr><td class="" align="left">
								<div class="para">
									listLoadBalancerRules
								</div>

							</td><td class="" align="left">
								<div class="para">
									The following new request parameters is added: networkid (optional)
								</div>
								 <div class="para">
									The following new response parameters is added: networkid
								</div>

							</td></tr><tr><td class="" align="left">
								<div class="para">
									stopRouter
								</div>

							</td><td class="" align="left">
								<div class="para">
									The following new response parameters are added: ip6dns1, ip6dns2, role
								</div>

							</td></tr><tr><td class="" align="left">
								<div class="para">
									listClusters
								</div>

							</td><td class="" align="left">
								<div class="para">
									The following new response parameters are added: cpuovercommitratio, memoryovercommitratio
								</div>

							</td></tr><tr><td class="" align="left">
								<div class="para">
									attachVolume
								</div>

							</td><td class="" align="left">
								<div class="para">
									The following new response parameter is added: displayvolume
								</div>

							</td></tr><tr><td class="" align="left">
								<div class="para">
									updateVPCOffering
								</div>

							</td><td class="" align="left">
								<div class="para">
									The following request parameters is made mandatory: id
								</div>

							</td></tr><tr><td class="" align="left">
								<div class="para">
									resetSSHKeyForVirtualMachine
								</div>

							</td><td class="" align="left">
								<div class="para">
									The following new request parameter is added: keypair (required)
								</div>
								 <div class="para">
									The following parameter is removed: name
								</div>
								 <div class="para">
									The following new response parameters are added: diskioread, diskiowrite, diskkbsread, diskkbswrite, displayvm, isdynamicallyscalable, affinitygroup
								</div>

							</td></tr><tr><td class="" align="left">
								<div class="para">
									updateCluster
								</div>

							</td><td class="" align="left">
								<div class="para">
									The following request parameters are removed: cpuovercommitratio, memoryovercommitratio (optional)
								</div>

							</td></tr><tr><td class="" align="left">
								<div class="para">
									listPrivateGateways
								</div>

							</td><td class="" align="left">
								<div class="para">
									The following new response parameters are added: aclid, sourcenatsupported
								</div>

							</td></tr><tr><td class="" align="left">
								<div class="para">
									ldapConfig
								</div>

							</td><td class="" align="left">
								<div class="para">
									The following new request parameters are added: listall (optional)
								</div>
								 <div class="para">
									The following parameters has been made optional: searchbase, hostname, queryfilter
								</div>
								 <div class="para">
									The following new response parameter is added: ssl
								</div>

							</td></tr><tr><td class="" align="left">
								<div class="para">
									listTemplates
								</div>

							</td><td class="" align="left">
								<div class="para">
									The following new response parameters are added: isdynamicallyscalable, sshkeyenabled
								</div>

							</td></tr><tr><td class="" align="left">
								<div class="para">
									listNetworks
								</div>

							</td><td class="" align="left">
								<div class="para">
									The following new response parameters are added: aclid, displaynetwork, ip6cidr, ip6gateway, ispersistent, networkcidr, reservediprange
								</div>

							</td></tr><tr><td class="" align="left">
								<div class="para">
									restartNetwork
								</div>

							</td><td class="" align="left">
								<div class="para">
									The following new response parameters are added: isportable, vmipaddress
								</div>

							</td></tr><tr><td class="" align="left">
								<div class="para">
									prepareTemplate
								</div>

							</td><td class="" align="left">
								<div class="para">
									The following new response parameters are added: isdynamicallyscalable, sshkeyenabled
								</div>

							</td></tr><tr><td class="" align="left">
								<div class="para">
									rebootVirtualMachine
								</div>

							</td><td class="" align="left">
								<div class="para">
									The following new response parameters are added: diskioread, diskiowrite, diskkbsread, diskkbswrite, displayvm, isdynamicallyscalable, affinitygroup
								</div>

							</td></tr><tr><td class="" align="left">
								<div class="para">
									changeServiceForRouter
								</div>

							</td><td class="" align="left">
								<div class="para">
									The following new request parameters are added: aclid (optional), action (optional), protocol (optional)
								</div>
								 <div class="para">
									The following new response parameters are added: id, scope
								</div>

							</td></tr><tr><td class="" align="left">
								<div class="para">
									updateZone
								</div>

							</td><td class="" align="left">
								<div class="para">
									The following new request parameters are added: ip6dns1 (optional), ip6dns2 (optional)
								</div>
								 <div class="para">
									The following new response parameters are added: ip6dns1, ip6dns2
								</div>

							</td></tr><tr><td class="" align="left">
								<div class="para">
									ldapRemove
								</div>

							</td><td class="" align="left">
								<div class="para">
									The following new response parameters are added: ssl
								</div>

							</td></tr><tr><td class="" align="left">
								<div class="para">
									updateServiceOffering
								</div>

							</td><td class="" align="left">
								<div class="para">
									The following new response parameters are added: deploymentplanner, isvolatile
								</div>

							</td></tr><tr><td class="" align="left">
								<div class="para">
									updateStoragePool
								</div>

							</td><td class="" align="left">
								<div class="para">
									The following new response parameters are added: hypervisor, scope, suitableformigration
								</div>

							</td></tr><tr><td class="" align="left">
								<div class="para">
									listFirewallRules
								</div>

							</td><td class="" align="left">
								<div class="para">
									The following request parameter is removed: traffictype
								</div>
								 <div class="para">
									The following new response parameters are added: networkid
								</div>

							</td></tr><tr><td class="" align="left">
								<div class="para">
									updateUser
								</div>

							</td><td class="" align="left">
								<div class="para">
									The following new response parameters are added: iscallerchilddomain, isdefault
								</div>

							</td></tr><tr><td class="" align="left">
								<div class="para">
									updateProject
								</div>

							</td><td class="" align="left">
								<div class="para">
									The following new response parameters are added: cpuavailable, cpulimit, cputotal, ipavailable, iplimit, iptotal, memoryavailable, memorylimit, memorytotal, networkavailable, networklimit, networktotal, primarystorageavailable, primarystoragelimit, primarystoragetotal, secondarystorageavailable, secondarystoragelimit, secondarystoragetotal, snapshotavailable, snapshotlimit, snapshottotal, templateavailable, templatelimit, templatetotal, vmavailable, vmlimit, vmrunning, vmstopped, vmtotal, volumeavailable, volumelimit, volumetotal, vpcavailable, vpclimit, vpctotal
								</div>

							</td></tr><tr><td class="" align="left">
								<div class="para">
									updateTemplate
								</div>

							</td><td class="" align="left">
								<div class="para">
									The following new request parameters are added: isdynamicallyscalable (optional), isrouting (optional)
								</div>
								 <div class="para">
									The following new response parameters are added: isdynamicallyscalable, sshkeyenabled
								</div>

							</td></tr><tr><td class="" align="left">
								<div class="para">
									disableUser
								</div>

							</td><td class="" align="left">
								<div class="para">
									The following new response parameters are added: iscallerchilddomain, isdefault
								</div>

							</td></tr><tr><td class="" align="left">
								<div class="para">
									activateProject
								</div>

							</td><td class="" align="left">
								<div class="para">
									The following new response parameters are added: cpuavailable, cpulimit, cputotal, ipavailable, iplimit, iptotal, memoryavailable, memorylimit, memorytotal, networkavailable, networklimit, networktotal, primarystorageavailable, primarystoragelimit, primarystoragetotal, secondarystorageavailable, secondarystoragelimit, secondarystoragetotal, snapshotavailable, snapshotlimit, snapshottotal, templateavailable, templatelimit, templatetotal, vmavailable, vmlimit, vmrunning, vmstopped, vmtotal, volumeavailable, volumelimit, volumetotal, vpcavailable, vpclimit, vpctotal
								</div>

							</td></tr><tr><td class="" align="left">
								<div class="para">
									createNetworkACL
								</div>

							</td><td class="" align="left">
								<div class="para">
									The following new request parameters are added: aclid (optional), action (optional), number (optional)
								</div>
								 <div class="para">
									The following request parameter is now optional: networkid
								</div>
								 <div class="para">
									The following new response parameters are added: aclid, action, number
								</div>

							</td></tr><tr><td class="" align="left">
								<div class="para">
									enableStaticNat
								</div>

							</td><td class="" align="left">
								<div class="para">
									The following new request parameters are added: vmguestip (optional)
								</div>

							</td></tr><tr><td class="" align="left">
								<div class="para">
									registerIso
								</div>

							</td><td class="" align="left">
								<div class="para">
									The following new request parameters are added: imagestoreuuid (optional), isdynamicallyscalable (optional)
								</div>
								 <div class="para">
									The following new response parameters are added: isdynamicallyscalable, sshkeyenabled
								</div>

							</td></tr><tr><td class="" align="left">
								<div class="para">
									createIpForwardingRule
								</div>

							</td><td class="" align="left">
								<div class="para">
									The following new response parameter is added: vmguestip
								</div>

							</td></tr><tr><td class="" align="left">
								<div class="para">
									resetPasswordForVirtualMachine
								</div>

							</td><td class="" align="left">
								<div class="para">
									The following new response parameters are added: diskioread, diskiowrite, diskkbsread, diskkbswrite, displayvm, isdynamicallyscalable, affinitygroup
								</div>

							</td></tr><tr><td class="" align="left">
								<div class="para">
									createVolume
								</div>

							</td><td class="" align="left">
								<div class="para">
									The following new request parameter is added: displayvolume (optional)
								</div>
								 <div class="para">
									The following new response parameter is added: displayvolume
								</div>

							</td></tr><tr><td class="" align="left">
								<div class="para">
									startRouter
								</div>

							</td><td class="" align="left">
								<div class="para">
									The following new response parameters are added: ip6dns1, ip6dns2, role
								</div>

							</td></tr><tr><td class="" align="left">
								<div class="para">
									listCapabilities
								</div>

							</td><td class="" align="left">
								<div class="para">
									The following new response parameters are added: apilimitinterval and apilimitmax.
								</div>
								 <div class="para">
									See <a class="xref" href="#api-request-throttling">Section 2.5.3, “API Request Throttling”</a>.
								</div>

							</td></tr><tr><td class="" align="left">
								<div class="para">
									createServiceOffering
								</div>

							</td><td class="" align="left">
								<div class="para">
									The following new request parameters are added: deploymentplanner (optional), isvolatile (optional), serviceofferingdetails (optional).
								</div>
								 <div class="para">
									isvolatie indicates whether the service offering includes Volatile VM capability, which will discard the VM's root disk and create a new one on reboot. See <a class="xref" href="#reset-vm-reboot">Section 2.4.15, “Reset VM on Reboot”</a>.
								</div>
								 <div class="para">
									The following new response parameters are added: deploymentplanner, isvolatile
								</div>

							</td></tr><tr><td class="" align="left">
								<div class="para">
									restoreVirtualMachine
								</div>

							</td><td class="" align="left">
								<div class="para">
									The following request parameter is added: templateID (optional). This is used to point to the new template ID when the base image is updated. The parameter templateID can be an ISO ID in case of restore vm deployed using ISO. See <a class="xref" href="#update-vm-image">Section 2.4.14, “Changing a VM's Base Image”</a>.
								</div>
								 <div class="para">
									The following response parameters are added: diskioread, diskiowrite, diskkbsread, diskkbswrite, displayvm, isdynamicallyscalable, affinitygroup
								</div>

							</td></tr><tr><td class="" align="left">
								<div class="para">
									createNetwork
								</div>

							</td><td class="" align="left">
								<div class="para">
									The following new request parameters are added: aclid (optional), displaynetwork (optional), endipv6 (optional), ip6cidr (optional), ip6gateway (optional), isolatedpvlan (optional), startipv6 (optional)
								</div>
								 <div class="para">
									The following new response parameters are added: aclid, displaynetwork, ip6cidr, ip6gateway, ispersistent, networkcidr, reservediprange
								</div>

							</td></tr><tr><td class="" align="left">
								<div class="para">
									createVlanIpRange
								</div>

							</td><td class="" align="left">
								<div class="para">
									The following new request parameters are added: startipv6, endipv6, ip6gateway, ip6cidr
								</div>
								 <div class="para">
									Changed parameters: startip (is now optional)
								</div>
								 <div class="para">
									The following new response parameters are added: startipv6, endipv6, ip6gateway, ip6cidr
								</div>

							</td></tr><tr><td class="" align="left">
								<div class="para">
									CreateZone
								</div>

							</td><td class="" align="left">
								<div class="para">
									The following new request parameters are added: ip6dns1, ip6dns2
								</div>
								 <div class="para">
									The following new response parameters are added: ip6dns1, ip6dns2
								</div>

							</td></tr><tr><td class="" align="left">
								<div class="para">
									deployVirtualMachine
								</div>

							</td><td class="" align="left">
								<div class="para">
									The following request parameters are added: affinitygroupids (optional), affinitygroupnames (optional), displayvm (optional), ip6address (optional)
								</div>
								 <div class="para">
									The following request parameter is modified: iptonetworklist has a new possible value, ipv6
								</div>
								 <div class="para">
									The following new response parameters are added: diskioread, diskiowrite, diskkbsread, diskkbswrite, displayvm, isdynamicallyscalable, affinitygroup
								</div>

							</td></tr><tr><td class="" align="left">
								<div class="para">
									createNetworkOffering
								</div>

							</td><td class="" align="left">
								<div class="para">
									The following request parameters are added: details (optional), egressdefaultpolicy (optional), ispersistent (optional)
								</div>
								 <div class="para">
									ispersistent determines if the network or network offering created or listed by using this offering are persistent or not.
								</div>
								 <div class="para">
									The following response parameters are added: details, egressdefaultpolicy, ispersistent
								</div>

							</td></tr><tr><td class="" align="left">
								<div class="para">
									listNetworks
								</div>

							</td><td class="" align="left">
								<div class="para">
									The following request parameters is added: isPersistent.
								</div>
								 <div class="para">
									This parameter determines if the network or network offering created or listed by using this offering are persistent or not.
								</div>

							</td></tr><tr><td class="" align="left">
								<div class="para">
									listNetworkOfferings
								</div>

							</td><td class="" align="left">
								<div class="para">
									The following request parameters is added: isPersistent.
								</div>
								 <div class="para">
									This parameter determines if the network or network offering created or listed by using this offering are persistent or not.
								</div>
								 <div class="para">
									For listNetworkOfferings, the following response parameter has been added: details, egressdefaultpolicy, ispersistent
								</div>

							</td></tr><tr><td class="" align="left">
								<div class="para">
									addF5LoadBalancer
								</div>
								 <div class="para">
									configureNetscalerLoadBalancer
								</div>
								 <div class="para">
									addNetscalerLoadBalancer
								</div>
								 <div class="para">
									listF5LoadBalancers
								</div>
								 <div class="para">
									configureF5LoadBalancer
								</div>
								 <div class="para">
									listNetscalerLoadBalancers
								</div>

							</td><td class="" align="left">
								<div class="para">
									The following response parameter is removed: inline.
								</div>

							</td></tr><tr><td class="" align="left">
								<div class="para">
									listRouters
								</div>

							</td><td class="" align="left">
								<div class="para">
									For nic responses, the following fields have been added.
								</div>
								 <div class="itemizedlist"><ul><li class="listitem"><div class="para">
											ip6address
										</div></li><li class="listitem"><div class="para">
											ip6gateway
										</div></li><li class="listitem"><div class="para">
											ip6cidr
										</div></li></ul></div>

							</td></tr><tr><td class="" align="left">
								<div class="para">
									listVirtualMachines
								</div>

							</td><td class="" align="left">
								<div class="para">
									The following request parameters are added: affinitygroupid (optional), vpcid (optional)
								</div>
								 <div class="para">
									The following response parameters are added: diskioread, diskiowrite, diskkbsread, diskkbswrite, displayvm, isdynamicallyscalable, affinitygroup
								</div>

							</td></tr><tr><td class="" align="left">
								<div class="para">
									listRouters
								</div>
								 <div class="para">
									listZones
								</div>

							</td><td class="" align="left">
								<div class="para">
									For DomainRouter and DataCenter response, the following fields have been added.
								</div>
								 <div class="itemizedlist"><ul><li class="listitem"><div class="para">
											ip6dns1
										</div></li><li class="listitem"><div class="para">
											ip6dns2
										</div></li></ul></div>
								 <div class="para">
									For listZones, the following optional request parameters are added: name, networktype
								</div>

							</td></tr><tr><td class="" align="left">
								<div class="para">
									listFirewallRules
								</div>
								 <div class="para">
									createFirewallRule
								</div>

							</td><td class="" align="left">
								<div class="para">
									The following request parameter is added: traffictype (optional).
								</div>
								 <div class="para">
									The following response parameter is added: networkid
								</div>

							</td></tr><tr><td class="" align="left">
								<div class="para">
									listUsageRecords
								</div>

							</td><td class="" align="left">
								<div class="para">
									The following response parameter is added: virtualsize.
								</div>

							</td></tr><tr><td class="" align="left">
								<div class="para">
									deleteIso
								</div>

							</td><td class="" align="left">
								<div class="para">
									The following request parameter is removed: forced
								</div>

							</td></tr><tr><td class="" align="left">
								<div class="para">
									addCluster
								</div>

							</td><td class="" align="left">
								<div class="para">
									The following request parameters are added: guestvswitchtype (optional), guestvswitchtype (optional), publicvswitchtype (optional), publicvswitchtype (optional)
								</div>
								 <div class="para">
									See <a class="xref" href="#cpu-ram-overcommit">Section 2.4.11, “CPU and Memory Over-Provisioning”</a>.
								</div>
								 <div class="para">
									The following request parameters are removed: cpuovercommitratio, memoryovercommitratio
								</div>

							</td></tr><tr><td class="" align="left">
								<div class="para">
									updateCluster
								</div>

							</td><td class="" align="left">
								<div class="para">
									The following request parameters are added: cpuovercommitratio, ramovercommitratio
								</div>
								 <div class="para">
									See <a class="xref" href="#cpu-ram-overcommit">Section 2.4.11, “CPU and Memory Over-Provisioning”</a>.
								</div>

							</td></tr><tr><td class="" align="left">
								<div class="para">
									createStoragePool
								</div>

							</td><td class="" align="left">
								<div class="para">
									The following request parameters are added: hypervisor (optional), provider (optional), scope (optional)
								</div>
								 <div class="para">
									The following request parameters have been made mandatory: podid, clusterid
								</div>
								 <div class="para">
									See <a class="xref" href="#zone-wide-primary-storage">Section 2.1.3, “Zone-Wide Primary Storage”</a>.
								</div>
								 <div class="para">
									The following response parameter has been added: hypervisor, scope, suitableformigration
								</div>

							</td></tr><tr><td class="" align="left">
								<div class="para">
									listStoragePools
								</div>

							</td><td class="" align="left">
								<div class="para">
									The following request parameter is added: scope (optional)
								</div>
								 <div class="para">
									See <a class="xref" href="#zone-wide-primary-storage">Section 2.1.3, “Zone-Wide Primary Storage”</a>.
								</div>
								 <div class="para">
									The following response parameters are added: hypervisor, scope, suitableformigration
								</div>

							</td></tr><tr><td class="" align="left">
								<div class="para">
									updateDiskOffering
								</div>

							</td><td class="" align="left">
								<div class="para">
									The following response parameter is added: displayoffering
								</div>

							</td></tr><tr><td class="" align="left">
								<div class="para">
									changeServiceForVirtualMachine
								</div>

							</td><td class="" align="left">
								<div class="para">
									The following response parameter are added: diskioread, diskiowrite, diskkbsread, diskkbswrite, displayvm, isdynamicallyscalable, affinitygroup
								</div>

							</td></tr><tr><td class="" align="left">
								<div class="para">
									recoverVirtualMachine
								</div>

							</td><td class="" align="left">
								<div class="para">
									The following response parameters are added: diskioread, diskiowrite, diskkbsread, diskkbswrite, displayvm, isdynamicallyscalable, affinitygroup
								</div>

							</td></tr><tr><td class="" align="left">
								<div class="para">
									listCapabilities
								</div>

							</td><td class="" align="left">
								<div class="para">
									The following response parameters are added: apilimitinterval, apilimitmax
								</div>

							</td></tr><tr><td class="" align="left">
								<div class="para">
									createRemoteAccessVpn
								</div>

							</td><td class="" align="left">
								<div class="para">
									The following response parameters are added: id
								</div>

							</td></tr><tr><td class="" align="left">
								<div class="para">
									startVirtualMachine
								</div>

							</td><td class="" align="left">
								<div class="para">
									The following response parameters are added: diskioread, diskiowrite, diskkbsread, diskkbswrite, displayvm, isdynamicallyscalable, affinitygroup
								</div>

							</td></tr><tr><td class="" align="left">
								<div class="para">
									detachIso
								</div>

							</td><td class="" align="left">
								<div class="para">
									The following response parameters are added: diskioread, diskiowrite, diskkbsread, diskkbswrite, displayvm, isdynamicallyscalable, affinitygroup
								</div>

							</td></tr><tr><td class="" align="left">
								<div class="para">
									updateVPC
								</div>

							</td><td class="" align="left">
								<div class="para">
									The following request parameters has been made mandatory: id, name
								</div>

							</td></tr><tr><td class="" align="left">
								<div class="para">
									associateIpAddress
								</div>

							</td><td class="" align="left">
								<div class="para">
									The following request parameters are added: isportable (optional), regionid (optional)
								</div>
								 <div class="para">
									The following response parameters are added: isportable, vmipaddress
								</div>

							</td></tr><tr><td class="" align="left">
								<div class="para">
									listProjectAccounts
								</div>

							</td><td class="" align="left">
								<div class="para">
									The following response parameters are added: cpuavailable, cpulimit, cputotal, ipavailable, iplimit, iptotal, memoryavailable, memorylimit, memorytotal, networkavailable, networklimit, networktotal, primarystorageavailable, primarystoragelimit, primarystoragetotal, secondarystorageavailable, secondarystoragelimit, secondarystoragetotal, snapshotavailable, snapshotlimit, snapshottotal, templateavailable, templatelimit, templatetotal, vmavailable, vmlimit, vmrunning, vmstopped, vmtotal, volumeavailable, volumelimit, volumetotal, vpcavailable, vpclimit, vpctotal
								</div>

							</td></tr><tr><td class="" align="left">
								<div class="para">
									disableAccount
								</div>

							</td><td class="" align="left">
								<div class="para">
									The following response parameters are added: cpuavailable, cpulimit, cputotal, isdefault, memoryavailable, memorylimit, memorytotal, primarystorageavailable, primarystoragelimit, primarystoragetotal, secondarystorageavailable, secondarystoragelimit, secondarystoragetotal
								</div>

							</td></tr><tr><td class="" align="left">
								<div class="para">
									listPortForwardingRules
								</div>

							</td><td class="" align="left">
								<div class="para">
									The following response parameters are added: vmguestip
								</div>

							</td></tr><tr><td class="" align="left">
								<div class="para">
									migrateVirtualMachine
								</div>

							</td><td class="" align="left">
								<div class="para">
									The following response parameters are added: diskioread, diskiowrite, diskkbsread, diskkbswrite, displayvm, isdynamicallyscalable, affinitygroup
								</div>

							</td></tr><tr><td class="" align="left">
								<div class="para">
									cancelStorageMaintenance
								</div>

							</td><td class="" align="left">
								<div class="para">
									The following response parameters are added: hypervisor, scope, suitableformigration
								</div>

							</td></tr><tr><td class="" align="left">
								<div class="para">
									createPortForwardingRule
								</div>

							</td><td class="" align="left">
								<div class="para">
									The following request parameter is added: vmguestip (optional)
								</div>
								The following response parameter is added: vmguestip
							</td></tr><tr><td class="" align="left">
								<div class="para">
									addVpnUser
								</div>

							</td><td class="" align="left">
								<div class="para">
									The following response parameter is added: state
								</div>

							</td></tr><tr><td class="" align="left">
								<div class="para">
									createVPCOffering
								</div>

							</td><td class="" align="left">
								<div class="para">
									The following request parameter is added: serviceproviderlist (optional)
								</div>

							</td></tr><tr><td class="" align="left">
								<div class="para">
									assignVirtualMachine
								</div>

							</td><td class="" align="left">
								<div class="para">
									The following response parameters are added: diskioread, diskiowrite, diskkbsread, diskkbswrite, displayvm, isdynamicallyscalable, affinitygroup
								</div>

							</td></tr><tr><td class="" align="left">
								<div class="para">
									listConditions
								</div>

							</td><td class="" align="left">
								<div class="para">
									The following response parameters are added: account, counter, domain, domainid, project, projectid, relationaloperator, threshold
								</div>
								 <div class="para">
									Removed response parameters: name, source, value
								</div>

							</td></tr><tr><td class="" align="left">
								<div class="para">
									createPrivateGateway
								</div>

							</td><td class="" align="left">
								<div class="para">
									The following request parameters are added: aclid (optional), sourcenatsupported (optional)
								</div>
								 <div class="para">
									The following response parameters are added: aclid, sourcenatsupported
								</div>

							</td></tr><tr><td class="" align="left">
								<div class="para">
									updateVirtualMachine
								</div>

							</td><td class="" align="left">
								<div class="para">
									The following request parameters are added: displayvm (optional), isdynamicallyscalable (optional)
								</div>
								 <div class="para">
									The following response parameters are added: diskioread, diskiowrite, diskkbsread, diskkbswrite, displayvm, isdynamicallyscalable, affinitygroup
								</div>

							</td></tr><tr><td class="" align="left">
								<div class="para">
									destroyRouter
								</div>

							</td><td class="" align="left">
								<div class="para">
									The following response parameters are added: ip6dns1, ip6dns2, role
								</div>

							</td></tr><tr><td class="" align="left">
								<div class="para">
									listServiceOfferings
								</div>

							</td><td class="" align="left">
								<div class="para">
									The following response parameters are added: deploymentplanner, isvolatile
								</div>

							</td></tr><tr><td class="" align="left">
								<div class="para">
									listUsageRecords
								</div>

							</td><td class="" align="left">
								<div class="para">
									The following response parameters are removed: virtualsize
								</div>

							</td></tr><tr><td class="" align="left">
								<div class="para">
									createProject
								</div>

							</td><td class="" align="left">
								<div class="para">
									The following response parameters are added: cpuavailable, cpulimit, cputotal, ipavailable, iplimit, iptotal, memoryavailable, memorylimit, memorytotal, networkavailable, networklimit, networktotal, primarystorageavailable, primarystoragelimit, primarystoragetotal, secondarystorageavailable, secondarystoragelimit, secondarystoragetotal, snapshotavailable, snapshotlimit, snapshottotal, templateavailable, templatelimit, templatetotal, vmavailable, vmlimit, vmrunning, vmstopped, vmtotal, volumeavailable, volumelimit, volumetotal, vpcavailable, vpclimit, vpctotal
								</div>

							</td></tr><tr><td class="" align="left">
								<div class="para">
									enableUser
								</div>

							</td><td class="" align="left">
								<div class="para">
									The following response parameters are added: iscallerchilddomain, isdefault
								</div>

							</td></tr><tr><td class="" align="left">
								<div class="para">
									createLoadBalancerRule
								</div>

							</td><td class="" align="left">
								<div class="para">
									The following response parameter is added: networkid
								</div>

							</td></tr><tr><td class="" align="left">
								<div class="para">
									updateAccount
								</div>

							</td><td class="" align="left">
								<div class="para">
									The following response parameters are added: cpuavailable, cpulimit, cputotal, isdefault, memoryavailable, memorylimit, memorytotal, primarystorageavailable, primarystoragelimit, primarystoragetotal, secondarystorageavailable, secondarystoragelimit, secondarystoragetotal
								</div>

							</td></tr><tr><td class="" align="left">
								<div class="para">
									copyIso
								</div>

							</td><td class="" align="left">
								<div class="para">
									The following response parameters are added: isdynamicallyscalable, sshkeyenabled
								</div>

							</td></tr><tr><td class="" align="left">
								<div class="para">
									uploadVolume
								</div>

							</td><td class="" align="left">
								<div class="para">
									The following request parameters are added: imagestoreuuid (optional), projectid (optional
								</div>
								 <div class="para">
									The following response parameters are added: displayvolume
								</div>

							</td></tr><tr><td class="" align="left">
								<div class="para">
									createDomain
								</div>

							</td><td class="" align="left">
								<div class="para">
									The following request parameter is added: domainid (optional)
								</div>

							</td></tr><tr><td class="" align="left">
								<div class="para">
									stopVirtualMachine
								</div>

							</td><td class="" align="left">
								<div class="para">
									The following response parameters are added: diskioread, diskiowrite, diskkbsread, diskkbswrite, displayvm, isdynamicallyscalable, affinitygroup
								</div>

							</td></tr><tr><td class="" align="left">
								<div class="para">
									listAccounts
								</div>

							</td><td class="" align="left">
								<div class="para">
									The following response parameters are added: cpuavailable, cpulimit, cputotal, isdefault, memoryavailable, memorylimit, memorytotal, primarystorageavailable, primarystoragelimit, primarystoragetotal, secondarystorageavailable, secondarystoragelimit, secondarystoragetotal
								</div>

							</td></tr><tr><td class="" align="left">
								<div class="para">
									createSnapshot
								</div>

							</td><td class="" align="left">
								<div class="para">
									The following response parameter is added: zoneid
								</div>

							</td></tr><tr><td class="" align="left">
								<div class="para">
									updateIso
								</div>

							</td><td class="" align="left">
								<div class="para">
									The following request parameters are added: isdynamicallyscalable (optional), isrouting (optional)
								</div>
								 <div class="para">
									The following response parameters are added: isdynamicallyscalable, sshkeyenabled
								</div>

							</td></tr><tr><td class="" align="left">
								<div class="para">
									listIpForwardingRules
								</div>

							</td><td class="" align="left">
								<div class="para">
									The following response parameter is added: vmguestip
								</div>

							</td></tr><tr><td class="" align="left">
								<div class="para">
									updateNetwork
								</div>

							</td><td class="" align="left">
								<div class="para">
									The following request parameters are added: displaynetwork (optional), guestvmcidr (optional)
								</div>
								 <div class="para">
									The following response parameters are added: aclid, displaynetwork, ip6cidr, ip6gateway, ispersistent, networkcidr, reservediprange
								</div>

							</td></tr><tr><td class="" align="left">
								<div class="para">
									destroyVirtualMachine
								</div>

							</td><td class="" align="left">
								<div class="para">
									The following response parameters are added: diskioread, diskiowrite, diskkbsread, diskkbswrite, displayvm, isdynamicallyscalable, affinitygroup
								</div>

							</td></tr><tr><td class="" align="left">
								<div class="para">
									createDiskOffering
								</div>

							</td><td class="" align="left">
								<div class="para">
									The following request parameter is added: displayoffering (optional)
								</div>
								 <div class="para">
									The following response parameter is added: displayoffering
								</div>

							</td></tr><tr><td class="" align="left">
								<div class="para">
									rebootRouter
								</div>

							</td><td class="" align="left">
								<div class="para">
									The following response parameters are added: ip6dns1, ip6dns2, role
								</div>

							</td></tr><tr><td class="" align="left">
								<div class="para">
									listConfigurations
								</div>

							</td><td class="" align="left">
								<div class="para">
									The following request parameters are added: accountid (optional), clusterid (optional), storageid (optional), zoneid (optional)
								</div>
								 <div class="para">
									The following response parameters are added: id, scope
								</div>

							</td></tr><tr><td class="" align="left">
								<div class="para">
									createUser
								</div>

							</td><td class="" align="left">
								<div class="para">
									The following request parameter is added: userid (optional)
								</div>
								 <div class="para">
									The following response parameters are added: iscallerchilddomain, isdefault
								</div>

							</td></tr><tr><td class="" align="left">
								<div class="para">
									listDiskOfferings
								</div>

							</td><td class="" align="left">
								<div class="para">
									The following response parameter is added: displayoffering
								</div>

							</td></tr><tr><td class="" align="left">
								<div class="para">
									detachVolume
								</div>

							</td><td class="" align="left">
								<div class="para">
									The following response parameter is added: displayvolume
								</div>

							</td></tr><tr><td class="" align="left">
								<div class="para">
									deleteUser
								</div>

							</td><td class="" align="left">
								<div class="para">
									The following response parameters are added: displaytext, success
								</div>
								 <div class="para">
									Removed parameters: id, account, accountid, accounttype, apikey, created, domain, domainid, email, firstname, lastname, secretkey, state, timezone, username
								</div>

							</td></tr><tr><td class="" align="left">
								<div class="para">
									listSnapshots
								</div>

							</td><td class="" align="left">
								<div class="para">
									The following request parameter is added: zoneid (optional)
								</div>
								 <div class="para">
									The following response parameter is added: zoneid
								</div>

							</td></tr><tr><td class="" align="left">
								<div class="para">
									markDefaultZoneForAccount
								</div>

							</td><td class="" align="left">
								<div class="para">
									The following response parameters are added: cpuavailable, cpulimit, cputotal, isdefault, memoryavailable, memorylimit, memorytotal, primarystorageavailable, primarystoragelimit, primarystoragetotal, secondarystorageavailable, secondarystoragelimit, secondarystoragetotal
								</div>

							</td></tr><tr><td class="" align="left">
								<div class="para">
									restartVPC
								</div>

							</td><td class="" align="left">
								<div class="para">
									The following request parameters are made mandatory: id
								</div>

							</td></tr><tr><td class="" align="left">
								<div class="para">
									updateHypervisorCapabilities
								</div>

							</td><td class="" align="left">
								<div class="para">
									The following response parameters are added: hypervisor, hypervisorversion, maxdatavolumeslimit, maxguestslimit, maxhostspercluster, securitygroupenabled, storagemotionenabled
								</div>
								 <div class="para">
									Removed parameters: cpunumber, cpuspeed, created, defaultuse, displaytext, domain, domainid, hosttags, issystem, limitcpuuse, memory, name, networkrate, offerha, storagetype, systemvmtype, tags
								</div>

							</td></tr><tr><td class="" align="left">
								<div class="para">
									updateLoadBalancerRule
								</div>

							</td><td class="" align="left">
								<div class="para">
									The following response parameter is added: networkid
								</div>

							</td></tr><tr><td class="" align="left">
								<div class="para">
									listVlanIpRanges
								</div>

							</td><td class="" align="left">
								<div class="para">
									The following response parameters are added: endipv6, ip6cidr, ip6gateway, startipv6
								</div>

							</td></tr><tr><td class="" align="left">
								<div class="para">
									listHypervisorCapabilities
								</div>

							</td><td class="" align="left">
								<div class="para">
									The following response parameters are added: maxdatavolumeslimit, maxhostspercluster, storagemotionenabled
								</div>

							</td></tr><tr><td class="" align="left">
								<div class="para">
									updateNetworkOffering
								</div>

							</td><td class="" align="left">
								<div class="para">
									The following response parameters are added: details, egressdefaultpolicy, ispersistent
								</div>

							</td></tr><tr><td class="" align="left">
								<div class="para">
									createVirtualRouterElement
								</div>

							</td><td class="" align="left">
								<div class="para">
									The following request parameters are added: providertype (optional)
								</div>

							</td></tr><tr><td class="" align="left">
								<div class="para">
									listVpnUsers
								</div>

							</td><td class="" align="left">
								<div class="para">
									The following response parameter is added: state
								</div>

							</td></tr><tr><td class="" align="left">
								<div class="para">
									listUsers
								</div>

							</td><td class="" align="left">
								<div class="para">
									The following response parameters are added: iscallerchilddomain, isdefault
								</div>

							</td></tr><tr><td class="" align="left">
								<div class="para">
									listSupportedNetworkServices
								</div>

							</td><td class="" align="left">
								<div class="para">
									The following response parameter is added: provider
								</div>

							</td></tr><tr><td class="" align="left">
								<div class="para">
									listIsos
								</div>

							</td><td class="" align="left">
								<div class="para">
									The following response parameters are added: isdynamicallyscalable, sshkeyenabled
								</div>

							</td></tr></tbody></table></div></div><div class="section" id="removed-api-4.2"><div class="titlepage"><div><div><h2 class="title">4.3. Deprecated APIs</h2></div></div></div><div class="itemizedlist"><ul><li class="listitem"><div class="para">
						addExternalLoadBalancer (Adds F5 external load balancer appliance.)
					</div></li><li class="listitem"><div class="para">
						deleteExternalLoadBalancer (Deletes a F5 external load balancer appliance added in a zone.)
					</div></li><li class="listitem"><div class="para">
						listExternalLoadBalancers (Lists F5 external load balancer appliances added in a zone.)
					</div></li></ul></div></div></div></div></body></html>
