#  ============LICENSE_START=======================================================
#  Copyright (C) 2021-2024 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=========================================================

spring:
    kafka:
        producer:
            value-serializer: io.cloudevents.kafka.CloudEventSerializer
        consumer:
            value-deserializer: org.springframework.kafka.support.serializer.ErrorHandlingDeserializer
            properties:
                spring.deserializer.value.delegate.class: io.cloudevents.kafka.CloudEventDeserializer

app:
    ncmp:
        async-m2m:
            topic: ncmp-async-m2m
        avc:
            cm-subscription-ncmp-in: subscription
            cm-events-topic: cm-events
            cm-subscription-dmi-in: ${CM_SUBSCRIPTION_DMI_IN_TOPIC:ncmp-dmi-cm-avc-subscription}

ncmp:
    dmi:
        httpclient:
            data-services:
                pendingAcquireMaxCount: 22
                connectionTimeoutInSeconds: 123
                maximumInMemorySizeInMegabytes: 7
                readTimeoutInSeconds: 33
            model-services:
                pendingAcquireMaxCount: 44
                connectionTimeoutInSeconds: 456
                maximumInMemorySizeInMegabytes: 8
                maximumConnectionsTotal: 111
        auth:
            username: some-user
            password: some-password
            enabled: true
        api:
            base-path: dmi
    timers:
        trust-level:
            dmi-availability-watchdog-ms: 30000

    modules-sync-watchdog:
        async-executor:
            parallelism-level: 3

    policy-executor:
        enabled: true
        server:
            address: "http://localhost"
            port: "8785"

# Custom Hazelcast Config.
hazelcast:
  cluster-name: "cps-and-ncmp-test-caches"
  mode:
    kubernetes:
      enabled: false
      service-name: "cps-and-ncmp-service"
