Search in sources :

Example 26 with RemoteGroupPort

use of org.apache.nifi.remote.RemoteGroupPort in project nifi by apache.

the class StandardProcessGroup method findRemoteGroupPort.

private static RemoteGroupPort findRemoteGroupPort(final String identifier, final ProcessGroup group) {
    for (final RemoteProcessGroup remoteGroup : group.getRemoteProcessGroups()) {
        final RemoteGroupPort remoteInPort = remoteGroup.getInputPort(identifier);
        if (remoteInPort != null) {
            return remoteInPort;
        }
        final RemoteGroupPort remoteOutPort = remoteGroup.getOutputPort(identifier);
        if (remoteOutPort != null) {
            return remoteOutPort;
        }
    }
    for (final ProcessGroup childGroup : group.getProcessGroups()) {
        final RemoteGroupPort childGroupRemoteGroupPort = findRemoteGroupPort(identifier, childGroup);
        if (childGroupRemoteGroupPort != null) {
            return childGroupRemoteGroupPort;
        }
    }
    return null;
}
Also used : VersionedRemoteProcessGroup(org.apache.nifi.registry.flow.VersionedRemoteProcessGroup) VersionedRemoteGroupPort(org.apache.nifi.registry.flow.VersionedRemoteGroupPort) RemoteGroupPort(org.apache.nifi.remote.RemoteGroupPort) VersionedProcessGroup(org.apache.nifi.registry.flow.VersionedProcessGroup) VersionedRemoteProcessGroup(org.apache.nifi.registry.flow.VersionedRemoteProcessGroup)

Example 27 with RemoteGroupPort

use of org.apache.nifi.remote.RemoteGroupPort in project nifi by apache.

the class StandardFlowSerializer method addRemoteProcessGroup.

private void addRemoteProcessGroup(final Element parentElement, final RemoteProcessGroup remoteRef, final ScheduledStateLookup scheduledStateLookup) {
    final Document doc = parentElement.getOwnerDocument();
    final Element element = doc.createElement("remoteProcessGroup");
    parentElement.appendChild(element);
    addTextElement(element, "id", remoteRef.getIdentifier());
    addTextElement(element, "versionedComponentId", remoteRef.getVersionedComponentId());
    addTextElement(element, "name", remoteRef.getName());
    addPosition(element, remoteRef.getPosition());
    addTextElement(element, "comment", remoteRef.getComments());
    addTextElement(element, "url", remoteRef.getTargetUri());
    addTextElement(element, "urls", remoteRef.getTargetUris());
    addTextElement(element, "timeout", remoteRef.getCommunicationsTimeout());
    addTextElement(element, "yieldPeriod", remoteRef.getYieldDuration());
    addTextElement(element, "transmitting", String.valueOf(remoteRef.isTransmitting()));
    addTextElement(element, "transportProtocol", remoteRef.getTransportProtocol().name());
    addTextElement(element, "proxyHost", remoteRef.getProxyHost());
    if (remoteRef.getProxyPort() != null) {
        addTextElement(element, "proxyPort", remoteRef.getProxyPort());
    }
    addTextElement(element, "proxyUser", remoteRef.getProxyUser());
    if (!StringUtils.isEmpty(remoteRef.getProxyPassword())) {
        final String value = ENC_PREFIX + encryptor.encrypt(remoteRef.getProxyPassword()) + ENC_SUFFIX;
        addTextElement(element, "proxyPassword", value);
    }
    if (remoteRef.getNetworkInterface() != null) {
        addTextElement(element, "networkInterface", remoteRef.getNetworkInterface());
    }
    for (final RemoteGroupPort port : remoteRef.getInputPorts()) {
        if (port.hasIncomingConnection()) {
            addRemoteGroupPort(element, port, "inputPort", scheduledStateLookup);
        }
    }
    for (final RemoteGroupPort port : remoteRef.getOutputPorts()) {
        if (!port.getConnections().isEmpty()) {
            addRemoteGroupPort(element, port, "outputPort", scheduledStateLookup);
        }
    }
    parentElement.appendChild(element);
}
Also used : RemoteGroupPort(org.apache.nifi.remote.RemoteGroupPort) Element(org.w3c.dom.Element) Document(org.w3c.dom.Document)

Example 28 with RemoteGroupPort

use of org.apache.nifi.remote.RemoteGroupPort in project nifi by apache.

the class RemoteProcessGroupAuditor method auditUpdateProcessGroupPortConfiguration.

private RemoteGroupPort auditUpdateProcessGroupPortConfiguration(ProceedingJoinPoint proceedingJoinPoint, RemoteProcessGroupPortDTO remoteProcessGroupPortDto, RemoteProcessGroup remoteProcessGroup, RemoteGroupPort remoteProcessGroupPort) throws Throwable {
    final Map<String, Object> previousValues = ConfigurationRecorder.capturePreviousValues(PORT_CONFIG_RECORDERS, remoteProcessGroupPort);
    // perform the underlying operation
    final RemoteGroupPort updatedRemoteProcessGroupPort = (RemoteGroupPort) proceedingJoinPoint.proceed();
    // get the current user
    NiFiUser user = NiFiUserUtils.getNiFiUser();
    if (user != null) {
        final Collection<ActionDetails> details = new ArrayList<>();
        // see if any property has changed
        ConfigurationRecorder.checkConfigured(PORT_CONFIG_RECORDERS, remoteProcessGroupPortDto, updatedRemoteProcessGroupPort, previousValues, details);
        final Date timestamp = new Date();
        final Collection<Action> actions = new ArrayList<>();
        // create the remote process group details
        final FlowChangeRemoteProcessGroupDetails remoteProcessGroupDetails = createFlowChangeDetails(remoteProcessGroup);
        // save the actions if necessary
        for (ActionDetails detail : details) {
            // create a configure action for each updated property
            FlowChangeAction remoteProcessGroupAction = createFlowChangeAction(user, timestamp, remoteProcessGroup, remoteProcessGroupDetails);
            remoteProcessGroupAction.setOperation(Operation.Configure);
            remoteProcessGroupAction.setActionDetails(detail);
            actions.add(remoteProcessGroupAction);
        }
        // ensure there are actions to record
        if (!actions.isEmpty()) {
            // save the actions
            saveActions(actions, logger);
        }
    }
    return updatedRemoteProcessGroupPort;
}
Also used : FlowChangeAction(org.apache.nifi.action.FlowChangeAction) Action(org.apache.nifi.action.Action) NiFiUser(org.apache.nifi.authorization.user.NiFiUser) RemoteGroupPort(org.apache.nifi.remote.RemoteGroupPort) ArrayList(java.util.ArrayList) FlowChangeRemoteProcessGroupDetails(org.apache.nifi.action.component.details.FlowChangeRemoteProcessGroupDetails) Date(java.util.Date) ActionDetails(org.apache.nifi.action.details.ActionDetails) FlowChangeAction(org.apache.nifi.action.FlowChangeAction)

Example 29 with RemoteGroupPort

use of org.apache.nifi.remote.RemoteGroupPort in project nifi by apache.

the class StandardConnection method getSourceAuthorizable.

@Override
public Authorizable getSourceAuthorizable() {
    final Connectable sourceConnectable = getSource();
    final Authorizable sourceAuthorizable;
    // if the source is a remote group port, authorize according to the RPG
    if (sourceConnectable instanceof RemoteGroupPort) {
        sourceAuthorizable = ((RemoteGroupPort) sourceConnectable).getRemoteProcessGroup();
    } else {
        sourceAuthorizable = sourceConnectable;
    }
    return sourceAuthorizable;
}
Also used : RemoteGroupPort(org.apache.nifi.remote.RemoteGroupPort) Authorizable(org.apache.nifi.authorization.resource.Authorizable)

Example 30 with RemoteGroupPort

use of org.apache.nifi.remote.RemoteGroupPort in project nifi by apache.

the class FlowController method createRemoteDataAuthorizable.

@Override
public Authorizable createRemoteDataAuthorizable(String remoteGroupPortId) {
    final DataAuthorizable authorizable;
    final RemoteGroupPort remoteGroupPort = getRootGroup().findRemoteGroupPort(remoteGroupPortId);
    if (remoteGroupPort == null) {
        throw new ResourceNotFoundException("The component that generated this event is no longer part of the data flow.");
    } else {
        // authorizable for remote group ports should be the remote process group
        authorizable = new DataAuthorizable(remoteGroupPort.getRemoteProcessGroup());
    }
    return authorizable;
}
Also used : RemoteGroupPort(org.apache.nifi.remote.RemoteGroupPort) DataAuthorizable(org.apache.nifi.authorization.resource.DataAuthorizable) ResourceNotFoundException(org.apache.nifi.web.ResourceNotFoundException)

Aggregations

RemoteGroupPort (org.apache.nifi.remote.RemoteGroupPort)41 RemoteProcessGroup (org.apache.nifi.groups.RemoteProcessGroup)22 ProcessGroup (org.apache.nifi.groups.ProcessGroup)11 ArrayList (java.util.ArrayList)9 Connectable (org.apache.nifi.connectable.Connectable)9 Action (org.apache.nifi.action.Action)8 Port (org.apache.nifi.connectable.Port)8 Connection (org.apache.nifi.connectable.Connection)7 RootGroupPort (org.apache.nifi.remote.RootGroupPort)7 RemoteProcessGroupPortDTO (org.apache.nifi.web.api.dto.RemoteProcessGroupPortDTO)7 Test (org.junit.Test)7 HashSet (java.util.HashSet)6 Funnel (org.apache.nifi.connectable.Funnel)6 Authorizable (org.apache.nifi.authorization.resource.Authorizable)5 VersionedProcessGroup (org.apache.nifi.registry.flow.VersionedProcessGroup)5 ResourceNotFoundException (org.apache.nifi.web.ResourceNotFoundException)5 Collection (java.util.Collection)4 Position (org.apache.nifi.connectable.Position)4 Element (org.w3c.dom.Element)4 IOException (java.io.IOException)3