---
# Copyright 2018 the original author or authors.
#
# 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.

version: '2'

networks:
  default:
    driver: bridge

services:

  zookeeper:
    image: "wurstmeister/zookeeper:latest"
    environment:
      SERVICE_2181_NAME: "zookeeper"
    ports:
    - 2181:2181
    networks:
    - default
    restart: unless-stopped


  kafka:
    image: "wurstmeister/kafka:2.11-2.0.1"
    environment:
      KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://${DOCKER_HOST_IP}:9092
      KAFKA_LISTENERS: PLAINTEXT://:9092
      KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181
      KAFKA_AUTO_CREATE_TOPICS_ENABLE: 'true'
      SERVICE_9092_NAME: "kafka"
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
    ports:
     - 9092:9092
    networks:
    - default
    restart: unless-stopped


  etcd:
    image: "quay.io/coreos/etcd:v3.4.1"
    command: [
      "etcd",
      "--name=etcd0",
      "--advertise-client-urls=http://${DOCKER_HOST_IP}:2379,http://${DOCKER_HOST_IP}:4001",
      "--listen-client-urls=http://0.0.0.0:2379,http://0.0.0.0:4001",
      "--initial-advertise-peer-urls=http://${DOCKER_HOST_IP}:2380",
      "--listen-peer-urls=http://0.0.0.0:2380",
      "--initial-cluster-token=etcd-cluster-1",
      "--initial-cluster=etcd0=http://${DOCKER_HOST_IP}:2380",
      "--initial-cluster-state=new"
    ]
    ports:
    - "2379:2379"
    - 2380
    - 4001
    networks:
    - default
    restart: unless-stopped


  rw_core:
    image: "${DOCKER_REGISTRY}${DOCKER_REPOSITORY}voltha-rw-core:${DOCKER_TAG}"
    entrypoint:
        - /app/rw_core
        - -kv_store_type=etcd
        - -kv_store_host=${DOCKER_HOST_IP}
        - -kv_store_port=2379
        - -grpc_port=50057
        - -banner=true
        - -kafka_adapter_host=${DOCKER_HOST_IP}
        - -kafka_adapter_port=9092
        - -kafka_cluster_host=${DOCKER_HOST_IP}
        - -kafka_cluster_port=9092
        - -rw_core_topic=rwcore
        - -kv_store_data_prefix=service/voltha
        - -in_competing_mode=false
        - -log_level=DEBUG
    volumes:
    - "/var/run/docker.sock:/tmp/docker.sock"
    ports:
      - 50057:50057
    networks:
    - default
    restart: unless-stopped


  ofagent:
    image: "${DOCKER_REGISTRY}${DOCKER_REPOSITORY}voltha-ofagent-go:${DOCKER_TAG}"
    command: [
      "/app/ofagent",
      "--controller=${DOCKER_HOST_IP}:6653",
      "--voltha=${DOCKER_HOST_IP}:50057",
      "--log_level=DEBUG"
    ]
    volumes:
    - "/var/run/docker.sock:/tmp/docker.sock"
    networks:
    - default
    restart: unless-stopped


  onos:
    image: "${DOCKER_REGISTRY}${DOCKER_REPOSITORY}voltha-onos:${DOCKER_TAG}"
    ports:
    - "8101:8101" # ssh
    - "6653:6653" # OF
    - "8181:8181" # UI
    environment:
      ONOS_APPS: 'drivers,openflow-base'
    volumes:
    - "/var/run/docker.sock:/tmp/docker.sock"
    - "./network-cfg-bbsim.json:/root/onos/config/network-cfg.json"
    networks:
    - default
    restart: unless-stopped


  adapter_openolt:
    image: "${DOCKER_REGISTRY}${DOCKER_REPOSITORY}voltha-openolt-adapter:${DOCKER_TAG}"
    command: [
      "/app/openolt",
      "--kafka_adapter_host=${DOCKER_HOST_IP}",
      "--kafka_adapter_port=9092",
      "--kafka_cluster_host=${DOCKER_HOST_IP}",
      "--kafka_cluster_port=9092",
      "--core_topic=rwcore",
      "--kv_store_host=${DOCKER_HOST_IP}",
      "--kv_store_port=2379",
      "--log_level=DEBUG"
    ]
    ports:
      - "50062:50062"
    networks:
    - default
    restart: unless-stopped


  adapter_openonu:
    image: "${DOCKER_REGISTRY}${DOCKER_REPOSITORY}voltha-openonu-adapter:${DOCKER_TAG}"
    command: [
      "/voltha/adapters/brcm_openomci_onu/main.py",
      "--name=brcm_openomci_onu",
      "--kafka_adapter=${DOCKER_HOST_IP}:9092",
      "--kafka_cluster=${DOCKER_HOST_IP}:9092",
      "--backend=etcd",
      "--etcd=${DOCKER_HOST_IP}:2379",
      "--core_topic=rwcore",
      "--log_level=DEBUG"
    ]
    networks:
    - default
    restart: unless-stopped


  bbsim:
    image: "${DOCKER_REGISTRY}${DOCKER_REPOSITORY}bbsim:${DOCKER_TAG}"
    privileged: true
    command: [
      "./bbsim",
      "-logLevel",
      "debug",
      "-auth",
      "-dhcp",
      "-pon",
      "1",
      "-onu",
      "1"
    ]
    ports:
    - "50060:50060"
    - "50074:50074"
    networks:
    - default
    restart: unless-stopped


  radius:
    image: "tpdock/freeradius:2.2.9"
    environment:
      RADIUS_LISTEN_IP: "*"
      USERS_FILE: "/etc/raddb/users"
      RADIUS_CLIENTS: "SECRET@0.0.0.0/0"
    volumes:
      - "./radius-clients.conf:/etc/raddb/clients.conf"
      - "./radius-users.conf:/etc/raddb/users"
    ports:
     - "1812:1812/udp"
     - "1813:1813"
     - "18120:18120"
    networks:
    - default
    restart: unless-stopped
