Better sub inputs handling (#193)

* Support for sub_inputs in extra plugins

* fix: properly handle lists as TOML arrays

- Updated the Jinja template to detect and serialize lists using |to_json,
  ensuring Telegraf interprets them correctly (e.g. names = ["item1","item2"]).
- Removed fallback logic for single items, so we consistently treat all sub_input
  values as lists of dictionaries.

---------

Co-authored-by: Michał Lisowski <mlisowski@sentient.ie>
This commit is contained in:
Michał Lisowski
2025-02-07 18:54:09 +01:00
committed by GitHub
parent 0c7f32937f
commit 4803b33f89
2 changed files with 13 additions and 7 deletions

View File

@ -56,10 +56,16 @@
{% endfor %}
{% endif %}
{% if item.value.sub_inputs is defined and item.value.sub_inputs is iterable %}
{% for sub_input, config in item.value.sub_inputs.items() %}
[[inputs.{{ item.value.plugin | default(item.key) }}.{{ sub_input }}]]
{% for items in config %}
{{ items }}
{% for sub_input_key, sub_input_list in item.value.sub_inputs.items() %}
{% for block in sub_input_list %}
[[inputs.{{ item.value.plugin | default(item.key) }}.{{ sub_input_key }}]]
{% for param_key, param_value in block.items() %}
{% if param_value is sequence and param_value is not string %}
{{ param_key }} = {{ param_value | to_json }}
{% else %}
{{ param_key }} = "{{ param_value }}"
{% endif %}
{% endfor %}
{% endfor %}
{% endfor %}
{% endif %}