feat(systemd-notify): allow multiple failure scripts
All checks were successful
Check meta / check_dns (pull_request) Successful in 14s
Check meta / check_dns (push) Successful in 18s
Check workflows / check_workflows (pull_request) Successful in 17s
Check meta / check_meta (push) Successful in 18s
Check meta / check_meta (pull_request) Successful in 21s
Build all the nodes / Jaccess04 (pull_request) Successful in 25s
Build all the nodes / Jaccess01 (pull_request) Successful in 25s
Run pre-commit on all files / pre-commit (pull_request) Successful in 29s
Build all the nodes / ap01 (pull_request) Successful in 41s
Build all the nodes / bridge01 (pull_request) Successful in 46s
Build all the nodes / cof02 (pull_request) Successful in 51s
Build all the nodes / build01 (pull_request) Successful in 57s
Build all the nodes / geo01 (pull_request) Successful in 50s
Build all the nodes / geo02 (pull_request) Successful in 51s
Build all the nodes / hypervisor01 (pull_request) Successful in 54s
Build all the nodes / hypervisor03 (pull_request) Successful in 53s
Build all the nodes / hypervisor02 (pull_request) Successful in 1m0s
Build all the nodes / compute01 (pull_request) Successful in 1m19s
Build all the nodes / netcore01 (pull_request) Successful in 24s
Build all the nodes / netcore02 (pull_request) Successful in 26s
Build all the nodes / iso (pull_request) Successful in 55s
Build all the nodes / lab-router01 (pull_request) Successful in 46s
Build the shell / build-shell (pull_request) Successful in 24s
Build all the nodes / tower01 (pull_request) Successful in 46s
Build all the nodes / web02 (pull_request) Successful in 48s
Build all the nodes / rescue01 (pull_request) Successful in 1m14s
Build all the nodes / vault01 (pull_request) Successful in 1m4s
Build all the nodes / krz01 (pull_request) Successful in 1m45s
Build all the nodes / web03 (pull_request) Successful in 1m1s
Build all the nodes / zulip01 (pull_request) Successful in 57s
Build all the nodes / web01 (pull_request) Successful in 1m13s
Build all the nodes / storage01 (pull_request) Successful in 1m38s
Build all the nodes / Jaccess04 (push) Successful in 24s
Build all the nodes / Jaccess01 (push) Successful in 28s
Run pre-commit on all files / pre-commit (push) Successful in 30s
Build all the nodes / ap01 (push) Successful in 43s
Build all the nodes / bridge01 (push) Successful in 48s
Build all the nodes / netcore01 (push) Successful in 25s
Build all the nodes / hypervisor01 (push) Successful in 52s
Build all the nodes / geo01 (push) Successful in 57s
Build all the nodes / cof02 (push) Successful in 1m1s
Build all the nodes / hypervisor03 (push) Successful in 1m0s
Build all the nodes / hypervisor02 (push) Successful in 1m1s
Build all the nodes / geo02 (push) Successful in 1m2s
Build all the nodes / build01 (push) Successful in 1m4s
Build all the nodes / netcore02 (push) Successful in 22s
Build all the nodes / iso (push) Successful in 1m4s
Build all the nodes / lab-router01 (push) Successful in 55s
Build all the nodes / compute01 (push) Successful in 1m20s
Build all the nodes / krz01 (push) Successful in 1m36s
Build all the nodes / tower01 (push) Successful in 47s
Build the shell / build-shell (push) Successful in 21s
Build all the nodes / vault01 (push) Successful in 56s
Build all the nodes / web02 (push) Successful in 51s
Build all the nodes / rescue01 (push) Successful in 1m10s
Build all the nodes / web03 (push) Successful in 54s
Build all the nodes / zulip01 (push) Successful in 46s
Build all the nodes / web01 (push) Successful in 1m8s
Build all the nodes / storage01 (push) Successful in 1m35s
All checks were successful
Check meta / check_dns (pull_request) Successful in 14s
Check meta / check_dns (push) Successful in 18s
Check workflows / check_workflows (pull_request) Successful in 17s
Check meta / check_meta (push) Successful in 18s
Check meta / check_meta (pull_request) Successful in 21s
Build all the nodes / Jaccess04 (pull_request) Successful in 25s
Build all the nodes / Jaccess01 (pull_request) Successful in 25s
Run pre-commit on all files / pre-commit (pull_request) Successful in 29s
Build all the nodes / ap01 (pull_request) Successful in 41s
Build all the nodes / bridge01 (pull_request) Successful in 46s
Build all the nodes / cof02 (pull_request) Successful in 51s
Build all the nodes / build01 (pull_request) Successful in 57s
Build all the nodes / geo01 (pull_request) Successful in 50s
Build all the nodes / geo02 (pull_request) Successful in 51s
Build all the nodes / hypervisor01 (pull_request) Successful in 54s
Build all the nodes / hypervisor03 (pull_request) Successful in 53s
Build all the nodes / hypervisor02 (pull_request) Successful in 1m0s
Build all the nodes / compute01 (pull_request) Successful in 1m19s
Build all the nodes / netcore01 (pull_request) Successful in 24s
Build all the nodes / netcore02 (pull_request) Successful in 26s
Build all the nodes / iso (pull_request) Successful in 55s
Build all the nodes / lab-router01 (pull_request) Successful in 46s
Build the shell / build-shell (pull_request) Successful in 24s
Build all the nodes / tower01 (pull_request) Successful in 46s
Build all the nodes / web02 (pull_request) Successful in 48s
Build all the nodes / rescue01 (pull_request) Successful in 1m14s
Build all the nodes / vault01 (pull_request) Successful in 1m4s
Build all the nodes / krz01 (pull_request) Successful in 1m45s
Build all the nodes / web03 (pull_request) Successful in 1m1s
Build all the nodes / zulip01 (pull_request) Successful in 57s
Build all the nodes / web01 (pull_request) Successful in 1m13s
Build all the nodes / storage01 (pull_request) Successful in 1m38s
Build all the nodes / Jaccess04 (push) Successful in 24s
Build all the nodes / Jaccess01 (push) Successful in 28s
Run pre-commit on all files / pre-commit (push) Successful in 30s
Build all the nodes / ap01 (push) Successful in 43s
Build all the nodes / bridge01 (push) Successful in 48s
Build all the nodes / netcore01 (push) Successful in 25s
Build all the nodes / hypervisor01 (push) Successful in 52s
Build all the nodes / geo01 (push) Successful in 57s
Build all the nodes / cof02 (push) Successful in 1m1s
Build all the nodes / hypervisor03 (push) Successful in 1m0s
Build all the nodes / hypervisor02 (push) Successful in 1m1s
Build all the nodes / geo02 (push) Successful in 1m2s
Build all the nodes / build01 (push) Successful in 1m4s
Build all the nodes / netcore02 (push) Successful in 22s
Build all the nodes / iso (push) Successful in 1m4s
Build all the nodes / lab-router01 (push) Successful in 55s
Build all the nodes / compute01 (push) Successful in 1m20s
Build all the nodes / krz01 (push) Successful in 1m36s
Build all the nodes / tower01 (push) Successful in 47s
Build the shell / build-shell (push) Successful in 21s
Build all the nodes / vault01 (push) Successful in 56s
Build all the nodes / web02 (push) Successful in 51s
Build all the nodes / rescue01 (push) Successful in 1m10s
Build all the nodes / web03 (push) Successful in 54s
Build all the nodes / zulip01 (push) Successful in 46s
Build all the nodes / web01 (push) Successful in 1m8s
Build all the nodes / storage01 (push) Successful in 1m35s
This commit is contained in:
parent
c1afcb7768
commit
d6300e6e19
2 changed files with 30 additions and 33 deletions
|
@ -6,44 +6,44 @@
|
|||
|
||||
let
|
||||
inherit (lib)
|
||||
mkEnableOption
|
||||
mkIf
|
||||
getExe
|
||||
mapAttrs'
|
||||
mapAttrsToList
|
||||
mkOption
|
||||
mkForce
|
||||
optional
|
||||
nameValuePair
|
||||
;
|
||||
inherit (lib.types) attrsOf str submodule;
|
||||
inherit (lib.types) attrsOf package submodule;
|
||||
|
||||
cfg = config.services.systemd-notify;
|
||||
in
|
||||
|
||||
{
|
||||
options.services.systemd-notify = {
|
||||
enable = mkEnableOption "notifications when a systemd unit fails.";
|
||||
|
||||
command = mkOption {
|
||||
type = str;
|
||||
description = ''
|
||||
Command to run on failure of a systemd unit.
|
||||
Takes the name of the failed unit as an argument.
|
||||
'';
|
||||
};
|
||||
options.services.systemd-notify = mkOption {
|
||||
type = attrsOf package;
|
||||
description = ''
|
||||
Commands to execute when a systemd unit fails.
|
||||
Attrs keys will be the unit name and attrs value is the command that
|
||||
will be run with the name of the failed unit as an argument.
|
||||
'';
|
||||
default = { };
|
||||
};
|
||||
|
||||
options.systemd.services = mkOption {
|
||||
type = attrsOf (submodule {
|
||||
config.onFailure = optional cfg.enable "email@%n.service";
|
||||
config.onFailure = mapAttrsToList (name: _: "${name}@%n.service") cfg;
|
||||
});
|
||||
};
|
||||
|
||||
config = mkIf cfg.enable {
|
||||
systemd.services."email@" = {
|
||||
description = "Sends a status mail via sendmail on service failures.";
|
||||
config.systemd.services = mapAttrs' (
|
||||
name: script:
|
||||
nameValuePair "${name}@" {
|
||||
description = "Run ${name} script on service failures.";
|
||||
onFailure = mkForce [ ]; # Avoid recursive failures
|
||||
serviceConfig = {
|
||||
ExecStart = "${cfg.command} %i";
|
||||
ExecStart = "${getExe script} %i";
|
||||
Type = "oneshot";
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
) cfg;
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue