Deltacloud API
Upcoming SlideShare
Loading in...5
×

Like this? Share it with your network

Share
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
No Downloads

Views

Total Views
2,535
On Slideshare
2,535
From Embeds
0
Number of Embeds
0

Actions

Shares
Downloads
72
Comments
0
Likes
1

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1. Deltacloud API Michal Fojtik, Software Engineer, Red Hat Czech
  • 2. 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
  • 3. 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 #24
  • 4. 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 machine5
  • 5. Many APIs == 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 API6
  • 6. 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 Licence7
  • 7. 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 structure8
  • 8. Deltacloud API: SOA9
  • 9. 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
  • 10. 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/api11
  • 11. 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 authentication12
  • 12. 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 cloud13
  • 13. 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
  • 14. 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 headers15
  • 15. 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
  • 16. 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 Warehouse17
  • 17. 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 Enumerative18
  • 18. 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 location19
  • 19. 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 features20
  • 20. Deltacloud API: Managing instance state  Client access to the back-end state machine  Basic virtual machine operations:  Reboot  Stop  Start  Destroy21
  • 21. Deltacloud API: Run command on instance  Currently only Linux instances are supported.  Authentication:  SSH private keys (Amazon)  Password (Gogrid, Rackspace)22
  • 22. 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
  • 23. 24
  • 24. 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.org25
  • 25. Thank you! Questions ? mfojtik@redhat.com26