By now, you probably figure CloudStack can be put together by using many different pieces of code. It's all rather confusing as there are various pieces. How do one start? What is the glue that binds them together? This page is about what this is.
CloudStack deploys the following types of components. They are all singletons and handle data flowing through them but each have different purpose.
Type |
Purpose |
Example |
Notes |
---|---|---|---|
Manager |
Singleton to control a process. |
VirtualMachineManager |
|
Adapter |
Different ways to implement the same functionality. Adapters are often used by Managers when the process arrives at a step when there can be multiple ways to implement that step. |
FirstFitDeploymentPlanner |
|
DAO |
Data Access Layer |
HostDao |
See Database Access for more details. |
Service |
Java API that supports the Platform API |
UserVmService |
|
PluggableService |
Defines a set of Platform APIs to be inserted into CloudStack. |
F5ExternalLoadBalancerElementService |
|
SystemIntegrityChecker |
Code to ensure system integrity for CloudStack management server to start. |
DatabaseUpgradeChecker |
|
ComponenLibrary |
Collection of Managers, Adapters, DAOs etc to be deployed. |
DefaultComponentLibrary |
|
Interceptor |
Interceptors that implement aspect programming patterns to allow for process enforcement. |
DatabaseCallback |
Probably don't want to mess with this one. |
The components that are loaded is defined in components.xml. The following is an example.
<?xml version="1.0"?> |