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
This commit is contained in:
Edison Su 2011-06-10 14:13:54 -04:00
parent 5f7f885c6a
commit 22d60ba621

View File

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