###
# ============LICENSE_START=======================================================
# ONAP CLAMP
# ================================================================================
# Copyright (C) 2017 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
spring.autoconfigure.exclude=com.att.ajsc.camunda.config.CamundaBpmWebappInitializer,com.att.ajsc.camunda.config.CamundaBpmWebappAutoConfiguration
### 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=/engine-rest
spring.profiles.active=clamp-default,clamp-spring-authentication
spring.autoconfigure.exclude=org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration,org.springframework.boot.autoconfigure.orm.jpa.HibernateJpaAutoConfiguration

#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


#Add this properties only if you want to change the URL, AJSC Framework interceptors will intercept
#com.att.ajsc.common.interceptors.PreInterceptor.url=/**
#com.att.ajsc.common.interceptors.PostInterceptor.url=/**

#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=true
camel.defaultthreadpool.poolsize=10
camel.defaultthreadpool.maxpoolsize=20
camel.defaultthreadpool.maxqueuesize=1000
camel.defaultthreadpool.keepaliveTime=60
camel.defaultthreadpool.rejectpolicy=CallerRuns

kubernetes.namespace=com-att-ajsc

#server.port=0

#Camunda Process Engine DataSource connection Details
spring.datasource.camunda.url=jdbc:mariadb://localhost:${docker.mariadb.port.host}/camundabpm?verifyServerCertificate=false&useSSL=false&requireSSL=false&autoReconnect=true&maxReconnects=100
spring.datasource.camunda.username=camunda
spring.datasource.camunda.password=ndMSpw4CAM
spring.datasource.camunda.driverClassName=org.mariadb.jdbc.Driver
spring.datasource.camunda.validationQuery=SELECT 1
spring.datasource.camunda.validationQueryTimeout=20000
spring.datasource.camunda.validationInterval=60000
spring.datasource.camunda.testWhileIdle = true
# Automatically test whether a connection provided is good or not
spring.datasource.camunda.testOnBorrow=true

#Camunda application properties
#Camunda history level
camunda.bpm.history-level=auto
camunda.bpm.enabled=false
camunda.bpm.auto-deployment-enabled=false
camunda.bpm.job-execution.active=false
camunda.bpm.job-execution.enabled=false
camunda.bpm.management.health.camunda.enabled=false
camunda.bpm.metrics.enabled=false

#clds datasource connection details
spring.datasource.cldsdb.driver-class-name=org.mariadb.jdbc.Driver
spring.datasource.cldsdb.url=jdbc:mariadb://localhost:${docker.mariadb.port.host}/cldsdb4?verifyServerCertificate=false&useSSL=false&requireSSL=false&autoReconnect=true&maxReconnects=100
spring.datasource.cldsdb.username=clds
spring.datasource.cldsdb.password=sidnnd83K
spring.datasource.cldsdb.driverClassName=com.mysql.jdbc.Driver
spring.datasource.cldsdb.validationQuery=SELECT 1
spring.datasource.cldsdb.validationQueryTimeout=20000
spring.datasource.cldsdb.validationInterval=60000
spring.datasource.cldsdb.testWhileIdle = true
# Automatically test whether a connection provided is good or not
spring.datasource.cldsdb.testOnBorrow=true

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

org.onap.clamp.config.dcae.url=http://localhost:9000/closedloop-dcae-services

#GRM Edge endpoint details
service.name=ajsc6camundademo
service.version=1.0.0.0
routeoffer=TEST
#Update with your application name
application.name=AJSC6CAMUNDA

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