+ "emitted as its own FlowFile to the 'success' relationship.") @WritesAttributes({ @WritesAttribute(attribute = "amqp$appId", description = "The App ID field from the AMQP Message"), @WritesAttribute(attribute = "amqp$contentEncoding", description = "The Content Encoding reported by the AMQP Message"), @WritesAttribute(attribute = "amqp$contentType", description = "The Content Type reported by the AMQP Message"), @WritesAttribute(attribute = "amqp$headers", description = "The headers present on the AMQP Message"), @WritesAttribute(attribute = "amqp$deliveryMode", description = "The numeric indicator for the Message's Delivery Mode"), @WritesAttribute(attribute = "amqp$priority", description = "The Message priority"), @WritesAttribute(attribute = "amqp$correlationId", description = "The Message's Correlation ID"), @WritesAttribute(attribute = "amqp$replyTo", description = "The value of the Message's Reply-To field"), @WritesAttribute(attribute = "amqp$expiration", description = "The Message Expiration"), @WritesAttribute(attribute = "amqp$messageId", description = "The unique ID of the Message"), @WritesAttribute(attribute = "amqp$timestamp", description = "The timestamp of the Message, as the number of milliseconds since epoch"), @WritesAttribute(attribute = "amqp$type", description = "The type of message"), @WritesAttribute(attribute = "amqp$userId", description = "The ID of the user"), @WritesAttribute(attribute = "amqp$clusterId", description = "The ID of the AMQP Cluster"), }) public class ConsumeAMQP extends AbstractAMQPProcessor<AMQPConsumer> {
private void writeWritesAttribute(final WritesAttribute attribute) throws IOException { writeStartElement("attribute"); writeTextElement("name", attribute.attribute()); writeTextElement("description", attribute.description()); writeEndElement(); }
@CapabilityDescription("Fetches files from an FTP Server and creates FlowFiles from them") @WritesAttributes({ @WritesAttribute(attribute = "filename", description = "The filename is set to the name of the file on the remote server"), @WritesAttribute(attribute = "path", description = "The path is set to the path of the file's directory on the remote server. " + "For example, if the <Remote Path> property is set to /tmp, files picked up from /tmp will have the path attribute set " + "to /tmp. If the <Search Recursively> property is set to true and a file is picked up from /tmp/abc/1/2/3, then the path " + "attribute will be set to /tmp/abc/1/2/3"), @WritesAttribute(attribute = "file.lastModifiedTime", description = "The date and time that the source file was last modified"), @WritesAttribute(attribute = "file.lastAccessTime", description = "The date and time that the file was last accessed. May not work on " + "all file systems"), @WritesAttribute(attribute = "file.owner", description = "The numeric owner id of the source file"), @WritesAttribute(attribute = "file.group", description = "The numeric group id of the source file"), @WritesAttribute(attribute = "file.permissions", description = "The read/write/execute permissions of the source file"), @WritesAttribute(attribute = "absolute.path", description = "The full/absolute path from where a file was picked up. The current 'path' " + "attribute is still populated, but may be a relative path")}) @SeeAlso(PutFTP.class)
xmlStreamWriter.writeStartElement("tr"); writeSimpleElement(xmlStreamWriter, "td", defaultIfBlank(attribute.attribute(), "Not Specified")); defaultIfBlank(attribute.description(), "Not Specified")); xmlStreamWriter.writeEndElement();
@CapabilityDescription("Retrieves the contents of an S3 Object and writes it to the content of a FlowFile") @WritesAttributes({ @WritesAttribute(attribute = "s3.bucket", description = "The name of the S3 bucket"), @WritesAttribute(attribute = "path", description = "The path of the file"), @WritesAttribute(attribute = "absolute.path", description = "The path of the file"), @WritesAttribute(attribute = "filename", description = "The name of the file"), @WritesAttribute(attribute = "hash.value", description = "The MD5 sum of the file"), @WritesAttribute(attribute = "hash.algorithm", description = "MD5"), @WritesAttribute(attribute = "mime.type", description = "If S3 provides the content type/MIME type, this attribute will hold that file"), @WritesAttribute(attribute = "s3.etag", description = "The ETag that can be used to see if the file has changed"), @WritesAttribute(attribute = "s3.expirationTime", description = "If the file has an expiration date, this attribute will be set, containing the milliseconds since epoch in UTC time"), @WritesAttribute(attribute = "s3.expirationTimeRuleId", description = "The ID of the rule that dictates this object's expiration time"), @WritesAttribute(attribute = "s3.sseAlgorithm", description = "The server side encryption algorithm of the object"), @WritesAttribute(attribute = "s3.version", description = "The version of the S3 object"),}) public class FetchS3Object extends AbstractS3Processor {
+ "The FlowFile content must be JSON.") @WritesAttributes({ @WritesAttribute(attribute = "aws.lambda.result.function.error", description = "Function error message in result on posting message to AWS Lambda"), @WritesAttribute(attribute = "aws.lambda.result.status.code", description = "Status code in the result for the message when posting to AWS Lambda"), @WritesAttribute(attribute = "aws.lambda.result.payload", description = "Payload in the result from AWS Lambda"), @WritesAttribute(attribute = "aws.lambda.result.log", description = "Log in the result of the message posted to Lambda"), @WritesAttribute(attribute = "aws.lambda.exception.message", description = "Exception message on invoking from AWS Lambda"), @WritesAttribute(attribute = "aws.lambda.exception.cause", description = "Exception cause on invoking from AWS Lambda"), @WritesAttribute(attribute = "aws.lambda.exception.error.code", description = "Exception error code on invoking from AWS Lambda"), @WritesAttribute(attribute = "aws.lambda.exception.request.id", description = "Exception request id on invoking from AWS Lambda"), @WritesAttribute(attribute = "aws.lambda.exception.status.code", description = "Exception status code on invoking from AWS Lambda"), @WritesAttribute(attribute = "aws.lambda.exception.error.type", description = "Exception error type on invoking from AWS Lambda") }) public class PutLambda extends AbstractAWSLambdaProcessor {
@CapabilityDescription("Fetches files from an SFTP Server and creates FlowFiles from them") @WritesAttributes({ @WritesAttribute(attribute = "filename", description = "The filename is set to the name of the file on the remote server"), @WritesAttribute(attribute = "path", description = "The path is set to the path of the file's directory on the remote server. " + "For example, if the <Remote Path> property is set to /tmp, files picked up from /tmp will have the path attribute set " + "to /tmp. If the <Search Recursively> property is set to true and a file is picked up from /tmp/abc/1/2/3, then the path " + "attribute will be set to /tmp/abc/1/2/3"), @WritesAttribute(attribute = "file.lastModifiedTime", description = "The date and time that the source file was last modified"), @WritesAttribute(attribute = "file.owner", description = "The numeric owner id of the source file"), @WritesAttribute(attribute = "file.group", description = "The numeric group id of the source file"), @WritesAttribute(attribute = "file.permissions", description = "The read/write/execute permissions of the source file"), @WritesAttribute(attribute = "absolute.path", description = "The full/absolute path from where a file was picked up. The current 'path' " + "attribute is still populated, but may be a relative path")}) @SeeAlso(PutSFTP.class)
" as WebSocket client configured with this processor receives messages from remote WebSocket server.") @WritesAttributes({ @WritesAttribute(attribute = ATTR_WS_CS_ID, description = "WebSocket Controller Service id."), @WritesAttribute(attribute = ATTR_WS_SESSION_ID, description = "Established WebSocket session id."), @WritesAttribute(attribute = ATTR_WS_ENDPOINT_ID, description = "WebSocket endpoint id."), @WritesAttribute(attribute = ATTR_WS_LOCAL_ADDRESS, description = "WebSocket client address."), @WritesAttribute(attribute = ATTR_WS_REMOTE_ADDRESS, description = "WebSocket server address."), @WritesAttribute(attribute = ATTR_WS_MESSAGE_TYPE, description = "TEXT or BINARY."), }) public class ConnectWebSocket extends AbstractWebSocketGatewayProcessor {
+ "will take the form X.geo.<fieldName>") @WritesAttributes({ @WritesAttribute(attribute = "X.geo.lookup.micros", description = "The number of microseconds that the geo lookup took"), @WritesAttribute(attribute = "X.geo.city", description = "The city identified for the IP address"), @WritesAttribute(attribute = "X.geo.accuracy", description = "The accuracy radius if provided by the database (in Kilometers)"), @WritesAttribute(attribute = "X.geo.latitude", description = "The latitude identified for this IP address"), @WritesAttribute(attribute = "X.geo.longitude", description = "The longitude identified for this IP address"), @WritesAttribute(attribute = "X.geo.subdivision.N", description = "Each subdivision that is identified for this IP address is added with a one-up number appended to the attribute name, starting with 0"), @WritesAttribute(attribute = "X.geo.subdivision.isocode.N", description = "The ISO code for the subdivision that is identified by X.geo.subdivision.N"), @WritesAttribute(attribute = "X.geo.country", description = "The country identified for this IP address"), @WritesAttribute(attribute = "X.geo.country.isocode", description = "The ISO Code for the country identified"), @WritesAttribute(attribute = "X.geo.postalcode", description = "The postal code for the country identified"),}) public class GeoEnrichIP extends AbstractEnrichIP {
+ "a FlowFile and transitioning it to 'success' relationship. JMS attributes such as headers and properties will be copied as FlowFile attributes.") @WritesAttributes({ @WritesAttribute(attribute = JmsHeaders.DELIVERY_MODE, description = "The JMSDeliveryMode from the message header."), @WritesAttribute(attribute = JmsHeaders.EXPIRATION, description = "The JMSExpiration from the message header."), @WritesAttribute(attribute = JmsHeaders.PRIORITY, description = "The JMSPriority from the message header."), @WritesAttribute(attribute = JmsHeaders.REDELIVERED, description = "The JMSRedelivered from the message header."), @WritesAttribute(attribute = JmsHeaders.TIMESTAMP, description = "The JMSTimestamp from the message header."), @WritesAttribute(attribute = JmsHeaders.CORRELATION_ID, description = "The JMSCorrelationID from the message header."), @WritesAttribute(attribute = JmsHeaders.MESSAGE_ID, description = "The JMSMessageID from the message header."), @WritesAttribute(attribute = JmsHeaders.TYPE, description = "The JMSType from the message header."), @WritesAttribute(attribute = JmsHeaders.REPLY_TO, description = "The JMSReplyTo from the message header."), @WritesAttribute(attribute = JmsHeaders.DESTINATION, description = "The JMSDestination from the message header."), @WritesAttribute(attribute = "other attributes", description = "Each message property is written to an attribute.") }) @SeeAlso(value = { PublishJMS.class, JMSConnectionFactoryProvider.class })
@SeeAlso({FetchSFTP.class, GetSFTP.class, PutSFTP.class}) @WritesAttributes({ @WritesAttribute(attribute = "sftp.remote.host", description = "The hostname of the SFTP Server"), @WritesAttribute(attribute = "sftp.remote.port", description = "The port that was connected to on the SFTP Server"), @WritesAttribute(attribute = "sftp.listing.user", description = "The username of the user that performed the SFTP Listing"), @WritesAttribute(attribute = ListFile.FILE_OWNER_ATTRIBUTE, description = "The numeric owner id of the source file"), @WritesAttribute(attribute = ListFile.FILE_GROUP_ATTRIBUTE, description = "The numeric group id of the source file"), @WritesAttribute(attribute = ListFile.FILE_PERMISSIONS_ATTRIBUTE, description = "The read/write/execute permissions of the source file"), @WritesAttribute(attribute = ListFile.FILE_SIZE_ATTRIBUTE, description = "The number of bytes in the source file"), @WritesAttribute(attribute = ListFile.FILE_LAST_MODIFY_TIME_ATTRIBUTE, description = "The timestamp of when the file in the filesystem was" + "last modified as 'yyyy-MM-dd'T'HH:mm:ssZ'"), @WritesAttribute(attribute = "filename", description = "The name of the file on the SFTP Server"), @WritesAttribute(attribute = "path", description = "The fully qualified name of the directory on the SFTP Server from which the file was pulled"), }) @Stateful(scopes = {Scope.CLUSTER}, description = "After performing a listing of files, the timestamp of the newest file is stored. "
@SeeAlso({GetSFTP.class, PutSFTP.class, GetFTP.class, PutFTP.class}) @WritesAttributes({ @WritesAttribute(attribute = "ftp.remote.host", description = "The hostname or IP address from which the file was pulled"), @WritesAttribute(attribute = "ftp.remote.port", description = "The port that was used to communicate with the remote FTP server"), @WritesAttribute(attribute = "ftp.remote.filename", description = "The name of the remote file that was pulled"), @WritesAttribute(attribute = "filename", description = "The filename is updated to point to the filename fo the remote file"), @WritesAttribute(attribute = "path", description = "If the Remote File contains a directory name, that directory name will be added to the FlowFile using the 'path' attribute") }) public class FetchFTP extends FetchFileTransfer {
@CapabilityDescription("Puts content into an Azure Storage Blob") @InputRequirement(Requirement.INPUT_REQUIRED) @WritesAttributes({ @WritesAttribute(attribute = "azure.container", description = "The name of the Azure container"), @WritesAttribute(attribute = "azure.blobname", description = "The name of the Azure blob"), @WritesAttribute(attribute = "azure.primaryUri", description = "Primary location for blob content"), @WritesAttribute(attribute = "azure.etag", description = "Etag for the Azure blob"), @WritesAttribute(attribute = "azure.length", description = "Length of the blob"), @WritesAttribute(attribute = "azure.timestamp", description = "The timestamp in Azure for the blob")}) public class PutAzureBlobStorage extends AbstractAzureBlobProcessor {
@SeeAlso({FetchFTP.class, GetFTP.class, PutFTP.class}) @WritesAttributes({ @WritesAttribute(attribute = "ftp.remote.host", description = "The hostname of the FTP Server"), @WritesAttribute(attribute = "ftp.remote.port", description = "The port that was connected to on the FTP Server"), @WritesAttribute(attribute = "ftp.listing.user", description = "The username of the user that performed the FTP Listing"), @WritesAttribute(attribute = ListFile.FILE_OWNER_ATTRIBUTE, description = "The numeric owner id of the source file"), @WritesAttribute(attribute = ListFile.FILE_GROUP_ATTRIBUTE, description = "The numeric group id of the source file"), @WritesAttribute(attribute = ListFile.FILE_PERMISSIONS_ATTRIBUTE, description = "The read/write/execute permissions of the source file"), @WritesAttribute(attribute = ListFile.FILE_SIZE_ATTRIBUTE, description = "The number of bytes in the source file"), @WritesAttribute(attribute = ListFile.FILE_LAST_MODIFY_TIME_ATTRIBUTE, description = "The timestamp of when the file in the filesystem was" + "last modified as 'yyyy-MM-dd'T'HH:mm:ssZ'"), @WritesAttribute(attribute = "filename", description = "The name of the file on the SFTP Server"), @WritesAttribute(attribute = "path", description = "The fully qualified name of the directory on the SFTP Server from which the file was pulled"), }) @Stateful(scopes = {Scope.CLUSTER}, description = "After performing a listing of files, the timestamp of the newest file is stored. "
" as the WebSocket server configured with this processor receives client requests") @WritesAttributes({ @WritesAttribute(attribute = ATTR_WS_CS_ID, description = "WebSocket Controller Service id."), @WritesAttribute(attribute = ATTR_WS_SESSION_ID, description = "Established WebSocket session id."), @WritesAttribute(attribute = ATTR_WS_ENDPOINT_ID, description = "WebSocket endpoint id."), @WritesAttribute(attribute = ATTR_WS_LOCAL_ADDRESS, description = "WebSocket server address."), @WritesAttribute(attribute = ATTR_WS_REMOTE_ADDRESS, description = "WebSocket client address."), @WritesAttribute(attribute = ATTR_WS_MESSAGE_TYPE, description = "TEXT or BINARY."), }) public class ListenWebSocket extends AbstractWebSocketGatewayProcessor {
@SeeAlso({GetSFTP.class, PutSFTP.class, GetFTP.class, PutFTP.class}) @WritesAttributes({ @WritesAttribute(attribute = "sftp.remote.host", description = "The hostname or IP address from which the file was pulled"), @WritesAttribute(attribute = "sftp.remote.port", description = "The port that was used to communicate with the remote SFTP server"), @WritesAttribute(attribute = "sftp.remote.filename", description = "The name of the remote file that was pulled"), @WritesAttribute(attribute = "filename", description = "The filename is updated to point to the filename fo the remote file"), @WritesAttribute(attribute = "path", description = "If the Remote File contains a directory name, that directory name will be added to the FlowFile using the 'path' attribute") }) public class FetchSFTP extends FetchFileTransfer {
"does not follow the spec closely, with regards to using '-' for missing header entries for example, those logs " + "will fail with this parser, where they would not fail with ParseSyslog.") @WritesAttributes({@WritesAttribute(attribute = "syslog.priority", description = "The priority of the Syslog message."), @WritesAttribute(attribute = "syslog.severity", description = "The severity of the Syslog message derived from the priority."), @WritesAttribute(attribute = "syslog.facility", description = "The facility of the Syslog message derived from the priority."), @WritesAttribute(attribute = "syslog.version", description = "The optional version from the Syslog message."), @WritesAttribute(attribute = "syslog.timestamp", description = "The timestamp of the Syslog message."), @WritesAttribute(attribute = "syslog.hostname", description = "The hostname or IP address of the Syslog message."), @WritesAttribute(attribute = "syslog.appname", description = "The appname of the Syslog message."), @WritesAttribute(attribute = "syslog.procid", description = "The procid of the Syslog message."), @WritesAttribute(attribute = "syslog.messageid", description = "The messageid the Syslog message."), @WritesAttribute(attribute = "syslog.structuredData", description = "Multiple entries per structuredData of the Syslog message."), @WritesAttribute(attribute = "syslog.sender", description = "The hostname of the Syslog server that sent the message."), @WritesAttribute(attribute = "syslog.body", description = "The body of the Syslog message, everything after the hostname.")}) @SeeAlso({ListenSyslog.class, ParseSyslog.class, PutSyslog.class}) public class ParseSyslog5424 extends AbstractProcessor {
+ " The request requires all the primary keys for the operation (hash or hash and range key)") @WritesAttributes({ @WritesAttribute(attribute = AbstractDynamoDBProcessor.DYNAMODB_KEY_ERROR_UNPROCESSED, description = "Dynamo db unprocessed keys"), @WritesAttribute(attribute = AbstractDynamoDBProcessor.DYNAMODB_RANGE_KEY_VALUE_ERROR, description = "Dynamod db range key error"), @WritesAttribute(attribute = AbstractDynamoDBProcessor.DYNAMODB_KEY_ERROR_NOT_FOUND, description = "Dynamo db key not found"), @WritesAttribute(attribute = AbstractDynamoDBProcessor.DYNAMODB_ERROR_EXCEPTION_MESSAGE, description = "Dynamo db exception message"), @WritesAttribute(attribute = AbstractDynamoDBProcessor.DYNAMODB_ERROR_CODE, description = "Dynamo db error code"), @WritesAttribute(attribute = AbstractDynamoDBProcessor.DYNAMODB_ERROR_MESSAGE, description = "Dynamo db error message"), @WritesAttribute(attribute = AbstractDynamoDBProcessor.DYNAMODB_ERROR_TYPE, description = "Dynamo db error type"), @WritesAttribute(attribute = AbstractDynamoDBProcessor.DYNAMODB_ERROR_SERVICE, description = "Dynamo db error service"), @WritesAttribute(attribute = AbstractDynamoDBProcessor.DYNAMODB_ERROR_RETRYABLE, description = "Dynamo db error is retryable"), @WritesAttribute(attribute = AbstractDynamoDBProcessor.DYNAMODB_ERROR_REQUEST_ID, description = "Dynamo db error request id"), @WritesAttribute(attribute = AbstractDynamoDBProcessor.DYNAMODB_ERROR_STATUS_CODE, description = "Dynamo db status code") }) @ReadsAttributes({
}) @WritesAttributes({ @WritesAttribute(attribute = "executesql.row.count", description = "Contains the number of rows returned in the select query"), @WritesAttribute(attribute = "executesql.query.duration", description = "Combined duration of the query execution time and fetch time in milliseconds"), @WritesAttribute(attribute = "executesql.query.executiontime", description = "Duration of the query execution time in milliseconds"), @WritesAttribute(attribute = "executesql.query.fetchtime", description = "Duration of the result set fetch time in milliseconds"), @WritesAttribute(attribute = "executesql.resultset.index", description = "Assuming multiple result sets are returned, " + "the zero based index of this result set."), @WritesAttribute(attribute = "executesql.error.message", description = "If processing an incoming flow file causes " + "an Exception, the Flow File is routed to failure and this attribute is set to the exception message."), @WritesAttribute(attribute = "fragment.identifier", description = "If 'Max Rows Per Flow File' is set then all FlowFiles from the same query result set " + "will have the same value for the fragment.identifier attribute. This can then be used to correlate the results."), @WritesAttribute(attribute = "fragment.count", description = "If 'Max Rows Per Flow File' is set then this is the total number of " + "FlowFiles produced by a single ResultSet. This can be used in conjunction with the " + "fragment.identifier attribute in order to know how many FlowFiles belonged to the same incoming ResultSet. If Output Batch Size is set, then this " + "attribute will not be populated."), @WritesAttribute(attribute = "fragment.index", description = "If 'Max Rows Per Flow File' is set then the position of this FlowFile in the list of " + "outgoing FlowFiles that were all derived from the same result set FlowFile. This can be " + "used in conjunction with the fragment.identifier attribute to know which FlowFiles originated from the same query result set and in what order " + "FlowFiles were produced"), @WritesAttribute(attribute = "mime.type", description = "Sets the mime.type attribute to the MIME Type specified by the Record Writer."), @WritesAttribute(attribute = "record.count", description = "The number of records output by the Record Writer.") }) public class ExecuteSQLRecord extends AbstractExecuteSQL {
+ "A Json Document ('Map') attribute of the DynamoDB item is read into the content of the FlowFile.") @WritesAttributes({ @WritesAttribute(attribute = AbstractDynamoDBProcessor.DYNAMODB_KEY_ERROR_UNPROCESSED, description = "Dynamo db unprocessed keys"), @WritesAttribute(attribute = AbstractDynamoDBProcessor.DYNAMODB_RANGE_KEY_VALUE_ERROR, description = "Dynamod db range key error"), @WritesAttribute(attribute = AbstractDynamoDBProcessor.DYNAMODB_KEY_ERROR_NOT_FOUND, description = "Dynamo db key not found"), @WritesAttribute(attribute = AbstractDynamoDBProcessor.DYNAMODB_ERROR_EXCEPTION_MESSAGE, description = "Dynamo db exception message"), @WritesAttribute(attribute = AbstractDynamoDBProcessor.DYNAMODB_ERROR_CODE, description = "Dynamo db error code"), @WritesAttribute(attribute = AbstractDynamoDBProcessor.DYNAMODB_ERROR_MESSAGE, description = "Dynamo db error message"), @WritesAttribute(attribute = AbstractDynamoDBProcessor.DYNAMODB_ERROR_TYPE, description = "Dynamo db error type"), @WritesAttribute(attribute = AbstractDynamoDBProcessor.DYNAMODB_ERROR_SERVICE, description = "Dynamo db error service"), @WritesAttribute(attribute = AbstractDynamoDBProcessor.DYNAMODB_ERROR_RETRYABLE, description = "Dynamo db error is retryable"), @WritesAttribute(attribute = AbstractDynamoDBProcessor.DYNAMODB_ERROR_REQUEST_ID, description = "Dynamo db error request id"), @WritesAttribute(attribute = AbstractDynamoDBProcessor.DYNAMODB_ERROR_STATUS_CODE, description = "Dynamo db status code") }) @ReadsAttributes({