#
# ===========LICENSE_START====================================================
#  Copyright (C) 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.
# ============LICENSE_END=====================================================
#

services:
  policy-clamp-runtime-acm-replica:
    image: ${CONTAINER_LOCATION}onap/policy-clamp-runtime-acm:${POLICY_CLAMP_VERSION}
    hostname: policy-clamp-runtime-acm
    depends_on:
      - policy-db-migrator-clamp
      - kafka
      - jaeger
      - policy-clamp-ac-http-ppnt-replica
      - policy-clamp-ac-k8s-ppnt-replica
      - policy-clamp-ac-pf-ppnt-replica
      - policy-clamp-ac-sim-ppnt
      - apex-pdp
    expose:
      - 6969
    deploy:
      mode: replicated
      replicas: ${REPLICAS}
    environment:
      OTEL_SERVICE_NAME: acm-r
      OTEL_EXPORTER_OTLP_PROTOCOL: http/protobuf
      OTEL_EXPORTER_OTLP_TRACES_PROTOCOL: http/protobuf
      OTEL_EXPORTER_OTLP_ENDPOINT: http://jaeger:4318
      # Tracing can be configured for grpc or http - default is http
      #OTEL_EXPORTER_OTLP_PROTOCOL: grpc
      #OTEL_EXPORTER_OTLP_TRACES_PROTOCOL: grpc
      #OTEL_EXPORTER_OTLP_ENDPOINT: http://jaeger:4317
    volumes:
      - ./config/clamp/AcRuntimeParameters.yaml:/opt/app/policy/clamp/etc/AcRuntimeParameters.yaml
      - ./config/clamp/logback.xml:/opt/app/policy/clamp/etc/logback.xml:ro
      - ./config/clamp/acm-runtime.sh:/opt/app/policy/clamp/bin/acm-runtime.sh:rw
      - ./wait_for_port.sh:/opt/app/policy/bin/wait_for_port.sh:ro
    entrypoint: /opt/app/policy/bin/wait_for_port.sh
    command: [
      '-c', './acm-runtime.sh',
      'mariadb', '3306',
      'kafka', '9092',
      'policy-clamp-ac-http-ppnt', '6969',
      'policy-clamp-ac-k8s-ppnt', '6969',
      'policy-clamp-ac-pf-ppnt', '6969',
      'policy-clamp-ac-sim-ppnt', '6969'
    ]
  policy-clamp-ac-http-ppnt-replica:
    image: ${CONTAINER_LOCATION}onap/policy-clamp-ac-http-ppnt:${POLICY_CLAMP_PPNT_VERSION}
    hostname: policy-clamp-ac-http-ppnt
    depends_on:
      - kafka
      - jaeger
    expose:
      - 6969
    deploy:
      mode: replicated
      replicas: ${REPLICAS}
    environment:
      OTEL_SERVICE_NAME: http-ppnt
      OTEL_EXPORTER_OTLP_PROTOCOL: http/protobuf
      OTEL_EXPORTER_OTLP_TRACES_PROTOCOL: http/protobuf
      OTEL_EXPORTER_OTLP_ENDPOINT: http://jaeger:4318
    volumes:
      - ./config/clamp/HttpParticipantParameters.yaml:/opt/app/policy/clamp/etc/HttpParticipantParameters.yaml
      - ./config/clamp/http-participant.sh:/opt/app/policy/clamp/bin/http-participant.sh:rw
      - ./config/clamp/logback.xml:/opt/app/policy/clamp/etc/logback.xml:ro
      - ./wait_for_port.sh:/opt/app/policy/bin/wait_for_port.sh:ro
    entrypoint: /opt/app/policy/bin/wait_for_port.sh
    command: [
      '-c', './http-participant.sh',
      'kafka', '9092'
    ]
  policy-clamp-ac-k8s-ppnt-replica:
    image: ${CONTAINER_LOCATION}onap/policy-clamp-ac-k8s-ppnt:${POLICY_CLAMP_PPNT_VERSION}
    hostname: policy-clamp-ac-k8s-ppnt
    depends_on:
      - kafka
      - jaeger
    environment:
      OTEL_SERVICE_NAME: k8s-ppnt
      OTEL_EXPORTER_OTLP_PROTOCOL: http/protobuf
      OTEL_EXPORTER_OTLP_TRACES_PROTOCOL: http/protobuf
      OTEL_EXPORTER_OTLP_ENDPOINT: http://jaeger:4318
    expose:
      - 6969
    deploy:
      mode: replicated
      replicas: ${REPLICAS}
    volumes:
      - ./config/clamp/KubernetesParticipantParameters.yaml:/opt/app/policy/clamp/etc/KubernetesParticipantParameters.yaml
      - ./config/clamp/kubernetes-participant.sh:/opt/app/policy/clamp/bin/kubernetes-participant.sh:rw
      - ./config/clamp/logback.xml:/opt/app/policy/clamp/etc/logback.xml:ro
      - ./wait_for_port.sh:/opt/app/policy/bin/wait_for_port.sh:ro
    entrypoint: /opt/app/policy/bin/wait_for_port.sh
    command: [
      '-c', './kubernetes-participant.sh',
      'kafka', '9092'
    ]
  policy-clamp-ac-pf-ppnt-replica:
    image: ${CONTAINER_LOCATION}onap/policy-clamp-ac-pf-ppnt:${POLICY_CLAMP_PPNT_VERSION}
    hostname: policy-clamp-ac-pf-ppnt
    depends_on:
      - kafka
      - jaeger
    expose:
      - 6969
    deploy:
      mode: replicated
      replicas: ${REPLICAS} 
    environment:
      OTEL_SERVICE_NAME: policy-ppnt
      OTEL_EXPORTER_OTLP_PROTOCOL: http/protobuf
      OTEL_EXPORTER_OTLP_TRACES_PROTOCOL: http/protobuf
      OTEL_EXPORTER_OTLP_ENDPOINT: http://jaeger:4318
    volumes:
      - ./config/clamp/PolicyParticipantParameters.yaml:/opt/app/policy/clamp/etc/PolicyParticipantParameters.yaml:ro
      - ./config/clamp/policy-participant.sh:/opt/app/policy/clamp/bin/policy-participant.sh:rw
      - ./config/clamp/logback.xml:/opt/app/policy/clamp/etc/logback.xml:ro
      - ./wait_for_port.sh:/opt/app/policy/bin/wait_for_port.sh:ro
    entrypoint: /opt/app/policy/bin/wait_for_port.sh
    command: [
      '-c', './policy-participant.sh',
      'kafka', '9092'
    ]
  nginx:
    image: ${CONTAINER_LOCATION}library/nginx:latest
    volumes:
      - ./config/nginx/nginx-acm.conf:/etc/nginx/nginx.conf:ro
    depends_on:
      - policy-clamp-runtime-acm-replica
    ports:
      - ${ACM_PORT}:${ACM_PORT}