Agree with what you said (I haven't gone through the code; just commenting on your proposal)
A common use case for private subnets in a VPC is to create layered applications, where each VM belongs to a layer and can be on a different subnet. Not all VMs should be reachable from the outside but traffic between them should be properly routed, and VMs with private IPs that should connect to the Internet (OS package updates, etc), should be able to do so. In AWS, this is achieved by using [NAT Gateways](http://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/vpc-nat-gateway.html), that act as the gateway for private networks, but that limits a bit the topology of your network: VMs in the "public" network must have an elastic IP, since the traffic will be routed to the Internet Gateway (without being NATed), and VMs in the "internal" subnets shouldn't have an elastic IP, since the traffic will be routed to the NAT gateway by default. I'm just commenting this to illustrate a common use case we should try to cover when implementing these APIs. Having the method to set the "auto create publicIP" for a certain subnet would definitely help to model the "public" networks, and we should also include a `NatGatewayApi` to the list of APIs to create. The `RouteTableApi` should allow us to create the table needed to model the public/external routing, as in the link above. I'll review the code in a while. Many thanks for starting this @geomacy! -- You are receiving this because you are subscribed to this thread. Reply to this email directly or view it on GitHub: https://github.com/jclouds/jclouds/pull/1097#issuecomment-300240481
