...
- Deploy VM 'review' Wizard added with new select drop downs "Boot Type[UEFI,BIOS]", "Boot Mode[LEGACY, SECURE]". Once the Deploy VM request is submitted with params [Boot type, Boot Mode] , same information will be persisted in CloudStack 'cloud' DB in table 'user_vm_details' as [<id>,<vm-id>,<UEFI or BIOS>,<LEGACY or SECURE>,<1>]. In case of deployed Guest VM Boot information is BIOS and LEGACY by default and there won't any functionality changes. Once VM is deployed in either UEFI or BIOS mode remains in the same mode till it's end of life cycle and can't be altered.
- Once resource availability and authentication done, user vm deploy job is submitted to VM Job queue. Job Framework will handle the rest of the work flow for vm deploy. In order to deploy the Guest VM in UEFI enabled Host Deployment Planner and Allocator are extended with UEFI support.
- ServerDiscovery functionality is extended with UEFI feature detection while adding/on-boarding a Host [KVM,VMware] in CloudPlatformCloudStack. When a new Host is on-boarded to CloudStack , additional detail information is inserted in 'host_details' table as [<id>,<host_id>,Host.Uefi.Enable,<Yes or No>].
- VM deploy process happens using deployment planner. Since all the Hosts listed by the Planner in the deployment plan may not support UEFI boot , additional care need to be taken in case of UEFI enabled VM Deploy. While the selected planner picking the available hosts , additional constraint will be added to get host list.
- Deployment Planner Changes :
- Guest VM deployed with out UEFI Boot Loader
In this scenario planner behaviour is same as earlier , it will try at the CPU and memory capacity of the cluster to create an ordered cluster list. And based on the least utilised Cluster it will returns the Cluster List for the deployment Allocator. - Guest VM deployed with UEFI Boot Loader
Where as in this scenario it returns the Cluster List based on the resource availability And the cluster list is reordered to protect the Host with UEFI capabilities.
- Guest VM deployed with UEFI Boot Loader
DeployVM Cmd additional params will be considered in this use case, and try to fetch Hosts with UEFI capability List. Cluster List which is given by FirstFit Planner will get retained with the constraint that hosts which are not supporting UEFI capability. In case of no Host Available in the current cluster then as per the existing CloudStack framework it try's to deploy in other cluster and looks for the host with UEFI capability. - Guest VM deployed with out UEFI Boot Loader
Nothing changed in the behaviour, it will be like as previous.
- FirstFitPlanner is handled two cases
- FirstFit Allocator Changes:
- Add Host Command get the information from the ServerDiscovery Resource layer, whether Host supports UEFI boot or not. If host supports uefi, host information will be updated in host_details table as explained in (point 3).
- It's not supported In case of existing [KVM]Host to be updated with UEFI capabilities once it's added.
- In order to support legacy behaviour by default ['Uefi Supported','No'] considered for the existing Host.
- UEFI support is prohibited for migrating the VM to another host in cluster , in this implementation. It can be addressed in future release as Enhancement.
- Host Changes
KVM
- KVM Host ( RHEL / CENT OS 7.x above version) along with agent , additional edk2-ovmf/OVMF package should be installed
- Libvirt configuration changes like adding nvram config param in /etc/libvirt/qemu.conf
- UEFI related params information added in uefi.properties which is located /etc/cloudstack/agent
- In case of newly configuring KVM Host , Cloud Admin [Customer admin] will have to prepare and add uefi.properties after successful completion of agent.
VMWare
- Check whether specified VM supports secure UEFI boot mode OR not.
- Update VM configuration to use UEFI legacy mode for booting
- Ensure when host is added, to check if it supports (UEFI legacy OR UEFI secure) boot modes, and update DB accordingly. This information should be displayed in UI as well as listHost response.
- Both IDE and SATA controllers can be used in UEFI booted VM for CDROM drives. But preferred controller is SATA where ever EFI firmware is recommended. Hence instance will be configured with SATA CDROM at virtual node "0:0". In case of DHCP offload scenario, the user instance will have config-drive ISO image mounted on IDE controller at "0:1" which is same as the instance booted with BIOS that contains all CDROM drives on IDE controller only. Hence irrespective of BIOS or EFI boot mode every instance deployed by CloudStack will have IDE 0:1 node reserved only for config drive ISO image purpose.
11. Design should support the legacy feature with out any deviation in the functionality.
Protecting non-UEFI instances from being deployed on UEFI capable hosts
...
- Enable deploy VM wizard Offer wizard with UEFI param[Boot type, Boot Mode]
Display VM Instance detail with UEFI information either enabled or disabled- Image Removed
- If the host is UEFI enabled, details page will be updated like shown below
- Image Added
- Display VM Instance detail with UEFI information either enabled or disabled
Upgrade
N/A
Open Items/Questions
...