> + PublicIPAddress ip =
> staticNATVMInNetwork.create(networks.get(networkId)).apply(vm);
> + logger.trace("<< static NATed IPAddress(%s) to
> virtualMachine(%s)", ip.getId(), vm.getId());
> + 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) {
Yeah, the intention is that anything that would cause the method to throw an
exception will be caught. The expected behaviour of the method is that a vm
instance will be created. If the method throws an exception api users would
(should) assume that vm creation failed. To ensure this actually also happens
on the cloudstack cloud i'm catching anything that happens after the vm spins
up and roll it back.
---
Reply to this email directly or view it on GitHub:
https://github.com/jclouds/jclouds/pull/184/files#r7003371