public SingularityOfferHolder(List<Protos.Offer> offers, int taskSizeHint, String rackId, String slaveId, String hostname, Map<String, String> textAttributes, Map<String, String> reservedSlaveAttributes) { this.rackId = rackId; this.slaveId = slaveId; this.hostname = hostname; this.offers = offers; this.roles = MesosUtils.getRoles(offers.get(0)); this.acceptedTasks = Lists.newArrayListWithExpectedSize(taskSizeHint); this.currentResources = offers.size() > 1 ? MesosUtils.combineResources(offers.stream().map(Protos.Offer::getResourcesList).collect(Collectors.toList())) : offers.get(0).getResourcesList(); this.sanitizedHost = JavaUtils.getReplaceHyphensWithUnderscores(hostname); this.sanitizedRackId = JavaUtils.getReplaceHyphensWithUnderscores(rackId); this.textAttributes = textAttributes; this.reservedSlaveAttributes = reservedSlaveAttributes; }
public static Set<String> getRoles(Offer offer) { Set<String> roles = Sets.newHashSet(); for (Resource r : offer.getResourcesList()) { roles.add(r.getRole()); } return roles; }
public static double getMemory(Offer offer) { return getMemory(offer.getResourcesList(), Optional.<String>absent()); }
List<Long> ports = MesosUtils.getAllPorts(offer.getResourcesList()); boolean offerCanBeReclaimedFromUnusedResources = offer.getResourcesList().stream() offer.getId().getValue(), offer.getHostname(), MesosUtils.getNumCpus(offer), MesosUtils.getMemory(offer), MesosUtils.getDisk(offer) ); currentResources = MesosUtils.subtractResources(currentResources, offer.getResourcesList());
@Test public void testLiteralHostPortSelection() { String[] rangesNotOverlappingRequestedPorts = {"23:24", "25:25", "31:32", "50:51"}; int numPorts = 1; List<Long> requestedPorts = Arrays.asList(50L, 51L); Resource resource = MesosUtils.getPortsResource(numPorts, buildOffer(rangesNotOverlappingRequestedPorts).getResourcesList(), requestedPorts); Assert.assertTrue(MesosUtils.getAllPorts(Collections.singletonList(resource)).containsAll(requestedPorts)); Assert.assertEquals(numPorts + requestedPorts.size(), MesosUtils.getNumPorts(Collections.singletonList(resource))); String[] rangesOverlappingRequestPorts = {"23:28"}; numPorts = 4; requestedPorts = Arrays.asList(25L, 27L); resource = MesosUtils.getPortsResource(numPorts, buildOffer(rangesOverlappingRequestPorts).getResourcesList(), requestedPorts); Assert.assertTrue(MesosUtils.getAllPorts(Collections.singletonList(resource)).containsAll(requestedPorts)); Assert.assertEquals(numPorts + requestedPorts.size(), MesosUtils.getNumPorts(Collections.singletonList(resource))); }
public static double getMemory(Offer offer) { return getMemory(offer.getResourcesList(), Optional.<String>absent()); }
public static double getNumCpus(Offer offer) { return getNumCpus(offer.getResourcesList(), Optional.<String>absent()); }
public static int getNumPorts(Offer offer) { return getNumPorts(offer.getResourcesList()); }
public static double getDisk(Offer offer) { return getDisk(offer.getResourcesList(), Optional.<String>absent()); }
public static Resource getPortsResource(int numPorts, Offer offer) { return getPortsResource(numPorts, offer.getResourcesList(), Collections.<Long>emptyList()); }
public SingularityOfferHolder(List<Protos.Offer> offers, int taskSizeHint, String rackId, String slaveId, String hostname, Map<String, String> textAttributes, Map<String, String> reservedSlaveAttributes) { this.rackId = rackId; this.slaveId = slaveId; this.hostname = hostname; this.offers = offers; this.roles = MesosUtils.getRoles(offers.get(0)); this.acceptedTasks = Lists.newArrayListWithExpectedSize(taskSizeHint); this.currentResources = offers.size() > 1 ? MesosUtils.combineResources(offers.stream().map(Protos.Offer::getResourcesList).collect(Collectors.toList())) : offers.get(0).getResourcesList(); this.sanitizedHost = JavaUtils.getReplaceHyphensWithUnderscores(hostname); this.sanitizedRackId = JavaUtils.getReplaceHyphensWithUnderscores(rackId); this.textAttributes = textAttributes; this.reservedSlaveAttributes = reservedSlaveAttributes; }
public static Set<String> getRoles(Offer offer) { Set<String> roles = Sets.newHashSet(); for (Resource r : offer.getResourcesList()) { roles.add(r.getRole()); } return roles; }
@Test public void testGetZeroPortsFromResource() { String[] rangesOverlappingRequestPorts = {"23:28"}; int numPorts = 0; List<Long> requestedPorts = Arrays.asList(25L, 27L); Resource resource = MesosUtils.getPortsResource(numPorts, buildOffer(rangesOverlappingRequestPorts).getResourcesList(), requestedPorts); Assert.assertEquals(0, MesosUtils.getPorts(resource, numPorts).length); }
List<Long> ports = MesosUtils.getAllPorts(offer.getResourcesList()); boolean offerCanBeReclaimedFromUnusedResources = offer.getResourcesList().stream() offer.getId().getValue(), offer.getHostname(), MesosUtils.getNumCpus(offer), MesosUtils.getMemory(offer), MesosUtils.getDisk(offer) ); currentResources = MesosUtils.subtractResources(currentResources, offer.getResourcesList());
@Test public void testLiteralHostPortSelection() { String[] rangesNotOverlappingRequestedPorts = {"23:24", "25:25", "31:32", "50:51"}; int numPorts = 1; List<Long> requestedPorts = Arrays.asList(50L, 51L); Resource resource = MesosUtils.getPortsResource(numPorts, buildOffer(rangesNotOverlappingRequestedPorts).getResourcesList(), requestedPorts); Assert.assertTrue(MesosUtils.getAllPorts(Collections.singletonList(resource)).containsAll(requestedPorts)); Assert.assertEquals(numPorts + requestedPorts.size(), MesosUtils.getNumPorts(Collections.singletonList(resource))); String[] rangesOverlappingRequestPorts = {"23:28"}; numPorts = 4; requestedPorts = Arrays.asList(25L, 27L); resource = MesosUtils.getPortsResource(numPorts, buildOffer(rangesOverlappingRequestPorts).getResourcesList(), requestedPorts); Assert.assertTrue(MesosUtils.getAllPorts(Collections.singletonList(resource)).containsAll(requestedPorts)); Assert.assertEquals(numPorts + requestedPorts.size(), MesosUtils.getNumPorts(Collections.singletonList(resource))); }
public static double getNumCpus(Offer offer) { return getNumCpus(offer.getResourcesList(), Optional.<String>absent()); }
public static Resource getPortsResource(int numPorts, Offer offer) { return getPortsResource(numPorts, offer.getResourcesList(), Collections.<Long>emptyList()); }
public static int getNumPorts(Offer offer) { return getNumPorts(offer.getResourcesList()); }
public static double getDisk(Offer offer) { return getDisk(offer.getResourcesList(), Optional.<String>absent()); }
@Test public void testGetZeroPortsFromResource() { String[] rangesOverlappingRequestPorts = {"23:28"}; int numPorts = 0; List<Long> requestedPorts = Arrays.asList(25L, 27L); Resource resource = MesosUtils.getPortsResource(numPorts, buildOffer(rangesOverlappingRequestPorts).getResourcesList(), requestedPorts); Assert.assertEquals(0, MesosUtils.getPorts(resource, numPorts).length); }