Tomas Jelinek has uploaded a new change for review. Change subject: core: do not consider devices for instance image ......................................................................
core: do not consider devices for instance image WIP Change-Id: I1741f09b439a451b6ccb0a02c6341d8ace10ebc3 Signed-off-by: Tomas Jelinek <[email protected]> --- 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/UpdateVmTemplateCommand.java 2 files changed, 48 insertions(+), 28 deletions(-) git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/67/28367/1 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 5d79cf0..9ba6c99 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 @@ -237,6 +237,8 @@ final Map<Guid, Guid> srcDeviceIdToTargetDeviceIdMapping = new HashMap<>(); + final boolean isImageType = getVmTemplate().getTemplateType() == VmEntityType.IMAGE_TYPE; + TransactionSupport.executeInNewTransaction(new TransactionMethod<Void>() { @Override @@ -252,8 +254,10 @@ public Void runInTransaction() { addPermission(); addVmTemplateImages(srcDeviceIdToTargetDeviceIdMapping); - addVmInterfaces(srcDeviceIdToTargetDeviceIdMapping); - if (isVmInDb) { + if (!isImageType) { + addVmInterfaces(srcDeviceIdToTargetDeviceIdMapping); + } + if (isVmInDb && !isImageType) { VmDeviceUtils.copyVmDevices(getVmId(), getVmTemplateId(), srcDeviceIdToTargetDeviceIdMapping, @@ -262,7 +266,7 @@ getParameters().isVirtioScsiEnabled(), VmDeviceUtils.isBalloonEnabled(getVmId()), false); - } else { + } else if (!isImageType) { // for instance type and new template without a VM VmDeviceUtils.copyVmDevices(VmTemplateHandler.BLANK_VM_TEMPLATE_ID, getVmTemplateId(), @@ -274,8 +278,10 @@ false); } - updateWatchdog(getVmTemplateId()); - updateRngDevice(getVmTemplateId()); + if (!isImageType) { + updateWatchdog(getVmTemplateId()); + updateRngDevice(getVmTemplateId()); + } setSucceeded(true); return 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 fc59dc9..fca5b4b 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 @@ -92,21 +92,28 @@ } private boolean doClusterRelatedChecks() { + boolean isImageType = getVmTemplate().getTemplateType() == VmEntityType.IMAGE_TYPE; if (mOldTemplate.getStatus() == VmTemplateStatus.Locked) { return failCanDoAction(VdcBllMessages.VM_TEMPLATE_IS_LOCKED); } + // Check if the OS type is supported + boolean returnValue = + VmHandler.isOsTypeSupported(getParameters().getVmTemplateData().getOsId(), + getVdsGroup().getArchitecture(), + getReturnValue().getCanDoActionMessages()); + + if (returnValue && !isImageType) { + doDevicesRelatedChecks(); + } + + return returnValue; + } + + private boolean doDevicesRelatedChecks() { // Check that the USB policy is legal boolean returnValue = VmHandler.isUsbPolicyLegal(getParameters().getVmTemplateData().getUsbPolicy(), getParameters().getVmTemplateData().getOsId(), getVdsGroup(), getReturnValue().getCanDoActionMessages()); - - // Check if the OS type is supported - if (returnValue) { - returnValue = - VmHandler.isOsTypeSupported(getParameters().getVmTemplateData().getOsId(), - getVdsGroup().getArchitecture(), - getReturnValue().getCanDoActionMessages()); - } // Check if the watchdog model is supported if (returnValue && getParameters().getWatchdog() != null) { @@ -139,7 +146,6 @@ // Check PCI and IDE limits are ok if (returnValue) { - List<VmNic> interfaces = getVmNicDao().getAllForTemplate(getParameters().getVmTemplateData().getId()); if (!VmCommand.checkPciAndIdeLimit(getParameters().getVmTemplateData().getOsId(), @@ -193,8 +199,10 @@ getVmStaticDAO().incrementDbGeneration(getVmTemplate().getId()); updateOriginalTemplateNameOnDerivedVms(); UpdateVmTemplate(); - updateWatchdog(getParameters().getVmTemplateData().getId()); - updateRngDevice(getParameters().getVmTemplateData().getId()); + if (getVmTemplate().getTemplateType() != VmEntityType.IMAGE_TYPE) { + updateWatchdog(getParameters().getVmTemplateData().getId()); + updateRngDevice(getParameters().getVmTemplateData().getId()); + } checkTrustedService(); setSucceeded(true); } @@ -227,19 +235,25 @@ } private void UpdateVmTemplate() { - VmHandler.updateVmInitToDB(getVmTemplate()); - DbFacade.getInstance().getVmTemplateDao().update(getVmTemplate()); - // also update the smartcard device - VmDeviceUtils.updateSmartcardDevice(getVmTemplateId(), getParameters().getVmTemplateData().isSmartcardEnabled()); - // update audio device - VmDeviceUtils.updateAudioDevice(mOldTemplate, - getVmTemplate(), - getVdsGroup() != null ? getVdsGroup().getcompatibility_version() : null, - getParameters().isSoundDeviceEnabled()); + if (getVmTemplate().getTemplateType() != VmEntityType.IMAGE_TYPE) { + VmHandler.updateVmInitToDB(getVmTemplate()); + } - VmDeviceUtils.updateConsoleDevice(getVmTemplateId(), getParameters().isConsoleEnabled()); - VmDeviceUtils.updateVirtioScsiController(getVmTemplateId(), getParameters().isVirtioScsiEnabled()); - VmDeviceUtils.updateMemoryBalloon(getVmTemplateId(), getParameters().isBalloonEnabled()); + DbFacade.getInstance().getVmTemplateDao().update(getVmTemplate()); + + if (getVmTemplate().getTemplateType() != VmEntityType.IMAGE_TYPE) { + // also update the smartcard device + VmDeviceUtils.updateSmartcardDevice(getVmTemplateId(), getParameters().getVmTemplateData().isSmartcardEnabled()); + // update audio device + VmDeviceUtils.updateAudioDevice(mOldTemplate, + getVmTemplate(), + getVdsGroup() != null ? getVdsGroup().getcompatibility_version() : null, + getParameters().isSoundDeviceEnabled()); + + VmDeviceUtils.updateConsoleDevice(getVmTemplateId(), getParameters().isConsoleEnabled()); + VmDeviceUtils.updateVirtioScsiController(getVmTemplateId(), getParameters().isVirtioScsiEnabled()); + VmDeviceUtils.updateMemoryBalloon(getVmTemplateId(), getParameters().isBalloonEnabled()); + } } @Override -- To view, visit http://gerrit.ovirt.org/28367 To unsubscribe, visit http://gerrit.ovirt.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I1741f09b439a451b6ccb0a02c6341d8ace10ebc3 Gerrit-PatchSet: 1 Gerrit-Project: ovirt-engine Gerrit-Branch: master Gerrit-Owner: Tomas Jelinek <[email protected]> _______________________________________________ Engine-patches mailing list [email protected] http://lists.ovirt.org/mailman/listinfo/engine-patches
