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

####################
# Worker Settings
####################

workerId: standalone
workerHostname: localhost
workerPort: 6750
workerPortTls: 6751

# Configuration Store connection string
configurationStoreServers: localhost:2181
# ZooKeeper session timeout in milliseconds
zooKeeperSessionTimeoutMillis: 30000
# ZooKeeper operation timeout in seconds
zooKeeperOperationTimeoutSeconds: 30

################################
# Function package management
################################

numFunctionPackageReplicas: 1
downloadDirectory: download/pulsar_functions
# Classname of Pluggable JVM GC metrics logger that can log GC specific metrics
# jvmGCMetricsLoggerClassName: 

#################################################################
# Function metadata managment (assignment, scheduling, and etc)
#################################################################

# Configure the pulsar client used by function metadata management
#
# points 
pulsarServiceUrl: pulsar://localhost:6650
pulsarWebServiceUrl: http://localhost:8080
# the authentication plugin to be used by the pulsar client used in worker service
# clientAuthenticationPlugin:
# the authentication parameter to be used by the pulsar client used in worker service
# clientAuthenticationParameters:

# Bookie Authentication
#
# Authentication plugin to use when connecting to bookies
# bookkeeperClientAuthenticationPlugin:
# BookKeeper auth plugin implementatation specifics parameters name and values
# bookkeeperClientAuthenticationParametersName:
# Parameters for bookkeeper auth plugin
# bookkeeperClientAuthenticationParameters:


# pulsar topics used for function metadata management

pulsarFunctionsNamespace: public/functions
pulsarFunctionsCluster: standalone
functionMetadataTopicName: metadata
clusterCoordinationTopicName: coordinate
# Number of threads to use for HTTP requests processing. Default is set to 8
numHttpServerThreads: 8

# function assignment and scheduler

schedulerClassName: "org.apache.pulsar.functions.worker.scheduler.RoundRobinScheduler"
functionAssignmentTopicName: "assignments"
failureCheckFreqMs: 30000
rescheduleTimeoutMs: 60000
initialBrokerReconnectMaxRetries: 60
assignmentWriteMaxRetries: 60
instanceLivenessCheckFreqMs: 30000
# Frequency how often worker performs compaction on function-topics
topicCompactionFrequencySec: 1800


###############################
# Function Runtime Management
###############################

#### Process Runtime  ####
# Pulsar function instances are launched as processes

functionRuntimeFactoryClassName: org.apache.pulsar.functions.runtime.process.ProcessRuntimeFactory
functionRuntimeFactoryConfigs:
    # location of log files for functions
    logDirectory: /tmp
    # change the jar location only when you put the java instance jar in a different location
    javaInstanceJarLocation:
    # change the python instance location only when you put the python instance jar in a different location
    pythonInstanceLocation:
    # change the extra dependencies location:
    extraFunctionDependenciesDir:

#### Thread Runtime ####
# Pulsar function instances are run as threads

#functionRuntimeFactoryClassName: org.apache.pulsar.functions.runtime.thread.ThreadRuntimeFactory
#functionRuntimeFactoryConfigs:
#  # thread group name
#  threadGroupName: "Thread Function Container Group"

#### Kubernetes Runtime ####
# Pulsar function are deployed to Kubernetes

#functionRuntimeFactoryClassName: org.apache.pulsar.functions.runtime.kubernetes.KubernetesRuntimeFactory
#functionRuntimeFactoryConfigs:
#  # uri to kubernetes cluster, leave it to empty and it will use the kubernetes settings in function worker
#  k8Uri:
#  # the kubernetes namespace to run the function instances. it is `default`, if this setting is left to be empty
#  jobNamespace:
#  # the docker image to run function instance. by default it is `apachepulsar/pulsar`
#  pulsarDockerImageName:
#  # the root directory of pulsar home directory in `pulsarDockerImageName`. by default it is `/pulsar`.
#  # if you are using your own built image in `pulsarDockerImageName`, you need to set this setting accordingly
#  pulsarRootDir:
#  # this setting only takes effects if `k8Uri` is set to null. if your function worker is running as a k8 pod,
#  # setting this to true is let function worker to submit functions to the same k8s cluster as function worker
#  # is running. setting this to false if your function worker is not running as a k8 pod.
#  submittingInsidePod: false
#  # setting the pulsar service url that pulsar function should use to connect to pulsar
#  # if it is not set, it will use the pulsar service url configured in worker service
#  pulsarServiceUrl:
#  # setting the pulsar admin url that pulsar function should use to connect to pulsar
#  # if it is not set, it will use the pulsar admin url configured in worker service
#  pulsarAdminUrl:
#  # the custom labels that function worker uses to select the nodes for pods
#  customLabels:
#  # the directory for dropping extra function dependencies
#  # if it is not an absolute path, it is relative to `pulsarRootDir`
#  extraFunctionDependenciesDir:
#  # Additional memory padding added on top of the memory requested by the function per on a per instance basis
#  percentMemoryPadding: 10
#  # The ratio cpu request and cpu limit to be set for a function/source/sink.
#  # The formula for cpu request is cpuRequest = userRequestCpu / cpuOverCommitRatio
#  cpuOverCommitRatio: 1.0
#  # The ratio memory request and memory limit to be set for a function/source/sink.
#  # The formula for memory request is memoryRequest = userRequestMemory / memoryOverCommitRatio
#  memoryOverCommitRatio: 1.0
#  # The function instance class path to be set if it's different from the
#  # broker/function-worker provided class path
#  functionInstanceClassPath: 

## A set of the minimum amount of resources functions must request.
## Support for this depends on function runtime.
## Only kubernetes runtime currently supports this.
# functionInstanceMinResources:
#   cpu: 1
#   ram: 1073741824
#   disk: 10737418240

## The full class-name of an instance of RuntimeCustomizer.
## This class receives the customRuntimeOptions string and can customize details of how the runtime operates.
#runtimeCustomizerClassName: "org.apache.pulsar.functions.runtime.kubernetes.KubernetesManifestCustomizer"

## Config admin CLI
#configAdminCLI:

############################################
# security settings for worker service
############################################

# Enforce authentication
authenticationEnabled: false
# Enforce authorization on accessing functions api
authorizationEnabled: false
# Set of authentication provider name list, which is a list of class names
authenticationProviders:
# Authorization provider fully qualified class-name
authorizationProvider: org.apache.pulsar.broker.authorization.PulsarAuthorizationProvider
# Set of role names that are treated as "super-user", meaning they will be able to access any admin-api
superUserRoles: 

#### tls configuration for worker service
# Enable TLS
tlsEnabled: false
# Path for the TLS certificate file
tlsCertificateFilePath: 
# Path for the TLS private key file
tlsKeyFilePath: 
# Path for the trusted TLS certificate file 
tlsTrustCertsFilePath:
# Accept untrusted TLS certificate from client 
tlsAllowInsecureConnection: false
# Tls cert refresh duration in seconds (set 0 to check on every new connection) 
tlsCertRefreshCheckDurationSec: 300

############################################
# security settings for pulsar broker client
############################################
# The path to trusted certificates used by the Pulsar client to authenticate with Pulsar brokers
brokerClientTrustCertsFilePath:

########################
# State Management
########################

# the service url points to bookkeeper table service
# stateStorageServiceUrl: bk://localhost:4181

########################
# Connectors
########################

connectorsDirectory: ./connectors
functionsDirectory: ./functions
