Chapter 20.
247
CloudPlatform API
The CloudPlatform API is a low level API that has been used to implement the CloudPlatform web
UIs. It is also a good basis for implementing other popular APIs such as EC2/S3 and emerging DMTF
standards.
Many CloudPlatform API calls are asynchronous. These will return a Job ID immediately when called.
This Job ID can be used to query the status of the job later. Also, status calls on impacted resources
will provide some indication of their state.
The API has a REST-like query basis and returns results in XML or JSON.
See the Developer’s Guide and the API Reference.
20.1. Provisioning and Authentication API
CloudPlatform expects that a customer will have their own user provisioning infrastructure. It provides
APIs to integrate with these existing systems where the systems call out to CloudPlatform to add/
remove users..
CloudPlatform supports pluggable authenticators. By default, CloudPlatform assumes it is provisioned
with the user’s password, and as a result authentication is done locally. However, external
authentication is possible as well. For example, see Using an LDAP Server for User Authentication .
20.2. Allocators
CloudPlatform enables administrators to write custom allocators that will choose the Host to place a
new guest and the storage host from which to allocate guest virtual disk images.
20.3. User Data and Meta Data
CloudPlatform provides API access to attach up to 32KB of user data to a deployed VM. Deployed
VMs also have access to instance metadata via the virtual router.
User data can be accessed once the IP address of the virtual router is known. Once the IP address is
known, use the following steps to access the user data:
1. Run the following command to find the virtual router.
# cat /var/lib/dhclient/dhclient-eth0.leases | grep dhcp-server-identifier | tail -1
2. Access user data by running the following command using the result of the above command
# curl http://10.1.1.1/latest/user-data
Meta Data can be accessed similarly, using a URL of the form http://10.1.1.1/latest/meta-data/
{metadata type}. (For backwards compatibility, the previous URL http://10.1.1.1/latest/{metadata type}
is also supported.) For metadata type, use one of the following:
• service-offering. A description of the VMs service offering
• availability-zone. The Zone name
• local-ipv4. The guest IP of the VM