public synchronized void handle(final NodeDescriptorEvent node) { final String rackName = node.getRackName().orElse(DEFAULT_RACK); LOG.log(Level.FINEST, "Catalog new node: id[{0}], rack[{1}], host[{2}], port[{3}], memory[{4}]", new Object[]{node.getIdentifier(), rackName, node.getHostName(), node.getPort(), node.getMemorySize()} ); if (!this.racks.containsKey(rackName)) { final RackDescriptorImpl rack = new RackDescriptorImpl(rackName); this.racks.put(rackName, rack); } final RackDescriptorImpl rack = this.racks.get(rackName); final InetSocketAddress address = new InetSocketAddress(node.getHostName(), node.getPort()); final NodeDescriptorImpl nodeDescriptor = new NodeDescriptorImpl(node.getIdentifier(), address, rack, node.getMemorySize()); this.nodes.put(nodeDescriptor.getId(), nodeDescriptor); } }
/** * All offers in each batch of offers will be either be launched or declined. */ @Override @SuppressWarnings("checkstyle:hiddenfield") public void resourceOffers(final SchedulerDriver driver, final List<Protos.Offer> offers) { final Map<String, NodeDescriptorEventImpl.Builder> nodeDescriptorEvents = new HashMap<>(); for (final Offer offer : offers) { if (nodeDescriptorEvents.get(offer.getSlaveId().getValue()) == null) { nodeDescriptorEvents.put(offer.getSlaveId().getValue(), NodeDescriptorEventImpl.newBuilder() .setIdentifier(offer.getSlaveId().getValue()) .setHostName(offer.getHostname()) .setPort(this.mesosSlavePort) .setMemorySize(getMemory(offer))); } else { final NodeDescriptorEventImpl.Builder builder = nodeDescriptorEvents.get(offer.getSlaveId().getValue()); builder.setMemorySize(builder.build().getMemorySize() + getMemory(offer)); } this.offers.put(offer.getId().getValue(), offer); } for (final NodeDescriptorEventImpl.Builder ndpBuilder : nodeDescriptorEvents.values()) { this.reefEventHandlers.onNodeDescriptor(ndpBuilder.build()); } if (outstandingRequests.size() > 0) { doResourceRequest(outstandingRequests.remove()); } }