/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.apache.nifi.groups; import org.apache.nifi.authorization.resource.ComponentAuthorizable; import org.apache.nifi.components.ValidationResult; import org.apache.nifi.connectable.Positionable; import org.apache.nifi.controller.exception.CommunicationsException; import org.apache.nifi.events.EventReporter; import org.apache.nifi.remote.RemoteGroupPort; import org.apache.nifi.remote.protocol.SiteToSiteTransportProtocol; import java.net.InetAddress; import java.util.Collection; import java.util.Date; import java.util.Set; import java.util.concurrent.TimeUnit; public interface RemoteProcessGroup extends ComponentAuthorizable, Positionable { @Override String getIdentifier(); String getTargetUri(); String getTargetUris(); ProcessGroup getProcessGroup(); void setProcessGroup(ProcessGroup group); String getComments(); void setComments(String comments); void shutdown(); /** * @return the name of this RemoteProcessGroup. The value returned will * never be null. If unable to communicate with the remote instance, the URI * of that instance may be returned instead */ String getName(); void setName(String name); void setInputPorts(Set<RemoteProcessGroupPortDescriptor> ports); void setOutputPorts(Set<RemoteProcessGroupPortDescriptor> ports); Set<RemoteGroupPort> getInputPorts(); Set<RemoteGroupPort> getOutputPorts(); RemoteGroupPort getInputPort(String id); RemoteGroupPort getOutputPort(String id); ProcessGroupCounts getCounts(); void refreshFlowContents() throws CommunicationsException; Date getLastRefreshTime(); void setYieldDuration(final String yieldDuration); String getYieldDuration(); /** * Sets the timeout using the TimePeriod format (e.g., "30 secs", "1 min") * * @param timePeriod new period * @throws IllegalArgumentException iae */ void setCommunicationsTimeout(String timePeriod) throws IllegalArgumentException; /** * @param timeUnit unit of time to report timeout * @return the communications timeout in terms of the given TimeUnit */ int getCommunicationsTimeout(TimeUnit timeUnit); /** * @return the user-configured String representation of the communications * timeout */ String getCommunicationsTimeout(); /** * @return Indicates whether or not the RemoteProcessGroup is currently scheduled to * transmit data */ boolean isTransmitting(); /** * Initiates communications between this instance and the remote instance. */ void startTransmitting(); /** * Immediately terminates communications between this instance and the * remote instance. */ void stopTransmitting(); /** * Initiates communications between this instance and the remote instance * only for the port specified. * * @param port port to start */ void startTransmitting(RemoteGroupPort port); /** * Immediately terminates communications between this instance and the * remote instance only for the port specified. * * @param port to stop */ void stopTransmitting(RemoteGroupPort port); /** * @return Indicates whether or not communications with this RemoteProcessGroup will * be secure (2-way authentication) * @throws org.apache.nifi.controller.exception.CommunicationsException ce */ boolean isSecure() throws CommunicationsException; /** * @return Indicates whether or not communications with this RemoteProcessGroup will * be secure (2-way authentication). Returns null if unknown. */ Boolean getSecureFlag(); /** * @return true if the target system has site to site enabled. Returns false * otherwise (they don't or they have not yet responded) */ boolean isSiteToSiteEnabled(); /** * @return a String indicating why we are not authorized to communicate with * the remote instance, or <code>null</code> if we are authorized */ String getAuthorizationIssue(); /** * Validates the current configuration, returning ValidationResults for any * invalid configuration parameter. * * @return Collection of validation result objects for any invalid findings * only. If the collection is empty then the component is valid. Guaranteed * non-null */ Collection<ValidationResult> validate(); /** * @return the {@link EventReporter} that can be used to report any notable * events */ EventReporter getEventReporter(); SiteToSiteTransportProtocol getTransportProtocol(); void setTransportProtocol(SiteToSiteTransportProtocol transportProtocol); String getProxyHost(); void setProxyHost(String proxyHost); Integer getProxyPort(); void setProxyPort(Integer proxyPort); String getProxyUser(); void setProxyUser(String proxyUser); String getProxyPassword(); void setProxyPassword(String proxyPassword); void setNetworkInterface(String interfaceName); String getNetworkInterface(); /** * Returns the InetAddress that the will this instance will bind to when communicating with a * remote NiFi instance, or <code>null</code> if no specific address has been specified */ InetAddress getLocalAddress(); /** * Initiates a task in the remote process group to re-initialize, as a * result of clustering changes * * @param isClustered whether or not this instance is now clustered */ void reinitialize(boolean isClustered); /** * Removes all non existent ports from this RemoteProcessGroup. */ void removeAllNonExistentPorts(); /** * Removes a port that no longer exists on the remote instance from this * RemoteProcessGroup * * @param port to remove */ void removeNonExistentPort(final RemoteGroupPort port); /** * Called whenever RemoteProcessGroup is removed from the flow, so that any * resources can be cleaned up appropriately. */ void onRemove(); void verifyCanDelete(); void verifyCanDelete(boolean ignoreConnections); void verifyCanStartTransmitting(); void verifyCanStopTransmitting(); void verifyCanUpdate(); }