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

Reply via email to