From 22d60ba62190cfc44b69d90c45a3978e2258cbb7 Mon Sep 17 00:00:00 2001 From: Edison Su Date: Fri, 10 Jun 2011 14:13:54 -0400 Subject: [PATCH] bug 10195: if host is in Alert state, listvmcmd will mark the state of all the vms on the host as "Unknown" status 10195: resolved, fixed --- .../src/com/cloud/api/ApiResponseHelper.java | 23 +++++++++++++------ 1 file changed, 16 insertions(+), 7 deletions(-) diff --git a/server/src/com/cloud/api/ApiResponseHelper.java b/server/src/com/cloud/api/ApiResponseHelper.java index 2731b6c14ec..c793e063475 100755 --- a/server/src/com/cloud/api/ApiResponseHelper.java +++ b/server/src/com/cloud/api/ApiResponseHelper.java @@ -1040,9 +1040,7 @@ public class ApiResponseHelper implements ResponseGenerator { userVmResponse.setName(userVm.getHostName()); userVmResponse.setCreated(userVm.getCreated()); - if (userVm.getState() != null) { - userVmResponse.setState(userVm.getState().toString()); - } + userVmResponse.setHaEnable(userVm.isHaEnabled()); @@ -1068,18 +1066,29 @@ public class ApiResponseHelper implements ResponseGenerator { userVmResponse.setZoneId(zone.getId()); userVmResponse.setZoneName(zone.getName()); - // if user is an admin, display host id - if (((caller == null) || (caller.getType() == Account.ACCOUNT_TYPE_ADMIN)) && (userVm.getHostId() != null)) { - Host host = hosts.get(userVm.getHostId()); + Host host = null; + if (userVm.getHostId() != null) { + host = hosts.get(userVm.getHostId()); if (host == null) { host = ApiDBUtils.findHostById(userVm.getHostId()); hosts.put(host.getId(), host); } - + + } + // if user is an admin, display host id + if (((caller == null) || (caller.getType() == Account.ACCOUNT_TYPE_ADMIN)) && (host != null)) { userVmResponse.setHostId(host.getId()); userVmResponse.setHostName(host.getName()); } + + if (userVm.getState() != null) { + if (host != null && host.getStatus() == com.cloud.host.Status.Alert) { + userVmResponse.setState(VirtualMachine.State.Unknown.toString()); + } else { + userVmResponse.setState(userVm.getState().toString()); + } + } if (userVm.getHypervisorType() != null) { userVmResponse.setHypervisor(userVm.getHypervisorType().toString());