This commit adapts notification sending for - package update - replication - backups
to use named templates (installed in /usr/share/proxmox-ve/templates) instead of passing template strings defined in code to the notification stack. Signed-off-by: Lukas Wagner <l.wag...@proxmox.com> Tested-by: Folke Gleumes <f.gleu...@proxmox.com> --- Makefile | 2 +- PVE/API2/APT.pm | 9 +------ PVE/API2/Replication.pm | 20 +--------------- PVE/VZDump.pm | 6 ++--- templates/Makefile | 24 +++++++++++++++++++ .../default/package-updates-body.html.hbs | 6 +++++ .../default/package-updates-body.txt.hbs | 3 +++ .../default/package-updates-subject.txt.hbs | 1 + templates/default/replication-body.html.hbs | 18 ++++++++++++++ templates/default/replication-body.txt.hbs | 12 ++++++++++ templates/default/replication-subject.txt.hbs | 1 + templates/default/test-body.html.hbs | 1 + templates/default/test-body.txt.hbs | 1 + templates/default/test-subject.txt.hbs | 1 + templates/default/vzdump-body.html.hbs | 11 +++++++++ templates/default/vzdump-body.txt.hbs | 10 ++++++++ templates/default/vzdump-subject.txt.hbs | 1 + 17 files changed, 95 insertions(+), 32 deletions(-) create mode 100644 templates/Makefile create mode 100644 templates/default/package-updates-body.html.hbs create mode 100644 templates/default/package-updates-body.txt.hbs create mode 100644 templates/default/package-updates-subject.txt.hbs create mode 100644 templates/default/replication-body.html.hbs create mode 100644 templates/default/replication-body.txt.hbs create mode 100644 templates/default/replication-subject.txt.hbs create mode 100644 templates/default/test-body.html.hbs create mode 100644 templates/default/test-body.txt.hbs create mode 100644 templates/default/test-subject.txt.hbs create mode 100644 templates/default/vzdump-body.html.hbs create mode 100644 templates/default/vzdump-body.txt.hbs create mode 100644 templates/default/vzdump-subject.txt.hbs diff --git a/Makefile b/Makefile index 28295395..337682b3 100644 --- a/Makefile +++ b/Makefile @@ -10,7 +10,7 @@ DSC=$(PACKAGE)_$(DEB_VERSION).dsc DEB=$(PACKAGE)_$(DEB_VERSION)_$(DEB_HOST_ARCH).deb DESTDIR= -SUBDIRS = aplinfo PVE bin www services configs network-hooks test +SUBDIRS = aplinfo PVE bin www services configs network-hooks test templates all: $(SUBDIRS) set -e && for i in $(SUBDIRS); do $(MAKE) -C $$i; done diff --git a/PVE/API2/APT.pm b/PVE/API2/APT.pm index 54121ec2..b4a24c3e 100644 --- a/PVE/API2/APT.pm +++ b/PVE/API2/APT.pm @@ -238,12 +238,6 @@ __PACKAGE__->register_method({ return $pkglist; }}); -my $updates_available_subject_template = "New software packages available ({{hostname}})"; -my $updates_available_body_template = <<EOT; -The following updates are available: -{{table updates}} -EOT - __PACKAGE__->register_method({ name => 'update_database', path => 'update', @@ -358,8 +352,7 @@ __PACKAGE__->register_method({ }; PVE::Notify::info( - $updates_available_subject_template, - $updates_available_body_template, + "package-updates", $template_data, $metadata_fields, ); diff --git a/PVE/API2/Replication.pm b/PVE/API2/Replication.pm index 0dc944c9..d84ac1ab 100644 --- a/PVE/API2/Replication.pm +++ b/PVE/API2/Replication.pm @@ -92,23 +92,6 @@ my sub _should_mail_at_failcount { return $i * 48 == $fail_count; }; -my $replication_error_subject_template = "Replication Job: '{{job-id}}' failed"; -my $replication_error_body_template = <<EOT; -{{#verbatim}} -Replication job '{{job-id}}' with target '{{job-target}}' and schedule '{{job-schedule}}' failed! - -Last successful sync: {{timestamp last-sync}} -Next sync try: {{timestamp next-sync}} -Failure count: {{failure-count}} - -{{#if (eq failure-count 3)}} -Note: The system will now reduce the frequency of error reports, as the job -appears to be stuck. -{{/if}} -Error: -{{verbatim-monospaced error}} -{{/verbatim}} -EOT my sub _handle_job_err { my ($job, $err, $mail) = @_; @@ -146,8 +129,7 @@ my sub _handle_job_err { eval { PVE::Notify::error( - $replication_error_subject_template, - $replication_error_body_template, + "replication", $template_data, $metadata_fields ); diff --git a/PVE/VZDump.pm b/PVE/VZDump.pm index 152eb3e5..2ea626f0 100644 --- a/PVE/VZDump.pm +++ b/PVE/VZDump.pm @@ -544,8 +544,7 @@ sub send_notification { PVE::Notify::notify( $severity, - $subject_template, - $body_template, + "vzdump", $notification_props, $fields, $notification_config @@ -556,8 +555,7 @@ sub send_notification { # no email addresses were configured. PVE::Notify::notify( $severity, - $subject_template, - $body_template, + "vzdump", $notification_props, $fields, ); diff --git a/templates/Makefile b/templates/Makefile new file mode 100644 index 00000000..b0add81e --- /dev/null +++ b/templates/Makefile @@ -0,0 +1,24 @@ +NOTIFICATION_TEMPLATES= \ + default/test-subject.txt.hbs \ + default/test-body.txt.hbs \ + default/test-body.html.hbs \ + default/vzdump-subject.txt.hbs \ + default/vzdump-body.txt.hbs \ + default/vzdump-body.html.hbs \ + default/replication-subject.txt.hbs \ + default/replication-body.txt.hbs \ + default/replication-body.html.hbs \ + default/package-updates-subject.txt.hbs \ + default/package-updates-body.txt.hbs \ + default/package-updates-body.html.hbs \ + +all: + +.PHONY: install +install: + install -dm 0755 $(DESTDIR)/usr/share/proxmox-ve/templates/default + $(foreach i,$(NOTIFICATION_TEMPLATES), \ + install -m644 $(i) $(DESTDIR)/usr/share/proxmox-ve/templates/$(i) ;) + + +clean: diff --git a/templates/default/package-updates-body.html.hbs b/templates/default/package-updates-body.html.hbs new file mode 100644 index 00000000..d058e114 --- /dev/null +++ b/templates/default/package-updates-body.html.hbs @@ -0,0 +1,6 @@ +<html> + <body> + The following updates are available: + {{table updates}} + </body> +</html> diff --git a/templates/default/package-updates-body.txt.hbs b/templates/default/package-updates-body.txt.hbs new file mode 100644 index 00000000..14bdbf9e --- /dev/null +++ b/templates/default/package-updates-body.txt.hbs @@ -0,0 +1,3 @@ +The following updates are available: + +{{table updates}} diff --git a/templates/default/package-updates-subject.txt.hbs b/templates/default/package-updates-subject.txt.hbs new file mode 100644 index 00000000..556a67b8 --- /dev/null +++ b/templates/default/package-updates-subject.txt.hbs @@ -0,0 +1 @@ +New software packages available ({{hostname}}) diff --git a/templates/default/replication-body.html.hbs b/templates/default/replication-body.html.hbs new file mode 100644 index 00000000..d1dea6a1 --- /dev/null +++ b/templates/default/replication-body.html.hbs @@ -0,0 +1,18 @@ +<html> + <body> + Replication job '{{job-id}}' with target '{{job-target}}' and schedule '{{job-schedule}}' failed!<br/><br/> + + Last successful sync: {{timestamp last-sync}}<br/> + Next sync try: {{timestamp next-sync}}<br/> + Failure count: {{failure-count}}<br/> + + {{#if (eq failure-count 3)}} + Note: The system will now reduce the frequency of error reports, as the job appears to be stuck. + {{/if}} + <br/> + Error:<br/> + <pre> +{{error}} + </pre> + </body> +</html> diff --git a/templates/default/replication-body.txt.hbs b/templates/default/replication-body.txt.hbs new file mode 100644 index 00000000..a9273fef --- /dev/null +++ b/templates/default/replication-body.txt.hbs @@ -0,0 +1,12 @@ +Replication job '{{job-id}}' with target '{{job-target}}' and schedule '{{job-schedule}}' failed! + +Last successful sync: {{timestamp last-sync}} +Next sync try: {{timestamp next-sync}} +Failure count: {{failure-count}} + +{{#if (eq failure-count 3)}} +Note: The system will now reduce the frequency of error reports, as the job +appears to be stuck. +{{/if}} +Error: +{{ error }} diff --git a/templates/default/replication-subject.txt.hbs b/templates/default/replication-subject.txt.hbs new file mode 100644 index 00000000..9dbaafcd --- /dev/null +++ b/templates/default/replication-subject.txt.hbs @@ -0,0 +1 @@ +Replication Job: '{{job-id}}' failed diff --git a/templates/default/test-body.html.hbs b/templates/default/test-body.html.hbs new file mode 100644 index 00000000..26a43dde --- /dev/null +++ b/templates/default/test-body.html.hbs @@ -0,0 +1 @@ +This is a test of the notification target '{{ target }}'. diff --git a/templates/default/test-body.txt.hbs b/templates/default/test-body.txt.hbs new file mode 100644 index 00000000..26a43dde --- /dev/null +++ b/templates/default/test-body.txt.hbs @@ -0,0 +1 @@ +This is a test of the notification target '{{ target }}'. diff --git a/templates/default/test-subject.txt.hbs b/templates/default/test-subject.txt.hbs new file mode 100644 index 00000000..cb8e1320 --- /dev/null +++ b/templates/default/test-subject.txt.hbs @@ -0,0 +1 @@ +Test notification diff --git a/templates/default/vzdump-body.html.hbs b/templates/default/vzdump-body.html.hbs new file mode 100644 index 00000000..b6730cbb --- /dev/null +++ b/templates/default/vzdump-body.html.hbs @@ -0,0 +1,11 @@ +<html> + <body> + {{error-message}} + <h1 style="font-size: 1.2em">Details</h1> + {{table guest-table}} + Total running time: {{duration total-time}}<br/> + Total size: {{human-bytes total-size}}<br/> + <h1 style="font-size: 1.2em">Logs</h1> + <pre>{{logs}}</pre> + </body> +</html> diff --git a/templates/default/vzdump-body.txt.hbs b/templates/default/vzdump-body.txt.hbs new file mode 100644 index 00000000..90f5b0a4 --- /dev/null +++ b/templates/default/vzdump-body.txt.hbs @@ -0,0 +1,10 @@ +{{error-message}} +Details +======= +{{table guest-table}} +Total running time: {{duration total-time}} +Total size: {{human-bytes total-size}} + +Logs +==== +{{logs}} diff --git a/templates/default/vzdump-subject.txt.hbs b/templates/default/vzdump-subject.txt.hbs new file mode 100644 index 00000000..98a3d9aa --- /dev/null +++ b/templates/default/vzdump-subject.txt.hbs @@ -0,0 +1 @@ +vzdump backup status ({{hostname}}): {{status-text}} -- 2.39.2 _______________________________________________ pve-devel mailing list pve-devel@lists.proxmox.com https://lists.proxmox.com/cgi-bin/mailman/listinfo/pve-devel