bug 6736: rebootSystemVm should return the vm properties, not success true/false.

status 6736: resolved fixed
This commit is contained in:
Kris McQueen 2010-10-26 17:19:55 -07:00
parent 95da86ef1a
commit a788d2cb2e
4 changed files with 65 additions and 19 deletions

View File

@ -20,14 +20,18 @@ package com.cloud.api.commands;
import org.apache.log4j.Logger;
import com.cloud.api.ApiDBUtils;
import com.cloud.api.BaseAsyncCmd;
import com.cloud.api.BaseCmd.Manager;
import com.cloud.api.Implementation;
import com.cloud.api.Parameter;
import com.cloud.api.response.SuccessResponse;
import com.cloud.api.response.SystemVmResponse;
import com.cloud.event.EventTypes;
import com.cloud.user.Account;
import com.cloud.user.UserContext;
import com.cloud.vm.ConsoleProxyVO;
import com.cloud.vm.SecondaryStorageVmVO;
import com.cloud.vm.VMInstanceVO;
@Implementation(method="rebootSystemVM", manager=Manager.ManagementServer, description="Reboots a system VM.")
public class RebootSystemVmCmd extends BaseAsyncCmd {
@ -80,10 +84,50 @@ public class RebootSystemVmCmd extends BaseAsyncCmd {
}
@Override @SuppressWarnings("unchecked")
public SuccessResponse getResponse() {
Boolean success = (Boolean)getResponseObject();
SuccessResponse response = new SuccessResponse();
response.setSuccess(success);
public SystemVmResponse getResponse() {
VMInstanceVO instance = (VMInstanceVO)getResponseObject();
SystemVmResponse response = new SystemVmResponse();
response.setId(instance.getId());
response.setName(instance.getName());
response.setZoneId(instance.getDataCenterId());
response.setZoneName(ApiDBUtils.findZoneById(instance.getDataCenterId()).getName());
response.setPodId(instance.getPodId());
response.setHostId(instance.getHostId());
if (response.getHostId() != null) {
response.setHostName(ApiDBUtils.findHostById(instance.getHostId()).getName());
}
response.setPrivateIp(instance.getPrivateIpAddress());
response.setPrivateMacAddress(instance.getPrivateMacAddress());
response.setPrivateNetmask(instance.getPrivateNetmask());
response.setTemplateId(instance.getTemplateId());
response.setCreated(instance.getCreated());
response.setState(instance.getState().toString());
if (instance instanceof SecondaryStorageVmVO) {
SecondaryStorageVmVO ssVm = (SecondaryStorageVmVO) instance;
response.setDns1(ssVm.getDns1());
response.setDns2(ssVm.getDns2());
response.setNetworkDomain(ssVm.getDomain());
response.setGateway(ssVm.getGateway());
response.setPublicIp(ssVm.getPublicIpAddress());
response.setPublicMacAddress(ssVm.getPublicMacAddress());
response.setPublicNetmask(ssVm.getPublicNetmask());
} else if (instance instanceof ConsoleProxyVO) {
ConsoleProxyVO proxy = (ConsoleProxyVO)instance;
response.setDns1(proxy.getDns1());
response.setDns2(proxy.getDns2());
response.setNetworkDomain(proxy.getDomain());
response.setGateway(proxy.getGateway());
response.setPublicIp(proxy.getPublicIpAddress());
response.setPublicMacAddress(proxy.getPublicMacAddress());
response.setPublicNetmask(proxy.getPublicNetmask());
response.setActiveViewerSessions(proxy.getActiveSession());
}
response.setResponseName(getName());
return response;
}

View File

@ -39,7 +39,7 @@ public class RebootConsoleProxyExecutor extends VMOperationExecutor {
AsyncJobVO job = getJob();
ManagementServer managementServer = asyncMgr.getExecutorContext().getManagementServer();
VMOperationParam param = gson.fromJson(job.getCmdInfo(), VMOperationParam.class);
/*
if(getSyncSource() == null) {
asyncMgr.syncAsyncJobExecution(job, "ConsoleProxy", param.getVmId());
return true;
@ -58,7 +58,9 @@ public class RebootConsoleProxyExecutor extends VMOperationExecutor {
e.getMessage());
}
return true;
}
}
*/
return true;
}
public void processAnswer(VMOperationListener listener, long agentId, long seq, Answer answer) {

View File

@ -145,6 +145,7 @@ import com.cloud.user.UserAccountVO;
import com.cloud.uservm.UserVm;
import com.cloud.utils.Pair;
import com.cloud.utils.exception.ExecutionException;
import com.cloud.vm.ConsoleProxy;
import com.cloud.vm.ConsoleProxyVO;
import com.cloud.vm.DomainRouterVO;
import com.cloud.vm.InstanceGroupVO;
@ -788,13 +789,13 @@ public interface ManagementServer {
ConsoleProxyInfo getConsoleProxy(long dataCenterId, long userVmId);
ConsoleProxyVO startConsoleProxy(long instanceId, long startEventId) throws InternalErrorException;
boolean stopConsoleProxy(long instanceId, long startEventId);
boolean rebootConsoleProxy(long instanceId, long startEventId);
ConsoleProxyVO rebootConsoleProxy(long instanceId, long startEventId);
String getConsoleAccessUrlRoot(long vmId);
ConsoleProxyVO findConsoleProxyById(long instanceId);
VMInstanceVO findSystemVMById(long instanceId);
VMInstanceVO stopSystemVM(StopSystemVmCmd cmd);
VMInstanceVO startSystemVM(StartSystemVMCmd cmd) throws InternalErrorException;
boolean rebootSystemVM(RebootSystemVmCmd cmd);
VMInstanceVO rebootSystemVM(RebootSystemVmCmd cmd);
/**
* Returns a configuration value with the specified name

View File

@ -26,7 +26,6 @@ import java.net.URLEncoder;
import java.net.UnknownHostException;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.security.cert.Certificate;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Calendar;
@ -146,10 +145,8 @@ import com.cloud.async.AsyncJobResult;
import com.cloud.async.AsyncJobVO;
import com.cloud.async.BaseAsyncJobExecutor;
import com.cloud.async.dao.AsyncJobDao;
import com.cloud.async.executor.ExtractJobResultObject;
import com.cloud.capacity.CapacityVO;
import com.cloud.capacity.dao.CapacityDao;
import com.cloud.certificate.CertificateVO;
import com.cloud.certificate.dao.CertificateDao;
import com.cloud.configuration.Config;
import com.cloud.configuration.ConfigurationManager;
@ -228,7 +225,6 @@ import com.cloud.storage.GuestOSCategoryVO;
import com.cloud.storage.GuestOSVO;
import com.cloud.storage.LaunchPermissionVO;
import com.cloud.storage.Snapshot;
import com.cloud.storage.Upload;
import com.cloud.storage.Snapshot.SnapshotType;
import com.cloud.storage.SnapshotPolicyVO;
import com.cloud.storage.SnapshotVO;
@ -238,6 +234,7 @@ import com.cloud.storage.StorageManager;
import com.cloud.storage.StoragePoolHostVO;
import com.cloud.storage.StoragePoolVO;
import com.cloud.storage.StorageStats;
import com.cloud.storage.Upload;
import com.cloud.storage.Upload.Mode;
import com.cloud.storage.Upload.Type;
import com.cloud.storage.UploadVO;
@ -298,6 +295,7 @@ import com.cloud.utils.exception.CloudRuntimeException;
import com.cloud.utils.exception.ExecutionException;
import com.cloud.utils.net.MacAddress;
import com.cloud.utils.net.NetUtils;
import com.cloud.vm.ConsoleProxy;
import com.cloud.vm.ConsoleProxyVO;
import com.cloud.vm.DomainRouterVO;
import com.cloud.vm.InstanceGroupVMMapVO;
@ -308,7 +306,6 @@ import com.cloud.vm.UserVmManager;
import com.cloud.vm.UserVmVO;
import com.cloud.vm.VMInstanceVO;
import com.cloud.vm.VirtualMachine;
import com.cloud.vm.VirtualMachineName;
import com.cloud.vm.dao.ConsoleProxyDao;
import com.cloud.vm.dao.DomainRouterDao;
import com.cloud.vm.dao.InstanceGroupDao;
@ -4707,8 +4704,9 @@ public class ManagementServerImpl implements ManagementServer {
}
@Override
public boolean rebootConsoleProxy(long instanceId, long startEventId) {
return _consoleProxyMgr.rebootProxy(instanceId, startEventId);
public ConsoleProxyVO rebootConsoleProxy(long instanceId, long startEventId) {
_consoleProxyMgr.rebootProxy(instanceId, startEventId);
return _consoleProxyDao.findById(instanceId);
}
@Override
@ -6281,8 +6279,9 @@ public class ManagementServerImpl implements ManagementServer {
return _secStorageVmMgr.stopSecStorageVm(instanceId, startEventId);
}
public boolean rebootSecondaryStorageVm(long instanceId, long startEventId) {
return _secStorageVmMgr.rebootSecStorageVm(instanceId, startEventId);
public SecondaryStorageVmVO rebootSecondaryStorageVm(long instanceId, long startEventId) {
_secStorageVmMgr.rebootSecStorageVm(instanceId, startEventId);
return _secStorageVmDao.findById(instanceId);
}
public boolean destroySecondaryStorageVm(long instanceId, long startEventId) {
@ -6416,7 +6415,7 @@ public class ManagementServerImpl implements ManagementServer {
}
@Override
public boolean rebootSystemVM(RebootSystemVmCmd cmd) {
public VMInstanceVO rebootSystemVM(RebootSystemVmCmd cmd) {
VMInstanceVO systemVm = _vmInstanceDao.findByIdTypes(cmd.getId(), VirtualMachine.Type.ConsoleProxy, VirtualMachine.Type.SecondaryStorageVm);
if (systemVm == null) {