#  ============LICENSE_START=======================================================
#  Copyright (C) 2021 Pantheon.tech
#  Modifications Copyright (C) 2021 Bell Canada
#  Modifications Copyright (C) 2021-2022 Nordix Foundation
#  ================================================================================
#  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.
#
#  SPDX-License-Identifier: Apache-2.0
#  ============LICENSE_END=========================================================

server:
    port: 8080

rest:
    api:
        cps-base-path: /cps/api
        ncmp-base-path: /ncmp
        ncmp-inventory-base-path: /ncmpInventory

spring:
    main:
        banner-mode: "off"
    application:
        name: "cps-application"
    jpa:
        ddl-auto: create
        open-in-view: false
        properties:
            hibernate:
                enable_lazy_load_no_trans: true
                dialect: org.hibernate.dialect.PostgreSQLDialect

    datasource:
        url: jdbc:postgresql://${DB_HOST}:${DB_PORT:5432}/cpsdb
        username: ${DB_USERNAME}
        password: ${DB_PASSWORD}
        driverClassName: org.postgresql.Driver
        initialization-mode: always

    cache:
        type: caffeine
        cache-names: yangSchema
        caffeine:
            spec: maximumSize=10000,expireAfterAccess=10m

    liquibase:
        change-log: classpath:changelog/changelog-master.yaml
        labels: ${LIQUIBASE_LABELS}

    servlet:
        multipart:
            enabled: true
            max-file-size: 100MB
            max-request-size: 100MB

    kafka:
        bootstrap-servers: ${KAFKA_BOOTSTRAP_SERVER:localhost:9092}
        security:
            protocol: PLAINTEXT
        producer:
            value-serializer: org.springframework.kafka.support.serializer.JsonSerializer
            client-id: cps-core
        consumer:
            group-id: ${NCMP_CONSUMER_GROUP_ID:ncmp-group}
            key-deserializer: org.springframework.kafka.support.serializer.ErrorHandlingDeserializer
            value-deserializer: org.springframework.kafka.support.serializer.ErrorHandlingDeserializer
            properties:
                spring.deserializer.key.delegate.class: org.apache.kafka.common.serialization.StringDeserializer
                spring.deserializer.value.delegate.class: org.springframework.kafka.support.serializer.JsonDeserializer
                spring.json.value.default.type: org.onap.cps.ncmp.event.model.DmiAsyncRequestResponseEvent
                spring.json.use.type.headers: false
app:
    ncmp:
        async-m2m:
            topic: ${NCMP_ASYNC_M2M_TOPIC:ncmp-async-m2m}

notification:
    data-updated:
        enabled: false
        topic: ${CPS_CHANGE_EVENT_TOPIC:cps.data-updated-events}
        filters:
            enabled-dataspaces: ${NOTIFICATION_DATASPACE_FILTER_PATTERNS:""}
    async:
        enabled: false
        executor:
            core-pool-size: 2
            max-pool-size: 10
            queue-capacity: 500
            wait-for-tasks-to-complete-on-shutdown: true
            thread-name-prefix: Async-
            time-out-value-in-ms: 2000

springdoc:
    swagger-ui:
        disable-swagger-default-url: true
        urlsPrimaryName: cps-core
        urls:
            - name: cps-core
              url: /api-docs/cps-core/openapi.yaml
            - name: cps-ncmp
              url: /api-docs/cps-ncmp/openapi.yaml
            - name: cps-ncmp-inventory
              url: /api-docs/cps-ncmp/openapi-inventory.yaml


security:
    # comma-separated uri patterns which do not require authorization
    permit-uri: /manage/**,/swagger-ui.html,/swagger-ui/**,/swagger-resources/**,/api-docs/**
    auth:
        username: ${CPS_USERNAME}
        password: ${CPS_PASSWORD}

# Actuator
management:
    server:
        port: 8081
    endpoints:
        web:
            base-path: /manage
            exposure:
                include: info,health,loggers,prometheus
    endpoint:
        health:
            show-details: always
            # kubernetes probes: liveness and readiness
            probes:
                enabled: true

logging:
    format: json
    level:
        org:
            springframework: INFO
            onap:
                cps: INFO

dmi:
    auth:
        username: ${DMI_USERNAME}
        password: ${DMI_PASSWORD}
    api:
        base-path: dmi

timers:
    advised-modules-sync:
        sleep-time-ms: 30000