# Copyright 2017-present Open Networking 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.
version: '2'
services:
  #
  # Single-node zookeeper service
  #
  zookeeper:
    image: "wurstmeister/zookeeper:latest"
    ports:
    - 2181
    environment:
      SERVICE_2181_NAME: "zookeeper"
  #
  # Single-node kafka service
  #
  kafka:
    image: "wurstmeister/kafka:latest"
    ports:
     - 9092
    environment:
      KAFKA_ADVERTISED_HOST_NAME: ${DOCKER_HOST_IP}
      KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181
      KAFKA_AUTO_CREATE_TOPICS_ENABLE: 'true'
      KAFKA_HEAP_OPTS: "-Xmx256M -Xms128M"
      SERVICE_9092_NAME: "kafka"
    depends_on:
    - vconsul
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
  #
  # Single-node consul agent
  #
  vconsul:
    image: "consul:0.9.2"
    command: agent -server -bootstrap -client 0.0.0.0 -ui
    ports:
    - "8300:8300"
    - "8400:8400"
    - "8500:8500"
    - "8600:8600/udp"
    environment:
      #SERVICE_53_IGNORE: "yes"
      SERVICE_8300_IGNORE: "yes"
      SERVICE_8400_IGNORE: "yes"
      SERVICE_8500_NAME: "consul-rest"
  #
  # Registrator
  #
  registrator:
    image: "gliderlabs/registrator:latest"
    command: [
      "-ip=${DOCKER_HOST_IP}",
      "-retry-attempts", "100",
      "-cleanup",
      # "-internal",
      "consul://vconsul:8500"
    ]
    links:
    - vconsul
    volumes:
    - "/var/run/docker.sock:/tmp/docker.sock"

  #
  # Fluentd log server
  #
  fluentd:
    image: "fluent/fluentd:latest"
    ports:
    - "24224:24224"
    volumes:
    - "/tmp/fluentd:/fluentd/log"
    environment:
      SERVICE_24224_NAME: "fluentd-intake"

  #
  # Voltha server instance(s)
  #
  voltha:
    image: "${REGISTRY}${REPOSITORY}voltha-voltha:latest"
    logging:
      driver: "json-file"
      options:
        max-size: "10m"
        max-file: "3"
    command: [
      "/voltha/voltha/main.py",
      "-v",
      "--consul=${DOCKER_HOST_IP}:8500",
      "--rest-port=8880",
      "--grpc-port=50555",
      "--kafka=@kafka",
      "--instance-id-is-container-name",
      "--interface=eth1",
      "--backend=consul",
      "-v"
    ]
    ports:
    - 8880
    - 50555
    - 18880
    depends_on:
    - vconsul
    links:
    - vconsul
    environment:
      SERVICE_8880_NAME: "voltha-health"
      SERVICE_8880_CHECK_HTTP: "/health"
      SERVICE_8880_CHECK_INTERVAL: "5s"
      SERVICE_8880_CHECK_TIMEOUT: "1s"
      SERVICE_50555_NAME: "voltha-grpc"
      SERVICE_18880_NAME: "voltha-sim-rest"
    volumes:
    - "/var/run/docker.sock:/tmp/docker.sock"
    networks:
    - default
    - ponmgmt

  #
  # ofagent server instance
  #
  ofagent:
    image: "${REGISTRY}${REPOSITORY}voltha-ofagent:latest"
    logging:
      driver: "json-file"
      options:
        max-size: "10m"
        max-file: "3"
    command: [
      "/ofagent/ofagent/main.py",
      "-v",
      "--consul=${DOCKER_HOST_IP}:8500",
      "--controller=${DOCKER_HOST_IP}:6653",
      "--grpc-endpoint=@voltha-grpc",
      "--instance-id-is-container-name",
      "-v"
    ]
    depends_on:
    - vconsul
    - voltha
    links:
    - vconsul
    volumes:
    - "/var/run/docker.sock:/tmp/docker.sock"
    restart: unless-stopped

  #
  # Netconf server instance(s)
  #
  netconf:
    image: "${REGISTRY}${REPOSITORY}voltha-netconf:latest"
    logging:
      driver: "json-file"
      options:
        max-size: "10m"
        max-file: "3"
    privileged: true
    command: [
      "/netconf/netconf/main.py",
      "-v",
      "--consul=${DOCKER_HOST_IP}:8500",
      "--grpc-endpoint=@voltha-grpc",
      "--instance-id-is-container-name",
      "-v"
    ]
    ports:
    - "830:1830"
    depends_on:
    - vconsul
    - voltha
    links:
    - vconsul
    environment:
      SERVICE_1830_NAME: "netconf-server"
    volumes:
    - "/var/run/docker.sock:/tmp/docker.sock"

networks:
  default:
    driver: bridge
  ponmgmt:
    driver: bridge
    driver_opts:
      com.docker.network.bridge.name: "ponmgmt"
