<?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>CloudStack API Developer's Guide</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-API_Developers_Guide-4.0.2-en-US-1-" /><meta name="description" content="How to integrate with CloudStack using the CloudStack API." /><script type="text/javascript" src="../../../../../toc.js"></script><script type="text/javascript">
              addID('Apache_CloudStack');
              
	      addID('Apache_CloudStack.4.0.2');
              
              addID('Apache_CloudStack.4.0.2.books');
	      addID('Apache_CloudStack.4.0.2.API_Developers_Guide');
              </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.org"><img src="Common_Content/images/image_left.png" alt="Product Site" /></a><a class="right" href="http://incubator.apache.org/cloudstack/docs"><img src="Common_Content/images/image_right.png" alt="Documentation Site" /></a></p><div xml:lang="en-US" class="book" id="idm225639859952" lang="en-US"><div class="titlepage"><div><div class="producttitle"><span class="productname">Apache CloudStack</span> <span class="productnumber">4.0.2</span></div><div><h1 id="idm225639859952" class="title">CloudStack API Developer's Guide</h1></div><p class="edition">Edition </p><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="idm225641263472" 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></div><div><div class="abstract"><h6>Abstract</h6><div class="para">
				How to integrate with CloudStack using the CloudStack API.
			</div></div></div></div><hr /></div><div class="toc"><dl class="toc"><dt><span class="chapter"><a href="#concepts">1. Concepts</a></span></dt><dd><dl><dt><span class="section"><a href="#whatis">1.1. What Is CloudStack?</a></span></dt><dt><span class="section"><a href="#feature-overview">1.2. What Can CloudStack Do?</a></span></dt><dt><span class="section"><a href="#deployment-architecture-overview">1.3. Deployment Architecture Overview</a></span></dt><dd><dl><dt><span class="section"><a href="#management-server-overview">1.3.1. Management Server Overview</a></span></dt><dt><span class="section"><a href="#cloud-infrastructure-overview">1.3.2. Cloud Infrastructure Overview</a></span></dt><dt><span class="section"><a href="#networking-overview">1.3.3. Networking Overview</a></span></dt></dl></dd></dl></dd><dt><span class="chapter"><a href="#developer-introduction">2. Introduction for Developers</a></span></dt><dd><dl><dt><span class="section"><a href="#roles">2.1. Roles</a></span></dt><dt><span class="section"><a href="#api-reference">2.2. API Reference Documentation</a></span></dt><dt><span class="section"><a href="#getting-started">2.3. Getting Started</a></span></dt></dl></dd><dt><span class="chapter"><a href="#whats-new">3. What's New in the API?</a></span></dt><dd><dl><dt><span class="section"><a href="#whats-new-in-api-4.0">3.1. What's New in the API for 4.0</a></span></dt><dd><dl><dt><span class="section"><a href="#changed-apicommands-4.0">3.1.1. Changed API Commands in 4.0.0-incubating</a></span></dt><dt><span class="section"><a href="#added-API-commands-4.0">3.1.2. Added API Commands in 4.0.0-incubating</a></span></dt></dl></dd><dt><span class="section"><a href="#whats-new-in-api-3.0">3.2. What's New in the API for 3.0</a></span></dt><dd><dl><dt><span class="section"><a href="#enabling-port-8096">3.2.1. Enabling Port 8096</a></span></dt><dt><span class="section"><a href="#stopped-vm">3.2.2. Stopped VM</a></span></dt><dt><span class="section"><a href="#change-to-behavior-of-list-commands">3.2.3. Change to Behavior of List Commands</a></span></dt><dt><span class="section"><a href="#removed-API-commands">3.2.4. Removed API commands</a></span></dt><dt><span class="section"><a href="#added-API-commands">3.2.5. Added API commands in 3.0</a></span></dt><dt><span class="section"><a href="#added-error-codes">3.2.6. Added CloudStack Error Codes</a></span></dt></dl></dd></dl></dd><dt><span class="chapter"><a href="#api-calls">4. Calling the CloudStack API</a></span></dt><dd><dl><dt><span class="section"><a href="#making-api-request">4.1. Making API Requests</a></span></dt><dt><span class="section"><a href="#enabling-api-call-expiration">4.2. Enabling API Call Expiration</a></span></dt><dt><span class="section"><a href="#signing-api-requests">4.3. Signing API Requests</a></span></dt><dt><span class="section"><a href="#responses">4.4. Responses</a></span></dt><dd><dl><dt><span class="section"><a href="#response-formats">4.4.1. Response Formats: XML and JSON</a></span></dt><dt><span class="section"><a href="#max-result-page-returned">4.4.2. Maximum Result Pages Returned</a></span></dt><dt><span class="section"><a href="#error-handling">4.4.3. Error Handling</a></span></dt></dl></dd><dt><span class="section"><a href="#asynchronous-commands">4.5. Asynchronous Commands</a></span></dt><dd><dl><dt><span class="section"><a href="#job-status">4.5.1. Job Status</a></span></dt><dt><span class="section"><a href="#asynchronous-commands-example">4.5.2. Example</a></span></dt></dl></dd></dl></dd><dt><span class="chapter"><a href="#working-with-usage-data">5. Working With Usage Data</a></span></dt><dd><dl><dt><span class="section"><a href="#usage-record-format">5.1. Usage Record Format</a></span></dt><dd><dl><dt><span class="section"><a href="#virtual-machine-usage-record-format">5.1.1. Virtual Machine Usage Record Format</a></span></dt><dt><span class="section"><a href="#network-usage-record-format">5.1.2. Network Usage Record Format</a></span></dt><dt><span class="section"><a href="#ipaddress-usage-record-format">5.1.3. IP Address Usage Record Format</a></span></dt><dt><span class="section"><a href="#disk-volume-usage-record-format">5.1.4. Disk Volume Usage Record Format</a></span></dt><dt><span class="section"><a href="#template-iso-snapshot-usage-record-format">5.1.5. Template, ISO, and Snapshot Usage Record Format</a></span></dt><dt><span class="section"><a href="#loadbalancer-policy-port-forwarding-rule-usage-record-format">5.1.6. Load Balancer Policy or Port Forwarding Rule Usage Record Format</a></span></dt><dt><span class="section"><a href="#network-offering-usage-record-format">5.1.7. Network Offering Usage Record Format</a></span></dt><dt><span class="section"><a href="#VPN-user-usage-record-format">5.1.8. VPN User Usage Record Format</a></span></dt></dl></dd><dt><span class="section"><a href="#usage-types">5.2. Usage Types</a></span></dt><dt><span class="section"><a href="#example-response-from-listUsageRecords">5.3. Example response from listUsageRecords</a></span></dt><dt><span class="section"><a href="#dates-in-usage-record">5.4. Dates in the Usage Record</a></span></dt></dl></dd><dt><span class="appendix"><a href="#event-types">A. Event Types</a></span></dt><dt><span class="appendix"><a href="#alerts">B. Alerts</a></span></dt><dt><span class="appendix"><a href="#time-zones">C. Time Zones</a></span></dt><dt><span class="appendix"><a href="#appe-cloudstack-Revision_History">D. Revision History</a></span></dt></dl></div><div xml:lang="en-US" class="chapter" id="concepts" lang="en-US"><div class="titlepage"><div><div><h1 class="title">Chapter 1. Concepts</h1></div></div></div><div class="toc"><dl class="toc"><dt><span class="section"><a href="#whatis">1.1. What Is CloudStack?</a></span></dt><dt><span class="section"><a href="#feature-overview">1.2. What Can CloudStack Do?</a></span></dt><dt><span class="section"><a href="#deployment-architecture-overview">1.3. Deployment Architecture Overview</a></span></dt><dd><dl><dt><span class="section"><a href="#management-server-overview">1.3.1. Management Server Overview</a></span></dt><dt><span class="section"><a href="#cloud-infrastructure-overview">1.3.2. Cloud Infrastructure Overview</a></span></dt><dt><span class="section"><a href="#networking-overview">1.3.3. Networking Overview</a></span></dt></dl></dd></dl></div><div xml:lang="en-US" class="section" id="whatis" lang="en-US"><div class="titlepage"><div><div><h2 class="title">1.1. What Is CloudStack?</h2></div></div></div><div class="para">
		CloudStack is an open source software platform that pools computing resources to build public, private, and hybrid Infrastructure as a Service (IaaS) clouds. CloudStack manages the network, storage, and compute nodes that make up a cloud infrastructure. Use CloudStack to deploy, manage, and configure cloud computing environments.
	</div><div class="para">
		Typical users are service providers and enterprises. With CloudStack, you can:
	</div><div class="itemizedlist"><ul><li class="listitem"><div class="para">
				Set up an on-demand, elastic cloud computing service. Service providers can sell self service virtual machine instances, storage volumes, and networking configurations over the Internet.
			</div></li><li class="listitem"><div class="para">
				Set up an on-premise private cloud for use by employees. Rather than managing virtual machines in the same way as physical machines, with CloudStack an enterprise can offer self-service virtual machines to users without involving IT departments.
			</div></li></ul></div><div class="mediaobject"><img src="./images/1000-foot-view.png" width="444" alt="1000-foot-view.png: Overview of CloudStack" /></div></div><div xml:lang="en-US" class="section" id="feature-overview" lang="en-US"><div class="titlepage"><div><div><h2 class="title">1.2. What Can CloudStack Do?</h2></div></div></div><div class="para">
		<span class="bold bold"><strong>Multiple Hypervisor Support</strong></span>
	</div><div class="para">
		CloudStack works with a variety of hypervisors, and a single cloud deployment can contain multiple hypervisor implementations. The current release of CloudStack supports pre-packaged enterprise solutions like Citrix XenServer and VMware vSphere, as well as KVM or Xen running on Ubuntu or CentOS.
	</div><div class="para">
		<span class="bold bold"><strong>Massively Scalable Infrastructure Management</strong></span>
	</div><div class="para">
		CloudStack can manage tens of thousands of servers installed in multiple geographically distributed datacenters. The centralized management server scales linearly, eliminating the need for intermediate cluster-level management servers. No single component failure can cause cloud-wide outage. Periodic maintenance of the management server can be performed without affecting the functioning of virtual machines running in the cloud.
	</div><div class="para">
		<span class="bold bold"><strong>Automatic Configuration Management</strong></span>
	</div><div class="para">
		CloudStack automatically configures each guest virtual machine’s networking and storage settings.
	</div><div class="para">
		CloudStack internally manages a pool of virtual appliances to support the cloud itself. These appliances offer services such as firewalling, routing, DHCP, VPN access, console proxy, storage access, and storage replication. The extensive use of virtual appliances simplifies the installation, configuration, and ongoing management of a cloud deployment.
	</div><div class="para">
		<span class="bold bold"><strong>Graphical User Interface</strong></span>
	</div><div class="para">
		CloudStack offers an administrator's Web interface, used for provisioning and managing the cloud, as well as an end-user's Web interface, used for running VMs and managing VM templates. The UI can be customized to reflect the desired service provider or enterprise look and feel.
	</div><div class="para">
		<span class="bold bold"><strong>API and Extensibility</strong></span>
	</div><div class="para">
		CloudStack provides an API that gives programmatic access to all the management features available in the UI. The API is maintained and documented. This API enables the creation of command line tools and new user interfaces to suit particular needs. See the Developer’s Guide and API Reference, both available at <a href="http://incubator.apache.org/cloudstack/docs">Apache CloudStack Guides</a> and <a href="http://incubator.apache.org/cloudstack/docs/api">Apache CloudStack API Reference</a> respectively.
	</div><div class="para">
		The CloudStack pluggable allocation architecture allows the creation of new types of allocators for the selection of storage and Hosts. See the Allocator Implementation Guide (<a href="http://docs.cloudstack.org/CloudStack_Documentation/Allocator_Implementation_Guide">http://docs.cloudstack.org/CloudStack_Documentation/Allocator_Implementation_Guide</a>).
	</div><div class="para">
		<span class="bold bold"><strong>High Availability</strong></span>
	</div><div class="para">
		CloudStack has a number of features to increase the availability of the system. The Management Server itself may be deployed in a multi-node installation where the servers are load balanced. MySQL may be configured to use replication to provide for a manual failover in the event of database loss. For the hosts, CloudStack supports NIC bonding and the use of separate networks for storage as well as iSCSI Multipath.
	</div></div><div xml:lang="en-US" class="section" id="deployment-architecture-overview" lang="en-US"><div class="titlepage"><div><div><h2 class="title">1.3. Deployment Architecture Overview</h2></div></div></div><div class="para">
		A CloudStack installation consists of two parts: the Management Server and the cloud infrastructure that it manages. When you set up and manage a CloudStack cloud, you provision resources such as hosts, storage devices, and IP addresses into the Management Server, and the Management Server manages those resources.
	</div><div class="para">
		The minimum production installation consists of one machine running the CloudStack Management Server and another machine to act as the cloud infrastructure (in this case, a very simple infrastructure consisting of one host running hypervisor software). In its smallest deployment, a single machine can act as both the Management Server and the hypervisor host (using the KVM hypervisor).
	</div><div class="mediaobject"><img src="./images/basic-deployment.png" alt="basic-deployment.png: Basic two-machine deployment" /></div><div class="para">
		A more full-featured installation consists of a highly-available multi-node Management Server installation and up to tens of thousands of hosts using any of several advanced networking setups. For information about deployment options, see Choosing a Deployment Architecture.
	</div><div xml:lang="en-US" class="section" id="management-server-overview" lang="en-US"><div class="titlepage"><div><div><h3 class="title">1.3.1. Management Server Overview</h3></div></div></div><div class="para">
		The Management Server is the CloudStack software that manages cloud resources. By interacting with the Management Server through its UI or API, you can configure and manage your cloud infrastructure.
	</div><div class="para">
		The Management Server runs on a dedicated server or VM. It controls allocation of virtual machines to hosts and assigns storage and IP addresses to the virtual machine instances. The Management Server runs in a Tomcat container and requires a MySQL database for persistence.
	</div><div class="para">
		The machine must meet the system requirements described in System Requirements.
	</div><div class="para">
		The Management Server:
	</div><div class="itemizedlist"><ul><li class="listitem"><div class="para">
				Provides the web user interface for the administrator and a reference user interface for end users.
			</div></li><li class="listitem"><div class="para">
				Provides the APIs for CloudStack.
			</div></li><li class="listitem"><div class="para">
				Manages the assignment of guest VMs to particular hosts.
			</div></li><li class="listitem"><div class="para">
				Manages the assignment of public and private IP addresses to particular accounts.
			</div></li><li class="listitem"><div class="para">
				Manages the allocation of storage to guests as virtual disks.
			</div></li><li class="listitem"><div class="para">
				Manages snapshots, templates, and ISO images, possibly replicating them across data centers.
			</div></li><li class="listitem"><div class="para">
				Provides a single point of configuration for the cloud.
			</div></li></ul></div></div><div xml:lang="en-US" class="section" id="cloud-infrastructure-overview" lang="en-US"><div class="titlepage"><div><div><h3 class="title">1.3.2. Cloud Infrastructure Overview</h3></div></div></div><div class="para">
		The Management Server manages one or more zones (typically, datacenters) containing host computers where guest virtual machines will run. The cloud infrastructure is organized as follows:
	</div><div class="itemizedlist"><ul><li class="listitem"><div class="para">
				Zone: Typically, a zone is equivalent to a single datacenter. A zone consists of one or more pods and secondary storage.
			</div></li><li class="listitem"><div class="para">
				Pod: A pod is usually one rack of hardware that includes a layer-2 switch and one or more clusters.
			</div></li><li class="listitem"><div class="para">
				Cluster: A cluster consists of one or more hosts and primary storage.
			</div></li><li class="listitem"><div class="para">
				Host: A single compute node within a cluster. The hosts are where the actual cloud services run in the form of guest virtual machines.
			</div></li><li class="listitem"><div class="para">
				Primary storage is associated with a cluster, and it stores the disk volumes for all the VMs running on hosts in that cluster.
			</div></li><li class="listitem"><div class="para">
				Secondary storage is associated with a zone, and it stores templates, ISO images, and disk volume snapshots.
			</div></li></ul></div><div class="mediaobject"><img src="./images/infrastructure-overview.png" width="444" alt="infrastructure_overview.png: Nested organization of a zone" /></div><div class="para">
		<span class="bold bold"><strong>More Information</strong></span>
	</div><div class="para">
		For more information, see documentation on cloud infrastructure concepts.
	</div></div><div xml:lang="en-US" class="section" id="networking-overview" lang="en-US"><div class="titlepage"><div><div><h3 class="title">1.3.3. Networking Overview</h3></div></div></div><div class="para">
		CloudStack offers two types of networking scenario:
	</div><div class="itemizedlist"><ul><li class="listitem"><div class="para">
				Basic. For AWS-style networking. Provides a single network where guest isolation can be provided through layer-3 means such as security groups (IP address source filtering).
			</div></li><li class="listitem"><div class="para">
				Advanced. For more sophisticated network topologies. This network model provides the most flexibility in defining guest networks.
			</div></li></ul></div><div class="para">
		For more details, see Network Setup.
	</div></div></div></div><div xml:lang="en-US" class="chapter" id="developer-introduction" lang="en-US"><div class="titlepage"><div><div><h1 class="title">Chapter 2. Introduction for Developers</h1></div></div></div><div class="toc"><dl class="toc"><dt><span class="section"><a href="#roles">2.1. Roles</a></span></dt><dt><span class="section"><a href="#api-reference">2.2. API Reference Documentation</a></span></dt><dt><span class="section"><a href="#getting-started">2.3. Getting Started</a></span></dt></dl></div><div xml:lang="en-US" class="section" id="roles" lang="en-US"><div class="titlepage"><div><div><h2 class="title">2.1. Roles</h2></div></div></div><div class="para">
		The CloudStack API supports three access roles:
	</div><div class="orderedlist"><ol><li class="listitem"><div class="para">
				Root Admin. Access to all features of the cloud, including both virtual and physical resource management.
			</div></li><li class="listitem"><div class="para">
				Domain Admin. Access to only the virtual resources of the clouds that belong to the administrator’s domain.
			</div></li><li class="listitem"><div class="para">
				User. Access to only the features that allow management of the user’s virtual instances, storage, and network.
			</div></li></ol></div></div><div xml:lang="en-US" class="section" id="api-reference" lang="en-US"><div class="titlepage"><div><div><h2 class="title">2.2. API Reference Documentation</h2></div></div></div><div class="para">
		2.2 API Reference:
	</div><div class="para">
		<a href="http://download.cloud.com/support/downloads.html/">http://download.cloud.com/support/downloads.html/</a>
	</div><div class="para">
		3.0 API Reference:
	</div><div class="para">
		<a href="http://download.cloud.com/releases/3.0.0/api_3.0.0/TOC_Root_Admin.html/">http://download.cloud.com/releases/3.0.0/api_3.0.0/TOC_Root_Admin.html/</a>
	</div></div><div xml:lang="en-US" class="section" id="getting-started" lang="en-US"><div class="titlepage"><div><div><h2 class="title">2.3. Getting Started</h2></div></div></div><div class="para">
		To get started using the CloudStack API, you should have the following:
	</div><div class="itemizedlist"><ul><li class="listitem"><div class="para">
				URL of the CloudStack server you wish to integrate with.
			</div></li><li class="listitem"><div class="para">
				Both the API Key and Secret Key for an account. This should have been generated by the administrator of the cloud instance and given to you.
			</div></li><li class="listitem"><div class="para">
				Familiarity with HTTP GET/POST and query strings.
			</div></li><li class="listitem"><div class="para">
				Knowledge of either XML or JSON.
			</div></li><li class="listitem"><div class="para">
				Knowledge of a programming language that can generate HTTP requests; for example, Java or PHP.
			</div></li></ul></div></div></div><div xml:lang="en-US" class="chapter" id="whats-new" lang="en-US"><div class="titlepage"><div><div><h1 class="title">Chapter 3. What's New in the API?</h1></div></div></div><div class="toc"><dl class="toc"><dt><span class="section"><a href="#whats-new-in-api-4.0">3.1. What's New in the API for 4.0</a></span></dt><dd><dl><dt><span class="section"><a href="#changed-apicommands-4.0">3.1.1. Changed API Commands in 4.0.0-incubating</a></span></dt><dt><span class="section"><a href="#added-API-commands-4.0">3.1.2. Added API Commands in 4.0.0-incubating</a></span></dt></dl></dd><dt><span class="section"><a href="#whats-new-in-api-3.0">3.2. What's New in the API for 3.0</a></span></dt><dd><dl><dt><span class="section"><a href="#enabling-port-8096">3.2.1. Enabling Port 8096</a></span></dt><dt><span class="section"><a href="#stopped-vm">3.2.2. Stopped VM</a></span></dt><dt><span class="section"><a href="#change-to-behavior-of-list-commands">3.2.3. Change to Behavior of List Commands</a></span></dt><dt><span class="section"><a href="#removed-API-commands">3.2.4. Removed API commands</a></span></dt><dt><span class="section"><a href="#added-API-commands">3.2.5. Added API commands in 3.0</a></span></dt><dt><span class="section"><a href="#added-error-codes">3.2.6. Added CloudStack Error Codes</a></span></dt></dl></dd></dl></div><div class="para">
		The following describes any new major features of each CloudStack version as it applies to API usage.
	</div><div class="section" id="whats-new-in-api-4.0"><div class="titlepage"><div><div><h2 class="title">3.1. What's New in the API for 4.0</h2></div></div></div><div xml:lang="en-US" class="section" id="changed-apicommands-4.0" lang="en-US"><div class="titlepage"><div><div><h3 class="title">3.1.1. Changed API Commands in 4.0.0-incubating</h3></div></div></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">
							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">
							copyTemplate
						</div>
						 <div class="para">
							prepareTemplate
						</div>
						 <div class="para">
							registerTemplate
						</div>
						 <div class="para">
							updateTemplate
						</div>
						 <div class="para">
							createProject
						</div>
						 <div class="para">
							activateProject
						</div>
						 <div class="para">
							suspendProject
						</div>
						 <div class="para">
							updateProject
						</div>
						 <div class="para">
							listProjectAccounts
						</div>
						 <div class="para">
							createVolume
						</div>
						 <div class="para">
							migrateVolume
						</div>
						 <div class="para">
							attachVolume
						</div>
						 <div class="para">
							detachVolume
						</div>
						 <div class="para">
							uploadVolume
						</div>
						 <div class="para">
							createSecurityGroup
						</div>
						 <div class="para">
							registerIso
						</div>
						 <div class="para">
							copyIso
						</div>
						 <div class="para">
							updateIso
						</div>
						 <div class="para">
							createIpForwardingRule
						</div>
						 <div class="para">
							listIpForwardingRules
						</div>
						 <div class="para">
							createLoadBalancerRule
						</div>
						 <div class="para">
							updateLoadBalancerRule
						</div>
						 <div class="para">
							createSnapshot
						</div>

					</td><td class="" align="left">
						<div class="para">
							The commands in this list have a single new response parameter, and no other changes.
						</div>
						 <div class="para">
							New response parameter: tags(*)
						</div>
						 <div class="note"><div class="admonition_header"><h2>Note</h2></div><div class="admonition"><div class="para">
								Many other commands also have the new tags(*) parameter in addition to other changes; those commands are listed separately.
							</div></div></div>
					</td></tr><tr><td class="" align="left">
						<div class="para">
							rebootVirtualMachine
						</div>
						 <div class="para">
							attachIso
						</div>
						 <div class="para">
							detachIso
						</div>
						 <div class="para">
							listLoadBalancerRuleInstances
						</div>
						 <div class="para">
							resetPasswordForVirtualMachine
						</div>
						 <div class="para">
							changeServiceForVirtualMachine
						</div>
						 <div class="para">
							recoverVirtualMachine
						</div>
						 <div class="para">
							startVirtualMachine
						</div>
						 <div class="para">
							migrateVirtualMachine
						</div>
						 <div class="para">
							deployVirtualMachine
						</div>
						 <div class="para">
							assignVirtualMachine
						</div>
						 <div class="para">
							updateVirtualMachine
						</div>
						 <div class="para">
							restoreVirtualMachine
						</div>
						 <div class="para">
							stopVirtualMachine
						</div>
						 <div class="para">
							destroyVirtualMachine
						</div>

					</td><td class="" align="left">
						<div class="para">
							The commands in this list have two new response parameters, and no other changes.
						</div>
						 <div class="para">
							New response parameters: keypair, tags(*)
						</div>

					</td></tr><tr><td class="" align="left">
						<div class="para">
							listSecurityGroups
						</div>
						 <div class="para">
							listFirewallRules
						</div>
						 <div class="para">
							listPortForwardingRules
						</div>
						 <div class="para">
							listSnapshots
						</div>
						 <div class="para">
							listIsos
						</div>
						 <div class="para">
							listProjects
						</div>
						 <div class="para">
							listTemplates
						</div>
						 <div class="para">
							listLoadBalancerRules
						</div>

					</td><td class="" align="left">
						<div class="para">
							The commands in this list have the following new parameters, and no other changes.
						</div>
						 <div class="para">
							New request parameter: tags (optional)
						</div>
						 <div class="para">
							New response parameter: tags(*)
						</div>

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

					</td><td class="" align="left">
						<div class="para">
							The commands in this list have three new response parameters, and no other changes.
						</div>
						 <div class="para">
							New response parameters: canusefordeploy, vpcid, tags(*)
						</div>

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

					</td><td class="" align="left">
						<div class="para">
							The commands in this list have the following new parameters, and no other changes.
						</div>
						 <div class="para">
							New request parameter: localstorageenabled (optional)
						</div>
						 <div class="para">
							New response parameter: localstorageenabled
						</div>

					</td></tr><tr><td class="" align="left">
						<div class="para">
							listZones
						</div>
					</td><td class="" align="left">
						<div class="para">
							New response parameter: localstorageenabled
						</div>
					</td></tr><tr><td class="" align="left">
						<div class="para">
							rebootRouter
						</div>
						 <div class="para">
							changeServiceForRouter
						</div>
						 <div class="para">
							startRouter
						</div>
						 <div class="para">
							destroyRouter
						</div>
						 <div class="para">
							stopRouter
						</div>

					</td><td class="" align="left">
						<div class="para">
							The commands in this list have two new response parameters, and no other changes.
						</div>
						 <div class="para">
							New response parameters: vpcid, nic(*)
						</div>
					</td></tr><tr><td class="" align="left">
						<div class="para">
							updateAccount
						</div>
						 <div class="para">
							disableAccount
						</div>
						 <div class="para">
							listAccounts
						</div>
						 <div class="para">
							markDefaultZoneForAccount
						</div>
						 <div class="para">
							enableAccount
						</div>

					</td><td class="" align="left">
						<div class="para">
							The commands in this list have three new response parameters, and no other changes.
						</div>
						 <div class="para">
							New response parameters: vpcavailable, vpclimit, vpctotal
						</div>
					</td></tr><tr><td class="" align="left">
						<div class="para">
							listRouters
						</div>
					</td><td class="" align="left">
						<div class="para">
							New request parameters: forvpc (optional), vpcid (optional)
						</div>
						 <div class="para">
							New response parameters: vpcid, nic(*)
						</div>

					</td></tr><tr><td class="" align="left">
						<div class="para">
							listNetworkOfferings
						</div>
					</td><td class="" align="left">
						<div class="para">
							New request parameters: forvpc (optional)
						</div>
						 <div class="para">
							New response parameters: forvpc
						</div>

					</td></tr><tr><td class="" align="left">
						<div class="para">
							listVolumes
						</div>
					</td><td class="" align="left">
						<div class="para">
							New request parameters: details (optional), tags (optional)
						</div>
						 <div class="para">
							New response parameters: tags(*)
						</div>

					</td></tr><tr><td class="" align="left">
						<div class="para">
							addTrafficMonitor
						</div>
					</td><td class="" align="left">
						<div class="para">
							New request parameters: excludezones (optional), includezones (optional)
						</div>

					</td></tr><tr><td class="" align="left">
						<div class="para">
							createNetwork
						</div>
					</td><td class="" align="left">
						<div class="para">
							New request parameters: vpcid (optional)
						</div>
						 <div class="para">
							New response parameters: canusefordeploy, vpcid, tags(*)
						</div>

					</td></tr><tr><td class="" align="left">
						<div class="para">
							listPublicIpAddresses
						</div>
					</td><td class="" align="left">
						<div class="para">
							New request parameters: tags (optional), vpcid (optional)
						</div>
						 <div class="para">
							New response parameters: vpcid, tags(*)
						</div>

					</td></tr><tr><td class="" align="left">
						<div class="para">
							listNetworks
						</div>
					</td><td class="" align="left">
						<div class="para">
							New request parameters: canusefordeploy (optional), forvpc (optional), tags (optional), vpcid (optional)
						</div>
						 <div class="para">
							New response parameters: canusefordeploy, vpcid, tags(*)
						</div>

					</td></tr><tr><td class="" align="left">
						<div class="para">
							restartNetwork
						</div>
					</td><td class="" align="left">
						<div class="para">
							New response parameters: vpcid, tags(*)
						</div>

					</td></tr><tr><td class="" align="left">
						<div class="para">
							enableStaticNat
						</div>
					</td><td class="" align="left">
						<div class="para">
							New request parameter: networkid (optional)
						</div>

					</td></tr><tr><td class="" align="left">
						<div class="para">
							createDiskOffering
						</div>
					</td><td class="" align="left">
						<div class="para">
							New request parameter: storagetype (optional)
						</div>
						 <div class="para">
							New response parameter: storagetype
						</div>

					</td></tr><tr><td class="" align="left">
						<div class="para">
							listDiskOfferings
						</div>
					</td><td class="" align="left">
						<div class="para">
							New response parameter: storagetype
						</div>

					</td></tr><tr><td class="" align="left">
						<div class="para">
							updateDiskOffering
						</div>
					</td><td class="" align="left">
						<div class="para">
							New response parameter: storagetype
						</div>

					</td></tr><tr><td class="" align="left">
						<div class="para">
							createFirewallRule
						</div>
					</td><td class="" align="left">
						<div class="para">
							Changed request parameters: ipaddressid (old version - optional, new version - required)
						</div>
						 <div class="para">
							New response parameter: tags(*)
						</div>

					</td></tr><tr><td class="" align="left">
						<div class="para">
							listVirtualMachines
						</div>
					</td><td class="" align="left">
						<div class="para">
							New request parameters: isoid (optional), tags (optional), templateid (optional)
						</div>
						 <div class="para">
							New response parameters: keypair, tags(*)
						</div>

					</td></tr><tr><td class="" align="left">
						<div class="para">
							updateStorageNetworkIpRange
						</div>
					</td><td class="" align="left">
						<div class="para">
							New response parameters: id, endip, gateway, netmask, networkid, podid, startip, vlan, zoneid
						</div>

					</td></tr></tbody></table></div></div><div xml:lang="en-US" class="section" id="added-API-commands-4.0" lang="en-US"><div class="titlepage"><div><div><h3 class="title">3.1.2. Added API Commands in 4.0.0-incubating</h3></div></div></div><div class="itemizedlist"><ul><li class="listitem"><div class="para">
				createCounter (Adds metric counter)
			</div></li><li class="listitem"><div class="para">
				deleteCounter (Deletes a counter)
			</div></li><li class="listitem"><div class="para">
				listCounters (List the counters)
			</div></li><li class="listitem"><div class="para">
				createCondition (Creates a condition)
			</div></li><li class="listitem"><div class="para">
				deleteCondition (Removes a condition)
			</div></li><li class="listitem"><div class="para">
				listConditions (List Conditions for the specific user)
			</div></li><li class="listitem"><div class="para">
				createTags. Add tags to one or more resources. Example: 
<pre class="programlisting">command=createTags
&amp;resourceIds=1,10,12
&amp;resourceType=userVm
&amp;tags[0].key=region
&amp;tags[0].value=canada
&amp;tags[1].key=city
&amp;tags[1].value=Toronto</pre>
			</div></li><li class="listitem"><div class="para">
				deleteTags. Remove tags from one or more resources. Example: 
<pre class="programlisting">command=deleteTags
&amp;resourceIds=1,12
&amp;resourceType=Snapshot
&amp;tags[0].key=city</pre>
			</div></li><li class="listitem"><div class="para">
				listTags (Show currently defined resource tags)
			</div></li><li class="listitem"><div class="para">
				createVPC (Creates a VPC)
			</div></li><li class="listitem"><div class="para">
				listVPCs (Lists VPCs)
			</div></li><li class="listitem"><div class="para">
				deleteVPC (Deletes a VPC)
			</div></li><li class="listitem"><div class="para">
				updateVPC (Updates a VPC)
			</div></li><li class="listitem"><div class="para">
				restartVPC (Restarts a VPC)
			</div></li><li class="listitem"><div class="para">
				createVPCOffering (Creates VPC offering)
			</div></li><li class="listitem"><div class="para">
				updateVPCOffering (Updates VPC offering)
			</div></li><li class="listitem"><div class="para">
				deleteVPCOffering (Deletes VPC offering)
			</div></li><li class="listitem"><div class="para">
				listVPCOfferings (Lists VPC offerings)
			</div></li><li class="listitem"><div class="para">
				createPrivateGateway (Creates a private gateway)
			</div></li><li class="listitem"><div class="para">
				listPrivateGateways (List private gateways)
			</div></li><li class="listitem"><div class="para">
				deletePrivateGateway (Deletes a Private gateway)
			</div></li><li class="listitem"><div class="para">
				createNetworkACL (Creates a ACL rule the given network (the network has to belong to VPC))
			</div></li><li class="listitem"><div class="para">
				deleteNetworkACL (Deletes a Network ACL)
			</div></li><li class="listitem"><div class="para">
				listNetworkACLs (Lists all network ACLs)
			</div></li><li class="listitem"><div class="para">
				createStaticRoute (Creates a static route)
			</div></li><li class="listitem"><div class="para">
				deleteStaticRoute (Deletes a static route)
			</div></li><li class="listitem"><div class="para">
				listStaticRoutes (Lists all static routes)
			</div></li><li class="listitem"><div class="para">
				createVpnCustomerGateway (Creates site to site vpn customer gateway)
			</div></li><li class="listitem"><div class="para">
				createVpnGateway (Creates site to site vpn local gateway)
			</div></li><li class="listitem"><div class="para">
				createVpnConnection (Create site to site vpn connection)
			</div></li><li class="listitem"><div class="para">
				deleteVpnCustomerGateway (Delete site to site vpn customer gateway)
			</div></li><li class="listitem"><div class="para">
				deleteVpnGateway (Delete site to site vpn gateway)
			</div></li><li class="listitem"><div class="para">
				deleteVpnConnection (Delete site to site vpn connection)
			</div></li><li class="listitem"><div class="para">
				updateVpnCustomerGateway (Update site to site vpn customer gateway)
			</div></li><li class="listitem"><div class="para">
				resetVpnConnection (Reset site to site vpn connection)
			</div></li><li class="listitem"><div class="para">
				listVpnCustomerGateways (Lists site to site vpn customer gateways)
			</div></li><li class="listitem"><div class="para">
				listVpnGateways (Lists site 2 site vpn gateways)
			</div></li><li class="listitem"><div class="para">
				listVpnConnections (Lists site to site vpn connection gateways)
			</div></li><li class="listitem"><div class="para">
				enableCiscoNexusVSM (Enables Nexus 1000v dvSwitch in CloudStack.)
			</div></li><li class="listitem"><div class="para">
				disableCiscoNexusVSM (Disables Nexus 1000v dvSwitch in CloudStack.)
			</div></li><li class="listitem"><div class="para">
				deleteCiscoNexusVSM (Deletes Nexus 1000v dvSwitch in CloudStack.)
			</div></li><li class="listitem"><div class="para">
				listCiscoNexusVSMs (Lists the control VLAN ID, packet VLAN ID, and data VLAN ID, as well as the IP address of the Nexus 1000v dvSwitch.)
			</div></li></ul></div></div></div><div class="section" id="whats-new-in-api-3.0"><div class="titlepage"><div><div><h2 class="title">3.2. What's New in the API for 3.0</h2></div></div></div><div xml:lang="en-US" class="section" id="enabling-port-8096" lang="en-US"><div class="titlepage"><div><div><h3 class="title">3.2.1. Enabling Port 8096</h3></div></div></div><div class="para">
		Port 8096, which allows API calls without authentication, is closed and disabled by default on any fresh 3.0.1 installations. You can enable 8096 (or another port) for this purpose as follows:
	</div><div class="orderedlist"><ol><li class="listitem"><div class="para">
				Ensure that the first Management Server is installed and running.
			</div></li><li class="listitem"><div class="para">
				Set the global configuration parameter integration.api.port to the desired port.
			</div></li><li class="listitem"><div class="para">
				Restart the Management Server.
			</div></li><li class="listitem"><div class="para">
				On the Management Server host machine, create an iptables rule allowing access to that port.
			</div></li></ol></div></div><div xml:lang="en-US" class="section" id="stopped-vm" lang="en-US"><div class="titlepage"><div><div><h3 class="title">3.2.2. Stopped VM</h3></div></div></div><div class="para">
		CloudStack now supports creating a VM without starting it. You can determine whether the VM needs to be started as part of the VM deployment. A VM can now be deployed in two ways: create and start a VM (the default method); or create a VM and leave it in the stopped state.
	</div><div class="para">
		A new request parameter, startVM, is introduced in the deployVm API to support the stopped VM feature.
	</div><div class="para">
		The possible values are:
	</div><div class="itemizedlist"><ul><li class="listitem"><div class="para">
				true - The VM starts as a part of the VM deployment.
			</div></li><li class="listitem"><div class="para">
				false - The VM is left in the stopped state at the end of the VM deployment.
			</div></li></ul></div><div class="para">
		The default value is true.
	</div></div><div xml:lang="en-US" class="section" id="change-to-behavior-of-list-commands" lang="en-US"><div class="titlepage"><div><div><h3 class="title">3.2.3. Change to Behavior of List Commands</h3></div></div></div><div class="para">
		There was a major change in how our List* API commands work in CloudStack 3.0 compared to 2.2.x. The rules below apply only for managed resources – those that belong to an account, domain, or project. They are irrelevant for the List* commands displaying unmanaged (system) resources, such as hosts, clusters, and external network resources.
	</div><div class="para">
		When no parameters are passed in to the call, the caller sees only resources owned by the caller (even when the caller is the administrator). Previously, the administrator saw everyone else's resources by default.
	</div><div class="para">
		When accountName and domainId are passed in:
	</div><div class="itemizedlist"><ul><li class="listitem"><div class="para">
				The caller sees the resources dedicated to the account specified.
			</div></li><li class="listitem"><div class="para">
				If the call is executed by a regular user, the user is authorized to specify only the user's own account and domainId.
			</div></li><li class="listitem"><div class="para">
				If the caller is a domain administrator, CloudStack performs an authorization check to see whether the caller is permitted to view resources for the given account and domainId.
			</div></li></ul></div><div class="para">
		When projectId is passed in, only resources belonging to that project are listed.
	</div><div class="para">
		When domainId is passed in, the call returns only resources belonging to the domain specified. To see the resources of subdomains, use the parameter isRecursive=true. Again, the regular user can see only resources owned by that user, the root administrator can list anything, and a domain administrator is authorized to see only resources of the administrator's own domain and subdomains.
	</div><div class="para">
		To see all resources the caller is authorized to see, except for Project resources, use the parameter listAll=true.
	</div><div class="para">
		To see all Project resources the caller is authorized to see, use the parameter projectId=-1.
	</div><div class="para">
		There is one API command that doesn't fall under the rules above completely: the listTemplates command. This command has its own flags defining the list rules:
	</div><div class="informaltable"><table border="1"><colgroup><col align="left" class="c1" width="50%" /><col align="left" class="c2" width="50%" /></colgroup><thead><tr><th class="" align="left">
						<div class="para">
							listTemplates Flag
						</div>
					</th><th class="" align="left">
						<div class="para">
							Description
						</div>
					</th></tr></thead><tbody><tr><td class="" align="left">
						<div class="para">
							featured
						</div>
					</td><td class="" align="left">
						<div class="para">
							Returns templates that have been marked as featured and public.
						</div>
					</td></tr><tr><td class="" align="left">
						<div class="para">
							self
						</div>
					</td><td class="" align="left">
						<div class="para">
							Returns templates that have been registered or created by the calling user.
						</div>
					</td></tr><tr><td class="" align="left">
						<div class="para">
							selfexecutable
						</div>
					</td><td class="" align="left">
						<div class="para">
							Same as self, but only returns templates that are ready to be deployed with.
						</div>
					</td></tr><tr><td class="" align="left">
						<div class="para">
							sharedexecutable
						</div>
					</td><td class="" align="left">
						<div class="para">
							Ready templates that have been granted to the calling user by another user.
						</div>
					</td></tr><tr><td class="" align="left">
						<div class="para">
							executable
						</div>
					</td><td class="" align="left">
						<div class="para">
							Templates that are owned by the calling user, or public templates, that can be used to deploy a new VM.
						</div>
					</td></tr><tr><td class="" align="left">
						<div class="para">
							community
						</div>
					</td><td class="" align="left">
						<div class="para">
							Returns templates that have been marked as public but not featured.
						</div>
					</td></tr><tr><td class="" align="left">
						<div class="para">
							all
						</div>
					</td><td class="" align="left">
						<div class="para">
							Returns all templates (only usable by admins).
						</div>
					</td></tr></tbody></table></div><div class="para">
		The CloudStack UI on a general view will display all resources that the logged-in user is authorized to see, except for project resources. To see the project resources, select the project view.
	</div></div><div xml:lang="en-US" class="section" id="removed-API-commands" lang="en-US"><div class="titlepage"><div><div><h3 class="title">3.2.4. Removed API commands</h3></div></div></div><div class="itemizedlist"><ul><li class="listitem"><div class="para">
				createConfiguration (Adds configuration value)
			</div></li><li class="listitem"><div class="para">
				configureSimulator (Configures simulator)
			</div></li></ul></div></div><div xml:lang="en-US" class="section" id="added-API-commands" lang="en-US"><div class="titlepage"><div><div><h3 class="title">3.2.5. Added API commands in 3.0</h3></div></div></div><div class="section" id="added-api-commands-3.0.2"><div class="titlepage"><div><div><h4 class="title">3.2.5.1. Added in 3.0.2</h4></div></div></div><div class="itemizedlist"><ul><li class="listitem"><div class="para">
					changeServiceForSystemVm
				</div><div class="para">
					Changes the service offering for a system VM (console proxy or secondary storage). The system VM must be in a "Stopped" state for this command to take effect.
				</div></li></ul></div></div><div class="section" id="added-api-commands-3.0.1"><div class="titlepage"><div><div><h4 class="title">3.2.5.2. Added in 3.0.1</h4></div></div></div><div class="itemizedlist"><ul><li class="listitem"><div class="para">
					changeServiceForSystemVm
				</div><div class="para">
					Changes the service offering for a system VM (console proxy or secondary storage). The system VM must be in a "Stopped" state for this command to take effect.
				</div></li></ul></div></div><div class="section" id="added-api-commands-3.0.0"><div class="titlepage"><div><div><h4 class="title">3.2.5.3. Added in 3.0.0</h4></div></div></div><div class="informaltable"><table border="1"><colgroup><col align="left" class="c1" width="33%" /><col align="left" class="c2" width="33%" /><col align="left" class="c3" width="33%" /></colgroup><tbody><tr><td class="" align="left">
							<div class="para">
								assignVirtualMachine (Move a user VM to another user under same domain.)
							</div>
						</td><td class="" align="left">
							<div class="para">
								restoreVirtualMachine (Restore a VM to original template or specific snapshot)
							</div>
						</td><td class="" align="left">
							<div class="para">
								createLBStickinessPolicy (Creates a Load Balancer stickiness policy )
							</div>
						</td></tr><tr><td class="" align="left">
							<div class="para">
								deleteLBStickinessPolicy (Deletes a LB stickiness policy.)
							</div>
						</td><td class="" align="left">
							<div class="para">
								listLBStickinessPolicies (Lists LBStickiness policies.)
							</div>
						</td><td class="" align="left">
							<div class="para">
								ldapConfig (Configure the LDAP context for this site.)
							</div>
						</td></tr><tr><td class="" align="left">
							<div class="para">
								addSwift (Adds Swift.)
							</div>
						</td><td class="" align="left">
							<div class="para">
								listSwifts (List Swift.)
							</div>
						</td><td class="" align="left">
							<div class="para">
								migrateVolume (Migrate volume)
							</div>
						</td></tr><tr><td class="" align="left">
							<div class="para">
								updateStoragePool (Updates a storage pool.)
							</div>
						</td><td class="" align="left">
							<div class="para">
								authorizeSecurityGroupEgress (Authorizes a particular egress rule for this security group)
							</div>
						</td><td class="" align="left">
							<div class="para">
								revokeSecurityGroupEgress (Deletes a particular egress rule from this security group)
							</div>
						</td></tr><tr><td class="" align="left">
							<div class="para">
								createNetworkOffering (Creates a network offering.)
							</div>
						</td><td class="" align="left">
							<div class="para">
								deleteNetworkOffering (Deletes a network offering.)
							</div>
						</td><td class="" align="left">
							<div class="para">
								createProject (Creates a project)
							</div>
						</td></tr><tr><td class="" align="left">
							<div class="para">
								deleteProject (Deletes a project)
							</div>
						</td><td class="" align="left">
							<div class="para">
								updateProject (Updates a project)
							</div>
						</td><td class="" align="left">
							<div class="para">
								activateProject (Activates a project)
							</div>
						</td></tr><tr><td class="" align="left">
							<div class="para">
								suspendProject (Suspends a project)
							</div>
						</td><td class="" align="left">
							<div class="para">
								listProjects (Lists projects and provides detailed information for listed projects)
							</div>
						</td><td class="" align="left">
							<div class="para">
								addAccountToProject (Adds acoount to a project)
							</div>
						</td></tr><tr><td class="" align="left">
							<div class="para">
								deleteAccountFromProject (Deletes account from the project)
							</div>
						</td><td class="" align="left">
							<div class="para">
								listProjectAccounts (Lists project's accounts)
							</div>
						</td><td class="" align="left">
							<div class="para">
								listProjectInvitations (Lists an account's invitations to join projects)
							</div>
						</td></tr><tr><td class="" align="left">
							<div class="para">
								updateProjectInvitation (Accepts or declines project invitation)
							</div>
						</td><td class="" align="left">
							<div class="para">
								deleteProjectInvitation (Deletes a project invitation)
							</div>
						</td><td class="" align="left">
							<div class="para">
								updateHypervisorCapabilities (Updates a hypervisor capabilities.)
							</div>
						</td></tr><tr><td class="" align="left">
							<div class="para">
								listHypervisorCapabilities (Lists all hypervisor capabilities.)
							</div>
						</td><td class="" align="left">
							<div class="para">
								createPhysicalNetwork (Creates a physical network)
							</div>
						</td><td class="" align="left">
							<div class="para">
								deletePhysicalNetwork (Deletes a Physical Network.)
							</div>
						</td></tr><tr><td class="" align="left">
							<div class="para">
								listPhysicalNetworks (Lists physical networks)
							</div>
						</td><td class="" align="left">
							<div class="para">
								updatePhysicalNetwork (Updates a physical network)
							</div>
						</td><td class="" align="left">
							<div class="para">
								listSupportedNetworkServices (Lists all network services provided by CloudStack or for the given Provider.)
							</div>
						</td></tr><tr><td class="" align="left">
							<div class="para">
								addNetworkServiceProvider (Adds a network serviceProvider to a physical network)
							</div>
						</td><td class="" align="left">
							<div class="para">
								deleteNetworkServiceProvider (Deletes a Network Service Provider.)
							</div>
						</td><td class="" align="left">
							<div class="para">
								listNetworkServiceProviders (Lists network serviceproviders for a given physical network.)
							</div>
						</td></tr><tr><td class="" align="left">
							<div class="para">
								updateNetworkServiceProvider (Updates a network serviceProvider of a physical network)
							</div>
						</td><td class="" align="left">
							<div class="para">
								addTrafficType (Adds traffic type to a physical network)
							</div>
						</td><td class="" align="left">
							<div class="para">
								deleteTrafficType (Deletes traffic type of a physical network)
							</div>
						</td></tr><tr><td class="" align="left">
							<div class="para">
								listTrafficTypes (Lists traffic types of a given physical network.)
							</div>
						</td><td class="" align="left">
							<div class="para">
								updateTrafficType (Updates traffic type of a physical network)
							</div>
						</td><td class="" align="left">
							<div class="para">
								listTrafficTypeImplementors (Lists implementors of implementor of a network traffic type or implementors of all network traffic types)
							</div>
						</td></tr><tr><td class="" align="left">
							<div class="para">
								createStorageNetworkIpRange (Creates a Storage network IP range.)
							</div>
						</td><td class="" align="left">
							<div class="para">
								deleteStorageNetworkIpRange (Deletes a storage network IP Range.)
							</div>
						</td><td class="" align="left">
							<div class="para">
								listStorageNetworkIpRange (List a storage network IP range.)
							</div>
						</td></tr><tr><td class="" align="left">
							<div class="para">
								updateStorageNetworkIpRange (Update a Storage network IP range, only allowed when no IPs in this range have been allocated.)
							</div>
						</td><td class="" align="left">
							<div class="para">
								listUsageTypes (List Usage Types)
							</div>
						</td><td class="" align="left">
							<div class="para">
								addF5LoadBalancer (Adds a F5 BigIP load balancer device)
							</div>
						</td></tr><tr><td class="" align="left">
							<div class="para">
								configureF5LoadBalancer (configures a F5 load balancer device)
							</div>
						</td><td class="" align="left">
							<div class="para">
								deleteF5LoadBalancer ( delete a F5 load balancer device)
							</div>
						</td><td class="" align="left">
							<div class="para">
								listF5LoadBalancers (lists F5 load balancer devices)
							</div>
						</td></tr><tr><td class="" align="left">
							<div class="para">
								listF5LoadBalancerNetworks (lists network that are using a F5 load balancer device)
							</div>
						</td><td class="" align="left">
							<div class="para">
								addSrxFirewall (Adds a SRX firewall device)
							</div>
						</td><td class="" align="left">
							<div class="para">
								deleteSrxFirewall ( delete a SRX firewall device)
							</div>
						</td></tr><tr><td class="" align="left">
							<div class="para">
								listSrxFirewalls (lists SRX firewall devices in a physical network)
							</div>
						</td><td class="" align="left">
							<div class="para">
								listSrxFirewallNetworks (lists network that are using SRX firewall device)
							</div>
						</td><td class="" align="left">
							<div class="para">
								addNetscalerLoadBalancer (Adds a netscaler load balancer device)
							</div>
						</td></tr><tr><td class="" align="left">
							<div class="para">
								deleteNetscalerLoadBalancer ( delete a netscaler load balancer device)
							</div>
						</td><td class="" align="left">
							<div class="para">
								configureNetscalerLoadBalancer (configures a netscaler load balancer device)
							</div>
						</td><td class="" align="left">
							<div class="para">
								listNetscalerLoadBalancers (lists netscaler load balancer devices)
							</div>
						</td></tr><tr><td class="" align="left">
							<div class="para">
								listNetscalerLoadBalancerNetworks (lists network that are using a netscaler load balancer device)
							</div>
						</td><td class="" align="left">
							<div class="para">
								createVirtualRouterElement (Create a virtual router element.)
							</div>
						</td><td class="" align="left">
							<div class="para">
								configureVirtualRouterElement (Configures a virtual router element.)
							</div>
						</td></tr><tr><td class="" align="left">
							<div class="para">
								listVirtualRouterElements (Lists all available virtual router elements.)
							</div>
						</td><td class="" align="left">
							<div class="para">
							</div>
						</td><td class="" align="left">
							<div class="para">
							</div>
						</td></tr></tbody></table></div></div></div><div xml:lang="en-US" class="section" id="added-error-codes" lang="en-US"><div class="titlepage"><div><div><h3 class="title">3.2.6. Added CloudStack Error Codes</h3></div></div></div><div class="para">
		You can now find the CloudStack-specific error code in the exception response for each type of exception. The following list of error codes is added to the new class named CSExceptionErrorCode. These codes are applicable in CloudStack 3.0.3 and later versions.
	</div><div class="informaltable"><table border="1"><colgroup><col align="left" class="c1" width="33%" /><col align="left" class="c2" width="33%" /><col align="left" class="c3" width="33%" /></colgroup><tbody><tr><td class="" align="left">
						<div class="para">
							4250 : "com.cloud.utils.exception.CloudRuntimeException"
						</div>
					</td><td class="" align="left">
						<div class="para">
							4255 : "com.cloud.utils.exception.ExceptionUtil"
						</div>
					</td><td class="" align="left">
						<div class="para">
							4260 : "com.cloud.utils.exception.ExecutionException"
						</div>
					</td></tr><tr><td class="" align="left">
						<div class="para">
							4265 : "com.cloud.utils.exception.HypervisorVersionChangedException"
						</div>
					</td><td class="" align="left">
						<div class="para">
							4270 : "com.cloud.utils.exception.RuntimeCloudException"
						</div>
					</td><td class="" align="left">
						<div class="para">
							4275 : "com.cloud.exception.CloudException"
						</div>
					</td></tr><tr><td class="" align="left">
						<div class="para">
							4280 : "com.cloud.exception.AccountLimitException"
						</div>
					</td><td class="" align="left">
						<div class="para">
							4285 : "com.cloud.exception.AgentUnavailableException"
						</div>
					</td><td class="" align="left">
						<div class="para">
							4290 : "com.cloud.exception.CloudAuthenticationException"
						</div>
					</td></tr><tr><td class="" align="left">
						<div class="para">
							4295 : "com.cloud.exception.CloudExecutionException"
						</div>
					</td><td class="" align="left">
						<div class="para">
							4300 : "com.cloud.exception.ConcurrentOperationException"
						</div>
					</td><td class="" align="left">
						<div class="para">
							4305 : "com.cloud.exception.ConflictingNetworkSettingsException"
						</div>
					</td></tr><tr><td class="" align="left">
						<div class="para">
							4310 : "com.cloud.exception.DiscoveredWithErrorException"
						</div>
					</td><td class="" align="left">
						<div class="para">
							4315 : "com.cloud.exception.HAStateException"
						</div>
					</td><td class="" align="left">
						<div class="para">
							4320 : "com.cloud.exception.InsufficientAddressCapacityException"
						</div>
					</td></tr><tr><td class="" align="left">
						<div class="para">
							4325 : "com.cloud.exception.InsufficientCapacityException"
						</div>
					</td><td class="" align="left">
						<div class="para">
							4330 : "com.cloud.exception.InsufficientNetworkCapacityException"
						</div>
					</td><td class="" align="left">
						<div class="para">
							4335 : "com.cloud.exception.InsufficientServerCapacityException"
						</div>
					</td></tr><tr><td class="" align="left">
						<div class="para">
							4340 : "com.cloud.exception.InsufficientStorageCapacityException"
						</div>
					</td><td class="" align="left">
						<div class="para">
							4345 : "com.cloud.exception.InternalErrorException"
						</div>
					</td><td class="" align="left">
						<div class="para">
							4350 : "com.cloud.exception.InvalidParameterValueException"
						</div>
					</td></tr><tr><td class="" align="left">
						<div class="para">
							4355 : "com.cloud.exception.ManagementServerException"
						</div>
					</td><td class="" align="left">
						<div class="para">
							4360 : "com.cloud.exception.NetworkRuleConflictException"
						</div>
					</td><td class="" align="left">
						<div class="para">
							4365 : "com.cloud.exception.PermissionDeniedException"
						</div>
					</td></tr><tr><td class="" align="left">
						<div class="para">
							4370 : "com.cloud.exception.ResourceAllocationException"
						</div>
					</td><td class="" align="left">
						<div class="para">
							4375 : "com.cloud.exception.ResourceInUseException"
						</div>
					</td><td class="" align="left">
						<div class="para">
							4380 : "com.cloud.exception.ResourceUnavailableException"
						</div>
					</td></tr><tr><td class="" align="left">
						<div class="para">
							4385 : "com.cloud.exception.StorageUnavailableException"
						</div>
					</td><td class="" align="left">
						<div class="para">
							4390 : "com.cloud.exception.UnsupportedServiceException"
						</div>
					</td><td class="" align="left">
						<div class="para">
							4395 : "com.cloud.exception.VirtualMachineMigrationException"
						</div>
					</td></tr><tr><td class="" align="left">
						<div class="para">
							4400 : "com.cloud.exception.AccountLimitException"
						</div>
					</td><td class="" align="left">
						<div class="para">
							4405 : "com.cloud.exception.AgentUnavailableException"
						</div>
					</td><td class="" align="left">
						<div class="para">
							4410 : "com.cloud.exception.CloudAuthenticationException"
						</div>
					</td></tr><tr><td class="" align="left">
						<div class="para">
							4415 : "com.cloud.exception.CloudException"
						</div>
					</td><td class="" align="left">
						<div class="para">
							4420 : "com.cloud.exception.CloudExecutionException"
						</div>
					</td><td class="" align="left">
						<div class="para">
							4425 : "com.cloud.exception.ConcurrentOperationException"
						</div>
					</td></tr><tr><td class="" align="left">
						<div class="para">
							4430 : "com.cloud.exception.ConflictingNetworkSettingsException"
						</div>
					</td><td class="" align="left">
						<div class="para">
							4435 : "com.cloud.exception.ConnectionException"
						</div>
					</td><td class="" align="left">
						<div class="para">
							4440 : "com.cloud.exception.DiscoveredWithErrorException"
						</div>
					</td></tr><tr><td class="" align="left">
						<div class="para">
							4445 : "com.cloud.exception.DiscoveryException"
						</div>
					</td><td class="" align="left">
						<div class="para">
							4450 : "com.cloud.exception.HAStateException"
						</div>
					</td><td class="" align="left">
						<div class="para">
							4455 : "com.cloud.exception.InsufficientAddressCapacityException"
						</div>
					</td></tr><tr><td class="" align="left">
						<div class="para">
							4460 : "com.cloud.exception.InsufficientCapacityException"
						</div>
					</td><td class="" align="left">
						<div class="para">
							4465 : "com.cloud.exception.InsufficientNetworkCapacityException"
						</div>
					</td><td class="" align="left">
						<div class="para">
							4470 : "com.cloud.exception.InsufficientServerCapacityException"
						</div>
					</td></tr><tr><td class="" align="left">
						<div class="para">
							4475 : "com.cloud.exception.InsufficientStorageCapacityException"
						</div>
					</td><td class="" align="left">
						<div class="para">
							4480 : "com.cloud.exception.InsufficientVirtualNetworkCapcityException"
						</div>
					</td><td class="" align="left">
						<div class="para">
							4485 : "com.cloud.exception.InternalErrorException"
						</div>
					</td></tr><tr><td class="" align="left">
						<div class="para">
							4490 : "com.cloud.exception.InvalidParameterValueException"
						</div>
					</td><td class="" align="left">
						<div class="para">
							4495 : "com.cloud.exception.ManagementServerException"
						</div>
					</td><td class="" align="left">
						<div class="para">
							4500 : "com.cloud.exception.NetworkRuleConflictException"
						</div>
					</td></tr><tr><td class="" align="left">
						<div class="para">
							4505 : "com.cloud.exception.PermissionDeniedException"
						</div>
					</td><td class="" align="left">
						<div class="para">
							4510 : "com.cloud.exception.ResourceAllocationException"
						</div>
					</td><td class="" align="left">
						<div class="para">
							4515 : "com.cloud.exception.ResourceInUseException"
						</div>
					</td></tr><tr><td class="" align="left">
						<div class="para">
							4520 : "com.cloud.exception.ResourceUnavailableException"
						</div>
					</td><td class="" align="left">
						<div class="para">
							4525 : "com.cloud.exception.StorageUnavailableException"
						</div>
					</td><td class="" align="left">
						<div class="para">
							4530 : "com.cloud.exception.UnsupportedServiceException"
						</div>
					</td></tr><tr><td class="" align="left">
						<div class="para">
							4535 : "com.cloud.exception.VirtualMachineMigrationException"
						</div>
					</td><td class="" align="left">
						<div class="para">
							9999 : "com.cloud.api.ServerApiException"
						</div>
					</td><td class="" align="left">
						<div class="para">
						</div>
					</td></tr></tbody></table></div></div></div></div><div xml:lang="en-US" class="chapter" id="api-calls" lang="en-US"><div class="titlepage"><div><div><h1 class="title">Chapter 4. Calling the CloudStack API</h1></div></div></div><div class="toc"><dl class="toc"><dt><span class="section"><a href="#making-api-request">4.1. Making API Requests</a></span></dt><dt><span class="section"><a href="#enabling-api-call-expiration">4.2. Enabling API Call Expiration</a></span></dt><dt><span class="section"><a href="#signing-api-requests">4.3. Signing API Requests</a></span></dt><dt><span class="section"><a href="#responses">4.4. Responses</a></span></dt><dd><dl><dt><span class="section"><a href="#response-formats">4.4.1. Response Formats: XML and JSON</a></span></dt><dt><span class="section"><a href="#max-result-page-returned">4.4.2. Maximum Result Pages Returned</a></span></dt><dt><span class="section"><a href="#error-handling">4.4.3. Error Handling</a></span></dt></dl></dd><dt><span class="section"><a href="#asynchronous-commands">4.5. Asynchronous Commands</a></span></dt><dd><dl><dt><span class="section"><a href="#job-status">4.5.1. Job Status</a></span></dt><dt><span class="section"><a href="#asynchronous-commands-example">4.5.2. Example</a></span></dt></dl></dd></dl></div><div xml:lang="en-US" class="section" id="making-api-request" lang="en-US"><div class="titlepage"><div><div><h2 class="title">4.1. Making API Requests</h2></div></div></div><div class="para">
		All CloudStack API requests are submitted in the form of a HTTP GET/POST with an associated command and any parameters. A request is composed of the following whether in HTTP or HTTPS:
	</div><div class="itemizedlist"><ul><li class="listitem"><div class="para">
				CloudStack API URL: This is the web services API entry point(for example, http://www.cloud.com:8080/client/api)
			</div></li><li class="listitem"><div class="para">
				Command: The web services command you wish to execute, such as start a virtual machine or create a disk volume
			</div></li><li class="listitem"><div class="para">
				Parameters: Any additional required or optional parameters for the command
			</div></li></ul></div><div class="para">
		A sample API GET request looks like the following:
	</div><pre class="programlisting">http://localhost:8080/client/api?command=deployVirtualMachine&amp;serviceOfferingId=1&amp;diskOfferingId=1&amp;templateId=2&amp;zoneId=4&amp;apiKey=miVr6X7u6bN_sdahOBpjNejPgEsT35eXq-jB8CG20YI3yaxXcgpyuaIRmFI_EJTVwZ0nUkkJbPmY3y2bciKwFQ&amp;signature=Lxx1DM40AjcXU%2FcaiK8RAP0O1hU%3D
</pre><div class="para">
		Or in a more readable format:
	</div><pre class="programlisting">
1. http://localhost:8080/client/api
2. ?command=deployVirtualMachine
3. &amp;serviceOfferingId=1
4. &amp;diskOfferingId=1
5. &amp;templateId=2
6. &amp;zoneId=4
7. &amp;apiKey=miVr6X7u6bN_sdahOBpjNejPgEsT35eXqjB8CG20YI3yaxXcgpyuaIRmFI_EJTVwZ0nUkkJbPmY3y2bciKwFQ
8. &amp;signature=Lxx1DM40AjcXU%2FcaiK8RAP0O1hU%3D
</pre><div class="para">
		The first line is the CloudStack API URL. This is the Cloud instance you wish to interact with.
	</div><div class="para">
		The second line refers to the command you wish to execute. In our example, we are attempting to deploy a fresh new virtual machine. It is preceded by a (?) to separate itself from the CloudStack API URL.
	</div><div class="para">
		Lines 3-6 are the parameters for this given command. To see the command and its request parameters, please refer to the appropriate section in the CloudStack API documentation. Each parameter field-value pair (field=value) is preceded by an ampersand character (&amp;).
	</div><div class="para">
		Line 7 is the user API Key that uniquely identifies the account. See Signing API Requests on page 7.
	</div><div class="para">
		Line 8 is the signature hash created to authenticate the user account executing the API command. See Signing API Requests on page 7.
	</div></div><div xml:lang="en-US" class="section" id="enabling-api-call-expiration" lang="en-US"><div class="titlepage"><div><div><h2 class="title">4.2. Enabling API Call Expiration</h2></div></div></div><div class="para">
		You can set an expiry timestamp on API calls to prevent replay attacks over non-secure channels, such as HTTP. The server tracks the expiry timestamp you have specified and rejects all the subsequent API requests that come in after this validity period.
	</div><div class="para">
		To enable this feature, add the following parameters to the API request:
	</div><div class="itemizedlist"><ul><li class="listitem"><div class="para">
				signatureVersion=3: If the signatureVersion parameter is missing or is not equal to 3, the expires parameter is ignored in the API request.
			</div></li><li class="listitem"><div class="para">
				expires=YYYY-MM-DDThh:mm:ssZ: Specifies the date and time at which the signature included in the request is expired. The timestamp is expressed in the YYYY-MM-DDThh:mm:ssZ format, as specified in the ISO 8601 standard.
			</div></li></ul></div><div class="para">
		For example:
	</div><pre class="programlisting">expires=2011-10-10T12:00:00+0530</pre><div class="para">
		A sample API request with expiration is given below:
	</div><pre class="programlisting">http://&lt;IPAddress&gt;:8080/client/api?command=listZones&amp;signatureVersion=3&amp;expires=2011-10-10T12:00:00+0530&amp;apiKey=miVr6X7u6bN_sdahOBpjNejPgEsT35eXq-jB8CG20YI3yaxXcgpyuaIRmFI_EJTVwZ0nUkkJbPmY3y2bciKwFQ&amp;signature=Lxx1DM40AjcXU%2FcaiK8RAP0O1hU%3D</pre></div><div xml:lang="en-US" class="section" id="signing-api-requests" lang="en-US"><div class="titlepage"><div><div><h2 class="title">4.3. Signing API Requests</h2></div></div></div><div class="para">
		Whether you access the CloudStack API with HTTP or HTTPS, it must still be signed so that CloudStack can verify the caller has been authenticated and authorized to execute the command. Make sure that you have both the API Key and Secret Key provided by the CloudStack administrator for your account before proceeding with the signing process.
	</div><div class="para">
		To show how to sign a request, we will re-use the previous example.
	</div><pre class="programlisting">http://http://localhost:8080/client/api?command=deployVirtualMachine&amp;serviceOfferingId=1&amp;diskOfferingId=1&amp;templateId=2&amp;zoneId=4&amp;apiKey=miVr6X7u6bN_sdahOBpjNejPgEsT35eXq-jB8CG20YI3yaxXcgpyuaIRmFI_EJTVwZ0nUkkJbPmY3y2bciKwFQ&amp;signature=Lxx1DM40AjcXU%2FcaiK8RAP0O1hU%3D</pre><div class="para">
		Breaking this down, we have several distinct parts to this URL.
	</div><div class="itemizedlist"><ul><li class="listitem"><div class="para">
				Base URL: This is the base URL to the CloudStack Management Server.
			</div><pre class="programlisting">http://localhost:8080</pre></li><li class="listitem"><div class="para">
				API Path: This is the path to the API Servlet that processes the incoming requests.
			</div><pre class="programlisting">/client/api?</pre></li><li class="listitem"><div class="para">
				Command String: This part of the query string comprises of the command, its parameters, and the API Key that identifies the account.
			</div><div class="note"><div class="admonition_header"><h2>Note</h2></div><div class="admonition"><div class="para">
					As with all query string parameters of field-value pairs, the "field" component is case insensitive while all "value" values are case sensitive.
				</div></div></div><pre class="programlisting">command=deployVirtualMachine&amp;serviceOfferingId=1&amp;diskOfferingId=1&amp;templateId=2&amp;zoneId=4&amp;apiKey=miVr6X7u6bN_sdahOBpjNejPgEsT35eXq-jB8CG20YI3yaxXcgpyuaIRmFI_EJTVwZ0nUkkJbPmY3y2bciKwFQ</pre></li><li class="listitem"><div class="para">
				Signature: This is the hashed signature of the Base URL that is generated using a combination of the user’s Secret Key and the HMAC SHA-1 hashing algorithm.
			</div><div class="para">
				&amp;signature=Lxx1DM40AjcXU%2FcaiK8RAP0O1hU%3D
			</div></li></ul></div><div class="para">
		Every API request has the format Base URL+API Path+Command String+Signature.
	</div><div class="para">
		To generate the signature.
	</div><div class="orderedlist"><ol><li class="listitem"><div class="para">
				For each field-value pair (as separated by a '&amp;') in the Command String, URL encode each value so that it can be safely sent via HTTP GET.
			</div><div class="note"><div class="admonition_header"><h2>Note</h2></div><div class="admonition"><div class="para">
					Make sure all spaces are encoded as "%20" rather than "+".
				</div></div></div></li><li class="listitem"><div class="para">
				Lower case the entire Command String and sort it alphabetically via the field for each field-value pair. The result of this step would look like the following.
			</div><pre class="programlisting">apikey=mivr6x7u6bn_sdahobpjnejpgest35exq-jb8cg20yi3yaxxcgpyuairmfi_ejtvwz0nukkjbpmy3y2bcikwfq&amp;command=deployvirtualmachine&amp;diskofferingid=1&amp;serviceofferingid=1&amp;templateid=2&amp;zoneid=4</pre></li><li class="listitem"><div class="para">
				Take the sorted Command String and run it through the HMAC SHA-1 hashing algorithm (most programming languages offer a utility method to do this) with the user’s Secret Key. Base64 encode the resulting byte array in UTF-8 so that it can be safely transmitted via HTTP. The final string produced after Base64 encoding should be "Lxx1DM40AjcXU%2FcaiK8RAP0O1hU%3D".
			</div><div class="para">
				By reconstructing the final URL in the format Base URL+API Path+Command String+Signature, the final URL should look like:
			</div><pre class="programlisting">http://localhost:8080/client/api?command=deployVirtualMachine&amp;serviceOfferingId=1&amp;diskOfferingId=1&amp;templateId=2&amp;zoneId=4&amp;apiKey=miVr6X7u6bN_sdahOBpjNejPgEsT35eXq-jB8CG20YI3yaxXcgpyuaIRmFI_EJTVwZ0nUkkJbPmY3y2bciKwFQ&amp;signature=Lxx1DM40AjcXU%2FcaiK8RAP0O1hU%3D</pre></li></ol></div></div><div xml:lang="en-US" class="section" id="responses" lang="en-US"><div class="titlepage"><div><div><h2 class="title">4.4. Responses</h2></div></div></div><div xml:lang="en-US" class="section" id="response-formats" lang="en-US"><div class="titlepage"><div><div><h3 class="title">4.4.1. Response Formats: XML and JSON</h3></div></div></div><div class="para">
		CloudStack supports two formats as the response to an API call. The default response is XML. If you would like the response to be in JSON, add &amp;response=json to the Command String.
	</div><div class="para">
		Sample XML Response:
	</div><pre class="programlisting">
     &lt;listipaddressesresponse&gt; 
        &lt;allocatedipaddress&gt;
        &lt;ipaddress&gt;192.168.10.141&lt;/ipaddress&gt; 
        &lt;allocated&gt;2009-09-18T13:16:10-0700&lt;/allocated&gt; 
        &lt;zoneid&gt;4&lt;/zoneid&gt; 
            &lt;zonename&gt;WC&lt;/zonename&gt; 
            &lt;issourcenat&gt;true&lt;/issourcenat&gt; 
        &lt;/allocatedipaddress&gt;
     &lt;/listipaddressesresponse&gt;
</pre><div class="para">
		Sample JSON Response:
	</div><pre class="programlisting">
        { "listipaddressesresponse" : 
          { "allocatedipaddress" :
            [ 
              { 
                "ipaddress" : "192.168.10.141", 
                "allocated" : "2009-09-18T13:16:10-0700",
                "zoneid" : "4", 
                "zonename" : "WC", 
                "issourcenat" : "true" 
              } 
            ]
          } 
        } 
</pre></div><div xml:lang="en-US" class="section" id="max-result-page-returned" lang="en-US"><div class="titlepage"><div><div><h3 class="title">4.4.2. Maximum Result Pages Returned</h3></div></div></div><div class="para">
		For each cloud, there is a default upper limit on the number of results that any API command will return in a single page. This is to help prevent overloading the cloud servers and prevent DOS attacks. For example, if the page size limit is 500 and a command returns 10,000 results, the command will return 20 pages.
	</div><div class="para">
		The default page size limit can be different for each cloud. It is set in the global configuration parameter default.page.size. If your cloud has many users with lots of VMs, you might need to increase the value of this parameter. At the same time, be careful not to set it so high that your site can be taken down by an enormous return from an API call. For more information about how to set global configuration parameters, see "Describe Your Deployment" in the Installation Guide.
	</div><div class="para">
		To decrease the page size limit for an individual API command, override the global setting with the page and pagesize parameters, which are available in any list* command (listCapabilities, listDiskOfferings, etc.).
	</div><div class="itemizedlist"><ul><li class="listitem"><div class="para">
				Both parameters must be specified together.
			</div></li><li class="listitem"><div class="para">
				The value of the pagesize parameter must be smaller than the value of default.page.size. That is, you can not increase the number of possible items in a result page, only decrease it.
			</div></li></ul></div><div class="para">
		For syntax information on the list* commands, see the API Reference.
	</div></div><div xml:lang="en-US" class="section" id="error-handling" lang="en-US"><div class="titlepage"><div><div><h3 class="title">4.4.3. Error Handling</h3></div></div></div><div class="para">
		If an error occurs while processing an API request, the appropriate response in the format specified is returned. Each error response consists of an error code and an error text describing what possibly can go wrong. For an example error response, see page 12.
	</div><div class="para">
		An HTTP error code of 401 is always returned if API request was rejected due to bad signatures, missing API Keys, or the user simply did not have the permissions to execute the command.
	</div></div></div><div xml:lang="en-US" class="section" id="asynchronous-commands" lang="en-US"><div class="titlepage"><div><div><h2 class="title">4.5. Asynchronous Commands</h2></div></div></div><div class="para">
		Asynchronous commands were introduced in CloudStack 2.x. Commands are designated as asynchronous when they can potentially take a long period of time to complete such as creating a snapshot or disk volume. They differ from synchronous commands by the following:
	</div><div class="itemizedlist"><ul><li class="listitem"><div class="para">
				They are identified in the API Reference by an (A).
			</div></li><li class="listitem"><div class="para">
				They will immediately return a job ID to refer to the job that will be responsible in processing the command.
			</div></li><li class="listitem"><div class="para">
				If executed as a "create" resource command, it will return the resource ID as well as the job ID.
			</div><div class="para">
				You can periodically check the status of the job by making a simple API call to the command, queryAsyncJobResult and passing in the job ID.
			</div></li></ul></div><div xml:lang="en-US" class="section" id="job-status" lang="en-US"><div class="titlepage"><div><div><h3 class="title">4.5.1. Job Status</h3></div></div></div><div class="para">
		The key to using an asynchronous command is the job ID that is returned immediately once the command has been executed. With the job ID, you can periodically check the job status by making calls to queryAsyncJobResult command. The command will return three possible job status integer values:
	</div><div class="itemizedlist"><ul><li class="listitem"><div class="para">
				0 - Job is still in progress. Continue to periodically poll for any status changes.
			</div></li><li class="listitem"><div class="para">
				1 - Job has successfully completed. The job will return any successful response values associated with command that was originally executed.
			</div></li><li class="listitem"><div class="para">
				2 - Job has failed to complete. Please check the "jobresultcode" tag for failure reason code and "jobresult" for the failure reason.
			</div></li></ul></div></div><div xml:lang="en-US" class="section" id="asynchronous-commands-example" lang="en-US"><div class="titlepage"><div><div><h3 class="title">4.5.2. Example</h3></div></div></div><div class="para">
		The following shows an example of using an asynchronous command. Assume the API command:
	</div><pre class="programlisting">command=deployVirtualMachine&amp;zoneId=1&amp;serviceOfferingId=1&amp;diskOfferingId=1&amp;templateId=1
</pre><div class="para">
		CloudStack will immediately return a job ID and any other additional data.
	</div><pre class="programlisting">
         &lt;deployvirtualmachineresponse&gt; 
              &lt;jobid&gt;1&lt;/jobid&gt;
             &lt;id&gt;100&lt;/id&gt;
         &lt;/deployvirtualmachineresponse&gt;
</pre><div class="para">
		Using the job ID, you can periodically poll for the results by using the queryAsyncJobResult command.
	</div><pre class="programlisting">command=queryAsyncJobResult&amp;jobId=1</pre><div class="para">
		Three possible results could come from this query.
	</div><div class="para">
		Job is still pending:
	</div><pre class="programlisting">
         &lt;queryasyncjobresult&gt; 
              &lt;jobid&gt;1&lt;/jobid&gt;
              &lt;jobstatus&gt;0&lt;/jobstatus&gt;
              &lt;jobprocstatus&gt;1&lt;/jobprocstatus&gt;
         &lt;/queryasyncjobresult&gt;
</pre><div class="para">
		Job has succeeded:
	</div><pre class="programlisting">
            &lt;queryasyncjobresultresponse cloud-stack-version="3.0.1.6"&gt;
                  &lt;jobid&gt;1&lt;/jobid&gt;
                  &lt;jobstatus&gt;1&lt;/jobstatus&gt;
                  &lt;jobprocstatus&gt;0&lt;/jobprocstatus&gt;
                 &lt;jobresultcode&gt;0&lt;/jobresultcode&gt;
                  &lt;jobresulttype&gt;object&lt;/jobresulttype&gt;
                  &lt;jobresult&gt;
                    &lt;virtualmachine&gt;
                    &lt;id&gt;450&lt;/id&gt;
                    &lt;name&gt;i-2-450-VM&lt;/name&gt;
                    &lt;displayname&gt;i-2-450-VM&lt;/displayname&gt;
                    &lt;account&gt;admin&lt;/account&gt;
                    &lt;domainid&gt;1&lt;/domainid&gt;
                    &lt;domain&gt;ROOT&lt;/domain&gt;
                    &lt;created&gt;2011-03-10T18:20:25-0800&lt;/created&gt;
                    &lt;state&gt;Running&lt;/state&gt;
                    &lt;haenable&gt;false&lt;/haenable&gt;
                    &lt;zoneid&gt;1&lt;/zoneid&gt;
                    &lt;zonename&gt;San Jose 1&lt;/zonename&gt;
                    &lt;hostid&gt;2&lt;/hostid&gt;
                    &lt;hostname&gt;905-13.sjc.lab.vmops.com&lt;/hostname&gt;
                    &lt;templateid&gt;1&lt;/templateid&gt;
                    &lt;templatename&gt;CentOS 5.3 64bit LAMP&lt;/templatename&gt;
                    &lt;templatedisplaytext&gt;CentOS 5.3 64bit LAMP&lt;/templatedisplaytext&gt;
                    &lt;passwordenabled&gt;false&lt;/passwordenabled&gt;
                    &lt;serviceofferingid&gt;1&lt;/serviceofferingid&gt;
                    &lt;serviceofferingname&gt;Small Instance&lt;/serviceofferingname&gt;
                    &lt;cpunumber&gt;1&lt;/cpunumber&gt;
                    &lt;cpuspeed&gt;500&lt;/cpuspeed&gt;
                    &lt;memory&gt;512&lt;/memory&gt;
                    &lt;guestosid&gt;12&lt;/guestosid&gt;
                    &lt;rootdeviceid&gt;0&lt;/rootdeviceid&gt;
                    &lt;rootdevicetype&gt;NetworkFilesystem&lt;/rootdevicetype&gt;
                    &lt;nic&gt;
                      &lt;id&gt;561&lt;/id&gt;
                      &lt;networkid&gt;205&lt;/networkid&gt;
                      &lt;netmask&gt;255.255.255.0&lt;/netmask&gt;
                      &lt;gateway&gt;10.1.1.1&lt;/gateway&gt;
                      &lt;ipaddress&gt;10.1.1.225&lt;/ipaddress&gt;
                      &lt;isolationuri&gt;vlan://295&lt;/isolationuri&gt;
                      &lt;broadcasturi&gt;vlan://295&lt;/broadcasturi&gt;
                      &lt;traffictype&gt;Guest&lt;/traffictype&gt;
                      &lt;type&gt;Virtual&lt;/type&gt;
                      &lt;isdefault&gt;true&lt;/isdefault&gt;
                    &lt;/nic&gt;
                    &lt;hypervisor&gt;XenServer&lt;/hypervisor&gt;
                   &lt;/virtualmachine&gt;
                 &lt;/jobresult&gt;
            &lt;/queryasyncjobresultresponse&gt;
</pre><div class="para">
		Job has failed:
	</div><pre class="programlisting">
            &lt;queryasyncjobresult&gt;
                  &lt;jobid&gt;1&lt;/jobid&gt; 
                  &lt;jobstatus&gt;2&lt;/jobstatus&gt; 
                  &lt;jobprocstatus&gt;0&lt;/jobprocstatus&gt;
                  &lt;jobresultcode&gt;551&lt;/jobresultcode&gt;
                  &lt;jobresulttype&gt;text&lt;/jobresulttype&gt;
                  &lt;jobresult&gt;Unable to deploy virtual machine id = 100 due to not enough capacity&lt;/jobresult&gt; 
            &lt;/queryasyncjobresult&gt;
</pre></div></div></div><div xml:lang="en-US" class="chapter" id="working-with-usage-data" lang="en-US"><div class="titlepage"><div><div><h1 class="title">Chapter 5. Working With Usage Data</h1></div></div></div><div class="toc"><dl class="toc"><dt><span class="section"><a href="#usage-record-format">5.1. Usage Record Format</a></span></dt><dd><dl><dt><span class="section"><a href="#virtual-machine-usage-record-format">5.1.1. Virtual Machine Usage Record Format</a></span></dt><dt><span class="section"><a href="#network-usage-record-format">5.1.2. Network Usage Record Format</a></span></dt><dt><span class="section"><a href="#ipaddress-usage-record-format">5.1.3. IP Address Usage Record Format</a></span></dt><dt><span class="section"><a href="#disk-volume-usage-record-format">5.1.4. Disk Volume Usage Record Format</a></span></dt><dt><span class="section"><a href="#template-iso-snapshot-usage-record-format">5.1.5. Template, ISO, and Snapshot Usage Record Format</a></span></dt><dt><span class="section"><a href="#loadbalancer-policy-port-forwarding-rule-usage-record-format">5.1.6. Load Balancer Policy or Port Forwarding Rule Usage Record Format</a></span></dt><dt><span class="section"><a href="#network-offering-usage-record-format">5.1.7. Network Offering Usage Record Format</a></span></dt><dt><span class="section"><a href="#VPN-user-usage-record-format">5.1.8. VPN User Usage Record Format</a></span></dt></dl></dd><dt><span class="section"><a href="#usage-types">5.2. Usage Types</a></span></dt><dt><span class="section"><a href="#example-response-from-listUsageRecords">5.3. Example response from listUsageRecords</a></span></dt><dt><span class="section"><a href="#dates-in-usage-record">5.4. Dates in the Usage Record</a></span></dt></dl></div><div class="para">
		The Usage Server provides aggregated usage records which you can use to create billing integration for the CloudStack platform. The Usage Server works by taking data from the events log and creating summary usage records that you can access using the listUsageRecords API call.
	</div><div class="para">
		The usage records show the amount of resources, such as VM run time or template storage space, consumed by guest instances. In the special case of bare metal instances, no template storage resources are consumed, but records showing zero usage are still included in the Usage Server's output.
	</div><div class="para">
		The Usage Server runs at least once per day. It can be configured to run multiple times per day. Its behavior is controlled by configuration settings as described in the CloudStack Administration Guide.
	</div><div xml:lang="en-US" class="section" id="usage-record-format" lang="en-US"><div class="titlepage"><div><div><h2 class="title">5.1. Usage Record Format</h2></div></div></div><div xml:lang="en-US" class="section" id="virtual-machine-usage-record-format" lang="en-US"><div class="titlepage"><div><div><h3 class="title">5.1.1. Virtual Machine Usage Record Format</h3></div></div></div><div class="para">
		For running and allocated virtual machine usage, the following fields exist in a usage record:
	</div><div class="itemizedlist"><ul><li class="listitem"><div class="para">
				account – name of the account
			</div></li><li class="listitem"><div class="para">
				accountid – ID of the account
			</div></li><li class="listitem"><div class="para">
				domainid – ID of the domain in which this account resides
			</div></li><li class="listitem"><div class="para">
				zoneid – Zone where the usage occurred
			</div></li><li class="listitem"><div class="para">
				description – A string describing what the usage record is tracking
			</div></li><li class="listitem"><div class="para">
				usage – String representation of the usage, including the units of usage (e.g. 'Hrs' for VM running time)
			</div></li><li class="listitem"><div class="para">
				usagetype – A number representing the usage type (see Usage Types)
			</div></li><li class="listitem"><div class="para">
				rawusage – A number representing the actual usage in hours
			</div></li><li class="listitem"><div class="para">
				virtualMachineId – The ID of the virtual machine
			</div></li><li class="listitem"><div class="para">
				name – The name of the virtual machine
			</div></li><li class="listitem"><div class="para">
				offeringid – The ID of the service offering
			</div></li><li class="listitem"><div class="para">
				templateid – The ID of the template or the ID of the parent template. The parent template value is present when the current template was created from a volume.
			</div></li><li class="listitem"><div class="para">
				usageid – Virtual machine
			</div></li><li class="listitem"><div class="para">
				type – Hypervisor
			</div></li><li class="listitem"><div class="para">
				startdate, enddate – The range of time for which the usage is aggregated; see Dates in the Usage Record
			</div></li></ul></div></div><div xml:lang="en-US" class="section" id="network-usage-record-format" lang="en-US"><div class="titlepage"><div><div><h3 class="title">5.1.2. Network Usage Record Format</h3></div></div></div><div class="para">
		For network usage (bytes sent/received), the following fields exist in a usage record.
	</div><div class="itemizedlist"><ul><li class="listitem"><div class="para">
				account – name of the account
			</div></li><li class="listitem"><div class="para">
				accountid – ID of the account
			</div></li><li class="listitem"><div class="para">
				domainid – ID of the domain in which this account resides
			</div></li><li class="listitem"><div class="para">
				zoneid – Zone where the usage occurred
			</div></li><li class="listitem"><div class="para">
				description – A string describing what the usage record is tracking
			</div></li><li class="listitem"><div class="para">
				usagetype – A number representing the usage type (see Usage Types)
			</div></li><li class="listitem"><div class="para">
				rawusage – A number representing the actual usage in hours
			</div></li><li class="listitem"><div class="para">
				usageid – Device ID (virtual router ID or external device ID)
			</div></li><li class="listitem"><div class="para">
				type – Device type (domain router, external load balancer, etc.)
			</div></li><li class="listitem"><div class="para">
				startdate, enddate – The range of time for which the usage is aggregated; see Dates in the Usage Record
			</div></li></ul></div></div><div xml:lang="en-US" class="section" id="ipaddress-usage-record-format" lang="en-US"><div class="titlepage"><div><div><h3 class="title">5.1.3. IP Address Usage Record Format</h3></div></div></div><div class="para">
		For IP address usage the following fields exist in a usage record.
	</div><div class="itemizedlist"><ul><li class="listitem"><div class="para">
				account - name of the account
			</div></li><li class="listitem"><div class="para">
				accountid - ID of the account
			</div></li><li class="listitem"><div class="para">
				domainid - ID of the domain in which this account resides
			</div></li><li class="listitem"><div class="para">
				zoneid - Zone where the usage occurred
			</div></li><li class="listitem"><div class="para">
				description - A string describing what the usage record is tracking
			</div></li><li class="listitem"><div class="para">
				usage - String representation of the usage, including the units of usage
			</div></li><li class="listitem"><div class="para">
				usagetype - A number representing the usage type (see Usage Types)
			</div></li><li class="listitem"><div class="para">
				rawusage - A number representing the actual usage in hours
			</div></li><li class="listitem"><div class="para">
				usageid - IP address ID
			</div></li><li class="listitem"><div class="para">
				startdate, enddate - The range of time for which the usage is aggregated; see Dates in the Usage Record
			</div></li><li class="listitem"><div class="para">
				issourcenat - Whether source NAT is enabled for the IP address
			</div></li><li class="listitem"><div class="para">
				iselastic - True if the IP address is elastic.
			</div></li></ul></div></div><div xml:lang="en-US" class="section" id="disk-volume-usage-record-format" lang="en-US"><div class="titlepage"><div><div><h3 class="title">5.1.4. Disk Volume Usage Record Format</h3></div></div></div><div class="para">
		For disk volumes, the following fields exist in a usage record.
	</div><div class="itemizedlist"><ul><li class="listitem"><div class="para">
				account – name of the account
			</div></li><li class="listitem"><div class="para">
				accountid – ID of the account
			</div></li><li class="listitem"><div class="para">
				domainid – ID of the domain in which this account resides
			</div></li><li class="listitem"><div class="para">
				zoneid – Zone where the usage occurred
			</div></li><li class="listitem"><div class="para">
				description – A string describing what the usage record is tracking
			</div></li><li class="listitem"><div class="para">
				usage – String representation of the usage, including the units of usage (e.g. 'Hrs' for hours)
			</div></li><li class="listitem"><div class="para">
				usagetype – A number representing the usage type (see Usage Types)
			</div></li><li class="listitem"><div class="para">
				rawusage – A number representing the actual usage in hours
			</div></li><li class="listitem"><div class="para">
				usageid – The volume ID
			</div></li><li class="listitem"><div class="para">
				offeringid – The ID of the disk offering
			</div></li><li class="listitem"><div class="para">
				type – Hypervisor
			</div></li><li class="listitem"><div class="para">
				templateid – ROOT template ID
			</div></li><li class="listitem"><div class="para">
				size – The amount of storage allocated
			</div></li><li class="listitem"><div class="para">
				startdate, enddate – The range of time for which the usage is aggregated; see Dates in the Usage Record
			</div></li></ul></div></div><div xml:lang="en-US" class="section" id="template-iso-snapshot-usage-record-format" lang="en-US"><div class="titlepage"><div><div><h3 class="title">5.1.5. Template, ISO, and Snapshot Usage Record Format</h3></div></div></div><div class="itemizedlist"><ul><li class="listitem"><div class="para">
				account – name of the account
			</div></li><li class="listitem"><div class="para">
				accountid – ID of the account
			</div></li><li class="listitem"><div class="para">
				domainid – ID of the domain in which this account resides
			</div></li><li class="listitem"><div class="para">
				zoneid – Zone where the usage occurred
			</div></li><li class="listitem"><div class="para">
				description – A string describing what the usage record is tracking
			</div></li><li class="listitem"><div class="para">
				usage – String representation of the usage, including the units of usage (e.g. 'Hrs' for hours)
			</div></li><li class="listitem"><div class="para">
				usagetype – A number representing the usage type (see Usage Types)
			</div></li><li class="listitem"><div class="para">
				rawusage – A number representing the actual usage in hours
			</div></li><li class="listitem"><div class="para">
				usageid – The ID of the the template, ISO, or snapshot
			</div></li><li class="listitem"><div class="para">
				offeringid – The ID of the disk offering
			</div></li><li class="listitem"><div class="para">
				templateid – – Included only for templates (usage type 7). Source template ID.
			</div></li><li class="listitem"><div class="para">
				size – Size of the template, ISO, or snapshot
			</div></li><li class="listitem"><div class="para">
				startdate, enddate – The range of time for which the usage is aggregated; see Dates in the Usage Record
			</div></li></ul></div></div><div xml:lang="en-US" class="section" id="loadbalancer-policy-port-forwarding-rule-usage-record-format" lang="en-US"><div class="titlepage"><div><div><h3 class="title">5.1.6. Load Balancer Policy or Port Forwarding Rule Usage Record Format</h3></div></div></div><div class="itemizedlist"><ul><li class="listitem"><div class="para">
				account - name of the account
			</div></li><li class="listitem"><div class="para">
				accountid - ID of the account
			</div></li><li class="listitem"><div class="para">
				domainid - ID of the domain in which this account resides
			</div></li><li class="listitem"><div class="para">
				zoneid - Zone where the usage occurred
			</div></li><li class="listitem"><div class="para">
				description - A string describing what the usage record is tracking
			</div></li><li class="listitem"><div class="para">
				usage - String representation of the usage, including the units of usage (e.g. 'Hrs' for hours)
			</div></li><li class="listitem"><div class="para">
				usagetype - A number representing the usage type (see Usage Types)
			</div></li><li class="listitem"><div class="para">
				rawusage - A number representing the actual usage in hours
			</div></li><li class="listitem"><div class="para">
				usageid - ID of the load balancer policy or port forwarding rule
			</div></li><li class="listitem"><div class="para">
				usagetype - A number representing the usage type (see Usage Types)
			</div></li><li class="listitem"><div class="para">
				startdate, enddate - The range of time for which the usage is aggregated; see Dates in the Usage Record
			</div></li></ul></div></div><div xml:lang="en-US" class="section" id="network-offering-usage-record-format" lang="en-US"><div class="titlepage"><div><div><h3 class="title">5.1.7. Network Offering Usage Record Format</h3></div></div></div><div class="itemizedlist"><ul><li class="listitem"><div class="para">
				account – name of the account
			</div></li><li class="listitem"><div class="para">
				accountid – ID of the account
			</div></li><li class="listitem"><div class="para">
				domainid – ID of the domain in which this account resides
			</div></li><li class="listitem"><div class="para">
				zoneid – Zone where the usage occurred
			</div></li><li class="listitem"><div class="para">
				description – A string describing what the usage record is tracking
			</div></li><li class="listitem"><div class="para">
				usage – String representation of the usage, including the units of usage (e.g. 'Hrs' for hours)
			</div></li><li class="listitem"><div class="para">
				usagetype – A number representing the usage type (see Usage Types)
			</div></li><li class="listitem"><div class="para">
				rawusage – A number representing the actual usage in hours
			</div></li><li class="listitem"><div class="para">
				usageid – ID of the network offering
			</div></li><li class="listitem"><div class="para">
				usagetype – A number representing the usage type (see Usage Types)
			</div></li><li class="listitem"><div class="para">
				offeringid – Network offering ID
			</div></li><li class="listitem"><div class="para">
				virtualMachineId – The ID of the virtual machine
			</div></li><li class="listitem"><div class="para">
				virtualMachineId – The ID of the virtual machine
			</div></li><li class="listitem"><div class="para">
				startdate, enddate – The range of time for which the usage is aggregated; see Dates in the Usage Record
			</div></li></ul></div></div><div xml:lang="en-US" class="section" id="VPN-user-usage-record-format" lang="en-US"><div class="titlepage"><div><div><h3 class="title">5.1.8. VPN User Usage Record Format</h3></div></div></div><div class="itemizedlist"><ul><li class="listitem"><div class="para">
				account – name of the account
			</div></li><li class="listitem"><div class="para">
				accountid – ID of the account
			</div></li><li class="listitem"><div class="para">
				domainid – ID of the domain in which this account resides
			</div></li><li class="listitem"><div class="para">
				zoneid – Zone where the usage occurred
			</div></li><li class="listitem"><div class="para">
				description – A string describing what the usage record is tracking
			</div></li><li class="listitem"><div class="para">
				usage – String representation of the usage, including the units of usage (e.g. 'Hrs' for hours)
			</div></li><li class="listitem"><div class="para">
				usagetype – A number representing the usage type (see Usage Types)
			</div></li><li class="listitem"><div class="para">
				rawusage – A number representing the actual usage in hours
			</div></li><li class="listitem"><div class="para">
				usageid – VPN user ID
			</div></li><li class="listitem"><div class="para">
				usagetype – A number representing the usage type (see Usage Types)
			</div></li><li class="listitem"><div class="para">
				startdate, enddate – The range of time for which the usage is aggregated; see Dates in the Usage Record
			</div></li></ul></div></div></div><div xml:lang="en-US" class="section" id="usage-types" lang="en-US"><div class="titlepage"><div><div><h2 class="title">5.2. Usage Types</h2></div></div></div><div class="para">
		The following table shows all usage types.
	</div><div class="informaltable"><table border="1"><colgroup><col width="4cm" class="c1" /><col width="8cm" class="c2" /><col width="5cm" class="c3" /></colgroup><thead><tr><th class="">
						Type ID
					</th><th class="">
						Type Name
					</th><th class="">
						Description
					</th></tr></thead><tbody><tr><td class="">
						1
					</td><td class="">
						RUNNING_VM
					</td><td class="">
						Tracks the total running time of a VM per usage record period. If the VM is upgraded during the usage period, you will get a separate Usage Record for the new upgraded VM.
					</td></tr><tr><td class="">
						<div class="para">
							2
						</div>
					</td><td class="">
						<div class="para">
							ALLOCATED_VM
						</div>
					</td><td class="">
						<div class="para">
							Tracks the total time the VM has been created to the time when it has been destroyed. This usage type is also useful in determining usage for specific templates such as Windows-based templates.
						</div>
					</td></tr><tr><td class="">
						<div class="para">
							3
						</div>
					</td><td class="">
						<div class="para">
							IP_ADDRESS
						</div>
					</td><td class="">
						<div class="para">
							Tracks the public IP address owned by the account.
						</div>
					</td></tr><tr><td class="">
						<div class="para">
							4
						</div>
					</td><td class="">
						<div class="para">
							NETWORK_BYTES_SENT
						</div>
					</td><td class="">
						<div class="para">
							Tracks the total number of bytes sent by all the VMs for an account. Cloud.com does not currently track network traffic per VM.
						</div>
					</td></tr><tr><td class="">
						<div class="para">
							5
						</div>
					</td><td class="">
						<div class="para">
							NETWORK_BYTES_RECEIVED
						</div>
					</td><td class="">
						<div class="para">
							Tracks the total number of bytes received by all the VMs for an account. Cloud.com does not currently track network traffic per VM.
						</div>
					</td></tr><tr><td class="">
						<div class="para">
							6
						</div>
					</td><td class="">
						<div class="para">
							VOLUME
						</div>
					</td><td class="">
						<div class="para">
							Tracks the total time a disk volume has been created to the time when it has been destroyed.
						</div>
					</td></tr><tr><td class="">
						<div class="para">
							7
						</div>
					</td><td class="">
						<div class="para">
							TEMPLATE
						</div>
					</td><td class="">
						<div class="para">
							Tracks the total time a template (either created from a snapshot or uploaded to the cloud) has been created to the time it has been destroyed. The size of the template is also returned.
						</div>
					</td></tr><tr><td class="">
						<div class="para">
							8
						</div>
					</td><td class="">
						<div class="para">
							ISO
						</div>
					</td><td class="">
						<div class="para">
							Tracks the total time an ISO has been uploaded to the time it has been removed from the cloud. The size of the ISO is also returned.
						</div>
					</td></tr><tr><td class="">
						<div class="para">
							9
						</div>
					</td><td class="">
						<div class="para">
							SNAPSHOT
						</div>
					</td><td class="">
						<div class="para">
							Tracks the total time from when a snapshot has been created to the time it have been destroyed.
						</div>
					</td></tr><tr><td class="">
						<div class="para">
							11
						</div>
					</td><td class="">
						<div class="para">
							LOAD_BALANCER_POLICY
						</div>
					</td><td class="">
						<div class="para">
							Tracks the total time a load balancer policy has been created to the time it has been removed. Cloud.com does not track whether a VM has been assigned to a policy.
						</div>
					</td></tr><tr><td class="">
						<div class="para">
							12
						</div>
					</td><td class="">
						<div class="para">
							PORT_FORWARDING_RULE
						</div>
					</td><td class="">
						<div class="para">
							Tracks the time from when a port forwarding rule was created until the time it was removed.
						</div>
					</td></tr><tr><td class="">
						<div class="para">
							13
						</div>
					</td><td class="">
						<div class="para">
							NETWORK_OFFERING
						</div>
					</td><td class="">
						<div class="para">
							The time from when a network offering was assigned to a VM until it is removed.
						</div>
					</td></tr><tr><td class="">
						<div class="para">
							14
						</div>
					</td><td class="">
						<div class="para">
							VPN_USERS
						</div>
					</td><td class="">
						<div class="para">
							The time from when a VPN user is created until it is removed.
						</div>
					</td></tr></tbody></table></div></div><div xml:lang="en-US" class="section" id="example-response-from-listUsageRecords" lang="en-US"><div class="titlepage"><div><div><h2 class="title">5.3. Example response from listUsageRecords</h2></div></div></div><div class="para">
		All CloudStack API requests are submitted in the form of a HTTP GET/POST with an associated command and any parameters. A request is composed of the following whether in HTTP or HTTPS:
	</div><pre class="programlisting">
            &lt;listusagerecordsresponse&gt;
                  &lt;count&gt;1816&lt;/count&gt;
                 &lt;usagerecord&gt;
                    &lt;account&gt;user5&lt;/account&gt;
                    &lt;accountid&gt;10004&lt;/accountid&gt;
                    &lt;domainid&gt;1&lt;/domainid&gt;
                    &lt;zoneid&gt;1&lt;/zoneid&gt;
                        &lt;description&gt;i-3-4-WC running time (ServiceOffering: 1) (Template: 3)&lt;/description&gt;
                    &lt;usage&gt;2.95288 Hrs&lt;/usage&gt;
                       &lt;usagetype&gt;1&lt;/usagetype&gt;
                    &lt;rawusage&gt;2.95288&lt;/rawusage&gt;
                       &lt;virtualmachineid&gt;4&lt;/virtualmachineid&gt;
                    &lt;name&gt;i-3-4-WC&lt;/name&gt;
                       &lt;offeringid&gt;1&lt;/offeringid&gt;
                    &lt;templateid&gt;3&lt;/templateid&gt;
                    &lt;usageid&gt;245554&lt;/usageid&gt;
                    &lt;type&gt;XenServer&lt;/type&gt;
                    &lt;startdate&gt;2009-09-15T00:00:00-0700&lt;/startdate&gt;
                    &lt;enddate&gt;2009-09-18T16:14:26-0700&lt;/enddate&gt;
                  &lt;/usagerecord&gt;

               … (1,815 more usage records)
            &lt;/listusagerecordsresponse&gt;
</pre></div><div xml:lang="en-US" class="section" id="dates-in-usage-record" lang="en-US"><div class="titlepage"><div><div><h2 class="title">5.4. Dates in the Usage Record</h2></div></div></div><div class="para">
		Usage records include a start date and an end date. These dates define the period of time for which the raw usage number was calculated. If daily aggregation is used, the start date is midnight on the day in question and the end date is 23:59:59 on the day in question (with one exception; see below). A virtual machine could have been deployed at noon on that day, stopped at 6pm on that day, then started up again at 11pm. When usage is calculated on that day, there will be 7 hours of running VM usage (usage type 1) and 12 hours of allocated VM usage (usage type 2). If the same virtual machine runs for the entire next day, there will 24 hours of both running VM usage (type 1) and allocated VM usage (type 2).
	</div><div class="para">
		Note: The start date is not the time a virtual machine was started, and the end date is not the time when a virtual machine was stopped. The start and end dates give the time range within which usage was calculated.
	</div><div class="para">
		For network usage, the start date and end date again define the range in which the number of bytes transferred was calculated. If a user downloads 10 MB and uploads 1 MB in one day, there will be two records, one showing the 10 megabytes received and one showing the 1 megabyte sent.
	</div><div class="para">
		There is one case where the start date and end date do not correspond to midnight and 11:59:59pm when daily aggregation is used. This occurs only for network usage records. When the usage server has more than one day's worth of unprocessed data, the old data will be included in the aggregation period. The start date in the usage record will show the date and time of the earliest event. For other types of usage, such as IP addresses and VMs, the old unprocessed data is not included in daily aggregation.
	</div></div></div><div xml:lang="en-US" class="appendix" id="event-types" lang="en-US"><div class="titlepage"><div><div><h1 class="title">Event Types</h1></div></div></div><div class="informaltable"><table border="1"><colgroup><col align="left" class="c1" width="33%" /><col align="left" class="c2" width="33%" /><col width="33%" /></colgroup><tbody><tr><td class="" align="left">
						<div class="para">
							VM.CREATE
						</div>
					</td><td class="" align="left">
						<div class="para">
							TEMPLATE.EXTRACT
						</div>
					</td><td class="" align="left">
						<div class="para">
							SG.REVOKE.INGRESS
						</div>
					</td></tr><tr><td class="" align="left">
						<div class="para">
							VM.DESTROY
						</div>
					</td><td class="" align="left">
						<div class="para">
							TEMPLATE.UPLOAD
						</div>
					</td><td class="" align="left">
						<div class="para">
							HOST.RECONNECT
						</div>
					</td></tr><tr><td class="" align="left">
						<div class="para">
							VM.START
						</div>
					</td><td class="" align="left">
						<div class="para">
							TEMPLATE.CLEANUP
						</div>
					</td><td class="" align="left">
						<div class="para">
							MAINT.CANCEL
						</div>
					</td></tr><tr><td class="" align="left">
						<div class="para">
							VM.STOP
						</div>
					</td><td class="" align="left">
						<div class="para">
							VOLUME.CREATE
						</div>
					</td><td class="" align="left">
						<div class="para">
							MAINT.CANCEL.PS
						</div>
					</td></tr><tr><td class="" align="left">
						<div class="para">
							VM.REBOOT
						</div>
					</td><td class="" align="left">
						<div class="para">
							VOLUME.DELETE
						</div>
					</td><td class="" align="left">
						<div class="para">
							MAINT.PREPARE
						</div>
					</td></tr><tr><td class="" align="left">
						<div class="para">
							VM.UPGRADE
						</div>
					</td><td class="" align="left">
						<div class="para">
							VOLUME.ATTACH
						</div>
					</td><td class="" align="left">
						<div class="para">
							MAINT.PREPARE.PS
						</div>
					</td></tr><tr><td class="" align="left">
						<div class="para">
							VM.RESETPASSWORD
						</div>
					</td><td class="" align="left">
						<div class="para">
							VOLUME.DETACH
						</div>
					</td><td class="" align="left">
						<div class="para">
							VPN.REMOTE.ACCESS.CREATE
						</div>
					</td></tr><tr><td class="" align="left">
						<div class="para">
							ROUTER.CREATE
						</div>
					</td><td class="" align="left">
						<div class="para">
							VOLUME.UPLOAD
						</div>
					</td><td class="" align="left">
						<div class="para">
							VPN.USER.ADD
						</div>
					</td></tr><tr><td class="" align="left">
						<div class="para">
							ROUTER.DESTROY
						</div>
					</td><td class="" align="left">
						<div class="para">
							SERVICEOFFERING.CREATE
						</div>
					</td><td class="" align="left">
						<div class="para">
							VPN.USER.REMOVE
						</div>
					</td></tr><tr><td class="" align="left">
						<div class="para">
							ROUTER.START
						</div>
					</td><td class="" align="left">
						<div class="para">
							SERVICEOFFERING.UPDATE
						</div>
					</td><td class="" align="left">
						<div class="para">
							NETWORK.RESTART
						</div>
					</td></tr><tr><td class="" align="left">
						<div class="para">
							ROUTER.STOP
						</div>
					</td><td class="" align="left">
						<div class="para">
							SERVICEOFFERING.DELETE
						</div>
					</td><td class="" align="left">
						<div class="para">
							UPLOAD.CUSTOM.CERTIFICATE
						</div>
					</td></tr><tr><td class="" align="left">
						<div class="para">
							ROUTER.REBOOT
						</div>
					</td><td class="" align="left">
						<div class="para">
							DOMAIN.CREATE
						</div>
					</td><td class="" align="left">
						<div class="para">
							UPLOAD.CUSTOM.CERTIFICATE
						</div>
					</td></tr><tr><td class="" align="left">
						<div class="para">
							ROUTER.HA
						</div>
					</td><td class="" align="left">
						<div class="para">
							DOMAIN.DELETE
						</div>
					</td><td class="" align="left">
						<div class="para">
							STATICNAT.DISABLE
						</div>
					</td></tr><tr><td class="" align="left">
						<div class="para">
							PROXY.CREATE
						</div>
					</td><td class="" align="left">
						<div class="para">
							DOMAIN.UPDATE
						</div>
					</td><td class="" align="left">
						<div class="para">
							SSVM.CREATE
						</div>
					</td></tr><tr><td class="" align="left">
						<div class="para">
							PROXY.DESTROY
						</div>
					</td><td class="" align="left">
						<div class="para">
							SNAPSHOT.CREATE
						</div>
					</td><td class="" align="left">
						<div class="para">
							SSVM.DESTROY
						</div>
					</td></tr><tr><td class="" align="left">
						<div class="para">
							PROXY.START
						</div>
					</td><td class="" align="left">
						<div class="para">
							SNAPSHOT.DELETE
						</div>
					</td><td class="" align="left">
						<div class="para">
							SSVM.START
						</div>
					</td></tr><tr><td class="" align="left">
						<div class="para">
							PROXY.STOP
						</div>
					</td><td class="" align="left">
						<div class="para">
							SNAPSHOTPOLICY.CREATE
						</div>
					</td><td class="" align="left">
						<div class="para">
							SSVM.STOP
						</div>
					</td></tr><tr><td class="" align="left">
						<div class="para">
							PROXY.REBOOT
						</div>
					</td><td class="" align="left">
						<div class="para">
							SNAPSHOTPOLICY.UPDATE
						</div>
					</td><td class="" align="left">
						<div class="para">
							SSVM.REBOOT
						</div>
					</td></tr><tr><td class="" align="left">
						<div class="para">
							PROXY.HA
						</div>
					</td><td class="" align="left">
						<div class="para">
							SNAPSHOTPOLICY.DELETE
						</div>
					</td><td class="" align="left">
						<div class="para">
							SSVM.H
						</div>
					</td></tr><tr><td class="" align="left">
						<div class="para">
							VNC.CONNECT
						</div>
					</td><td class="" align="left">
						<div class="para">
							VNC.DISCONNECT
						</div>
					</td><td class="" align="left">
						<div class="para">
							NET.IPASSIGN
						</div>
					</td></tr><tr><td class="" align="left">
						<div class="para">
							NET.IPRELEASE
						</div>
					</td><td class="" align="left">
						<div class="para">
							NET.RULEADD
						</div>
					</td><td class="" align="left">
						<div class="para">
							NET.RULEDELETE
						</div>
					</td></tr><tr><td class="" align="left">
						<div class="para">
							NET.RULEMODIFY
						</div>
					</td><td class="" align="left">
						<div class="para">
							NETWORK.CREATE
						</div>
					</td><td class="" align="left">
						<div class="para">
							NETWORK.DELETE
						</div>
					</td></tr><tr><td class="" align="left">
						<div class="para">
							LB.ASSIGN.TO.RULE
						</div>
					</td><td class="" align="left">
						<div class="para">
							LB.REMOVE.FROM.RULE
						</div>
					</td><td class="" align="left">
						<div class="para">
							LB.CREATE
						</div>
					</td></tr><tr><td class="" align="left">
						<div class="para">
							LB.DELETE
						</div>
					</td><td class="" align="left">
						<div class="para">
							LB.UPDATE
						</div>
					</td><td class="" align="left">
						<div class="para">
							USER.LOGIN
						</div>
					</td></tr><tr><td class="" align="left">
						<div class="para">
							USER.LOGOUT
						</div>
					</td><td class="" align="left">
						<div class="para">
							USER.CREATE
						</div>
					</td><td class="" align="left">
						<div class="para">
							USER.DELETE
						</div>
					</td></tr><tr><td class="" align="left">
						<div class="para">
							USER.UPDATE
						</div>
					</td><td class="" align="left">
						<div class="para">
							USER.DISABLE
						</div>
					</td><td class="" align="left">
						<div class="para">
							TEMPLATE.CREATE
						</div>
					</td></tr><tr><td class="" align="left">
						<div class="para">
							TEMPLATE.DELETE
						</div>
					</td><td class="" align="left">
						<div class="para">
							TEMPLATE.UPDATE
						</div>
					</td><td class="" align="left">
						<div class="para">
							TEMPLATE.COPY
						</div>
					</td></tr><tr><td class="" align="left">
						<div class="para">
							TEMPLATE.DOWNLOAD.START
						</div>
					</td><td class="" align="left">
						<div class="para">
							TEMPLATE.DOWNLOAD.SUCCESS
						</div>
					</td><td class="" align="left">
						<div class="para">
							TEMPLATE.DOWNLOAD.FAILED
						</div>
					</td></tr><tr><td class="" align="left">
						<div class="para">
							ISO.CREATE
						</div>
					</td><td class="" align="left">
						<div class="para">
							ISO.DELETE
						</div>
					</td><td class="" align="left">
						<div class="para">
							ISO.COPY
						</div>
					</td></tr><tr><td class="" align="left">
						<div class="para">
							ISO.ATTACH
						</div>
					</td><td class="" align="left">
						<div class="para">
							ISO.DETACH
						</div>
					</td><td class="" align="left">
						<div class="para">
							ISO.EXTRACT
						</div>
					</td></tr><tr><td class="" align="left">
						<div class="para">
							ISO.UPLOAD
						</div>
					</td><td class="" align="left">
						<div class="para">
							SERVICE.OFFERING.CREATE
						</div>
					</td><td class="" align="left">
						<div class="para">
							SERVICE.OFFERING.EDIT
						</div>
					</td></tr><tr><td class="" align="left">
						<div class="para">
							SERVICE.OFFERING.DELETE
						</div>
					</td><td class="" align="left">
						<div class="para">
							DISK.OFFERING.CREATE
						</div>
					</td><td class="" align="left">
						<div class="para">
							DISK.OFFERING.EDIT
						</div>
					</td></tr><tr><td class="" align="left">
						<div class="para">
							DISK.OFFERING.DELETE
						</div>
					</td><td class="" align="left">
						<div class="para">
							NETWORK.OFFERING.CREATE
						</div>
					</td><td class="" align="left">
						<div class="para">
							NETWORK.OFFERING.EDIT
						</div>
					</td></tr><tr><td class="" align="left">
						<div class="para">
							NETWORK.OFFERING.DELETE
						</div>
					</td><td class="" align="left">
						<div class="para">
							POD.CREATE
						</div>
					</td><td class="" align="left">
						<div class="para">
							POD.EDIT
						</div>
					</td></tr><tr><td class="" align="left">
						<div class="para">
							POD.DELETE
						</div>
					</td><td class="" align="left">
						<div class="para">
							ZONE.CREATE
						</div>
					</td><td class="" align="left">
						<div class="para">
							ZONE.EDIT
						</div>
					</td></tr><tr><td class="" align="left">
						<div class="para">
							ZONE.DELETE
						</div>
					</td><td class="" align="left">
						<div class="para">
							VLAN.IP.RANGE.CREATE
						</div>
					</td><td class="" align="left">
						<div class="para">
							VLAN.IP.RANGE.DELETE
						</div>
					</td></tr><tr><td class="" align="left">
						<div class="para">
							CONFIGURATION.VALUE.EDIT
						</div>
					</td><td class="" align="left">
						<div class="para">
							SG.AUTH.INGRESS
						</div>
					</td><td class="" align="left">
						<div class="para">
						</div>
					</td></tr></tbody></table></div></div><div xml:lang="en-US" class="appendix" id="alerts" lang="en-US"><div class="titlepage"><div><div><h1 class="title">Alerts</h1></div></div></div><div class="para">
		The following is the list of alert type numbers. The current alerts can be found by calling listAlerts.
	</div><pre class="programlisting">MEMORY = 0</pre><pre class="programlisting">CPU = 1</pre><pre class="programlisting">STORAGE =2</pre><pre class="programlisting">STORAGE_ALLOCATED = 3</pre><pre class="programlisting">PUBLIC_IP = 4</pre><pre class="programlisting">PRIVATE_IP = 5</pre><pre class="programlisting">HOST = 6</pre><pre class="programlisting">USERVM = 7</pre><pre class="programlisting">DOMAIN_ROUTER = 8</pre><pre class="programlisting">CONSOLE_PROXY = 9</pre><pre class="programlisting">ROUTING = 10// lost connection to default route (to the gateway)</pre><pre class="programlisting">STORAGE_MISC = 11 // lost connection to default route (to the gateway)</pre><pre class="programlisting">USAGE_SERVER = 12 // lost connection to default route (to the gateway)</pre><pre class="programlisting">MANAGMENT_NODE = 13 // lost connection to default route (to the gateway)</pre><pre class="programlisting">DOMAIN_ROUTER_MIGRATE = 14</pre><pre class="programlisting">CONSOLE_PROXY_MIGRATE = 15</pre><pre class="programlisting">USERVM_MIGRATE = 16</pre><pre class="programlisting">VLAN = 17</pre><pre class="programlisting">SSVM = 18</pre><pre class="programlisting">USAGE_SERVER_RESULT = 19</pre><pre class="programlisting">STORAGE_DELETE = 20;</pre><pre class="programlisting">UPDATE_RESOURCE_COUNT = 21; //Generated when we fail to update the resource count</pre><pre class="programlisting">USAGE_SANITY_RESULT = 22;</pre><pre class="programlisting">DIRECT_ATTACHED_PUBLIC_IP = 23;</pre><pre class="programlisting">LOCAL_STORAGE = 24;</pre><pre class="programlisting">RESOURCE_LIMIT_EXCEEDED = 25; //Generated when the resource limit exceeds the limit. Currently used for recurring snapshots only</pre></div><div xml:lang="en-US" class="appendix" id="time-zones" lang="en-US"><div class="titlepage"><div><div><h1 class="title">Time Zones</h1></div></div></div><div class="para">
		The following time zone identifiers are accepted by CloudStack. There are several places that have a time zone as a required or optional parameter. These include scheduling recurring snapshots, creating a user, and specifying the usage time zone in the Configuration table.
	</div><div class="informaltable"><table border="1"><colgroup><col align="left" class="c1" width="33%" /><col align="left" class="c2" width="33%" /><col align="left" class="c3" width="33%" /></colgroup><tbody><tr><td class="" align="left">
						<div class="para">
							Etc/GMT+12
						</div>
					</td><td class="" align="left">
						<div class="para">
							Etc/GMT+11
						</div>
					</td><td class="" align="left">
						<div class="para">
							Pacific/Samoa
						</div>
					</td></tr><tr><td class="" align="left">
						<div class="para">
							Pacific/Honolulu
						</div>
					</td><td class="" align="left">
						<div class="para">
							US/Alaska
						</div>
					</td><td class="" align="left">
						<div class="para">
							America/Los_Angeles
						</div>
					</td></tr><tr><td class="" align="left">
						<div class="para">
							Mexico/BajaNorte
						</div>
					</td><td class="" align="left">
						<div class="para">
							US/Arizona
						</div>
					</td><td class="" align="left">
						<div class="para">
							US/Mountain
						</div>
					</td></tr><tr><td class="" align="left">
						<div class="para">
							America/Chihuahua
						</div>
					</td><td class="" align="left">
						<div class="para">
							America/Chicago
						</div>
					</td><td class="" align="left">
						<div class="para">
							America/Costa_Rica
						</div>
					</td></tr><tr><td class="" align="left">
						<div class="para">
							America/Mexico_City
						</div>
					</td><td class="" align="left">
						<div class="para">
							Canada/Saskatchewan
						</div>
					</td><td class="" align="left">
						<div class="para">
							America/Bogota
						</div>
					</td></tr><tr><td class="" align="left">
						<div class="para">
							America/New_York
						</div>
					</td><td class="" align="left">
						<div class="para">
							America/Caracas
						</div>
					</td><td class="" align="left">
						<div class="para">
							America/Asuncion
						</div>
					</td></tr><tr><td class="" align="left">
						<div class="para">
							America/Cuiaba
						</div>
					</td><td class="" align="left">
						<div class="para">
							America/Halifax
						</div>
					</td><td class="" align="left">
						<div class="para">
							America/La_Paz
						</div>
					</td></tr><tr><td class="" align="left">
						<div class="para">
							America/Santiago
						</div>
					</td><td class="" align="left">
						<div class="para">
							America/St_Johns
						</div>
					</td><td class="" align="left">
						<div class="para">
							America/Araguaina
						</div>
					</td></tr><tr><td class="" align="left">
						<div class="para">
							America/Argentina/Buenos_Aires
						</div>
					</td><td class="" align="left">
						<div class="para">
							America/Cayenne
						</div>
					</td><td class="" align="left">
						<div class="para">
							America/Godthab
						</div>
					</td></tr><tr><td class="" align="left">
						<div class="para">
							America/Montevideo
						</div>
					</td><td class="" align="left">
						<div class="para">
							Etc/GMT+2
						</div>
					</td><td class="" align="left">
						<div class="para">
							Atlantic/Azores
						</div>
					</td></tr><tr><td class="" align="left">
						<div class="para">
							Atlantic/Cape_Verde
						</div>
					</td><td class="" align="left">
						<div class="para">
							Africa/Casablanca
						</div>
					</td><td class="" align="left">
						<div class="para">
							Etc/UTC
						</div>
					</td></tr><tr><td class="" align="left">
						<div class="para">
							Atlantic/Reykjavik
						</div>
					</td><td class="" align="left">
						<div class="para">
							Europe/London
						</div>
					</td><td class="" align="left">
						<div class="para">
							CET
						</div>
					</td></tr><tr><td class="" align="left">
						<div class="para">
							Europe/Bucharest
						</div>
					</td><td class="" align="left">
						<div class="para">
							Africa/Johannesburg
						</div>
					</td><td class="" align="left">
						<div class="para">
							Asia/Beirut
						</div>
					</td></tr><tr><td class="" align="left">
						<div class="para">
							Africa/Cairo
						</div>
					</td><td class="" align="left">
						<div class="para">
							Asia/Jerusalem
						</div>
					</td><td class="" align="left">
						<div class="para">
							Europe/Minsk
						</div>
					</td></tr><tr><td class="" align="left">
						<div class="para">
							Europe/Moscow
						</div>
					</td><td class="" align="left">
						<div class="para">
							Africa/Nairobi
						</div>
					</td><td class="" align="left">
						<div class="para">
							Asia/Karachi
						</div>
					</td></tr><tr><td class="" align="left">
						<div class="para">
							Asia/Kolkata
						</div>
					</td><td class="" align="left">
						<div class="para">
							Asia/Bangkok
						</div>
					</td><td class="" align="left">
						<div class="para">
							Asia/Shanghai
						</div>
					</td></tr><tr><td class="" align="left">
						<div class="para">
							Asia/Kuala_Lumpur
						</div>
					</td><td class="" align="left">
						<div class="para">
							Australia/Perth
						</div>
					</td><td class="" align="left">
						<div class="para">
							Asia/Taipei
						</div>
					</td></tr><tr><td class="" align="left">
						<div class="para">
							Asia/Tokyo
						</div>
					</td><td class="" align="left">
						<div class="para">
							Asia/Seoul
						</div>
					</td><td class="" align="left">
						<div class="para">
							Australia/Adelaide
						</div>
					</td></tr><tr><td class="" align="left">
						<div class="para">
							Australia/Darwin
						</div>
					</td><td class="" align="left">
						<div class="para">
							Australia/Brisbane
						</div>
					</td><td class="" align="left">
						<div class="para">
							Australia/Canberra
						</div>
					</td></tr><tr><td class="" align="left">
						<div class="para">
							Pacific/Guam
						</div>
					</td><td class="" align="left">
						<div class="para">
							Pacific/Auckland
						</div>
					</td><td class="" align="left">
						<div class="para">
						</div>
					</td></tr></tbody></table></div></div><div xml:lang="en-US" class="appendix" id="appe-cloudstack-Revision_History" lang="en-US"><div class="titlepage"><div><div><h1 class="title">Revision History</h1></div></div></div><div class="para">
		<div class="revhistory"><table summary="Revision History"><tr><th align="left" valign="top" colspan="3"><strong>Revision History</strong></th></tr><tr><td align="left">Revision 0-0</td><td align="left">Tue May 29 2012</td><td align="left"><span class="author"><span class="firstname">Jessica</span> <span class="surname">Tomechak</span></span></td></tr><tr><td align="left" colspan="3">
					<table border="0" summary="Simple list" class="simplelist"><tr><td>Initial creation of book by publican</td></tr></table>

				</td></tr></table></div>

	</div></div></div></body></html>