blob: fcd75950e55a108b6679a44c10a822e77236d357 [file] [log] [blame] [view]
# deltacloud-client
The Deltacloud project includes a Ruby client. Other language-bindings
are possible and will be supported soon. The client aims to insulate
users from having to deal with HTTP and REST directly.
Each resource type has an associated model to ease usage. Where
resource reference other resources, natural navigation across the
object model is possible.
This is a Ruby client library for the [Deltacloud API](http://deltacloud.apache.org).
## Usage
```ruby
require 'deltacloud/client'
API_URL = "http://localhost:3001/api" # Deltacloud API endpoint
# Simple use-cases
client = Deltacloud::Client(API_URL, 'mockuser', 'mockpassword')
pp client.instances # List all instances
pp client.instance('i-12345') # Get one instance
inst = client.create_instance 'ami-1234', :hwp_id => 'm1.small' # Create instance
inst.reboot! # Reboot instance
# Advanced usage
# Deltacloud API supports changing driver per-request:
client.use(:ec2, 'API_KEY', 'API_SECRET').instances # List EC2 instances
client.use(:openstack, 'admin@tenant', 'password', KEYSTONE_URL).instances # List Openstack instances
```
# Want help?
## Adding new Deltacloud collection to client
```
$ rake generate[YOUR_COLLECTION] # eg. 'storage_snapshot'
# Hit Enter 2x
```
- Edit `lib/deltacloud/client/methods/YOUR_COLLECTION.rb` and add all
methods for manipulating your collection. The list/show methods
should already be generated for you, but double-check them.
- Edit `lib/deltacloud/client/model/YOUR_COLLECTION.rb` and add model
methods. Model methods should really be just a syntax sugar and exercise
the *Deltacloud::Client::Methods* methods.
The purpose of *model* class life is to deserialize XML body received
from Deltacloud API to a Ruby class.
## Debugging a nasty bug?
- You can easily debug deltacloud-client using powerful **pry**.
- `gem install deltacloud-core`
- optional: `rbenv rehash` ;-)
- `deltacloudd -i mock -p 3002`
- `rake console`
Console require **pry** gem installed. If you are not using this awesome
gem, you can fix it by `gem install pry`.
# License
Apache License
Version 2.0, January 2004
http://www.apache.org/licenses/