public MachinePool getMachinePool() throws CloudAdapterException {
checkState(getConfiguration().isPresent(),
"cloud adapter needs to be configured before use");
try {
List<Machine> members = this.scalingGroup.listMachines();
return new MachinePool(members, UtcTime.now());
} catch (Exception e) {
String message = format("failed to retrieve scaling group: %s\n%s",
e.getMessage(), Throwables.getStackTraceAsString(e));
this.eventBus.post(new Alert(AlertTopics.POOL_FETCH.name(),
AlertSeverity.ERROR, UtcTime.now(), message));