public Optional<String> getPrincipal() { return resource.hasReservation() && resource.getReservation().hasPrincipal() ? Optional.of(resource.getReservation().getPrincipal()) : Optional.empty(); }
private static void validateLabels( Protos.Resource.ReservationInfo reservationInfo, Optional<String> resourceId, Optional<String> namespace) { if (resourceId.isPresent()) { Assert.assertEquals(resourceId.get(), AuxLabelAccess.getResourceId(reservationInfo).get()); } else { Assert.assertEquals(36, AuxLabelAccess.getResourceId(reservationInfo).get().length()); } if (namespace.isPresent()) { Assert.assertEquals(2, reservationInfo.getLabels().getLabelsCount()); Assert.assertEquals(namespace.get(), AuxLabelAccess.getResourceNamespace(reservationInfo).get()); } else { // Just the resource id label: Assert.assertEquals(1, reservationInfo.getLabels().getLabelsCount()); } } }
if (preReservedSupported) { if (!preReservedRole.equals(Constants.ANY_ROLE) && !mesosResource.isPresent()) { builder.addReservations(Protos.Resource.ReservationInfo.newBuilder() .setRole(preReservedRole) .setType(Protos.Resource.ReservationInfo.Type.STATIC));
Assert.assertEquals(persistenceId, launchResource.getDisk().getPersistence().getId()); Assert.assertEquals(TestConstants.PRINCIPAL, launchResource.getDisk().getPersistence().getPrincipal()); Assert.assertEquals(TestConstants.PRINCIPAL, reservation.getPrincipal()); Assert.assertEquals(diskResourceId, getResourceId(launchResource));
Assert.assertEquals(testCpus, cpusResource.getScalar().getValue(), 0.0); Assert.assertEquals(testRole, cpusResource.getRole()); Assert.assertEquals(testPrincipal, cpusResource.getReservation().getPrincipal()); Assert.assertEquals("resource_id", cpusResource.getReservation().getLabels().getLabelsList().get(0).getKey()); Assert.assertEquals(testResourceId, cpusResource.getReservation().getLabels().getLabelsList().get(0).getValue()); Assert.assertEquals(testMem, memResource.getScalar().getValue(), 0.0); Assert.assertEquals(testRole, memResource.getRole()); Assert.assertEquals(testPrincipal, memResource.getReservation().getPrincipal()); Assert.assertEquals("resource_id", memResource.getReservation().getLabels().getLabelsList().get(0).getKey()); Assert.assertEquals(testResourceId, memResource.getReservation().getLabels().getLabelsList().get(0).getValue()); Assert.assertEquals(testDisk, diskResource.getScalar().getValue(), 0.0); Assert.assertEquals(testRole, diskResource.getRole()); Assert.assertEquals(testPrincipal, diskResource.getReservation().getPrincipal()); Assert.assertEquals("resource_id", diskResource.getReservation().getLabels().getLabelsList().get(0).getKey()); Assert.assertEquals(testResourceId, diskResource.getReservation().getLabels().getLabelsList().get(0).getValue()); Assert.assertTrue(portsResource.getRanges().getRangeList().get(0).getEnd() >= testPortBegin); Assert.assertEquals(testRole, portsResource.getRole()); Assert.assertEquals(testPrincipal, portsResource.getReservation().getPrincipal()); Assert.assertEquals("resource_id", portsResource.getReservation().getLabels().getLabelsList().get(0).getKey()); Assert.assertEquals(testResourceId, portsResource.getReservation().getLabels().getLabelsList().get(0).getValue());
Assert.assertEquals(2000, reserveResource.getScalar().getValue(), 0.0); Assert.assertEquals(TestConstants.MOUNT_DISK_SOURCE, reserveResource.getDisk().getSource()); Assert.assertEquals(TestConstants.PRINCIPAL, reservation.getPrincipal()); Assert.assertEquals(36, getResourceId(reserveResource).length()); Assert.assertTrue(reserveResource.hasDisk());
OfferEvaluatorTest.validateRole(reserveResource); Assert.assertEquals(TestConstants.ROLE, ResourceUtils.getRole(reserveResource)); Assert.assertEquals(TestConstants.PRINCIPAL, reservation.getPrincipal()); Assert.assertEquals(36, getResourceId(reserveResource).length()); Assert.assertFalse(reserveResource.hasDisk()); OfferEvaluatorTest.validateRole(reserveResource); Assert.assertEquals(TestConstants.ROLE, ResourceUtils.getRole(reserveResource)); Assert.assertEquals(TestConstants.PRINCIPAL, reservation.getPrincipal()); Assert.assertEquals(36, getResourceId(reserveResource).length()); Assert.assertFalse(reserveResource.hasDisk());
String dynamicPortAssignment = null; String vipAssignment = null; for (Protos.Label l : r.getReservation().getLabels().getLabelsList()) { if (Objects.equals(l.getKey(), "resource_id")) { resourceId = l.getValue();
Assert.assertEquals(resource.getScalar(), offeredResource.getScalar()); Protos.Resource.ReservationInfo reservationInfo = ResourceUtils.getReservation(resource).get(); Protos.Label reservationLabel = reservationInfo.getLabels().getLabels(0); Assert.assertEquals(reservationLabel.getKey(), "resource_id"); Assert.assertNotEquals(reservationLabel.getValue(), ""); Assert.assertEquals(resource.getScalar(), offeredResource.getScalar()); reservationInfo = ResourceUtils.getReservation(resource).get(); reservationLabel = reservationInfo.getLabels().getLabels(0); Assert.assertEquals(reservationLabel.getKey(), "resource_id"); Assert.assertNotEquals(reservationLabel.getValue(), "");
.setRole(Constants.ANY_ROLE) .addReservations( Protos.Resource.ReservationInfo.newBuilder() .setRole(TestConstants.PRE_RESERVED_ROLE) .setType(Protos.Resource.ReservationInfo.Type.STATIC)) Assert.assertEquals(Protos.Resource.ReservationInfo.Type.STATIC, preReservation.getType()); Assert.assertEquals(TestConstants.PRE_RESERVED_ROLE, preReservation.getRole()); Assert.assertFalse(preReservation.hasLabels()); Assert.assertEquals(Protos.Resource.ReservationInfo.Type.DYNAMIC, dynamicReservation.getType()); Assert.assertEquals(TestConstants.PRE_RESERVED_ROLE + "/hello-world-role", dynamicReservation.getRole()); Assert.assertTrue(dynamicReservation.hasLabels()); } finally { context.reset();
validateRole(unreserveResource); Assert.assertEquals(TestConstants.ROLE, ResourceUtils.getRole(unreserveResource)); Assert.assertEquals(TestConstants.PRINCIPAL, reservation.getPrincipal()); Assert.assertEquals(resourceId, getResourceId(unreserveResource));
Resource.ReservationInfo.newBuilder() .setRole(preReservedRole) .setType(Resource.ReservationInfo.Type.STATIC));
validateRole(reserveResource); Assert.assertEquals(TestConstants.ROLE, ResourceUtils.getRole(reserveResource)); Assert.assertEquals(TestConstants.PRINCIPAL, reservation.getPrincipal()); Assert.assertEquals(resourceId, getResourceId(reserveResource));
validateRole(reserveResource); Assert.assertEquals(TestConstants.ROLE, ResourceUtils.getRole(reserveResource)); Assert.assertEquals(TestConstants.PRINCIPAL, reservation.getPrincipal()); Assert.assertEquals(resourceId, getResourceId(reserveResource));
@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(); } }
@Test public void testReserveLaunchScalar() throws Exception { PodInstanceRequirement podInstanceRequirement = PodInstanceRequirementTestUtils.getCpuRequirement(1.0); Protos.Resource offeredResource = ResourceTestUtils.getUnreservedCpus(2.0); List<OfferRecommendation> recommendations = evaluator.evaluate( podInstanceRequirement, Arrays.asList(OfferTestUtils.getCompleteOffer(offeredResource))); Assert.assertEquals(6, recommendations.size()); // Validate RESERVE Operation Protos.Offer.Operation reserveOperation = recommendations.get(3).getOperation().get(); Protos.Resource reserveResource = reserveOperation.getReserve().getResources(0); Protos.Resource.ReservationInfo reservation = ResourceUtils.getReservation(reserveResource).get(); Assert.assertEquals(Protos.Offer.Operation.Type.RESERVE, reserveOperation.getType()); Assert.assertEquals(1.0, reserveResource.getScalar().getValue(), 0.0); validateRole(reserveResource); Assert.assertEquals(TestConstants.ROLE, ResourceUtils.getRole(reserveResource)); Assert.assertEquals(TestConstants.PRINCIPAL, reservation.getPrincipal()); Assert.assertEquals(36, getResourceId(reserveResource).length()); Assert.assertFalse(reserveResource.hasDisk()); // Validate LAUNCH Operation Protos.Offer.Operation launchOperation = recommendations.get(4).getOperation().get(); Protos.Resource launchResource = launchOperation.getLaunchGroup().getTaskGroup().getTasks(0).getResources(0); Assert.assertEquals(Protos.Offer.Operation.Type.LAUNCH_GROUP, launchOperation.getType()); Assert.assertEquals(getResourceId(reserveResource), getResourceId(launchResource)); Protos.ExecutorID executorId = launchOperation.getLaunchGroup().getExecutor().getExecutorId(); Assert.assertEquals(TestConstants.POD_TYPE, CommonIdUtils.toExecutorName(executorId)); }
private static void testRefineStaticResource(Optional<String> namespace) { ResourceRefinementCapabilityContext context = new ResourceRefinementCapabilityContext(Capabilities.getInstance()); try { ResourceSpec resourceSpec = DefaultResourceSpec.newBuilder() .name("cpus") .value(VALUE) .role(TestConstants.ROLE) .preReservedRole(TestConstants.PRE_RESERVED_ROLE) .principal(TestConstants.PRINCIPAL) .build(); ResourceBuilder resourceBuilder = ResourceBuilder.fromSpec(resourceSpec, Optional.empty(), namespace); Protos.Resource resource = resourceBuilder.build(); Assert.assertEquals(2, resource.getReservationsCount()); validateScalarResourceRefined(resource, Optional.empty(), namespace); Assert.assertEquals(Protos.Resource.ReservationInfo.Type.STATIC, resource.getReservations(0).getType()); Assert.assertEquals(TestConstants.PRE_RESERVED_ROLE, resource.getReservations(0).getRole()); } finally { context.reset(); } }
private static Collection<Protos.Resource.ReservationInfo> getDynamicReservations( Protos.Resource resource) { // Reservations can be stored in two places... List<Protos.Resource.ReservationInfo> reservations = new ArrayList<>(resource.getReservationsList()); if (resource.hasReservation()) { reservations.add(resource.getReservation()); } return reservations .stream() .filter(r -> r.hasType() && r.getType().equals(Protos.Resource.ReservationInfo.Type.DYNAMIC) ) .collect(Collectors.toList()); }
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 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(); }