ApacheCon NA 2013

Portland, Oregon

February 26th – 28th, 2013

Register Now!

Tuesday 11 a.m.–11:45 a.m.

Apache CloudStack's Plugin Model: Balancing the Cathedral with a Bazaar

Don Lafferty

Cloud Crowd
Audience level:


Sound architecture protects enterprise's investment in an open source project. Strong project leadership can impose and enforce this architecture, but it can stifle innovation and project participation. These competing demands led Apache CloudStack to provide a plugin model for extending its kernel. This talk describes that model using the example of adding Hyper-V support through a plugin.


Enterprise can shy away from open source due to architecture concerns. Sound architecture provides a structure that guides extension development and allows extensions to continue to work overtime. However, a lack of enforcement in open source can fragment architecture. Although FreeBSD port collection has a reuse model, it includes “1,342 copied and pasted cryptography algorithms” [1]. Moreover, “quality happens only when someone is responsible for it” [1]. This responsibility may not be clear when a community of multiple organisations collaborates. Therefore, open source is sometimes not seen as enterprise ready.

However, the remedy of strong leadership can stifle innovation. Project leaders might impose architecture and design through strict reviews, set release schedules, and rejecting contributions. These processes risk excluding participants and useful side projects. Therefore, the checks on architecture must also aim to grow the community.

CloudStack reaches a compromise in its new plugin model. A tightly controlled kernel implements the workflow for cloud operations. However, the concrete actions in the workflow are delegated to plugins. These plugins act as adapters that translate CloudStack command objects into device-specific operations. The command objects and their answers allow the kernel and plugins to communicate, but remain independent. Therefore, the plugin model provides an area for unfettered innovation.

In this session, we provide an overview of the plugin model for developers interested in adding device support to CloudStack. Several plugin interfaces are available depending on what commands the plugin wishes to process. Plugins themselves consist of a device-side and a CloudStack side. We explain the structure these two halves and implementation options. Finally, we examine a case-study: adding Hyper-V support.

[1] "A Generation Lost in the Bazaar" by Poul-Henning Kamp, Communications of the ACM, Vol 55, No 10.