@Override public String toString() { final StringBuilder sb = new StringBuilder(); sb.append("NodeResponse[nodeUri=").append(nodeId.getApiAddress()).append(":").append(nodeId.getApiPort()).append(",") .append("method=").append(httpMethod) .append(",URI=").append(requestUri) .append(",ResponseCode=").append(getStatus()) .append(",Duration=").append(TimeUnit.MILLISECONDS.convert(requestDurationNanos, TimeUnit.NANOSECONDS)).append(" ms]"); return sb.toString(); } }
/** * Normalizes the validation errors. * * @param errorMap validation errors for each node * @param totalNodes total number of nodes * @return the normalized validation errors */ public static Set<String> normalizedMergedErrors(final Map<String, Set<NodeIdentifier>> errorMap, int totalNodes) { final Set<String> normalizedErrors = new HashSet<>(); for (final Map.Entry<String, Set<NodeIdentifier>> validationEntry : errorMap.entrySet()) { final String msg = validationEntry.getKey(); final Set<NodeIdentifier> nodeIds = validationEntry.getValue(); if (nodeIds.size() == totalNodes) { normalizedErrors.add(msg); } else { nodeIds.forEach(id -> normalizedErrors.add(id.getApiAddress() + ":" + id.getApiPort() + " -- " + msg)); } } return normalizedErrors; }
private URI createURI(final URI exampleUri, final NodeIdentifier nodeId) { return createURI(exampleUri.getScheme(), nodeId.getApiAddress(), nodeId.getApiPort(), exampleUri.getPath(), exampleUri.getQuery()); }
@Override public void mergeStatus(ConnectionStatusDTO clientStatus, boolean clientStatusReadablePermission, ConnectionStatusDTO status, boolean statusReadablePermission, NodeIdentifier statusNodeIdentifier) { StatusMerger.merge(clientStatus, clientStatusReadablePermission, status, statusReadablePermission, statusNodeIdentifier.getId(), statusNodeIdentifier.getApiAddress(), statusNodeIdentifier.getApiPort()); } }
@Override public void mergeStatus(RemoteProcessGroupStatusDTO clientStatus, boolean clientStatusReadablePermission, RemoteProcessGroupStatusDTO status, boolean statusReadablePermission, NodeIdentifier statusNodeIdentifier) { StatusMerger.merge(clientStatus, clientStatusReadablePermission, status, statusReadablePermission, statusNodeIdentifier.getId(), statusNodeIdentifier.getApiAddress(), statusNodeIdentifier.getApiPort()); }
@Override public void mergeStatus(ConnectionStatusDTO clientStatus, boolean clientStatusReadablePermission, ConnectionStatusDTO status, boolean statusReadablePermission, NodeIdentifier statusNodeIdentifier) { StatusMerger.merge(clientStatus, clientStatusReadablePermission, status, statusReadablePermission, statusNodeIdentifier.getId(), statusNodeIdentifier.getApiAddress(), statusNodeIdentifier.getApiPort()); } }
@Override public void mergeStatus(PortStatusDTO clientStatus, boolean clientStatusReadablePermission, PortStatusDTO status, boolean statusReadablePermission, NodeIdentifier statusNodeIdentifier) { StatusMerger.merge(clientStatus, clientStatusReadablePermission, status, statusReadablePermission, statusNodeIdentifier.getId(), statusNodeIdentifier.getApiAddress(), statusNodeIdentifier.getApiPort()); } }
@Override public void mergeStatus(ProcessGroupStatusDTO clientStatus, boolean clientStatusReadablePermission, ProcessGroupStatusDTO status, boolean statusReadablePermission, NodeIdentifier statusNodeIdentifier) { StatusMerger.merge(clientStatus, clientStatusReadablePermission, status, statusReadablePermission, statusNodeIdentifier.getId(), statusNodeIdentifier.getApiAddress(), statusNodeIdentifier.getApiPort()); }
@Override public void mergeStatus(ProcessorStatusDTO clientStatus, boolean clientStatusReadablePermission, ProcessorStatusDTO status, boolean statusReadablePermission, NodeIdentifier statusNodeIdentifier) { StatusMerger.merge(clientStatus, clientStatusReadablePermission, status, statusReadablePermission, statusNodeIdentifier.getId(), statusNodeIdentifier.getApiAddress(), statusNodeIdentifier.getApiPort()); }
@Override public void mergeStatus(ProcessorStatusDTO clientStatus, boolean clientStatusReadablePermission, ProcessorStatusDTO status, boolean statusReadablePermission, NodeIdentifier statusNodeIdentifier) { StatusMerger.merge(clientStatus, clientStatusReadablePermission, status, statusReadablePermission, statusNodeIdentifier.getId(), statusNodeIdentifier.getApiAddress(), statusNodeIdentifier.getApiPort()); } }
@Override public void mergeStatus(PortStatusDTO clientStatus, boolean clientStatusReadablePermission, PortStatusDTO status, boolean statusReadablePermission, NodeIdentifier statusNodeIdentifier) { StatusMerger.merge(clientStatus, clientStatusReadablePermission, status, statusReadablePermission, statusNodeIdentifier.getId(), statusNodeIdentifier.getApiAddress(), statusNodeIdentifier.getApiPort()); }
@Override public void mergeStatus(RemoteProcessGroupStatusDTO clientStatus, boolean clientStatusReadablePermission, RemoteProcessGroupStatusDTO status, boolean statusReadablePermission, NodeIdentifier statusNodeIdentifier) { StatusMerger.merge(clientStatus, clientStatusReadablePermission, status, statusReadablePermission, statusNodeIdentifier.getId(), statusNodeIdentifier.getApiAddress(), statusNodeIdentifier.getApiPort()); } }
@Override public void mergeStatus(ProcessGroupStatusDTO clientStatus, boolean clientStatusReadablePermission, ProcessGroupStatusDTO status, boolean statusReadablePermission, NodeIdentifier statusNodeIdentifier) { StatusMerger.merge(clientStatus, clientStatusReadablePermission, status, statusReadablePermission, statusNodeIdentifier.getId(), statusNodeIdentifier.getApiAddress(), statusNodeIdentifier.getApiPort()); } }
@Override public ClusterNodeInformation getNodeInformation() { final List<NodeInformation> nodeInfoCollection; try { nodeInfoCollection = clusterCoordinator.getClusterWorkload().entrySet().stream().map(entry -> { final NodeIdentifier nodeId = entry.getKey(); final NodeInformation nodeInfo = new NodeInformation(nodeId.getSiteToSiteAddress(), nodeId.getSiteToSitePort(), nodeId.getSiteToSiteHttpApiPort(), nodeId.getApiPort(), nodeId.isSiteToSiteSecure(), entry.getValue().getFlowFileCount()); return nodeInfo; }).collect(Collectors.toList()); } catch (IOException e) { throw new RuntimeException("Failed to retrieve cluster workload due to " + e, e); } final ClusterNodeInformation nodeInfo = new ClusterNodeInformation(); nodeInfo.setNodeInformation(nodeInfoCollection); return nodeInfo; }
@Override protected void mergeResponses(ProvenanceEventDTO clientDto, Map<NodeIdentifier, ProvenanceEventDTO> dtoMap, Set<NodeResponse> successfulResponses, Set<NodeResponse> problematicResponses) { // The request for a Provenance Event is replicated to a single Node. We simply update its cluster node info. // However, we only do this if the cluster node info isn't set, because if this is replicated across the cluster, // the cluster coordinator will have already set it, and we will be receiving the response from the cluster // coordinator. We do not want to overwrite this value on all DTO's with the cluster coordinator's information. if (clientDto.getClusterNodeId() == null || clientDto.getClusterNodeAddress() == null) { final NodeIdentifier nodeId = successfulResponses.iterator().next().getNodeId(); clientDto.setClusterNodeId(nodeId.getId()); clientDto.setClusterNodeAddress(nodeId.getApiAddress() + ":" + nodeId.getApiPort()); } } }
@Override protected void mergeResponses(CountersDTO clientDto, Map<NodeIdentifier, CountersDTO> dtoMap, NodeIdentifier selectedNodeId) { final CountersDTO mergedCounters = clientDto; mergedCounters.setNodeSnapshots(new ArrayList<NodeCountersSnapshotDTO>()); final NodeCountersSnapshotDTO selectedNodeSnapshot = new NodeCountersSnapshotDTO(); selectedNodeSnapshot.setSnapshot(clientDto.getAggregateSnapshot().clone()); selectedNodeSnapshot.setAddress(selectedNodeId.getApiAddress()); selectedNodeSnapshot.setApiPort(selectedNodeId.getApiPort()); selectedNodeSnapshot.setNodeId(selectedNodeId.getId()); mergedCounters.getNodeSnapshots().add(selectedNodeSnapshot); for (final Map.Entry<NodeIdentifier, CountersDTO> entry : dtoMap.entrySet()) { final NodeIdentifier nodeId = entry.getKey(); final CountersDTO toMerge = entry.getValue(); if (toMerge == clientDto) { continue; } StatusMerger.merge(mergedCounters, toMerge, nodeId.getId(), nodeId.getApiAddress(), nodeId.getApiPort()); } }
@Override protected void mergeResponses(SystemDiagnosticsDTO clientDto, Map<NodeIdentifier, SystemDiagnosticsDTO> dtoMap, NodeIdentifier selectedNodeId) { final SystemDiagnosticsDTO mergedSystemDiagnostics = clientDto; mergedSystemDiagnostics.setNodeSnapshots(new ArrayList<NodeSystemDiagnosticsSnapshotDTO>()); final NodeSystemDiagnosticsSnapshotDTO selectedNodeSnapshot = new NodeSystemDiagnosticsSnapshotDTO(); selectedNodeSnapshot.setSnapshot(clientDto.getAggregateSnapshot().clone()); selectedNodeSnapshot.setAddress(selectedNodeId.getApiAddress()); selectedNodeSnapshot.setApiPort(selectedNodeId.getApiPort()); selectedNodeSnapshot.setNodeId(selectedNodeId.getId()); mergedSystemDiagnostics.getNodeSnapshots().add(selectedNodeSnapshot); for (final Map.Entry<NodeIdentifier, SystemDiagnosticsDTO> entry : dtoMap.entrySet()) { final NodeIdentifier nodeId = entry.getKey(); final SystemDiagnosticsDTO toMerge = entry.getValue(); if (toMerge == clientDto) { continue; } StatusMerger.merge(mergedSystemDiagnostics, toMerge, nodeId.getId(), nodeId.getApiAddress(), nodeId.getApiPort()); } }
private NodeIdentifier addNodeIdentities(final NodeIdentifier nodeId, final Set<String> nodeIdentities) { return new NodeIdentifier(nodeId.getId(), nodeId.getApiAddress(), nodeId.getApiPort(), nodeId.getSocketAddress(), nodeId.getSocketPort(), nodeId.getLoadBalanceAddress(), nodeId.getLoadBalancePort(), nodeId.getSiteToSiteAddress(), nodeId.getSiteToSitePort(), nodeId.getSiteToSiteHttpApiPort(), nodeId.isSiteToSiteSecure(), nodeIdentities); }
@Override public AdaptedNodeIdentifier marshal(final NodeIdentifier ni) { if (ni == null) { return null; } else { final AdaptedNodeIdentifier aNi = new AdaptedNodeIdentifier(); aNi.setId(ni.getId()); aNi.setApiAddress(ni.getApiAddress()); aNi.setApiPort(ni.getApiPort()); aNi.setSocketAddress(ni.getSocketAddress()); aNi.setSocketPort(ni.getSocketPort()); aNi.setLoadBalanceAddress(ni.getLoadBalanceAddress()); aNi.setLoadBalancePort(ni.getLoadBalancePort()); aNi.setSiteToSiteAddress(ni.getSiteToSiteAddress()); aNi.setSiteToSitePort(ni.getSiteToSitePort()); aNi.setSiteToSiteHttpApiPort(ni.getSiteToSiteHttpApiPort()); aNi.setSiteToSiteSecure(ni.isSiteToSiteSecure()); return aNi; } }
public static NodeIdentifierDescriptor fromNodeIdentifier(final NodeIdentifier nodeId, final boolean localNodeId) { final NodeIdentifierDescriptor descriptor = new NodeIdentifierDescriptor(); descriptor.setId(nodeId.getId()); descriptor.setApiAddress(nodeId.getApiAddress()); descriptor.setApiPort(nodeId.getApiPort()); descriptor.setSocketAddress(nodeId.getSocketAddress()); descriptor.setSocketPort(nodeId.getSocketPort()); descriptor.setSiteToSiteAddress(nodeId.getSiteToSiteAddress()); descriptor.setSiteToSitePort(nodeId.getSiteToSitePort()); descriptor.setSiteToSiteHttpApiPort(nodeId.getSiteToSiteHttpApiPort()); descriptor.setSiteToSiteSecure(nodeId.isSiteToSiteSecure()); descriptor.setNodeIdentities(nodeId.getNodeIdentities()); descriptor.setLoadBalanceAddress(nodeId.getLoadBalanceAddress()); descriptor.setLoadBalancePort(nodeId.getLoadBalancePort()); descriptor.setLocalNodeIdentifier(localNodeId); return descriptor; }