The document describes how to write plugins for CloudStack that extend its networking capabilities. It provides an example of a plugin that integrates an external DNS server, allowing client instances to use DNS names to access instances. The plugin implements classes that interface with the DNS server, including adding DNS records when an instance starts. The document outlines the tools and steps needed to set up a development environment for writing CloudStack plugins, including checking out the source code, setting up a test CloudStack instance, and creating a new plugin project.
2. A little bit about me
• Cloud.Com Founding Engineer
• Software architect for CloudPlatform
• Responsible for overall
architecture, performance, and scalability
• Committer and PPMC member
• BS from UC Berkeley and MS from Stanford
3. Extending CloudStack Networking
2. prepare (Network, Nic, DeployDestination, VmInfo)
1. prepare (part of start vm)
Network Network Element PluggableService
Manager
Device Configuration
MyDnsDeviceSer Admin API (CRUD)
vice
DnsService
3. addDnsRecord(ip, fqdn)
Demonstrates one way to MyDnsDeviceMa MySQL
MyDnsElement
inform an external DNS nager
server when an instance
starts. AgentManag
4.Enqueue AddDnsRecord er Queue
Classes shaded blue form a
plugin / service bundle to
integrate an external DNS MyDnsDeviceRes
server. Clients of the ServerResource ource
instance can then use DNS
names to access the 5.API call to Dns Device
instance.
4. Outline
• Setup developer environment
• Checking out source code
• Setup devCloud
• Setup a new plugin project
• Write code
• Write a unit test
• Testing your new plugin
• Potential Problems
5. Tools Needed
• JDK
• MySQL
• Maven
• Eclipse
– M2e
– Pydev
– EGit
• Cygwin if on Windows
6. The future needs you!
Project web site: http://incubator.apache.org/projects/cloudstack.html
Mailing lists:
cloudstack-dev-subscribe@incubator.apache.org
cloudstack-users-subscribe@incubator.apache.org
IRC: #CloudStack on irc.freenode.net
7. Thank You!
Alex Huang
Email: alex.huang@gmail.com
Blog: http://xueyuan.github.com/