12
Alex Huang Architect November 10, 2012

9 plugin Cloudstack Developer Day

  • View
    1.940

  • Download
    4

Embed Size (px)

DESCRIPTION

By Alex Huang Architect, Cloud Platforms Group, Citrix Systems Inc.

Citation preview

Page 1: 9 plugin Cloudstack Developer Day

Alex Huang Architect November 10, 2012

Page 2: 9 plugin Cloudstack Developer Day

• 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

Page 3: 9 plugin Cloudstack Developer Day

• 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

Page 4: 9 plugin Cloudstack Developer Day

• 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

Page 5: 9 plugin Cloudstack Developer Day

• Operations are atomic

• Operations are idempotent

• Do not modify CloudStack database tables

Page 6: 9 plugin Cloudstack Developer Day

• 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

Page 7: 9 plugin Cloudstack Developer Day

<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

Page 8: 9 plugin Cloudstack Developer Day

• 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

Page 9: 9 plugin Cloudstack Developer Day

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

Page 10: 9 plugin Cloudstack Developer Day

• 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.

Page 11: 9 plugin Cloudstack Developer Day

• 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

Page 12: 9 plugin Cloudstack Developer Day

12

Q&A