# -*- coding: utf-8 -*-
# vim: ft=sls

{%- set tplroot = tpldir.split('/')[0] %}
{%- set sls_service_running = tplroot ~ '.service.running' %}
{%- set sls_package_install = tplroot ~ '.package.install' %}
{%- from tplroot ~ "/map.jinja" import apache with context %}
{%- set mpm_module = salt['pillar.get']('apache:mpm:module', 'mpm_prefork') %}

include:
  - {{ sls_service_running }}
  - {{ sls_package_install }}

    {%- if grains['os_family'] in ('Suse', 'Debian',) %}

apache-config-modules-mpm-pkg:
  cmd.run:
    - name: a2enmod {{ mpm_module }}
    - unless: ls {{ apache.moddir }}/{{ mpm_module }}.load
    - require:
      - pkg: apache-package-install-pkg-installed
    - watch_in:
      - module: apache-service-running-restart
    - require_in:
      - module: apache-service-running-restart
      - module: apache-service-running-reload
      - service: apache-service-running
  file.managed:
    - name: /etc/apache2/mods-available/{{ mpm_module }}.conf
    - template: {{ apache.get('template_engine', 'jinja') }}
    - makedirs: True
    - context:
      apache: {{ apache|json }}
    - source:
      - salt://apache/files/Debian/mpm/{{ mpm_module }}.conf.jinja
    - require:
      - pkg: apache-package-install-pkg-installed
    - watch_in:
      - module: apache-service-running-restart
    - require_in:
      - module: apache-service-running-restart
      - module: apache-service-running-reload
      - service: apache-service-running

         # Deactivate the other mpm modules as a previous step
         {%- for mod in ['mpm_prefork', 'mpm_worker', 'mpm_event'] if not mod == mpm_module %}

apache-config-modules-mpm-{{ mod }}-cmd-run:
  cmd.run:
    - name: a2dismod {{ mod }}
    - onlyif: ls {{ apache.moddir }}/{{ mod }}.load || egrep "^APACHE_MODULES=" /etc/sysconfig/apache2 | grep ' {{ mod }}'
    - require:
      - pkg: apache-package-install-pkg-installed
    - require_in:
      - cmd: a2enmod {{ mpm_module }}
    - watch_in:
      - module: apache-service-running-restart
    - require_in:
      - module: apache-service-running-restart
      - module: apache-service-running-reload
      - service: apache-service-running

         {%- endfor %}
    {%- elif grains['os_family']=="RedHat" %}

apache-config-modules-mpm-{{ grains.os_family }}-conf-file-managed:
  file.managed:
    - name: {{ apache.moddir }}/00-mpm.conf
    - template: {{ apache.get('template_engine', 'jinja') }}
    - makedirs: True
    - context:
      apache: {{ apache|json }}
    - source:
      - salt://apache/files/RedHat/conf.modules.d/00-{{ mpm_module }}.conf.jinja
    - require:
      - pkg: apache-package-install-pkg-installed
    - watch_in:
      - module: apache-service-running-restart
    - require_in:
      - module: apache-service-running-restart
      - module: apache-service-running-reload
      - service: apache-service-running

    {%- endif %}