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());