Skip to content

Commit 8c99e65

Browse files
committed
vTPM: let uses to add UEFI on vmware
1 parent 81e26ab commit 8c99e65

File tree

2 files changed

+8
-11
lines changed

2 files changed

+8
-11
lines changed

plugins/hypervisors/vmware/src/main/java/com/cloud/hypervisor/vmware/resource/VmwareResource.java

Lines changed: 6 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -2600,7 +2600,7 @@ protected StartAnswer execute(StartCommand cmd) {
26002600
setBootOptions(vmSpec, bootMode, vmConfigSpec);
26012601

26022602
// Config vTPM
2603-
configureVirtualTPM(vmMo, vmSpec, vmConfigSpec, bootMode);
2603+
configureVirtualTPM(vmMo, vmSpec, vmConfigSpec);
26042604

26052605
if (StringUtils.isNotEmpty(vmStoragePolicyId)) {
26062606
vmConfigSpec.getVmProfile().add(vmProfileSpec);
@@ -3217,27 +3217,24 @@ protected void configureSpecVideoCardNewVRamSize(VirtualMachineVideoCard videoCa
32173217
* @param vmConfigSpec virtual machine config spec
32183218
* @throws Exception exception
32193219
*/
3220-
protected void configureVirtualTPM(VirtualMachineMO vmMo, VirtualMachineTO vmSpec, VirtualMachineConfigSpec vmConfigSpec, String bootMode) throws Exception {
3220+
protected void configureVirtualTPM(VirtualMachineMO vmMo, VirtualMachineTO vmSpec, VirtualMachineConfigSpec vmConfigSpec) throws Exception {
32213221
String virtualTPMEnabled = vmSpec.getDetails().getOrDefault(VmDetailConstants.VIRTUAL_TPM_ENABLED, null);
32223222
if (Boolean.parseBoolean(virtualTPMEnabled)) {
3223-
if (StringUtils.isBlank(bootMode) || !bootMode.equalsIgnoreCase("uefi")) {
3224-
throw new Exception("VM instance with Virtual TPM must use UEFI boot mode");
3225-
}
32263223
for (VirtualDevice device : vmMo.getAllDeviceList()) {
32273224
if (device instanceof VirtualTPM) {
3228-
logger.debug("Virtual TPM device has already been added, returning");
3225+
logger.debug(String.format("Virtual TPM device has already been added to VM , returning", vmMo.getVmName()));
32293226
return;
32303227
}
32313228
}
32323229
logger.debug("Adding Virtual TPM device");
32333230
addVirtualTPMDevice(vmConfigSpec);
32343231
} else if (virtualTPMEnabled == null) {
3235-
logger.debug("Virtual TPM device is neither enabled nor disabled, skipping");
3232+
logger.debug(String.format("Virtual TPM device is neither enabled nor disabled for VM %s, skipping", vmMo.getVmName()));
32363233
} else {
3237-
logger.debug(String.format("Virtual TPM device is disabled. It is enabled when boot mode is UEFI (actually %s) and vTPM is enabled (actually %s)", bootMode, virtualTPMEnabled));
3234+
logger.debug(String.format("Virtual TPM device is disabled for VM %s", vmMo.getVmName()));
32383235
for (VirtualDevice device : vmMo.getAllDeviceList()) {
32393236
if (device instanceof VirtualTPM) {
3240-
logger.debug("Removing Virtual TPM device as it is disabled");
3237+
logger.debug(String.format("Removing Virtual TPM device from VM %s as it is disabled", vmMo.getVmName()));
32413238
removeVirtualTPMDevice(vmConfigSpec, (VirtualTPM) device);
32423239
}
32433240
}

plugins/hypervisors/vmware/src/test/java/com/cloud/hypervisor/vmware/resource/VmwareResourceTest.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -858,7 +858,7 @@ public void testAddVirtualTPMDevice() throws Exception {
858858
List<VirtualDeviceConfigSpec> deviceChanges = Mockito.mock(List.class);
859859
when(vmConfigSpec.getDeviceChange()).thenReturn(deviceChanges);
860860

861-
vmwareResource.configureVirtualTPM(vmMo, vmSpec, vmConfigSpec, "uefi");
861+
vmwareResource.configureVirtualTPM(vmMo, vmSpec, vmConfigSpec);
862862
Mockito.verify(vmwareResource, Mockito.times(1)).addVirtualTPMDevice(vmConfigSpec);
863863
Mockito.verify(deviceChanges, Mockito.times(1)).add(any(VirtualDeviceConfigSpec.class));
864864
}
@@ -877,7 +877,7 @@ public void testRemoveVirtualTPMDevice() throws Exception {
877877
List<VirtualDeviceConfigSpec> deviceChanges = Mockito.mock(List.class);
878878
when(vmConfigSpec.getDeviceChange()).thenReturn(deviceChanges);
879879

880-
vmwareResource.configureVirtualTPM(vmMo, vmSpec, vmConfigSpec, "uefi");
880+
vmwareResource.configureVirtualTPM(vmMo, vmSpec, vmConfigSpec);
881881
Mockito.verify(vmwareResource, Mockito.times(1)).removeVirtualTPMDevice(vmConfigSpec, tpm);
882882
Mockito.verify(deviceChanges, Mockito.times(1)).add(any(VirtualDeviceConfigSpec.class));
883883
}

0 commit comments

Comments
 (0)