> Another alternative for achieving this (without adding the per-hypervisor > logic to CloudStack itself) might be to build a framework for plugging in > best- > of-breed update tools for the various hypervisors (and bare metal servers). > Example: provide the KVM update feature via a combination of puppet > manifests and mcollective instructions, where CloudStack isn't responsible > for the actual update tracking or installation of updates, merely calling an > appropriate external tool to query status and force policy updates. A simple > command line specification for inputs and outputs could allow for various > environments to have scripts that drive the process that's most appropriate > for their specific conditions. > > Thoughts?
+1 I don't see CloudStack as completely just orchestration. It should be the entire stack of tools to make cloud work including management. However, I don't see any reason to normalize this functionality into one call and provide different adapters for that call. The key is to decouple orchestration from these services. Therefore, I think it makes more sense for this host update feature to be self-contained within a plugin. With a plugin, you can add APIs to cloudstack's APIs via the PluggableService interface to enact the way to update a specific type of hypervisor. For example, I can see the following for XenServer. Cloud-plugin-xenserver.jar contains the following interfaces implemented - PluggableService: to introduce APIs to self-manage. For example, for the administrator to invoke to see if there are updates to XenServer or to set a periodic update check policy. - HypervisorGuru: to implement the provisioning needed for hypervisors when a VM is started - ServerResource: to implement the actual interface to different versions of xenserver - Discoverer: to implement different ways to add different versions of XenServer into CloudStack. You can even write cloud-plugin-xenserver-56, cloud-plugin-xenserver-60, etc to have different plugin jars to work with different versions of the XenServer. By doing this, then KVM or VmWare plugins can introduce its own functionalities and features. --Alex