private void populateConnectionStatuses(final ProcessGroupStatus groupStatus, final List<ConnectionStatus> statuses) { statuses.addAll(groupStatus.getConnectionStatus()); for (final ProcessGroupStatus childGroupStatus : groupStatus.getProcessGroupStatus()) { populateConnectionStatuses(childGroupStatus, statuses); } }
private void populateConnectionStatuses(final ProcessGroupStatus groupStatus, final List<ConnectionStatus> statuses) { statuses.addAll(groupStatus.getConnectionStatus()); for (final ProcessGroupStatus childGroupStatus : groupStatus.getProcessGroupStatus()) { populateConnectionStatuses(childGroupStatus, statuses); } }
private void analyzeProcessGroup(final ProcessGroupStatus processGroupStatus, final NiFiFlow nifiFlow) { processGroupStatus.getConnectionStatus().forEach(c -> nifiFlow.addConnection(c)); processGroupStatus.getProcessorStatus().forEach(p -> nifiFlow.addProcessor(p)); processGroupStatus.getRemoteProcessGroupStatus().forEach(r -> nifiFlow.addRemoteProcessGroup(r)); processGroupStatus.getInputPortStatus().forEach(p -> nifiFlow.addInputPort(p)); processGroupStatus.getOutputPortStatus().forEach(p -> nifiFlow.addOutputPort(p)); // Analyze child ProcessGroups recursively. for (ProcessGroupStatus child : processGroupStatus.getProcessGroupStatus()) { analyzeProcessGroup(child, nifiFlow); } }
/** * Gets the status for the specified connection. * * @param connectionId connection id * @return the status for the specified connection */ public ConnectionStatus getConnectionStatus(final String connectionId) { final ProcessGroup root = getRootGroup(); final Connection connection = root.findConnection(connectionId); // ensure the connection was found if (connection == null) { throw new ResourceNotFoundException(String.format("Unable to locate connection with id '%s'.", connectionId)); } // calculate the process group status final String groupId = connection.getProcessGroup().getIdentifier(); final ProcessGroupStatus processGroupStatus = flowController.getEventAccess().getGroupStatus(groupId, NiFiUserUtils.getNiFiUser(), 1); if (processGroupStatus == null) { throw new ResourceNotFoundException(String.format("Unable to locate group with id '%s'.", groupId)); } final ConnectionStatus status = processGroupStatus.getConnectionStatus().stream().filter(connectionStatus -> connectionId.equals(connectionStatus.getId())).findFirst().orElse(null); if (status == null) { throw new ResourceNotFoundException(String.format("Unable to locate connection with id '%s'.", connectionId)); } return status; }
for (final ConnectionStatus connectionStatus : status.getConnectionStatus()) { componentNameMap.put(connectionStatus.getId(), connectionStatus.getName()); componentToParentGroupMap.put(connectionStatus.getId(), thisProcessGroupNode);
final PermissionsDTO permissions = createPermissionsDto(connNode); final ConnectionStatusDTO status = getComponentStatus( () -> groupStatus.getConnectionStatus().stream().filter(connectionStatus -> connNode.getIdentifier().equals(connectionStatus.getId())).findFirst().orElse(null), connectionStatus -> createConnectionStatusDto(connectionStatus) );
final PermissionsDTO accessPolicy = createPermissionsDto(connection); final ConnectionStatusDTO status = getComponentStatus( () -> groupStatus.getConnectionStatus().stream().filter(connectionStatus -> connection.getIdentifier().equals(connectionStatus.getId())).findFirst().orElse(null), connectionStatus -> createConnectionStatusDto(connectionStatus) );
final Collection<ConnectionStatus> connectionStatusCollection = processGroupStatus.getConnectionStatus(); if (connectionStatusCollection != null) { for (final ConnectionStatus connectionStatus : connectionStatusCollection) {
private void capture(final ProcessGroupStatus groupStatus, final Date timestamp) { // Capture status for the ProcessGroup final ComponentDetails groupDetails = ComponentDetails.forProcessGroup(groupStatus); final StatusSnapshot groupSnapshot = ComponentMetrics.createSnapshot(groupStatus, timestamp); updateStatusHistory(groupSnapshot, groupDetails, timestamp); // Capture statuses for the Processors for (final ProcessorStatus processorStatus : groupStatus.getProcessorStatus()) { final ComponentDetails componentDetails = ComponentDetails.forProcessor(processorStatus); final StatusSnapshot snapshot = ComponentMetrics.createSnapshot(processorStatus, timestamp); updateStatusHistory(snapshot, componentDetails, timestamp); } // Capture statuses for the Connections for (final ConnectionStatus connectionStatus : groupStatus.getConnectionStatus()) { final ComponentDetails componentDetails = ComponentDetails.forConnection(connectionStatus); final StatusSnapshot snapshot = ComponentMetrics.createSnapshot(connectionStatus, timestamp); updateStatusHistory(snapshot, componentDetails, timestamp); } // Capture statuses for the RPG's for (final RemoteProcessGroupStatus rpgStatus : groupStatus.getRemoteProcessGroupStatus()) { final ComponentDetails componentDetails = ComponentDetails.forRemoteProcessGroup(rpgStatus); final StatusSnapshot snapshot = ComponentMetrics.createSnapshot(rpgStatus, timestamp); updateStatusHistory(snapshot, componentDetails, timestamp); } // Capture statuses for the child groups for (final ProcessGroupStatus childStatus : groupStatus.getProcessGroupStatus()) { capture(childStatus, timestamp); } }
for (final ConnectionStatus status : target.getConnectionStatus()) { mergedConnectionMap.put(status.getId(), status); for (final ConnectionStatus statusToMerge : toMerge.getConnectionStatus()) { ConnectionStatus merged = mergedConnectionMap.get(statusToMerge.getId()); if (merged == null) {
applicationName, platform, status.getId(), currentDate); for(ConnectionStatus connectionStatus : status.getConnectionStatus()) { serializeConnectionStatus(arrayBuilder, factory, connectionStatus, df, hostname, applicationName, platform, status.getId(), currentDate);
private static void handleConnectionRequest(RequestItem requestItem, ProcessGroupStatus rootGroupStatus, List<ConnectionStatusBean> connectionStatusList, Map<String, ConnectionStatus> connectionStatusMap, Logger logger) throws StatusRequestException { if (connectionStatusMap == null) { connectionStatusMap = transformStatusCollection(rootGroupStatus.getConnectionStatus()); } if (requestItem.identifier.equalsIgnoreCase("all")) { if (!connectionStatusMap.isEmpty()) { for (ConnectionStatus connectionStatus : new HashSet<>(connectionStatusMap.values())) { connectionStatusList.add(parseConnectionStatusRequest(connectionStatus, requestItem.options, logger)); } } } else { if (connectionStatusMap.containsKey(requestItem.identifier)) { connectionStatusList.add(parseConnectionStatusRequest(connectionStatusMap.get(requestItem.identifier), requestItem.options, logger)); } else { logger.warn("Status for connection with key " + requestItem.identifier + " was requested but one does not exist"); throw new StatusRequestException("No connection with key " + requestItem.identifier + " to report status on"); } } }
/** * Recursively enumertes the ProcessGroupStatus looking for ConnectionStatus that are "busy" based on the user defined parameters. * * @param pg * @return */ private List<ConnectionStatus> searchForBusyConnections(ProcessGroupStatus pg) { List<ConnectionStatus> bcs = new ArrayList<>(); getLogger().info("Examining ProcessGroup: " + pg.getName()); //Gets all of the Connections in this group Collection<ConnectionStatus> connectionStatuses = pg.getConnectionStatus(); Iterator<ConnectionStatus> iterator = connectionStatuses.iterator(); while (iterator.hasNext()) { ConnectionStatus cs = iterator.next(); if (cs.getQueuedCount() > 10) { bcs.add(cs); } } //Recursively call of the ProcessGroups nested inside of this ProcessGroup Iterator<ProcessGroupStatus> pgs = pg.getProcessGroupStatus().iterator(); while (pgs.hasNext()) { bcs.addAll(searchForBusyConnections(pgs.next())); } return bcs; }
private void analyzeProcessGroup(final ProcessGroupStatus processGroupStatus, final NiFiFlow nifiFlow) { processGroupStatus.getConnectionStatus().forEach(c -> nifiFlow.addConnection(c)); processGroupStatus.getProcessorStatus().forEach(p -> nifiFlow.addProcessor(p)); processGroupStatus.getRemoteProcessGroupStatus().forEach(r -> nifiFlow.addRemoteProcessGroup(r)); processGroupStatus.getInputPortStatus().forEach(p -> nifiFlow.addInputPort(p)); processGroupStatus.getOutputPortStatus().forEach(p -> nifiFlow.addOutputPort(p)); // Analyze child ProcessGroups recursively. for (ProcessGroupStatus child : processGroupStatus.getProcessGroupStatus()) { analyzeProcessGroup(child, nifiFlow); } }
applicationName, platform, status.getId(), currentDate); for(ConnectionStatus connectionStatus : status.getConnectionStatus()) { serializeConnectionStatus(arrayBuilder, factory, connectionStatus, df, hostname, applicationName, platform, status.getId(), currentDate);