@Override public List<Machine> startMachines(int count) throws StartMachinesException, CloudPoolDriverException { checkState(isConfigured(), "attempt to use unconfigured driver"); List<Machine> startedMachines = new ArrayList<>(); try { for (int i = 0; i < count; i++) { // tag new server with cloud pool membership Map<String, String> tags = ImmutableMap.of(Constants.CLOUD_POOL_TAG, getPoolName()); Server newServer = this.client.launchServer(uniqueServerName(), provisioningTemplate(), tags); Machine machine = serverToMachine().apply(newServer); startedMachines.add(machine); if (provisioningTemplate().isAssignFloatingIp()) { String serverId = newServer.getId(); String floatingIp = this.client.assignFloatingIp(serverId); machine.getPublicIps().add(floatingIp); } } } catch (Exception e) { throw new StartMachinesException(count, startedMachines, e); } return startedMachines; }