bug 6710: rebootRouter was supposed to return the rebooted router, not success/failure

status 6710: resolved fixed
This commit is contained in:
Kris McQueen 2010-10-25 14:58:31 -07:00
parent 18f6d67121
commit d229877cd8
3 changed files with 44 additions and 17 deletions

View File

@ -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;
}

View File

@ -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

View File

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