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 remote process group. * * @param remoteProcessGroupId remote process group id * @return the status for the specified remote process group */ public RemoteProcessGroupStatus getRemoteProcessGroupStatus(final String remoteProcessGroupId) { final ProcessGroup root = getRootGroup(); final RemoteProcessGroup remoteProcessGroup = root.findRemoteProcessGroup(remoteProcessGroupId); // ensure the output port was found if (remoteProcessGroup == null) { throw new ResourceNotFoundException(String.format("Unable to locate remote process group with id '%s'.", remoteProcessGroupId)); } final String groupId = remoteProcessGroup.getProcessGroup().getIdentifier(); final ProcessGroupStatus groupStatus = flowController.getEventAccess().getGroupStatus(groupId, NiFiUserUtils.getNiFiUser(), 1); if (groupStatus == null) { throw new ResourceNotFoundException(String.format("Unable to locate group with id '%s'.", groupId)); } final RemoteProcessGroupStatus status = groupStatus.getRemoteProcessGroupStatus().stream().filter(rpgStatus -> remoteProcessGroupId.equals(rpgStatus.getId())).findFirst().orElse(null); if (status == null) { throw new ResourceNotFoundException(String.format("Unable to locate remote process group with id '%s'.", remoteProcessGroupId)); } return status; }
for (final RemoteProcessGroupStatus rpgStatus : status.getRemoteProcessGroupStatus()) { componentNameMap.put(rpgStatus.getId(), rpgStatus.getName()); componentToParentGroupMap.put(rpgStatus.getId(), thisProcessGroupNode);
final PermissionsDTO operatePermissions = createPermissionsDto(new OperationAuthorizable(rpg)); final RemoteProcessGroupStatusDTO status = getComponentStatus( () -> groupStatus.getRemoteProcessGroupStatus().stream().filter(remoteProcessGroupStatus -> rpg.getIdentifier().equals(remoteProcessGroupStatus.getId())).findFirst().orElse(null), remoteProcessGroupStatus -> createRemoteProcessGroupStatusDto(rpg, remoteProcessGroupStatus) );
final PermissionsDTO operatePermissions = createPermissionsDto(new OperationAuthorizable(remoteProcessGroup)); final RemoteProcessGroupStatusDTO status = getComponentStatus( () -> groupStatus.getRemoteProcessGroupStatus().stream().filter(rpgStatus -> remoteProcessGroup.getIdentifier().equals(rpgStatus.getId())).findFirst().orElse(null), remoteProcessGroupStatus -> createRemoteProcessGroupStatusDto(remoteProcessGroup, remoteProcessGroupStatus) );
final Collection<RemoteProcessGroupStatus> childRemoteProcessGroupStatusCollection = processGroupStatus.getRemoteProcessGroupStatus(); if (childRemoteProcessGroupStatusCollection != null) { for (final RemoteProcessGroupStatus childRemoteProcessGroupStatus : childRemoteProcessGroupStatusCollection) {
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 RemoteProcessGroupStatus status : target.getRemoteProcessGroupStatus()) { mergedRemoteGroupMap.put(status.getId(), status); for (final RemoteProcessGroupStatus statusToMerge : toMerge.getRemoteProcessGroupStatus()) { RemoteProcessGroupStatus merged = mergedRemoteGroupMap.get(statusToMerge.getId()); if (merged == null) {
hostname, applicationName, platform, status.getId(), currentDate); for(RemoteProcessGroupStatus remoteProcessGroupStatus : status.getRemoteProcessGroupStatus()) { serializeRemoteProcessGroupStatus(arrayBuilder, factory, remoteProcessGroupStatus, df, hostname, applicationName, platform, status.getId(), currentDate);
private static void handleRemoteProcessGroupRequest(RequestItem requestItem, ProcessGroupStatus rootGroupStatus, FlowController flowController, List<RemoteProcessGroupStatusBean> remoteProcessGroupStatusList, Map<String, RemoteProcessGroupStatus> remoteProcessGroupStatusMap, Logger logger) throws StatusRequestException { if (remoteProcessGroupStatusMap == null) { remoteProcessGroupStatusMap = transformStatusCollection(rootGroupStatus.getRemoteProcessGroupStatus()); } if (requestItem.identifier.equalsIgnoreCase("all")) { if (!remoteProcessGroupStatusMap.isEmpty()) { for (RemoteProcessGroupStatus remoteProcessGroupStatus : new HashSet<>(remoteProcessGroupStatusMap.values())) { remoteProcessGroupStatusList.add(parseRemoteProcessGroupStatusRequest(remoteProcessGroupStatus, requestItem.options, flowController)); } } } else { if (remoteProcessGroupStatusMap.containsKey(requestItem.identifier)) { RemoteProcessGroupStatus remoteProcessGroupStatus = remoteProcessGroupStatusMap.get(requestItem.identifier); remoteProcessGroupStatusList.add(parseRemoteProcessGroupStatusRequest(remoteProcessGroupStatus, requestItem.options, flowController)); } else { logger.warn("Status for Remote Process Group with key " + requestItem.identifier + " was requested but one does not exist"); throw new StatusRequestException("No Remote Process Group with key " + requestItem.identifier + " to report status on"); } } }
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); } }
for (final RemoteProcessGroupStatus rpgStatus : status.getRemoteProcessGroupStatus()) { if (rpgStatus.getId().equals(componentId)) { return rpgStatus.getName();
hostname, applicationName, platform, status.getId(), currentDate); for(RemoteProcessGroupStatus remoteProcessGroupStatus : status.getRemoteProcessGroupStatus()) { serializeRemoteProcessGroupStatus(arrayBuilder, factory, remoteProcessGroupStatus, df, hostname, applicationName, platform, status.getId(), currentDate);