From a788d2cb2e3109de22848bb45e1e810abd64f519 Mon Sep 17 00:00:00 2001 From: Kris McQueen Date: Tue, 26 Oct 2010 17:19:55 -0700 Subject: [PATCH] bug 6736: rebootSystemVm should return the vm properties, not success true/false. status 6736: resolved fixed --- .../cloud/api/commands/RebootSystemVmCmd.java | 54 +++++++++++++++++-- .../executor/RebootConsoleProxyExecutor.java | 6 ++- .../com/cloud/server/ManagementServer.java | 5 +- .../cloud/server/ManagementServerImpl.java | 19 ++++--- 4 files changed, 65 insertions(+), 19 deletions(-) diff --git a/server/src/com/cloud/api/commands/RebootSystemVmCmd.java b/server/src/com/cloud/api/commands/RebootSystemVmCmd.java index 6fdb823b045..b8efada7f95 100644 --- a/server/src/com/cloud/api/commands/RebootSystemVmCmd.java +++ b/server/src/com/cloud/api/commands/RebootSystemVmCmd.java @@ -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; } diff --git a/server/src/com/cloud/async/executor/RebootConsoleProxyExecutor.java b/server/src/com/cloud/async/executor/RebootConsoleProxyExecutor.java index 72daedfb238..c0eccab5726 100644 --- a/server/src/com/cloud/async/executor/RebootConsoleProxyExecutor.java +++ b/server/src/com/cloud/async/executor/RebootConsoleProxyExecutor.java @@ -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) { diff --git a/server/src/com/cloud/server/ManagementServer.java b/server/src/com/cloud/server/ManagementServer.java index 8ac62e001f1..49c8b1218fa 100755 --- a/server/src/com/cloud/server/ManagementServer.java +++ b/server/src/com/cloud/server/ManagementServer.java @@ -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 diff --git a/server/src/com/cloud/server/ManagementServerImpl.java b/server/src/com/cloud/server/ManagementServerImpl.java index dbd6b488b0b..b01454ef9cd 100755 --- a/server/src/com/cloud/server/ManagementServerImpl.java +++ b/server/src/com/cloud/server/ManagementServerImpl.java @@ -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) {