diff --git a/server/src/com/cloud/api/ApiResponseHelper.java b/server/src/com/cloud/api/ApiResponseHelper.java index 0d7efd28cc1..402eccd8d99 100644 --- a/server/src/com/cloud/api/ApiResponseHelper.java +++ b/server/src/com/cloud/api/ApiResponseHelper.java @@ -25,10 +25,12 @@ import com.cloud.api.response.AccountResponse; import com.cloud.api.response.ConfigurationResponse; import com.cloud.api.response.DiskOfferingResponse; import com.cloud.api.response.DomainResponse; +import com.cloud.api.response.DomainRouterResponse; import com.cloud.api.response.ResourceLimitResponse; import com.cloud.api.response.ServiceOfferingResponse; import com.cloud.api.response.SnapshotPolicyResponse; import com.cloud.api.response.SnapshotResponse; +import com.cloud.api.response.SystemVmResponse; import com.cloud.api.response.UserResponse; import com.cloud.api.response.UserVmResponse; import com.cloud.async.AsyncJobVO; @@ -52,8 +54,13 @@ import com.cloud.user.UserAccount; import com.cloud.user.UserContext; import com.cloud.user.UserStatisticsVO; import com.cloud.uservm.UserVm; +import com.cloud.vm.ConsoleProxyVO; +import com.cloud.vm.DomainRouter; import com.cloud.vm.InstanceGroupVO; +import com.cloud.vm.SecondaryStorageVmVO; import com.cloud.vm.State; +import com.cloud.vm.SystemVm; +import com.cloud.vm.VMInstanceVO; import com.cloud.vm.VmStats; public class ApiResponseHelper { @@ -408,6 +415,106 @@ public class ApiResponseHelper { userVmResponse.setNetworkGroupList(ApiDBUtils.getNetworkGroupsNamesForVm(userVm.getId())); return userVmResponse; + } + + public static SystemVmResponse createSystemVmResponse (VMInstanceVO systemVM) { + SystemVmResponse vmResponse = new SystemVmResponse(); + if (systemVM instanceof SystemVm) { + SystemVm vm = (SystemVm)systemVM; + vmResponse.setId(vm.getId()); + vmResponse.setSystemVmType(vm.getType().toString().toLowerCase()); + + String instanceType = "console_proxy"; + if (systemVM instanceof SecondaryStorageVmVO) { + instanceType = "sec_storage_vm"; // FIXME: this should be a constant so that the async jobs get updated with the correct instance type, they are using + // different instance types at the moment + } + + AsyncJobVO asyncJob = ApiDBUtils.findInstancePendingAsyncJob(instanceType, vm.getId()); + if (asyncJob != null) { + vmResponse.setJobId(asyncJob.getId()); + vmResponse.setJobStatus(asyncJob.getStatus()); + } + + vmResponse.setZoneId(vm.getDataCenterId()); + vmResponse.setZoneName(ApiDBUtils.findZoneById(vm.getDataCenterId()).getName()); + vmResponse.setDns1(vm.getDns1()); + vmResponse.setDns2(vm.getDns2()); + vmResponse.setNetworkDomain(vm.getDomain()); + vmResponse.setGateway(vm.getGateway()); + vmResponse.setName(vm.getName()); + vmResponse.setPodId(vm.getPodId()); + if (vm.getHostId() != null) { + vmResponse.setHostId(vm.getHostId()); + vmResponse.setHostName(ApiDBUtils.findHostById(vm.getHostId()).getName()); + } + vmResponse.setPrivateIp(vm.getPrivateIpAddress()); + vmResponse.setPrivateMacAddress(vm.getPrivateMacAddress()); + vmResponse.setPrivateNetmask(vm.getPrivateNetmask()); + vmResponse.setPublicIp(vm.getPublicIpAddress()); + vmResponse.setPublicMacAddress(vm.getPublicMacAddress()); + vmResponse.setPublicNetmask(vm.getPublicNetmask()); + vmResponse.setTemplateId(vm.getTemplateId()); + vmResponse.setCreated(vm.getCreated()); + if (vm.getState() != null) { + vmResponse.setState(vm.getState().toString()); + } + } + + // for console proxies, add the active sessions + if (systemVM instanceof ConsoleProxyVO) { + ConsoleProxyVO proxy = (ConsoleProxyVO)systemVM; + vmResponse.setActiveViewerSessions(proxy.getActiveSession()); + } + return vmResponse; + } + + + public static DomainRouterResponse createDomainRouterResponse (DomainRouter router) { + DomainRouterResponse routerResponse = new DomainRouterResponse(); + routerResponse.setId(router.getId()); + + AsyncJobVO asyncJob = ApiDBUtils.findInstancePendingAsyncJob("domain_router", router.getId()); + if (asyncJob != null) { + routerResponse.setJobId(asyncJob.getId()); + routerResponse.setJobStatus(asyncJob.getStatus()); + } + + routerResponse.setZoneId(router.getDataCenterId()); + routerResponse.setZoneName(ApiDBUtils.findZoneById(router.getDataCenterId()).getName()); + routerResponse.setDns1(router.getDns1()); + routerResponse.setDns2(router.getDns2()); + routerResponse.setNetworkDomain(router.getDomain()); + routerResponse.setGateway(router.getGateway()); + routerResponse.setName(router.getName()); + routerResponse.setPodId(router.getPodId()); + + if (router.getHostId() != null) { + routerResponse.setHostId(router.getHostId()); + routerResponse.setHostName(ApiDBUtils.findHostById(router.getHostId()).getName()); + } + + routerResponse.setPrivateIp(router.getPrivateIpAddress()); + routerResponse.setPrivateMacAddress(router.getPrivateMacAddress()); + routerResponse.setPrivateNetmask(router.getPrivateNetmask()); + routerResponse.setPublicIp(router.getPublicIpAddress()); + routerResponse.setPublicMacAddress(router.getPublicMacAddress()); + routerResponse.setPublicNetmask(router.getPublicNetmask()); + routerResponse.setGuestIpAddress(router.getGuestIpAddress()); + routerResponse.setGuestMacAddress(router.getGuestMacAddress()); + routerResponse.setGuestNetmask(router.getGuestNetmask()); + routerResponse.setTemplateId(router.getTemplateId()); + routerResponse.setCreated(router.getCreated()); + routerResponse.setState(router.getState()); + + Account accountTemp = ApiDBUtils.findAccountById(router.getAccountId()); + if (accountTemp != null) { + routerResponse.setAccountName(accountTemp.getAccountName()); + routerResponse.setDomainId(accountTemp.getDomainId()); + routerResponse.setDomainName(ApiDBUtils.findDomainById(accountTemp.getDomainId()).getName()); + } + + return routerResponse; } } diff --git a/server/src/com/cloud/api/commands/ListRoutersCmd.java b/server/src/com/cloud/api/commands/ListRoutersCmd.java index 164df49d2d4..7efa509059e 100644 --- a/server/src/com/cloud/api/commands/ListRoutersCmd.java +++ b/server/src/com/cloud/api/commands/ListRoutersCmd.java @@ -24,15 +24,13 @@ import java.util.List; import org.apache.log4j.Logger; import com.cloud.api.ApiConstants; -import com.cloud.api.ApiDBUtils; +import com.cloud.api.ApiResponseHelper; import com.cloud.api.BaseListCmd; import com.cloud.api.Implementation; import com.cloud.api.Parameter; import com.cloud.api.response.DomainRouterResponse; import com.cloud.api.response.ListResponse; -import com.cloud.async.AsyncJobVO; -import com.cloud.user.Account; -import com.cloud.vm.DomainRouterVO; +import com.cloud.vm.DomainRouter; @Implementation(method="searchForRouters", description="List routers.") public class ListRoutersCmd extends BaseListCmd { @@ -108,54 +106,11 @@ public class ListRoutersCmd extends BaseListCmd { @Override @SuppressWarnings("unchecked") public ListResponse getResponse() { - List routers = (List)getResponseObject(); - + List routers = (List)getResponseObject(); ListResponse response = new ListResponse(); List routerResponses = new ArrayList(); - for (DomainRouterVO router : routers) { - DomainRouterResponse routerResponse = new DomainRouterResponse(); - routerResponse.setId(router.getId()); - - AsyncJobVO asyncJob = ApiDBUtils.findInstancePendingAsyncJob("domain_router", router.getId()); - if (asyncJob != null) { - routerResponse.setJobId(asyncJob.getId()); - routerResponse.setJobStatus(asyncJob.getStatus()); - } - - routerResponse.setZoneId(router.getDataCenterId()); - routerResponse.setZoneName(ApiDBUtils.findZoneById(router.getDataCenterId()).getName()); - routerResponse.setDns1(router.getDns1()); - routerResponse.setDns2(router.getDns2()); - routerResponse.setNetworkDomain(router.getDomain()); - routerResponse.setGateway(router.getGateway()); - routerResponse.setName(router.getName()); - routerResponse.setPodId(router.getPodId()); - - if (router.getHostId() != null) { - routerResponse.setHostId(router.getHostId()); - routerResponse.setHostName(ApiDBUtils.findHostById(router.getHostId()).getName()); - } - - routerResponse.setPrivateIp(router.getPrivateIpAddress()); - routerResponse.setPrivateMacAddress(router.getPrivateMacAddress()); - routerResponse.setPrivateNetmask(router.getPrivateNetmask()); - routerResponse.setPublicIp(router.getPublicIpAddress()); - routerResponse.setPublicMacAddress(router.getPublicMacAddress()); - routerResponse.setPublicNetmask(router.getPublicNetmask()); - routerResponse.setGuestIpAddress(router.getGuestIpAddress()); - routerResponse.setGuestMacAddress(router.getGuestMacAddress()); - routerResponse.setGuestNetmask(router.getGuestNetmask()); - routerResponse.setTemplateId(router.getTemplateId()); - routerResponse.setCreated(router.getCreated()); - routerResponse.setState(router.getState()); - - Account accountTemp = ApiDBUtils.findAccountById(router.getAccountId()); - if (accountTemp != null) { - routerResponse.setAccountName(accountTemp.getAccountName()); - routerResponse.setDomainId(accountTemp.getDomainId()); - routerResponse.setDomainName(ApiDBUtils.findDomainById(accountTemp.getDomainId()).getName()); - } - + for (DomainRouter router : routers) { + DomainRouterResponse routerResponse = ApiResponseHelper.createDomainRouterResponse(router); routerResponse.setResponseName("router"); routerResponses.add(routerResponse); } diff --git a/server/src/com/cloud/api/commands/ListSystemVMsCmd.java b/server/src/com/cloud/api/commands/ListSystemVMsCmd.java index 15d85d93db8..ae3130e07ac 100644 --- a/server/src/com/cloud/api/commands/ListSystemVMsCmd.java +++ b/server/src/com/cloud/api/commands/ListSystemVMsCmd.java @@ -23,16 +23,12 @@ import java.util.List; import org.apache.log4j.Logger; import com.cloud.api.ApiConstants; -import com.cloud.api.ApiDBUtils; +import com.cloud.api.ApiResponseHelper; import com.cloud.api.BaseListCmd; import com.cloud.api.Implementation; import com.cloud.api.Parameter; import com.cloud.api.response.ListResponse; import com.cloud.api.response.SystemVmResponse; -import com.cloud.async.AsyncJobVO; -import com.cloud.vm.ConsoleProxyVO; -import com.cloud.vm.SecondaryStorageVmVO; -import com.cloud.vm.SystemVm; import com.cloud.vm.VMInstanceVO; @Implementation(method="searchForSystemVm", description="List system virtual machines.") @@ -110,60 +106,10 @@ public class ListSystemVMsCmd extends BaseListCmd { @Override @SuppressWarnings("unchecked") public ListResponse getResponse() { List systemVMs = (List)getResponseObject(); - ListResponse response = new ListResponse(); List vmResponses = new ArrayList(); for (VMInstanceVO systemVM : systemVMs) { - SystemVmResponse vmResponse = new SystemVmResponse(); - if (systemVM instanceof SystemVm) { - SystemVm vm = (SystemVm)systemVM; - - vmResponse.setId(vm.getId()); - vmResponse.setSystemVmType(vm.getType().toString().toLowerCase()); - - String instanceType = "console_proxy"; - if (systemVM instanceof SecondaryStorageVmVO) { - instanceType = "sec_storage_vm"; // FIXME: this should be a constant so that the async jobs get updated with the correct instance type, they are using - // different instance types at the moment - } - - AsyncJobVO asyncJob = ApiDBUtils.findInstancePendingAsyncJob(instanceType, vm.getId()); - if (asyncJob != null) { - vmResponse.setJobId(asyncJob.getId()); - vmResponse.setJobStatus(asyncJob.getStatus()); - } - - vmResponse.setZoneId(vm.getDataCenterId()); - vmResponse.setZoneName(ApiDBUtils.findZoneById(vm.getDataCenterId()).getName()); - vmResponse.setDns1(vm.getDns1()); - vmResponse.setDns2(vm.getDns2()); - vmResponse.setNetworkDomain(vm.getDomain()); - vmResponse.setGateway(vm.getGateway()); - vmResponse.setName(vm.getName()); - vmResponse.setPodId(vm.getPodId()); - if (vm.getHostId() != null) { - vmResponse.setHostId(vm.getHostId()); - vmResponse.setHostName(ApiDBUtils.findHostById(vm.getHostId()).getName()); - } - vmResponse.setPrivateIp(vm.getPrivateIpAddress()); - vmResponse.setPrivateMacAddress(vm.getPrivateMacAddress()); - vmResponse.setPrivateNetmask(vm.getPrivateNetmask()); - vmResponse.setPublicIp(vm.getPublicIpAddress()); - vmResponse.setPublicMacAddress(vm.getPublicMacAddress()); - vmResponse.setPublicNetmask(vm.getPublicNetmask()); - vmResponse.setTemplateId(vm.getTemplateId()); - vmResponse.setCreated(vm.getCreated()); - if (vm.getState() != null) { - vmResponse.setState(vm.getState().toString()); - } - } - - // for console proxies, add the active sessions - if (systemVM instanceof ConsoleProxyVO) { - ConsoleProxyVO proxy = (ConsoleProxyVO)systemVM; - vmResponse.setActiveViewerSessions(proxy.getActiveSession()); - } - + SystemVmResponse vmResponse = ApiResponseHelper.createSystemVmResponse(systemVM); vmResponse.setResponseName("systemvm"); vmResponses.add(vmResponse); } diff --git a/server/src/com/cloud/api/commands/RebootRouterCmd.java b/server/src/com/cloud/api/commands/RebootRouterCmd.java index 94f7016a12d..5668080ed3b 100644 --- a/server/src/com/cloud/api/commands/RebootRouterCmd.java +++ b/server/src/com/cloud/api/commands/RebootRouterCmd.java @@ -22,6 +22,7 @@ import org.apache.log4j.Logger; import com.cloud.api.ApiConstants; import com.cloud.api.ApiDBUtils; +import com.cloud.api.ApiResponseHelper; import com.cloud.api.BaseAsyncCmd; import com.cloud.api.Implementation; import com.cloud.api.Parameter; @@ -29,6 +30,7 @@ import com.cloud.api.response.DomainRouterResponse; import com.cloud.event.EventTypes; import com.cloud.network.NetworkManager; import com.cloud.user.Account; +import com.cloud.vm.DomainRouter; import com.cloud.vm.DomainRouterVO; @Implementation(method="rebootRouter", manager=NetworkManager.class, description="Starts a router.") @@ -82,44 +84,8 @@ public class RebootRouterCmd extends BaseAsyncCmd { @Override @SuppressWarnings("unchecked") public DomainRouterResponse getResponse() { - DomainRouterResponse response = new DomainRouterResponse(); - DomainRouterVO router = (DomainRouterVO)getResponseObject(); - - 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()); - } - + DomainRouter router = (DomainRouter)getResponseObject(); + DomainRouterResponse response = ApiResponseHelper.createDomainRouterResponse(router); response.setResponseName(getName()); return response; } diff --git a/server/src/com/cloud/api/commands/RebootSystemVmCmd.java b/server/src/com/cloud/api/commands/RebootSystemVmCmd.java index 69b505cbc04..79c3c9216f0 100644 --- a/server/src/com/cloud/api/commands/RebootSystemVmCmd.java +++ b/server/src/com/cloud/api/commands/RebootSystemVmCmd.java @@ -21,7 +21,7 @@ package com.cloud.api.commands; import org.apache.log4j.Logger; import com.cloud.api.ApiConstants; -import com.cloud.api.ApiDBUtils; +import com.cloud.api.ApiResponseHelper; import com.cloud.api.BaseAsyncCmd; import com.cloud.api.Implementation; import com.cloud.api.Parameter; @@ -30,8 +30,6 @@ import com.cloud.event.EventTypes; import com.cloud.server.ManagementServer; 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=ManagementServer.class, description="Reboots a system VM.") @@ -87,48 +85,7 @@ public class RebootSystemVmCmd extends BaseAsyncCmd { @Override @SuppressWarnings("unchecked") 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()); - } - + SystemVmResponse response = ApiResponseHelper.createSystemVmResponse(instance); response.setResponseName(getName()); return response; } diff --git a/server/src/com/cloud/api/commands/StartRouterCmd.java b/server/src/com/cloud/api/commands/StartRouterCmd.java index 2b25a3d0ef6..8f19bc1e138 100644 --- a/server/src/com/cloud/api/commands/StartRouterCmd.java +++ b/server/src/com/cloud/api/commands/StartRouterCmd.java @@ -22,6 +22,7 @@ import org.apache.log4j.Logger; import com.cloud.api.ApiConstants; import com.cloud.api.ApiDBUtils; +import com.cloud.api.ApiResponseHelper; import com.cloud.api.BaseAsyncCmd; import com.cloud.api.Implementation; import com.cloud.api.Parameter; @@ -30,7 +31,7 @@ import com.cloud.event.EventTypes; import com.cloud.network.DomainRouterService; import com.cloud.user.Account; import com.cloud.uservm.UserVm; -import com.cloud.vm.DomainRouterVO; +import com.cloud.vm.DomainRouter; @Implementation(method="startRouter", manager=DomainRouterService.class, description="Starts a router.") @@ -89,44 +90,8 @@ public class StartRouterCmd extends BaseAsyncCmd { @Override @SuppressWarnings("unchecked") public DomainRouterResponse getResponse() { - DomainRouterResponse routerResponse = new DomainRouterResponse(); - DomainRouterVO router = (DomainRouterVO)getResponseObject(); - - routerResponse.setId(router.getId()); - routerResponse.setZoneId(router.getDataCenterId()); - routerResponse.setZoneName(ApiDBUtils.findZoneById(router.getDataCenterId()).getName()); - routerResponse.setDns1(router.getDns1()); - routerResponse.setDns2(router.getDns2()); - routerResponse.setNetworkDomain(router.getDomain()); - routerResponse.setGateway(router.getGateway()); - routerResponse.setName(router.getName()); - routerResponse.setPodId(router.getPodId()); - - if (router.getHostId() != null) { - routerResponse.setHostId(router.getHostId()); - routerResponse.setHostName(ApiDBUtils.findHostById(router.getHostId()).getName()); - } - - routerResponse.setPrivateIp(router.getPrivateIpAddress()); - routerResponse.setPrivateMacAddress(router.getPrivateMacAddress()); - routerResponse.setPrivateNetmask(router.getPrivateNetmask()); - routerResponse.setPublicIp(router.getPublicIpAddress()); - routerResponse.setPublicMacAddress(router.getPublicMacAddress()); - routerResponse.setPublicNetmask(router.getPublicNetmask()); - routerResponse.setGuestIpAddress(router.getGuestIpAddress()); - routerResponse.setGuestMacAddress(router.getGuestMacAddress()); - routerResponse.setGuestNetmask(router.getGuestNetmask()); - routerResponse.setTemplateId(router.getTemplateId()); - routerResponse.setCreated(router.getCreated()); - routerResponse.setState(router.getState()); - - Account accountTemp = ApiDBUtils.findAccountById(router.getAccountId()); - if (accountTemp != null) { - routerResponse.setAccountName(accountTemp.getAccountName()); - routerResponse.setDomainId(accountTemp.getDomainId()); - routerResponse.setDomainName(ApiDBUtils.findDomainById(accountTemp.getDomainId()).getName()); - } - + DomainRouter router = (DomainRouter)getResponseObject(); + DomainRouterResponse routerResponse = ApiResponseHelper.createDomainRouterResponse(router); routerResponse.setResponseName(getName()); return routerResponse; } diff --git a/server/src/com/cloud/api/commands/StartSystemVMCmd.java b/server/src/com/cloud/api/commands/StartSystemVMCmd.java index 381d613744c..715fe3d57f8 100644 --- a/server/src/com/cloud/api/commands/StartSystemVMCmd.java +++ b/server/src/com/cloud/api/commands/StartSystemVMCmd.java @@ -21,7 +21,7 @@ package com.cloud.api.commands; import org.apache.log4j.Logger; import com.cloud.api.ApiConstants; -import com.cloud.api.ApiDBUtils; +import com.cloud.api.ApiResponseHelper; import com.cloud.api.BaseAsyncCmd; import com.cloud.api.Implementation; import com.cloud.api.Parameter; @@ -30,8 +30,6 @@ import com.cloud.event.EventTypes; import com.cloud.server.ManagementServer; 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="startSystemVM", manager=ManagementServer.class, description="Starts a system virtual machine.") @@ -91,48 +89,7 @@ public class StartSystemVMCmd extends BaseAsyncCmd { @Override @SuppressWarnings("unchecked") 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()); - } - + SystemVmResponse response = ApiResponseHelper.createSystemVmResponse(instance); response.setResponseName(getName()); return response; } diff --git a/server/src/com/cloud/api/commands/StopRouterCmd.java b/server/src/com/cloud/api/commands/StopRouterCmd.java index 3c8b3f8ed0e..5e8eb0a1d0b 100644 --- a/server/src/com/cloud/api/commands/StopRouterCmd.java +++ b/server/src/com/cloud/api/commands/StopRouterCmd.java @@ -22,6 +22,7 @@ import org.apache.log4j.Logger; import com.cloud.api.ApiConstants; import com.cloud.api.ApiDBUtils; +import com.cloud.api.ApiResponseHelper; import com.cloud.api.BaseAsyncCmd; import com.cloud.api.Implementation; import com.cloud.api.Parameter; @@ -30,7 +31,7 @@ import com.cloud.event.EventTypes; import com.cloud.network.DomainRouterService; import com.cloud.user.Account; import com.cloud.uservm.UserVm; -import com.cloud.vm.DomainRouterVO; +import com.cloud.vm.DomainRouter; @Implementation(method="stopRouter", manager=DomainRouterService.class, description="Stops a router.") @@ -84,46 +85,8 @@ public class StopRouterCmd extends BaseAsyncCmd { @Override @SuppressWarnings("unchecked") public DomainRouterResponse getResponse() { - DomainRouterVO router = (DomainRouterVO)getResponseObject(); - - DomainRouterResponse response = new DomainRouterResponse(); - 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()); - response.setPrivateIp(router.getPrivateIpAddress()); - response.setPrivateMacAddress(router.getPrivateMacAddress()); - response.setPrivateNetmask(router.getPrivateNetmask()); - response.setPublicIp(router.getPublicIpAddress()); - response.setPublicMacAddress(router.getPublicMacAddress()); - response.setPublicNetmask(router.getPrivateNetmask()); - response.setGuestIpAddress(router.getGuestIpAddress()); - response.setGuestMacAddress(router.getGuestMacAddress()); - response.setTemplateId(router.getTemplateId()); - response.setCreated(router.getCreated()); - response.setGuestNetmask(router.getGuestNetmask()); - - if (router.getHostId() != null) { - response.setHostName(ApiDBUtils.findHostById(router.getHostId()).getName()); - response.setHostId(router.getHostId()); - } - - Account acct = ApiDBUtils.findAccountById(router.getAccountId()); - if (acct != null) { - response.setAccountName(acct.getAccountName()); - response.setDomainId(acct.getDomainId()); - response.setDomainName(ApiDBUtils.findDomainById(acct.getDomainId()).getName()); - } - - if (router.getState() != null) { - response.setState(router.getState()); - } - + DomainRouter router = (DomainRouter)getResponseObject(); + DomainRouterResponse response =ApiResponseHelper.createDomainRouterResponse(router); response.setResponseName(getName()); return response; } diff --git a/server/src/com/cloud/api/commands/UpgradeRouterCmd.java b/server/src/com/cloud/api/commands/UpgradeRouterCmd.java index 482a773ba1f..c7bc1a86ade 100644 --- a/server/src/com/cloud/api/commands/UpgradeRouterCmd.java +++ b/server/src/com/cloud/api/commands/UpgradeRouterCmd.java @@ -20,11 +20,13 @@ package com.cloud.api.commands; import org.apache.log4j.Logger; import com.cloud.api.ApiConstants; +import com.cloud.api.ApiResponseHelper; import com.cloud.api.BaseCmd; import com.cloud.api.Implementation; import com.cloud.api.Parameter; -import com.cloud.api.response.SuccessResponse; +import com.cloud.api.response.DomainRouterResponse; import com.cloud.network.NetworkManager; +import com.cloud.vm.DomainRouter; @Implementation(method="upgradeRouter", manager=NetworkManager.class) public class UpgradeRouterCmd extends BaseCmd { @@ -63,12 +65,10 @@ public class UpgradeRouterCmd extends BaseCmd { } @Override @SuppressWarnings("unchecked") - public SuccessResponse getResponse() { - Boolean success = (Boolean)getResponseObject(); - - SuccessResponse response = new SuccessResponse(); - response.setSuccess(success); - response.setResponseName(getName()); - return response; - } + public DomainRouterResponse getResponse() { + DomainRouter router = (DomainRouter)getResponseObject(); + DomainRouterResponse routerResponse = ApiResponseHelper.createDomainRouterResponse(router); + routerResponse.setResponseName(getName()); + return routerResponse; + } } diff --git a/server/src/com/cloud/network/DomainRouterService.java b/server/src/com/cloud/network/DomainRouterService.java index 5e76cd5ca99..8f76f8d8865 100644 --- a/server/src/com/cloud/network/DomainRouterService.java +++ b/server/src/com/cloud/network/DomainRouterService.java @@ -22,7 +22,7 @@ import com.cloud.api.commands.StopRouterCmd; import com.cloud.exception.InvalidParameterValueException; import com.cloud.exception.PermissionDeniedException; import com.cloud.utils.component.Manager; -import com.cloud.vm.DomainRouterVO; +import com.cloud.vm.DomainRouter; public interface DomainRouterService extends Manager { /** @@ -31,7 +31,7 @@ public interface DomainRouterService extends Manager { * @return DomainRouter object * @throws InvalidParameterValueException, PermissionDeniedException */ - DomainRouterVO startRouter(StartRouterCmd cmd) throws InvalidParameterValueException, PermissionDeniedException; + DomainRouter startRouter(StartRouterCmd cmd) throws InvalidParameterValueException, PermissionDeniedException; /** * Stops domain router @@ -39,5 +39,5 @@ public interface DomainRouterService extends Manager { * @return router if successful, null otherwise * @throws InvalidParameterValueException, PermissionDeniedException */ - DomainRouterVO stopRouter(StopRouterCmd cmd); + DomainRouter stopRouter(StopRouterCmd cmd); } diff --git a/server/src/com/cloud/network/NetworkManager.java b/server/src/com/cloud/network/NetworkManager.java index 1cb3d94c2a8..6eeb1f5d76f 100644 --- a/server/src/com/cloud/network/NetworkManager.java +++ b/server/src/com/cloud/network/NetworkManager.java @@ -122,7 +122,7 @@ public interface NetworkManager extends Manager { * @return DomainRouter object * @throws InvalidParameterValueException, PermissionDeniedException */ - DomainRouterVO startRouter(StartRouterCmd cmd); + DomainRouter startRouter(StartRouterCmd cmd); boolean releaseRouter(long routerId); @@ -136,7 +136,7 @@ public interface NetworkManager extends Manager { * @return router if successful, null otherwise * @throws InvalidParameterValueException, PermissionDeniedException */ - DomainRouterVO stopRouter(StopRouterCmd cmd); + DomainRouter stopRouter(StopRouterCmd cmd); boolean getRouterStatistics(long vmId, Map netStats, Map diskStats); @@ -148,7 +148,7 @@ public interface NetworkManager extends Manager { * @return the rebooted router * @throws InvalidParameterValueException, PermissionDeniedException */ - DomainRouterVO rebootRouter(RebootRouterCmd cmd); + DomainRouter rebootRouter(RebootRouterCmd cmd); /** * @param hostId get all of the virtual machine routers on a host. * @return collection of VirtualMachineRouter @@ -306,7 +306,7 @@ public interface NetworkManager extends Manager { void release(VirtualMachineProfile vmProfile); List getNics(K vm); - boolean upgradeRouter(UpgradeRouterCmd cmd); + DomainRouter upgradeRouter(UpgradeRouterCmd cmd); List getAccountsUsingNetworkConfiguration(long configurationId); AccountVO getNetworkConfigurationOwner(long configurationId); diff --git a/server/src/com/cloud/network/NetworkManagerImpl.java b/server/src/com/cloud/network/NetworkManagerImpl.java index 8051ac81162..3b86b8d7dca 100755 --- a/server/src/com/cloud/network/NetworkManagerImpl.java +++ b/server/src/com/cloud/network/NetworkManagerImpl.java @@ -485,7 +485,7 @@ public class NetworkManagerImpl implements NetworkManager, DomainRouterService { } @Override - public boolean upgradeRouter(UpgradeRouterCmd cmd) throws InvalidParameterValueException, PermissionDeniedException { + public DomainRouter upgradeRouter(UpgradeRouterCmd cmd) throws InvalidParameterValueException, PermissionDeniedException { return _routerMgr.upgradeRouter(cmd); } @@ -500,7 +500,7 @@ public class NetworkManagerImpl implements NetworkManager, DomainRouterService { } @Override - public DomainRouterVO startRouter(StartRouterCmd cmd) throws InvalidParameterValueException, PermissionDeniedException { + public DomainRouter startRouter(StartRouterCmd cmd) throws InvalidParameterValueException, PermissionDeniedException { return _routerMgr.startRouter(cmd); } @@ -511,7 +511,7 @@ public class NetworkManagerImpl implements NetworkManager, DomainRouterService { @Override - public DomainRouterVO stopRouter(StopRouterCmd cmd) throws InvalidParameterValueException, PermissionDeniedException{ + public DomainRouter stopRouter(StopRouterCmd cmd) throws InvalidParameterValueException, PermissionDeniedException{ return _routerMgr.stopRouter(cmd); } diff --git a/server/src/com/cloud/network/router/DomainRouterManager.java b/server/src/com/cloud/network/router/DomainRouterManager.java index 4c6ac2b32d4..7851453c286 100644 --- a/server/src/com/cloud/network/router/DomainRouterManager.java +++ b/server/src/com/cloud/network/router/DomainRouterManager.java @@ -101,7 +101,7 @@ public interface DomainRouterManager extends Manager { * @return DomainRouter object * @throws InvalidParameterValueException, PermissionDeniedException */ - DomainRouterVO startRouter(StartRouterCmd cmd) throws InvalidParameterValueException, PermissionDeniedException; + DomainRouter startRouter(StartRouterCmd cmd) throws InvalidParameterValueException, PermissionDeniedException; boolean releaseRouter(long routerId); @@ -115,7 +115,7 @@ public interface DomainRouterManager extends Manager { * @return router if successful, null otherwise * @throws InvalidParameterValueException, PermissionDeniedException */ - DomainRouterVO stopRouter(StopRouterCmd cmd) throws InvalidParameterValueException, PermissionDeniedException; + DomainRouter stopRouter(StopRouterCmd cmd) throws InvalidParameterValueException, PermissionDeniedException; boolean getRouterStatistics(long vmId, Map netStats, Map diskStats); @@ -124,10 +124,10 @@ public interface DomainRouterManager extends Manager { /** * Reboots domain router * @param cmd the command specifying router's id - * @return success or failure + * @return router if successful * @throws InvalidParameterValueException, PermissionDeniedException */ - boolean rebootRouter(RebootRouterCmd cmd) throws InvalidParameterValueException, PermissionDeniedException; + DomainRouter rebootRouter(RebootRouterCmd cmd) throws InvalidParameterValueException, PermissionDeniedException; /** * @param hostId get all of the virtual machine routers on a host. * @return collection of VirtualMachineRouter @@ -167,7 +167,7 @@ public interface DomainRouterManager extends Manager { String createZoneVlan(DomainRouterVO router); - boolean upgradeRouter(UpgradeRouterCmd cmd) throws InvalidParameterValueException, PermissionDeniedException; + DomainRouter upgradeRouter(UpgradeRouterCmd cmd) throws InvalidParameterValueException, PermissionDeniedException; DomainRouterVO getRouter(long accountId, long zoneId); DomainRouterVO getRouter(String publicIpAddress); diff --git a/server/src/com/cloud/network/router/DomainRouterManagerImpl.java b/server/src/com/cloud/network/router/DomainRouterManagerImpl.java index b262fb25829..6ef5004e03d 100644 --- a/server/src/com/cloud/network/router/DomainRouterManagerImpl.java +++ b/server/src/com/cloud/network/router/DomainRouterManagerImpl.java @@ -657,7 +657,7 @@ public class DomainRouterManagerImpl implements DomainRouterManager, VirtualMach @Override @DB - public boolean upgradeRouter(UpgradeRouterCmd cmd) throws InvalidParameterValueException, PermissionDeniedException { + public DomainRouter upgradeRouter(UpgradeRouterCmd cmd) throws InvalidParameterValueException, PermissionDeniedException { Long routerId = cmd.getId(); Long serviceOfferingId = cmd.getServiceOfferingId(); Account account = UserContext.current().getAccount(); @@ -673,7 +673,7 @@ public class DomainRouterManagerImpl implements DomainRouterManager, VirtualMach if (router.getServiceOfferingId() == serviceOfferingId) { s_logger.debug("Router: " + routerId + "already has service offering: " + serviceOfferingId); - return true; + return _routerDao.findById(routerId); } ServiceOfferingVO newServiceOffering = _serviceOfferingDao.findById(serviceOfferingId); @@ -693,7 +693,10 @@ public class DomainRouterManagerImpl implements DomainRouterManager, VirtualMach } router.setServiceOfferingId(serviceOfferingId); - return _routerDao.update(routerId, router); + if (_routerDao.update(routerId, router)) + return _routerDao.findById(routerId); + else + throw new CloudRuntimeException("Unable to upgrade router " + routerId); } @@ -747,7 +750,7 @@ public class DomainRouterManagerImpl implements DomainRouterManager, VirtualMach } @Override - public DomainRouterVO startRouter(StartRouterCmd cmd) throws InvalidParameterValueException, PermissionDeniedException{ + public DomainRouter startRouter(StartRouterCmd cmd) throws InvalidParameterValueException, PermissionDeniedException{ Long routerId = cmd.getId(); Account account = UserContext.current().getAccount(); @@ -1234,7 +1237,7 @@ public class DomainRouterManagerImpl implements DomainRouterManager, VirtualMach @Override - public DomainRouterVO stopRouter(StopRouterCmd cmd) throws InvalidParameterValueException, PermissionDeniedException{ + public DomainRouter stopRouter(StopRouterCmd cmd) throws InvalidParameterValueException, PermissionDeniedException{ Long routerId = cmd.getId(); Account account = UserContext.current().getAccount(); @@ -1382,7 +1385,7 @@ public class DomainRouterManagerImpl implements DomainRouterManager, VirtualMach } @Override - public boolean rebootRouter(RebootRouterCmd cmd) throws InvalidParameterValueException, PermissionDeniedException{ + public DomainRouter rebootRouter(RebootRouterCmd cmd) throws InvalidParameterValueException, PermissionDeniedException{ Long routerId = cmd.getId(); Account account = UserContext.current().getAccount(); @@ -1397,7 +1400,10 @@ public class DomainRouterManagerImpl implements DomainRouterManager, VirtualMach } long eventId = EventUtils.saveScheduledEvent(User.UID_SYSTEM, Account.ACCOUNT_ID_SYSTEM, EventTypes.EVENT_ROUTER_REBOOT, "rebooting Router with Id: "+routerId); - return rebootRouter(routerId, eventId); + if (rebootRouter(routerId, eventId)) + return _routerDao.findById(routerId); + else + throw new CloudRuntimeException("Fail to reboot router " + routerId); } @Override