#
# 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:
    name: MiNiFi Flow
    id: 2438e3c8-015a-1000-79ca-83af40ec1990
Processors:
    - name: InvokeHTTP
      id: 2438e3c8-015a-1000-79ca-83af40ec1991
      class: org.apache.nifi.processors.standard.InvokeHTTP
      max concurrent tasks: 1
      scheduling strategy: TIMER_DRIVEN
      scheduling period: 1 sec
      penalization period: 30 sec
      yield period: 1 sec
      run duration nanos: 0
      auto-terminated relationships list:
          - no retry
          - response
          - failure
      Properties:
          HTTP Method: GET
          Remote URL: http://localhost:10003/geturl
    - name: LogAttribute
      id: 2438e3c8-015a-1000-79ca-83af40ec1992
      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: 1 sec
      run duration nanos: 0
      auto-terminated relationships list:
        - response
      Properties:
        Log Level: info
        Log Payload: true
Controller Services:
    - id: 94491a38-015a-1000-0000-000000000001
      name: C2UpdatePolicy
      class: UpdatePolicyControllerService
      Properties:
        Allow All Properties: true
        Disallowed Properties:
          - value: nifi.extension.path
          - value: nifi.python.processor.dir
Connections:
    - name: TransferFilesToRPG
      id: 2438e3c8-015a-1000-79ca-83af40ec1997
      source name: InvokeHTTP
      source id: 2438e3c8-015a-1000-79ca-83af40ec1991
      source relationship name: success
      destination name: LogAttribute
      destination id: 2438e3c8-015a-1000-79ca-83af40ec1992
      max work queue size: 0
      max work queue data size: 1 MB
      flowfile expiration: 60 sec
    - name: TransferFilesToRPG2
      id: 2438e3c8-015a-1000-79ca-83af40ec1917
      source name: LogAttribute
      source id: 2438e3c8-015a-1000-79ca-83af40ec1992
      destination name: LogAttribute
      destination id: 2438e3c8-015a-1000-79ca-83af40ec1992
      source relationship name: success
      max work queue size: 0
      max work queue data size: 1 MB
      flowfile expiration: 60 sec
    - name: RetryInvokeHTTP
      id: c8a96f1d-48cd-4ee3-8a2f-081c3e3c7bcd
      source name: InvokeHTTP
      source id: 2438e3c8-015a-1000-79ca-83af40ec1991
      source relationship names: retry
      destination name: InvokeHTTP
      destination id: 2438e3c8-015a-1000-79ca-83af40ec1991
      max work queue size: 0
      max work queue data size: 1 MB
      flowfile expiration: 60 seconds


Remote Processing Groups:

