public inbox for pbs-devel@lists.proxmox.com
 help / color / mirror / Atom feed
From: Lukas Wagner <l.wagner@proxmox.com>
To: pbs-devel@lists.proxmox.com
Subject: Re: [pbs-devel] [PATCH proxmox-backup 00/33] integrate notification system
Date: Wed, 17 Apr 2024 16:38:03 +0200	[thread overview]
Message-ID: <b97754c0-bdcc-4a6e-ba40-8541288dd8ad@proxmox.com> (raw)
In-Reply-To: <20240412100631.94218-1-l.wagner@proxmox.com>

Superseded-by: https://lists.proxmox.com/pipermail/pbs-devel/2024-April/008639.html

On  2024-04-12 12:05, Lukas Wagner wrote:
> These patches integrate the notification system which was introduced in Proxmox VE
> in 8.1 into Proxmox Backup Server.
> 
> Some highlights/noteworthy details from the series:
>   - notification template files are installed in /usr/share/proxmox-backup/templates/default
>     and are rendered when a notification is sent
>   - since sending notifications needs to be done from a privileged context
>     (to read protected passwords/tokens from the priv config file),
>     we queue notifications to be sent in /var/lib/proxmox-backup/notifications
>     and periodically send any queued notifications via a worker in the
>     privileged process
>   - The API endpoint paths are prefixed with /config/notifications
>   - API endpoints which read/modify notification system config require
>     Sys.Audit (read) or Sys.Modify (modify) permissions on /system/notifications
> 
>   - tape-{backup,restore} settings and datastore options now have a
>     'notification-mode' parameter, which allows to choose between the
>     'legacy' behavior (sendmail to a selected user's email address) and
>     the event-based notification system. If the parameter is not set, we
>     default to the legacy behavior in order to keep existing behavior
>     as is for now. For new datastores/tape backup jobs created
>     interactively from teh UI, we set the parameter to 'notification-system'
>     and opt in into the new system by default.
> 
> Still missing/rough edges:
>   - documentation (will follow soon)
>   - Datastore option view in UI could be improved. When 'notification-mode' is
>     set to 'notification-system', we should indicate that 'mailto-user' and the
>     other notification settings have no effect. Already did that in the edit
>     window, but in the grid panel I did not find a quick way to do that.
> 
>   - still needs a bit more testing (e.g. ACME notifications) - would greatly
>     appreciate people helping here!
> 
> Open questions:
>   - Right now the 'default-matcher' matches every notification, same as in PVE.
>     Up until now, datastore prune notifications were only sent on errors, so
>     maybe we should also have the default-matcher work the same?
>     The default matcher would then probably be:
>       - !All
>           - severity: error
>           - match-field: exact:type=prune
> 
> This patch series requires the patches for 'proxmox' from
> https://lists.proxmox.com/pipermail/pve-devel/2024-April/062708.html
> to be applied.
> 
> The dependency for proxmox-widget-toolkit should be bumped to at least
> 4.1.4 (we need: "utils: add mechanism to add and override translatable notification event
> descriptions in the product specific UIs")
> Also, while not strictly needed, the patches for widget-toolkit from
> https://lists.proxmox.com/pipermail/pve-devel/2024-February/061992.html
> make creating matchers much easier - the required API endpoints were
> already implemented by this series.
> 
> proxmox-backup:
> 
> Lukas Wagner (33):
>   pbs-config: add module for loading notification config
>   server: rename email_notifications module to notifications
>   notifications: allow sending notifications via proxmox_notify
>   buildsys: install templates for test notifications
>   pbs-config: acl: add /system/notifications as known ACL path
>   api: add endpoints for querying/testing notification targets
>   api: add endpoints for notification matchers
>   api: add endpoints for sendmail targets
>   api: add endpoints for smtp targets
>   api: add endpoints for gotify targets
>   api: add endpoints for querying known notification values/fields
>   api-types: api: datatore: add notification-mode parameter
>   api-types: api: tape: add notification-mode parameter
>   server: notifications: send GC notifications via notification system
>   server: notifications: send prune notifications via notification
>     system
>   server: notifications: send verify notifications via notification
>     system
>   server: notifications: send sync notifications via notification system
>   server: notifications: send update notifications via notification
>     system
>   server: notifications: send acme notifications via notification system
>   server: notifications: send tape notifications via notification system
>   ui: add notification config panel
>   ui: tape backup job: add selector for notification-mode
>   ui: tape backup: add selector for 'notification-mode'
>   ui: tape restore: add 'notification-mode' parameter
>   ui: datastore options: add 'notification-mode' parameter
>   ui: utils: add overrides for known notification metadata fields/values
>   ui: datastore edit: make new stores use notification system by default
>   ui: permissions paths: add /system/notifications to combobox
>   proxmox-backup-manager: add CLI for notification targets
>   proxmox-backup-manager: add CLI for notification matchers
>   proxmox-backup-manager: add CLI for gotify endpoints
>   proxmox-backup-manager: add CLI for sendmail endpoints
>   proxmox-backup-manager: add CLI for SMTP endpoints
> 
>  Cargo.toml                                    |   3 +
>  Makefile                                      |   5 +-
>  debian/proxmox-backup-server.install          |  29 +
>  pbs-api-types/src/datastore.rs                |  22 +
>  pbs-api-types/src/jobs.rs                     |   8 +-
>  pbs-config/Cargo.toml                         |   1 +
>  pbs-config/src/acl.rs                         |   3 +-
>  pbs-config/src/lib.rs                         |   1 +
>  pbs-config/src/notifications.rs               |  41 +
>  src/api2/config/datastore.rs                  |   9 +
>  src/api2/config/mod.rs                        |   2 +
>  src/api2/config/notifications/gotify.rs       | 190 +++++
>  src/api2/config/notifications/matchers.rs     | 170 ++++
>  src/api2/config/notifications/mod.rs          | 175 ++++
>  src/api2/config/notifications/sendmail.rs     | 178 ++++
>  src/api2/config/notifications/smtp.rs         | 191 +++++
>  src/api2/config/notifications/targets.rs      |  63 ++
>  src/api2/config/tape_backup_job.rs            |   8 +
>  src/api2/pull.rs                              |  10 +-
>  src/api2/tape/backup.rs                       |  62 +-
>  src/api2/tape/restore.rs                      |  46 +-
>  src/bin/proxmox-backup-api.rs                 |  11 +
>  src/bin/proxmox-backup-manager.rs             |   2 +
>  src/bin/proxmox-backup-proxy.rs               |   1 +
>  src/bin/proxmox_backup_manager/mod.rs         |   2 +
>  .../notifications/gotify.rs                   |  93 +++
>  .../notifications/matchers.rs                 |  93 +++
>  .../notifications/mod.rs                      |  21 +
>  .../notifications/sendmail.rs                 |  94 +++
>  .../notifications/smtp.rs                     |  96 +++
>  .../notifications/targets.rs                  |  51 ++
>  src/server/email_notifications.rs             | 763 ------------------
>  src/server/gc_job.rs                          |  10 +-
>  src/server/mod.rs                             |   4 +-
>  src/server/notifications.rs                   | 544 +++++++++++++
>  src/server/verify_job.rs                      |  10 +-
>  src/tape/drive/mod.rs                         |  22 +-
>  src/tape/mod.rs                               |  27 +
>  src/tape/pool_writer/mod.rs                   |  11 +-
>  templates/Makefile                            |  41 +
>  templates/default/acme-err-body.txt.hbs       |   7 +
>  templates/default/acme-err-subject.txt.hbs    |   1 +
>  templates/default/gc-err-body.txt.hbs         |   8 +
>  templates/default/gc-err-subject.txt.hbs      |   1 +
>  templates/default/gc-ok-body.txt.hbs          |  23 +
>  templates/default/gc-ok-subject.txt.hbs       |   1 +
>  .../default/package-updates-body.txt.hbs      |   8 +
>  .../default/package-updates-subject.txt.hbs   |   1 +
>  templates/default/prune-err-body.txt.hbs      |  10 +
>  templates/default/prune-err-subject.txt.hbs   |   1 +
>  templates/default/prune-ok-body.txt.hbs       |  10 +
>  templates/default/prune-ok-subject.txt.hbs    |   1 +
>  templates/default/sync-err-body.txt.hbs       |  14 +
>  templates/default/sync-err-subject.txt.hbs    |   5 +
>  templates/default/sync-ok-body.txt.hbs        |  14 +
>  templates/default/sync-ok-subject.txt.hbs     |   5 +
>  .../default/tape-backup-err-body.txt.hbs      |  26 +
>  .../default/tape-backup-err-subject.txt.hbs   |   5 +
>  templates/default/tape-backup-ok-body.txt.hbs |  27 +
>  .../default/tape-backup-ok-subject.txt.hbs    |   5 +
>  templates/default/tape-load-body.txt.hbs      |  15 +
>  templates/default/tape-load-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/verify-err-body.txt.hbs     |  14 +
>  templates/default/verify-err-subject.txt.hbs  |   1 +
>  templates/default/verify-ok-body.txt.hbs      |  10 +
>  templates/default/verify-ok-subject.txt.hbs   |   1 +
>  www/Makefile                                  |   1 +
>  www/NavigationTree.js                         |   6 +
>  www/Utils.js                                  |  16 +
>  www/config/NotificationConfigView.js          |  11 +
>  www/datastore/OptionView.js                   |  15 +
>  www/form/PermissionPathSelector.js            |   1 +
>  www/tape/window/TapeBackup.js                 |  25 +
>  www/tape/window/TapeBackupJob.js              |  24 +
>  www/tape/window/TapeRestore.js                |  17 +
>  www/window/DataStoreEdit.js                   |  13 +
>  www/window/NotifyOptions.js                   |  38 +
>  80 files changed, 2630 insertions(+), 868 deletions(-)
>  create mode 100644 pbs-config/src/notifications.rs
>  create mode 100644 src/api2/config/notifications/gotify.rs
>  create mode 100644 src/api2/config/notifications/matchers.rs
>  create mode 100644 src/api2/config/notifications/mod.rs
>  create mode 100644 src/api2/config/notifications/sendmail.rs
>  create mode 100644 src/api2/config/notifications/smtp.rs
>  create mode 100644 src/api2/config/notifications/targets.rs
>  create mode 100644 src/bin/proxmox_backup_manager/notifications/gotify.rs
>  create mode 100644 src/bin/proxmox_backup_manager/notifications/matchers.rs
>  create mode 100644 src/bin/proxmox_backup_manager/notifications/mod.rs
>  create mode 100644 src/bin/proxmox_backup_manager/notifications/sendmail.rs
>  create mode 100644 src/bin/proxmox_backup_manager/notifications/smtp.rs
>  create mode 100644 src/bin/proxmox_backup_manager/notifications/targets.rs
>  delete mode 100644 src/server/email_notifications.rs
>  create mode 100644 src/server/notifications.rs
>  create mode 100644 templates/Makefile
>  create mode 100644 templates/default/acme-err-body.txt.hbs
>  create mode 100644 templates/default/acme-err-subject.txt.hbs
>  create mode 100644 templates/default/gc-err-body.txt.hbs
>  create mode 100644 templates/default/gc-err-subject.txt.hbs
>  create mode 100644 templates/default/gc-ok-body.txt.hbs
>  create mode 100644 templates/default/gc-ok-subject.txt.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/prune-err-body.txt.hbs
>  create mode 100644 templates/default/prune-err-subject.txt.hbs
>  create mode 100644 templates/default/prune-ok-body.txt.hbs
>  create mode 100644 templates/default/prune-ok-subject.txt.hbs
>  create mode 100644 templates/default/sync-err-body.txt.hbs
>  create mode 100644 templates/default/sync-err-subject.txt.hbs
>  create mode 100644 templates/default/sync-ok-body.txt.hbs
>  create mode 100644 templates/default/sync-ok-subject.txt.hbs
>  create mode 100644 templates/default/tape-backup-err-body.txt.hbs
>  create mode 100644 templates/default/tape-backup-err-subject.txt.hbs
>  create mode 100644 templates/default/tape-backup-ok-body.txt.hbs
>  create mode 100644 templates/default/tape-backup-ok-subject.txt.hbs
>  create mode 100644 templates/default/tape-load-body.txt.hbs
>  create mode 100644 templates/default/tape-load-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/verify-err-body.txt.hbs
>  create mode 100644 templates/default/verify-err-subject.txt.hbs
>  create mode 100644 templates/default/verify-ok-body.txt.hbs
>  create mode 100644 templates/default/verify-ok-subject.txt.hbs
>  create mode 100644 www/config/NotificationConfigView.js
> 
> 
> Summary over all repositories:
>   80 files changed, 2630 insertions(+), 868 deletions(-)
> 

-- 
- Lukas


_______________________________________________
pbs-devel mailing list
pbs-devel@lists.proxmox.com
https://lists.proxmox.com/cgi-bin/mailman/listinfo/pbs-devel


      parent reply	other threads:[~2024-04-17 14:38 UTC|newest]

Thread overview: 47+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-04-12 10:05 Lukas Wagner
2024-04-12 10:05 ` [pbs-devel] [PATCH proxmox-backup 01/33] pbs-config: add module for loading notification config Lukas Wagner
2024-04-12 10:06 ` [pbs-devel] [PATCH proxmox-backup 02/33] server: rename email_notifications module to notifications Lukas Wagner
2024-04-12 10:06 ` [pbs-devel] [PATCH proxmox-backup 03/33] notifications: allow sending notifications via proxmox_notify Lukas Wagner
2024-04-12 10:06 ` [pbs-devel] [PATCH proxmox-backup 04/33] buildsys: install templates for test notifications Lukas Wagner
2024-04-12 10:06 ` [pbs-devel] [PATCH proxmox-backup 05/33] pbs-config: acl: add /system/notifications as known ACL path Lukas Wagner
2024-04-12 10:06 ` [pbs-devel] [PATCH proxmox-backup 06/33] api: add endpoints for querying/testing notification targets Lukas Wagner
2024-04-12 10:06 ` [pbs-devel] [PATCH proxmox-backup 07/33] api: add endpoints for notification matchers Lukas Wagner
2024-04-12 10:06 ` [pbs-devel] [PATCH proxmox-backup 08/33] api: add endpoints for sendmail targets Lukas Wagner
2024-04-12 10:06 ` [pbs-devel] [PATCH proxmox-backup 09/33] api: add endpoints for smtp targets Lukas Wagner
2024-04-12 10:06 ` [pbs-devel] [PATCH proxmox-backup 10/33] api: add endpoints for gotify targets Lukas Wagner
2024-04-12 10:06 ` [pbs-devel] [PATCH proxmox-backup 11/33] api: add endpoints for querying known notification values/fields Lukas Wagner
2024-04-12 10:06 ` [pbs-devel] [PATCH proxmox-backup 12/33] api-types: api: datatore: add notification-mode parameter Lukas Wagner
2024-04-12 10:06 ` [pbs-devel] [PATCH proxmox-backup 13/33] api-types: api: tape: " Lukas Wagner
2024-04-12 10:06 ` [pbs-devel] [PATCH proxmox-backup 14/33] server: notifications: send GC notifications via notification system Lukas Wagner
2024-04-15  9:41   ` Gabriel Goller
2024-04-15 14:10     ` Lukas Wagner
2024-04-16  9:37   ` Gabriel Goller
2024-04-16 12:13     ` Lukas Wagner
2024-04-17  7:46       ` Fabian Grünbichler
2024-04-17 14:26         ` Lukas Wagner
2024-04-12 10:06 ` [pbs-devel] [PATCH proxmox-backup 15/33] server: notifications: send prune " Lukas Wagner
2024-04-12 10:06 ` [pbs-devel] [PATCH proxmox-backup 16/33] server: notifications: send verify " Lukas Wagner
2024-04-12 10:06 ` [pbs-devel] [PATCH proxmox-backup 17/33] server: notifications: send sync " Lukas Wagner
2024-04-12 10:06 ` [pbs-devel] [PATCH proxmox-backup 18/33] server: notifications: send update " Lukas Wagner
2024-04-12 10:06 ` [pbs-devel] [PATCH proxmox-backup 19/33] server: notifications: send acme " Lukas Wagner
2024-04-12 10:06 ` [pbs-devel] [PATCH proxmox-backup 20/33] server: notifications: send tape " Lukas Wagner
2024-04-12 10:06 ` [pbs-devel] [PATCH proxmox-backup 21/33] ui: add notification config panel Lukas Wagner
2024-04-12 10:06 ` [pbs-devel] [PATCH proxmox-backup 22/33] ui: tape backup job: add selector for notification-mode Lukas Wagner
2024-04-12 10:06 ` [pbs-devel] [PATCH proxmox-backup 23/33] ui: tape backup: add selector for 'notification-mode' Lukas Wagner
2024-04-12 10:06 ` [pbs-devel] [PATCH proxmox-backup 24/33] ui: tape restore: add 'notification-mode' parameter Lukas Wagner
2024-04-12 10:06 ` [pbs-devel] [PATCH proxmox-backup 25/33] ui: datastore options: " Lukas Wagner
2024-04-12 10:06 ` [pbs-devel] [PATCH proxmox-backup 26/33] ui: utils: add overrides for known notification metadata fields/values Lukas Wagner
2024-04-12 10:06 ` [pbs-devel] [PATCH proxmox-backup 27/33] ui: datastore edit: make new stores use notification system by default Lukas Wagner
2024-04-12 10:06 ` [pbs-devel] [PATCH proxmox-backup 28/33] ui: permissions paths: add /system/notifications to combobox Lukas Wagner
2024-04-12 10:06 ` [pbs-devel] [PATCH proxmox-backup 29/33] proxmox-backup-manager: add CLI for notification targets Lukas Wagner
2024-04-12 10:06 ` [pbs-devel] [PATCH proxmox-backup 30/33] proxmox-backup-manager: add CLI for notification matchers Lukas Wagner
2024-04-12 10:06 ` [pbs-devel] [PATCH proxmox-backup 31/33] proxmox-backup-manager: add CLI for gotify endpoints Lukas Wagner
2024-04-12 10:06 ` [pbs-devel] [PATCH proxmox-backup 32/33] proxmox-backup-manager: add CLI for sendmail endpoints Lukas Wagner
2024-04-12 10:06 ` [pbs-devel] [PATCH proxmox-backup 33/33] proxmox-backup-manager: add CLI for SMTP endpoints Lukas Wagner
2024-04-12 13:59 ` [pbs-devel] [PATCH proxmox-backup 00/33] integrate notification system Gabriel Goller
2024-04-12 14:09   ` Lukas Wagner
2024-04-17  8:22     ` Lukas Wagner
2024-04-17 10:26       ` Gabriel Goller
2024-04-17 10:26         ` Gabriel Goller
2024-04-17 12:31 ` Gabriel Goller
2024-04-17 14:38 ` Lukas Wagner [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=b97754c0-bdcc-4a6e-ba40-8541288dd8ad@proxmox.com \
    --to=l.wagner@proxmox.com \
    --cc=pbs-devel@lists.proxmox.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
Service provided by Proxmox Server Solutions GmbH | Privacy | Legal