> + vm =
> client.getVirtualMachineClient().getVirtualMachine(vm.getId());
> + List<Integer> ports =
> Ints.asList(templateOptions.getInboundPorts());
> + if (capabilities.getCloudStackVersion().startsWith("2")) {
> + logger.debug(">> setting up IP forwarding for
> IPAddress(%s) rules(%s)", ip.getId(), ports);
> + Set<IPForwardingRule> rules =
> setupPortForwardingRulesForIP.apply(ip, ports);
> + logger.trace("<< setup %d IP forwarding rules on
> IPAddress(%s)", rules.size(), ip.getId());
> + } else {
> + logger.debug(">> setting up firewall rules for
> IPAddress(%s) rules(%s)", ip.getId(), ports);
> + Set<FirewallRule> rules =
> setupFirewallRulesForIP.apply(ip, ports);
> + logger.trace("<< setup %d firewall rules on
> IPAddress(%s)", rules.size(), ip.getId());
> + }
> + }
> + }
> + } catch (RuntimeException re) {
> + logger.debug("-- exception after node has been created, trying to
> destroy the created VM");
> + destroyVirtualMachine(vm.getId());
Having a quick look at the code (I'm not the cloudstack expert here :)) it
seems that it will list the rules and only try to delete the ones that really
exist. The same procedure is applied in the other cleanup methods, so if this
is true and I haven't misunderstood how it works, it should be safe to call the
destroyNode as it should not fail during rollback. Worth a try?
---
Reply to this email directly or view it on GitHub:
https://github.com/jclouds/jclouds/pull/184/files#r6995644