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

### 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:mysql://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=com.mysql.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

#clds datasource connection details
spring.datasource.cldsdb.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.cldsdb.url=jdbc:mysql://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