public SetPortForwardingRulesAnswer(SetPortForwardingRulesCommand cmd, String[] results, boolean success) { super(cmd, success, null); assert (cmd.getRules().length == results.length) : "Shouldn't the results match the commands?"; this.results = results; }
@Override public List<ConfigItem> generateConfig(final NetworkElementCommand cmd) { final SetPortForwardingRulesCommand command = (SetPortForwardingRulesCommand) cmd; final List<ForwardingRule> rules = new ArrayList<ForwardingRule>(); for (final PortForwardingRuleTO rule : command.getRules()) { final ForwardingRule fwdRule = new ForwardingRule(rule.revoked(), rule.getProtocol().toLowerCase(), rule.getSrcIp(), rule.getStringSrcPortRange(), rule.getDstIp(), rule.getStringDstPortRange()); rules.add(fwdRule); } final ForwardingRules ruleSet = new ForwardingRules(rules.toArray(new ForwardingRule[rules.size()])); return generateConfigItems(ruleSet); }
private Answer execute(SetPortForwardingRulesCommand cmd, int numRetries) { PortForwardingRuleTO[] rules = cmd.getRules(); try { ArrayList<IPaloAltoCommand> commandList = new ArrayList<IPaloAltoCommand>(); for (PortForwardingRuleTO rule : rules) { if (!rule.revoked()) { manageDstNatRule(commandList, PaloAltoPrimative.ADD, rule); } else { manageDstNatRule(commandList, PaloAltoPrimative.DELETE, rule); } } boolean status = requestWithCommit(commandList); return new Answer(cmd); } catch (ExecutionException e) { s_logger.error(e); if (numRetries > 0 && refreshPaloAltoConnection()) { int numRetriesRemaining = numRetries - 1; s_logger.debug("Retrying SetPortForwardingRulesCommand. Number of retries remaining: " + numRetriesRemaining); return execute(cmd, numRetriesRemaining); } else { return new Answer(cmd, e); } } }