@Override public NodeDescriptorEvent build() { return new NodeDescriptorEventImpl(this); } }
private void sendNodeDescriptors() { final IDMaker idmaker = new IDMaker("Node-"); int j = 0; for (final String rackName : this.availableRacks) { final int rackCapacity = this.capacitiesPerRack.get(rackName); for (int i = 0; i < rackCapacity; i++) { final String id = idmaker.getNextID(); this.racksPerNode.put(id, rackName); this.freeNodesPerRack.get(rackName).put(id, Boolean.TRUE); final int totalMemorySizeInMB = MemoryUtils.getTotalPhysicalMemorySizeInMB(); final int nodeMemorySizeInMB = (-1 == totalMemorySizeInMB) ? this.defaultMemorySize : totalMemorySizeInMB; this.nodeDescriptorHandler.onNext(NodeDescriptorEventImpl.newBuilder() .setIdentifier(id) .setRackName(rackName) .setHostName(this.localAddress) .setPort(j) .setMemorySize(nodeMemorySizeInMB) .build()); j++; } } }
/** * 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()); } }
private EvaluatorManager getNewEvaluatorManagerInstanceForResource( final ResourceEvent resourceEvent) { NodeDescriptor nodeDescriptor = this.resourceCatalog.getNode(resourceEvent.getNodeId()); if (nodeDescriptor == null) { final String nodeId = resourceEvent.getNodeId(); LOG.log(Level.WARNING, "Node {} is not in our catalog, adding it", nodeId); final String[] hostNameAndPort = nodeId.split(":"); Validate.isTrue(hostNameAndPort.length == 2); final NodeDescriptorEvent nodeDescriptorEvent = NodeDescriptorEventImpl.newBuilder().setIdentifier(nodeId) .setHostName(hostNameAndPort[0]).setPort(Integer.parseInt(hostNameAndPort[1])) .setMemorySize(resourceEvent.getResourceMemory()) .setRackName(resourceEvent.getRackName().get()).build(); // downcasting not to change the API ((ResourceCatalogImpl) resourceCatalog).handle(nodeDescriptorEvent); nodeDescriptor = this.resourceCatalog.getNode(nodeId); } final EvaluatorDescriptorImpl evaluatorDescriptor = new EvaluatorDescriptorImpl(nodeDescriptor, resourceEvent.getResourceMemory(), resourceEvent.getVirtualCores().get(), processFactory.newEvaluatorProcess(), resourceEvent.getRuntimeName()); LOG.log(Level.FINEST, "Resource allocation: new evaluator id[{0}]", resourceEvent.getIdentifier()); final EvaluatorManager evaluatorManager = getNewEvaluatorManagerInstance(resourceEvent.getIdentifier(), evaluatorDescriptor); return evaluatorManager; }
private void onNodeReport(final NodeReport nodeReport) { LOG.log(Level.FINE, "Send node descriptor: {0}", nodeReport); this.reefEventHandlers.onNodeDescriptor(NodeDescriptorEventImpl.newBuilder() .setIdentifier(nodeReport.getNodeId().toString()) .setHostName(nodeReport.getNodeId().getHost()) .setPort(nodeReport.getNodeId().getPort()) .setMemorySize(nodeReport.getCapability().getMemory()) .setRackName(nodeReport.getRackName()) .build()); }