More api refactoring - move response building for LoadBalancer/IpAddress commands to ApiResponseHelper.

This commit is contained in:
alena 2010-11-03 10:09:40 -07:00
parent 4072fb2554
commit 886fd4e754
9 changed files with 110 additions and 186 deletions

View File

@ -29,6 +29,8 @@ import com.cloud.api.response.DiskOfferingResponse;
import com.cloud.api.response.DomainResponse;
import com.cloud.api.response.DomainRouterResponse;
import com.cloud.api.response.HostResponse;
import com.cloud.api.response.IPAddressResponse;
import com.cloud.api.response.LoadBalancerResponse;
import com.cloud.api.response.ResourceLimitResponse;
import com.cloud.api.response.ServiceOfferingResponse;
import com.cloud.api.response.SnapshotPolicyResponse;
@ -36,16 +38,22 @@ 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.api.response.VlanIpRangeResponse;
import com.cloud.async.AsyncJobVO;
import com.cloud.configuration.ConfigurationVO;
import com.cloud.configuration.ResourceCount.ResourceType;
import com.cloud.configuration.ResourceLimitVO;
import com.cloud.dc.ClusterVO;
import com.cloud.dc.HostPodVO;
import com.cloud.dc.Vlan.VlanType;
import com.cloud.dc.VlanVO;
import com.cloud.domain.DomainVO;
import com.cloud.host.Host;
import com.cloud.host.HostStats;
import com.cloud.host.HostVO;
import com.cloud.host.Status.Event;
import com.cloud.network.IPAddressVO;
import com.cloud.network.LoadBalancerVO;
import com.cloud.offering.NetworkOffering.GuestIpType;
import com.cloud.offering.ServiceOffering;
import com.cloud.server.Criteria;
@ -622,4 +630,88 @@ public class ApiResponseHelper {
return hostResponse;
}
public static VlanIpRangeResponse createVlanIpRangeResponse (VlanVO vlan) {
Long accountId = ApiDBUtils.getAccountIdForVlan(vlan.getId());
Long podId = ApiDBUtils.getPodIdForVlan(vlan.getId());
VlanIpRangeResponse vlanResponse = new VlanIpRangeResponse();
vlanResponse.setId(vlan.getId());
vlanResponse.setForVirtualNetwork(vlan.getVlanType().equals(VlanType.VirtualNetwork));
vlanResponse.setVlan(vlan.getVlanId());
vlanResponse.setZoneId(vlan.getDataCenterId());
if (accountId != null) {
Account account = ApiDBUtils.findAccountById(accountId);
vlanResponse.setAccountName(account.getAccountName());
vlanResponse.setDomainId(account.getDomainId());
vlanResponse.setDomainName(ApiDBUtils.findDomainById(account.getDomainId()).getName());
}
if (podId != null) {
HostPodVO pod = ApiDBUtils.findPodById(podId);
vlanResponse.setPodId(podId);
vlanResponse.setPodName(pod.getName());
}
vlanResponse.setGateway(vlan.getVlanGateway());
vlanResponse.setNetmask(vlan.getVlanNetmask());
vlanResponse.setDescription(vlan.getIpRange());
return vlanResponse;
}
public static IPAddressResponse createIPAddressResponse (IPAddressVO ipAddress) {
VlanVO vlan = ApiDBUtils.findVlanById(ipAddress.getVlanDbId());
boolean forVirtualNetworks = vlan.getVlanType().equals(VlanType.VirtualNetwork);
IPAddressResponse ipResponse = new IPAddressResponse();
ipResponse.setIpAddress(ipAddress.getAddress());
if (ipAddress.getAllocated() != null) {
ipResponse.setAllocated(ipAddress.getAllocated());
}
ipResponse.setZoneId(ipAddress.getDataCenterId());
ipResponse.setZoneName(ApiDBUtils.findZoneById(ipAddress.getDataCenterId()).getName());
ipResponse.setSourceNat(ipAddress.isSourceNat());
//get account information
Account accountTemp = ApiDBUtils.findAccountById(ipAddress.getAccountId());
if (accountTemp !=null){
ipResponse.setAccountName(accountTemp.getAccountName());
ipResponse.setDomainId(accountTemp.getDomainId());
ipResponse.setDomainName(ApiDBUtils.findDomainById(accountTemp.getDomainId()).getName());
}
ipResponse.setForVirtualNetwork(forVirtualNetworks);
//show this info to admin only
Account account = (Account)UserContext.current().getAccount();
if ((account == null) || account.getType() == Account.ACCOUNT_TYPE_ADMIN) {
ipResponse.setVlanId(ipAddress.getVlanDbId());
ipResponse.setVlanName(ApiDBUtils.findVlanById(ipAddress.getVlanDbId()).getVlanId());
}
return ipResponse;
}
public static LoadBalancerResponse createLoadBalancerResponse (LoadBalancerVO loadBalancer) {
LoadBalancerResponse lbResponse = new LoadBalancerResponse();
lbResponse.setId(loadBalancer.getId());
lbResponse.setName(loadBalancer.getName());
lbResponse.setDescription(loadBalancer.getDescription());
lbResponse.setPublicIp(loadBalancer.getIpAddress());
lbResponse.setPublicPort(loadBalancer.getPublicPort());
lbResponse.setPrivatePort(loadBalancer.getPrivatePort());
lbResponse.setAlgorithm(loadBalancer.getAlgorithm());
Account accountTemp = ApiDBUtils.findAccountById(loadBalancer.getAccountId());
if (accountTemp != null) {
lbResponse.setAccountName(accountTemp.getAccountName());
lbResponse.setDomainId(accountTemp.getDomainId());
lbResponse.setDomainName(ApiDBUtils.findDomainById(accountTemp.getDomainId()).getName());
}
return lbResponse;
}
}

View File

@ -20,17 +20,13 @@ 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.BaseCmd;
import com.cloud.api.Implementation;
import com.cloud.api.Parameter;
import com.cloud.api.response.IPAddressResponse;
import com.cloud.dc.Vlan.VlanType;
import com.cloud.dc.VlanVO;
import com.cloud.network.IPAddressVO;
import com.cloud.network.NetworkManager;
import com.cloud.user.Account;
import com.cloud.user.UserContext;
@Implementation(method="associateIP", manager=NetworkManager.class, description="Acquires and associates a public IP to an account.")
public class AssociateIPAddrCmd extends BaseCmd {
@ -83,36 +79,7 @@ public class AssociateIPAddrCmd extends BaseCmd {
@SuppressWarnings("unchecked")
public IPAddressResponse getResponse() {
IPAddressVO ipAddress = (IPAddressVO)getResponseObject();
VlanVO vlan = ApiDBUtils.findVlanById(ipAddress.getVlanDbId());
boolean forVirtualNetworks = vlan.getVlanType().equals(VlanType.VirtualNetwork);
IPAddressResponse ipResponse = new IPAddressResponse();
ipResponse.setIpAddress(ipAddress.getAddress());
if (ipAddress.getAllocated() != null) {
ipResponse.setAllocated(ipAddress.getAllocated());
}
ipResponse.setZoneId(ipAddress.getDataCenterId());
ipResponse.setZoneName(ApiDBUtils.findZoneById(ipAddress.getDataCenterId()).getName());
ipResponse.setSourceNat(ipAddress.isSourceNat());
//get account information
Account accountTemp = ApiDBUtils.findAccountById(ipAddress.getAccountId());
if (accountTemp !=null){
ipResponse.setAccountName(accountTemp.getAccountName());
ipResponse.setDomainId(accountTemp.getDomainId());
ipResponse.setDomainName(ApiDBUtils.findDomainById(accountTemp.getDomainId()).getName());
}
ipResponse.setForVirtualNetwork(forVirtualNetworks);
//show this info to admin only
Account account = (Account)UserContext.current().getAccount();
if ((account == null) || isAdmin(account.getType())) {
ipResponse.setVlanId(ipAddress.getVlanDbId());
ipResponse.setVlanName(ApiDBUtils.findVlanById(ipAddress.getVlanDbId()).getVlanId());
}
IPAddressResponse ipResponse = ApiResponseHelper.createIPAddressResponse(ipAddress);
ipResponse.setResponseName(getName());
return ipResponse;
}

View File

@ -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.BaseCmd;
import com.cloud.api.Implementation;
import com.cloud.api.Parameter;
@ -97,20 +97,8 @@ public class CreateLoadBalancerRuleCmd extends BaseCmd {
@Override @SuppressWarnings("unchecked")
public LoadBalancerResponse getResponse() {
LoadBalancerVO responseObj = (LoadBalancerVO)getResponseObject();
LoadBalancerResponse response = new LoadBalancerResponse();
response.setAlgorithm(responseObj.getAlgorithm());
response.setDescription(responseObj.getDescription());
response.setId(responseObj.getId());
response.setName(responseObj.getName());
response.setPrivatePort(responseObj.getPrivatePort());
response.setPublicIp(responseObj.getIpAddress());
response.setPublicPort(responseObj.getPublicPort());
response.setAccountName(responseObj.getAccountName());
response.setDomainId(responseObj.getDomainId());
response.setDomainName(ApiDBUtils.findDomainById(responseObj.getDomainId()).getName());
LoadBalancerVO loadBalancer = (LoadBalancerVO)getResponseObject();
LoadBalancerResponse response = ApiResponseHelper.createLoadBalancerResponse(loadBalancer);
response.setResponseName(getName());
return response;
}

View File

@ -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.BaseCmd;
import com.cloud.api.Implementation;
import com.cloud.api.Parameter;
@ -126,30 +126,7 @@ public class CreateVlanIpRangeCmd extends BaseCmd {
@Override @SuppressWarnings("unchecked")
public VlanIpRangeResponse getResponse() {
VlanVO vlan = (VlanVO)getResponseObject();
String domainNameResponse = null;
if ((accountName != null) && (domainId != null)) {
domainNameResponse = ApiDBUtils.findDomainById(domainId).getName();
}
VlanIpRangeResponse response = new VlanIpRangeResponse();
response.setAccountName(accountName);
response.setDescription(vlan.getIpRange());
response.setDomainId(domainId);
response.setEndIp(endIp);
response.setForVirtualNetwork(forVirtualNetwork);
response.setGateway(vlan.getVlanGateway());
response.setId(vlan.getId());
response.setNetmask(vlan.getVlanNetmask());
response.setPodId(podId);
response.setStartIp(startIp);
response.setVlan(vlan.getVlanId());
response.setZoneId(vlan.getDataCenterId());
response.setDomainName(domainNameResponse);
if (podId != null) {
response.setPodName(ApiDBUtils.findPodById(podId).getName());
}
VlanIpRangeResponse response = ApiResponseHelper.createVlanIpRangeResponse(vlan);
response.setResponseName(getName());
return response;
}

View File

@ -23,13 +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.UserVmResponse;
import com.cloud.user.Account;
import com.cloud.vm.UserVmVO;
@Implementation(method="listLoadBalancerInstances", description="List all virtual machine instances that are assigned to a load balancer rule.")
@ -76,19 +75,7 @@ public class ListLoadBalancerRuleInstancesCmd extends BaseListCmd {
ListResponse<UserVmResponse> response = new ListResponse<UserVmResponse>();
List<UserVmResponse> vmResponses = new ArrayList<UserVmResponse>();
for (UserVmVO instance : instances) {
UserVmResponse userVmResponse = new UserVmResponse();
userVmResponse.setId(instance.getId());
userVmResponse.setName(instance.getName());
userVmResponse.setDisplayName(instance.getDisplayName());
userVmResponse.setIpAddress(instance.getPrivateIpAddress());
Account accountTemp = ApiDBUtils.findAccountById(instance.getAccountId());
if (accountTemp != null) {
userVmResponse.setAccountName(accountTemp.getAccountName());
userVmResponse.setDomainId(accountTemp.getDomainId());
userVmResponse.setDomainName(ApiDBUtils.findDomainById(accountTemp.getDomainId()).getName());
}
UserVmResponse userVmResponse = ApiResponseHelper.createUserVmResponse(instance);
userVmResponse.setResponseName("loadbalancerruleinstance");
vmResponses.add(userVmResponse);
}

View File

@ -24,14 +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.ListResponse;
import com.cloud.api.response.LoadBalancerResponse;
import com.cloud.network.LoadBalancerVO;
import com.cloud.user.Account;
@Implementation(method="searchForLoadBalancers", description="Lists load balancer rules.")
public class ListLoadBalancerRulesCmd extends BaseListCmd {
@ -105,22 +104,7 @@ public class ListLoadBalancerRulesCmd extends BaseListCmd {
ListResponse<LoadBalancerResponse> response = new ListResponse<LoadBalancerResponse>();
List<LoadBalancerResponse> lbResponses = new ArrayList<LoadBalancerResponse>();
for (LoadBalancerVO loadBalancer : loadBalancers) {
LoadBalancerResponse lbResponse = new LoadBalancerResponse();
lbResponse.setId(loadBalancer.getId());
lbResponse.setName(loadBalancer.getName());
lbResponse.setDescription(loadBalancer.getDescription());
lbResponse.setPublicIp(loadBalancer.getIpAddress());
lbResponse.setPublicPort(loadBalancer.getPublicPort());
lbResponse.setPrivatePort(loadBalancer.getPrivatePort());
lbResponse.setAlgorithm(loadBalancer.getAlgorithm());
Account accountTemp = ApiDBUtils.findAccountById(loadBalancer.getAccountId());
if (accountTemp != null) {
lbResponse.setAccountName(accountTemp.getAccountName());
lbResponse.setDomainId(accountTemp.getDomainId());
lbResponse.setDomainName(ApiDBUtils.findDomainById(accountTemp.getDomainId()).getName());
}
LoadBalancerResponse lbResponse = ApiResponseHelper.createLoadBalancerResponse(loadBalancer);
lbResponse.setResponseName("loadbalancerrule");
lbResponses.add(lbResponse);
}

View File

@ -24,17 +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.IPAddressResponse;
import com.cloud.api.response.ListResponse;
import com.cloud.dc.Vlan.VlanType;
import com.cloud.dc.VlanVO;
import com.cloud.network.IPAddressVO;
import com.cloud.user.Account;
import com.cloud.user.UserContext;
@Implementation(method="searchForIPAddresses", description="Lists all public ip addresses")
public class ListPublicIpAddressesCmd extends BaseListCmd {
@ -115,35 +111,7 @@ public class ListPublicIpAddressesCmd extends BaseListCmd {
ListResponse<IPAddressResponse> response = new ListResponse<IPAddressResponse>();
List<IPAddressResponse> ipAddrResponses = new ArrayList<IPAddressResponse>();
for (IPAddressVO ipAddress : ipAddresses) {
VlanVO vlan = ApiDBUtils.findVlanById(ipAddress.getVlanDbId());
boolean forVirtualNetworks = vlan.getVlanType().equals(VlanType.VirtualNetwork);
IPAddressResponse ipResponse = new IPAddressResponse();
ipResponse.setIpAddress(ipAddress.getAddress());
if (ipAddress.getAllocated() != null) {
ipResponse.setAllocated(ipAddress.getAllocated());
}
ipResponse.setZoneId(ipAddress.getDataCenterId());
ipResponse.setZoneName(ApiDBUtils.findZoneById(ipAddress.getDataCenterId()).getName());
ipResponse.setSourceNat(ipAddress.isSourceNat());
//get account information
Account accountTemp = ApiDBUtils.findAccountById(ipAddress.getAccountId());
if (accountTemp !=null){
ipResponse.setAccountName(accountTemp.getAccountName());
ipResponse.setDomainId(accountTemp.getDomainId());
ipResponse.setDomainName(ApiDBUtils.findDomainById(accountTemp.getDomainId()).getName());
}
ipResponse.setForVirtualNetwork(forVirtualNetworks);
//show this info to admin only
Account account = (Account)UserContext.current().getAccount();
if ((account == null) || isAdmin(account.getType())) {
ipResponse.setVlanId(ipAddress.getVlanDbId());
ipResponse.setVlanName(ApiDBUtils.findVlanById(ipAddress.getVlanDbId()).getVlanId());
}
IPAddressResponse ipResponse = ApiResponseHelper.createIPAddressResponse(ipAddress);
ipResponse.setResponseName("publicipaddress");
ipAddrResponses.add(ipResponse);
}

View File

@ -23,16 +23,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.ListResponse;
import com.cloud.api.response.VlanIpRangeResponse;
import com.cloud.dc.HostPodVO;
import com.cloud.dc.Vlan.VlanType;
import com.cloud.dc.VlanVO;
import com.cloud.user.Account;
@Implementation(method="searchForVlans", description="Lists all VLAN IP ranges.")
public class ListVlanIpRangesCmd extends BaseListCmd {
@ -105,33 +102,8 @@ public class ListVlanIpRangesCmd extends BaseListCmd {
ListResponse<VlanIpRangeResponse> response = new ListResponse<VlanIpRangeResponse>();
List<VlanIpRangeResponse> vlanResponses = new ArrayList<VlanIpRangeResponse>();
for (VlanVO vlan : vlans) {
Long accountId = ApiDBUtils.getAccountIdForVlan(vlan.getId());
Long podId = ApiDBUtils.getPodIdForVlan(vlan.getId());
VlanIpRangeResponse vlanResponse = new VlanIpRangeResponse();
vlanResponse.setId(vlan.getId());
vlanResponse.setForVirtualNetwork(vlan.getVlanType().equals(VlanType.VirtualNetwork));
vlanResponse.setVlan(vlan.getVlanId());
vlanResponse.setZoneId(vlan.getDataCenterId());
if (accountId != null) {
Account account = ApiDBUtils.findAccountById(accountId);
vlanResponse.setAccountName(account.getAccountName());
vlanResponse.setDomainId(account.getDomainId());
vlanResponse.setDomainName(ApiDBUtils.findDomainById(account.getDomainId()).getName());
}
if (podId != null) {
HostPodVO pod = ApiDBUtils.findPodById(podId);
vlanResponse.setPodId(podId);
vlanResponse.setPodName(pod.getName());
}
vlanResponse.setGateway(vlan.getVlanGateway());
vlanResponse.setNetmask(vlan.getVlanNetmask());
vlanResponse.setDescription(vlan.getIpRange());
for (VlanVO vlan : vlans) {
VlanIpRangeResponse vlanResponse = ApiResponseHelper.createVlanIpRangeResponse(vlan);
vlanResponse.setResponseName("vlaniprange");
vlanResponses.add(vlanResponse);
}

View File

@ -21,6 +21,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;
@ -109,19 +110,7 @@ public class UpdateLoadBalancerRuleCmd extends BaseAsyncCmd {
@Override @SuppressWarnings("unchecked")
public LoadBalancerResponse getResponse() {
LoadBalancerVO loadBalancer = (LoadBalancerVO)getResponseObject();
LoadBalancerResponse response = new LoadBalancerResponse();
response.setAlgorithm(loadBalancer.getAlgorithm());
response.setDescription(loadBalancer.getDescription());
response.setId(loadBalancer.getId());
response.setName(loadBalancer.getName());
response.setPrivatePort(loadBalancer.getPrivatePort());
response.setPublicIp(loadBalancer.getIpAddress());
response.setPublicPort(loadBalancer.getPublicPort());
response.setAccountName(loadBalancer.getAccountName());
response.setDomainId(loadBalancer.getDomainId());
response.setDomainName(ApiDBUtils.findDomainById(loadBalancer.getDomainId()).getName());
LoadBalancerResponse response = ApiResponseHelper.createLoadBalancerResponse(loadBalancer);
response.setResponseName(getName());
return response;
}