Skip to content

Commit 6b9603b

Browse files
committed
bug 10561: intermidiate checkin for FirewallRuleFeature
1) Added new apis: createFirewallRule, deleteFirewallRule, listFirewallRules 2) Modified existing apis - added boolean openFirewall parameter to createPortForwardingRule/createIpForwardingRule/createRemoteAccessVpn. If parameter is set to true, open firewall on the domR before creating an actual PF rule there Modified backend calls appropriately. 3) Schema changes for firewall_rules table: * startPort/endPort can be null now * added icmp_type, icmp_code fields (can be not null only when protocol is icmp) 4) Added new manager - FirewallManagerImpl Conflicts: api/src/com/cloud/api/BaseCmd.java client/tomcatconf/commands.properties.in server/src/com/cloud/api/ApiResponseHelper.java server/src/com/cloud/configuration/DefaultComponentLibrary.java server/src/com/cloud/network/lb/LoadBalancingRulesManagerImpl.java server/src/com/cloud/network/rules/RulesManagerImpl.java
1 parent adfb6a1 commit 6b9603b

49 files changed

Lines changed: 1764 additions & 487 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

api/src/com/cloud/agent/api/to/FirewallRuleTO.java

Lines changed: 20 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,9 @@
1717
*/
1818
package com.cloud.agent.api.to;
1919

20+
import java.util.ArrayList;
21+
import java.util.List;
22+
2023
import com.cloud.network.rules.FirewallRule;
2124
import com.cloud.network.rules.FirewallRule.State;
2225
import com.cloud.utils.net.NetUtils;
@@ -53,10 +56,25 @@ public class FirewallRuleTO {
5356
protected FirewallRuleTO() {
5457
}
5558

56-
public FirewallRuleTO(long id, String srcIp, String protocol, int srcPortStart, int srcPortEnd, boolean revoked, boolean alreadyAdded, FirewallRule.Purpose purpose) {
59+
public FirewallRuleTO(long id, String srcIp, String protocol, Integer srcPortStart, Integer srcPortEnd, boolean revoked, boolean alreadyAdded, FirewallRule.Purpose purpose) {
5760
this.srcIp = srcIp;
5861
this.protocol = protocol;
59-
this.srcPortRange = new int[] {srcPortStart, srcPortEnd};
62+
63+
if (srcPortStart != null) {
64+
List<Integer> portRange = new ArrayList<Integer>();
65+
portRange.add(srcPortStart);
66+
if (srcPortEnd != null) {
67+
portRange.add(srcPortEnd);
68+
}
69+
70+
srcPortRange = new int[portRange.size()];
71+
int i = 0;
72+
for (Integer port : portRange) {
73+
srcPortRange[i] = port.intValue();
74+
i ++;
75+
}
76+
}
77+
6078
this.revoked = revoked;
6179
this.alreadyAdded = alreadyAdded;
6280
this.purpose = purpose;

api/src/com/cloud/api/ApiConstants.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -254,4 +254,5 @@ public class ApiConstants {
254254
public static final String REDUNDANT_ROUTER = "redundantrouter";
255255
public static final String IP_NETWORK_LIST = "iptonetworklist";
256256
public static final String KEYBOARD="keyboard";
257+
public static final String OPEN_FIREWALL="openfirewall";
257258
}

api/src/com/cloud/api/BaseCmd.java

Lines changed: 38 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@
2525
import java.util.List;
2626
import java.util.Map;
2727
import java.util.regex.Pattern;
28+
<<<<<<< HEAD
2829

2930
import org.apache.log4j.Logger;
3031

@@ -56,6 +57,39 @@
5657
import com.cloud.utils.component.ComponentLocator;
5758
import com.cloud.vm.BareMetalVmService;
5859
import com.cloud.vm.UserVmService;
60+
=======
61+
62+
import org.apache.log4j.Logger;
63+
64+
import com.cloud.configuration.ConfigurationService;
65+
import com.cloud.consoleproxy.ConsoleProxyService;
66+
import com.cloud.dao.EntityManager;
67+
import com.cloud.exception.ConcurrentOperationException;
68+
import com.cloud.exception.InsufficientCapacityException;
69+
import com.cloud.exception.InvalidParameterValueException;
70+
import com.cloud.exception.PermissionDeniedException;
71+
import com.cloud.exception.ResourceAllocationException;
72+
import com.cloud.exception.ResourceUnavailableException;
73+
import com.cloud.network.NetworkService;
74+
import com.cloud.network.VirtualNetworkApplianceService;
75+
import com.cloud.network.firewall.FirewallService;
76+
import com.cloud.network.lb.LoadBalancingRulesService;
77+
import com.cloud.network.rules.RulesService;
78+
import com.cloud.network.security.SecurityGroupService;
79+
import com.cloud.network.vpn.RemoteAccessVpnService;
80+
import com.cloud.resource.ResourceService;
81+
import com.cloud.server.ManagementService;
82+
import com.cloud.storage.StorageService;
83+
import com.cloud.storage.snapshot.SnapshotService;
84+
import com.cloud.template.TemplateService;
85+
import com.cloud.user.Account;
86+
import com.cloud.user.AccountService;
87+
import com.cloud.user.UserContext;
88+
import com.cloud.utils.Pair;
89+
import com.cloud.utils.component.ComponentLocator;
90+
import com.cloud.vm.UserVmService;
91+
import com.cloud.vm.BareMetalVmService;
92+
>>>>>>> 32445e6... bug 10561: intermidiate checkin for FirewallRuleFeature
5993

6094
public abstract class BaseCmd {
6195
private static final Logger s_logger = Logger.getLogger(BaseCmd.class.getName());
@@ -117,7 +151,8 @@ public enum CommandType {
117151
public static LoadBalancingRulesService _lbService;
118152
public static RemoteAccessVpnService _ravService;
119153
public static BareMetalVmService _bareMetalVmService;
120-
public static ProjectService _projectService;
154+
public static ProjectService _projectService;
155+
public static FirewallService _firewallService;
121156

122157
static void setComponents(ResponseGenerator generator) {
123158
ComponentLocator locator = ComponentLocator.getLocator(ManagementService.Name);
@@ -139,7 +174,8 @@ static void setComponents(ResponseGenerator generator) {
139174
_ravService = locator.getManager(RemoteAccessVpnService.class);
140175
_responseGenerator = generator;
141176
_bareMetalVmService = locator.getManager(BareMetalVmService.class);
142-
_projectService = locator.getManager(ProjectService.class);
177+
_projectService = locator.getManager(ProjectService.class);
178+
_firewallService = locator.getManager(FirewallService.class);
143179
}
144180

145181
public abstract void execute() throws ResourceUnavailableException, InsufficientCapacityException, ServerApiException, ConcurrentOperationException, ResourceAllocationException;

api/src/com/cloud/api/ResponseGenerator.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@
3232
import com.cloud.api.response.DomainRouterResponse;
3333
import com.cloud.api.response.EventResponse;
3434
import com.cloud.api.response.ExtractResponse;
35+
import com.cloud.api.response.FirewallResponse;
3536
import com.cloud.api.response.FirewallRuleResponse;
3637
import com.cloud.api.response.HostResponse;
3738
import com.cloud.api.response.IPAddressResponse;
@@ -76,6 +77,7 @@
7677
import com.cloud.network.RemoteAccessVpn;
7778
import com.cloud.network.VpnUser;
7879
import com.cloud.network.router.VirtualRouter;
80+
import com.cloud.network.rules.FirewallRule;
7981
import com.cloud.network.rules.LoadBalancer;
8082
import com.cloud.network.rules.PortForwardingRule;
8183
import com.cloud.network.rules.StaticNatRule;
@@ -207,5 +209,7 @@ public interface ResponseGenerator {
207209
List<TemplateResponse> createIsoResponses(VirtualMachineTemplate iso, long zoneId, boolean readyOnly);
208210

209211
List<TemplateResponse> createTemplateResponses(long templateId, Long vmId);
212+
213+
FirewallResponse createFirewallResponse(FirewallRule fwRule);
210214

211215
}

0 commit comments

Comments
 (0)