From 650854fa2730c6f61a3f7117d7271907e4a2a587 Mon Sep 17 00:00:00 2001
From: Georg Pfuetzenreuter
Date: Tue, 7 Feb 2023 22:20:39 +0100
Subject: Refactor matterbridge profile

- reduce pillar calls
- no longer define possible configuration options, apply settings from
  pillar 1:1

Signed-off-by: Georg Pfuetzenreuter <mail@georg-pfuetzenreuter.net>
---
 .../files/etc/matterbridge/matterbridge.toml.j2    | 40 ++++++++++------------
 salt/profile/matterbridge/init.sls                 |  9 +++--
 2 files changed, 26 insertions(+), 23 deletions(-)

(limited to 'salt')

diff --git a/salt/profile/matterbridge/files/etc/matterbridge/matterbridge.toml.j2 b/salt/profile/matterbridge/files/etc/matterbridge/matterbridge.toml.j2
index 11204f3..b234c9f 100644
--- a/salt/profile/matterbridge/files/etc/matterbridge/matterbridge.toml.j2
+++ b/salt/profile/matterbridge/files/etc/matterbridge/matterbridge.toml.j2
@@ -1,35 +1,33 @@
 {%- set header = salt['pillar.get']('managed_header_pound') -%}
-{%- set myfqdn = salt['grains.get']('fqdn') -%}
-{%- set mypillar = 'profile:matterbridge:instances:' ~ instance ~ ':' -%}
-{%- set myaccounts = mypillar ~ 'accounts' -%}
-{%- set mygateways = mypillar ~ 'gateways' -%}
-{%- set generalopts = ['RemoteNickFormat', 'IgnoreFailureOnStart', 'MessageSplit', 'MediaDownloadSize', 'MediaDownloadPath', 'MediaServerDownload', 'LogFile'] -%}
-{%- set accountopts = ['Nick', 'NickServNick', 'NickServPassword', 'Server', 'UseTLS', 'UseSASL', 'Label', 'Charset', 'IgnoreNicks', 'RunCommands', 'UseRelayMsg', 'RemoteNickFormat'] -%}
 {{ header }}
 
+{%- if general | length %}
 [general]
-{% for option in generalopts %}
-{%- if salt['pillar.get'](mypillar ~ option, None) != None %}
-{{ option }}="{{ salt['pillar.get'](mypillar ~ option) }}"
-{%- endif -%}
-{%- endfor -%}
+{%- for option, value in general.items() %}
+{%- if value is string %}
+{%- set value = '"' ~ value ~ '"' %}
+{%- endif %}
+{{ option }}={{ value }}
+{%- endfor %}
+{% endif %}
 
-{% for account, config in salt['pillar.get'](myaccounts).items() %}
-[{{ config['protocol'] }}.{{ account }}]
-{%- for option in accountopts %}
-{%- if salt['pillar.get'](myaccounts ~ ':' ~ account ~ ':' ~ option, None) != None %}
-{{ option }}="{{ config[option] }}"
-{%- endif -%}
+{%- for account, config in accounts.items() %}
+[{{ account }}]
+{%- for option, value in config.items() %}
+{%- if value is string %}
+{%- set value = '"' ~ value ~ '"' %}
+{%- endif %}
+{{ option }}={{ value }}
+{%- endfor %}
 {% endfor %}
-{% endfor -%}
 
-{% for gateway, config in salt['pillar.get'](mygateways).items() %}
+{%- for gateway, config in gateways.items() %}
 [[gateway]]
 name="{{ gateway }}"
 enable=true
-{% for account, channel in config.items() %}
+{%- for account, channel in config.items() %}
   [[gateway.inout]]
   account="{{ account }}"
   channel="{{ channel }}"
+{%- endfor %}
 {% endfor %}
-{%- endfor -%}
diff --git a/salt/profile/matterbridge/init.sls b/salt/profile/matterbridge/init.sls
index eee6df2..1e0cd51 100644
--- a/salt/profile/matterbridge/init.sls
+++ b/salt/profile/matterbridge/init.sls
@@ -1,5 +1,5 @@
-{%- set mypillar = 'profile:matterbridge' -%}
-{%- set instances = salt['pillar.get'](mypillar ~ ':instances') or [] -%}
+{%- set mypillar = salt['pillar.get']('profile:matterbridge') -%}
+{%- set instances = mypillar['instances'] | default([]) -%}
 
 matterbridge_packages:
   pkg.installed:
@@ -31,7 +31,12 @@ matterbridge_files:
       - /etc/matterbridge/{{ instance }}.toml:
         - context:
             instance: {{ instance }}
+            general: {{ instances[instance]['general'] | default({}) }}
+            accounts: {{ instances[instance]['accounts'] }}
+            gateways: {{ instances[instance]['gateways'] }}
+{%- endfor %}
 
+{%- for instance in instances %}
 matterbridge_{{ instance }}_service:
   service.running:
     - name: matterbridge@{{ instance }}.service
-- 
cgit v1.2.3