| <!-- Licensed to the Apache Software Foundation (ASF) under one |
| or more contributor license agreements. See the NOTICE file |
| distributed with this work for additional information |
| regarding copyright ownership. The ASF licenses this file |
| to you under the Apache License, Version 2.0 (the |
| "License"); you may not use this file except in compliance |
| with the License. You may obtain a copy of the License at |
| |
| http://www.apache.org/licenses/LICENSE-2.0 |
| |
| Unless required by applicable law or agreed to in writing, |
| software distributed under the License is distributed on an |
| "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY |
| KIND, either express or implied. See the License for the |
| specific language governing permissions and limitations |
| under the License. |
| --> |
| |
| <section id="asynchronous-commands-example"> |
| <title>Example</title> |
| <para> |
| The following shows an example of using an asynchronous command. Assume the API command:</para> |
| <programlisting>command=deployVirtualMachine&zoneId=1&serviceOfferingId=1&diskOfferingId=1&templateId=1 |
| </programlisting> |
| <para>CloudStack will immediately return a job ID and any other additional data.</para> |
| <programlisting> |
| <deployvirtualmachineresponse> |
| <jobid>1</jobid> |
| <id>100</id> |
| </deployvirtualmachineresponse> |
| </programlisting> |
| <para>Using the job ID, you can periodically poll for the results by using the queryAsyncJobResult command.</para> |
| <programlisting>command=queryAsyncJobResult&jobId=1</programlisting> |
| <para>Three possible results could come from this query.</para> |
| <para>Job is still pending:</para> |
| <programlisting> |
| <queryasyncjobresult> |
| <jobid>1</jobid> |
| <jobstatus>0</jobstatus> |
| <jobprocstatus>1</jobprocstatus> |
| </queryasyncjobresult> |
| </programlisting> |
| <para>Job has succeeded:</para> |
| <programlisting> |
| <queryasyncjobresultresponse cloud-stack-version="3.0.1.6"> |
| <jobid>1</jobid> |
| <jobstatus>1</jobstatus> |
| <jobprocstatus>0</jobprocstatus> |
| <jobresultcode>0</jobresultcode> |
| <jobresulttype>object</jobresulttype> |
| <jobresult> |
| <virtualmachine> |
| <id>450</id> |
| <name>i-2-450-VM</name> |
| <displayname>i-2-450-VM</displayname> |
| <account>admin</account> |
| <domainid>1</domainid> |
| <domain>ROOT</domain> |
| <created>2011-03-10T18:20:25-0800</created> |
| <state>Running</state> |
| <haenable>false</haenable> |
| <zoneid>1</zoneid> |
| <zonename>San Jose 1</zonename> |
| <hostid>2</hostid> |
| <hostname>905-13.sjc.lab.vmops.com</hostname> |
| <templateid>1</templateid> |
| <templatename>CentOS 5.3 64bit LAMP</templatename> |
| <templatedisplaytext>CentOS 5.3 64bit LAMP</templatedisplaytext> |
| <passwordenabled>false</passwordenabled> |
| <serviceofferingid>1</serviceofferingid> |
| <serviceofferingname>Small Instance</serviceofferingname> |
| <cpunumber>1</cpunumber> |
| <cpuspeed>500</cpuspeed> |
| <memory>512</memory> |
| <guestosid>12</guestosid> |
| <rootdeviceid>0</rootdeviceid> |
| <rootdevicetype>NetworkFilesystem</rootdevicetype> |
| <nic> |
| <id>561</id> |
| <networkid>205</networkid> |
| <netmask>255.255.255.0</netmask> |
| <gateway>10.1.1.1</gateway> |
| <ipaddress>10.1.1.225</ipaddress> |
| <isolationuri>vlan://295</isolationuri> |
| <broadcasturi>vlan://295</broadcasturi> |
| <traffictype>Guest</traffictype> |
| <type>Virtual</type> |
| <isdefault>true</isdefault> |
| </nic> |
| <hypervisor>XenServer</hypervisor> |
| </virtualmachine> |
| </jobresult> |
| </queryasyncjobresultresponse> |
| </programlisting> |
| <para>Job has failed:</para> |
| <programlisting> |
| <queryasyncjobresult> |
| <jobid>1</jobid> |
| <jobstatus>2</jobstatus> |
| <jobprocstatus>0</jobprocstatus> |
| <jobresultcode>551</jobresultcode> |
| <jobresulttype>text</jobresulttype> |
| <jobresult>Unable to deploy virtual machine id = 100 due to not enough capacity</jobresult> |
| </queryasyncjobresult> |
| </programlisting> |
| </section> |