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
