|
- {%- macro printassign(key, value) %}
- {#- Check values like: 3, 25, 3s, 45m, 8d #}
- {%- if value is number or "vars" in value or value in ["false","true"] or key in ["check_interval", "retry_interval"] %}
- {{ key }} = {{ value }}
- {#- Check string values, the more common #}
- {%- elif value is string %}
- {{ key }} = "{{ value }}"
- {%- endif %}
- {%- endmacro %}
-
- {%- macro printconfig(type, object, name, config, applyto="", applymethod="")%}
- {%- if applymethod == "to" %}
- {{ type }} {{ object }} "{{ name }}" to {{ applyto }} {
- {%- elif applymethod == "for" %}
- {{ type }} {{ object }} for {{ applyto }} {
- {%- elif object == "Host" and type != "template" %}
- {{ type }} {{ object }} {{ name }} {
- {%- else %}
- {{ type }} {{ object }} "{{ name }}" {
- {%- endif %}
- {%- if config is defined %}
- {#- Check import first to be the first line on config blocks #}
- {%- for key, value in config.items() %}
- {%- if key == "import" %}
- {{key}} "{{ value }}"
- {%- endif %}
- {%- endfor %}
- {%- for key, value in config.items() if key != "import" -%}
- {{ printassign(key, value) }}
- {#- Handle vars values that can be a dict, list or value #}
- {%- if key == "vars" %}
- {%- for varkey, varvalue in config.vars.items() %}
- {%- if varvalue is mapping %}
- {%- for k, v in varvalue.items() %}
- vars.{{ varkey }}["{{ k }}"] = {
- {%- if v is not none %}
- {%- for k1, v1 in v.items() -%}
- {{ printassign(k1, v1)|indent(2)}}
- {%- endfor %}
- {%- endif %}
- }
- {%- endfor %}
- {%- else -%}
- {{ printassign("vars." + varkey, varvalue) }}
- {%- endif %}
- {%- endfor %}
- {#- Handle dict values mapping dict type on yaml with icinga2 syntax #}
- {%- elif value is mapping %}
- {{ key }} = {
- {%- for k, v in value.items() -%}
- {{ printassign(k, v)|indent(2) }}
- {%- endfor %}
- }
- {#- Special case for assign and ignore #}
- {%- elif key in ["assign", "ignore"] %}
- {%- for item in value %}
- {{ key }} where {{ item }}
- {%- endfor %}
- {#- Handle lists values mapping list type on yaml with icinga2 syntax #}
- {%- elif value is iterable and not value is string %}
- {{ key }} = [ {{ value|join(",") }} ]
- {%- endif %}
- {%- endfor %}
- {#- Add a line to aggregate variables read from dictionary #}
- {%- if applymethod == "for" %}
- vars += config
- {%- endif %}
- {%- endif %}
- }
- {%- endmacro %}
|