# 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.

Flow Controller:
    id: 471deef6-2a6e-4a7d-912a-81cc17e3a205
    name: MiNiFi Flow

Processors:
    - name: GetFile
      id: 471deef6-2a6e-4a7d-912a-81cc17e3a206
      class: org.apache.nifi.processors.standard.GenerateFlowFile
      max concurrent tasks: 1
      scheduling strategy: TIMER_DRIVEN
      scheduling period: 1 sec
      penalization period: 30 sec
      yield period: 10 sec
      run duration nanos: 0
      auto-terminated relationships list:
      Properties:
          Input Directory: /tmp/site2siteGetFile
          Keep Source File: true
    - name: GetFile
      id: 471deef6-2a6e-4a7d-912a-81cc17e3a205
      class: org.apache.nifi.processors.standard.LogAttribute
      max concurrent tasks: 1
      scheduling strategy: TIMER_DRIVEN
      scheduling period: 1 sec
      penalization period: 30 sec
      yield period: 10 sec
      run duration nanos: 0
      auto-terminated relationships list:
      Properties:


Connections:
    - name: GenerateFlowFileS2S
      id: 471deef6-2a6e-4a7d-912a-81cc17e3a207
      source id: 471deef6-2a6e-4a7d-912a-81cc17e3a206 
      source relationship name: success
      destination id: 471deef6-2a6e-4a7d-912a-81cc17e3a204
      max work queue size: 0
      max work queue data size: 1 MB
      flowfile expiration: 60 sec
      queue prioritizer class: org.apache.nifi.prioritizer.NewestFlowFileFirstPrioritizer
    - name: GenerateFlowFileS2S
      id: 471deef6-2a6e-4a7d-912a-81cc17e3a207
      source id: 471deef6-2a6e-4a7d-912a-81cc17e3a203 
      source relationship name: success
      destination id: 471deef6-2a6e-4a7d-912a-81cc17e3a205
      max work queue size: 0
      max work queue data size: 1 MB
      flowfile expiration: 60 sec
      queue prioritizer class: org.apache.nifi.prioritizer.NewestFlowFileFirstPrioritizer

Remote Processing Groups:
    - name: NiFi Flow
      id: 471deef6-2a6e-4a7d-912a-81cc17e3a208
      url: http://localhost:8099/nifi
      timeout: 30 secs
      yield period: 1 sec
      transport protocol: HTTP
      Input Ports:
          - id: 471deef6-2a6e-4a7d-912a-81cc17e3a204
            name: From Node A
            max concurrent tasks: 1
            use compression: false
            Properties: # Deviates from spec and will later be removed when this is autonegotiated
                Port UUID: 471deef6-2a6e-4a7d-912a-81cc17e3a204
                Port: 8082
                Host Name: 127.0.0.1
      Output Ports:
          - id: 471deef6-2a6e-4a7d-912a-81cc17e3a203
            name: To Node A
            max concurrent tasks: 1
            use compression: false
            Properties: # Deviates from spec and will later be removed when this is autonegotiated
                Port UUID: 471deef6-2a6e-4a7d-912a-81cc17e3a203
                Port: 8082
                Host Name: 127.0.0.1

