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

quarkus.banner.enabled = false

# Uncomment if your application image is to be pushed to an external registry
#quarkus.container-image.registry=my.docker-registry.net

# How often should the books CSV be generated
timer.period = 10000
timer.delay = 10000

# Location of where to store the book CSV files
csv.location = {{sys:java.io.tmpdir}}/books

# FTP server location
ftp.host = {{env:FTP_SERVER_SERVICE_HOST:localhost}}
ftp.port = {{env:FTP_SERVER_SERVICE_PORT:2222}}
ftp.username = {{env:FTP_USER:ftpuser}}
ftp.password = {{env:FTP_PASSWORD:ftppassword}}

# Kubernetes

# Uncomment to trust self signed certificates if they are presented by the Kubernetes API server
#quarkus.kubernetes-client.trust-certs=true

# Add the FTP server credentials secret to the application Pod
quarkus.kubernetes.env.secrets=ftp-credentials

quarkus.kubernetes.image-pull-policy=IfNotPresent

# Uncomment to set resource limits
#quarkus.kubernetes.resources.requests.memory=64Mi
#quarkus.kubernetes.resources.requests.cpu=250m
#quarkus.kubernetes.resources.limits.memory=512Mi
#quarkus.kubernetes.resources.limits.cpu=1000m

# OpenShift
quarkus.openshift.image-pull-policy=IfNotPresent

# Add the FTP server credentials secret to the application Pod
quarkus.openshift.env.secrets=ftp-credentials

# Uncomment to set resource limits
#quarkus.openshift.resources.requests.memory=64Mi
#quarkus.openshift.resources.requests.cpu=250m
#quarkus.openshift.resources.limits.memory=512Mi
#quarkus.openshift.resources.limits.cpu=1000m
