public static Function<CoordinatorStatus, CoordinatorStatusRepresentation> fromCoordinatorStatus(List<CoordinatorStatus> coordinatorStatuses) { return fromCoordinatorStatus(new CoordinatorStatusRepresentationFactory(coordinatorStatuses)); }
return coordinatorStatus.getShortCoordinatorId(); case uuid: return coordinatorStatus.getCoordinatorId(); case machine: return coordinatorStatus.getInstanceId(); case internalHost: return coordinatorStatus.getInternalHost(); case internalIp: return coordinatorStatus.getInternalIp(); case externalHost: return coordinatorStatus.getExternalHost(); case status: return coordinatorStatus.getState(); case location: return coordinatorStatus.getLocation(); case shortLocation: return coordinatorStatus.getShortLocation(); case instanceType: return coordinatorStatus.getInstanceType(); case internalUri: return coordinatorStatus.getSelf(); case externalUri: return coordinatorStatus.getExternalUri(); default: return null;
public String getInternalIp() { String host = getInternalHost(); if (host == null) { return null; } if ("localhost".equalsIgnoreCase(host)) { return "127.0.0.1"; } try { return InetAddress.getByName(host).getHostAddress(); } catch (UnknownHostException e) { return "unknown"; } }
private List<CoordinatorStatusRepresentation> waitForCoordinatorsToStart(List<String> instanceIds) { for (int loop = 0; true; loop++) { try { URI uri = uriBuilderFrom(coordinatorUri).replacePath("v1/admin/coordinator").build(); Request request = RequestBuilder.prepareGet() .setUri(uri) .build(); List<CoordinatorStatusRepresentation> coordinators = client.execute(request, createJsonResponseHandler(COORDINATORS_CODEC)); Map<String, CoordinatorStatusRepresentation> runningCoordinators = newHashMap(); for (CoordinatorStatusRepresentation coordinator : coordinators) { if (coordinator.getState() == CoordinatorLifecycleState.ONLINE) { runningCoordinators.put(coordinator.getInstanceId(), coordinator); } } if (runningCoordinators.keySet().containsAll(instanceIds)) { WaitUtils.clearWaitMessage(); runningCoordinators.keySet().retainAll(instanceIds); return ImmutableList.copyOf(runningCoordinators.values()); } } catch (Exception ignored) { } WaitUtils.wait(loop); } }
@Override public void execute(Commander commander) throws Exception { List<CoordinatorStatusRepresentation> coordinators = commander.provisionCoordinators(coordinatorConfig, count, instanceType, availabilityZone, ami, keyPair, securityGroup, !noWait); // add the new coordinators to the config String coordinatorProperty = "environment." + environmentRef + ".coordinator"; for (CoordinatorStatusRepresentation coordinator : coordinators) { URI uri = coordinator.getExternalUri(); if (uri != null) { config.add(coordinatorProperty, uri.toASCIIString()); } } config.save(); displayCoordinators(coordinators); }
@Override public boolean sshCoordinator(CoordinatorFilter coordinatorFilter, String command) { URI uri = coordinatorFilter.toUri(uriBuilderFrom(coordinatorUri).replacePath("v1/admin/coordinator")); Request request = RequestBuilder.prepareGet() .setUri(uri) .build(); List<CoordinatorStatusRepresentation> coordinators = client.execute(request, createJsonResponseHandler(COORDINATORS_CODEC)); if (coordinators.isEmpty()) { return false; } Exec.execRemote(coordinators.get(0).getExternalHost(), command); return true; }
List<String> instanceIds = newArrayList(); for (CoordinatorStatusRepresentation coordinator : coordinators) { instanceIds.add(coordinator.getInstanceId());
public CoordinatorStatusRepresentation create(CoordinatorStatus status) { return new CoordinatorStatusRepresentation( status.getCoordinatorId(), safeTruncate(status.getCoordinatorId(), shortIdPrefixSize), status.getInstanceId(), status.getState(), status.getInternalUri(), status.getExternalUri(), status.getLocation(), trimLeadingSegments(status.getLocation(), '/', commonLocationParts), status.getInstanceType(), status.getVersion()); } }
@GET @Path("/coordinator") @Produces(MediaType.APPLICATION_JSON) public Response getAllCoordinators(@Context UriInfo uriInfo) { Predicate<CoordinatorStatus> coordinatorPredicate = CoordinatorFilterBuilder.build(uriInfo); List<CoordinatorStatus> coordinators = coordinator.getCoordinators(coordinatorPredicate); return Response.ok(transform(coordinators, fromCoordinatorStatus(coordinator.getCoordinators()))).build(); }
@Override public List<CoordinatorStatusRepresentation> showCoordinators(CoordinatorFilter coordinatorFilter) { Predicate<CoordinatorStatus> coordinatorPredicate = coordinatorFilter.toCoordinatorPredicate(); List<CoordinatorStatus> coordinatorStatuses = coordinator.getCoordinators(coordinatorPredicate); // update just in case something changed updateServiceInventory(); return transform(coordinatorStatuses, fromCoordinatorStatus(coordinator.getCoordinators())); }
@POST @Path("/coordinator") @Produces(MediaType.APPLICATION_JSON) public Response provisionCoordinator( CoordinatorProvisioningRepresentation provisioning, @Context UriInfo uriInfo) throws Exception { List<CoordinatorStatus> coordinators = coordinator.provisionCoordinators( provisioning.getCoordinatorConfig(), provisioning.getCoordinatorCount(), provisioning.getInstanceType(), provisioning.getAvailabilityZone(), provisioning.getAmi(), provisioning.getKeyPair(), provisioning.getSecurityGroup()); return Response.ok(transform(coordinators, fromCoordinatorStatus(coordinator.getCoordinators()))).build(); }