Tomas Jelinek has uploaded a new change for review.

Change subject: engine: added proper instance type handling for the watchdog
......................................................................

engine: added proper instance type handling for the watchdog

If the watchdog is added/updated on the instance type, the specific validation
should not be run since you can add any device to the instance type.
The proper validations are added only when creating the specific VM from the
instance type.

Change-Id: Ibd953828b7bc3ce1607377a7db28970f5ab7a03e
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/AddWatchdogCommand.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/UpdateWatchdogCommand.java
M 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/VmTemplateCommand.java
M 
backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/action/WatchdogParameters.java
A 
frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/UnitVmModelBasedListModel.java
7 files changed, 89 insertions(+), 63 deletions(-)


  git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/88/25088/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 7c5074a..d707ed4 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
@@ -1,16 +1,5 @@
 package org.ovirt.engine.core.bll;
 
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.Date;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-import java.util.concurrent.ConcurrentHashMap;
-import java.util.concurrent.TimeUnit;
-
 import org.apache.commons.lang.StringUtils;
 import org.ovirt.engine.core.bll.quota.QuotaConsumptionParameter;
 import org.ovirt.engine.core.bll.quota.QuotaSanityParameter;
@@ -69,6 +58,17 @@
 import org.ovirt.engine.core.utils.timer.SchedulerUtilQuartzImpl;
 import org.ovirt.engine.core.utils.transaction.TransactionMethod;
 import org.ovirt.engine.core.utils.transaction.TransactionSupport;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import java.util.concurrent.ConcurrentHashMap;
+import java.util.concurrent.TimeUnit;
 
 @DisableInPrepareMode
 @NonTransactiveCommandAttribute(forceCompensation = true)
@@ -262,6 +262,8 @@
                             false);
                 }
 
+                updateWatchdog(getVmTemplateId());
+
                 setSucceeded(true);
                 return null;
             }
diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/AddWatchdogCommand.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/AddWatchdogCommand.java
index 315bd42..baff235 100644
--- 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/AddWatchdogCommand.java
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/AddWatchdogCommand.java
@@ -53,7 +53,7 @@
             return failCanDoAction(VdcBllMessages.WATCHDOG_ALREADY_EXISTS);
         }
 
-        if (!validate(validateModelCompatibleWithOs())) {
+        if (!getParameters().isInstanceType() && 
!validate(validateModelCompatibleWithOs())) {
             return false;
         }
 
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 3aaf24e..d426c06 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
@@ -1,10 +1,6 @@
 package org.ovirt.engine.core.bll;
 
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.List;
-import java.util.Map;
-
+import org.apache.commons.lang.ObjectUtils;
 import org.apache.commons.lang.StringUtils;
 import org.ovirt.engine.core.bll.quota.QuotaConsumptionParameter;
 import org.ovirt.engine.core.bll.quota.QuotaSanityParameter;
@@ -15,27 +11,25 @@
 import org.ovirt.engine.core.common.AuditLogType;
 import org.ovirt.engine.core.common.VdcObjectType;
 import org.ovirt.engine.core.common.action.UpdateVmTemplateParameters;
-import org.ovirt.engine.core.common.action.VdcActionType;
-import org.ovirt.engine.core.common.action.WatchdogParameters;
 import org.ovirt.engine.core.common.businessentities.ActionGroup;
 import org.ovirt.engine.core.common.businessentities.DiskImageBase;
 import org.ovirt.engine.core.common.businessentities.VmEntityType;
 import org.ovirt.engine.core.common.businessentities.VmTemplate;
 import org.ovirt.engine.core.common.businessentities.VmTemplateStatus;
-import org.ovirt.engine.core.common.businessentities.VmWatchdog;
 import org.ovirt.engine.core.common.businessentities.network.VmNic;
-import org.ovirt.engine.core.common.locks.LockingGroup;
-import org.ovirt.engine.core.common.queries.IdQueryParameters;
-import org.ovirt.engine.core.common.queries.VdcQueryReturnValue;
-import org.ovirt.engine.core.common.queries.VdcQueryType;
 import org.ovirt.engine.core.common.errors.VdcBllMessages;
-import org.apache.commons.lang.ObjectUtils;
+import org.ovirt.engine.core.common.locks.LockingGroup;
 import org.ovirt.engine.core.common.utils.Pair;
 import org.ovirt.engine.core.common.validation.group.UpdateEntity;
 import org.ovirt.engine.core.compat.Guid;
 import org.ovirt.engine.core.dal.dbbroker.DbFacade;
-import org.ovirt.engine.core.dal.dbbroker.auditloghandling.AuditLogableBase;
 import org.ovirt.engine.core.dal.dbbroker.auditloghandling.AuditLogDirector;
+import org.ovirt.engine.core.dal.dbbroker.auditloghandling.AuditLogableBase;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+import java.util.Map;
 
 public class UpdateVmTemplateCommand<T extends UpdateVmTemplateParameters> 
extends VmTemplateCommand<T>
         implements QuotaVdsDependent, RenamedEntityInfoProvider{
@@ -181,7 +175,7 @@
             getVmStaticDAO().incrementDbGeneration(getVmTemplate().getId());
             updateOriginalTemplateNameOnDerivedVms();
             UpdateVmTemplate();
-            updateWatchdog();
+            updateWatchdog(getParameters().getVmTemplateData().getId());
             checkTrustedService();
             setSucceeded(true);
         }
@@ -198,41 +192,6 @@
         }
         else if (!getVmTemplate().isTrustedService() && 
getVdsGroup().supportsTrustedService()) {
             AuditLogDirector.log(logable, 
AuditLogType.USER_UPDATE_VM_TEMPLATE_FROM_UNTRUSTED_TO_TRUSTED);
-        }
-    }
-
-    private void updateWatchdog() {
-        // do not update if this flag is not set
-        if (getParameters().isUpdateWatchdog()) {
-            Guid templateId = getParameters().getVmTemplateData().getId();
-            VdcQueryReturnValue query =
-                    getBackend().runInternalQuery(VdcQueryType.GetWatchdog, 
new IdQueryParameters(templateId));
-            List<VmWatchdog> watchdogs = query.getReturnValue();
-            if (watchdogs.isEmpty()) {
-                if (getParameters().getWatchdog() == null) {
-                    // nothing to do, no watchdog and no watchdog to create
-                } else {
-                    WatchdogParameters parameters = new WatchdogParameters();
-                    parameters.setVm(false);
-                    parameters.setId(templateId);
-                    
parameters.setAction(getParameters().getWatchdog().getAction());
-                    
parameters.setModel(getParameters().getWatchdog().getModel());
-                    getBackend().runInternalAction(VdcActionType.AddWatchdog, 
parameters);
-                }
-            } else {
-                WatchdogParameters watchdogParameters = new 
WatchdogParameters();
-                watchdogParameters.setVm(false);
-                watchdogParameters.setId(templateId);
-                if (getParameters().getWatchdog() == null) {
-                    // there is a watchdog in the vm, there should not be any, 
so let's delete
-                    
getBackend().runInternalAction(VdcActionType.RemoveWatchdog, 
watchdogParameters);
-                } else {
-                    // there is a watchdog in the vm, we have to update.
-                    
watchdogParameters.setAction(getParameters().getWatchdog().getAction());
-                    
watchdogParameters.setModel(getParameters().getWatchdog().getModel());
-                    
getBackend().runInternalAction(VdcActionType.UpdateWatchdog, 
watchdogParameters);
-                }
-            }
         }
     }
 
diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/UpdateWatchdogCommand.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/UpdateWatchdogCommand.java
index cf9974c..f8e1c7c 100644
--- 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/UpdateWatchdogCommand.java
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/UpdateWatchdogCommand.java
@@ -32,7 +32,7 @@
             return failCanDoAction(VdcBllMessages.WATCHDOG_NOT_FOUND);
         }
 
-        if (!validate(validateModelCompatibleWithOs())) {
+        if (!getParameters().isInstanceType() && 
!validate(validateModelCompatibleWithOs())) {
             return false;
         }
 
diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/VmTemplateCommand.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/VmTemplateCommand.java
index 3a7df02..9f5ada1 100644
--- 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/VmTemplateCommand.java
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/VmTemplateCommand.java
@@ -9,16 +9,23 @@
 import org.ovirt.engine.core.bll.utils.PermissionSubject;
 import org.ovirt.engine.core.bll.validator.StorageDomainValidator;
 import org.ovirt.engine.core.common.VdcObjectType;
+import org.ovirt.engine.core.common.action.VdcActionType;
 import org.ovirt.engine.core.common.action.VmTemplateParametersBase;
+import org.ovirt.engine.core.common.action.WatchdogParameters;
 import org.ovirt.engine.core.common.businessentities.DiskImage;
 import org.ovirt.engine.core.common.businessentities.ImageStatus;
 import org.ovirt.engine.core.common.businessentities.VmDeviceId;
+import org.ovirt.engine.core.common.businessentities.VmEntityType;
 import org.ovirt.engine.core.common.businessentities.VmTemplate;
 import org.ovirt.engine.core.common.businessentities.VmTemplateStatus;
+import org.ovirt.engine.core.common.businessentities.VmWatchdog;
 import org.ovirt.engine.core.common.businessentities.network.VmNic;
 import org.ovirt.engine.core.common.config.Config;
 import org.ovirt.engine.core.common.config.ConfigValues;
 import org.ovirt.engine.core.common.errors.VdcBllMessages;
+import org.ovirt.engine.core.common.queries.IdQueryParameters;
+import org.ovirt.engine.core.common.queries.VdcQueryReturnValue;
+import org.ovirt.engine.core.common.queries.VdcQueryType;
 import org.ovirt.engine.core.compat.Guid;
 import org.ovirt.engine.core.compat.NotImplementedException;
 import org.ovirt.engine.core.dal.dbbroker.DbFacade;
@@ -193,4 +200,41 @@
         return jobProperties;
     }
 
+    protected void updateWatchdog(Guid templateId) {
+        // do not update if this flag is not set
+        if (getParameters().isUpdateWatchdog()) {
+            VdcQueryReturnValue query =
+                    getBackend().runInternalQuery(VdcQueryType.GetWatchdog, 
new IdQueryParameters(templateId));
+            List<VmWatchdog> watchdogs = query.getReturnValue();
+            if (watchdogs.isEmpty()) {
+                if (getParameters().getWatchdog() == null) {
+                    // nothing to do, no watchdog and no watchdog to create
+                } else {
+                    WatchdogParameters parameters = new WatchdogParameters();
+                    parameters.setVm(false);
+                    
parameters.setInstanceType(getVmTemplate().getTemplateType() == 
VmEntityType.INSTANCE_TYPE);
+
+                    parameters.setId(templateId);
+                    
parameters.setAction(getParameters().getWatchdog().getAction());
+                    
parameters.setModel(getParameters().getWatchdog().getModel());
+                    getBackend().runInternalAction(VdcActionType.AddWatchdog, 
parameters);
+                }
+            } else {
+                WatchdogParameters watchdogParameters = new 
WatchdogParameters();
+                watchdogParameters.setVm(false);
+                
watchdogParameters.setInstanceType(getVmTemplate().getTemplateType() == 
VmEntityType.INSTANCE_TYPE);
+
+                watchdogParameters.setId(templateId);
+                if (getParameters().getWatchdog() == null) {
+                    // there is a watchdog in the vm, there should not be any, 
so let's delete
+                    
getBackend().runInternalAction(VdcActionType.RemoveWatchdog, 
watchdogParameters);
+                } else {
+                    // there is a watchdog in the vm, we have to update.
+                    
watchdogParameters.setAction(getParameters().getWatchdog().getAction());
+                    
watchdogParameters.setModel(getParameters().getWatchdog().getModel());
+                    
getBackend().runInternalAction(VdcActionType.UpdateWatchdog, 
watchdogParameters);
+                }
+            }
+        }
+    }
 }
diff --git 
a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/action/WatchdogParameters.java
 
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/action/WatchdogParameters.java
index c8a5435..3a4ea78 100644
--- 
a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/action/WatchdogParameters.java
+++ 
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/action/WatchdogParameters.java
@@ -12,6 +12,12 @@
      * true if the watchog must be set in the VM, false if it must be set in a 
template
      */
     boolean vm;
+
+    /**
+     * true if the watchog must be set in the instanceType, false otherwise
+     */
+    boolean instanceType;
+
     @NotNull
     Guid id;
     VmWatchdogAction action;
@@ -42,6 +48,14 @@
         return vm;
     }
 
+    public boolean isInstanceType() {
+        return instanceType;
+    }
+
+    public void setInstanceType(boolean instanceType) {
+        this.instanceType = instanceType;
+    }
+
     public void setVm(boolean vm) {
         this.vm = vm;
     }
diff --git 
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/UnitVmModelBasedListModel.java
 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/UnitVmModelBasedListModel.java
new file mode 100644
index 0000000..4c7887c
--- /dev/null
+++ 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/UnitVmModelBasedListModel.java
@@ -0,0 +1,7 @@
+package org.ovirt.engine.ui.uicommonweb.models.vms;
+
+/**
+ * Created by tjelinek on 2/26/14.
+ */
+public class UnitVmModelBasedListModel {
+}


-- 
To view, visit http://gerrit.ovirt.org/25088
To unsubscribe, visit http://gerrit.ovirt.org/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: Ibd953828b7bc3ce1607377a7db28970f5ab7a03e
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