/** {@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); } }
/** * Decline unused {@link org.apache.mesos.Protos.Offer}s. * * @param unusedOffers The collection of Offers to decline * @param refuseSeconds The number of seconds for which the offers should be refused */ private static void declineOffers(Collection<Protos.Offer> unusedOffers, int refuseSeconds) { Collection<Protos.OfferID> offerIds = unusedOffers.stream() .map(offer -> offer.getId()) .collect(Collectors.toList()); LOGGER.info("Declining {} unused offer{} for {} seconds: {}", offerIds.size(), offerIds.size() == 1 ? "" : "s", refuseSeconds, offerIds.stream().map(Protos.OfferID::getValue).collect(Collectors.toList())); final Protos.Filters filters = Protos.Filters.newBuilder() .setRefuseSeconds(refuseSeconds) .build(); offerIds.forEach(offerId -> Driver.getInstance().declineOffer(offerId, filters)); }
Filters filters = Filters.newBuilder().setRefuseSeconds(1).build(); driver.launchTasks(offer.getId(), tasks, filters);
final Filters filters = Filters.newBuilder().setRefuseSeconds(0).build(); mesosMaster.launchTasks(Collections.singleton(offer.getId()), tasksToLaunch, filters); } else {
Protos.Filters filters = Protos.Filters.newBuilder().setRefuseSeconds(1).build(); schedulerDriver.launchTasks(offer.getId(), tasks, filters);
Filters filters = Filters.newBuilder().setRefuseSeconds(1).build(); driver.launchTasks(offer.getId(), tasks, filters);
/** * <code>optional .mesos.Filters filters = 2;</code> */ public Builder mergeFilters(org.apache.mesos.Protos.Filters value) { if (filtersBuilder_ == null) { if (((bitField0_ & 0x00000002) == 0x00000002) && filters_ != null && filters_ != org.apache.mesos.Protos.Filters.getDefaultInstance()) { filters_ = org.apache.mesos.Protos.Filters.newBuilder(filters_).mergeFrom(value).buildPartial(); } else { filters_ = value; } onChanged(); } else { filtersBuilder_.mergeFrom(value); } bitField0_ |= 0x00000002; return this; } /**
/** * <code>optional .mesos.Filters filters = 2;</code> */ public Builder mergeFilters(org.apache.mesos.Protos.Filters value) { if (filtersBuilder_ == null) { if (((bitField0_ & 0x00000002) == 0x00000002) && filters_ != null && filters_ != org.apache.mesos.Protos.Filters.getDefaultInstance()) { filters_ = org.apache.mesos.Protos.Filters.newBuilder(filters_).mergeFrom(value).buildPartial(); } else { filters_ = value; } onChanged(); } else { filtersBuilder_.mergeFrom(value); } bitField0_ |= 0x00000002; return this; } /**
/** * <code>optional .mesos.Filters filters = 3;</code> */ public Builder mergeFilters(org.apache.mesos.Protos.Filters value) { if (filtersBuilder_ == null) { if (((bitField0_ & 0x00000004) == 0x00000004) && filters_ != null && filters_ != org.apache.mesos.Protos.Filters.getDefaultInstance()) { filters_ = org.apache.mesos.Protos.Filters.newBuilder(filters_).mergeFrom(value).buildPartial(); } else { filters_ = value; } onChanged(); } else { filtersBuilder_.mergeFrom(value); } bitField0_ |= 0x00000004; return this; } /**
/** * <code>optional .mesos.Filters filters = 2;</code> */ public Builder mergeFilters(org.apache.mesos.Protos.Filters value) { if (filtersBuilder_ == null) { if (((bitField0_ & 0x00000002) == 0x00000002) && filters_ != null && filters_ != org.apache.mesos.Protos.Filters.getDefaultInstance()) { filters_ = org.apache.mesos.Protos.Filters.newBuilder(filters_).mergeFrom(value).buildPartial(); } else { filters_ = value; } onChanged(); } else { filtersBuilder_.mergeFrom(value); } bitField0_ |= 0x00000002; return this; } /**
public native Status declineOffer(OfferID offerId, Filters filters);
@Override public Protos.Status launchTasks(Collection<Protos.OfferID> offerIDs, Collection<Protos.TaskInfo> tasks) { return launchTasks(offerIDs, tasks, Protos.Filters.newBuilder().build()); }
@Override public Protos.Status declineOffer(Protos.OfferID offerID) { return declineOffer(offerID, Protos.Filters.newBuilder().build()); }
@Override public Protos.Status launchTasks(Protos.OfferID offerID, Collection<Protos.TaskInfo> tasks) { return launchTasks(offerID, tasks, Protos.Filters.newBuilder().build()); }
public native Status launchTasks(OfferID offerId, Collection<TaskInfo> tasks, Filters filters); public Status launchTasks(Collection<OfferID> offerIds,
public native Status launchTasks(Collection<OfferID> offerIds, Collection<TaskInfo> tasks, Filters filters);
private void declineOffer(Offer offer, double duration) { LOGGER.fine("Rejecting offer " + offer.getId().getValue() + " for " + duration + " seconds"); Filters filters = Filters.newBuilder().setRefuseSeconds(duration).build(); driver.declineOffer(offer.getId(), filters); }
public AcceptOffers(String hostname, Collection<Protos.OfferID> offerIds, Collection<Protos.Offer.Operation> operations) { this.hostname = hostname; this.offerIds = offerIds; this.operations = operations; this.filters = Protos.Filters.newBuilder().build(); }