> +                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

Reply via email to