From 2939e90d66520d27a00bee472c03f3387295d3b6 Mon Sep 17 00:00:00 2001 From: alena Date: Wed, 3 Nov 2010 15:49:03 -0700 Subject: [PATCH] Build response the same way for create/list/update IPForwardingRule. --- .../src/com/cloud/api/ApiResponseHelper.java | 17 ++++++++ .../commands/CreateIPForwardingRuleCmd.java | 14 +------ .../commands/ListPortForwardingRulesCmd.java | 40 ++----------------- .../commands/UpdateIPForwardingRuleCmd.java | 14 +------ 4 files changed, 25 insertions(+), 60 deletions(-) diff --git a/server/src/com/cloud/api/ApiResponseHelper.java b/server/src/com/cloud/api/ApiResponseHelper.java index e47db72a1b5..aef6c8ac975 100644 --- a/server/src/com/cloud/api/ApiResponseHelper.java +++ b/server/src/com/cloud/api/ApiResponseHelper.java @@ -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; + } + } diff --git a/server/src/com/cloud/api/commands/CreateIPForwardingRuleCmd.java b/server/src/com/cloud/api/commands/CreateIPForwardingRuleCmd.java index 87b37f98df5..01e8cfe866b 100644 --- a/server/src/com/cloud/api/commands/CreateIPForwardingRuleCmd.java +++ b/server/src/com/cloud/api/commands/CreateIPForwardingRuleCmd.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.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; } diff --git a/server/src/com/cloud/api/commands/ListPortForwardingRulesCmd.java b/server/src/com/cloud/api/commands/ListPortForwardingRulesCmd.java index f6c9bb173cd..433fac2f513 100644 --- a/server/src/com/cloud/api/commands/ListPortForwardingRulesCmd.java +++ b/server/src/com/cloud/api/commands/ListPortForwardingRulesCmd.java @@ -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 getResponse() { - List firewallRules = (List)getResponseObject(); - Map userVmCache = new HashMap(); - IPAddressVO ipAddr = ApiDBUtils.findIpAddressById(ipAddress); - + List firewallRules = (List)getResponseObject(); ListResponse response = new ListResponse(); List fwResponses = new ArrayList(); + 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 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); } diff --git a/server/src/com/cloud/api/commands/UpdateIPForwardingRuleCmd.java b/server/src/com/cloud/api/commands/UpdateIPForwardingRuleCmd.java index b4617b2e458..1e0cb77e459 100644 --- a/server/src/com/cloud/api/commands/UpdateIPForwardingRuleCmd.java +++ b/server/src/com/cloud/api/commands/UpdateIPForwardingRuleCmd.java @@ -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; }