#  ============LICENSE_START=======================================================
#  Copyright (C) 2021-2023 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:
            properties:
                spring.deserializer.value.delegate.class: io.cloudevents.kafka.CloudEventDeserializer

app:
    ncmp:
        avc:
            subscription-topic: cm-avc-subscription
            cm-events-topic: cm-events
            subscription-forward-topic-prefix: ${NCMP_FORWARD_CM_AVC_SUBSCRIPTION:ncmp-dmi-cm-avc-subscription-}

ncmp:
    dmi:
        auth:
            username: some-user
            password: some-password
        api:
            base-path: dmi

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

    model-loader:
        subscription: true

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