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(); } }
Assert.assertEquals(2, reserveResource.getReservationsCount());
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 String getRefinedRole() { return resource.getReservations(resource.getReservationsCount() - 1).getRole(); }
@SuppressWarnings("deprecation") private String getRefinedPreviousRole() { if (resource.getReservationsCount() <= 1) { return resource.getRole(); } else { return resource.getReservations(resource.getReservationsCount() - 2).getRole(); } }
public String getRole() { if (resource.getReservationsCount() > 0) { return getRefinedRole(); } else { return Constants.ANY_ROLE; } }
public String getPreviousRole() { if (resource.getReservationsCount() > 0) { return getRefinedPreviousRole(); } else { return getLegacyPreviousRole(); } }
@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); }
@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()); }