{%- from "opencontrail/map.jinja" import control with context %}
{%- if control.enabled %}

include:
- opencontrail.common

{%- if not control.get('config_only', False) %}
opencontrail_control_packages:
  pkg.installed:
  - names: {{ control.pkgs }}
  - force_yes: True
  - require_in:
    - /etc/contrail/contrail-control-nodemgr.conf
    - /etc/contrail/contrail-control.conf
    - /etc/contrail/contrail-dns.conf
    - /etc/contrail/dns
    - /etc/contrail/dns/contrail-rndc.conf
    {%- if control.version >= 3.0 and grains.get('init') != 'systemd' %}
    - /etc/contrail/supervisord_control_files/contrail-control-nodemgr.ini
    - /etc/contrail/supervisord_control.conf
    {%- endif %}
{%- endif %}

/etc/contrail/contrail-control-nodemgr.conf:
  file.managed:
  - source: salt://opencontrail/files/{{ control.version }}/contrail-control-nodemgr.conf
  - template: jinja

/etc/contrail/contrail-control.conf:
  file.managed:
  - source: salt://opencontrail/files/{{ control.version }}/contrail-control.conf
  - mode: 640
  - template: jinja

/etc/contrail/contrail-dns.conf:
  file.managed:
  - source: salt://opencontrail/files/{{ control.version }}/contrail-dns.conf
  - mode: 640
  - template: jinja

{%- if control.get('config_only', False) %}

user_contrail:
  user.present:
    - name: contrail
    - system: True
    - require_in:
      - /etc/contrail/dns

opencontrail_control_doctrail:
  file.managed:
  - name: /usr/bin/doctrail
  - template: jinja
  - source: salt://opencontrail/files/{{ control.version }}/doctrail
  - mode: 755

{% endif %}

/etc/contrail/dns:
  file.directory:
  - user: contrail
  - group: contrail

/etc/contrail/dns/contrail-rndc.conf:
  file.managed:
  - source: salt://opencontrail/files/{{ control.version }}/control/contrail-rndc.conf
  - mode: 640
  - makedirs: True

{%- if control.version >= 4.0 %}
/etc/contrail/contrail-issu.conf:
  file.managed:
  - source: salt://opencontrail/files/{{ control.version }}/contrail-issu.conf
  - template: jinja

docker-compose-contrail-control-env:
  file.managed:
  - name: /etc/docker/compose/opencontrail/contrail.env
  - source: salt://opencontrail/files/{{ control.version }}/contrail.env
  - template: jinja
  - makedirs: true
  - require:
    - user: user_contrail
{%- endif %}

{%- if control.version == 3.0 and control.get('dns', {}).get('forwarders', False) %}
contrail_control_resolv:
  file.managed:
  - name: /etc/contrail/resolv.conf
  - source: salt://opencontrail/files/{{ control.version }}/resolv.conf
  - template: jinja
  - defaults:
      dns: {{ control.get('dns', {})|yaml }}
  - require:
    - file: /etc/contrail
{%- endif %}

{%- if control.version >= 3.0 and grains.get('init') != 'systemd' %}

/etc/contrail/supervisord_control_files/contrail-control-nodemgr.ini:
  file.managed:
  - source: salt://opencontrail/files/{{ control.version }}/control/contrail-control-nodemgr.ini
  - makedirs: true

/etc/contrail/supervisord_control.conf:
  file.managed:
  - source: salt://opencontrail/files/{{ control.version }}/control/supervisord_control.conf

{%- endif %}

{%- if not control.get('config_only', False) %}
opencontrail_control_services:
  service.running:
  - enable: true
  - names: {{ control.services }}
  {%- if grains.get('noservices') %}
  - onlyif: /bin/false
  {%- endif %}
  - watch:
    - file: /etc/contrail/dns/contrail-rndc.conf
    - file: /etc/contrail/contrail-dns.conf
    - file: /etc/contrail/contrail-control.conf
    - file: /etc/contrail/contrail-control-nodemgr.conf
  - require:
    - /etc/contrail/supervisord_control_files/contrail-control-nodemgr.ini
    - /etc/contrail/supervisord_control.conf

{%- if grains.get('virtual_subtype', None) == "Docker" %}

opencontrail_control_entrypoint:
  file.managed:
  - name: /entrypoint.sh
  - template: jinja
  - source: salt://opencontrail/files/entrypoint.sh.control
  - mode: 755
{%- endif %}

{%- else %}
{%- if control.container_name is defined %}
{%- if grains['saltversioninfo'] < [2017, 7] %}
  {% set docker_module = 'dockerng' %}
{%- else %}
  {% set docker_module = 'docker' %}
{%- endif %}
{%- if salt[docker_module + '.exists'](control.container_name) %}
opencontrail_control_dockerng_services:
  dockerng_service.running:
    - services: {{ control.services }}
    - container: {{ control.container_name }}
    - watch:
      - file: /etc/contrail/dns/contrail-rndc.conf
      - file: /etc/contrail/contrail-dns.conf
      - file: /etc/contrail/contrail-control.conf
      - file: /etc/contrail/contrail-control-nodemgr.conf

{%- endif %}
{%- endif %}
{%- endif %}

{%- if control.get('disable_dns', False) %}
{%- if control.version < 4.0 %}
disable_contrail_dns_service:
  file.replace:
    - name: /etc/contrail/supervisord_control_files/contrail-dns.ini
    - pattern: "autostart=true"
    - repl: "autostart=false"

disable_contrail_named_service:
  file.replace:
    - name: /etc/contrail/supervisord_control_files/contrail-named.ini
    - pattern: "autostart=true"
    - repl: "autostart=false"

{# cmd run is used, beacause service.dead or supervisord.dead states are not working #}
stop_contrail_dns_service:
  cmd.run:
  - name: "service contrail-dns stop"

stop_contrail_named_service:
  cmd.run:
  - name: "service contrail-named stop"

{%- endif %}
{%- endif %}

{%- endif %}
