bug 10195: if vm's host is in alert state, return unknown state in listvmcmd

status 10195: resolved fixed
This commit is contained in:
Edison Su 2011-12-12 16:19:25 -08:00
parent 8098045645
commit e02520a518

View File

@ -1221,9 +1221,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());
@ -1270,6 +1268,24 @@ public class ApiResponseHelper implements ResponseGenerator {
userVmResponse.setHostId(host.getId());
userVmResponse.setHostName(host.getName());
}
if (userVm.getState() != null) {
if (userVm.getHostId() != null) {
Host host = hosts.get(userVm.getHostId());
if (host == null) {
host = ApiDBUtils.findHostById(userVm.getHostId());
hosts.put(host.getId(), host);
}
if (host.getStatus() == com.cloud.host.Status.Alert) {
userVmResponse.setState(VirtualMachine.State.Unknown.toString());
} else {
userVmResponse.setState(userVm.getState().toString());
}
} else {
userVmResponse.setState(userVm.getState().toString());
}
}
if (caller.getType() == Account.ACCOUNT_TYPE_ADMIN || caller.getType() == Account.ACCOUNT_TYPE_RESOURCE_DOMAIN_ADMIN) {
if (userVm.getHypervisorType() != null){