---
{#
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'

# XOS docker compose
# generated by cord-profile/templates/docker-compose.yml.j2

networks:
{% for network in xos_docker_networks %}
  {{ network }}:
    external: true
{% endfor %}

services:
{% if use_elasticstack %}
  elk:
    image: {{ pull_docker_registry }}sebp/elk:{{ pull_docker_tag }}
    ports:
      - "5601:5601"
      - "9200:9200"
    networks:
{% for network in xos_docker_networks %}
      - {{ network }}
{% endfor %}
{% endif %}
  xos_db:
    image: {{ pull_docker_registry }}postgres:{{ pull_docker_tag }}
    networks:
{% for network in xos_docker_networks %}
      - {{ network }}
{% endfor %}
    environment:
      - POSTGRES_DB={{ xos_db_name }}
      - POSTGRES_USER={{ xos_db_username }}
      - POSTGRES_PASSWORD={{ xos_db_password }}
    expose:
      - "5432"
    restart: unless-stopped

{% if use_redis %}
  xos_redis:
    image: {{ pull_docker_registry }}redis:{{ pull_docker_tag }}
    networks:
{% for network in xos_docker_networks %}
     - {{ network }}
{% endfor %}
    logging:
      driver: "json-file"
      options:
        max-size: "1000k"
        max-file: "5"
    restart: unless-stopped
{% endif %}

  xos_gui:
    image: {{ pull_docker_registry }}xosproject/xos-gui:{{ pull_docker_tag }}
    networks:
{% for network in xos_docker_networks %}
     - {{ network }}
{% endfor %}
    ports:
      - "4000:4000"
    links:
      - xos_ws:xos-ws
      - xos_chameleon:xos-chameleon
    depends_on:
      - xos_ws
      - xos_chameleon
    volumes:
      - {{ head_cord_profile_dir }}/style.config.js:/var/www/dist/style.config.js
      - {{ head_cord_profile_dir }}/app.config.js:/var/www/dist/app.config.js
    volumes_from:
      - gui_extensions_store
    logging:
      driver: "json-file"
      options:
        max-size: "1000k"
        max-file: "5"
    restart: unless-stopped

  xos_tosca:
    image: {{ pull_docker_registry }}xosproject/xos-tosca:{{ pull_docker_tag }}
    networks:
{% for network in xos_docker_networks %}
     - {{ network }}
{% endfor %}
    ports:
      - "9102:9102"
    links:
      - xos_core:xos-core
    volumes:
      - {{ head_cord_profile_dir }}/xos-tosca.config.yaml:/opt/xos-tosca/src/xos-tosca.config.yaml
      - {{ head_cord_profile_dir }}/im_cert_chain.pem:/usr/local/share/ca-certificates/local_certs.crt:ro
    depends_on:
      - xos_core
    logging:
      driver: "json-file"
      options:
        max-size: "1000k"
        max-file: "5"
    restart: unless-stopped

  xos_chameleon:
    image: {{ pull_docker_registry }}xosproject/chameleon:{{ pull_docker_tag }}
    networks:
{% for network in xos_docker_networks %}
     - {{ network }}
{% endfor %}
    command: python chameleon/chameleon/main.py -R 9101 -G xos-core:50055 --swagger-url /apidocs -r
    ports:
      - "9101:9101"
    links:
      - xos_core:xos-core
    depends_on:
      - xos_core
    logging:
      driver: "json-file"
      options:
        max-size: "1000k"
        max-file: "5"
    restart: unless-stopped

  gui_extensions_store:
    image: {{ pull_docker_registry }}node:{{ pull_docker_tag }}
    networks:
{% for network in xos_docker_networks %}
     - {{ network }}
{% endfor %}
    command: /bin/true
    volumes:
      - /var/www/dist/extensions
    logging:
      driver: "json-file"
      options:
        max-size: "1000k"
        max-file: "5"

  xos_ws:
    image: {{ pull_docker_registry }}xosproject/xos-ws:{{ pull_docker_tag }}
    networks:
{% for network in xos_docker_networks %}
     - {{ network }}
{% endfor %}
    command: npm start -- --config gateway-config.yml
    ports:
      - "3000:3000"
    links:
{% if use_redis %}
      - xos_redis:redis
{% endif %}
    depends_on:
      - xos_core
{% if use_redis %}
      - xos_redis
{% endif %}
    volumes:
      - {{ head_cord_profile_dir }}/gateway-config.yml:/var/www/src/config/gateway-config.yml
    logging:
      driver: "json-file"
      options:
        max-size: "1000k"
        max-file: "5"
    restart: unless-stopped

  xos_core:
    image: {{ pull_docker_registry }}xosproject/xos-core:{{ pull_docker_tag }}
    networks:
{% for network in xos_docker_networks %}
     - {{ network }}
{% endfor %}
    command: bash -c "service filebeat start; cd coreapi; bash ./start_coreapi.sh"
    ports:
      - "50051:50051"
      - "50055:50055"
    links:
      - xos_db:xos-db
{% if use_redis %}
      - xos_redis:redis
{% endif %}
    depends_on:
      - xos_db
{% if use_redis %}
      - xos_redis
{% endif %}
    volumes:
      - {{ head_cord_profile_dir }}/xos_config.yaml:/opt/xos/xos_config.yaml:ro
      - {{ head_cord_profile_dir }}/core_api_cert.pem:/opt/cord_profile/core_api_cert.pem:ro
      - {{ head_cord_profile_dir }}/core_api_key.pem:/opt/cord_profile/core_api_key.pem:ro
      - {{ head_cord_profile_dir }}/im_cert_chain.pem:/usr/local/share/ca-certificates/local_certs.crt:ro
      - {{ head_cord_profile_dir }}/initial_data.yaml:/opt/xos/core/migrations/initial_data.yaml:ro
    logging:
      driver: "json-file"
      options:
        max-size: "1000k"
        max-file: "5"
    restart: unless-stopped

{% for ext in enabled_gui_extensions %}
  gui-extension-{{ ext.name }}:
    image: {{ pull_docker_registry }}xosproject/gui-extension-{{ ext.name }}:{{ pull_docker_tag }}
    networks:
{% for network in xos_docker_networks %}
     - {{ network }}
{% endfor %}
    command: /bin/sh -c "mkdir -p /var/www/dist/extensions/{{ ext.name }}/ && cp -R /tmp/* /var/www/dist/extensions/{{ ext.name }}/"
    volumes_from:
      - gui_extensions_store
    logging:
      driver: "json-file"
      options:
        max-size: "1000k"
        max-file: "5"
{% endfor %}

{% for svc in xos_services %}
{% if svc.synchronizer is not defined or svc.synchronizer %}
  {{ svc.name }}-synchronizer:
    image: {{ pull_docker_registry }}xosproject/{{ svc.name }}-synchronizer:{{ pull_docker_tag }}
    networks:
{% for network in xos_docker_networks %}
     - {{ network }}
{% endfor %}
{% if use_redis %}
    depends_on:
      - xos_redis
{% endif %}
    links:
      - xos_core:xos-core
{% if use_redis %}
      - xos_redis:redis
{% endif %}
    volumes:
      - {{ head_cord_profile_dir }}/xos_config_synchronizer.yaml:/opt/xos/xos_config.yaml:ro
      - {{ head_cord_profile_dir }}/node_key:/opt/cord_profile/node_key:ro
      - {{ head_credentials_dir }}:/opt/xos/services/{{ svc.name }}/credentials:ro
      - {{ head_cord_profile_dir }}/im_cert_chain.pem:/usr/local/share/ca-certificates/local_certs.crt:ro
{% if svc.keypair is defined %}
      - {{ head_cord_profile_dir }}/key_import/{{ svc.keypair }}:/opt/xos/services/{{ svc.name }}/keys/{{ svc.keypair }}:ro
{% endif %}
{% if svc.name == "openstack" %}
      - {{ head_cord_profile_dir }}/images:/opt/xos/images:ro
{% endif %}
    logging:
      driver: "json-file"
      options:
        max-size: "1000k"
        max-file: "5"
    restart: on-failure

{% endif %}
{% endfor %}
