Introduction

CloudStack does not have any means to dynamically add new hypervisor types. The hypervisor types are internally preset by an enum defined within the CloudStack codebase and unless a new version supports a new hypervisor it is not possible to add a host of a hypervisor that is not in part of the enum. It is possible to implement minimal changes in CloudStack to support a new hypervisor plugin that may be developed privately

This PR is an initial work on allowing new dynamic hypervisor types (adds a new element to the HypervisorType enum, but allows variable display name for the hypervisor)

Proposed Future work:

  • Replace the HypervisorType from a fixed enum to an extensible registry mechanism, registered from the hypervisor plugin

References

Document History

VersionAuthor/ReviewerDate
1.0Nicolas Vazquez

 




Feature Specifications

  • The new hypervisor type is internally named 'Custom' to the CloudStack services (management server and agent services, database records).
  • A new global setting ‘hypervisor.custom.display.name’ allows administrators to set the display name of the hypervisor type. The display name will be shown in the CloudStack UI and API.
    • In case the ‘hypervisor.list’ setting contains the display name of the new hypervisor type, the setting value is automatically updated after the ‘hypervisor.custom.display.name’ setting is updated.
  • The new Custom hypervisor type supports:
    • Direct downloads (the ability to download templates into primary storage from the hypervisor hosts without using secondary storage)
    • Local storage (use hypervisor hosts local storage as primary storage)
    • Template format: RAW format (the templates to be registered on the new hypervisor type must be in RAW format)
  • The UI is also extended to display the new hypervisor type and the supported features listed above.
  • The above are the minimal changes for CloudStack to support the new hypervisor type, which can be tested by integrating the plugin codebase with this feature.

Use cases

  • CloudStack admin should be able to create a zone for the new custom hypervisor and add clusters, hosts into the zone with normal operations
  • CloudStack users should be able to execute normal VMs/volumes/network/storage operations on VMs/volumes running on the custom hypervisor hosts

API Changes

  • The listHypervisors API is extended to retrieve the new hypervisor type

Appendix