Search in sources :

Example 6 with ConnectionStatus

use of org.apache.nifi.controller.status.ConnectionStatus in project nifi by apache.

the class NiFiRemotePort method analyze.

@Override
public DataSetRefs analyze(AnalysisContext context, ProvenanceEventRecord event) {
    if (!ProvenanceEventType.SEND.equals(event.getEventType()) && !ProvenanceEventType.RECEIVE.equals(event.getEventType())) {
        return null;
    }
    final boolean isRemoteInputPort = event.getComponentType().equals("Remote Input Port");
    final String type = isRemoteInputPort ? TYPE_NIFI_INPUT_PORT : TYPE_NIFI_OUTPUT_PORT;
    final String remotePortId = event.getComponentId();
    final S2STransitUrl s2sUrl = parseTransitURL(event.getTransitUri(), context.getClusterResolver());
    // Find connections that connects to/from the remote port.
    final List<ConnectionStatus> connections = isRemoteInputPort ? context.findConnectionTo(remotePortId) : context.findConnectionFrom(remotePortId);
    if (connections == null || connections.isEmpty()) {
        logger.warn("Connection was not found: {}", new Object[] { event });
        return null;
    }
    // The name of remote port can be retrieved from any connection, use the first one.
    final ConnectionStatus connection = connections.get(0);
    final Referenceable ref = new Referenceable(type);
    ref.set(ATTR_NAME, isRemoteInputPort ? connection.getDestinationName() : connection.getSourceName());
    ref.set(ATTR_QUALIFIED_NAME, toQualifiedName(s2sUrl.clusterName, s2sUrl.targetPortId));
    return singleDataSetRef(event.getComponentId(), event.getEventType(), ref);
}
Also used : Referenceable(org.apache.atlas.typesystem.Referenceable) ConnectionStatus(org.apache.nifi.controller.status.ConnectionStatus)

Example 7 with ConnectionStatus

use of org.apache.nifi.controller.status.ConnectionStatus in project nifi by apache.

the class TestNiFiFlowAnalyzer method connect.

private void connect(ProcessGroupStatus pg0, Tuple<String, String> comp0, Tuple<String, String> comp1) {
    ConnectionStatus conn = new ConnectionStatus();
    conn.setId(nextComponentId());
    conn.setGroupId(pg0.getId());
    conn.setSourceId(comp0.getKey());
    conn.setSourceName(comp0.getValue());
    conn.setDestinationId(comp1.getKey());
    conn.setDestinationName(comp1.getValue());
    pg0.getConnectionStatus().add(conn);
}
Also used : ConnectionStatus(org.apache.nifi.controller.status.ConnectionStatus)

Example 8 with ConnectionStatus

use of org.apache.nifi.controller.status.ConnectionStatus in project nifi by apache.

the class SiteToSiteStatusReportingTask method serializeProcessGroupStatus.

/**
 * Serialize the ProcessGroupStatus and add it to the JsonArrayBuilder.
 * @param arrayBuilder
 *            The JSON Array builder
 * @param factory
 *            The JSON Builder Factory
 * @param status
 *            The ProcessGroupStatus
 * @param df
 *            A date format
 * @param hostname
 *            The current hostname
 * @param applicationName
 *            The root process group name
 * @param platform
 *            The configured platform
 * @param parentId
 *            The parent's component id
 */
void serializeProcessGroupStatus(final JsonArrayBuilder arrayBuilder, final JsonBuilderFactory factory, final ProcessGroupStatus status, final DateFormat df, final String hostname, final String applicationName, final String platform, final String parentId, final Date currentDate) {
    final JsonObjectBuilder builder = factory.createObjectBuilder();
    final String componentType = (parentId == null) ? "RootProcessGroup" : "ProcessGroup";
    final String componentName = status.getName();
    if (componentMatchesFilters(componentType, componentName)) {
        addCommonFields(builder, df, hostname, applicationName, platform, parentId, currentDate, componentType, componentName);
        addField(builder, "componentId", status.getId());
        addField(builder, "bytesRead", status.getBytesRead());
        addField(builder, "bytesWritten", status.getBytesWritten());
        addField(builder, "bytesReceived", status.getBytesReceived());
        addField(builder, "bytesSent", status.getBytesSent());
        addField(builder, "bytesTransferred", status.getBytesTransferred());
        addField(builder, "flowFilesReceived", status.getFlowFilesReceived());
        addField(builder, "flowFilesSent", status.getFlowFilesSent());
        addField(builder, "flowFilesTransferred", status.getFlowFilesTransferred());
        addField(builder, "inputContentSize", status.getInputContentSize());
        addField(builder, "inputCount", status.getInputCount());
        addField(builder, "outputContentSize", status.getOutputContentSize());
        addField(builder, "outputCount", status.getOutputCount());
        addField(builder, "queuedContentSize", status.getQueuedContentSize());
        addField(builder, "activeThreadCount", status.getActiveThreadCount());
        addField(builder, "queuedCount", status.getQueuedCount());
        arrayBuilder.add(builder.build());
    }
    for (ProcessGroupStatus childGroupStatus : status.getProcessGroupStatus()) {
        serializeProcessGroupStatus(arrayBuilder, factory, childGroupStatus, df, hostname, applicationName, platform, status.getId(), currentDate);
    }
    for (ProcessorStatus processorStatus : status.getProcessorStatus()) {
        serializeProcessorStatus(arrayBuilder, factory, processorStatus, df, hostname, applicationName, platform, status.getId(), currentDate);
    }
    for (ConnectionStatus connectionStatus : status.getConnectionStatus()) {
        serializeConnectionStatus(arrayBuilder, factory, connectionStatus, df, hostname, applicationName, platform, status.getId(), currentDate);
    }
    for (PortStatus portStatus : status.getInputPortStatus()) {
        serializePortStatus("InputPort", arrayBuilder, factory, portStatus, df, hostname, applicationName, platform, status.getId(), currentDate);
    }
    for (PortStatus portStatus : status.getOutputPortStatus()) {
        serializePortStatus("OutputPort", arrayBuilder, factory, portStatus, df, hostname, applicationName, platform, status.getId(), currentDate);
    }
    for (RemoteProcessGroupStatus remoteProcessGroupStatus : status.getRemoteProcessGroupStatus()) {
        serializeRemoteProcessGroupStatus(arrayBuilder, factory, remoteProcessGroupStatus, df, hostname, applicationName, platform, status.getId(), currentDate);
    }
}
Also used : ProcessGroupStatus(org.apache.nifi.controller.status.ProcessGroupStatus) RemoteProcessGroupStatus(org.apache.nifi.controller.status.RemoteProcessGroupStatus) PortStatus(org.apache.nifi.controller.status.PortStatus) JsonObjectBuilder(javax.json.JsonObjectBuilder) ConnectionStatus(org.apache.nifi.controller.status.ConnectionStatus) RemoteProcessGroupStatus(org.apache.nifi.controller.status.RemoteProcessGroupStatus) ProcessorStatus(org.apache.nifi.controller.status.ProcessorStatus)

Example 9 with ConnectionStatus

use of org.apache.nifi.controller.status.ConnectionStatus in project nifi by apache.

the class TestSiteToSiteStatusReportingTask method generateProcessGroupStatus.

public static ProcessGroupStatus generateProcessGroupStatus(String id, String namePrefix, int maxRecursion, int currentDepth) {
    Collection<ConnectionStatus> cStatus = new ArrayList<>();
    Collection<PortStatus> ipStatus = new ArrayList<>();
    Collection<PortStatus> opStatus = new ArrayList<>();
    Collection<ProcessorStatus> pStatus = new ArrayList<>();
    Collection<RemoteProcessGroupStatus> rpgStatus = new ArrayList<>();
    Collection<ProcessGroupStatus> childPgStatus = new ArrayList<>();
    if (currentDepth < maxRecursion) {
        for (int i = 1; i < 4; i++) {
            childPgStatus.add(generateProcessGroupStatus(id + "." + i, namePrefix + "." + i, maxRecursion, currentDepth + 1));
        }
    }
    for (int i = 1; i < 4; i++) {
        pStatus.add(generateProcessorStatus(id + ".processor." + i, namePrefix + ".processor." + i));
    }
    for (int i = 1; i < 4; i++) {
        cStatus.add(generateConnectionStatus(id + ".connection." + i, namePrefix + ".connection." + i));
    }
    for (int i = 1; i < 4; i++) {
        rpgStatus.add(generateRemoteProcessGroupStatus(id + ".rpg." + i, namePrefix + ".rpg." + i));
    }
    for (int i = 1; i < 4; i++) {
        ipStatus.add(generatePortStatus(id + ".ip." + i, namePrefix + ".ip." + i));
    }
    for (int i = 1; i < 4; i++) {
        opStatus.add(generatePortStatus(id + ".op." + i, namePrefix + ".op." + i));
    }
    ProcessGroupStatus pgStatus = new ProcessGroupStatus();
    pgStatus.setId(id);
    pgStatus.setName(namePrefix + "-" + UUID.randomUUID().toString());
    pgStatus.setInputPortStatus(ipStatus);
    pgStatus.setOutputPortStatus(opStatus);
    pgStatus.setProcessGroupStatus(childPgStatus);
    pgStatus.setRemoteProcessGroupStatus(rpgStatus);
    pgStatus.setProcessorStatus(pStatus);
    pgStatus.setActiveThreadCount(1);
    pgStatus.setBytesRead(2L);
    pgStatus.setBytesReceived(3l);
    pgStatus.setBytesSent(4l);
    pgStatus.setBytesTransferred(5l);
    pgStatus.setBytesWritten(6l);
    pgStatus.setConnectionStatus(cStatus);
    pgStatus.setFlowFilesReceived(7);
    pgStatus.setFlowFilesSent(8);
    pgStatus.setFlowFilesTransferred(9);
    pgStatus.setInputContentSize(10l);
    pgStatus.setInputCount(11);
    pgStatus.setOutputContentSize(12l);
    pgStatus.setOutputCount(13);
    pgStatus.setQueuedContentSize(14l);
    pgStatus.setQueuedCount(15);
    return pgStatus;
}
Also used : ProcessGroupStatus(org.apache.nifi.controller.status.ProcessGroupStatus) RemoteProcessGroupStatus(org.apache.nifi.controller.status.RemoteProcessGroupStatus) ArrayList(java.util.ArrayList) PortStatus(org.apache.nifi.controller.status.PortStatus) ConnectionStatus(org.apache.nifi.controller.status.ConnectionStatus) RemoteProcessGroupStatus(org.apache.nifi.controller.status.RemoteProcessGroupStatus) ProcessorStatus(org.apache.nifi.controller.status.ProcessorStatus)

Example 10 with ConnectionStatus

use of org.apache.nifi.controller.status.ConnectionStatus in project nifi-minifi by apache.

the class StatusConfigReporter method getStatus.

public static FlowStatusReport getStatus(FlowController flowController, String statusRequest, Logger logger) throws StatusRequestException {
    if (statusRequest == null) {
        logger.error("Received a status request which was null");
        throw new StatusRequestException("Cannot complete status request because the statusRequest is null");
    }
    if (flowController == null) {
        logger.error("Received a status but the Flow Controller is null");
        throw new StatusRequestException("Cannot complete status request because the Flow Controller is null");
    }
    FlowStatusReport flowStatusReport = new FlowStatusReport();
    List<String> errorsGeneratingReport = new LinkedList<>();
    flowStatusReport.setErrorsGeneratingReport(errorsGeneratingReport);
    String[] itemsToReport = statusRequest.split(";");
    ProcessGroupStatus rootGroupStatus = flowController.getControllerStatus();
    Map<String, ProcessorStatus> processorStatusMap = null;
    Map<String, ConnectionStatus> connectionStatusMap = null;
    Map<String, RemoteProcessGroupStatus> remoteProcessGroupStatusMap = null;
    for (String item : itemsToReport) {
        String[] sections = item.split(":");
        try {
            switch(sections[0].toLowerCase().trim()) {
                case "systemdiagnostics":
                    SystemDiagnosticsStatus systemDiagnosticsStatus = parseSystemDiagnosticsRequest(flowController.getSystemDiagnostics(), sections[1]);
                    flowStatusReport.setSystemDiagnosticsStatus(systemDiagnosticsStatus);
                    break;
                case "instance":
                    InstanceStatus instanceStatus = parseInstanceRequest(sections[1], flowController, rootGroupStatus);
                    flowStatusReport.setInstanceStatus(instanceStatus);
                    break;
                case "remoteprocessgroup":
                    if (flowStatusReport.getRemoteProcessGroupStatusList() == null) {
                        List<RemoteProcessGroupStatusBean> remoteProcessGroupStatusList = new LinkedList<>();
                        flowStatusReport.setRemoteProcessGroupStatusList(remoteProcessGroupStatusList);
                    }
                    handleRemoteProcessGroupRequest(sections, rootGroupStatus, flowController, flowStatusReport.getRemoteProcessGroupStatusList(), remoteProcessGroupStatusMap, logger);
                    break;
                case "processor":
                    if (flowStatusReport.getProcessorStatusList() == null) {
                        List<ProcessorStatusBean> processorStatusList = new LinkedList<>();
                        flowStatusReport.setProcessorStatusList(processorStatusList);
                    }
                    handleProcessorRequest(sections, rootGroupStatus, flowController, flowStatusReport.getProcessorStatusList(), processorStatusMap, logger);
                    break;
                case "connection":
                    if (flowStatusReport.getConnectionStatusList() == null) {
                        List<ConnectionStatusBean> connectionStatusList = new LinkedList<>();
                        flowStatusReport.setConnectionStatusList(connectionStatusList);
                    }
                    handleConnectionRequest(sections, rootGroupStatus, flowStatusReport.getConnectionStatusList(), connectionStatusMap, logger);
                    break;
                case "provenancereporting":
                    if (flowStatusReport.getRemoteProcessGroupStatusList() == null) {
                        List<ReportingTaskStatus> reportingTaskStatusList = new LinkedList<>();
                        flowStatusReport.setReportingTaskStatusList(reportingTaskStatusList);
                    }
                    handleReportingTaskRequest(sections, flowController, flowStatusReport.getReportingTaskStatusList(), logger);
                    break;
                case "controllerservices":
                    if (flowStatusReport.getControllerServiceStatusList() == null) {
                        List<ControllerServiceStatus> controllerServiceStatusList = new LinkedList<>();
                        flowStatusReport.setControllerServiceStatusList(controllerServiceStatusList);
                    }
                    handleControllerServices(sections, flowController, flowStatusReport.getControllerServiceStatusList(), logger);
                    break;
            }
        } catch (Exception e) {
            logger.error("Hit exception while requesting status for item '" + item + "'", e);
            errorsGeneratingReport.add("Unable to get status for request '" + item + "' due to:" + e);
        }
    }
    return flowStatusReport;
}
Also used : ConnectionStatusBean(org.apache.nifi.minifi.commons.status.connection.ConnectionStatusBean) InstanceStatus(org.apache.nifi.minifi.commons.status.instance.InstanceStatus) ProcessorStatusBean(org.apache.nifi.minifi.commons.status.processor.ProcessorStatusBean) ConnectionStatus(org.apache.nifi.controller.status.ConnectionStatus) ReportingTaskStatus(org.apache.nifi.minifi.commons.status.reportingTask.ReportingTaskStatus) ProcessGroupStatus(org.apache.nifi.controller.status.ProcessGroupStatus) RemoteProcessGroupStatus(org.apache.nifi.controller.status.RemoteProcessGroupStatus) FlowStatusReport(org.apache.nifi.minifi.commons.status.FlowStatusReport) RemoteProcessGroupStatus(org.apache.nifi.controller.status.RemoteProcessGroupStatus) ProcessorStatus(org.apache.nifi.controller.status.ProcessorStatus) LinkedList(java.util.LinkedList) RemoteProcessGroupStatusBean(org.apache.nifi.minifi.commons.status.rpg.RemoteProcessGroupStatusBean) ControllerServiceStatus(org.apache.nifi.minifi.commons.status.controllerservice.ControllerServiceStatus) SystemDiagnosticsStatus(org.apache.nifi.minifi.commons.status.system.SystemDiagnosticsStatus)

Aggregations

ConnectionStatus (org.apache.nifi.controller.status.ConnectionStatus)25 ArrayList (java.util.ArrayList)15 ProcessGroupStatus (org.apache.nifi.controller.status.ProcessGroupStatus)11 ProcessorStatus (org.apache.nifi.controller.status.ProcessorStatus)11 RemoteProcessGroupStatus (org.apache.nifi.controller.status.RemoteProcessGroupStatus)9 PortStatus (org.apache.nifi.controller.status.PortStatus)8 Referenceable (org.apache.atlas.typesystem.Referenceable)6 Connection (org.apache.nifi.connectable.Connection)5 ProcessGroup (org.apache.nifi.groups.ProcessGroup)5 RemoteProcessGroup (org.apache.nifi.groups.RemoteProcessGroup)5 List (java.util.List)4 DataSetRefs (org.apache.nifi.atlas.provenance.DataSetRefs)4 ProvenanceEventRecord (org.apache.nifi.provenance.ProvenanceEventRecord)4 Collection (java.util.Collection)3 Collections (java.util.Collections)3 HashMap (java.util.HashMap)3 Map (java.util.Map)3 Set (java.util.Set)3 Collectors (java.util.stream.Collectors)3 AnalysisContext (org.apache.nifi.atlas.provenance.AnalysisContext)3