2011-02-08 08:54:34 -04:00
|
|
|
Python bindings to the OpenStack Nova API
|
2011-01-25 14:01:22 -06:00
|
|
|
==================================================
|
|
|
|
|
2011-02-08 08:54:34 -04:00
|
|
|
This is a client for the OpenStack Nova API. There's a Python API (the
|
2011-02-26 05:04:40 -04:00
|
|
|
``novaclient`` module), and a command-line script (``nova``). Each
|
2011-02-08 08:54:34 -04:00
|
|
|
implements 100% of the OpenStack Nova API.
|
2011-01-25 14:01:22 -06:00
|
|
|
|
2011-02-08 08:54:34 -04:00
|
|
|
[PENDING] `Full documentation is available`__.
|
2011-01-25 14:01:22 -06:00
|
|
|
|
2011-02-26 05:04:40 -04:00
|
|
|
__ http://packages.python.org/python-novaclient/
|
2011-01-25 14:01:22 -06:00
|
|
|
|
|
|
|
You'll also probably want to read `Rackspace's API guide`__ (PDF) -- the first
|
|
|
|
bit, at least -- to get an idea of the concepts. Rackspace is doing the cloud
|
|
|
|
hosting thing a bit differently from Amazon, and if you get the concepts this
|
|
|
|
library should make more sense.
|
|
|
|
|
|
|
|
__ http://docs.rackspacecloud.com/servers/api/cs-devguide-latest.pdf
|
|
|
|
|
|
|
|
Development takes place on GitHub__. Bug reports and patches may be filed there.
|
|
|
|
|
2011-02-26 05:04:40 -04:00
|
|
|
__ https://github.com/rackspace/python-client
|
2011-02-08 08:54:34 -04:00
|
|
|
|
|
|
|
This code a fork of `Jacobian's python-cloudservers`__ If you need API support
|
2011-08-08 13:20:44 -07:00
|
|
|
for the Rackspace API soley or the BSD license, you should use that repository.
|
2011-02-26 05:04:40 -04:00
|
|
|
python-client is licensed under the Apache License like the rest of OpenStack.
|
2011-02-08 08:54:34 -04:00
|
|
|
|
2011-01-25 14:01:22 -06:00
|
|
|
__ http://github.com/jacobian/python-cloudservers
|
|
|
|
|
|
|
|
.. contents:: Contents:
|
|
|
|
:local:
|
|
|
|
|
|
|
|
Command-line API
|
|
|
|
----------------
|
|
|
|
|
2011-02-24 13:54:10 -04:00
|
|
|
Installing this package gets you a shell command, ``nova``, that you
|
2011-01-25 14:01:22 -06:00
|
|
|
can use to interact with any Rackspace compatible API (including OpenStack).
|
|
|
|
|
2011-02-08 08:54:34 -04:00
|
|
|
You'll need to provide your OpenStack username and API key. You can do this
|
2011-08-08 13:20:44 -07:00
|
|
|
with the ``--username``, ``--apikey`` and ``--projectid`` params, but it's easier to just
|
2011-01-25 14:01:22 -06:00
|
|
|
set them as environment variables::
|
|
|
|
|
2011-02-14 14:27:21 -08:00
|
|
|
export NOVA_USERNAME=openstack
|
|
|
|
export NOVA_API_KEY=yadayada
|
2011-06-13 16:16:58 +04:00
|
|
|
export NOVA_PROJECT_ID=myproject
|
2011-01-25 14:01:22 -06:00
|
|
|
|
2011-08-07 14:00:23 -05:00
|
|
|
You will also need to define the authentication url with ``--url`` and the
|
2011-08-08 13:20:44 -07:00
|
|
|
version of the API with ``--version``. Or set them as an environment
|
2011-08-07 14:00:23 -05:00
|
|
|
variables as well::
|
2011-01-25 14:01:22 -06:00
|
|
|
|
2011-02-14 14:27:21 -08:00
|
|
|
export NOVA_URL=http://myserver:port/v1.0/
|
2011-08-07 14:00:23 -05:00
|
|
|
export NOVA_VERSION=1.0
|
2011-08-08 13:20:44 -07:00
|
|
|
|
|
|
|
You'll find complete documentation on the shell by running
|
2011-02-24 13:54:10 -04:00
|
|
|
``nova help``::
|
2011-08-07 14:00:23 -05:00
|
|
|
|
|
|
|
usage: nova [--username USERNAME] [--apikey APIKEY] [--projectid PROJECTID]
|
|
|
|
[--url URL] [--version VERSION]
|
|
|
|
<subcommand> ...
|
2011-01-25 14:01:22 -06:00
|
|
|
|
2011-02-08 08:54:34 -04:00
|
|
|
Command-line interface to the OpenStack Nova API.
|
2011-01-25 14:01:22 -06:00
|
|
|
|
|
|
|
Positional arguments:
|
|
|
|
<subcommand>
|
2011-07-08 10:57:27 -07:00
|
|
|
add-fixed-ip Add a new fixed IP address to a servers network.
|
2011-08-05 10:38:29 -05:00
|
|
|
backup Backup a server.
|
2011-01-25 14:01:22 -06:00
|
|
|
backup-schedule Show or edit the backup schedule for a server.
|
|
|
|
backup-schedule-delete
|
|
|
|
Delete the backup schedule for a server.
|
|
|
|
boot Boot a new server.
|
|
|
|
delete Immediately shut down and delete a server.
|
|
|
|
flavor-list Print a list of available 'flavors' (sizes of
|
|
|
|
servers).
|
|
|
|
help Display help about this program or one of its
|
|
|
|
subcommands.
|
|
|
|
image-create Create a new image by taking a snapshot of a running
|
|
|
|
server.
|
|
|
|
image-delete Delete an image.
|
|
|
|
image-list Print a list of available images to boot from.
|
|
|
|
ip-share Share an IP address from the given IP group onto a
|
|
|
|
server.
|
|
|
|
ip-unshare Stop sharing an given address with a server.
|
|
|
|
ipgroup-create Create a new IP group.
|
|
|
|
ipgroup-delete Delete an IP group.
|
|
|
|
ipgroup-list Show IP groups.
|
|
|
|
ipgroup-show Show details about a particular IP group.
|
|
|
|
list List active servers.
|
2011-07-07 13:33:17 -05:00
|
|
|
migrate Migrate a server to a new host in the same zone.
|
2011-01-25 14:01:22 -06:00
|
|
|
reboot Reboot a server.
|
|
|
|
rebuild Shutdown, re-image, and re-boot a server.
|
2011-07-08 10:57:27 -07:00
|
|
|
remove-fixed-ip Remove an IP address from a server.
|
2011-01-25 14:01:22 -06:00
|
|
|
rename Rename a server.
|
|
|
|
rescue Rescue a server.
|
|
|
|
resize Resize a server.
|
|
|
|
resize-confirm Confirm a previous resize.
|
|
|
|
resize-revert Revert a previous resize (and return to the previous
|
|
|
|
VM).
|
|
|
|
root-password Change the root password for a server.
|
|
|
|
show Show details about the given server.
|
|
|
|
unrescue Unrescue a server.
|
2011-06-21 04:54:01 -07:00
|
|
|
zone Show or edit a Child Zone
|
|
|
|
zone-add Add a Child Zone.
|
|
|
|
zone-boot Boot a server, considering Zones.
|
|
|
|
zone-delete Remove a Child Zone.
|
|
|
|
zone-info Show the capabilities for this Zone.
|
|
|
|
zone-list List all the immediate Child Zones.
|
2011-01-25 14:01:22 -06:00
|
|
|
|
|
|
|
Optional arguments:
|
2011-02-14 14:27:21 -08:00
|
|
|
--username USERNAME Defaults to env[NOVA_USERNAME].
|
|
|
|
--apikey APIKEY Defaults to env[NOVA_API_KEY].
|
2011-06-13 16:16:58 +04:00
|
|
|
--apikey PROJECTID Defaults to env[NOVA_PROJECT_ID].
|
2011-02-14 14:27:21 -08:00
|
|
|
--url AUTH_URL Defaults to env[NOVA_URL] or
|
2011-01-25 14:01:22 -06:00
|
|
|
https://auth.api.rackspacecloud.com/v1.0
|
2011-08-07 14:00:23 -05:00
|
|
|
if undefined.
|
2011-08-08 13:20:44 -07:00
|
|
|
--version VERSION Accepts 1.0 or 1.1, defaults to
|
2011-08-07 14:00:23 -05:00
|
|
|
env[NOVA_VERSION].
|
2011-01-25 14:01:22 -06:00
|
|
|
|
2011-02-24 13:54:10 -04:00
|
|
|
See "nova help COMMAND" for help on a specific command.
|
2011-08-08 13:20:44 -07:00
|
|
|
|
2011-01-25 14:01:22 -06:00
|
|
|
Python API
|
|
|
|
----------
|
|
|
|
|
2011-02-08 08:54:34 -04:00
|
|
|
[PENDING] There's also a `complete Python API`__.
|
2011-01-25 14:01:22 -06:00
|
|
|
|
2011-02-26 05:04:40 -04:00
|
|
|
__ http://packages.python.org/python-novaclient/
|
2011-01-25 14:01:22 -06:00
|
|
|
|
|
|
|
By way of a quick-start::
|
|
|
|
|
2011-02-26 05:04:40 -04:00
|
|
|
>>> import novaclient
|
2011-06-13 16:16:58 +04:00
|
|
|
>>> nt = novaclient.OpenStack(USERNAME, API_KEY,PROJECT_ID [, AUTH_URL])
|
2011-02-08 08:54:34 -04:00
|
|
|
>>> nt.flavors.list()
|
2011-01-25 14:01:22 -06:00
|
|
|
[...]
|
2011-02-08 08:54:34 -04:00
|
|
|
>>> nt.servers.list()
|
2011-01-25 14:01:22 -06:00
|
|
|
[...]
|
2011-02-08 08:54:34 -04:00
|
|
|
>>> s = nt.servers.create(image=2, flavor=1, name='myserver')
|
2011-08-08 13:20:44 -07:00
|
|
|
|
2011-01-25 14:01:22 -06:00
|
|
|
... time passes ...
|
2011-08-08 13:20:44 -07:00
|
|
|
|
2011-01-25 14:01:22 -06:00
|
|
|
>>> s.reboot()
|
2011-08-08 13:20:44 -07:00
|
|
|
|
2011-01-25 14:01:22 -06:00
|
|
|
... time passes ...
|
2011-08-08 13:20:44 -07:00
|
|
|
|
2011-01-25 14:01:22 -06:00
|
|
|
>>> s.delete()
|
|
|
|
|
|
|
|
What's new?
|
|
|
|
-----------
|
|
|
|
|
2011-02-26 05:04:40 -04:00
|
|
|
[PENDING] See `the release notes <http://packages.python.org/python-novaclient/releases.html>`_.
|