<?xml version="1.0" encoding="UTF-8"?>
<!--
  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.
-->
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>org.apache.nifi</groupId>
        <artifactId>nifi-framework</artifactId>
        <version>1.20.0</version>
    </parent>
    <artifactId>nifi-resources</artifactId>
    <packaging>pom</packaging>
    <description>holds common resources used to build installers</description>
    <properties>
        <!--Wrapper Properties -->
        <nifi.jvm.heap.init>512m</nifi.jvm.heap.init>
        <nifi.jvm.heap.max>512m</nifi.jvm.heap.max>
        <nifi.run.as />
        <!-- nifi.properties: core properties -->
        <nifi.flowcontroller.autoResumeState>true</nifi.flowcontroller.autoResumeState>
        <nifi.flowcontroller.graceful.shutdown.period>10 sec</nifi.flowcontroller.graceful.shutdown.period>
        <nifi.flowservice.writedelay.interval>500 ms</nifi.flowservice.writedelay.interval>
        <nifi.administrative.yield.duration>30 sec</nifi.administrative.yield.duration>
        <nifi.bored.yield.duration>10 millis</nifi.bored.yield.duration>
        <nifi.queue.backpressure.count>10000</nifi.queue.backpressure.count>
        <nifi.queue.backpressure.size>1 GB</nifi.queue.backpressure.size>

        <nifi.flow.configuration.file>./conf/flow.xml.gz</nifi.flow.configuration.file>
        <nifi.flow.configuration.json.file>./conf/flow.json.gz</nifi.flow.configuration.json.file>
        <nifi.flow.configuration.archive.enabled>true</nifi.flow.configuration.archive.enabled>
        <nifi.flow.configuration.archive.dir>./conf/archive/</nifi.flow.configuration.archive.dir>
        <nifi.flow.configuration.archive.max.time>30 days</nifi.flow.configuration.archive.max.time>
        <nifi.flow.configuration.archive.max.storage>500 MB</nifi.flow.configuration.archive.max.storage>
        <nifi.login.identity.provider.configuration.file>./conf/login-identity-providers.xml</nifi.login.identity.provider.configuration.file>
        <nifi.authorizer.configuration.file>./conf/authorizers.xml</nifi.authorizer.configuration.file>
        <nifi.templates.directory>./conf/templates</nifi.templates.directory>
        <nifi.database.directory>./database_repository</nifi.database.directory>

        <nifi.state.management.configuration.file>./conf/state-management.xml</nifi.state.management.configuration.file>
        <nifi.state.management.embedded.zookeeper.start>false</nifi.state.management.embedded.zookeeper.start>
        <nifi.state.management.embedded.zookeeper.properties>./conf/zookeeper.properties</nifi.state.management.embedded.zookeeper.properties>
        <nifi.state.management.provider.local>local-provider</nifi.state.management.provider.local>
        <nifi.state.management.provider.cluster>zk-provider</nifi.state.management.provider.cluster>

        <nifi.flowfile.repository.implementation>org.apache.nifi.controller.repository.WriteAheadFlowFileRepository</nifi.flowfile.repository.implementation>
        <nifi.flowfile.repository.wal.implementation>org.apache.nifi.wali.SequentialAccessWriteAheadLog</nifi.flowfile.repository.wal.implementation>
        <nifi.flowfile.repository.directory>./flowfile_repository</nifi.flowfile.repository.directory>
        <nifi.flowfile.repository.checkpoint.interval>20 secs</nifi.flowfile.repository.checkpoint.interval>
        <nifi.flowfile.repository.always.sync>false</nifi.flowfile.repository.always.sync>
        <nifi.flowfile.repository.retain.orphaned.flowfiles>true</nifi.flowfile.repository.retain.orphaned.flowfiles>
        <nifi.swap.manager.implementation>org.apache.nifi.controller.FileSystemSwapManager</nifi.swap.manager.implementation>
        <nifi.queue.swap.threshold>20000</nifi.queue.swap.threshold>

        <nifi.content.repository.implementation>org.apache.nifi.controller.repository.FileSystemRepository</nifi.content.repository.implementation>
        <nifi.content.claim.max.appendable.size>50 KB</nifi.content.claim.max.appendable.size>
        <nifi.content.repository.directory.default>./content_repository</nifi.content.repository.directory.default>
        <nifi.content.repository.archive.max.retention.period>7 days</nifi.content.repository.archive.max.retention.period>
        <nifi.content.repository.archive.max.usage.percentage>50%</nifi.content.repository.archive.max.usage.percentage>
        <nifi.content.repository.archive.enabled>true</nifi.content.repository.archive.enabled>
        <nifi.content.repository.always.sync>false</nifi.content.repository.always.sync>
        <nifi.content.viewer.url>../nifi-content-viewer/</nifi.content.viewer.url>

        <nifi.restore.directory />
        <nifi.ui.banner.text />
        <nifi.ui.autorefresh.interval>30 sec</nifi.ui.autorefresh.interval>
        <nifi.nar.library.directory>./lib</nifi.nar.library.directory>
        <nifi.nar.library.autoload.directory>./extensions</nifi.nar.library.autoload.directory>
        <nifi.nar.working.directory>./work/nar/</nifi.nar.working.directory>
        <nifi.documentation.working.directory>./work/docs/components</nifi.documentation.working.directory>
        <nifi.nar.unpack.uber.jar>false</nifi.nar.unpack.uber.jar>

        <nifi.sensitive.props.key.protected />
        <nifi.sensitive.props.algorithm>NIFI_PBKDF2_AES_GCM_256</nifi.sensitive.props.algorithm>
        <nifi.sensitive.props.additional.keys />

        <nifi.h2.url.append>;LOCK_TIMEOUT=25000;WRITE_DELAY=0;AUTO_SERVER=FALSE</nifi.h2.url.append>

        <nifi.remote.input.socket.port>9990</nifi.remote.input.socket.port>
        <nifi.remote.input.secure>true</nifi.remote.input.secure>

        <!-- persistent provenance repository properties -->
        <nifi.provenance.repository.implementation>org.apache.nifi.provenance.WriteAheadProvenanceRepository</nifi.provenance.repository.implementation>
        <nifi.provenance.repository.directory.default>./provenance_repository</nifi.provenance.repository.directory.default>
        <nifi.provenance.repository.max.storage.time>30 days</nifi.provenance.repository.max.storage.time>
        <nifi.provenance.repository.max.storage.size>10 GB</nifi.provenance.repository.max.storage.size>
        <nifi.provenance.repository.rollover.time>10 mins</nifi.provenance.repository.rollover.time>
        <nifi.provenance.repository.rollover.size>100 MB</nifi.provenance.repository.rollover.size>
        <nifi.provenance.repository.query.threads>2</nifi.provenance.repository.query.threads>
        <nifi.provenance.repository.index.threads>2</nifi.provenance.repository.index.threads>
        <nifi.provenance.repository.compress.on.rollover>true</nifi.provenance.repository.compress.on.rollover>
        <nifi.provenance.repository.indexed.fields>EventType, FlowFileUUID, Filename, ProcessorID, Relationship</nifi.provenance.repository.indexed.fields>
        <nifi.provenance.repository.indexed.attributes />
        <nifi.provenance.repository.index.shard.size>500 MB</nifi.provenance.repository.index.shard.size>
        <nifi.provenance.repository.always.sync>false</nifi.provenance.repository.always.sync>
        <nifi.provenance.repository.max.attribute.length>65536</nifi.provenance.repository.max.attribute.length>
        <nifi.provenance.repository.concurrent.merge.threads>2</nifi.provenance.repository.concurrent.merge.threads>

        <!-- volatile provenance repository properties -->
        <nifi.provenance.repository.buffer.size>100000</nifi.provenance.repository.buffer.size>

        <!-- Component status repository properties -->
        <nifi.components.status.repository.implementation>org.apache.nifi.controller.status.history.VolatileComponentStatusRepository</nifi.components.status.repository.implementation>
        <nifi.components.status.repository.buffer.size>1440</nifi.components.status.repository.buffer.size>
        <nifi.components.status.snapshot.frequency>1 min</nifi.components.status.snapshot.frequency>

        <!-- QuestDb status repository properties -->
        <nifi.status.repository.questdb.persist.node.days>14</nifi.status.repository.questdb.persist.node.days>
        <nifi.status.repository.questdb.persist.component.days>3</nifi.status.repository.questdb.persist.component.days>
        <nifi.status.repository.questdb.persist.location>./status_repository</nifi.status.repository.questdb.persist.location>

        <!-- nifi.properties: web properties -->
        <nifi.web.http.host />
        <nifi.web.http.port />
        <nifi.web.http.network.interface.default />
        <nifi.web.https.host>127.0.0.1</nifi.web.https.host>
        <nifi.web.https.port>8443</nifi.web.https.port>
        <nifi.web.https.network.interface.default />
        <nifi.web.https.application.protocols>http/1.1</nifi.web.https.application.protocols>
        <nifi.jetty.work.dir>./work/jetty</nifi.jetty.work.dir>
        <nifi.web.jetty.threads>200</nifi.web.jetty.threads>
        <nifi.web.max.header.size>16 KB</nifi.web.max.header.size>
        <nifi.web.proxy.context.path />
        <nifi.web.proxy.host />
        <nifi.web.max.content.size />
        <nifi.web.max.requests.per.second>30000</nifi.web.max.requests.per.second>
        <nifi.web.max.access.token.requests.per.second>25</nifi.web.max.access.token.requests.per.second>
        <nifi.web.request.timeout>60 secs</nifi.web.request.timeout>
        <nifi.web.request.ip.whitelist />
        <nifi.web.should.send.server.version>true</nifi.web.should.send.server.version>
        <nifi.web.request.log.format>%{client}a - %u %t "%r" %s %O "%{Referer}i" "%{User-Agent}i"</nifi.web.request.log.format>
        <!-- nifi.properties: security properties -->
        <nifi.security.autoreload.enabled>false</nifi.security.autoreload.enabled>
        <nifi.security.autoreload.interval>10 secs</nifi.security.autoreload.interval>
        <nifi.security.keystore>./conf/keystore.p12</nifi.security.keystore>
        <nifi.security.keystoreType>PKCS12</nifi.security.keystoreType>
        <nifi.security.keystorePasswd />
        <nifi.security.keyPasswd />
        <nifi.security.truststore>./conf/truststore.p12</nifi.security.truststore>
        <nifi.security.truststoreType>PKCS12</nifi.security.truststoreType>
        <nifi.security.truststorePasswd />
        <nifi.security.user.authorizer>single-user-authorizer</nifi.security.user.authorizer>
        <nifi.security.allow.anonymous.authentication>false</nifi.security.allow.anonymous.authentication>
        <nifi.security.user.login.identity.provider>single-user-provider</nifi.security.user.login.identity.provider>
        <nifi.security.user.jws.key.rotation.period>PT1H</nifi.security.user.jws.key.rotation.period>
        <nifi.security.x509.principal.extractor />
        <nifi.security.ocsp.responder.url />
        <nifi.security.ocsp.responder.certificate />

        <!-- nifi.properties: listener bootstrap -->
        <nifi.listener.bootstrap.port>0</nifi.listener.bootstrap.port>

        <!-- nifi.properties: openid connect -->
        <nifi.security.user.oidc.discovery.url />
        <nifi.security.user.oidc.connect.timeout>5 secs</nifi.security.user.oidc.connect.timeout>
        <nifi.security.user.oidc.read.timeout>5 secs</nifi.security.user.oidc.read.timeout>
        <nifi.security.user.oidc.client.id />
        <nifi.security.user.oidc.client.secret />
        <nifi.security.user.oidc.preferred.jwsalgorithm />
        <nifi.security.user.oidc.additional.scopes />
        <nifi.security.user.oidc.claim.identifying.user />
        <nifi.security.user.oidc.fallback.claims.identifying.user />
        <nifi.security.user.oidc.claim.groups>groups</nifi.security.user.oidc.claim.groups>
        <nifi.security.user.oidc.truststore.strategy>JDK</nifi.security.user.oidc.truststore.strategy>

        <!-- nifi.properties: apache knox -->
        <nifi.security.user.knox.url />
        <nifi.security.user.knox.publicKey />
        <nifi.security.user.knox.cookieName>hadoop-jwt</nifi.security.user.knox.cookieName>
        <nifi.security.user.knox.audiences />

        <!-- nifi.properties: saml -->
        <nifi.security.user.saml.idp.metadata.url />
        <nifi.security.user.saml.sp.entity.id />
        <nifi.security.user.saml.identity.attribute.name />
        <nifi.security.user.saml.group.attribute.name />
        <nifi.security.user.saml.request.signing.enabled>false</nifi.security.user.saml.request.signing.enabled>
        <nifi.security.user.saml.want.assertions.signed>true</nifi.security.user.saml.want.assertions.signed>
        <nifi.security.user.saml.signature.algorithm>http://www.w3.org/2001/04/xmldsig-more#rsa-sha256</nifi.security.user.saml.signature.algorithm>
        <nifi.security.user.saml.authentication.expiration>12 hours</nifi.security.user.saml.authentication.expiration>
        <nifi.security.user.saml.single.logout.enabled>false</nifi.security.user.saml.single.logout.enabled>
        <nifi.security.user.saml.http.client.truststore.strategy>JDK</nifi.security.user.saml.http.client.truststore.strategy>
        <nifi.security.user.saml.http.client.read.timeout>30 secs</nifi.security.user.saml.http.client.read.timeout>
        <nifi.security.user.saml.http.client.connect.timeout>30 secs</nifi.security.user.saml.http.client.connect.timeout>

        <!-- nifi.properties: cluster common properties (cluster manager and nodes must have same values) -->
        <nifi.cluster.protocol.heartbeat.interval>5 sec</nifi.cluster.protocol.heartbeat.interval>
        <nifi.cluster.protocol.heartbeat.missable.max>8</nifi.cluster.protocol.heartbeat.missable.max>
        <nifi.cluster.protocol.is.secure>false</nifi.cluster.protocol.is.secure>

        <!-- nifi.properties: cluster node properties (only configure for cluster nodes) -->
        <nifi.cluster.is.node>false</nifi.cluster.is.node>
        <nifi.cluster.node.address />
        <nifi.cluster.node.protocol.port />
        <nifi.cluster.node.protocol.max.threads>50</nifi.cluster.node.protocol.max.threads>
        <nifi.cluster.node.event.history.size>25</nifi.cluster.node.event.history.size>
        <nifi.cluster.node.connection.timeout>5 sec</nifi.cluster.node.connection.timeout>
        <nifi.cluster.node.read.timeout>5 sec</nifi.cluster.node.read.timeout>
        <nifi.cluster.node.max.concurrent.requests>100</nifi.cluster.node.max.concurrent.requests>
        <nifi.cluster.firewall.file />
        <nifi.cluster.flow.election.max.wait.time>5 mins</nifi.cluster.flow.election.max.wait.time>
        <nifi.cluster.flow.election.max.candidates />

        <!-- nifi.properties: cluster load balance properties -->
        <nifi.cluster.load.balance.host />
        <nifi.cluster.load.balance.port>6342</nifi.cluster.load.balance.port>
        <nifi.cluster.load.balance.connections.per.node>1</nifi.cluster.load.balance.connections.per.node>
        <nifi.cluster.load.balance.max.thread.count>8</nifi.cluster.load.balance.max.thread.count>
        <nifi.cluster.load.balance.comms.timeout>30 sec</nifi.cluster.load.balance.comms.timeout>

        <!--  nifi.properties: zookeeper properties -->
        <nifi.zookeeper.connect.string />
        <nifi.zookeeper.connect.timeout>10 secs</nifi.zookeeper.connect.timeout>
        <nifi.zookeeper.session.timeout>10 secs</nifi.zookeeper.session.timeout>
        <nifi.zookeeper.root.node>/nifi</nifi.zookeeper.root.node>
        <nifi.zookeeper.client.secure>false</nifi.zookeeper.client.secure>
        <nifi.zookeeper.jute.maxbuffer />
        <nifi.zookeeper.security.keystore />
        <nifi.zookeeper.security.keystoreType />
        <nifi.zookeeper.security.keystorePasswd />
        <nifi.zookeeper.security.truststore />
        <nifi.zookeeper.security.truststoreType />
        <nifi.zookeeper.security.truststorePasswd />
        <nifi.zookeeper.auth.type />
        <nifi.zookeeper.kerberos.removeHostFromPrincipal />
        <nifi.zookeeper.kerberos.removeRealmFromPrincipal />

        <!-- nifi.properties: kerberos properties -->
        <nifi.kerberos.krb5.file> </nifi.kerberos.krb5.file>
        <nifi.kerberos.service.principal />
        <nifi.kerberos.service.keytab.location />
        <nifi.kerberos.spnego.principal />
        <nifi.kerberos.spnego.keytab.location />
        <nifi.kerberos.spnego.authentication.expiration>12 hours</nifi.kerberos.spnego.authentication.expiration>

        <!-- nifi.properties: analytics properties -->
        <nifi.analytics.predict.enabled>false</nifi.analytics.predict.enabled>
        <nifi.analytics.predict.interval>3 mins</nifi.analytics.predict.interval>
        <nifi.analytics.query.interval>5 mins</nifi.analytics.query.interval>
        <nifi.analytics.connection.model.implementation>org.apache.nifi.controller.status.analytics.models.OrdinaryLeastSquares</nifi.analytics.connection.model.implementation>
        <nifi.analytics.connection.model.score.name>rSquared</nifi.analytics.connection.model.score.name>
        <nifi.analytics.connection.model.score.threshold>.90</nifi.analytics.connection.model.score.threshold>

        <!-- nifi.properties: runtime monitoring properties -->
        <nifi.monitor.long.running.task.schedule>1 min</nifi.monitor.long.running.task.schedule>
        <nifi.monitor.long.running.task.threshold>5 mins</nifi.monitor.long.running.task.threshold>

        <nifi.performance.tracking.percentage>0</nifi.performance.tracking.percentage>
    </properties>
    <build>
        <plugins>
            <plugin>
                <artifactId>maven-assembly-plugin</artifactId>
                <configuration>
                    <attach>true</attach>
                </configuration>
                <executions>
                    <execution>
                        <id>make shared resource</id>
                        <goals>
                            <goal>single</goal>
                        </goals>
                        <phase>package</phase>
                        <configuration>
                            <descriptors>
                                <descriptor>src/main/assembly/dependencies.xml</descriptor>
                            </descriptors>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>
</project>
