1. Deltacloud API
Michal Fojtik, Software Engineer, Red Hat Czech
2.
3. Cloud? Just another buzzword?
Similar to electrical power
generation and delivery through
electrical grid
On-demand service
Large cost saving
Pay as you go pricing model
Different cloud models: SaaS,
PaaS, IaaS
Private or public clouds ?
3
4. Infrastructure as a Service – How it works?
Massive usage of virtualization delivered through Internet
Choose a template of virtual machine
Choose hardware profile for VM
Run it!
Nice, but not really useful Web2.0* interfaces
Providers obviously expose all services via API
Real tool for interacting with cloud
Allow to develop custom applications for cloud
* buzzword #2
4
5. API?
What you can do with this 'API'?
Launch virtual machines on-demand
Manage state of virtual machines
Get information about virtual machine (IP, state,
etc.)
Create own virtual machine templates
Attach/detach some storage to virtual machine
5
6. Many API's == Many problems
Providers wants to lock-in you to their API
No standards
Too complex to change your application code
Too lazy to watch all changes in their API
6
7. Deltacloud API
Apache Deltacloud (http://incubator.apache.org/deltacloud/)
Cloud-agnostic provisioning and management API
Manage resources in different IaaS clouds using a single REST-based API
Moved to Apache Foundation Incubator (2010), ASF Licence
7
8. Why another API ?
Avoiding lock-in by providing an
API abstraction that can be
implemented as a wrapper around
a large number of clouds, freeing
users of cloud from dealing with
the particulars of each cloud’s API.
Providing a basis for open-source
evolution of cloud API’s.
Providing backward compatibility
for API XML structure
8
10. Deltacloud API: Supported cloud providers
Deltacloud currently supports:
Amazon EC2 and S3 + Eucalyptus
Rackspace Cloud Servers and Cloud Files
Gogrid Cloud Servers
Terremark Vcloud Express
Rimuhosting VPS
Red Hat Enterprise Virtualisation (RHEV-M API)
Open-nebula Cloud
IBM SBC
...more coming soon...
10
11. Accessing Deltacloud API
Deltacloud API is a simple state-full
application written using almighty
power of Ruby and Sinatra web
framework
Installation:
gem install deltacloud-core
Running an instance:
deltacloudd -i [ec2|rhevm|gogrid|
rackspace|opennebula|mock]
Accessing Web UI:
http://localhost:3000/api
11
12. Deltacloud API: Top level entry-point
Easy ramp-up
No need to know the resource types ahead of time, simply load the ‘Primary
Entry Point’ and start navigating among resource
Deltacloud uses HTTP basic authentication
12
13. Basic cloud abstraction collections
Realms
A distinct organizational unit within the back-end cloud such as a data center
Hardware Profiles
Sizing of a virtual machine in a cloud
Images
Templates (virtual machine images) from which Instances are created
Instances
A realized virtual server, running in a given back-end cloud
13
14. Extended cloud abstraction
Storage volumes
Virtual storage device that can be attached to an Instance
Storage snapshots
Snapshots of a Storage Volume at a specified point in time
Key-value storage (blob)
Generic ‘key ==> value’ based data store
Authentication keys
Credentials used to access a running Instance
Loadbalancers
Maintain high availability for Instances (Elastic LoadBalancing, F5 LoadBalancer)
14
15. Deltacloud API: Why REST ?
Better than SOAP :-)
Based on HTTP protocol thus
state-less
Programming language agnostic
Clients in Java, Ruby, Perl, C,
<add your language here>
Content negotiation
Supported formats: XML, JSON,
HTML
Recommended method: HTTP
'Accept' headers
15
16. Deltacloud API: Features vs Capabilities
Features Capabilities
Enhance standard API behavior Give an option for client to check if
with additional features defined for given operation is supported by
each collection back-end cloud
Both “features” and “capabilities” are advertised by Deltacloud API top entry-
point.
16
17. Deltacloud API: Launching an Instance (1)
Step 1: Choose VM Image
Each Image defines the root
partition and initial storage for the
instance operating system
Available actions:
Filtering using owner_id and
architecture
Future operations:
Creating custom images using
Image Warehouse
17
18. Deltacloud API: Launching an Instance (2)
Step 2: Choose Hardware Profile
Describes the sizing of a virtual
machine in a cloud and prescribes
details such as how many virtual
CPU’s, how much memory or how
much local storage an instance
might have
Properties are:
Fixed
Range
Enumerative
18
19. Deltacloud API: Launching an Instance (3)
Step 3: Choose a Realm
Represents a distinct unit within
the same cloud like Data Center
location
Changes many aspects of cloud:
Pricing
SLA
Geo location
19
20. Deltacloud API: Launching an Instance!
Final: Glue all things together
Additional parameters:
Name – Each instance should
have name
Hardware profile properties – Fine
tune memory, CPU, storage size
Features – Parameters defined by
features
20
21. Deltacloud API: Managing instance state
Client access to the back-end state
machine
Basic virtual machine operations:
Reboot
Stop
Start
Destroy
21
22. Deltacloud API: Run command on instance
Currently only Linux instances are
supported.
Authentication:
SSH private keys (Amazon)
Password (Gogrid, Rackspace)
22
23. Deltacloud API consumers
Native Ruby client shipped by Deltacloud API core framework
Allows full control of back-end cloud and provide access to all features
Command line client
Control cloud from terminal, can be used for testing and batch operations
Java client library
Used by many jBoss projects developed by Red Hat (jCloud, Eclipse Deltacloud
plugin, BoxGrinder...)
C client library
Used by Condor Grid to queue cloud operations (Aeolus project)
Native implementations
virtualmaster.cz, <put your company here ;-)>
23
25. Contributing to Deltacloud API
Everyone can contribute, ask questions, ask about new features...
...even in real time on IRC: #deltacloud @ freenode.net
...or send patches to:
deltacloud-dev@incubator.apache.org
25