---
# 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_address=${DOCKER_HOST_IP}:2379
      - -banner=true
      - -kafka_adapter_address=${DOCKER_HOST_IP}:9092
      - -kafka_cluster_address=${DOCKER_HOST_IP}:9092
      - -rw_core_topic=rwcore
      - -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_address=${DOCKER_HOST_IP}:9092",
      "--kafka_cluster_address=${DOCKER_HOST_IP}:9092",
      "--core_topic=rwcore",
      "--kv_store_address=${DOCKER_HOST_IP}: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