Arik Hadas has uploaded a new change for review. Change subject: core: change the way we rerun HA VMs on fence flows ......................................................................
core: change the way we rerun HA VMs on fence flows On both manual and automatic fencing flows, we used to rerun highly available VMs by invoking RunVmCommand directly. The problem is that this way we don't retry if it fails. The solution is to rerun the highly available VMs using AutoStartVmsRunner job in these flows as well. Change-Id: Ic259ff22c4b6f24b09eb973de6e31ebc51aa966b Bug-Url: https://bugzilla.redhat.com/1077706 Signed-off-by: Arik Hadas <aha...@redhat.com> --- M backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/ClearNonResponsiveVdsVmsCommand.java M backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/FenceVdsBaseCommand.java 2 files changed, 8 insertions(+), 13 deletions(-) git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/49/26049/1 diff --git a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/ClearNonResponsiveVdsVmsCommand.java b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/ClearNonResponsiveVdsVmsCommand.java index 31126f0..6f385ff 100644 --- a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/ClearNonResponsiveVdsVmsCommand.java +++ b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/ClearNonResponsiveVdsVmsCommand.java @@ -6,9 +6,6 @@ import org.ovirt.engine.core.bll.job.ExecutionHandler; import org.ovirt.engine.core.common.AuditLogType; -import org.ovirt.engine.core.common.action.RunVmParams; -import org.ovirt.engine.core.common.action.VdcActionParametersBase; -import org.ovirt.engine.core.common.action.VdcActionType; import org.ovirt.engine.core.common.action.VdsActionParameters; import org.ovirt.engine.core.common.businessentities.VDSStatus; import org.ovirt.engine.core.common.businessentities.VM; @@ -46,10 +43,10 @@ protected void executeCommand() { List<VM> vms = DbFacade.getInstance().getVmDao().getAllRunningForVds(getVdsId()); Collections.sort(vms, Collections.reverseOrder(new VmsComparer())); - ArrayList<VdcActionParametersBase> runVmParamsList = new ArrayList<VdcActionParametersBase>(); + List<Guid> autoStartVmIdsToRerun = new ArrayList<>(); for (VM vm : vms) { if (vm.isAutoStartup()) { - runVmParamsList.add(new RunVmParams(vm.getId())); + autoStartVmIdsToRerun.add(vm.getId()); } VDSReturnValue returnValue = Backend .getInstance() @@ -69,8 +66,8 @@ .getResourceManager() .RunVdsCommand(VDSCommandType.UpdateVdsVMsCleared, new UpdateVdsVMsClearedVDSCommandParameters(getVdsId())); - if (runVmParamsList.size() > 0) { - Backend.getInstance().runInternalMultipleActions(VdcActionType.RunVm, runVmParamsList); + if (!autoStartVmIdsToRerun.isEmpty()) { + AutoStartVmsRunner.getInstance().addVmsToRun(autoStartVmIdsToRerun); } setSucceeded(true); } diff --git a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/FenceVdsBaseCommand.java b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/FenceVdsBaseCommand.java index c220057..1129863 100644 --- a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/FenceVdsBaseCommand.java +++ b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/FenceVdsBaseCommand.java @@ -14,8 +14,6 @@ import org.ovirt.engine.core.bll.job.ExecutionHandler; import org.ovirt.engine.core.common.AuditLogType; import org.ovirt.engine.core.common.action.FenceVdsActionParameters; -import org.ovirt.engine.core.common.action.RunVmParams; -import org.ovirt.engine.core.common.action.VdcActionParametersBase; import org.ovirt.engine.core.common.action.VdcActionType; import org.ovirt.engine.core.common.businessentities.FenceActionType; import org.ovirt.engine.core.common.businessentities.FenceAgentOrder; @@ -467,7 +465,7 @@ } protected void restartVdsVms() { - ArrayList<VdcActionParametersBase> runVmParamsList = new ArrayList<VdcActionParametersBase>(); + List<Guid> autoStartVmIdsToRerun = new ArrayList<>(); // restart all running vms of a failed vds. for (VM vm : mVmList) { destroyVmOnDestination(vm); @@ -488,11 +486,11 @@ // Handle highly available VMs if (vm.isAutoStartup()) { - runVmParamsList.add(new RunVmParams(vm.getId())); + autoStartVmIdsToRerun.add(vm.getId()); } } - if (runVmParamsList.size() > 0) { - Backend.getInstance().runInternalMultipleActions(VdcActionType.RunVm, runVmParamsList); + if (!autoStartVmIdsToRerun.isEmpty()) { + AutoStartVmsRunner.getInstance().addVmsToRun(autoStartVmIdsToRerun); } setVm(null); setVmId(Guid.Empty); -- To view, visit http://gerrit.ovirt.org/26049 To unsubscribe, visit http://gerrit.ovirt.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: Ic259ff22c4b6f24b09eb973de6e31ebc51aa966b Gerrit-PatchSet: 1 Gerrit-Project: ovirt-engine Gerrit-Branch: master Gerrit-Owner: Arik Hadas <aha...@redhat.com> _______________________________________________ Engine-patches mailing list Engine-patches@ovirt.org http://lists.ovirt.org/mailman/listinfo/engine-patches