[pve-devel] [PATCH many v3 0/8] notifications: move template strings to template files

Max Carrara m.carrara at proxmox.com
Wed May 22 09:00:11 CEST 2024


On Tue May 21, 2024 at 3:31 PM CEST, Lukas Wagner wrote:
> These changes adapts the PVE notification stack to the changes introduced
> in proxmox-notify 0.4.

Applied all patches, bumped deps manually where needed and gave this
series a spin on both my development VM and my new HA test cluster.

Building
--------

No issues here, except that the dependency bump(s) for `proxmox-notify`
could *maybe* already be included in a (separate?) patch IMO, but no
hard feelings there.

Testing
-------

* installed all relevant deb packages on my development VM
* packages installed cleanly, didn't notice any issues
* ran a random backup, vzdump notification was received as expected

* installed all relevant deb packages on my HA test cluster VMs
* packages also installed cleanly there, didn't notice any issues
  (HA kept working)
* intentionally stopped one of the HA nodes on which a VM was running
  to force the VM being fenced
* received fencing notifications as expected
* altered one of the fencing notif templates and forced another fence
  for good measure
* altered notification came through, as expected (neat!)

Seems to work flawlessly. Nice job!

Didn't go through every single template here; just wanted to ensure that
I covered a rather common case (running backups) and a case that's
considered more critical (HA fencing, definitely don't wanna miss that).

Code Review
-----------

Nothing special here - as in, the patches are logically separated, easy
to follow and formatted according to our style guides & `cargo fmt`.

Summary
-------

LGTM.

Tested-by: Max Carrara <m.carrara at proxmox.com>
Reviewed-by: Max Carrara <m.carrara at proxmox.com>

>
> The notification system uses handlebar templates to render the subject
> and the body of notifications. Previously, the template strings were
> defined inline at the call site. This patch series extracts the templates
> into template files and installs them at
>   /usr/share/pve-manager/templates/default
>
> where they stored as <template-name>-{body,subject}.{txt,html}.hbs
>
> The 'default' part in the path is a preparation for translated
> notifications and/or overridable notification templates.
> Future work could provide notifications translated to e.g. German
> in `templates/de` or similar. This will be a first for having
> translated strings on the backend-side, so there is need for further
> research.
>
> Folke kindly did some off-list testing before this was posted, hence
> his T-bs were included.
>
> Bumps/dependencies:
>   - libproxmox-rs-perl needs to have its proxmox-notify dep updated to 0.4
>     and breaks old libpve-notify-perl (versioned break)
>   - libpve-notify-perl breaks old pve-manager and old pve-ha-manager (versioned break)
>
> The versioned breaks are necessary due to changed semantics in the API (passing
> a template name instead of template strings) and due to changes in how
> templates are rendered (separate templates for HTML/plain text, whereas before
> both were rendered from the same template string, with some magic from
> handlebar helpers)
>
> Changes since v2:
>   - Dropped already applied patches for 'proxmox'
>   - Rebased, quick smoke-test to check if anything broke
>     in the meanwhile
>
> Changes since v1:
>   - Incorporated feedback from @Fiona and @Fabian - thanks!
>     - most noteworthy: Change template path from /usr/share/proxmox-ve
>       to /usr/share/pve-manager
>     - apart from that mostly just cosmetics/style
>
> proxmox-perl-rs:
>
> Lukas Wagner (3):
>   notify: use file based notification templates
>   notify: don't pass config structs by reference
>   notify: adapt to Option<Vec<T>> to Vec<T> changes in proxmox_notify
>
>  common/src/notify.rs | 48 +++++++++++++++++++++-----------------------
>  1 file changed, 23 insertions(+), 25 deletions(-)
>
>
> pve-cluster:
>
> Lukas Wagner (1):
>   notify: use named template instead of passing template strings
>
>  src/PVE/Notify.pm | 29 ++++++++++++-----------------
>  1 file changed, 12 insertions(+), 17 deletions(-)
>
>
> pve-ha-manager:
>
> Lukas Wagner (1):
>   env: notify: use named templates instead of passing template strings
>
>  debian/pve-ha-manager.install                 |  3 +++
>  src/Makefile                                  |  1 +
>  src/PVE/HA/Env/PVE2.pm                        |  4 ++--
>  src/PVE/HA/NodeStatus.pm                      | 20 +------------------
>  src/PVE/HA/Sim/Env.pm                         |  3 ++-
>  src/templates/Makefile                        | 10 ++++++++++
>  src/templates/default/fencing-body.html.hbs   | 14 +++++++++++++
>  src/templates/default/fencing-body.txt.hbs    | 11 ++++++++++
>  src/templates/default/fencing-subject.txt.hbs |  1 +
>  9 files changed, 45 insertions(+), 22 deletions(-)
>  create mode 100644 src/templates/Makefile
>  create mode 100644 src/templates/default/fencing-body.html.hbs
>  create mode 100644 src/templates/default/fencing-body.txt.hbs
>  create mode 100644 src/templates/default/fencing-subject.txt.hbs
>
>
> pve-manager:
>
> Lukas Wagner (3):
>   gitignore: ignore any test artifacts
>   tests: remove vzdump_notification test
>   notifications: use named templates instead of in-code templates
>
>  .gitignore                                    |   2 +
>  Makefile                                      |   2 +-
>  PVE/API2/APT.pm                               |   9 +-
>  PVE/API2/Replication.pm                       |  20 +---
>  PVE/VZDump.pm                                 |  20 +---
>  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 +
>  test/Makefile                                 |   6 +-
>  test/vzdump_notification_test.pl              | 101 ------------------
>  20 files changed, 98 insertions(+), 152 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
>  delete mode 100755 test/vzdump_notification_test.pl
>
>
> Summary over all repositories:
>   31 files changed, 178 insertions(+), 216 deletions(-)





More information about the pve-devel mailing list