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

Reply via email to