/** * Construct a range value. */ public static Protos.Value.Range range(long begin, long end) { return Protos.Value.Range.newBuilder().setBegin(begin).setEnd(end).build(); }
public AcceptOffers(String hostname, Collection<Protos.OfferID> offerIds, Collection<Protos.Offer.Operation> operations) { this.hostname = hostname; this.offerIds = offerIds; this.operations = operations; this.filters = Protos.Filters.newBuilder().build(); }
/** * Construct a scalar resource. */ public static Protos.Resource scalar(String name, String role, double value) { checkNotNull(name); checkNotNull(role); checkNotNull(value); return Protos.Resource.newBuilder() .setName(name) .setType(Protos.Value.Type.SCALAR) .setScalar(Protos.Value.Scalar.newBuilder().setValue(value)) .setRole(role) .build(); }
/** * Construct a range resource. */ public static Protos.Resource ranges(String name, String role, Protos.Value.Range... ranges) { checkNotNull(name); checkNotNull(role); checkNotNull(ranges); return Protos.Resource.newBuilder() .setName(name) .setType(Protos.Value.Type.RANGES) .setRanges(Protos.Value.Ranges.newBuilder().addAllRange(Arrays.asList(ranges)).build()) .setRole(role) .build(); }
/** * Gets a string representation of a resource. */ public static String toString(Protos.Resource resource) { checkNotNull(resource); if (resource.hasScalar()) { return String.format("%s(%s):%.1f", resource.getName(), resource.getRole(), resource.getScalar().getValue()); } if (resource.hasRanges()) { return String.format("%s(%s):%s", resource.getName(), resource.getRole(), toString(resource.getRanges())); } return resource.toString(); }
@Override public Protos.TaskID newTaskID() throws Exception { Protos.TaskID taskID = Protos.TaskID.newBuilder().setValue(TASKID_FORMAT.format(++taskCount)).build(); return taskID; }
private static List<Range> aggregateRangesResource(Map<String, List<Protos.Resource>> resourceMap, String resourceName) { if (resourceMap.get(resourceName) == null) { return Collections.emptyList(); } return resourceMap.get(resourceName).stream() .flatMap(r -> r.getRanges().getRangeList().stream()) .map(r -> new Range((int) r.getBegin(), (int) r.getEnd())) .collect(Collectors.toList()); } }
/** * Construct a Mesos URI. */ public static Protos.CommandInfo.URI uri(URL url, boolean cacheable) { checkNotNull(url); return Protos.CommandInfo.URI.newBuilder() .setValue(url.toExternalForm()) .setExtract(false) .setCache(cacheable) .build(); }
/** * Create the Mesos scheduler driver based on this configuration. * @param scheduler the scheduler to use. * @param implicitAcknowledgements whether to configure the driver for implicit acknowledgements. * @return a scheduler driver. */ public SchedulerDriver createDriver(Scheduler scheduler, boolean implicitAcknowledgements) { MesosSchedulerDriver schedulerDriver; if (this.credential().isDefined()) { schedulerDriver = new MesosSchedulerDriver(scheduler, frameworkInfo.build(), this.masterUrl(), implicitAcknowledgements, this.credential().get().build()); } else { schedulerDriver = new MesosSchedulerDriver(scheduler, frameworkInfo.build(), this.masterUrl(), implicitAcknowledgements); } return schedulerDriver; }
@Override public String getId() { return taskID.getValue(); }
/** * Construct a Mesos environment variable. */ public static Protos.Environment.Variable variable(String name, String value) { checkNotNull(name); return Protos.Environment.Variable.newBuilder() .setName(name) .setValue(value) .build(); }
/** * Gets a stream of values from a collection of range resources. */ public static LongStream rangeValues(Collection<Protos.Resource> resources) { checkNotNull(resources); return resources.stream() .filter(Protos.Resource::hasRanges) .flatMap(r -> r.getRanges().getRangeList().stream()) .flatMapToLong(Utils::rangeValues); }
@Override protected CompletableFuture<Void> clearStateAsync() { schedulerDriver.stop(true); workersInNew.clear(); workersInLaunch.clear(); workersBeingReturned.clear(); return stopSupportingActorsAsync(); }
/** * Handles a task status update from Mesos. */ protected void statusUpdate(StatusUpdate message) { taskMonitor.tell(message, selfActor); reconciliationCoordinator.tell(message, selfActor); schedulerDriver.acknowledgeStatusUpdate(message.status()); }
/** * Extracts a unique ResourceID from the Mesos task. * * @param taskId the Mesos TaskID * @return The ResourceID for the container */ static ResourceID extractResourceID(Protos.TaskID taskId) { return new ResourceID(taskId.getValue()); }
/** * Get the ZK path for the given task ID (with leading slash). */ private static String getPathForWorker(Protos.TaskID taskID) { checkNotNull(taskID, "taskID"); return String.format("/%s", taskID.getValue()); } }