###
# ============LICENSE_START=======================================================
# ONAP CLAMP
# ================================================================================
# Copyright (C) 2017-2018 AT&T Intellectual Property. All rights
#                             reserved.
# ================================================================================
# Licensed 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.
# ============LICENSE_END============================================
# ===================================================================
# ECOMP is a trademark and service mark of AT&T Intellectual Property.
###

info.build.artifact=@project.artifactId@
info.build.name=@project.name@
info.build.description=@project.description@
info.build.version=@project.version@

### Set the port for HTTP or HTTPS protocol (Controlled by Spring framework, only one at a time).
### (See below for the parameter 'server.http.port' if you want to have both enabled) 
### To have only HTTP, keep the lines server.ssl.* commented
### To have only HTTPS enabled, uncomment the server.ssl.* lines and specify a right keystore location
server.port=10443
### Settings for HTTPS (this automatically enables the HTTPS on the port 'server.port') 
server.ssl.key-store=classpath:https/keystore-test.jks
server.ssl.key-store-password=testpass
server.ssl.key-password=testpass

### In order to be user friendly when HTTPS is enabled, 
### you can add another HTTP port that will be automatically redirected to HTTPS
### by enabling this parameter (server.http.port) and set it to another port (80 or 8080, 8090, etc ...)
server.http-to-https-redirection.port=10080

### HTTP Example:
###--------------
### server.port=8080

### HTTPS Example:
### --------------
### server.port=8443
### server.ssl.key-store=file:/tmp/mykey.jks
### server.ssl.key-store-password=mypass
### server.ssl.key-password=mypass

### HTTP (Redirected to HTTPS) and HTTPS Example:
### --------------------------------------------
### server.port=8443           <-- The HTTPS port
### server.ssl.key-store=file:/tmp/mykey.jks
### server.ssl.key-store-password=mypass
### server.ssl.key-password=mypass
### server.http-to-https-redirection.port=8090  <-- The HTTP port

server.contextPath=/
#Modified engine-rest applicationpath
spring.jersey.application-path=/restservices/clds/v1
spring.profiles.active=clamp-default,clamp-spring-authentication

#The max number of active threads in this pool
server.tomcat.max-threads=200
#The minimum number of threads always kept alive
server.tomcat.min-Spare-Threads=25
#The number of milliseconds before an idle thread shutsdown, unless the number of active threads are less or equal to minSpareThreads
server.tomcat.max-idle-time=60000

#Servlet context parameters
server.context_parameters.p-name=value #context parameter with p-name as key and value as value.

camel.springboot.consumer-template-cache-size=1000
camel.springboot.producer-template-cache-size=1000
camel.springboot.jmx-enabled=false
camel.defaultthreadpool.poolsize=10
camel.defaultthreadpool.maxpoolsize=20
camel.defaultthreadpool.maxqueuesize=1000
camel.defaultthreadpool.keepaliveTime=60
camel.defaultthreadpool.rejectpolicy=CallerRuns
#camel.springboot.xmlRoutes = false
camel.springboot.xmlRoutes=classpath:/clds/camel/*.xml
#camel.springboot.typeConversion = false

#clds datasource connection details
spring.datasource.cldsdb.driverClassName=org.mariadb.jdbc.Driver
spring.datasource.cldsdb.url=jdbc:mariadb:sequential://localhost:${docker.mariadb.port.host}/cldsdb4?autoReconnect=true&retriesAllDown=2147483647&failoverLoopRetries=2147483647
spring.datasource.cldsdb.username=clds
spring.datasource.cldsdb.password=4c90a0b48204383f4283448d23e0b885a47237b2a23588e7c4651604f51c1067
spring.datasource.cldsdb.validationQuery=SELECT 1
spring.datasource.cldsdb.validationQueryTimeout=20000
spring.datasource.cldsdb.validationInterval=30000
spring.datasource.cldsdb.testWhileIdle = true
spring.datasource.cldsdb.minIdle = 0
spring.datasource.cldsdb.initialSize=0
# Automatically test whether a connection provided is good or not
spring.datasource.cldsdb.testOnBorrow=true
spring.datasource.cldsdb.ignoreExceptionOnPreLoad=true

#Async Executor default Parameters
async.core.pool.size=10
async.max.pool.size=20
async.queue.capacity=500

org.onap.clamp.config.files.cldsReference=classpath:/clds/clds-reference.properties
org.onap.clamp.config.files.cldsPolicyConfig=classpath:/clds/clds-policy-config.properties
org.onap.clamp.config.files.cldsUsers=classpath:/clds/clds-users.json
org.onap.clamp.config.files.globalClds=classpath:/clds/globalClds.properties

#Define user permission related parameters, the permission type can be changed but MUST be redefined in clds-users.properties in that case !
CLDS_PERMISSION_TYPE_CL=permission-type-cl
CLDS_PERMISSION_TYPE_CL_MANAGE=permission-type-cl-manage
CLDS_PERMISSION_TYPE_CL_EVENT=permission-type-cl-event
CLDS_PERMISSION_TYPE_FILTER_VF=permission-type-filter-vf
CLDS_PERMISSION_TYPE_TEMPLATE=permission-type-template
#This one indicates the type of instances (dev|prod|perf...), this must be set accordingly in clds-users.properties
CLDS_PERMISSION_INSTANCE=dev