#
# ===========LICENSE_START====================================================
#  Copyright (C) 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.
# ============LICENSE_END=====================================================
#
version: '2'
services:
   mariadb:
      image: nexus3.onap.org:10001/mariadb:${POLICY_MARIADB_VER}
      container_name: mariadb
      hostname: mariadb
      command: ['--lower-case-table-names=1', '--wait_timeout=28800']
      env_file: ./config/db/db.conf
      volumes:
         - ./config/clamp/policy-clamp-create-tables.sql:/tmp/policy-clamp-create-tables.sql
         - ./config/db:/docker-entrypoint-initdb.d:ro
      ports:
       - "3306:3306"
   policy-db-migrator:
      image: nexus3.onap.org:10001/onap/policy-db-migrator:${POLICY_DOCKER_VERSION}
      container_name: policy-db-migrator
      hostname: policy-db-migrator
      depends_on:
        - mariadb
      expose:
       - 6824
      env_file: ./config/db/db.conf
      environment:
        SQL_DB: policyadmin
        SQL_HOST: mariadb
      volumes:
         - ./db_migrator_policy_init.sh:/opt/app/policy/bin/db_migrator_policy_init.sh: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',
                '/opt/app/policy/bin/db_migrator_policy_init.sh',
                'mariadb', '3306'
               ]
   simulator:
      image: nexus3.onap.org:10001/onap/policy-models-simulator:${POLICY_MODELS_VERSION}
      container_name: simulator
      hostname: simulator
      networks:
          default:
              aliases:
                  - message-router
                  - aai-sim
                  - grpc-sim
                  - sdnc-sim
                  - so-sim
                  - vfc-sim
      volumes:
       - ./config/sim-all:/opt/app/policy/simulators/etc/mounted:ro
       - ./config/ks.jks:/opt/app/policy/simulators/etc/ssl/policy-keystore:ro
       - ./config/policy-truststore:/opt/app/policy/simulators/etc/ssl/policy-truststore:ro
      expose:
       - 6666
       - 6668
       - 6669
       - 6670
       - 3905
       - 6680
   api:
      image: nexus3.onap.org:10001/onap/policy-api:${POLICY_API_VERSION}
      container_name: policy-api
      depends_on:
       - policy-db-migrator
      hostname: policy-api
      expose:
       - 6969
      volumes:
       - ./config/ks.jks:/opt/app/policy/api/etc/ssl/policy-keystore:ro
       - ./config/policy-truststore:/opt/app/policy/api/etc/ssl/policy-truststore:ro
       - ./wait_for_port.sh:/opt/app/policy/api/bin/wait_for_port.sh:ro
      entrypoint: ./wait_for_port.sh
      command: [
        '-c', './policy-api.sh',
        'mariadb', '3306',
        'policy-db-migrator', '6824'
        ]
   pap:
      image: nexus3.onap.org:10001/onap/policy-pap:${POLICY_PAP_VERSION}
      container_name: policy-pap
      depends_on:
       - mariadb
       - simulator
       - api
      hostname: policy-pap
      expose:
       - 6969
      volumes:
       - ./config/pap/papParameters.yaml:/opt/app/policy/pap/etc/papParameters.yaml:ro
       - ./config/pap/groups.json:/opt/app/policy/pap/etc/mounted/groups.json:ro
       - ./config/ks.jks:/opt/app/policy/pap/etc/ssl/policy-keystore:ro
       - ./config/policy-truststore:/opt/app/policy/pap/etc/ssl/policy-truststore:ro
       - ./wait_for_port.sh:/opt/app/policy/pap/bin/wait_for_port.sh:ro
      entrypoint: ./wait_for_port.sh
      command: [
        '-c', './policy-pap.sh',
        'mariadb', '3306',
        'message-router', '3905',
        'api', '6969'
        ]
   xacml-pdp:
      image: nexus3.onap.org:10001/onap/policy-xacml-pdp:${POLICY_XACML_PDP_VERSION}
      container_name: policy-xacml-pdp
      depends_on:
       - mariadb
       - simulator
       - pap
      hostname: policy-xacml-pdp
      expose:
       - 6969
      volumes:
       - ./config/xacml-pdp/defaultConfig.json:/opt/app/policy/pdpx/etc/defaultConfig.json:ro
       - ./config/ks.jks:/opt/app/policy/pdpx/etc/ssl/policy-keystore:ro
       - ./config/policy-truststore:/opt/app/policy/pdpx/etc/ssl/policy-truststore:ro
       - ./wait_for_port.sh:/opt/app/policy/pdpx/bin/wait_for_port.sh:ro
      entrypoint: ./wait_for_port.sh
      command: [
        '-c', './policy-pdpx.sh',
        'mariadb', '3306',
        'message-router', '3905',
        'pap', '6969'
        ]
   drools:
      image: nexus3.onap.org:10001/onap/policy-drools:${POLICY_DROOLS_VERSION}
      container_name: drools
      depends_on:
       - mariadb
       - simulator
       - pap
      hostname: drools
      expose:
       - 6969
       - 9696
      volumes:
       - ./config/drools/custom:/tmp/policy-install/config:ro
       - ./wait_for_port.sh:/opt/app/policy/bin/wait_for_port.sh:ro
      env_file:
        - ./config/drools/env/base.conf
      entrypoint: /opt/app/policy/bin/wait_for_port.sh
      command: [
        '-c', '/opt/app/policy/bin/pdpd-entrypoint.sh boot',
        'mariadb', '3306',
        'message-router', '3905'
        ]
   drools-apps:
      image: nexus3.onap.org:10001/onap/policy-pdpd-cl:${POLICY_DROOLS_APPS_VERSION}
      container_name: drools-apps
      depends_on:
       - mariadb
       - simulator
       - pap
       - xacml-pdp
      hostname: drools-apps
      expose:
       - 6969
       - 9696
      volumes:
       - ./config/drools-apps/custom:/tmp/policy-install/config:ro
       - ./config/feature-lifecycle.properties:/opt/app/policy/features/lifecycle/config/feature-lifecycle.properties:ro
       - ./wait_for_port.sh:/opt/app/policy/bin/wait_for_port.sh:ro
      env_file:
        - ./config/drools-apps/env/base.conf
        - ./config/drools-apps/env/feature-healthcheck.conf
        - ./config/drools-apps/env/feature-pooling-dmaap.conf
      entrypoint: /opt/app/policy/bin/wait_for_port.sh
      command: [
        '-c', '/opt/app/policy/bin/pdpd-cl-entrypoint.sh boot',
        'mariadb', '3306',
        'message-router', '3905',
        'pap', '6969',
        'aai-sim', '6666',
        'sdnc-sim', '6668',
        'so-sim', '6669',
        'vfc-sim', '6670'
        ]
   apex-pdp:
      image: nexus3.onap.org:10001/onap/policy-apex-pdp:${POLICY_APEX_PDP_VERSION}
      container_name: policy-apex-pdp
      depends_on:
       - mariadb
       - simulator
       - pap
      hostname: policy-apex-pdp
      expose:
       - 6969
       - 23324
      volumes:
       - ./config/apex-pdp/OnapPfConfig.json:/opt/app/policy/apex-pdp/etc/onappf/config/OnapPfConfig.json:ro
       - ./config/ks.jks:/opt/app/policy/apex-pdp/etc/ssl/policy-keystore:ro
       - ./config/policy-truststore:/opt/app/policy/apex-pdp/etc/ssl/policy-truststore: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', '/opt/app/policy/apex-pdp/bin/apexOnapPf.sh -c /opt/app/policy/apex-pdp/etc/onappf/config/OnapPfConfig.json',
        'mariadb', '3306',
        'message-router', '3905',
        'pap', '6969'
        ]
   distribution:
      image: nexus3.onap.org:10001/onap/policy-distribution:${POLICY_DISTRIBUTION_VERSION}
      container_name: policy-distribution
      depends_on:
       - mariadb
       - api
       - pap
       - apex-pdp
      hostname: policy-distribution
      volumes:
       - ./config/distribution/defaultConfig.json:/opt/app/policy/distribution/etc/defaultConfig.json:ro
       - ./config/ks.jks:/opt/app/policy/distribution/etc/ssl/policy-keystore:ro
       - ./config/policy-truststore:/opt/app/policy/distribution/etc/ssl/policy-truststore:ro
       - ./distribution/config/temp/:/opt/app/policy/distribution/etc/temp/: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-dist.sh',
        'mariadb', '3306',
        'message-router', '3905',
        'pap', '6969',
        'apex-pdp', '6969'
        ]
   policy-clamp-runtime-acm:
      image: nexus3.onap.org:10001/onap/policy-clamp-runtime-acm:${POLICY_CLAMP_VERSION}
      container_name: policy-clamp-runtime-acm
      depends_on:
       - mariadb
       - simulator
       - policy-clamp-ac-http-ppnt
       - policy-clamp-ac-k8s-ppnt
       - policy-clamp-ac-pf-ppnt
      hostname: policy-clamp-runtime-acm
      expose:
       - 6969
      volumes:
       - ./config/policy-truststore:/opt/app/policy/clamp/etc/ssl/policy-truststore:ro
       - ./wait_for_port.sh:/opt/app/policy/bin/wait_for_port.sh:ro
       - ./config/ks.jks:/opt/app/policy/clamp/etc/ssl/policy-keystore:ro
       - ./config/clamp/AcRuntimeParameters.yaml:/opt/app/policy/clamp/config/AcRuntimeParameters.yaml
      entrypoint: /opt/app/policy/bin/wait_for_port.sh
      command: [
        '-c', './acm-runtime.sh',
        'message-router', '3905'
        ]
   policy-clamp-ac-http-ppnt:
      image: nexus3.onap.org:10001/onap/policy-clamp-ac-http-ppnt:${POLICY_CLAMP_VERSION}
      container_name: policy-clamp-ac-http-ppnt
      depends_on:
       - simulator
      hostname: policy-clamp-ac-http-ppnt
      expose:
       - 6971
      volumes:
       - ./config/policy-truststore:/opt/app/policy/clamp/etc/ssl/policy-truststore:ro
       - ./wait_for_port.sh:/opt/app/policy/bin/wait_for_port.sh:ro
       - ./config/ks.jks:/opt/app/policy/clamp/etc/ssl/policy-keystore:ro
      entrypoint: /opt/app/policy/bin/wait_for_port.sh
      command: [
        '-c', './http-participant.sh',
        'message-router', '3905'
        ]
   policy-clamp-ac-k8s-ppnt:
      image: nexus3.onap.org:10001/onap/policy-clamp-ac-k8s-ppnt:${POLICY_CLAMP_VERSION}
      container_name: policy-clamp-ac-k8s-ppnt
      depends_on:
       - simulator
      hostname: policy-clamp-ac-k8s-ppnt
      expose:
       - 6972
      volumes:
       - ./config/policy-truststore:/opt/app/policy/clamp/etc/ssl/policy-truststore:ro
       - ./wait_for_port.sh:/opt/app/policy/bin/wait_for_port.sh:ro
       - ./config/ks.jks:/opt/app/policy/clamp/etc/ssl/policy-keystore:ro
      entrypoint: /opt/app/policy/bin/wait_for_port.sh
      command: [
        '-c', './kubernetes-participant.sh',
        'message-router', '3905'
        ]
   policy-clamp-ac-pf-ppnt:
      image: nexus3.onap.org:10001/onap/policy-clamp-ac-pf-ppnt:${POLICY_CLAMP_VERSION}
      container_name: policy-clamp-ac-pf-ppnt
      depends_on:
       - simulator
       - api
      hostname: policy-clamp-ac-pf-ppnt
      expose:
       - 6973
      volumes:
       - ./config/policy-truststore:/opt/app/policy/clamp/etc/ssl/policy-truststore:ro
       - ./wait_for_port.sh:/opt/app/policy/bin/wait_for_port.sh:ro
       - ./config/ks.jks:/opt/app/policy/clamp/etc/ssl/policy-keystore:ro
       - ./config/clamp/PolicyParticipantParameters.yaml:/opt/app/policy/clamp/config/PolicyParticipantParameters.yaml:ro
      entrypoint: /opt/app/policy/bin/wait_for_port.sh
      command: [
        '-c', './policy-participant.sh',
        'message-router', '3905'
        ]

   policy-gui:
     image: nexus3.onap.org:10001/onap/policy-gui:latest
     container_name: policy-gui
     depends_on:
     - policy-clamp-backend
     hostname: policy-gui
     environment:
       CLAMP_URL: https://policy-clamp-backend:8443
       CLAMP_DISABLE_SSL_VALIDATION: "true"
       SERVER_SSL_CLIENT_AUTH: want
       KEYSTORE_PASSWD: Pol1cy_0nap
       TRUSTSTORE_PASSWD: Pol1cy_0nap
     ports:
     - "2443:2443"
     expose:
     - 2443
     volumes:
     - ./config/clamp/gui/application.yaml:/opt/app/policy/gui/etc/application.yaml
     - ./config/policy-truststore:/opt/app/policy/gui/etc/mounted/policy-truststore:ro
     - ./config/ks.jks:/opt/app/policy/gui/etc/mounted/policy-keystore:ro
     - ./wait_for_port.sh:/opt/app/policy/gui/bin/wait_for_port.sh:ro
     entrypoint: ./policy-gui.sh
     working_dir: /opt/app/policy/gui/bin
     command: ./policy-gui.sh

   policy-clamp-backend:
     image: nexus3.onap.org:10001/onap/policy-clamp-backend:${POLICY_CLAMP_VERSION}
     container_name: policy-clamp-backend
     depends_on:
     - policy-clamp-runtime-acm
     - distribution
     hostname: policy-clamp-backend
     environment:
        POLICY_API_HOST: api
        POLICY_PAP_HOST: pap
        MARIADB_HOST: mariadb
        RUNTIME_HOST: policy-clamp-runtime-acm
     ports:
     - "8443:8443"
     expose:
     - 8443
     volumes:
     - ./config/clamp/application-smoke.properties:/opt/policy/clamp/application-smoke.properties:ro
     - ./config/policy-truststore:/opt/policy/clamp/policy-truststore:ro
     - ./config/ks.jks:/opt/policy/clamp/policy-keystore:ro
     - ./config/clamp/org.onap.clamp.keyfile:/opt/policy/clamp/clamp-be-keyfile:ro
     working_dir: /opt/policy/clamp
     command: java -Djava.security.egd=file:/dev/./urandom -XX:MinRAMPercentage=50 -XX:MaxRAMPercentage=75 -jar ./policy-clamp-backend.jar --spring.config.name=application-smoke --spring.config.location=optional:classpath:/,optional:classpath:/config/,optional:file:./,optional:file:./config/