default: logger.debug("Unknown resource type " + resource.getType() + " for resource " + resource.getName() + " in offer, hostname=" + hostname + ", offerId=" + offer.getId());
/** {@inheritDoc} */ @Override public synchronized void resourceOffers(SchedulerDriver schedulerDriver, List<Protos.Offer> offers) { log.log(Level.FINE, "Offers resources: {0}", offers.size()); for (Protos.Offer offer : offers) { IgniteTask igniteTask = checkOffer(offer); // Decline offer which doesn't match by mem or cpu. if (igniteTask == null) { schedulerDriver.declineOffer(offer.getId()); continue; } // Generate a unique task ID. Protos.TaskID taskId = Protos.TaskID.newBuilder() .setValue(Integer.toString(taskIdGenerator.incrementAndGet())).build(); log.log(Level.INFO, "Launching task: {0}", igniteTask); // Create task to run. Protos.TaskInfo task = createTask(offer, igniteTask, taskId); try { schedulerDriver.launchTasks(Collections.singletonList(offer.getId()), Collections.singletonList(task), Protos.Filters.newBuilder().setRefuseSeconds(1).build()); } catch (RuntimeException e) { log.log(Level.SEVERE, "Failed launch task. Task id: {0}. Task info: {1}", new Object[]{taskId, task, e}); throw e; } tasks.put(taskId.getValue(), igniteTask); } }
public List<Protos.OfferID> getOfferIDList() { List<Protos.OfferID> offerIDList = new ArrayList<>(); for (Protos.Offer offer: offerList) { offerIDList.add(offer.getId()); } return offerIDList; }
@Test public void testFilterAcceptedOffersAllAccepted() { final List<Protos.Offer> unacceptedOffers = OfferUtils.filterOutAcceptedOffers(OFFERS, OFFER_RECOMMENDATIONS); Assert.assertEquals( Arrays.asList("no-operation", "no-recommendation"), unacceptedOffers.stream().map(o -> o.getId().getValue()).collect(Collectors.toList())); }
private List<Protos.OfferID> getOfferIDs(final List<VirtualMachineLease> leasesUsed) { List<Protos.OfferID> result = new ArrayList<>(); for (VirtualMachineLease virtualMachineLease: leasesUsed) { result.add(virtualMachineLease.getOffer().getId()); } return result; } }
@Test public void testFilterAcceptedOffers() { final List<Protos.Offer> unacceptedOffers = OfferUtils.filterOutAcceptedOffers(OFFERS, Collections.singletonList(OFFER_RECOMMENDATIONS.get(2))); Assert.assertEquals( Arrays.asList("no-operation", "with-operation", "no-recommendation"), unacceptedOffers.stream().map(o -> o.getId().getValue()).collect(Collectors.toList())); }
/** * Finds the requested {@link OfferResources} value in the provided map[offerId], initializing the entry if needed. */ private static OfferResources getEntry( Map<Protos.OfferID, OfferResources> map, Protos.Offer offer) { // Initialize entry if absent return map.computeIfAbsent(offer.getId(), k -> new OfferResources(offer)); }
@Test public void testFilterAcceptedOffersNoAccepted() { final List<Protos.Offer> unacceptedOffers = OfferUtils.filterOutAcceptedOffers(OFFERS, Collections.emptyList()); Assert.assertEquals( Arrays.asList("no-operation", "with-without-operation", "with-operation", "no-recommendation"), unacceptedOffers.stream().map(o -> o.getId().getValue()).collect(Collectors.toList())); }
@Override public UnexpectedResourcesResponse answer(InvocationOnMock invocation) throws Throwable { Optional<Protos.Offer> match = getOffersArgument(invocation).stream() .filter(o -> o.getId().equals(unexpectedOffer)) .findAny(); Collection<OfferResources> recs = match.isPresent() ? Collections.singletonList(new OfferResources(match.get()).addAll(match.get().getResourcesList())) : Collections.emptyList(); return UnexpectedResourcesResponse.processed(recs); } };
@Override public void run() { LOGGER.info("Thread {} sending {} offers: {}", threadName, offers.size(), offers.stream().map(o -> o.getId().getValue()).collect(Collectors.toList())); processor.enqueue(offers); } }, threadName);
@Override public void resourceOffers(final SchedulerDriver schedulerDriver, final List<Protos.Offer> offers) { for (Protos.Offer offer: offers) { log.trace("Adding offer {} from host {}", offer.getId(), offer.getHostname()); LeasesQueue.getInstance().offer(offer); } }
@Test public void testResourceOffers_launchTasks() { final Protos.Offer offer = newOffer("host3").build(); when(offerStrategy.evaluate(offer)).thenReturn(OfferStrategy.OfferResult.accept()); when(frameworkState.isRegistered()).thenReturn(true); Protos.TaskInfo taskInfo = ProtoTestUtil.getDefaultTaskInfo(); when(taskInfoFactory.createTask(any(), any(), any(), any())).thenReturn(taskInfo); scheduler.resourceOffers(driver, singletonList(offer)); verify(driver).launchTasks(singleton(offer.getId()), singleton(taskInfo)); }
@Override public OfferResponse answer(InvocationOnMock invocation) throws Throwable { Optional<Protos.Offer> match = getOffersArgument(invocation).stream() .filter(o -> o.getId().equals(offerToConsume)) .findAny(); Collection<OfferRecommendation> recs = match.isPresent() ? Collections.singletonList(new ReserveOfferRecommendation(match.get(), getUnreservedCpus(3))) : Collections.emptyList(); return OfferResponse.processed(recs); } };
@Override public void call(final VirtualMachineLease lease) { log.warn("Declining offer on '{}'", lease.hostname()); schedulerDriver.declineOffer(lease.getOffer().getId()); } }).build();
/** * Pretty-print mesos protobuf Offer. * <p/> * XXX(erikdw): not including slave_id, attributes, executor_ids, nor framework_id. */ public static String offerToString(Offer offer) { Map<String, String> map = new LinkedHashMap<>(); map.put("offer_id", offer.getId().getValue()); map.put("hostname", offer.getHostname()); map.putAll(resourcesToOrderedMap(offer.getResourcesList())); return JSONValue.toJSONString(map); }
@Override public Protos.OfferID getOfferId() { return offer.getId(); } };
@Test public void willDeclineOfferIfStrategyDeclinesOffer() { Protos.Offer offer = newOffer("host1").build(); when(offerStrategy.evaluate(offer)).thenReturn(OfferStrategy.OfferResult.decline("Test")); when(frameworkState.isRegistered()).thenReturn(true); scheduler.resourceOffers(driver, singletonList(offer)); verify(driver).declineOffer(offer.getId()); }
@Override public String getId() { return offer.getId().getValue(); }