Francesco Romani has uploaded a new change for review. Change subject: WIP: engine: fetch exit reason from VDSM ......................................................................
WIP: engine: fetch exit reason from VDSM VDSM has gained the capability to report the reason why a VM is gone in `down` status. see http://gerrit.ovirt.org/#/c/22631/ This patch adds support for this field; backward compatibility with old VDSM lacking this field is ensured. Change-Id: Ib36f06f3ba63a743d624e417fe2c96b84dda60be Signed-off-by: Francesco Romani <[email protected]> --- M backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/VmDynamic.java A backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/VmExitReason.java M backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/VdsBrokerObjectsBuilder.java M backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/VdsProperties.java 4 files changed, 43 insertions(+), 1 deletion(-) git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/46/23946/1 diff --git a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/VmDynamic.java b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/VmDynamic.java index 4f10cfa..7fbe3d6 100644 --- a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/VmDynamic.java +++ b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/VmDynamic.java @@ -67,6 +67,8 @@ @UnchangeableByVdsm private String cpuName; private String currentCd; + @UnchangeableByVdsm + private VmExitReason exitReason; public static final String APPLICATIONS_LIST_FIELD_NAME = "appList"; public static final String STATUS_FIELD_NAME = "status"; @@ -116,6 +118,7 @@ result = prime * result + (runOnce ? 1231 : 1237); result = prime * result + (cpuName == null ? 0 : cpuName.hashCode()); result = prime * result + (currentCd == null ? 0 : currentCd.hashCode()); + result = prime * result + exitReason.hashCode(); return result; } @@ -171,7 +174,8 @@ && ObjectUtils.objectsEqual(lastWatchdogAction, other.lastWatchdogAction) && runOnce == other.runOnce && ObjectUtils.objectsEqual(cpuName, other.cpuName) - && ObjectUtils.objectsEqual(currentCd, other.currentCd)); + && ObjectUtils.objectsEqual(currentCd, other.currentCd) + && exitReason == other.exitReason); } public String getExitMessage() { @@ -233,6 +237,7 @@ kvmEnable = true; session = SessionState.Unknown; bootSequence = BootSequence.C; + exitReason = VmExitReason.Unknown; } public String getAppList() { @@ -539,4 +544,12 @@ public void setCurrentCd(String currentCd) { this.currentCd = currentCd; } + + public VmExitReason getExitReason() { + return exitReason; + } + + public void setExitMessage(VmExitReason value) { + exitReason = value; + } } diff --git a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/VmExitReason.java b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/VmExitReason.java new file mode 100644 index 0000000..157fd8f --- /dev/null +++ b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/VmExitReason.java @@ -0,0 +1,22 @@ +package org.ovirt.engine.core.common.businessentities; + +public enum VmExitReason { + Unknown(-1), + Success(0), + GenericError(1), + LostQEMUConnection(2), + LibvirtStartFailed(3), + MigrationSucceeded(4), + SaveStateSucceeded(5), + AdminShutdown(6), + UserShutdown(7), + MigrationFailed(8); + + public int getValue() { + return this.ordinal(); + } + + public static VmExitStatus forValue(int value) { + return values()[value]; + } +} diff --git a/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/VdsBrokerObjectsBuilder.java b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/VdsBrokerObjectsBuilder.java index e05e511..52e60fa 100644 --- a/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/VdsBrokerObjectsBuilder.java +++ b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/VdsBrokerObjectsBuilder.java @@ -222,6 +222,12 @@ String exitMsg = (String) xmlRpcStruct.get(VdsProperties.exit_message); vm.setExitMessage(exitMsg); } + if (xmlRpcStruct.containsKey(VdsProperties.exit_reason)) { + String exitReasonStr = xmlRpcStruct.get(VdsProperties.exit_reason).toString(); + vm.setExitReason(VmExitReason.forValue(Integer.parseInt(exitReasonStr))); + } else { + vm.setExitReason(VmExitReason.Unknown); + } // if monitorResponse returns negative it means its erroneous if (xmlRpcStruct.containsKey(VdsProperties.monitorResponse)) { diff --git a/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/VdsProperties.java b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/VdsProperties.java index 2c7cd65..16c46a3 100644 --- a/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/VdsProperties.java +++ b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/VdsProperties.java @@ -154,6 +154,7 @@ public static final String exit_message = "exitMessage"; public static final String multimedia_ports = "multimediaPorts"; public static final String monitorResponse = "monitorResponse"; + public static final String exit_reason = "exitReason"; // Disks usage configuration public static final String VM_DISKS_USAGE = "disksUsage"; -- To view, visit http://gerrit.ovirt.org/23946 To unsubscribe, visit http://gerrit.ovirt.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: Ib36f06f3ba63a743d624e417fe2c96b84dda60be Gerrit-PatchSet: 1 Gerrit-Project: ovirt-engine Gerrit-Branch: master Gerrit-Owner: Francesco Romani <[email protected]> _______________________________________________ Engine-patches mailing list [email protected] http://lists.ovirt.org/mailman/listinfo/engine-patches
