| .. 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. |
| |
| |
| Programmer Guide |
| ================ |
| |
| This guide shows how to develop CloudStack, use the API for operation |
| and integration, access the usage data and use CloudStack specific tools |
| to ease development, testing and integration. |
| |
| |
| The CloudStack API |
| ------------------ |
| |
| Getting Started |
| ~~~~~~~~~~~~~~~ |
| |
| To get started using the CloudStack API, you should have the following: |
| |
| - URL of the CloudStack server you wish to integrate with. |
| |
| - 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. |
| |
| - Familiarity with HTTP GET/POST and query strings. |
| |
| - Knowledge of either XML or JSON. |
| |
| - Knowledge of a programming language that can generate HTTP requests; |
| for example, Java or PHP. |
| |
| |
| Roles |
| ~~~~~ |
| |
| The CloudStack API supports three access roles: |
| |
| #. Root Admin. Access to all features of the cloud, including both |
| virtual and physical resource management. |
| |
| #. Domain Admin. Access to only the virtual resources of the clouds that |
| belong to the administrator’s domain. |
| |
| #. User. Access to only the features that allow management of the user’s |
| virtual instances, storage, and network. |
| |
| |
| API Reference Documentation |
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
| |
| You can find all the API reference documentation at the below site: |
| |
| `http://cloudstack.apache.org/docs/api/ |
| <http://cloudstack.apache.org/docs/api/>`__ |
| |
| |
| Making API Requests |
| ~~~~~~~~~~~~~~~~~~~~ |
| |
| 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: |
| |
| - CloudStack API URL: This is the web services API entry point(for |
| example, http://www.example.com:8080/client/api) |
| |
| - Command: The web services command you wish to execute, such as start |
| a virtual machine or create a disk volume |
| |
| - Parameters: Any additional required or optional parameters for the |
| command |
| |
| A sample API GET request looks like the following: |
| |
| .. parsed-literal:: |
| |
| http://localhost:8080/client/api?command=deployVirtualMachine&serviceOfferingId=1&diskOfferingId=1&templateId=2&zoneId=4&apiKey=miVr6X7u6bN_sdahOBpjNejPgEsT35eXq-jB8CG20YI3yaxXcgpyuaIRmFI_EJTVwZ0nUkkJbPmY3y2bciKwFQ&signature=Lxx1DM40AjcXU%2FcaiK8RAP0O1hU%3D |
| |
| Or in a more readable format: |
| |
| .. parsed-literal:: |
| |
| 1. http://localhost:8080/client/api |
| 2. ?command=deployVirtualMachine |
| 3. &serviceOfferingId=1 |
| 4. &diskOfferingId=1 |
| 5. &templateId=2 |
| 6. &zoneId=4 |
| 7. &apiKey=miVr6X7u6bN_sdahOBpjNejPgEsT35eXqjB8CG20YI3yaxXcgpyuaIRmFI_EJTVwZ0nUkkJbPmY3y2bciKwFQ |
| 8. &signature=Lxx1DM40AjcXU%2FcaiK8RAP0O1hU%3D |
| |
| The first line is the CloudStack API URL. This is the Cloud instance you |
| wish to interact with. |
| |
| 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. |
| |
| 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 (&). |
| |
| Line 7 is the user API Key that uniquely identifies the account. See |
| Signing API Requests on page 7. |
| |
| Line 8 is the signature hash created to authenticate the user account |
| executing the API command. |
| |
| |
| Signing API Requests |
| ~~~~~~~~~~~~~~~~~~~~ |
| |
| 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. |
| |
| To show how to sign a request, we will re-use the previous example. |
| |
| .. parsed-literal:: |
| |
| http://localhost:8080/client/api?command=deployVirtualMachine&serviceOfferingId=1&diskOfferingId=1&templateId=2&zoneId=4&apiKey=miVr6X7u6bN_sdahOBpjNejPgEsT35eXq-jB8CG20YI3yaxXcgpyuaIRmFI_EJTVwZ0nUkkJbPmY3y2bciKwFQ&signature=Lxx1DM40AjcXU%2FcaiK8RAP0O1hU%3D |
| |
| Breaking this down, we have several distinct parts to this URL. |
| |
| - Base URL: This is the base URL to the CloudStack Management Server. |
| |
| .. parsed-literal:: |
| |
| http://localhost:8080 |
| |
| - API Path: This is the path to the API Servlet that processes the |
| incoming requests. |
| |
| .. parsed-literal:: |
| |
| /client/api? |
| |
| - Command String: This part of the query string comprises of the |
| command, its parameters, and the API Key that identifies the account. |
| |
| .. note:: |
| As with all query string parameters of field-value pairs, the "field" |
| component is case insensitive while all "value" values are case |
| sensitive. |
| |
| .. sourcecode: bash |
| |
| command=deployVirtualMachine&serviceOfferingId=1&diskOfferingId=1&templateId=2&zoneId=4&apiKey=miVr6X7u6bN_sdahOBpjNejPgEsT35eXq-jB8CG20YI3yaxXcgpyuaIRmFI_EJTVwZ0nUkkJbPmY3y2bciKwFQ |
| |
| - Signature: This is the signature of the command string that is |
| generated using a combination of the user’s Secret Key and the HMAC |
| SHA-1 hashing algorithm. |
| |
| .. parsed-literal:: |
| |
| &signature=Lxx1DM40AjcXU%2FcaiK8RAP0O1hU%3D |
| |
| Every API request has the format Base URL+API Path+Command |
| String+Signature. |
| |
| To generate the signature. |
| |
| #. For each field-value pair (as separated by a '&') in the Command |
| String, URL encode each value so that it can be safely sent via HTTP |
| GET. |
| |
| .. note:: Make sure all spaces are encoded as "%20" rather than "+". |
| |
| #. 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. |
| |
| .. parsed-literal:: |
| |
| apikey=mivr6x7u6bn_sdahobpjnejpgest35exq-jb8cg20yi3yaxxcgpyuairmfi_ejtvwz0nukkjbpmy3y2bcikwfq&command=deployvirtualmachine&diskofferingid=1&serviceofferingid=1&templateid=2&zoneid=4 |
| |
| #. 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". |
| |
| By reconstructing the final URL in the format Base URL+API |
| Path+Command String+Signature, the final URL should look like: |
| |
| .. parsed-literal:: |
| |
| http://localhost:8080/client/api?command=deployVirtualMachine&serviceOfferingId=1&diskOfferingId=1&templateId=2&zoneId=4&apiKey=miVr6X7u6bN_sdahOBpjNejPgEsT35eXq-jB8CG20YI3yaxXcgpyuaIRmFI_EJTVwZ0nUkkJbPmY3y2bciKwFQ&signature=Lxx1DM40AjcXU%2FcaiK8RAP0O1hU%3D |
| |
| |
| How to sign an API call with Python |
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
| |
| To illustrate the procedure used to sign API calls we present a step by |
| step interactive session using Python. |
| |
| First import the required modules: |
| |
| .. parsed-literal:: |
| |
| $python |
| Python 2.7.3 (default, Nov 17 2012, 19:54:34) |
| [GCC 4.2.1 Compatible Apple Clang 4.1 ((tags/Apple/clang-421.11.66))] on darwin |
| Type "help", "copyright", "credits" or "license" for more information. |
| >>> import urllib2 |
| >>> import urllib |
| >>> import hashlib |
| >>> import hmac |
| >>> import base64 |
| |
| |
| Define the endpoint of the Cloud, the command that you want to execute |
| and the keys of the user. |
| |
| .. parsed-literal:: |
| |
| >>> baseurl='http://localhost:8080/client/api?' |
| >>> request={} |
| >>> request['command']='listUsers' |
| >>> request['response']='json' |
| >>> request['apikey']='plgWJfZK4gyS3mOMTVmjUVg-X-jlWlnfaUJ9GAbBbf9EdM-kAYMmAiLqzzq1ElZLYq_u38zCm0bewzGUdP66mg' |
| >>> secretkey='VDaACYb0LV9eNjTetIOElcVQkvJck_J_QljX_FcHRj87ZKiy0z0ty0ZsYBkoXkY9b7eq1EhwJaw7FF3akA3KBQ' |
| |
| |
| Build the request string: |
| |
| .. parsed-literal:: |
| |
| >>> request_str='&'.join(['='.join([k,urllib.quote_plus(request[k])]) for k in request.keys()]) |
| >>> request_str |
| 'apikey=plgWJfZK4gyS3mOMTVmjUVg-X-jlWlnfaUJ9GAbBbf9EdM-kAYMmAiLqzzq1ElZLYq_u38zCm0bewzGUdP66mg&command=listUsers&response=json' |
| |
| |
| Compute the signature with hmac, do a 64 bit encoding and a url |
| encoding: |
| |
| .. parsed-literal:: |
| |
| >>> sig_str='&'.join(['='.join([k.lower(),urllib.quote_plus(request[k]).lower().replace('+','%20')])for k in sorted(request.iterkeys())]) |
| >>> sig_str 'apikey=plgwjfzk4gys3momtvmjuvg-x-jlwlnfauj9gabbbf9edm-kaymmailqzzq1elzlyq_u38zcm0bewzgudp66mg&command=listusers&response=json' |
| >>> sig=hmac.new(secretkey,sig_str,hashlib.sha1) |
| >>> sig |
| <hmac.HMAC instance at 0x10d91d680> |
| >>> sig=hmac.new(secretkey,sig_str,hashlib.sha1).digest() |
| >>> sig |
| 'M:]\x0e\xaf\xfb\x8f\xf2y\xf1p\x91\x1e\x89\x8a\xa1\x05\xc4A\xdb' |
| >>> sig=base64.encodestring(hmac.new(secretkey,sig_str,hashlib.sha1).digest()) |
| >>> sig |
| 'TTpdDq/7j/J58XCRHomKoQXEQds=\n' |
| >>> sig=base64.encodestring(hmac.new(secretkey,sig_str,hashlib.sha1).digest()).strip() |
| >>> sig |
| 'TTpdDq/7j/J58XCRHomKoQXEQds=' |
| >>> sig=urllib.quote_plus(base64.encodestring(hmac.new(secretkey,sig_str,hashlib.sha1).digest()).strip()) |
| |
| |
| Finally, build the entire string and do an http GET: |
| |
| .. parsed-literal:: |
| |
| >>> req=baseurl+request_str+'&signature='+sig |
| >>> req |
| 'http://localhost:8080/client/api?apikey=plgWJfZK4gyS3mOMTVmjUVg-X-jlWlnfaUJ9GAbBbf9EdM-kAYMmAiLqzzq1ElZLYq_u38zCm0bewzGUdP66mg&command=listUsers&response=json&signature=TTpdDq%2F7j%2FJ58XCRHomKoQXEQds%3D' |
| >>> res=urllib2.urlopen(req) |
| >>> res.read() |
| '{ "listusersresponse" : { "count":3 ,"user" : [ {"id":"7ed6d5da-93b2-4545-a502-23d20b48ef2a","username":"admin","firstname":"admin","lastname":"cloud","created":"2012-07-05T12:18:27-0700","state":"enabled","account":"admin","accounttype":1,"domainid":"8a111e58-e155-4482-93ce-84efff3c7c77","domain":"ROOT","apikey":"plgWJfZK4gyS3mOMTVmjUVg-X-jlWlnfaUJ9GAbBbf9EdM-kAYMmAiLqzzq1ElZLYq_u38zCm0bewzGUdP66mg","secretkey":"VDaACYb0LV9eNjTetIOElcVQkvJck_J_QljX_FcHRj87ZKiy0z0ty0ZsYBkoXkY9b7eq1EhwJaw7FF3akA3KBQ","accountid":"7548ac03-af1d-4c1c-9064-2f3e2c0eda0d"}, {"id":"1fea6418-5576-4989-a21e-4790787bbee3","username":"runseb","firstname":"foobar","lastname":"goa","email":"joe@smith.com","created":"2013-04-10T16:52:06-0700","state":"enabled","account":"admin","accounttype":1,"domainid":"8a111e58-e155-4482-93ce-84efff3c7c77","domain":"ROOT","apikey":"Xhsb3MewjJQaXXMszRcLvQI9_NPy_UcbDj1QXikkVbDC9MDSPwWdtZ1bUY1H7JBEYTtDDLY3yuchCeW778GkBA","secretkey":"gIsgmi8C5YwxMHjX5o51pSe0kqs6JnKriw0jJBLceY5bgnfzKjL4aM6ctJX-i1ddQIHJLbLJDK9MRzsKk6xZ_w","accountid":"7548ac03-af1d-4c1c-9064-2f3e2c0eda0d"}, {"id":"52f65396-183c-4473-883f-a37e7bb93967","username":"toto","firstname":"john","lastname":"smith","email":"john@smith.com","created":"2013-04-23T04:27:22-0700","state":"enabled","account":"admin","accounttype":1,"domainid":"8a111e58-e155-4482-93ce-84efff3c7c77","domain":"ROOT","apikey":"THaA6fFWS_OmvU8od201omxFC8yKNL_Hc5ZCS77LFCJsRzSx48JyZucbUul6XYbEg-ZyXMl_wuEpECzK-wKnow","secretkey":"O5ywpqJorAsEBKR_5jEvrtGHfWL1Y_j1E4Z_iCr8OKCYcsPIOdVcfzjJQ8YqK0a5EzSpoRrjOFiLsG0hQrYnDA","accountid":"7548ac03-af1d-4c1c-9064-2f3e2c0eda0d"} ] } }' |
| |
| |
| Enabling API Call Expiration |
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
| |
| 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. |
| |
| To enable this feature, add the following parameters to the API request: |
| |
| - signatureVersion=3: If the signatureVersion parameter is missing or |
| is not equal to 3, the expires parameter is ignored in the API |
| request. |
| |
| - 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. |
| |
| For example: |
| |
| .. parsed-literal:: |
| |
| expires=2011-10-10T12:00:00+0530 |
| |
| A sample API request with expiration is given below: |
| |
| .. parsed-literal:: |
| |
| http://<IPAddress>:8080/client/api?command=listZones&signatureVersion=3&expires=2011-10-10T12:00:00+0530&apiKey=miVr6X7u6bN_sdahOBpjNejPgEsT35eXq-jB8CG20YI3yaxXcgpyuaIRmFI_EJTVwZ0nUkkJbPmY3y2bciKwFQ&signature=Lxx1DM40AjcXU%2FcaiK8RAP0O1hU%3D |
| |
| |
| Limiting the Rate of API Requests |
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
| |
| You can limit the rate at which API requests can be placed for each |
| account. This is useful to avoid malicious attacks on the Management |
| Server, prevent performance degradation, and provide fairness to all |
| accounts. |
| |
| If the number of API calls exceeds the threshold, an error message is |
| returned for any additional API calls. The caller will have to retry |
| these API calls at another time. |
| |
| |
| Configuring the API Request Rate |
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
| |
| To control the API request rate, use the following global configuration |
| settings: |
| |
| - `api.throttling.enabled` - Enable/Disable API throttling. By default, |
| this setting is false, so API throttling is not enabled. |
| |
| - `api.throttling.interval` (in seconds) - Time interval during which the |
| number of API requests is to be counted. When the interval has |
| passed, the API count is reset to 0. |
| |
| - `api.throttling.max` - Maximum number of APIs that can be placed within |
| the `api.throttling.interval` period. |
| |
| - `api.throttling.cachesize` - Cache size for storing API counters. Use a |
| value higher than the total number of accounts managed by the cloud. |
| One cache entry is needed for each account, to store the running API |
| total for that account. |
| |
| |
| Limitations on API Throttling |
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
| |
| The following limitations exist in the current implementation of this |
| feature. |
| |
| .. note:: |
| Even with these limitations, CloudStack is still able to effectively use |
| API throttling to avoid malicious attacks causing denial of service. |
| |
| - In a deployment with multiple Management Servers, the cache is not |
| synchronized across them. In this case, CloudStack might not be able |
| to ensure that only the exact desired number of API requests are |
| allowed. In the worst case, the number of API calls that might be |
| allowed is (number of Management Servers) \* (api.throttling.max). |
| |
| - The API commands resetApiLimit and getApiLimit are limited to the |
| Management Server where the API is invoked. |
| |
| |
| API Responses |
| ~~~~~~~~~~~~~ |
| |
| Response Formats: XML and JSON |
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ |
| |
| 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 `&response=json` to the Command String. |
| |
| The two response formats differ in how they handle blank fields. In |
| JSON, if there is no value for a response field, it will not appear in |
| the response. If all the fields were empty, there might be no response |
| at all. In XML, even if there is no value to be returned, an empty field |
| will be returned as a placeholder XML element. |
| |
| Sample XML Response: |
| |
| .. parsed-literal:: |
| |
| <listipaddressesresponse> |
| <allocatedipaddress> |
| <ipaddress>192.168.10.141</ipaddress> |
| <allocated>2009-09-18T13:16:10-0700</allocated> |
| <zoneid>4</zoneid> |
| <zonename>WC</zonename> |
| <issourcenat>true</issourcenat> |
| </allocatedipaddress> |
| </listipaddressesresponse> |
| |
| Sample JSON Response: |
| |
| .. parsed-literal:: |
| |
| { "listipaddressesresponse" : |
| { "allocatedipaddress" : |
| [ |
| { |
| "ipaddress" : "192.168.10.141", |
| "allocated" : "2009-09-18T13:16:10-0700", |
| "zoneid" : "4", |
| "zonename" : "WC", |
| "issourcenat" : "true" |
| } |
| ] |
| } |
| } |
| |
| |
| Maximum Result Pages Returned |
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
| |
| 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. |
| |
| 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. |
| |
| 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.). |
| |
| - Both parameters must be specified together. |
| |
| - 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. |
| |
| For syntax information on the list\* commands, see the API Reference. |
| |
| |
| Error Handling |
| ~~~~~~~~~~~~~~ |
| |
| 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. Below is a list of possible error codes: |
| |
| 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. |
| |
| 4250 : "com.cloud.utils.exception.CloudRuntimeException" |
| |
| 4255 : "com.cloud.utils.exception.ExceptionUtil" |
| |
| 4260 : "com.cloud.utils.exception.ExecutionException" |
| |
| 4265 : "com.cloud.utils.exception.HypervisorVersionChangedException" |
| |
| 4270 : "com.cloud.utils.exception.RuntimeCloudException" |
| |
| 4275 : "com.cloud.exception.CloudException" |
| |
| 4280 : "com.cloud.exception.AccountLimitException" |
| |
| 4285 : "com.cloud.exception.AgentUnavailableException" |
| |
| 4290 : "com.cloud.exception.CloudAuthenticationException" |
| |
| 4295 : "com.cloud.exception.CloudExecutionException" |
| |
| 4300 : "com.cloud.exception.ConcurrentOperationException" |
| |
| 4305 : "com.cloud.exception.ConflictingNetworkSettingsException" |
| |
| 4310 : "com.cloud.exception.DiscoveredWithErrorException" |
| |
| 4315 : "com.cloud.exception.HAStateException" |
| |
| 4320 : "com.cloud.exception.InsufficientAddressCapacityException" |
| |
| 4325 : "com.cloud.exception.InsufficientCapacityException" |
| |
| 4330 : "com.cloud.exception.InsufficientNetworkCapacityException" |
| |
| 4335 : "com.cloud.exception.InsufficientServerCapacityException" |
| |
| 4340 : "com.cloud.exception.InsufficientStorageCapacityException" |
| |
| 4345 : "com.cloud.exception.InternalErrorException" |
| |
| 4350 : "com.cloud.exception.InvalidParameterValueException" |
| |
| 4355 : "com.cloud.exception.ManagementServerException" |
| |
| 4360 : "com.cloud.exception.NetworkRuleConflictException" |
| |
| 4365 : "com.cloud.exception.PermissionDeniedException" |
| |
| 4370 : "com.cloud.exception.ResourceAllocationException" |
| |
| 4375 : "com.cloud.exception.ResourceInUseException" |
| |
| 4380 : "com.cloud.exception.ResourceUnavailableException" |
| |
| 4385 : "com.cloud.exception.StorageUnavailableException" |
| |
| 4390 : "com.cloud.exception.UnsupportedServiceException" |
| |
| 4395 : "com.cloud.exception.VirtualMachineMigrationException" |
| |
| 4400 : "com.cloud.exception.AccountLimitException" |
| |
| 4405 : "com.cloud.exception.AgentUnavailableException" |
| |
| 4410 : "com.cloud.exception.CloudAuthenticationException" |
| |
| 4415 : "com.cloud.exception.CloudException" |
| |
| 4420 : "com.cloud.exception.CloudExecutionException" |
| |
| 4425 : "com.cloud.exception.ConcurrentOperationException" |
| |
| 4430 : "com.cloud.exception.ConflictingNetworkSettingsException" |
| |
| 4435 : "com.cloud.exception.ConnectionException" |
| |
| 4440 : "com.cloud.exception.DiscoveredWithErrorException" |
| |
| 4445 : "com.cloud.exception.DiscoveryException" |
| |
| 4450 : "com.cloud.exception.HAStateException" |
| |
| 4455 : "com.cloud.exception.InsufficientAddressCapacityException" |
| |
| 4460 : "com.cloud.exception.InsufficientCapacityException" |
| |
| 4465 : "com.cloud.exception.InsufficientNetworkCapacityException" |
| |
| 4470 : "com.cloud.exception.InsufficientServerCapacityException" |
| |
| 4475 : "com.cloud.exception.InsufficientStorageCapacityException" |
| |
| 4480 : "com.cloud.exception.InsufficientVirtualNetworkCapcityException" |
| |
| 4485 : "com.cloud.exception.InternalErrorException" |
| |
| 4490 : "com.cloud.exception.InvalidParameterValueException" |
| |
| 4495 : "com.cloud.exception.ManagementServerException" |
| |
| 4500 : "com.cloud.exception.NetworkRuleConflictException" |
| |
| 4505 : "com.cloud.exception.PermissionDeniedException" |
| |
| 4510 : "com.cloud.exception.ResourceAllocationException" |
| |
| 4515 : "com.cloud.exception.ResourceInUseException" |
| |
| 4520 : "com.cloud.exception.ResourceUnavailableException" |
| |
| 4525 : "com.cloud.exception.StorageUnavailableException" |
| |
| 4530 : "com.cloud.exception.UnsupportedServiceException" |
| |
| 4535 : "com.cloud.exception.VirtualMachineMigrationException" |
| |
| 9999 : "org.apache.cloudstack.api.ServerApiException" |
| |
| 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. |
| |
| |
| Asynchronous Commands |
| ~~~~~~~~~~~~~~~~~~~~~ |
| |
| 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: |
| |
| - They are identified in the API Reference by an (A). |
| |
| - They will immediately return a job ID to refer to the job that will |
| be responsible in processing the command. |
| |
| - If executed as a "create" resource command, it will return the |
| resource ID as well as the job ID. |
| |
| 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. |
| |
| |
| Job Status |
| ~~~~~~~~~~ |
| |
| 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: |
| |
| - 0 - Job is still in progress. Continue to periodically poll for any |
| status changes. |
| |
| - 1 - Job has successfully completed. The job will return any |
| successful response values associated with command that was |
| originally executed. |
| |
| - 2 - Job has failed to complete. Please check the "jobresultcode" tag |
| for failure reason code and "jobresult" for the failure reason. |
| |
| |
| Example |
| ~~~~~~~ |
| |
| The following shows an example of using an asynchronous command. Assume |
| the API command: |
| |
| .. parsed-literal:: |
| |
| command=deployVirtualMachine&zoneId=1&serviceOfferingId=1&diskOfferingId=1&templateId=1 |
| |
| CloudStack will immediately return a job ID and any other additional |
| data. |
| |
| .. parsed-literal:: |
| |
| <deployvirtualmachineresponse> |
| <jobid>1</jobid> |
| <id>100</id> |
| </deployvirtualmachineresponse> |
| |
| Using the job ID, you can periodically poll for the results by using the |
| queryAsyncJobResult command. |
| |
| .. parsed-literal:: |
| |
| command=queryAsyncJobResult&jobId=1 |
| |
| Three possible results could come from this query. |
| |
| Job is still pending: |
| |
| .. parsed-literal:: |
| |
| <queryasyncjobresult> |
| <jobid>1</jobid> |
| <jobstatus>0</jobstatus> |
| <jobprocstatus>1</jobprocstatus> |
| </queryasyncjobresult> |
| |
| Job has succeeded: |
| |
| .. parsed-literal:: |
| |
| <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> |
| |
| Job has failed: |
| |
| .. parsed-literal:: |
| |
| <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> |
| |
| |
| Event Types |
| ----------- |
| |
| .. cssclass:: table-striped table-bordered table-hover |
| |
| +-------------------+--------------------------------------------------------+ |
| | Types | Events | |
| +===================+========================================================+ |
| | VM | VM.CREATE | |
| | | | |
| | | VM.DESTROY | |
| | | | |
| | | VM.START | |
| | | | |
| | | VM.STOP | |
| | | | |
| | | VM.REBOOT | |
| | | | |
| | | VM.UPDATE | |
| | | | |
| | | VM.UPGRADE | |
| | | | |
| | | VM.DYNAMIC.SCALE | |
| | | | |
| | | VM.RESETPASSWORD | |
| | | | |
| | | VM.RESETSSHKEY | |
| | | | |
| | | VM.MIGRATE | |
| | | | |
| | | VM.MOVE | |
| | | | |
| | | VM.RESTORE | |
| +-------------------+--------------------------------------------------------+ |
| | Domain Router | ROUTER.CREATE | |
| | | | |
| | | ROUTER.DESTROY | |
| | | | |
| | | ROUTER.START | |
| | | | |
| | | ROUTER.STOP | |
| | | | |
| | | ROUTER.REBOOT | |
| | | | |
| | | ROUTER.HA | |
| | | | |
| | | ROUTER.UPGRADE | |
| +-------------------+--------------------------------------------------------+ |
| | Console proxy | PROXY.CREATE | |
| | | | |
| | | PROXY.DESTROY | |
| | | | |
| | | PROXY.START | |
| | | | |
| | | PROXY.STOP | |
| | | | |
| | | PROXY.REBOOT | |
| | | | |
| | | PROXY.HA | |
| +-------------------+--------------------------------------------------------+ |
| | VNC Console | VNC.CONNECT | |
| | Events | | |
| | | VNC.DISCONNECT | |
| +-------------------+--------------------------------------------------------+ |
| | Network Events | NET.IPASSIGN | |
| | | | |
| | | NET.IPRELEASE | |
| | | | |
| | | PORTABLE.IPASSIGN | |
| | | | |
| | | PORTABLE.IPRELEASE | |
| | | | |
| | | NET.RULEADD | |
| | | | |
| | | NET.RULEDELETE | |
| | | | |
| | | NET.RULEMODIFY | |
| | | | |
| | | NETWORK.CREATE | |
| | | | |
| | | NETWORK.DELETE | |
| | | | |
| | | NETWORK.UPDATE | |
| | | | |
| | | FIREWALL.OPEN | |
| | | | |
| | | FIREWALL.CLOSE | |
| +-------------------+--------------------------------------------------------+ |
| | NIC Events | NIC.CREATE | |
| | | | |
| | | NIC.DELETE | |
| | | | |
| | | NIC.UPDATE | |
| | | | |
| | | NIC.DETAIL.ADD | |
| | | | |
| | | NIC.DETAIL.UPDATE | |
| | | | |
| | | NIC.DETAIL.REMOVE | |
| +-------------------+--------------------------------------------------------+ |
| | Load Balancers | LB.ASSIGN.TO.RULE | |
| | | | |
| | | LB.REMOVE.FROM.RULE | |
| | | | |
| | | LB.CREATE | |
| | | | |
| | | LB.DELETE | |
| | | | |
| | | LB.STICKINESSPOLICY.CREATE | |
| | | | |
| | | LB.STICKINESSPOLICY.DELETE | |
| | | | |
| | | LB.HEALTHCHECKPOLICY.CREATE | |
| | | | |
| | | LB.HEALTHCHECKPOLICY.DELETE | |
| | | | |
| | | LB.UPDATE | |
| +-------------------+--------------------------------------------------------+ |
| | Global Load | GLOBAL.LB.ASSIGN | |
| | Balancer rules | | |
| | | GLOBAL.LB.REMOVE | |
| | | | |
| | | GLOBAL.LB.CREATE | |
| | | | |
| | | GLOBAL.LB.DELETE | |
| | | | |
| | | GLOBAL.LB.UPDATE | |
| +-------------------+--------------------------------------------------------+ |
| | Account events | ACCOUNT.ENABLE | |
| | | | |
| | | ACCOUNT.DISABLE | |
| | | | |
| | | ACCOUNT.CREATE | |
| | | | |
| | | ACCOUNT.DELETE | |
| | | | |
| | | ACCOUNT.UPDATE | |
| | | | |
| | | ACCOUNT.MARK.DEFAULT.ZONE | |
| +-------------------+--------------------------------------------------------+ |
| | UserVO Events | USER.LOGIN | |
| | | | |
| | | USER.LOGOUT | |
| | | | |
| | | USER.CREATE | |
| | | | |
| | | USER.DELETE | |
| | | | |
| | | USER.DISABLE | |
| | | | |
| | | USER.UPDATE | |
| | | | |
| | | USER.ENABLE | |
| | | | |
| | | USER.LOCK | |
| +-------------------+--------------------------------------------------------+ |
| | Registering SSH | REGISTER.SSH.KEYPAIR | |
| | keypair events | | |
| +-------------------+--------------------------------------------------------+ |
| | Register for user | REGISTER.USER.KEY | |
| | API and secret | | |
| | keys | | |
| +-------------------+--------------------------------------------------------+ |
| | Template Events | TEMPLATE.CREATE | |
| | | | |
| | | TEMPLATE.DELETE | |
| | | | |
| | | TEMPLATE.UPDATE | |
| | | | |
| | | TEMPLATE.DOWNLOAD.START | |
| | | | |
| | | TEMPLATE.DOWNLOAD.SUCCESS | |
| | | | |
| | | TEMPLATE.DOWNLOAD.FAILED | |
| | | | |
| | | TEMPLATE.COPY | |
| | | | |
| | | TEMPLATE.EXTRACT | |
| | | | |
| | | TEMPLATE.UPLOAD | |
| | | | |
| | | TEMPLATE.CLEANUP | |
| +-------------------+--------------------------------------------------------+ |
| | Volume Events | VOLUME.CREATE | |
| | | | |
| | | VOLUME.DELETE | |
| | | | |
| | | VOLUME.ATTACH | |
| | | | |
| | | VOLUME.DETACH | |
| | | | |
| | | VOLUME.EXTRACT | |
| | | | |
| | | VOLUME.UPLOAD | |
| | | | |
| | | VOLUME.MIGRATE | |
| | | | |
| | | VOLUME.RESIZE | |
| | | | |
| | | VOLUME.DETAIL.UPDATE | |
| | | | |
| | | VOLUME.DETAIL.ADD | |
| | | | |
| | | VOLUME.DETAIL.REMOVE | |
| +-------------------+--------------------------------------------------------+ |
| | Domains | DOMAIN.CREATE | |
| | | | |
| | | DOMAIN.DELETE | |
| | | | |
| | | DOMAIN.UPDATE | |
| +-------------------+--------------------------------------------------------+ |
| | Snapshots | SNAPSHOT.CREATE | |
| | | | |
| | | SNAPSHOT.DELETE | |
| | | | |
| | | SNAPSHOTPOLICY.CREATE | |
| | | | |
| | | SNAPSHOTPOLICY.UPDATE | |
| | | | |
| | | SNAPSHOTPOLICY.DELETE | |
| +-------------------+--------------------------------------------------------+ |
| | ISO | ISO.CREATE | |
| | | | |
| | | ISO.DELETE | |
| | | | |
| | | ISO.COPY | |
| | | | |
| | | ISO.ATTACH | |
| | | | |
| | | ISO.DETACH | |
| | | | |
| | | ISO.EXTRACT | |
| | | | |
| | | ISO.UPLOAD | |
| +-------------------+--------------------------------------------------------+ |
| | SSVM | SSVM.CREATE | |
| | | | |
| | | SSVM.DESTROY | |
| | | | |
| | | SSVM.START | |
| | | | |
| | | SSVM.STOP | |
| | | | |
| | | SSVM.REBOOT | |
| | | | |
| | | SSVM.HA | |
| +-------------------+--------------------------------------------------------+ |
| | Service Offerings | SERVICE.OFFERING.CREATE | |
| | | | |
| | | SERVICE.OFFERING.EDIT | |
| | | | |
| | | SERVICE.OFFERING.DELETE | |
| +-------------------+--------------------------------------------------------+ |
| | Disk Offerings | DISK.OFFERING.CREATE | |
| | | | |
| | | DISK.OFFERING.EDIT | |
| | | | |
| | | DISK.OFFERING.DELETE | |
| +-------------------+--------------------------------------------------------+ |
| | Network offerings | NETWORK.OFFERING.CREATE | |
| | | | |
| | | NETWORK.OFFERING.ASSIGN | |
| | | | |
| | | NETWORK.OFFERING.EDIT | |
| | | | |
| | | NETWORK.OFFERING.REMOVE | |
| | | | |
| | | NETWORK.OFFERING.DELETE | |
| +-------------------+--------------------------------------------------------+ |
| | Pods | POD.CREATE | |
| | | | |
| | | POD.EDIT | |
| | | | |
| | | POD.DELETE | |
| +-------------------+--------------------------------------------------------+ |
| | Zones | ZONE.CREATE | |
| | | | |
| | | ZONE.EDIT | |
| | | | |
| | | ZONE.DELETE | |
| +-------------------+--------------------------------------------------------+ |
| | VLANs/IP ranges | VLAN.IP.RANGE.CREATE | |
| | | | |
| | | VLAN.IP.RANGE.DELETE | |
| | | | |
| | | VLAN.IP.RANGE.DEDICATE | |
| | | | |
| | | VLAN.IP.RANGE.RELEASE | |
| | | | |
| | | STORAGE.IP.RANGE.CREATE | |
| | | | |
| | | STORAGE.IP.RANGE.DELETE | |
| | | | |
| | | STORAGE.IP.RANGE.UPDATE | |
| +-------------------+--------------------------------------------------------+ |
| | Configuration | CONFIGURATION.VALUE.EDIT | |
| | Table | | |
| +-------------------+--------------------------------------------------------+ |
| | Security Groups | SG.AUTH.INGRESS | |
| | | | |
| | | SG.REVOKE.INGRESS | |
| | | | |
| | | SG.AUTH.EGRESS | |
| | | | |
| | | SG.REVOKE.EGRESS | |
| | | | |
| | | SG.CREATE | |
| | | | |
| | | SG.DELETE | |
| | | | |
| | | SG.ASSIGN | |
| | | | |
| | | SG.REMOVE | |
| +-------------------+--------------------------------------------------------+ |
| | Host | HOST.RECONNECT | |
| +-------------------+--------------------------------------------------------+ |
| | Maintenance | MAINT.CANCEL | |
| | | | |
| | | MAINT.CANCEL.PS | |
| | | | |
| | | MAINT.PREPARE | |
| | | | |
| | | MAINT.PREPARE.PS | |
| +-------------------+--------------------------------------------------------+ |
| | VPN | VPN.REMOTE.ACCESS.CREATE | |
| | | | |
| | | VPN.REMOTE.ACCESS.DESTROY | |
| | | | |
| | | VPN.USER.ADD | |
| | | | |
| | | VPN.USER.REMOVE | |
| | | | |
| | | VPN.S2S.VPN.GATEWAY.CREATE | |
| | | | |
| | | VPN.S2S.VPN.GATEWAY.DELETE | |
| | | | |
| | | VPN.S2S.CUSTOMER.GATEWAY.CREATE | |
| | | | |
| | | VPN.S2S.CUSTOMER.GATEWAY.DELETE | |
| | | | |
| | | VPN.S2S.CUSTOMER.GATEWAY.UPDATE | |
| | | | |
| | | VPN.S2S.CONNECTION.CREATE | |
| | | | |
| | | VPN.S2S.CONNECTION.DELETE | |
| | | | |
| | | VPN.S2S.CONNECTION.RESET | |
| +-------------------+--------------------------------------------------------+ |
| | Network | NETWORK.RESTART | |
| +-------------------+--------------------------------------------------------+ |
| | Custom | UPLOAD.CUSTOM.CERTIFICATE | |
| | certificates | | |
| +-------------------+--------------------------------------------------------+ |
| | OneToOnenat | STATICNAT.ENABLE | |
| | | | |
| | | STATICNAT.DISABLE | |
| | | | |
| | | ZONE.VLAN.ASSIGN | |
| | | | |
| | | ZONE.VLAN.RELEASE | |
| +-------------------+--------------------------------------------------------+ |
| | Projects | PROJECT.CREATE | |
| | | | |
| | | PROJECT.UPDATE | |
| | | | |
| | | PROJECT.DELETE | |
| | | | |
| | | PROJECT.ACTIVATE | |
| | | | |
| | | PROJECT.SUSPEND | |
| | | | |
| | | PROJECT.ACCOUNT.ADD | |
| | | | |
| | | PROJECT.INVITATION.UPDATE | |
| | | | |
| | | PROJECT.INVITATION.REMOVE | |
| | | | |
| | | PROJECT.ACCOUNT.REMOVE | |
| +-------------------+--------------------------------------------------------+ |
| | Network as a | NETWORK.ELEMENT.CONFIGURE | |
| | Service | | |
| +-------------------+--------------------------------------------------------+ |
| | Physical Network | PHYSICAL.NETWORK.CREATE | |
| | Events | | |
| | | PHYSICAL.NETWORK.DELETE | |
| | | | |
| | | PHYSICAL.NETWORK.UPDATE | |
| +-------------------+--------------------------------------------------------+ |
| | Physical Network | SERVICE.PROVIDER.CREATE | |
| | Service Provider | | |
| | Events | SERVICE.PROVIDER.DELETE | |
| | | | |
| | | SERVICE.PROVIDER.UPDATE | |
| +-------------------+--------------------------------------------------------+ |
| | Physical Network | TRAFFIC.TYPE.CREATE | |
| | Traffic Type | | |
| | Events | TRAFFIC.TYPE.DELETE | |
| | | | |
| | | TRAFFIC.TYPE.UPDATE | |
| +-------------------+--------------------------------------------------------+ |
| | External network | PHYSICAL.LOADBALANCER.ADD | |
| | device events | | |
| | | PHYSICAL.LOADBALANCER.DELETE | |
| | | | |
| | | PHYSICAL.LOADBALANCER.CONFIGURE | |
| +-------------------+--------------------------------------------------------+ |
| | External switch | SWITCH.MGMT.ADD | |
| | management device | | |
| | events | SWITCH.MGMT.DELETE | |
| | | | |
| | For example: | SWITCH.MGMT.CONFIGURE | |
| | Cisco Nexus 1000v | | |
| | Virtual | SWITCH.MGMT.ENABLE | |
| | Supervisor | | |
| | Module. | SWITCH.MGMT.DISABLE | |
| | | | |
| | | PHYSICAL.FIREWALL.ADD | |
| | | | |
| | | PHYSICAL.FIREWALL.DELETE | |
| | | | |
| | | PHYSICAL.FIREWALL.CONFIGURE | |
| +-------------------+--------------------------------------------------------+ |
| | VPC | VPC.CREATE | |
| | | | |
| | | VPC.UPDATE | |
| | | | |
| | | VPC.DELETE | |
| | | | |
| | | VPC.RESTART | |
| +-------------------+--------------------------------------------------------+ |
| | Network ACL | NETWORK.ACL.CREATE | |
| | | | |
| | | NETWORK.ACL.DELETE | |
| | | | |
| | | NETWORK.ACL.REPLACE | |
| | | | |
| | | NETWORK.ACL.ITEM.CREATE | |
| | | | |
| | | NETWORK.ACL.ITEM.UPDATE | |
| | | | |
| | | NETWORK.ACL.ITEM.DELETE | |
| +-------------------+--------------------------------------------------------+ |
| | VPC offerings | VPC.OFFERING.CREATE | |
| | | | |
| | | VPC.OFFERING.UPDATE | |
| | | | |
| | | VPC.OFFERING.DELETE | |
| +-------------------+--------------------------------------------------------+ |
| | Private gateway | PRIVATE.GATEWAY.CREATE | |
| | | | |
| | | PRIVATE.GATEWAY.DELETE | |
| +-------------------+--------------------------------------------------------+ |
| | Static routes | STATIC.ROUTE.CREATE | |
| | | | |
| | | STATIC.ROUTE.DELETE | |
| +-------------------+--------------------------------------------------------+ |
| | Tag-related | CREATE\_TAGS | |
| | events | | |
| | | DELETE\_TAGS | |
| +-------------------+--------------------------------------------------------+ |
| | Meta data-related | CREATE\_RESOURCE\_DETAILS | |
| | events | | |
| | | DELETE\_RESOURCE\_DETAILS | |
| +-------------------+--------------------------------------------------------+ |
| | VM snapshot | VMSNAPSHOT.CREATE | |
| | events | | |
| | | VMSNAPSHOT.DELETE | |
| | | | |
| | | VMSNAPSHOT.REVERTTO | |
| +-------------------+--------------------------------------------------------+ |
| | External network | PHYSICAL.NVPCONTROLLER.ADD | |
| | device events | | |
| | | PHYSICAL.NVPCONTROLLER.DELETE | |
| | | | |
| | | PHYSICAL.NVPCONTROLLER.CONFIGURE | |
| +-------------------+--------------------------------------------------------+ |
| | AutoScale | COUNTER.CREATE | |
| | | | |
| | | COUNTER.DELETE | |
| | | | |
| | | CONDITION.CREATE | |
| | | | |
| | | CONDITION.DELETE | |
| | | | |
| | | AUTOSCALEPOLICY.CREATE | |
| | | | |
| | | AUTOSCALEPOLICY.UPDATE | |
| | | | |
| | | AUTOSCALEPOLICY.DELETE | |
| | | | |
| | | AUTOSCALEVMPROFILE.CREATE | |
| | | | |
| | | AUTOSCALEVMPROFILE.DELETE | |
| | | | |
| | | AUTOSCALEVMPROFILE.UPDATE | |
| | | | |
| | | AUTOSCALEVMGROUP.CREATE | |
| | | | |
| | | AUTOSCALEVMGROUP.DELETE | |
| | | | |
| | | AUTOSCALEVMGROUP.UPDATE | |
| | | | |
| | | AUTOSCALEVMGROUP.ENABLE | |
| | | | |
| | | AUTOSCALEVMGROUP.DISABLE | |
| | | | |
| | | PHYSICAL.DHCP.ADD | |
| | | | |
| | | PHYSICAL.DHCP.DELETE | |
| | | | |
| | | PHYSICAL.PXE.ADD | |
| | | | |
| | | PHYSICAL.PXE.DELETE | |
| | | | |
| | | AG.CREATE | |
| | | | |
| | | AG.DELETE | |
| | | | |
| | | AG.ASSIGN | |
| | | | |
| | | AG.REMOVE | |
| | | | |
| | | VM.AG.UPDATE | |
| | | | |
| | | INTERNALLBVM.START | |
| | | | |
| | | INTERNALLBVM.STOP | |
| | | | |
| | | HOST.RESERVATION.RELEASE | |
| +-------------------+--------------------------------------------------------+ |
| | Dedicated guest | GUESTVLANRANGE.DEDICATE | |
| | vlan range | | |
| | | GUESTVLANRANGE.RELEASE | |
| | | | |
| | | PORTABLE.IP.RANGE.CREATE | |
| | | | |
| | | PORTABLE.IP.RANGE.DELETE | |
| | | | |
| | | PORTABLE.IP.TRANSFER | |
| +-------------------+--------------------------------------------------------+ |
| | Dedicated | DEDICATE.RESOURCE | |
| | Resources | | |
| | | DEDICATE.RESOURCE.RELEASE | |
| | | | |
| | | VM.RESERVATION.CLEANUP | |
| | | | |
| | | UCS.ASSOCIATEPROFILE | |
| | | | |
| | | UCS.DISASSOCIATEPROFILE | |
| +-------------------+--------------------------------------------------------+ |
| |
| .. _time-zones: |
| |
| Time Zones |
| ---------- |
| |
| The following time zone identifiers are accepted by PRODUCT. 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. |
| |
| .. cssclass:: table-striped table-bordered table-hover |
| |
| +-----------------------------------+-----------------------+------------------------+ |
| | Etc/GMT+12 | Etc/GMT+11 | Pacific/Samoa | |
| +-----------------------------------+-----------------------+------------------------+ |
| | Pacific/Honolulu | US/Alaska | America/Los\_Angeles | |
| +-----------------------------------+-----------------------+------------------------+ |
| | Mexico/BajaNorte | US/Arizona | US/Mountain | |
| +-----------------------------------+-----------------------+------------------------+ |
| | America/Chihuahua | America/Chicago | America/Costa\_Rica | |
| +-----------------------------------+-----------------------+------------------------+ |
| | America/Mexico\_City | Canada/Saskatchewan | America/Bogota | |
| +-----------------------------------+-----------------------+------------------------+ |
| | America/New\_York | America/Caracas | America/Asuncion | |
| +-----------------------------------+-----------------------+------------------------+ |
| | America/Cuiaba | America/Halifax | America/La\_Paz | |
| +-----------------------------------+-----------------------+------------------------+ |
| | America/Santiago | America/St\_Johns | America/Araguaina | |
| +-----------------------------------+-----------------------+------------------------+ |
| | America/Argentina/Buenos\_Aires | America/Cayenne | America/Godthab | |
| +-----------------------------------+-----------------------+------------------------+ |
| | America/Montevideo | Etc/GMT+2 | Atlantic/Azores | |
| +-----------------------------------+-----------------------+------------------------+ |
| | Atlantic/Cape\_Verde | Africa/Casablanca | Etc/UTC | |
| +-----------------------------------+-----------------------+------------------------+ |
| | Atlantic/Reykjavik | Europe/London | CET | |
| +-----------------------------------+-----------------------+------------------------+ |
| | Europe/Bucharest | Africa/Johannesburg | Asia/Beirut | |
| +-----------------------------------+-----------------------+------------------------+ |
| | Africa/Cairo | Asia/Jerusalem | Europe/Minsk | |
| +-----------------------------------+-----------------------+------------------------+ |
| | Europe/Moscow | Africa/Nairobi | Asia/Karachi | |
| +-----------------------------------+-----------------------+------------------------+ |
| | Asia/Kolkata | Asia/Bangkok | Asia/Shanghai | |
| +-----------------------------------+-----------------------+------------------------+ |
| | Asia/Kuala\_Lumpur | Australia/Perth | Asia/Taipei | |
| +-----------------------------------+-----------------------+------------------------+ |
| | Asia/Tokyo | Asia/Seoul | Australia/Adelaide | |
| +-----------------------------------+-----------------------+------------------------+ |
| | Australia/Darwin | Australia/Brisbane | Australia/Canberra | |
| +-----------------------------------+-----------------------+------------------------+ |
| | Pacific/Guam | Pacific/Auckland | | |
| +-----------------------------------+-----------------------+------------------------+ |