mirror of
https://github.com/apache/cloudstack.git
synced 2025-11-03 04:12:31 +01:00
Build response the same way for create/list/update IPForwardingRule.
This commit is contained in:
parent
7674df6c7a
commit
2939e90d66
@ -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;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@ -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;
|
||||
}
|
||||
|
||||
@ -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);
|
||||
}
|
||||
|
||||
@ -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;
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user