Upload
openstack-foundation
View
1.349
Download
0
Embed Size (px)
DESCRIPTION
true
Citation preview
for Fun and Profit
Tim Smith – Co-founder, Gridcentric
Extending
A bit about me Co-founder & President of
Gridcentric 10+ years hacking
embedded/RTOS, storage, networks, and virtualization
Last 3+ years directing engineering at Gridcentric
This talk
$$$
Your innovation
Gridcentric VMS Delayed “fork()” for virtual machines:
Take snapshot of running (fully configured) VM (bless)
Spin up replica instances quickly and efficiently (launch)
Re-use common memory pages between replicas
Extending Nova
Nova is a framework, providing: A standardized API Messaging / RPC Database-backed ORM
Nova can be extended by writing new: API extensions Custom “services” Nova CLI extensions Dashboard extensions
Nova API extensions
Main module: nova.api.openstack.extensions Can:
Add new resources Add new properties to existing resources Add new actions to existing resources
Cannot: Replace / hook around existing actions
GC API extension
Add new server actions: gc_bless – create state snapshot of running
instance gc_launch – launch new VM from state snapshot gc_discard – discard state snapshot
Add new resource: gcservers – list VMS-capable compute hosts
Creating a new service
Custom services can: Make RPCs to other Nova components Receive RPCs from Api server Access/modify the Nova data store
The nova-gc service
Accepts RPCs from GC API extension For bless, launch, discard, etc
Uses Nova ORM to CRUD server objects Interfaces to Gridcentric proprietary
code to do heavy lifting
Extending the nova client New actions can be surfaced to the nova
CLI client Need to be explicitly added via client
extensions Extensions can be PIP-installable, etc
GC client extension Adds bless, launch, discard, etc to nova CLI
client
Extending the dashboard Horizon is a Django application New views/panes/etc can be added as
“Django installed applications” Horizon and extensions use the nova
client programmatically to access nova services. Ergo, you also need to write a client
extension and install it where Horizon is running
Extending the dashboard
Technical challenges
Some parts of nova not 100% “extension ready” E.g. some built-in schedulers don’t route messages to
custom services IP tables rules need to be created through compute
service, but no interface exists for that Service framework makes assumptions w.r.t.
execution Different distributions do things differently
E.g. paths, nova user, libvirt / qemu user
Business challenges
Openstack is evolving extremely quickly Users/developers/vendors/operators are not always
synced up on the same release. The answer to a lot of issues is “wait for the next release”.
The Openstack market is still early Operators haven’t quite nailed down their
requirements/differentiation/solution set Lots of fragmentation = lots of confusion
Further reading
Rackspace Extensions API intro: http://docs.rackspace.com/openstack-extensions/apix-intro
Rackspace Extensions (good examples!): http://docs.rackspace.com/openstack-extensions/
Gridcentric VMS extension: https://github.com/gridcentric/openstack
Service architecture intro: http://docs.openstack.org/developer/nova/service.architecture.html
Extending Horizon (dashboard): http://docs.openstack.org/developer/horizon/topics/tutorial.html
Standard OpenStack API and extensions: http://api.openstack.org/
Thank you!Email: [email protected] me in: https://www.linkedin.com/in/tsmithgcSlides: http://slidesha.re/XfgUZ7