private Response cloneVmFromSnapshot(org.ovirt.engine.core.common.businessentities.VM configVm,
Vm vm,
String snapshotId,
Map<Guid, DiskImage> images) {
VmStatic staticVm = configVm.getStaticData();
Guid sourceSnapshotId = asGuid(snapshotId);
AddVmFromSnapshotParameters params =
new AddVmFromSnapshotParameters(staticVm, sourceSnapshotId);
params.setDiskInfoDestinationMap(images);
params.setMakeCreatorExplicitOwner(shouldMakeCreatorExplicitOwner());
params.setVirtioScsiEnabled(vm.isSetVirtioScsi() && vm.getVirtioScsi().isSetEnabled() ?
vm.getVirtioScsi().isEnabled() : null);
if(vm.isSetSoundcardEnabled()) {
params.setSoundDeviceEnabled(vm.isSoundcardEnabled());
} else {
params.setSoundDeviceEnabled(isVMDeviceTypeExist(configVm.getManagedVmDeviceMap(), VmDeviceGeneralType.SOUND));
}
params.setConsoleEnabled(vm.isSetConsole() && vm.getConsole().isSetEnabled()
? vm.getConsole().isEnabled()
: !getConsoleDevicesForEntity(staticVm.getId()).isEmpty());
if (vm.isSetRngDevice()) {
params.setUpdateRngDevice(true);
params.setRngDevice(RngDeviceMapper.map(vm.getRngDevice(), null));
}
DisplayHelper.setGraphicsToParams(vm.getDisplay(), params);
return performCreate(ActionType.AddVmFromSnapshot,
params,
new QueryIdResolver<Guid>(QueryType.GetVmByVmId, IdQueryParameters.class));
}