# ============LICENSE_START=======================================================
# Copyright (c) 2020 Pantheon.tech.
# Modifications Copyright (C) 2021 Bell Canada.
# Modifications Copyright (C) 2021 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: "3.7"

services:
  #cps-standalone:
  #  container_name: cps-service
  #  image: ${DOCKER_REPO:-nexus3.onap.org:10003}/onap/cps-service:${VERSION:-latest}
  #  ports:
  #    - "8881:8080"
  #    - "8887:8081"
  #  environment:
  #    CPS_USERNAME: ${CPS_USERNAME:-cpsuser}
  #    CPS_PASSWORD: ${CPS_PASSWORD:-cpsr0cks!}
  #    DB_HOST: dbpostgresql
  #    DB_USERNAME: ${DB_USERNAME:-cps}
  #    DB_PASSWORD: ${DB_PASSWORD:-cps}
  #    #KAFKA_BOOTSTRAP_SERVER: kafka:9092
  #    #notification.data-updated.enabled: 'true'
  #    #NOTIFICATION_DATASPACE_FILTER_PATTERNS: '.*'
  #  restart: unless-stopped
  #  depends_on:
  #    - dbpostgresql

  #ncmp-standalone:
  #  container_name: cps-ncmp
  #  image: ${DOCKER_REPO:-nexus3.onap.org:10003}/onap/cps-ncmp:${VERSION:-latest}
  #  ports:
  #    - "8882:8080"
  #    - "8887:8081"
  #  environment:
  #    CPS_USERNAME: ${CPS_USERNAME:-cpsuser}
  #    CPS_PASSWORD: ${CPS_PASSWORD:-cpsr0cks!}
  #    DB_HOST: dbpostgresql
  #    DB_USERNAME: ${DB_USERNAME:-cps}
  #    DB_PASSWORD: ${DB_PASSWORD:-cps}
  #    DMI_USERNAME: ${DMI_USERNAME:-cpsuser}
  #    DMI_PASSWORD: ${DMI_PASSWORD:-cpsr0cks!}
  #    #KAFKA_BOOTSTRAP_SERVER: kafka:9092
  #    #notification.data-updated.enabled: 'true'
  #    #NOTIFICATION_DATASPACE_FILTER_PATTERNS: '.*'
  #  restart: unless-stopped
  #  depends_on:
  #    - dbpostgresql

  cps-and-ncmp:
    container_name: cps-and-ncmp
    image: ${DOCKER_REPO:-nexus3.onap.org:10003}/onap/cps-and-ncmp:${VERSION:-latest}
    ports:
      - "8883:8080"
      - "8887:8081"
    environment:
      CPS_USERNAME: ${CPS_USERNAME:-cpsuser}
      CPS_PASSWORD: ${CPS_PASSWORD:-cpsr0cks!}
      DB_HOST: dbpostgresql
      DB_USERNAME: ${DB_USERNAME:-cps}
      DB_PASSWORD: ${DB_PASSWORD:-cps}
      DMI_USERNAME: ${DMI_USERNAME:-cpsuser}
      DMI_PASSWORD: ${DMI_PASSWORD:-cpsr0cks!}
      #KAFKA_BOOTSTRAP_SERVER: kafka:9092
      #notification.data-updated.enabled: 'true'
      #NOTIFICATION_DATASPACE_FILTER_PATTERNS: '.*'
    restart: unless-stopped
    depends_on:
      - dbpostgresql

  dbpostgresql:
    container_name: dbpostgresql
    image: postgres:13.2-alpine
    ports:
      - '5432:5432'
    environment:
      POSTGRES_DB: cpsdb
      POSTGRES_USER: ${DB_USERNAME:-cps}
      POSTGRES_PASSWORD: ${DB_PASSWORD:-cps}

#  zookeeper:
#    image: confluentinc/cp-zookeeper:6.1.1
#    environment:
#      ZOOKEEPER_CLIENT_PORT: 2181
#      ZOOKEEPER_TICK_TIME: 2000
#    ports:
#      - 22181:2181
#
#  kafka:
#    image: confluentinc/cp-kafka:6.1.1
#    depends_on:
#      - zookeeper
#    ports:
#      - 29092:29092
#    environment:
#      KAFKA_BROKER_ID: 1
#      KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181
#      KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://kafka:9092,PLAINTEXT_HOST://localhost:29092
#      KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: PLAINTEXT:PLAINTEXT,PLAINTEXT_HOST:PLAINTEXT
#      KAFKA_INTER_BROKER_LISTENER_NAME: PLAINTEXT
#      KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 1
