/** * 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(); }
/** {@inheritDoc} */ @Override public synchronized void statusUpdate(SchedulerDriver schedulerDriver, Protos.TaskStatus taskStatus) { final String taskId = taskStatus.getTaskId().getValue(); log.log(Level.INFO, "Received update event task: {0} is in state: {1}", new Object[]{taskId, taskStatus.getState()}); if (taskStatus.getState().equals(Protos.TaskState.TASK_FAILED) || taskStatus.getState().equals(Protos.TaskState.TASK_ERROR) || taskStatus.getState().equals(Protos.TaskState.TASK_FINISHED) || taskStatus.getState().equals(Protos.TaskState.TASK_KILLED) || taskStatus.getState().equals(Protos.TaskState.TASK_LOST)) { IgniteTask failedTask = tasks.remove(taskId); if (failedTask != null) { List<Protos.Request> requests = new ArrayList<>(); Protos.Request request = Protos.Request.newBuilder() .addResources(Protos.Resource.newBuilder() .setType(Protos.Value.Type.SCALAR) .setName(MEM) .setScalar(Protos.Value.Scalar.newBuilder().setValue(failedTask.mem()))) .addResources(Protos.Resource.newBuilder() .setType(Protos.Value.Type.SCALAR) .setName(CPU) .setScalar(Protos.Value.Scalar.newBuilder().setValue(failedTask.cpuCores()))) .build(); requests.add(request); schedulerDriver.requestResources(requests); } } }
.setSlaveId(offer.getSlaveId()) .setCommand(builder) .addResources(Protos.Resource.newBuilder() .setName(CPU) .setType(Protos.Value.Type.SCALAR) .setScalar(Protos.Value.Scalar.newBuilder().setValue(igniteTask.cpuCores()))) .addResources(Protos.Resource.newBuilder() .setName(MEM) .setType(Protos.Value.Type.SCALAR) .setScalar(Protos.Value.Scalar.newBuilder().setValue(igniteTask.mem()))) .addResources(Protos.Resource.newBuilder() .setName(DISK) .setType(Protos.Value.Type.SCALAR)
@Test public void testUpdateResourcesNoSharedTasksInStateStore() throws TaskException { Protos.Resource targetResource = Protos.Resource.newBuilder() .setName("cpus") .setType(Protos.Value.Type.SCALAR) .setScalar(Protos.Value.Scalar.newBuilder().setValue(1.0)) .build(); String taskName = "pod-0-init"; Protos.TaskInfo taskInfo = baseTaskInfo.toBuilder() .setLabels(new TaskLabelWriter(baseTaskInfo) .setType("pod") .setIndex(0) .toProto()) .setName(taskName) .addAllResources(Arrays.asList(targetResource)) .build(); stateStore.storeTasks(Arrays.asList(taskInfo)); Assert.assertEquals(1, stateStore.fetchTaskNames().size()); persistentLaunchRecorder.updateTaskResourcesWithinResourceSet( persistentLaunchRecorder.getPodInstance(taskInfo).get(), taskInfo); Assert.assertEquals(1, stateStore.fetchTaskNames().size()); Assert.assertEquals(targetResource, stateStore.fetchTask(taskName).get().getResources(0)); }
@SuppressWarnings("deprecation") // for Resource.setRole() private static Protos.Resource getUnreservedResource(String name, Protos.Value value, String role) { Protos.Resource.Builder resBuilder = Protos.Resource.newBuilder() .setName(name) .setType(value.getType()) .setRole(role); if (!role.equals(Constants.ANY_ROLE)) { // Fill in the prereserved role info: resBuilder.addReservationsBuilder() .setRole(role) .setPrincipal(TestConstants.PRINCIPAL); } switch (value.getType()) { case SCALAR: return resBuilder.setScalar(value.getScalar()).build(); case RANGES: return resBuilder.setRanges(value.getRanges()).build(); case SET: return resBuilder.setSet(value.getSet()).build(); default: return null; } } }
public static List<Resource> updateResources( final double cpus, final int memoryMb, final List<Resource> resources) { return resources.stream() .map(resource -> { if (isCpus(resource)) { return Resource.newBuilder(resource) .setScalar( Value.Scalar.newBuilder() .setValue(cpus)) .build(); } else if (isMem(resource)) { return Resource.newBuilder(resource) .setScalar( Value.Scalar.newBuilder() .setValue(memoryMb)) .build(); } else { return resource; } }).collect(Collectors.toList()); }
private ResourceRequirement simpleScalarRequirement(String name, double minimumRequirement) { return (requirement, taskId, offer) -> { if (ResourceRequirement.scalarSum(offer, name) > minimumRequirement) { return OfferEvaluation.accept( requirement, taskId, offer, Collections.emptyMap(), Collections.emptyList(), Collections.emptyList(), Protos.Resource.newBuilder() .setType(Protos.Value.Type.SCALAR) .setName(name) .setRole(offer.getResourcesList().stream().filter(resource -> resource.getName().equalsIgnoreCase(name)).findFirst().map(Protos.Resource::getRole).orElse("*")) .setScalar(Protos.Value.Scalar.newBuilder().setValue(minimumRequirement)) .build() ); } return OfferEvaluation.decline(requirement, taskId, offer, "Not enough resources for " + name); }; }
/** * The resource passed in is the fully completed Resource which will be launched. This may include volume/disk * information which is not appropriate for the RESERVE operation. It is filtered out here. */ private static Protos.Resource getReservedResource(Protos.Resource resource) { // The resource passed in is the fully completed Resource which will be launched. This may include volume/disk // information which is not appropriate for the RESERVE operation. It is filtered out here. Protos.Resource.Builder resBuilder = Protos.Resource.newBuilder(resource); if (resBuilder.hasDisk() && resBuilder.getDisk().hasSource()) { // Mount volume: Copy disk, but without 'persistence' nor 'volume' fields resBuilder.setDisk(Protos.Resource.DiskInfo.newBuilder(resBuilder.getDisk()) .clearPersistence() .clearVolume()); } else { // Root volume: Clear the disk. resBuilder.clearDisk(); } resBuilder.clearRevocable(); return resBuilder.build(); }
@SuppressWarnings("deprecation") private void freeAtomicResource(MesosResource mesosResource) { Resource.Builder resBuilder = Resource.newBuilder(mesosResource.getResource()); resBuilder.clearReservation(); resBuilder.setRole(Constants.ANY_ROLE); if (resBuilder.hasDisk()) { Resource.DiskInfo.Builder diskBuilder = Resource.DiskInfo.newBuilder(resBuilder.getDisk()); diskBuilder.clearPersistence(); diskBuilder.clearVolume(); resBuilder.setDisk(diskBuilder.build()); } Resource releasedResource = resBuilder.build(); List<MesosResource> resList = unreservedAtomicPool.get(mesosResource.getName()); if (resList == null) { resList = new ArrayList<>(); } resList.add(new MesosResource(releasedResource)); unreservedAtomicPool.put(mesosResource.getName(), resList); }
private Resource createMesosRangeResource(ResourceType resourceType, RangeResourceEntry rangeResourceEntry) { Ranges.Builder rangesBuilder = Ranges.newBuilder(); Range rangeBuilder = Range.newBuilder() .setBegin(rangeResourceEntry.getBegin()) .setEnd(rangeResourceEntry.getEnd()).build(); rangesBuilder.addRange(rangeBuilder); Resource.Builder resourceBuilder = Resource.newBuilder() .setName(resourceType.toString()) .setType(Protos.Value.Type.RANGES) .setRanges(rangesBuilder.build()); if (rangeResourceEntry.getReservationType() != null && rangeResourceEntry.getReservationType().equals(ReservationType.STATIC)) { resourceBuilder.setRole(MesosCommon.getRole(mesosStormConf)); } return resourceBuilder.build(); }
public static Resource createScalar( final String name, final double value, final String role, final String principal) { return Resource.newBuilder() .setName(name) .setRole(role) .setType(Value.Type.SCALAR) .setScalar(Value.Scalar.newBuilder().setValue(value)) .setReservation(Resource.ReservationInfo.newBuilder() .setPrincipal(principal)) .build(); }
public static Resource createRanges( final String name, final Collection<Value.Range> ranges, final String role, final String principal) { return Resource.newBuilder() .setType(Value.Type.RANGES) .setName(name) .setRanges(Value.Ranges.newBuilder().addAllRange(ranges)) .setRole(role) .setReservation(Resource.ReservationInfo.newBuilder() .setPrincipal(principal) .build()) .build(); }
public static List<Resource> replaceDisks(final String path, final List<Resource> resources) { return resources.stream() .map(resource -> { if (isDisk(resource) && resource.hasDisk()) { return Resource.newBuilder(resource) .setDisk(createDiskInfo(path)) .build(); } else { return resource; } }).collect(Collectors.toList()); }
private Protos.Resource buildResource(final String type, final double resourceValue, final List<Protos.Resource> resources) { return Protos.Resource.newBuilder().mergeFrom(Iterables.find(resources, new Predicate<Protos.Resource>() { @Override public boolean apply(final Protos.Resource input) { return input.getName().equals(type); } })).setScalar(Protos.Value.Scalar.newBuilder().setValue(resourceValue)).build(); }
private List<Resource> createMesosScalarResourceList(ResourceType resourceType, List<ResourceEntry> scalarResourceEntryList) { List<Resource> retVal = new ArrayList<>(); ScalarResourceEntry scalarResourceEntry = null; for (ResourceEntry resourceEntry : scalarResourceEntryList) { scalarResourceEntry = (ScalarResourceEntry) resourceEntry; Resource.Builder resourceBuilder = Resource.newBuilder() .setName(resourceType.toString()) .setType(Protos.Value.Type.SCALAR) .setScalar(Scalar.newBuilder().setValue(scalarResourceEntry.getValue())); if (resourceEntry.getReservationType() != null && resourceEntry.getReservationType().equals(ReservationType.STATIC)) { resourceBuilder.setRole(MesosCommon.getRole(mesosStormConf)); } retVal.add(resourceBuilder.build()); } return retVal; }
private Resource createMesosScalarResource(ResourceType resourceType, ScalarResourceEntry scalarResourceEntry) { return Resource.newBuilder() .setName(resourceType.toString()) .setType(Protos.Value.Type.SCALAR) .setScalar(Scalar.newBuilder().setValue(scalarResourceEntry.getValue())) .build(); }
@SuppressWarnings("deprecation") private static Protos.Resource getUnreservedCpus(double cpus) { Protos.Resource.Builder resBuilder = Protos.Resource.newBuilder() .setName("cpus") .setType(Protos.Value.Type.SCALAR) .setRole(Constants.ANY_ROLE); resBuilder.getScalarBuilder().setValue(cpus); return resBuilder.build(); }
@SuppressWarnings("deprecation") private static Protos.Resource getUnreservedCpus(double cpus) { Protos.Resource.Builder resBuilder = Protos.Resource.newBuilder() .setName("cpus") .setType(Protos.Value.Type.SCALAR) .setRole(Constants.ANY_ROLE); resBuilder.getScalarBuilder().setValue(cpus); return resBuilder.build(); } }
public DestroyOfferRecommendation(Protos.Offer offer, Protos.Resource resource) { this.offer = offer; this.operation = Protos.Offer.Operation.newBuilder() .setType(Protos.Offer.Operation.Type.DESTROY) .setDestroy(Protos.Offer.Operation.Destroy.newBuilder() .addAllVolumes(Arrays.asList(Protos.Resource.newBuilder(resource) .clearRevocable() .build()))) .build(); this.resource = resource; }
/** * 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(); }