Frank Kobzik has uploaded a new change for review. Change subject: backend: Make adding (virtio-)console to virtual machines optional ......................................................................
backend: Make adding (virtio-)console to virtual machines optional This patch makes it possible to control attaching virtio-console for VMs/templates/VMs in pool. The console is a managed device, therefore corresponding device type was added. Also a command for querying DB for console devices was added. Change-Id: I5d913b1fca9d064424aab58d4c34ec3e4b246373 Bug-Url: https://bugzilla.redhat.com/878459 Signed-off-by: Frantisek Kobzik <fkob...@redhat.com> --- M backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/AddVmAndAttachToPoolCommand.java M backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/AddVmCommand.java M backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/AddVmFromSnapshotCommand.java M backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/AddVmTemplateCommand.java M backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/CommonVmPoolWithVmsCommand.java A backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/GetConsoleDevicesQuery.java M backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/UpdateVmCommand.java M backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/UpdateVmTemplateCommand.java M backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/utils/VmDeviceUtils.java M backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/action/AddVmPoolWithVmsParameters.java M backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/action/AddVmTemplateParameters.java M backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/action/UpdateVmTemplateParameters.java M backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/action/VmManagementParametersBase.java M backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/queries/VdcQueryType.java M backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/utils/VmDeviceType.java M backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/CreateVDSCommand.java M backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/VdsProperties.java M backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/VmInfoBuilder.java M backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/VmInfoBuilderBase.java M backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/VmOldInfoBuilder.java 20 files changed, 196 insertions(+), 25 deletions(-) git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/54/15554/1 diff --git a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/AddVmAndAttachToPoolCommand.java b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/AddVmAndAttachToPoolCommand.java index 3449927..c45ee0c 100644 --- a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/AddVmAndAttachToPoolCommand.java +++ b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/AddVmAndAttachToPoolCommand.java @@ -53,6 +53,7 @@ parameters.setDontCheckTemplateImages(true); parameters.setDontAttachToDefaultTag(true); parameters.setDiskInfoDestinationMap(diskInfoDestinationMap); + parameters.setConsoleEnabled(getParameters().isConsoleEnabled()); return Backend.getInstance().runInternalAction(VdcActionType.AddVm, parameters, diff --git a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/AddVmCommand.java b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/AddVmCommand.java index 2a6401f..77fdea4 100644 --- a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/AddVmCommand.java +++ b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/AddVmCommand.java @@ -97,6 +97,10 @@ setVmTemplateId(parameters.getVmStaticData().getVmtGuid()); } + if (parameters.isConsoleEnabled() == null) { + parameters.setConsoleEnabled(false); + } + parameters.setEntityId(getVmId()); initTemplateDisks(); initStoragePoolId(); @@ -550,7 +554,8 @@ VmDeviceUtils.copyVmDevices(getVmTemplateId(), getVmId(), newDiskImages, - _vmInterfaces); + _vmInterfaces, + getParameters().isConsoleEnabled()); } protected static boolean IsLegalClusterId(Guid clusterId, List<String> reasons) { diff --git a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/AddVmFromSnapshotCommand.java b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/AddVmFromSnapshotCommand.java index e62e0ea..96d3e1f 100644 --- a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/AddVmFromSnapshotCommand.java +++ b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/AddVmFromSnapshotCommand.java @@ -228,7 +228,8 @@ protected void copyVmDevices() { List<VmDevice> devices = new ArrayList<VmDevice>(vmFromConfiguration.getVmUnamagedDeviceList()); devices.addAll(vmFromConfiguration.getManagedVmDeviceMap().values()); - VmDeviceUtils.copyVmDevices(getVmIdFromSnapshot(), getVmId(), vmFromConfiguration, vmFromConfiguration.getStaticData(), true, devices, newDiskImages, _vmInterfaces); + VmDeviceUtils.copyVmDevices(getVmIdFromSnapshot(), getVmId(), vmFromConfiguration, vmFromConfiguration.getStaticData(), + true, devices, newDiskImages, _vmInterfaces, getParameters().isConsoleEnabled()); } @Override diff --git a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/AddVmTemplateCommand.java b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/AddVmTemplateCommand.java index 94e673a..445e4b7 100644 --- a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/AddVmTemplateCommand.java +++ b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/AddVmTemplateCommand.java @@ -102,6 +102,11 @@ if (diskInfoDestinationMap == null) { diskInfoDestinationMap = new HashMap<Guid, DiskImage>(); } + + if (getParameters().isConsoleEnabled() == null) { + parameters.setConsoleEnabled(false); + } + } protected void updateVmDisks() { @@ -157,7 +162,7 @@ AddVmTemplateImages(); List<VmNetworkInterface> vmInterfaces = addVmInterfaces(); if (isVmInDb) { - VmDeviceUtils.copyVmDevices(getVmId(), getVmTemplateId(), newDiskImages, vmInterfaces); + VmDeviceUtils.copyVmDevices(getVmId(), getVmTemplateId(), newDiskImages, vmInterfaces, getParameters().isConsoleEnabled()); } else { // sending true for isVm in order to create basic devices needed VmDeviceUtils.copyVmDevices(getVmId(), @@ -167,7 +172,8 @@ true, Collections.<VmDevice> emptyList(), newDiskImages, - vmInterfaces); + vmInterfaces, + getParameters().isConsoleEnabled()); } setSucceeded(true); diff --git a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/CommonVmPoolWithVmsCommand.java b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/CommonVmPoolWithVmsCommand.java index c247842..583d39a 100644 --- a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/CommonVmPoolWithVmsCommand.java +++ b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/CommonVmPoolWithVmsCommand.java @@ -118,6 +118,8 @@ diskInfoDestinationMap); addVmAndAttachToPoolParams.setSessionId(getParameters().getSessionId()); addVmAndAttachToPoolParams.setParentCommand(VdcActionType.AddVmPoolWithVms); + addVmAndAttachToPoolParams.setConsoleEnabled(getParameters().isConsoleEnabled()); + VdcReturnValueBase returnValue = Backend.getInstance().runInternalAction(VdcActionType.AddVmAndAttachToPool, addVmAndAttachToPoolParams, diff --git a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/GetConsoleDevicesQuery.java b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/GetConsoleDevicesQuery.java new file mode 100644 index 0000000..bde6125 --- /dev/null +++ b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/GetConsoleDevicesQuery.java @@ -0,0 +1,34 @@ +package org.ovirt.engine.core.bll; + +import java.util.ArrayList; +import java.util.List; + +import org.ovirt.engine.core.common.businessentities.VmDevice; +import org.ovirt.engine.core.common.businessentities.VmDeviceGeneralType; +import org.ovirt.engine.core.common.queries.IdQueryParameters; +import org.ovirt.engine.core.dao.VmDeviceDAO; + +public class GetConsoleDevicesQuery<P extends IdQueryParameters> extends QueriesCommandBase<P> { + + public GetConsoleDevicesQuery(P parameters) { + super(parameters); + } + + @Override + protected void executeQueryCommand() { + final List<VmDevice> consoleDevices = getVmDeviceDAO().getVmDeviceByVmIdAndType(getParameters().getId(), + VmDeviceGeneralType.CONSOLE); + + List<String> result = new ArrayList<String>(consoleDevices.size()); + for (VmDevice v : consoleDevices) { + result.add(v.getDevice()); + } + + getQueryReturnValue().setReturnValue(result); + } + + protected VmDeviceDAO getVmDeviceDAO() { + return getDbFacade().getVmDeviceDao(); + } + +} diff --git a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/UpdateVmCommand.java b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/UpdateVmCommand.java index 25e41b2..eec660a 100644 --- a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/UpdateVmCommand.java +++ b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/UpdateVmCommand.java @@ -38,6 +38,7 @@ import org.ovirt.engine.core.common.queries.VdcQueryReturnValue; import org.ovirt.engine.core.common.queries.VdcQueryType; import org.ovirt.engine.core.common.utils.Pair; +import org.ovirt.engine.core.common.utils.VmDeviceType; import org.ovirt.engine.core.common.validation.group.UpdateEntity; import org.ovirt.engine.core.compat.DateTime; import org.ovirt.engine.core.compat.Guid; @@ -67,6 +68,10 @@ if (isVmExist()) { setCustomDefinedProperties(parameters.getVmStaticData()); setCustomDefinedProperties(getVm().getStaticData()); + } + + if (parameters.isConsoleEnabled() == null) { + parameters.setConsoleEnabled(false); } } @@ -334,9 +339,20 @@ return failCanDoAction(VdcBllMessages.VM_HOSTCPU_MUST_BE_PINNED_TO_HOST); } + if (getVm().isRunning() && consoleDeviceChanged()) { + return failCanDoAction(VdcBllMessages.ACTION_TYPE_FAILED_VM_IS_RUNNING); + } + return true; } + private boolean consoleDeviceChanged() { + List<VmDevice> consoleDevices = getVmDeviceDao().getVmDeviceByVmIdTypeAndDevice(getParameters().getVmId(), + VmDeviceGeneralType.CONSOLE, VmDeviceType.CONSOLE.getName()); + + return getParameters().isConsoleEnabled() == consoleDevices.isEmpty(); + } + private boolean isVmExist() { return getParameters().getVmStaticData() != null && getVm() != null; } diff --git a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/UpdateVmTemplateCommand.java b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/UpdateVmTemplateCommand.java index 12ab83bd..1a788cf 100644 --- a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/UpdateVmTemplateCommand.java +++ b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/UpdateVmTemplateCommand.java @@ -154,6 +154,7 @@ DbFacade.getInstance().getVmTemplateDao().update(getVmTemplate()); // also update the smartcard device VmDeviceUtils.updateSmartcardDevice(getVmTemplateId(), getParameters().getVmTemplateData().isSmartcardEnabled()); + VmDeviceUtils.updateConsoleDevice(getVmTemplateId(), getParameters().isConsoleEnabled()); } @Override diff --git a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/utils/VmDeviceUtils.java b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/utils/VmDeviceUtils.java index 219d717..e1fa912 100644 --- a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/utils/VmDeviceUtils.java +++ b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/utils/VmDeviceUtils.java @@ -85,6 +85,7 @@ updateAudioDevice(oldVm, entity); updateSmartcardDevice(oldVm, entity); + updateConsoleDevice(entity, params.isConsoleEnabled()); } } @@ -118,6 +119,37 @@ VmDeviceGeneralType.SMARTCARD, VmDeviceType.SMARTCARD, new SmartcardSpecParams(), + true, + false, + null); + } + + private static void updateConsoleDevice(VmBase newVmBase, boolean consoleEnabled) { + updateConsoleDevice(newVmBase.getId(), consoleEnabled); + } + + public static void updateConsoleDevice(Guid vmId, boolean consoleEnabled) { + List<VmDevice> consoles = DbFacade.getInstance() + .getVmDeviceDao() + .getVmDeviceByVmIdTypeAndDevice(vmId, + VmDeviceGeneralType.CONSOLE, VmDeviceType.CONSOLE.getName()); + + if (consoleEnabled) { + if (consoles.isEmpty()) { + addConsoleDevice(vmId); + } + } else { + for (VmDevice device : consoles) { + dao.remove(device.getId()); + } + } + } + + private static void addConsoleDevice(Guid vmId) { + VmDeviceUtils.addManagedDevice(new VmDeviceId(Guid.NewGuid(), vmId), + VmDeviceGeneralType.CONSOLE, + VmDeviceType.CONSOLE, + new HashMap<String, Object>(), true, false, null); @@ -165,7 +197,10 @@ /** * Copy related data from the given VM/VmBase/VmDevice list to the destination VM/VmTemplate. */ - public static void copyVmDevices(Guid srcId, Guid dstId, VM vm, VmBase vmBase, boolean isVm, List<VmDevice> devicesDataToUse, List<DiskImage> disks, List<VmNetworkInterface> ifaces) { + public static void copyVmDevices(Guid srcId, Guid dstId, VM vm, VmBase vmBase, + boolean isVm, List<VmDevice> devicesDataToUse, List<DiskImage> disks, + List<VmNetworkInterface> ifaces, boolean isConsoleEnabled) + { Guid id; int diskCount = 0; int ifaceCount = 0; @@ -175,6 +210,7 @@ // indicates if VM has already a non empty CD in DB boolean hasAlreadyCD = (!(DbFacade.getInstance().getVmDeviceDao().getVmDeviceByVmIdTypeAndDevice(vmBase.getId(), VmDeviceGeneralType.DISK, VmDeviceType.CDROM.getName())).isEmpty()); boolean addCD = (!hasAlreadyCD && shouldHaveCD); + boolean hasAlreadyConsoleDevice = false; for (VmDevice device : devicesDataToUse) { id = Guid.NewGuid(); Map<String, Object> specParams = new HashMap<String, Object>(); @@ -243,6 +279,9 @@ specParams.putAll(device.getSpecParams()); break; + case CONSOLE: + hasAlreadyConsoleDevice = true; + default: break; } @@ -253,6 +292,10 @@ // if VM does not has CD, add an empty CD if (!shouldHaveCD) { addEmptyCD(dstId); + } + + if (isConsoleEnabled && !hasAlreadyConsoleDevice) { + addConsoleDevice(dstId); } if (isVm) { @@ -298,7 +341,8 @@ * @param disks * The disks which were saved for the destination VM. */ - public static void copyVmDevices(Guid srcId, Guid dstId, List<DiskImage> disks, List<VmNetworkInterface> ifaces) { + public static void copyVmDevices(Guid srcId, Guid dstId, List<DiskImage> disks, List<VmNetworkInterface> ifaces, + boolean isConsoleEnabled) { VM vm = DbFacade.getInstance().getVmDao().get(dstId); VmBase vmBase = (vm != null) ? vm.getStaticData() : null; boolean isVm = (vmBase != null); @@ -306,7 +350,7 @@ vmBase = DbFacade.getInstance().getVmTemplateDao().get(dstId); } List<VmDevice> devices = dao.getVmDeviceByVmId(srcId); - copyVmDevices(srcId, dstId, vm, vmBase, isVm, devices, disks, ifaces); + copyVmDevices(srcId, dstId, vm, vmBase, isVm, devices, disks, ifaces, isConsoleEnabled); } private static void addVideoDevice(VmBase vm) { @@ -888,4 +932,3 @@ && vmDevice.getType() == VmDeviceGeneralType.INTERFACE); } } - diff --git a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/action/AddVmPoolWithVmsParameters.java b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/action/AddVmPoolWithVmsParameters.java index 084fde7..53feed0 100644 --- a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/action/AddVmPoolWithVmsParameters.java +++ b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/action/AddVmPoolWithVmsParameters.java @@ -6,8 +6,8 @@ import org.ovirt.engine.core.common.businessentities.DiskImage; import org.ovirt.engine.core.common.businessentities.VM; -import org.ovirt.engine.core.common.businessentities.VmStatic; import org.ovirt.engine.core.common.businessentities.VmPool; +import org.ovirt.engine.core.common.businessentities.VmStatic; import org.ovirt.engine.core.compat.Guid; public class AddVmPoolWithVmsParameters extends VmPoolOperationParameters { @@ -18,6 +18,7 @@ private int _vmsCount; private int _diskSize; private HashMap<Guid, DiskImage> diskInfoDestinationMap; + private Boolean consoleEnabled; public AddVmPoolWithVmsParameters() { } @@ -49,4 +50,13 @@ public void setDiskInfoDestinationMap(HashMap<Guid, DiskImage> diskInfoDestinationMap) { this.diskInfoDestinationMap = diskInfoDestinationMap; } + + public Boolean isConsoleEnabled() { + return consoleEnabled; + } + + public void setConsoleEnabled(Boolean consoleEnabled) { + this.consoleEnabled = consoleEnabled; + } + } diff --git a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/action/AddVmTemplateParameters.java b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/action/AddVmTemplateParameters.java index 8c7628e..524d87a 100644 --- a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/action/AddVmTemplateParameters.java +++ b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/action/AddVmTemplateParameters.java @@ -35,6 +35,7 @@ private String _description; private boolean publicUse = false; + private Boolean consoleEnabled; public AddVmTemplateParameters(VmStatic masterVm, String name, String description) { _masterVm = masterVm; @@ -102,4 +103,13 @@ public void setDiskInfoDestinationMap(HashMap<Guid, DiskImage> diskInfoDestinationMap) { this.diskInfoDestinationMap = diskInfoDestinationMap; } + + public Boolean isConsoleEnabled() { + return consoleEnabled; + } + + public void setConsoleEnabled(Boolean consoleEnabled) { + this.consoleEnabled = consoleEnabled; + } + } diff --git a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/action/UpdateVmTemplateParameters.java b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/action/UpdateVmTemplateParameters.java index 539f083..746ce0d 100644 --- a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/action/UpdateVmTemplateParameters.java +++ b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/action/UpdateVmTemplateParameters.java @@ -8,6 +8,7 @@ private static final long serialVersionUID = 7250355162926369307L; @Valid private VmTemplate _vmTemplate; + private Boolean consoleEnabled; public UpdateVmTemplateParameters(VmTemplate vmTemplate) { _vmTemplate = vmTemplate; @@ -19,4 +20,13 @@ public UpdateVmTemplateParameters() { } + + public Boolean isConsoleEnabled() { + return consoleEnabled; + } + + public void setConsoleEnabled(Boolean consoleEnabled) { + this.consoleEnabled = consoleEnabled; + } + } diff --git a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/action/VmManagementParametersBase.java b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/action/VmManagementParametersBase.java index 28c53b8..a83028b 100644 --- a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/action/VmManagementParametersBase.java +++ b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/action/VmManagementParametersBase.java @@ -24,12 +24,13 @@ private VmPayload payload; private boolean clearPayload; private boolean balloonEnabled = true; + private Boolean consoleEnabled = false; private VM vm = null; private VmWatchdog watchdog = null; /* - * This parameter is needed at update to make sure that when we get a null watchdog from rest-api - * it is not meant to be removing the watchdog, rest-api will simply call watchdog commands directly. - * Default is false so to avoid breaking rest-api. + * This parameter is needed at update to make sure that when we get a null watchdog from rest-api it is not meant to + * be removing the watchdog, rest-api will simply call watchdog commands directly. Default is false so to avoid + * breaking rest-api. */ private boolean updateWatchdog = false; @@ -147,4 +148,12 @@ this.updateWatchdog = updateWatchdog; } + public Boolean isConsoleEnabled() { + return consoleEnabled; + } + + public void setConsoleEnabled(Boolean consoleEnabled) { + this.consoleEnabled = consoleEnabled; + } + } diff --git a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/queries/VdcQueryType.java b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/queries/VdcQueryType.java index 7e7dceb..7de51e5 100644 --- a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/queries/VdcQueryType.java +++ b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/queries/VdcQueryType.java @@ -246,6 +246,7 @@ GetAllProviders, GetWatchdog(VdcQueryAuthType.User), + GetConsoleDevices(VdcQueryAuthType.User), GetDeviceCustomProperties(VdcQueryAuthType.User), diff --git a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/utils/VmDeviceType.java b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/utils/VmDeviceType.java index 83e4239..3c461a0 100644 --- a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/utils/VmDeviceType.java +++ b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/utils/VmDeviceType.java @@ -19,6 +19,7 @@ MEMBALLOON("memballoon"), SMARTCARD("smartcard"), BALLOON("balloon"), + CONSOLE("console"), WATCHDOG("watchdog"), OTHER("other", "0"), UNKNOWN("unknown", "-1"); diff --git a/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/CreateVDSCommand.java b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/CreateVDSCommand.java index 36819ad..be20919 100644 --- a/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/CreateVDSCommand.java +++ b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/CreateVDSCommand.java @@ -69,6 +69,7 @@ builder.buildVmBootSequence(); builder.buildVmBootOptions(); builder.buildVmSoundDevices(); + builder.buildVmConsoleDevice(); builder.buildVmTimeZone(); builder.buildVmUsbDevices(); builder.buildVmMemoryBalloon(); diff --git a/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/VdsProperties.java b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/VdsProperties.java index d81bbe2..7504903 100644 --- a/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/VdsProperties.java +++ b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/VdsProperties.java @@ -205,6 +205,7 @@ public static final String Floppy = "floppy"; // Optional public static final String Snapshot = "snapshotFile"; // Optional public static final String soundDevice = "soundDevice"; + public static final String virtioConsole = "console"; public static final String cpuType = "cpuType"; public static final String niceLevel = "nice"; public static final String hiberVolHandle = "hiberVolHandle"; diff --git a/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/VmInfoBuilder.java b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/VmInfoBuilder.java index 963bf7b..04d7e6a 100644 --- a/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/VmInfoBuilder.java +++ b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/VmInfoBuilder.java @@ -344,21 +344,32 @@ @Override protected void buildVmSoundDevices() { if (vm.getVmType() == VmType.Desktop) { - // get vm device for Sound device from DB - List<VmDevice> vmDevices = - DbFacade.getInstance() - .getVmDeviceDao() - .getVmDeviceByVmIdAndType(vm.getId(), - VmDeviceGeneralType.SOUND); - for (VmDevice vmDevice : vmDevices) { - Map struct = new HashMap(); - struct.put(VdsProperties.Type, vmDevice.getType().getValue()); - struct.put(VdsProperties.Device, vmDevice.getDevice()); - struct.put(VdsProperties.SpecParams, vmDevice.getSpecParams()); - struct.put(VdsProperties.DeviceId, String.valueOf(vmDevice.getId().getDeviceId())); + buildVmDevicesFromDb(VmDeviceGeneralType.SOUND, true); + } + } + + @Override + protected void buildVmConsoleDevice() { + buildVmDevicesFromDb(VmDeviceGeneralType.CONSOLE, false); + } + + private void buildVmDevicesFromDb(VmDeviceGeneralType generalType, boolean addAddress) { + List<VmDevice> vmDevices = + DbFacade.getInstance() + .getVmDeviceDao() + .getVmDeviceByVmIdAndType(vm.getId(), + generalType); + + for (VmDevice vmDevice : vmDevices) { + Map struct = new HashMap(); + struct.put(VdsProperties.Type, vmDevice.getType().getValue()); + struct.put(VdsProperties.Device, vmDevice.getDevice()); + struct.put(VdsProperties.SpecParams, vmDevice.getSpecParams()); + struct.put(VdsProperties.DeviceId, String.valueOf(vmDevice.getId().getDeviceId())); + if (addAddress) { addAddress(vmDevice, struct); - devices.add(struct); } + devices.add(struct); } } diff --git a/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/VmInfoBuilderBase.java b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/VmInfoBuilderBase.java index 71f6a21..8de79db 100644 --- a/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/VmInfoBuilderBase.java +++ b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/VmInfoBuilderBase.java @@ -274,6 +274,8 @@ protected abstract void buildVmSoundDevices(); + protected abstract void buildVmConsoleDevice(); + protected abstract void buildUnmanagedDevices(); protected abstract void buildVmBootSequence(); diff --git a/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/VmOldInfoBuilder.java b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/VmOldInfoBuilder.java index b6680ea..a30503a 100644 --- a/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/VmOldInfoBuilder.java +++ b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/VmOldInfoBuilder.java @@ -183,6 +183,11 @@ } @Override + protected void buildVmConsoleDevice() { + // Not supported in old code + } + + @Override protected void buildVmBootSequence() { // get device list for the VM List<VmDevice> devices = DbFacade.getInstance().getVmDeviceDao() @@ -214,6 +219,7 @@ // Not supported in old code } + @Override protected void buildVmWatchdog() { // Not supported in old code } -- To view, visit http://gerrit.ovirt.org/15554 To unsubscribe, visit http://gerrit.ovirt.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I5d913b1fca9d064424aab58d4c34ec3e4b246373 Gerrit-PatchSet: 1 Gerrit-Project: ovirt-engine Gerrit-Branch: master Gerrit-Owner: Frank Kobzik <fkob...@redhat.com> _______________________________________________ Engine-patches mailing list Engine-patches@ovirt.org http://lists.ovirt.org/mailman/listinfo/engine-patches