case SCALAR: resources.add(resource); aggregatedScalarResourceMap.merge(resource.getName(), resource.getScalar().getValue(), Double::sum); break; case RANGES:
double amountToTake = Math.min(available.getScalar().getValue(), amount); Protos.Resource taken = available.toBuilder().setScalar(Protos.Value.Scalar.newBuilder().setValue(amountToTake)).build(); amount -= amountToTake; double remaining = available.getScalar().getValue() - taken.getScalar().getValue(); if (remaining > EPSILON) { i.set(available.toBuilder().setScalar(Protos.Value.Scalar.newBuilder().setValue(remaining)).build());
if (resource.getName().equals(CPU)) { if (resource.getType().equals(Protos.Value.Type.SCALAR)) cpus = resource.getScalar().getValue(); else log.log(Level.FINE, "Cpus resource was not a scalar: {0}" + resource.getType()); mem = resource.getScalar().getValue(); else log.log(Level.FINE, "Mem resource was not a scalar: {0}", resource.getType()); disk = resource.getScalar().getValue(); else log.log(Level.FINE, "Disk resource was not a scalar: {0}", resource.getType());
@Test public void testConsumeUnreservedAtomicResourceUnmatchedProfile2() { Resource offerResource = ResourceTestUtils.getUnreservedMountVolume(1000, Optional.empty()); VolumeSpec spec = DefaultVolumeSpec.createMountVolume( ValueUtils.getValue(offerResource).getScalar().getValue(), TestConstants.CONTAINER_PATH, Arrays.asList("foo", "bar"), TestConstants.ROLE, Constants.ANY_ROLE, TestConstants.PRINCIPAL); Offer offer = OfferTestUtils.getOffer(offerResource); MesosResourcePool pool = new MesosResourcePool(offer, Optional.of(Constants.ANY_ROLE)); Assert.assertEquals(1, pool.getUnreservedAtomicPool().size()); Assert.assertFalse(pool.consumeAtomic(offerResource.getName(), spec).isPresent()); }
@Test public void testConsumeUnreservedAtomicResource() { Resource offerResource = ResourceTestUtils.getUnreservedMountVolume(1000, Optional.empty()); VolumeSpec spec = DefaultVolumeSpec.createMountVolume( ValueUtils.getValue(offerResource).getScalar().getValue(), TestConstants.CONTAINER_PATH, Collections.emptyList(), TestConstants.ROLE, Constants.ANY_ROLE, TestConstants.PRINCIPAL); Offer offer = OfferTestUtils.getOffer(offerResource); MesosResourcePool pool = new MesosResourcePool(offer, Optional.of(Constants.ANY_ROLE)); Assert.assertEquals(1, pool.getUnreservedAtomicPool().size()); MesosResource resourceToConsume = pool.consumeAtomic(offerResource.getName(), spec).get(); Assert.assertEquals(offerResource, resourceToConsume.getResource()); Assert.assertEquals(0, pool.getUnreservedAtomicPool().size()); }
@Test public void testConsumeUnreservedMergedResource() { Resource resource = ResourceTestUtils.getUnreservedCpus(1.0); Protos.Value resourceValue = ValueUtils.getValue(resource); Offer offer = OfferTestUtils.getOffer(resource); MesosResourcePool pool = new MesosResourcePool(offer, Optional.of(Constants.ANY_ROLE)); Assert.assertEquals(1, pool.getUnreservedMergedPool().size()); Assert.assertEquals(resource.getScalar().getValue(), pool.getUnreservedMergedPool().get("cpus").getScalar().getValue(), 0.0); MesosResource resourceToConsume = pool.consumeReservableMerged(resource.getName(), resourceValue, Constants.ANY_ROLE).get(); Assert.assertEquals(resource, resourceToConsume.getResource()); Assert.assertEquals(ValueUtils.getZero(Protos.Value.Type.SCALAR), pool.getUnreservedMergedPool().get("cpus")); }
@Test public void testConsumeUnreservedAtomicResourceUnmatchedProfile3() { Resource offerResource = ResourceTestUtils.getUnreservedMountVolume(1000, Optional.of("bar")); VolumeSpec spec = DefaultVolumeSpec.createMountVolume( ValueUtils.getValue(offerResource).getScalar().getValue(), TestConstants.CONTAINER_PATH, Collections.emptyList(), TestConstants.ROLE, Constants.ANY_ROLE, TestConstants.PRINCIPAL); Offer offer = OfferTestUtils.getOffer(offerResource); MesosResourcePool pool = new MesosResourcePool(offer, Optional.of(Constants.ANY_ROLE)); Assert.assertEquals(1, pool.getUnreservedAtomicPool().size()); Assert.assertFalse(pool.consumeAtomic(offerResource.getName(), spec).isPresent()); }
private Double getScalar(List<Protos.Resource> resources, String name) { for (Protos.Resource resource : resources) { if (resource.getName().equals(name)) { return resource.getScalar().getValue(); } } return null; }
public static int getResourceMemoryMb(final List<Resource> resources) { return (int) Math.floor( resources.stream().filter(TaskUtils::isCpus) .map(resource -> resource.getScalar().getValue()) .reduce(0.0, Double::sum)); }
@SuppressWarnings("deprecation") @Test public void testUnreservedResource() { ResourceBuilder resourceBuilder = ResourceBuilder.fromUnreservedValue("cpus", VALUE); Protos.Resource resource = resourceBuilder.build(); Assert.assertEquals("cpus", resource.getName()); Assert.assertEquals(Protos.Value.Type.SCALAR, resource.getType()); Assert.assertEquals(1.0, resource.getScalar().getValue(), 0.0); Assert.assertEquals(Constants.ANY_ROLE, resource.getRole()); Assert.assertFalse(resource.hasReservation()); Assert.assertEquals(0, resource.getReservationsCount()); }
private static boolean podRequestsGpuResources(PodSpec podSpec) { // control automatic opt-in to scarce resources (GPUs) here. // If the framework specifies GPU resources >= 1 then we opt-in to scarce resource, otherwise // follow the default policy (which as of 8/3/17 was to opt-out) if (DcosConstants.DEFAULT_GPU_POLICY) { return true; } return podSpec.getTasks().stream() .flatMap(taskSpec -> taskSpec.getResourceSet().getResources().stream()) .anyMatch(resourceSpec -> resourceSpec.getName().equals(Constants.GPUS_RESOURCE_TYPE) && resourceSpec.getValue().getScalar().getValue() >= 1); }
public static int getResourceDiskMb(final List<Resource> resources) { return (int) Math.floor( resources.stream().filter(TaskUtils::isCpus) .map(resource -> resource.getScalar().getValue()) .reduce(0.0, Double::sum)); }
static double scalarSum(Protos.Offer offer, String name) { return offer.getResourcesList().stream().filter(resource -> resource.getName().equals(name)).mapToDouble(resource -> resource.getScalar().getValue()).sum(); } }
public static double getResourceCpus(final List<Resource> resources) { return resources.stream().filter(TaskUtils::isCpus) .map(resource -> resource.getScalar().getValue()) .reduce(0.0, Double::sum); }
private int getCpu(final Offer offer) { for (final Resource resource : offer.getResourcesList()) { if (resource.getName().equals("cpus")) { return (int)resource.getScalar().getValue(); } } return 0; }
private int getMemory(final Offer offer) { for (final Resource resource : offer.getResourcesList()) { if (resource.getName().equals("mem")) { return (int)resource.getScalar().getValue(); } } return 0; }
/** * 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(); }