blob: b8ceb57a1c7c58566b15f2c563f577f3abb752d1 [file] [log] [blame]
{%- from "elasticsearch/map.jinja" import client with context %}
{%- if client.get('enabled', False) %}
include:
- elasticsearch.client.service
{%- if grains['saltversioninfo'][0] < 2017 or
(grains['saltversioninfo'][0] == 2017 and grains['saltversioninfo'][1] < 7) %}
{# Since Salt 2017.7 new elasticsearch state is used and elasticsearch_index_... deprecated #}
{% set force_compatibility = True %}
{%- else %}
{% set force_compatibility = False %}
{%- endif %}
{%- for index_name, index in client.get('index', {}).iteritems() %}
# TODO: "Replace with module.run when bug is fixed".
# Since bug in retry logic in salt (#49895) we need to use a workaround for now.
elasticsearch_check_cluster_status_before_creating_index_{{ index_name }}:
cmd.run:
- name: curl -sfk {{ client.server.get("scheme", "http") }}://{{ client.server.host }}:{{ client.server.port }}/_cat/health | awk '{print $4}' | grep green
- retry:
attempts: 5
until: True
interval: 10
splay: 5
elasticsearch_index_{{ index_name }}:
{%- if index.get('enabled', False) %}
{% set operation = 'present' %}
{%- if index.definition is defined %}
{% set definition = index.definition %}
{%- endif %}
{%- if index.template is defined %}
{%- import_json index.template as definition %}
{%- endif %}
{%- if definition is defined %}
{%- if force_compatibility %}
elasticsearch_index_template.present:
{%- else %}
elasticsearch.index_template_present:
{%- endif %}
- name: {{ index_name }}
- definition: '{{ definition|json }}'
{%- else %}
cmd.run:
- name: echo "No definition specified for index {{ index_name }}"
{%- endif %}
{%- else %}
{% set operation = 'delete' %}
{%- if force_compatibility %}
elasticsearch_index_template.absent:
{%- else %}
elasticsearch.index_template_absent:
{%- endif %}
- name: {{ index_name }}
{%- endif %}
- require:
- pkg: elasticsearch_client_packages
{%- if index.get('force_operation', False) %}
elasticsearch_index_{{ index_name }}_{{ operation }}:
{% set curdate = None | strftime('%Y.%m.%d') %}
elasticsearch.index_{{ operation }}:
- name: {{ index_name }}-{{ curdate }}
{%- endif %}
{%- endfor %}
{%- endif %}