From 34e2f5dfcf0caf1fec419e5ef015b0d31c7a4b13 Mon Sep 17 00:00:00 2001 From: Thierry Duvernoy Date: Fri, 20 Jun 2025 14:13:58 +0000 Subject: [PATCH 1/3] Prototype of nut-driver to nut-driver@ups evolution --- nut/map.jinja | 13 +++++++++++++ nut/server/service/running.sls | 13 +++++++++++-- 2 files changed, 24 insertions(+), 2 deletions(-) diff --git a/nut/map.jinja b/nut/map.jinja index 88fb925..15182b5 100644 --- a/nut/map.jinja +++ b/nut/map.jinja @@ -39,3 +39,16 @@ {%- set macos_group = salt['cmd.run']("stat -f '%Sg' /dev/console") %} {%- do nut.update({'group': macos_group}) %} {%- endif %} + +{# On récupère l'unité UPS définie dans les pillars #} +{%- set ups_units = salt['pillar.get']('nut:server:ups:config:units', {}) %} +{%- set ups_keys = ups_units.keys() | list %} +{%- set first_ups = ups_keys[0] if ups_keys | length > 0 else 'unknown' %} + +nut: + server: + ups: + service: + name: nut-driver@{{ first_ups }} + enabled: true + instance: {{ first_ups }} diff --git a/nut/server/service/running.sls b/nut/server/service/running.sls index ded3f79..124a7e7 100644 --- a/nut/server/service/running.sls +++ b/nut/server/service/running.sls @@ -1,6 +1,15 @@ # -*- coding: utf-8 -*- # vim: ft=sls +{% import_yaml "nut/map.jinja" as nutmap %} + +log-nut-instance: + module.run: + - name: cmd.run + - cmd: > + echo "DEBUG: nut-driver instance = {{ nutmap.nut.server.ups.instance }}, service = {{ nutmap.nut.server.ups.service.name }}" + + {#- Get the `tplroot` from `tpldir` #} {%- set tplroot = tpldir.split('/')[0] %} {%- set sls_config_file = tplroot ~ '.config.file' %} @@ -19,8 +28,8 @@ include: nut-server-service-running-ups-service-running: service.running: - - name: {{ nut.server.ups.service.name }} - - enable: {{ nut.server.ups.service.enabled }} + - name: {{ nutmap.nut.server.ups.service.name }} + - enable: {{ nutmap.nut.server.ups.service.enabled }} - watch: - sls: {{ sls_server_config_mode }} - sls: {{ sls_server_config_ups }} From 2c9606653ade02c3189e676cf20915178063f206 Mon Sep 17 00:00:00 2001 From: Thierry Duvernoy Date: Fri, 20 Jun 2025 14:35:47 +0000 Subject: [PATCH 2/3] Adding Debian >=12 test and suppress debug message --- nut/map.jinja | 15 ++++++++++++++- nut/server/service/running.sls | 7 ------- 2 files changed, 14 insertions(+), 8 deletions(-) diff --git a/nut/map.jinja b/nut/map.jinja index 15182b5..c872774 100644 --- a/nut/map.jinja +++ b/nut/map.jinja @@ -40,11 +40,22 @@ {%- do nut.update({'group': macos_group}) %} {%- endif %} -{# On récupère l'unité UPS définie dans les pillars #} + +{# BEGIN of post-processing for Debian >=12 nut-driver@ups #} +{%- set os_ver = grains.get('osrelease', '0') | int %} {%- set ups_units = salt['pillar.get']('nut:server:ups:config:units', {}) %} {%- set ups_keys = ups_units.keys() | list %} {%- set first_ups = ups_keys[0] if ups_keys | length > 0 else 'unknown' %} +{%- if os_ver < 12 %} +nut: + server: + ups: + service: + name: nut-driver + enabled: true + instance: '' +{%- else %} nut: server: ups: @@ -52,3 +63,5 @@ nut: name: nut-driver@{{ first_ups }} enabled: true instance: {{ first_ups }} +{%- endif %} +{# END of post-processing for Debian >=12 nut-driver@ups #} \ No newline at end of file diff --git a/nut/server/service/running.sls b/nut/server/service/running.sls index 124a7e7..50ac900 100644 --- a/nut/server/service/running.sls +++ b/nut/server/service/running.sls @@ -3,13 +3,6 @@ {% import_yaml "nut/map.jinja" as nutmap %} -log-nut-instance: - module.run: - - name: cmd.run - - cmd: > - echo "DEBUG: nut-driver instance = {{ nutmap.nut.server.ups.instance }}, service = {{ nutmap.nut.server.ups.service.name }}" - - {#- Get the `tplroot` from `tpldir` #} {%- set tplroot = tpldir.split('/')[0] %} {%- set sls_config_file = tplroot ~ '.config.file' %} From 1636df9f754902f38afd7ac12ae90935b89aadc2 Mon Sep 17 00:00:00 2001 From: Thierry Duvernoy Date: Fri, 20 Jun 2025 15:06:42 +0000 Subject: [PATCH 3/3] Finalyzing nut-driver to nut-driver@ups evolution for Debian >=12 --- nut/map.jinja | 31 ++++++++++++++----------------- nut/server/service/running.sls | 12 +++++++----- 2 files changed, 21 insertions(+), 22 deletions(-) diff --git a/nut/map.jinja b/nut/map.jinja index c872774..78480e0 100644 --- a/nut/map.jinja +++ b/nut/map.jinja @@ -41,27 +41,24 @@ {%- endif %} -{# BEGIN of post-processing for Debian >=12 nut-driver@ups #} +{# BEGIN: Post-processing for multi-UPS + Debian 10/12 nut-driver@ups #} {%- set os_ver = grains.get('osrelease', '0') | int %} {%- set ups_units = salt['pillar.get']('nut:server:ups:config:units', {}) %} {%- set ups_keys = ups_units.keys() | list %} -{%- set first_ups = ups_keys[0] if ups_keys | length > 0 else 'unknown' %} {%- if os_ver < 12 %} -nut: - server: - ups: - service: - name: nut-driver - enabled: true - instance: '' + {# Debian 10 : one service only nut-driver #} + {%- do nut.setdefault('server', {}).setdefault('ups', {}).update({ + 'services': [{'name': 'nut-driver', 'enabled': True}] + }) %} {%- else %} -nut: - server: - ups: - service: - name: nut-driver@{{ first_ups }} - enabled: true - instance: {{ first_ups }} + {# Debian 12+ : un service par UPS #} + {%- set services = [] %} + {%- for ups in ups_keys %} + {%- do services.append({'name': 'nut-driver@' ~ ups, 'enabled': True}) %} + {%- endfor %} + {%- do nut.setdefault('server', {}).setdefault('ups', {}).update({ + 'services': services + }) %} {%- endif %} -{# END of post-processing for Debian >=12 nut-driver@ups #} \ No newline at end of file +{# END: Post-processing for multi-UPS + Debian 10/12 nut-driver@ups #} \ No newline at end of file diff --git a/nut/server/service/running.sls b/nut/server/service/running.sls index 50ac900..f1820cf 100644 --- a/nut/server/service/running.sls +++ b/nut/server/service/running.sls @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # vim: ft=sls -{% import_yaml "nut/map.jinja" as nutmap %} +{%- from "nut/map.jinja" import nut as nutmap with context %} {#- Get the `tplroot` from `tpldir` #} {%- set tplroot = tpldir.split('/')[0] %} @@ -19,17 +19,19 @@ include: - {{ sls_server_config_upsd }} - {{ sls_server_config_users }} -nut-server-service-running-ups-service-running: +{%- for svc in nutmap.server.ups.services %} +nut-server-service-running-ups-service-running-{{ loop.index }}: service.running: - - name: {{ nutmap.nut.server.ups.service.name }} - - enable: {{ nutmap.nut.server.ups.service.enabled }} + - name: {{ svc.name }} + - enable: {{ svc.enabled }} - watch: - sls: {{ sls_server_config_mode }} - sls: {{ sls_server_config_ups }} - sls: {{ sls_server_config_upsd }} - sls: {{ sls_server_config_users }} # If the mode is 'none' we respect the package and do nothing - - unless: test "{{ nut.mode }}" = "none" + - unless: test "{{ nutmap.mode }}" = "none" +{%- endfor %} nut-server-service-running-upsd-service-running: service.running: