---
# 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'
services:
  adapter_simulated_olt:
    image: "${REGISTRY}${REPOSITORY}voltha-adapter-simulated-olt${TAG}"
    logging:
      driver: "json-file"
      options:
        max-size: "10m"
        max-file: "3"
    command: [
      "/app/simulated_olt",
      "--kafka_adapter_host=${DOCKER_HOST_IP}",
      "--kafka_adapter_port=9092",
      "--kafka_cluster_host=${DOCKER_HOST_IP}",
      "--kafka_cluster_port=9092",
      "--core_topic=rwcore",
      "--simulator_topic=simulated_olt",
      "--onu_number=1"
    ]
    networks:
    - default

  adapter_simulated_onu:
    image: "${REGISTRY}${REPOSITORY}voltha-adapter-simulated-onu${TAG}"
    logging:
      driver: "json-file"
      options:
        max-size: "10m"
        max-file: "3"
    command: [
      "/app/simulated_onu",
      "--kafka_adapter_host=${DOCKER_HOST_IP}",
      "--kafka_adapter_port=9092",
      "--kafka_cluster_host=${DOCKER_HOST_IP}",
      "--kafka_cluster_port=9092",
      "--core_topic=rwcore",
      "--simulator_topic=simulated_onu",
    ]
    networks:
    - default


networks:
  default:
    driver: bridge
