2. • Have always recognized that innovation in Cloud IaaS will not be from
only Citrix
• Software built on top of adaptors written by third-party
• Well defined control and data paths
• Server Resource can be delivered to remote data centers to be co-
located with the resource that it controls
• VM images can be downloaded to data center and started/stopped to
support operations within remote data centers
2
3. • DeploymentPlanner – Algorithms and heuristics to select pod, cluster,
hosts to deploy VMs and storage pools to create VM on
• NetworkElement – Third-party implementation of physical network
elements to support a VM deployed in a network
• ServerResource – API translation layer
• PluggableService – Additional APIs introduced by third party vendors
to configure their own services
• Discoverer – Third-party specified code to introduce new
ServerResource to CloudStack
• NetworkGuru – Different ways to do ip address allocation
4. • PluggableService that defines APIs to configure the plug-in
• ServerResource extension that is meant to be run co-located with the
resource (no DB access)
• Manager code that runs within the management server with access to
management database
• Implement Adaptor interfaces to implement functionalities required by
CloudStack
• Change components.xml to make the plug-in and adaptors active
5. • Operations are atomic
• Operations are idempotent
• Do not modify CloudStack database tables
6. • Well-defined interfaces that third-party implements are configurable
through components.xml
• Components specification can inherit from and extend the default
specification
• CloudStack assembles the components according to the xml at
startup time
• CloudStack assembles the list of APIs it supports according to the
PlugableService specified in the xml
7. <management-server class="com.cloud.server.ManagementServerImpl"
library="com.cloud.configuration.DefaultComponentLibrary">
<adapters key="com.cloud.network.element.NetworkElement">
<adapter name="DomainRouter" class="com.cloud.network.element.VirtualRouterElement"/>
<adapter name="Ovs" class="com.cloud.network.element.OvsElement"/>
<adapter name="ElasticLoadBalancer" class="com.cloud.network.element.ElasticLoadBalancerElement"/>
</adapters>
<pluggableservice name="VirtualRouterElementService"
key="com.cloud.network.element.VirtualRouterElementService"
class="com.cloud.network.element.VirtualRouterElement"/>
</management-server>
• Defines three different NetworkElement adaptors, one of which is
VirtualRouterElement
• Defines a PluggableService for the VirtualRouterElement so that it can be
configured using its own APIs
8. • Defines the capabilities of the NetworkElement, which is used by
CloudStack to determine if certain operations can be done
• Defines the call CloudStack makes when a VM is provisioned on the
network
• Defines the call CloudStack makes when a VM leaves the network
• Defines the call CloudStack makes when a network changes its state
9. public interface PluggableService {
/**
* The config file name that lists API commands supported by this pluggable service
*/
String getPropertiesFile();
}
Properties File define over-the-wire method name to Java class mapping
createAccount=com.cloud.api.commands.CreateAccountCmd
10. • NetscalerResource – Translation layer from CloudStack
LoadBalancing Commands to NetScaler API. Can be co-located with
NetScaler deployment.
• ExternalLoadBalancerDeviceManagerImpl – Server side
implementation that have access to DB.
• NetscalerExternalLoadBalancerElement – NetworkElement
implementation that hooks the
ExternalLoadBalancerDeviceManagerImpl code to the CloudStack
core.
• NetscalerNetworkElementService – PluggableService implementation
that adds Netscaler specific configuration API.
11. • Provide third-party software to present end user API
• Provide multi-tenancy support in end user facing API
• Provide third-party software to present end user facing UI
• Provide third-party software the ability to upgrade database schema
independent of CloudStack
• Provide dynamic loading of third-party software without restart of
management server