deltacloud api
TRANSCRIPT
Deltacloud API
Michal Fojtik, Software Engineer, Red Hat Czech
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 ?
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
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
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
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
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
9
Deltacloud API: SOA
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...
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
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
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
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)
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
16
Deltacloud API: Features vs Capabilities
Features
Enhance standard API behavior with additional features defined for each collection
Capabilities
Give an option for client to check if given operation is supported by back-end cloud
Both “features” and “capabilities” are advertised by Deltacloud API top entry-point.
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
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
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
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
21
Deltacloud API: Managing instance state
Client access to the back-end state machine
Basic virtual machine operations:
Reboot
Stop
Start
Destroy
22
Deltacloud API: Run command on instance
Currently only Linux instances are supported.
Authentication:
SSH private keys (Amazon)
Password (Gogrid, Rackspace)
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 ;-)>
24
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: