{% set node_types = {} %}
{% for minionid, ip in salt.saltutil.runner(
    'mine.get',
    tgt='elasticsearch:enabled:true',
    fun='network.ip_addrs',
    tgt_type='pillar') | dictsort()
%}

# only add a node to the pillar if it returned an ip from the mine
{%   if ip | length > 0%}
{%     set hostname = minionid.split('_') | first %}
{%     set node_type = minionid.split('_') | last %}
{%     if node_type not in node_types.keys() %}
{%       do node_types.update({node_type: {hostname: ip[0]}}) %}
{%     else %}
{%       if hostname not in node_types[node_type] %}
{%         do node_types[node_type].update({hostname: ip[0]}) %}
{%       else %}
{%         do node_types[node_type][hostname].update(ip[0]) %}
{%       endif %}
{%     endif %}
{%   endif %}
{% endfor %}


elasticsearch:
  nodes:
{% for node_type, values in node_types.items() %}
    {{node_type}}:
{%   for hostname, ip in values.items() %}
      {{hostname}}:
        ip: {{ip}}
{%   endfor %}
{% endfor %}
