Build response the same way for create/list/update IPForwardingRule.

This commit is contained in:
alena 2010-11-03 15:49:03 -07:00
parent 7674df6c7a
commit 2939e90d66
4 changed files with 25 additions and 60 deletions

View File

@ -31,6 +31,7 @@ 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.FirewallRuleResponse;
import com.cloud.api.response.HostResponse;
import com.cloud.api.response.IPAddressResponse;
import com.cloud.api.response.InstanceGroupResponse;
@ -63,6 +64,7 @@ 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.FirewallRuleVO;
import com.cloud.network.IPAddressVO;
import com.cloud.network.LoadBalancerVO;
import com.cloud.offering.NetworkOffering.GuestIpType;
@ -947,4 +949,19 @@ public class ApiResponseHelper {
return clusterResponse;
}
public static FirewallRuleResponse createFirewallRuleResponse(FirewallRuleVO fwRule) {
FirewallRuleResponse response = new FirewallRuleResponse();
response.setId(fwRule.getId());
response.setPrivatePort(fwRule.getPrivatePort());
response.setProtocol(fwRule.getProtocol());
response.setPublicPort(fwRule.getPublicPort());
if (fwRule.getPublicIpAddress() != null && fwRule.getPrivateIpAddress() != null) {
UserVm vm = ApiDBUtils.findUserVmByPublicIpAndGuestIp(fwRule.getPublicIpAddress(), fwRule.getPrivateIpAddress());
response.setVirtualMachineId(vm.getId());
response.setVirtualMachineName(vm.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;
@ -29,7 +29,6 @@ import com.cloud.api.ServerApiException;
import com.cloud.api.response.FirewallRuleResponse;
import com.cloud.network.FirewallRuleVO;
import com.cloud.network.NetworkManager;
import com.cloud.uservm.UserVm;
@Implementation(method="createPortForwardingRule", manager=NetworkManager.class, description="Creates a port forwarding rule")
public class CreateIPForwardingRuleCmd extends BaseCmd {
@ -95,16 +94,7 @@ public class CreateIPForwardingRuleCmd extends BaseCmd {
public FirewallRuleResponse getResponse() {
FirewallRuleVO fwRule = (FirewallRuleVO)getResponseObject();
if (fwRule != null) {
FirewallRuleResponse fwResponse = new FirewallRuleResponse();
fwResponse.setId(fwRule.getId());
fwResponse.setPrivatePort(fwRule.getPrivatePort());
fwResponse.setProtocol(fwRule.getProtocol());
fwResponse.setPublicPort(fwRule.getPublicPort());
UserVm vm = ApiDBUtils.findUserVmById(virtualMachineId);
fwResponse.setVirtualMachineId(vm.getId());
fwResponse.setVirtualMachineName(vm.getName());
FirewallRuleResponse fwResponse = ApiResponseHelper.createFirewallRuleResponse(fwRule);
fwResponse.setResponseName(getName());
return fwResponse;
}

View File

@ -18,24 +18,19 @@
package com.cloud.api.commands;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
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.FirewallRuleResponse;
import com.cloud.api.response.ListResponse;
import com.cloud.network.FirewallRuleVO;
import com.cloud.network.IPAddressVO;
import com.cloud.network.NetworkManager;
import com.cloud.server.Criteria;
import com.cloud.vm.UserVmVO;
@Implementation(method="listPortForwardingRules", manager=NetworkManager.class, description="Lists all port forwarding rules for an IP address.")
public class ListPortForwardingRulesCmd extends BaseListCmd {
@ -69,39 +64,12 @@ public class ListPortForwardingRulesCmd extends BaseListCmd {
@Override @SuppressWarnings("unchecked")
public ListResponse<FirewallRuleResponse> getResponse() {
List<FirewallRuleVO> firewallRules = (List<FirewallRuleVO>)getResponseObject();
Map<String, UserVmVO> userVmCache = new HashMap<String, UserVmVO>();
IPAddressVO ipAddr = ApiDBUtils.findIpAddressById(ipAddress);
List<FirewallRuleVO> firewallRules = (List<FirewallRuleVO>)getResponseObject();
ListResponse<FirewallRuleResponse> response = new ListResponse<FirewallRuleResponse>();
List<FirewallRuleResponse> fwResponses = new ArrayList<FirewallRuleResponse>();
for (FirewallRuleVO fwRule : firewallRules) {
FirewallRuleResponse ruleData = new FirewallRuleResponse();
ruleData.setId(fwRule.getId());
ruleData.setPublicPort(fwRule.getPublicPort());
ruleData.setPrivatePort(fwRule.getPrivatePort());
ruleData.setProtocol(fwRule.getProtocol());
UserVmVO userVM = userVmCache.get(fwRule.getPrivateIpAddress());
if (userVM == null) {
Criteria c = new Criteria();
c.addCriteria(Criteria.ACCOUNTID, new Object[] {ipAddr.getAccountId()});
c.addCriteria(Criteria.DATACENTERID, ipAddr.getDataCenterId());
c.addCriteria(Criteria.IPADDRESS, fwRule.getPrivateIpAddress());
List<UserVmVO> userVMs = ApiDBUtils.searchForUserVMs(c);
if ((userVMs != null) && (userVMs.size() > 0)) {
userVM = userVMs.get(0);
userVmCache.put(fwRule.getPrivateIpAddress(), userVM);
}
}
if (userVM != null) {
ruleData.setVirtualMachineId(userVM.getId());
ruleData.setVirtualMachineName(userVM.getName());
}
FirewallRuleResponse ruleData = ApiResponseHelper.createFirewallRuleResponse(fwRule);
ruleData.setResponseName("portforwardingrule");
fwResponses.add(ruleData);
}

View File

@ -4,6 +4,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;
@ -13,7 +14,6 @@ import com.cloud.network.FirewallRuleVO;
import com.cloud.network.IPAddressVO;
import com.cloud.server.ManagementServer;
import com.cloud.user.Account;
import com.cloud.uservm.UserVm;
@Implementation(method="updatePortForwardingRule", manager=ManagementServer.class, description="Updates a port forwarding rule. Only the private port and the virtual machine can be updated.")
public class UpdateIPForwardingRuleCmd extends BaseAsyncCmd {
@ -103,17 +103,7 @@ public class UpdateIPForwardingRuleCmd extends BaseAsyncCmd {
@Override @SuppressWarnings("unchecked")
public FirewallRuleResponse getResponse() {
FirewallRuleVO fwRule = (FirewallRuleVO)getResponseObject();
FirewallRuleResponse response = new FirewallRuleResponse();
response.setId(fwRule.getId());
response.setPrivatePort(fwRule.getPrivatePort());
response.setProtocol(fwRule.getProtocol());
response.setPublicPort(fwRule.getPublicPort());
UserVm vm = ApiDBUtils.findUserVmByPublicIpAndGuestIp(fwRule.getPublicIpAddress(), fwRule.getPrivateIpAddress());
response.setVirtualMachineId(vm.getId());
response.setVirtualMachineName(vm.getName());
FirewallRuleResponse response = ApiResponseHelper.createFirewallRuleResponse(fwRule);
response.setResponseName(getName());
return response;
}