#  ============LICENSE_START=======================================================
#  Copyright (C) 2021-2023 Nordix Foundation
#  Modifications Copyright (C) 2021 Bell Canada.
#  ================================================================================
#  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

dmi:
  service:
    url: ${DMI_SERVICE_URL}
    name: ${DMI_SERVICE_NAME:ncmp-dmi-plugin}

rest:
  api:
    dmi-base-path: /dmi

security:
  permit-uri: /actuator/**,/swagger-ui/**,/swagger-resources/**,/v3/api-docs
  auth:
    username: ${DMI_USERNAME}
    password: ${DMI_PASSWORD}

# When updating to sprinboot 2.6.4 an exception would occur when starting the container
# "Failed to start bean 'documentationPluginsBootstrapper'.
# This is a known issue with springfox and springboot introduced in 2.6.x:
# https://github.com/springfox/springfox/issues/3462
spring:
  application:
    name: ncmp-dmi-plugin
  mvc:
    pathmatch:
      matching-strategy: ANT_PATH_MATCHER
  kafka:
    bootstrap-servers: ${KAFKA_BOOTSTRAP_SERVER:localhost:9092}
    security:
      protocol: PLAINTEXT
    producer:
      key-serializer: org.apache.kafka.common.serialization.StringSerializer
      value-serializer: io.cloudevents.kafka.CloudEventSerializer
      client-id: ncmp-dmi-plugin
    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: io.cloudevents.kafka.CloudEventDeserializer
        spring.json.use.type.headers: false

    jackson:
      serialization:
        FAIL_ON_EMPTY_BEANS: false

app:
  ncmp:
    async:
      topic: ${NCMP_ASYNC_M2M_TOPIC:ncmp-async-m2m}
  dmi:
    avc:
      subscription-topic: ${DMI_CM_AVC_SUBSCRIPTION:ncmp-dmi-cm-avc-subscription-${dmi.service.name}}
      subscription-response-topic: ${DMI_CM_AVC_SUBSCRIPTION_RESPONSE:dmi-ncmp-cm-avc-subscription}

notification:
  async:
    executor:
      time-out-value-in-ms: 2000

# Actuator
management:
  endpoints:
    web:
      exposure:
        include: info,health,loggers,prometheus
  endpoint:
    health:
      show-details: always
      # kubernetes probes: liveness and readiness
      probes:
        enabled: true
    loggers:
      enabled: true

cps-core:
  baseUrl: http://${CPS_CORE_HOST}:${CPS_CORE_PORT}
  dmiRegistrationUrl : /ncmpInventory/v1/ch
  auth:
    username: ${CPS_CORE_USERNAME}
    password: ${CPS_CORE_PASSWORD}

sdnc:
  baseUrl: http://${SDNC_HOST}:${SDNC_PORT}
  topologyId: ${SDNC_TOPOLOGY_ID:topology-netconf}
  auth:
    username: ${SDNC_USERNAME}
    password: ${SDNC_PASSWORD}

logging:
  format: json
  level:
    org.springframework: ERROR
    org.onap.cps: DEBUG
  pattern:
    console: "%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"
    file: "%d %p %c{1.} [%t] %m%n"
  file: dmi.log

springdoc:
  swagger-ui:
    disable-swagger-default-url: true
    urlsPrimaryName: query
    urls:
      - name: query
        url: /api-docs/openapi.yaml