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++; } } }
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()); }