From d229877cd8fafa50c3b2c4a3b7465568be4abf1d Mon Sep 17 00:00:00 2001 From: Kris McQueen Date: Mon, 25 Oct 2010 14:58:31 -0700 Subject: [PATCH] bug 6710: rebootRouter was supposed to return the rebooted router, not success/failure status 6710: resolved fixed --- .../cloud/api/commands/RebootRouterCmd.java | 49 ++++++++++++++----- .../src/com/cloud/network/NetworkManager.java | 4 +- .../com/cloud/network/NetworkManagerImpl.java | 8 +-- 3 files changed, 44 insertions(+), 17 deletions(-) diff --git a/server/src/com/cloud/api/commands/RebootRouterCmd.java b/server/src/com/cloud/api/commands/RebootRouterCmd.java index b1a68483a90..3a48cf809bd 100644 --- a/server/src/com/cloud/api/commands/RebootRouterCmd.java +++ b/server/src/com/cloud/api/commands/RebootRouterCmd.java @@ -22,12 +22,10 @@ import org.apache.log4j.Logger; import com.cloud.api.ApiDBUtils; import com.cloud.api.BaseAsyncCmd; -import com.cloud.api.BaseCmd; import com.cloud.api.BaseCmd.Manager; import com.cloud.api.Implementation; import com.cloud.api.Parameter; -import com.cloud.api.ServerApiException; -import com.cloud.api.response.SuccessResponse; +import com.cloud.api.response.DomainRouterResponse; import com.cloud.event.EventTypes; import com.cloud.user.Account; import com.cloud.vm.DomainRouterVO; @@ -82,16 +80,45 @@ public class RebootRouterCmd extends BaseAsyncCmd { } @Override @SuppressWarnings("unchecked") - public SuccessResponse getResponse() { - SuccessResponse response = new SuccessResponse(); - Boolean responseObject = (Boolean)getResponseObject(); + public DomainRouterResponse getResponse() { + DomainRouterResponse response = new DomainRouterResponse(); + DomainRouterVO router = (DomainRouterVO)getResponseObject(); - if (responseObject != null) { - response.setSuccess(responseObject); - } else { - throw new ServerApiException(BaseCmd.INTERNAL_ERROR, "Failed to reboot router"); - } + response.setId(router.getId()); + response.setZoneId(router.getDataCenterId()); + response.setZoneName(ApiDBUtils.findZoneById(router.getDataCenterId()).getName()); + response.setDns1(router.getDns1()); + response.setDns2(router.getDns2()); + response.setNetworkDomain(router.getDomain()); + response.setGateway(router.getGateway()); + response.setName(router.getName()); + response.setPodId(router.getPodId()); + if (router.getHostId() != null) { + response.setHostId(router.getHostId()); + response.setHostName(ApiDBUtils.findHostById(router.getHostId()).getName()); + } + + response.setPrivateIp(router.getPrivateIpAddress()); + response.setPrivateMacAddress(router.getPrivateMacAddress()); + response.setPrivateNetmask(router.getPrivateNetmask()); + response.setPublicIp(router.getPublicIpAddress()); + response.setPublicMacAddress(router.getPublicMacAddress()); + response.setPublicNetmask(router.getPublicNetmask()); + response.setGuestIpAddress(router.getGuestIpAddress()); + response.setGuestMacAddress(router.getGuestMacAddress()); + response.setGuestNetmask(router.getGuestNetmask()); + response.setTemplateId(router.getTemplateId()); + response.setCreated(router.getCreated()); + response.setState(router.getState()); + + Account accountTemp = ApiDBUtils.findAccountById(router.getAccountId()); + if (accountTemp != null) { + response.setAccountName(accountTemp.getAccountName()); + response.setDomainId(accountTemp.getDomainId()); + response.setDomainName(ApiDBUtils.findDomainById(accountTemp.getDomainId()).getName()); + } + response.setResponseName(getName()); return response; } diff --git a/server/src/com/cloud/network/NetworkManager.java b/server/src/com/cloud/network/NetworkManager.java index a17bef17278..1f0823a3a13 100644 --- a/server/src/com/cloud/network/NetworkManager.java +++ b/server/src/com/cloud/network/NetworkManager.java @@ -144,10 +144,10 @@ public interface NetworkManager extends Manager { /** * Reboots domain router * @param cmd the command specifying router's id - * @return success or failure + * @return the rebooted router * @throws InvalidParameterValueException, PermissionDeniedException */ - boolean rebootRouter(RebootRouterCmd cmd) throws InvalidParameterValueException, PermissionDeniedException; + DomainRouterVO rebootRouter(RebootRouterCmd cmd) throws InvalidParameterValueException, PermissionDeniedException; /** * @param hostId get all of the virtual machine routers on a host. * @return collection of VirtualMachineRouter diff --git a/server/src/com/cloud/network/NetworkManagerImpl.java b/server/src/com/cloud/network/NetworkManagerImpl.java index 1d5a270075d..ab8f755254d 100755 --- a/server/src/com/cloud/network/NetworkManagerImpl.java +++ b/server/src/com/cloud/network/NetworkManagerImpl.java @@ -422,16 +422,16 @@ public class NetworkManagerImpl implements NetworkManager, DomainRouterService { public boolean rebootRouter(final long routerId, long startEventId) { return _routerMgr.rebootRouter(routerId, startEventId); } - + @Override - public boolean rebootRouter(RebootRouterCmd cmd) throws InvalidParameterValueException, PermissionDeniedException{ - return _routerMgr.rebootRouter(cmd); + public DomainRouterVO rebootRouter(RebootRouterCmd cmd) throws InvalidParameterValueException, PermissionDeniedException{ + _routerMgr.rebootRouter(cmd); + return _routerMgr.getRouter(cmd.getId()); } @Override public boolean associateIP(final DomainRouterVO router, final List ipAddrList, final boolean add, long vmId) { Commands cmds = new Commands(OnError.Continue); - int i=0; boolean sourceNat = false; for (final String ipAddress: ipAddrList) { if (ipAddress.equalsIgnoreCase(router.getPublicIpAddress()))