Skip to content

bitprophet/python-cloudservers

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

57 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Python bindings to the Rackspace Cloud Servers API

This is a client for Rackspace's Cloud Servers API. There's a Python API (the cloudservers module), and a command-line script (cloudservers). Each implements 100% of the Rackspace API.

Full documentation is available.

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.

Development takes place on GitHub. Bug reports and patches may be filed there.

Command-line API

Installing this package gets you a shell command, cloudservers, that you can use to interact with Rackspace.

You'll need to provide your Rackspace username and API key. You can do this with the --username and --apikey params, but it's easier to just set them as environment variables:

export CLOUD_SERVERS_USERNAME=jacobian
export CLOUD_SERVERS_API_KEY=yadayada

You'll find complete documentation on the shell by running cloudservers help:

usage: cloudservers [--username USERNAME] [--apikey APIKEY] <subcommand> ...

Command-line interface to the Cloud Servers API.

Positional arguments:
  <subcommand>
    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.
    reboot              Reboot a server.
    rebuild             Shutdown, re-image, and re-boot a server.
    rename              Rename 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.

Optional arguments:
  --username USERNAME   Defaults to env[CLOUD_SERVERS_USERNAME].
  --apikey APIKEY       Defaults to env[CLOUD_SERVERS_API_KEY].

See "cloudservers help COMMAND" for help on a specific command.

Python API

There's also a complete Python API.

By way of a quick-start:

>>> import cloudservers
>>> cs = cloudservers.CloudServers(USERNAME, API_KEY)
>>> cs.flavors.list()
[...]
>>> cs.servers.list()
[...]
>>> s = cs.servers.create(image=2, flavor=1, name='myserver')

... time passes ...

>>> s.reboot()

... time passes ...

>>> s.delete()

FAQ

What's wrong with libcloud?

Nothing! However, as a cross-service binding it's by definition lowest common denominator; I needed access to the Rackspace-specific APIs (shared IP groups, image snapshots, resizing, etc.). I also wanted a command-line utility.

About

Python bindings to Rackspace's Cloud Servers API

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Python 100.0%