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 Optional<Protos.Resource.ReservationInfo> getReservation(Protos.Resource resource) { int count = resource.getReservationsCount(); if (count > 0) { // This is a refined reservation against a pre-reserved resource. Reservation entries should in this order: // 1. STATIC reservation for the pre-reserved role (e.g. slave_public) // 2. DYNAMIC reservation for our refined role (e.g. slave_public/svc-role) return Optional.of(resource.getReservations(count - 1)); } else if (resource.hasReservation()) { // "Classic" reservation against a resource that isn't statically reserved. // This is the common case when reserving resources that aren't pre-reserved. return Optional.of(resource.getReservation()); } else { // No reservations present. return Optional.empty(); } }
public Optional<String> getPrincipal() { return resource.hasReservation() && resource.getReservation().hasPrincipal() ? Optional.of(resource.getReservation().getPrincipal()) : Optional.empty(); }
ReservationType.UNRESERVED : ReservationType.STATIC; if (r.hasReservation()) {
@SuppressWarnings("deprecation") private static void validateScalarResourceRefined( Protos.Resource resource, Optional<String> resourceId, Optional<String> namespace) { Assert.assertEquals(Protos.Value.Type.SCALAR, resource.getType()); Assert.assertEquals(Constants.ANY_ROLE, resource.getRole()); Assert.assertFalse(resource.hasReservation()); Protos.Resource.ReservationInfo reservationInfo = resource.getReservations(resource.getReservationsCount() - 1); Assert.assertEquals(TestConstants.PRINCIPAL, reservationInfo.getPrincipal()); Assert.assertEquals(TestConstants.ROLE, reservationInfo.getRole()); validateLabels(reservationInfo, resourceId, namespace); }
@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()); }
@SuppressWarnings("deprecation") private static void validateScalarResourceLegacy(Protos.Resource resource, Optional<String> resourceId, Optional<String> namespace) { Assert.assertEquals(Protos.Value.Type.SCALAR, resource.getType()); Assert.assertEquals(TestConstants.ROLE, resource.getRole()); Assert.assertTrue(resource.hasReservation()); Assert.assertEquals(0, resource.getReservationsCount()); Protos.Resource.ReservationInfo reservationInfo = resource.getReservation(); Assert.assertEquals(TestConstants.PRINCIPAL, reservationInfo.getPrincipal()); Assert.assertFalse(reservationInfo.hasRole()); validateLabels(reservationInfo, resourceId, namespace); }