Protos.Resource taken = available.toBuilder().setRanges(Protos.Value.Ranges.newBuilder().addAllRange(takenRanges)).build(); if (LOG.isDebugEnabled()) { LOG.debug("Taking {} from {}", Utils.toString(taken.getRanges()), Utils.toString(available)); i.set(available.toBuilder().setRanges(Protos.Value.Ranges.newBuilder().addAllRange(remainingRanges)).build());
ResourceBuilder.fromUnreservedValue(name, desiredValue).build().toBuilder(); if (Capabilities.getInstance().supportsPreReservedResources() && !preReservedRole.equals(Constants.ANY_ROLE))
.map(mesosResource1 -> mesosResource1.getResource().toBuilder().clearAllocationInfo()) .orElseGet(Protos.Resource::newBuilder); builder.setName(resourceName)
ResourceTestUtils.getUnreservedDisk(512), ResourceTestUtils.getUnreservedCpus(3.0)).stream() .map(r -> r.toBuilder() .setRole(Constants.ANY_ROLE) .addReservations(
@SuppressWarnings("deprecated") @Test public void testResourceRefinementFailsForDifferentPreReservation() throws Exception { ResourceRefinementCapabilityContext context = new ResourceRefinementCapabilityContext(Capabilities.getInstance()); try { ServiceSpec serviceSpec = getServiceSpec("resource-refinement.yml"); Assert.assertEquals(TestConstants.PRE_RESERVED_ROLE, serviceSpec.getPods().get(0).getPreReservedRole()); Protos.Offer badOffer = OfferTestUtils.getOffer( Arrays.asList( ResourceTestUtils.getUnreservedCpus(3.0).toBuilder() .setRole(Constants.ANY_ROLE) .addReservations( Protos.Resource.ReservationInfo.newBuilder() .setRole("different-role") .setType(Protos.Resource.ReservationInfo.Type.STATIC)) .build())); PodSpec podSpec = serviceSpec.getPods().get(0); PodInstance podInstance = new DefaultPodInstance(podSpec, 0); List<String> tasksToLaunch = Arrays.asList("test-task"); PodInstanceRequirement podInstanceRequirement = PodInstanceRequirement.newBuilder(podInstance, tasksToLaunch) .build(); List<OfferRecommendation> recommendations = evaluator.evaluate( podInstanceRequirement, Arrays.asList(badOffer)); Assert.assertEquals(0, recommendations.size()); } finally { context.reset(); } }
public UnreserveOfferRecommendation(Offer offer, Resource resource) { this.offer = offer; Resource.Builder resourceBuilder = resource.toBuilder(); Resource resourceR; // If non-root disk resource, we want to clear ALL fields except for the field indicating the disk source. if (resource.hasDisk() && resource.getDisk().hasSource()) { resourceR = resourceBuilder .setDisk(Resource.DiskInfo.newBuilder().setSource(resource.getDisk().getSource())) .build(); } else { resourceR = resourceBuilder.clearDisk().clearRevocable().build(); } this.operation = Operation.newBuilder() .setType(Operation.Type.UNRESERVE) .setUnreserve( Operation.Unreserve.newBuilder().addAllResources(Collections.singletonList(resourceR)) ) .build(); this.resource = resourceR; }
@Test public void testUnreserveMountDisk() { Protos.Resource resource = ResourceTestUtils.getReservedMountVolume(1, Optional.empty()); Protos.Offer offer = OfferTestUtils.getOffer(resource); UnreserveOfferRecommendation unreserveOfferRecommendation = new UnreserveOfferRecommendation(offer, resource); Protos.Offer.Operation operation = unreserveOfferRecommendation.getOperation().get(); Assert.assertEquals(1, operation.getUnreserve().getResourcesCount()); Protos.Resource opResource = operation.getUnreserve().getResources(0); Assert.assertTrue(opResource.hasDisk()); Assert.assertTrue(opResource.getDisk().hasSource()); Assert.assertFalse(opResource.hasRevocable()); resource = resource.toBuilder().setDisk( Protos.Resource.DiskInfo.newBuilder() .setSource(resource.getDisk().getSource())) .build(); Assert.assertEquals(resource, opResource); } }
public static Protos.Resource getReservedPorts(long begin, long end, String resourceId) { return addReservation(getUnreservedPorts(begin, end).toBuilder(), resourceId).build(); }
public static Protos.Resource getReservedDisk(double value, String resourceId) { return addReservation(getUnreservedDisk(value).toBuilder(), resourceId).build(); }
public static Protos.Resource getReservedMem(double value, String resourceId) { return addReservation(getUnreservedMem(value).toBuilder(), resourceId).build(); }
public static Protos.Resource getReservedCpus(double value, String resourceId) { return addReservation(getUnreservedCpus(value).toBuilder(), resourceId).build(); }
@Test public void testUnreserveRootDisk() { Protos.Resource resource = ResourceTestUtils.getReservedRootVolume(1); Protos.Offer offer = OfferTestUtils.getOffer(resource); UnreserveOfferRecommendation unreserveOfferRecommendation = new UnreserveOfferRecommendation(offer, resource); Protos.Offer.Operation operation = unreserveOfferRecommendation.getOperation().get(); Assert.assertEquals(1, operation.getUnreserve().getResourcesCount()); Protos.Resource opResource = operation.getUnreserve().getResources(0); Assert.assertFalse(opResource.hasDisk()); Assert.assertFalse(opResource.hasRevocable()); resource = resource.toBuilder().clearDisk().clearRevocable().build(); Assert.assertEquals(resource, opResource); }
@SuppressWarnings("deprecation") @Test public void testFilteredResources() { scheduler.setApiServerStarted(); String resourceId = "unexpected-volume-id-1"; Protos.Resource resourceMatchingRole = ResourceTestUtils.getReservedRootVolume(1000.0, resourceId, resourceId); Protos.Resource resourceOtherRole = resourceMatchingRole.toBuilder().setRole("other-role").build(); Protos.Offer offer = getOffer("foo").toBuilder().addResources(resourceMatchingRole).addResources(resourceOtherRole).build(); Protos.Offer filteredOffer = getOffer("foo").toBuilder().addResources(resourceMatchingRole).build(); // Resource with other role should be filtered out: scheduler.resourceOffers(mockSchedulerDriver, Collections.singletonList(offer)); verify(mockOfferProcessor).enqueue(Collections.singletonList(filteredOffer)); }
public static Protos.Resource getReservedMountVolume( double diskSize, Optional<String> profile, String resourceId, String persistenceId) { Protos.Resource.Builder builder = getUnreservedMountVolume(diskSize, profile).toBuilder(); builder.getDiskBuilder().getPersistenceBuilder() .setId(persistenceId) .setPrincipal(TestConstants.PRINCIPAL); builder.getDiskBuilder().getVolumeBuilder() .setContainerPath(TestConstants.CONTAINER_PATH) .setMode(Volume.Mode.RW); return addReservation(builder, resourceId).build(); }
public static Protos.Resource getExistingExecutorVolume( VolumeSpec volumeSpec, Optional<String> resourceId, Optional<String> resourceNamespace, Optional<String> persistenceId, Optional<Protos.ResourceProviderID> providerId, Optional<Protos.Resource.DiskInfo.Source> diskSource) { Protos.Resource.Builder builder = ResourceBuilder .fromSpec(volumeSpec, resourceId, resourceNamespace, persistenceId, providerId, diskSource) .build() .toBuilder(); return builder.build(); }
@SuppressWarnings("deprecation") @Test public void resourceProcessableForPartialSubsetOfRoles() { Protos.Resource alienResource = UNEXPECTED_RESOURCE_1.toBuilder().setRole("alien-role").build(); Assert.assertFalse(ResourceUtils.isProcessable( alienResource, Arrays.asList(TestConstants.ROLE, "another-role"))); } }
public static Protos.Resource getUnreservedMountVolume(double diskSize, Optional<String> profile) { Protos.Resource.Builder builder = getUnreservedDisk(diskSize).toBuilder(); builder.getDiskBuilder().setSource(TestConstants.MOUNT_DISK_SOURCE); if (profile.isPresent()) { builder.getDiskBuilder().getSourceBuilder().setProfile(profile.get()); } return builder.build(); }