Jclouds openIptables: avoid NPE if no inboundPorts
Project: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/commit/2227415b Tree: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/tree/2227415b Diff: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/diff/2227415b Branch: refs/heads/master Commit: 2227415b25f0b821f23c1899181f6040195fc54b Parents: 0416bd1 Author: Aled Sage <[email protected]> Authored: Wed Feb 18 10:08:24 2015 +0000 Committer: Aled Sage <[email protected]> Committed: Wed Feb 18 12:06:26 2015 +0000 ---------------------------------------------------------------------- .../location/jclouds/JcloudsLocation.java | 38 +++++++++++--------- 1 file changed, 22 insertions(+), 16 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/2227415b/locations/jclouds/src/main/java/brooklyn/location/jclouds/JcloudsLocation.java ---------------------------------------------------------------------- diff --git a/locations/jclouds/src/main/java/brooklyn/location/jclouds/JcloudsLocation.java b/locations/jclouds/src/main/java/brooklyn/location/jclouds/JcloudsLocation.java index 37272d4..706b3ee 100644 --- a/locations/jclouds/src/main/java/brooklyn/location/jclouds/JcloudsLocation.java +++ b/locations/jclouds/src/main/java/brooklyn/location/jclouds/JcloudsLocation.java @@ -742,25 +742,31 @@ public class JcloudsLocation extends AbstractCloudMachineProvisioningLocation im } if (setup.get(OPEN_IPTABLES)) { - customisationForLogging.add("open iptables"); - @SuppressWarnings("unchecked") - List<String> iptablesRules = createIptablesRulesForNetworkInterface((Iterable<Integer>) setup.get(INBOUND_PORTS)); - iptablesRules.add(IptablesCommands.saveIptablesRules()); - List<String> batch = Lists.newArrayList(); - // Some entities, such as Riak (erlang based) have a huge range of ports, which leads to a script that - // is too large to run (fails with a broken pipe). Batch the rules into batches of 50 - for (String rule : iptablesRules) { - batch.add(rule); - if (batch.size() == 50) { - sshMachineLocation.execCommands("Inserting iptables rules, 50 command batch", batch); - batch.clear(); + Iterable<Integer> inboundPorts = (Iterable<Integer>) setup.get(INBOUND_PORTS); + + if (inboundPorts == null || Iterables.isEmpty(inboundPorts)) { + LOG.info("No ports to open in iptables (no inbound ports) for {} at {}", sshMachineLocation, this); + } else { + customisationForLogging.add("open iptables"); + + List<String> iptablesRules = createIptablesRulesForNetworkInterface(inboundPorts); + iptablesRules.add(IptablesCommands.saveIptablesRules()); + List<String> batch = Lists.newArrayList(); + // Some entities, such as Riak (erlang based) have a huge range of ports, which leads to a script that + // is too large to run (fails with a broken pipe). Batch the rules into batches of 50 + for (String rule : iptablesRules) { + batch.add(rule); + if (batch.size() == 50) { + sshMachineLocation.execCommands("Inserting iptables rules, 50 command batch", batch); + batch.clear(); + } } + if (batch.size() > 0) { + sshMachineLocation.execCommands("Inserting iptables rules", batch); + } + sshMachineLocation.execCommands("List iptables rules", ImmutableList.of(IptablesCommands.listIptablesRule())); } - if (batch.size() > 0) { - sshMachineLocation.execCommands("Inserting iptables rules", batch); - } - sshMachineLocation.execCommands("List iptables rules", ImmutableList.of(IptablesCommands.listIptablesRule())); } if (setup.get(STOP_IPTABLES)) {
