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()); else if (resource.getName().equals(MEM)) { if (resource.getType().equals(Protos.Value.Type.SCALAR)) mem = resource.getScalar().getValue(); else log.log(Level.FINE, "Mem resource was not a scalar: {0}", resource.getType()); else if (resource.getName().equals(DISK)) if (resource.getType().equals(Protos.Value.Type.SCALAR)) disk = resource.getScalar().getValue(); else log.log(Level.FINE, "Disk resource was not a scalar: {0}", resource.getType());
.setSlaveId(offer.getSlaveId()) .setCommand(builder) .addResources(Protos.Resource.newBuilder() .setName(CPU) .setType(Protos.Value.Type.SCALAR) .setScalar(Protos.Value.Scalar.newBuilder().setValue(igniteTask.cpuCores()))) .addResources(Protos.Resource.newBuilder() .setName(MEM) .setType(Protos.Value.Type.SCALAR) .setScalar(Protos.Value.Scalar.newBuilder().setValue(igniteTask.mem()))) .addResources(Protos.Resource.newBuilder() .setName(DISK) .setType(Protos.Value.Type.SCALAR)
if (!resourceName.equals(available.getName()) || !available.hasRanges()) { continue; if (!UNRESERVED_ROLE.equals(available.getRole()) && !roles.contains(available.getRole())) { continue; List<Protos.Value.Range> remainingRanges = new ArrayList<>(available.getRanges().getRangeList()); for (ListIterator<Protos.Value.Range> j = remainingRanges.listIterator(); j.hasNext();) { if (amount <= 0) { 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());
if (resource.getName().equals("cpus") && resource.getType() == Value.Type.SCALAR) { cpus = resource.getScalar().getValue(); cpuRole = resource.getRole(); } else if (resource.getName().equals("mem") && resource.getType() == Value.Type.SCALAR) { mem = resource.getScalar().getValue(); memRole = resource.getRole(); } else if (resource.getName().equals("disk") && resource.getType() == Value.Type.SCALAR) { disk = resource.getScalar().getValue(); diskRole = resource.getRole(); } else if (resource.getName().equals("ports") && resource.getType() == Value.Type.RANGES) { portsRole = resource.getRole(); for (Value.Range range : resource.getRanges().getRangeList()) { Integer begin = (int) range.getBegin(); Integer end = (int) range.getEnd(); .addResources( Resource .newBuilder() .setName("cpus") .setType(Value.Type.SCALAR) .addResources( Resource .newBuilder() .setName("mem")
String resourceRole = resource.getRole(); String expectedRole = mesosCloud.getRole(); if (! (resourceRole.equals(expectedRole) || resourceRole.equals("*"))) { continue; if (resource.getName().equals("cpus")) { if (resource.getType().equals(Value.Type.SCALAR)) { cpus = resource.getScalar().getValue(); } else { LOGGER.severe("Cpus resource was not a scalar: " + resource.getType().toString()); } else if (resource.getName().equals("mem")) { if (resource.getType().equals(Value.Type.SCALAR)) { mem = resource.getScalar().getValue(); } else { LOGGER.severe("Mem resource was not a scalar: " + resource.getType().toString()); } else if (resource.getName().equals("disk")) { LOGGER.fine("Ignoring disk resources from offer"); } else if (resource.getName().equals("ports")) { if (resource.getType().equals(Value.Type.RANGES)) { ports = resource.getRanges().getRangeList(); } else { LOGGER.severe("Ports resource was not a range: " + resource.getType().toString()); LOGGER.warning("Ignoring unknown resource type: " + resource.getName());
.filter(resource -> resource.getName().equals("ports")) .flatMap(resource -> resource.getRanges().getRangeList().stream()) .flatMapToInt(range -> IntStream.rangeClosed((int) range.getBegin(), (int) range.getEnd())) .sorted() portMappings, Collections.emptyList(), Protos.Resource.newBuilder() .setType(Protos.Value.Type.RANGES) .setName("ports")
Assert.assertEquals("cpus", cpusResource.getName()); Assert.assertEquals(Protos.Value.Type.SCALAR, cpusResource.getType()); 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("mem", memResource.getName()); Assert.assertEquals(Protos.Value.Type.SCALAR, memResource.getType()); 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("disk", diskResource.getName()); Assert.assertEquals(Protos.Value.Type.SCALAR, diskResource.getType()); 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.assertEquals("ports", portsResource.getName()); Assert.assertEquals(Protos.Value.Type.RANGES, portsResource.getType()); Assert.assertTrue(portsResource.getRanges().getRangeList().get(0).getBegin() >= testPortBegin); Assert.assertTrue(portsResource.getRanges().getRangeList().get(0).getEnd() >= testPortBegin); Assert.assertEquals(testRole, portsResource.getRole());
String dynamicPortAssignment = null; String vipAssignment = null; for (Protos.Label l : r.getReservation().getLabels().getLabelsList()) { if (Objects.equals(l.getKey(), "resource_id")) { resourceId = l.getValue(); if (Objects.equals(r.getName(), "ports")) { String portValue = dynamicPortAssignment == null ? Long.toString(r.getRanges().getRange(0).getBegin()) : dynamicPortAssignment;
@Test public void testUpdateResourcesOneSharedTaskInStateStore() throws TaskException { Protos.Resource targetResource = Protos.Resource.newBuilder() .setName("cpus") .setType(Protos.Value.Type.SCALAR) .build(); Protos.Resource previousResource = Protos.Resource.newBuilder() .setName("cpus") .setType(Protos.Value.Type.SCALAR) serverTaskInfo = stateStore.fetchTask(serverTaskName).get(); Assert.assertFalse( stateStore.fetchTask(initTaskName).get().getResources(0).equals( stateStore.fetchTask(serverTaskName).get().getResources(0)));
if (r.getName().equals("cpus") && cpusNeeded > 0) { double cpus = Math.min(r.getScalar().getValue(), cpusNeeded); builder.addResources( Resource .newBuilder() .setName("cpus") .setType(Value.Type.SCALAR) .setRole(r.getRole()) .setScalar( Value.Scalar.newBuilder() .setValue(cpus).build()).build()); cpusNeeded -= cpus; } else if (r.getName().equals("mem") && memNeeded > 0) { double mem = Math.min(r.getScalar().getValue(), memNeeded); builder.addResources( Resource .newBuilder() .setName("mem") .setType(Value.Type.SCALAR) .setRole(r.getRole()) .setScalar( Value.Scalar.newBuilder() .setValue(mem).build()).build()); memNeeded -= mem; } else if (r.getName().equals("disk") && diskNeeded > 0) { double disk = Math.min(r.getScalar().getValue(), diskNeeded); builder.addResources( Resource .newBuilder()
if (resource.getName().equals("cpus")) { if (resource.getType().equals(Value.Type.SCALAR)) { cpus = resource.getScalar().getValue(); } else { LOGGER.log(Level.SEVERE, "Cpus resource was not a scalar: {0}", resource.getType().toString()); } else if (resource.getName().equals("mem")) { if (resource.getType().equals(Value.Type.SCALAR)) { mem = resource.getScalar().getValue(); } else { LOGGER.log(Level.SEVERE, "Mem resource was not a scalar: {0}", resource.getType().toString()); } else if (resource.getName().equals("disk")) { LOGGER.warning("Ignoring disk resources from offer"); } else if (resource.getName().equals("ports")) { LOGGER.info("Ignoring ports resources from offer"); } else { LOGGER.log(Level.WARNING, "Ignoring unknown resource type: {0}", resource.getName());
.setTaskId(taskId) .setSlaveId(offer.getSlaveId()) .addResources(Protos.Resource.newBuilder() .setName("cpus") .setType(Protos.Value.Type.SCALAR) .setScalar(Protos.Value.Scalar.newBuilder().setValue(1))) .addResources(Protos.Resource.newBuilder() .setName("mem") .setType(Protos.Value.Type.SCALAR)
Protos.Resource resource = recommendation.getOperation().get().getReserve().getResources(0); Assert.assertEquals( 10000, resource.getRanges().getRange(0).getBegin(), resource.getRanges().getRange(0).getEnd()); Protos.TaskInfo.Builder taskBuilder = podInfoBuilder.getTaskBuilders().stream().findFirst().get(); boolean portInTaskEnv = false;
Assert.assertEquals(10000, fulfilledPortResource1.getRanges().getRange(0).getBegin()); Assert.assertEquals(10000, fulfilledPortResource1.getRanges().getRange(0).getEnd()); Assert.assertEquals(10001, fulfilledPortResource2.getRanges().getRange(0).getBegin()); Assert.assertEquals(10001, fulfilledPortResource2.getRanges().getRange(0).getEnd()); Assert.assertEquals(String.valueOf(10001), envvars.get(portenv1).getValue()); Assert.assertEquals(10000, taskInfo.getResources(0).getRanges().getRange(0).getBegin()); Assert.assertEquals(10000, taskInfo.getResources(0).getRanges().getRange(0).getEnd()); Assert.assertEquals(10001, taskInfo.getResources(1).getRanges().getRange(0).getBegin()); Assert.assertEquals(10001, taskInfo.getResources(1).getRanges().getRange(0).getEnd());
Protos.Resource resource = recommendation.getOperation().get().getReserve().getResources(0); Assert.assertEquals( 10000, resource.getRanges().getRange(0).getBegin(), resource.getRanges().getRange(0).getEnd()); Protos.TaskInfo.Builder taskBuilder = podInfoBuilder.getTaskBuilders().stream().findFirst().get(); boolean portInTaskEnv = false;
.addResources( Resource .newBuilder() .setName("cpus") .setType(Value.Type.SCALAR) .addResources( Resource .newBuilder() .setName("mem") .setType(Value.Type.SCALAR)
private Optional<ResourceLabels> findMatchingPortSpec( Protos.Resource taskResource, Collection<ResourceSpec> resourceSpecs) Protos.Value.Ranges ranges = taskResource.getRanges(); boolean hasMultiplePorts = ranges.getRangeCount() != 1 || ranges.getRange(0).getEnd() - ranges.getRange(0).getBegin() != 0;
ResourceType resourceType = ResourceType.of(r.getName()); ReservationType reservationType = (r.getRole().equals("*")) ? ReservationType.UNRESERVED : ReservationType.STATIC; if (r.hasReservation()) { case CPU: case MEM: ResourceEntries.ScalarResourceEntry scalarResourceEntry = new ResourceEntries.ScalarResourceEntry(reservationType, r.getScalar().getValue()); availableResources.get(resourceType).add(scalarResourceEntry, reservationType); break; case PORTS: for (Protos.Value.Range range : r.getRanges().getRangeList()) { ResourceEntries.RangeResourceEntry rangeResourceEntry = new ResourceEntries.RangeResourceEntry(reservationType, range.getBegin(), range.getEnd()); availableResources.get(resourceType).add(rangeResourceEntry, reservationType);
private void testResourceSufficient(Optional<String> resourceId, Optional<String> namespace) { Protos.Value desired = getValue(5); ResourceSpec resourceSpec = getResourceSpec(desired); if (resourceId.isPresent()) { when(mockPool.consumeReserved(RESOURCE_NAME, desired, resourceId.get())) .thenReturn(Optional.of(getMesosResource(resourceSpec, resourceId.get(), namespace))); } else { when(mockPool.consumeReservableMerged(RESOURCE_NAME, desired, Constants.ANY_ROLE)) .thenReturn(Optional.of(getMesosResource(desired))); } ReserveEvaluationOutcome outcome = OfferEvaluationUtils.evaluateSimpleResource( LOGGER, mockStage, resourceSpec, resourceId, namespace, mockPool); Assert.assertTrue(outcome.getEvaluationOutcome().isPassing()); if (resourceId.isPresent()) { Assert.assertTrue(outcome.getEvaluationOutcome().getOfferRecommendations().isEmpty()); Assert.assertEquals(resourceId.get(), outcome.getResourceId().get()); } else { OfferRecommendation recommendation = outcome.getEvaluationOutcome().getOfferRecommendations().get(0); Assert.assertTrue(recommendation instanceof ReserveOfferRecommendation); Assert.assertTrue(outcome.getResourceId().isPresent()); Protos.Resource resource = recommendation.getOperation().get().getReserve().getResources(0); Assert.assertEquals(desired.getScalar(), resource.getScalar()); if (namespace.isPresent()) { Assert.assertEquals(namespace.get(), ResourceUtils.getNamespace(resource).get()); } else { Assert.assertFalse(ResourceUtils.getNamespace(resource).isPresent()); } } }
assertEquals(configuration.getCpus(), getResourceByName(resourceList, "cpus").getScalar().getValue(), EPSILON); assertEquals(configuration.getDisk(), getResourceByName(resourceList, "disk").getScalar().getValue(), EPSILON); assertEquals(configuration.getMem(), getResourceByName(resourceList, "mem").getScalar().getValue(), EPSILON); assertEquals(9200, portsList.get(0).getRanges().getRange(0).getBegin()); assertEquals(9200, portsList.get(0).getRanges().getRange(0).getEnd()); assertEquals(9300, portsList.get(1).getRanges().getRange(0).getBegin()); assertEquals(9300, portsList.get(1).getRanges().getRange(0).getEnd());