...
A cloud admin wishes to manage hosts with the libvirt control-plance plane (e.g. virt-manager, virsh etc) using the Xen hypervisor. The admin installs Xen and libvirt via their favourite Linux distribution. The admin logs into the CloudStack UI and creates a cluster with hypervisor type "XEN". The admin then adds a host to the cluster. A user is requests an instance and a VM is spawned on the Xen host via libvirt.
...
On using the host <-> guest private <channel> for configuration: this mechanism is used by KVM today and is a sensible design choice and a real missing feature in the libvirt libxl driver. Therefore we should implement the missing feature.
On extending the HypervisorType enum: this is a bit ugly because conceptually we should really have a single "libvirt" type with 2 subtypes for "Xen" and "KVM". All the code which currently says "if kvm`' needs to become "if kvm || xen".
On detecting hypervisors on the host: it would be better to always use /sys/hypervisor/type, but this doesn't appear to be populated by the KVM module.
list changes to existing web services APIs and new APIs introduced with signatures and throughout documentationNo new APIs are needed
UI flow
...
No change to the UI flow is needed
Appendix A:
Appendix B:No new dependencies need to be added to CloudStack