{%- from "salt/map.jinja" import minion with context %}
{%- if minion.enabled %}

include:
- salt.minion.service

salt_minion_grains_dir:
  file.directory:
  - name: /etc/salt/grains.d
  - mode: 700
  - makedirs: true
  - user: root
  - require:
    - {{ minion.install_state }}

salt_minion_grains_files:
  file.managed:
  - names:
    - /etc/salt/grains
    - /etc/salt/grains.d/placeholder
  - replace: False
  - require:
    - file: salt_minion_grains_dir

{%- for service_name, service in pillar.items() %}
  {%- set support_fragment_file = service_name+'/meta/salt.yml' %}
  {%- macro load_support_file() %}{% include support_fragment_file ignore missing %}{% endmacro %}
  {%- set support_yaml = load_support_file()|load_yaml %}

  {%- if support_yaml and support_yaml.get('grain', {}) %}
    {%- for name, grain in support_yaml.get('grain', {}).iteritems() %}
salt_minion_grain_{{ service_name }}_{{ name }}:
  file.managed:
    - name: /etc/salt/grains.d/{{ name }}
    - contents: |
        {{ grain|yaml(False)|indent(8) }}
    - require:
      - file: salt_minion_grains_dir

salt_minion_grain_{{ service_name }}_{{ name }}_validity_check:
  cmd.wait:
    - name: python -c "import yaml; stream = file('/etc/salt/grains.d/{{ name }}', 'r'); yaml.load(stream); stream.close()"
    - watch:
      - file: salt_minion_grain_{{ service_name }}_{{ name }}
    - watch_in:
      - cmd: salt_minion_grains_file
    {%- endfor %}
  {%- endif %}
{%- endfor %}

salt_minion_grains_file:
  cmd.wait:
  - name: cat /etc/salt/grains.d/* > /etc/salt/grains
  - require:
    - file: salt_minion_grains_files

salt_minion_grains_publish:
  module.wait:
  - name: mine.update
  - watch:
    - cmd: salt_minion_grains_file

{%- endif %}
