{%- from "sensu/map.jinja" import client with context %}
{%- if client.enabled %}

include:
- sensu._common

sensu_client_packages:
  pkg.installed:
  - names: {{ client.pkgs }}
  - require_in:
    - file: /etc/sensu

/etc/sensu/plugins:
  file.recurse:
  - clean: true
  - source: salt://sensu/files/checks
  - user: sensu
  - group: sensu
  - file_mode: 755
  - dir_mode: 755
  - makedirs: true
  - require:
    - file: /srv/sensu

{%- for plugin_name, plugin in client.plugin.iteritems() %}
{%- if plugin.enabled %}

{%- if plugin_name == 'sensu_community_plugins' %}

sensu_client_community_plugins:
  pkg.installed:
  - names: ruby-sensu-plugin

{%- endif %}

{%- if plugin_name == 'monitoring_for_openstack' %}

sensu_monitoring_os_packages:
  pkg.installed:
  - name: monitoring-for-openstack

{%- endif %}

{%- if plugin_name == 'network_monitoring' %}

sensu_monitoring_network_packages:
  pkg.installed:
  - name: libnet-snmp-perl

{%- endif %}

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

sensu_client_checks_grains_dir:
  file.directory:
  - name: /etc/salt/grains.d
  - mode: 700
  - makedirs: true
  - user: root

{%- set service_grains = {'sensu': {'check': {}}} %}
{%- for service_name, service in pillar.items() %}
{%- if service.get('_support', {}).get('sensu', {}).get('enabled', False) %}
{%- set grains_fragment_file = service_name+'/meta/sensu.yml' %}
{%- macro load_grains_file() %}{% include grains_fragment_file %}{% endmacro %}
{%- set grains_yaml = load_grains_file()|load_yaml %}
{%- set _dummy = service_grains.sensu.check.update(grains_yaml.check) %}
{%- endif %}
{%- endfor %}

sensu_client_checks_grains:
  file.managed:
  - name: /etc/salt/grains.d/sensu
  - source: salt://sensu/files/sensu.grain
  - template: jinja
  - mode: 600
  - defaults:
    service_grains: {{ service_grains|yaml }}
  - require:
    - pkg: sensu_client_packages
    - file: sensu_client_checks_grains_dir

/etc/sensu/conf.d/rabbitmq.json:
  file.managed:
  - source: salt://sensu/files/rabbitmq.json
  - template: jinja
  - mode: 644
  - require:
    - file: /etc/sensu
  - watch_in:
    - service: service_sensu_client

/etc/sensu/conf.d/client.json:
  file.managed:
  - source: salt://sensu/files/client.json
  - template: jinja
  - mode: 644
  - require:
    - file: /etc/sensu
  - watch_in:
    - service: service_sensu_client

service_sensu_client:
  service.running:
  - name: sensu-client
  - enable: true
  - require:
    - pkg: sensu_client_packages

/etc/sudoers.d/90-sensu-user:
  file.managed:
  - source: salt://sensu/files/sudoer
  - user: root
  - group: root
  - mode: 440

{%- endif %}
