Commit Graph

20 Commits

Author SHA1 Message Date
Lukas Wagner
9bea76c6b9 notify: add built-in config and 'origin' parameter
This allows us to define a (modifiable) builtin-config, which is
at the moment hardcoded in PVEContext

The 'origin' parameter indicates whether a config entry was created by
a user, builtin or a modified builtin.

These changes require context to be set for tests, so we set
PVEContext by default if in a test context. There might be a nicer
solution for that, but for now this should work.

Signed-off-by: Lukas Wagner <l.wagner@proxmox.com>
2023-11-17 08:31:36 +01:00
Lukas Wagner
306f4005a1 notify: add 'disable' parameter for matchers and targets.
Signed-off-by: Lukas Wagner <l.wagner@proxmox.com>
2023-11-17 08:31:36 +01:00
Lukas Wagner
20b290893a notify: add api for smtp endpoints
Signed-off-by: Lukas Wagner <l.wagner@proxmox.com>
2023-11-17 08:31:36 +01:00
Lukas Wagner
bdbd55ccff notify: add calendar matcher
This allows matching by a notification's timestamp:

matcher: foo
  match-calendar mon..fri 8-12

Signed-off-by: Lukas Wagner <l.wagner@proxmox.com>
2023-11-17 08:31:36 +01:00
Lukas Wagner
b421a7ca24 notify: replace filters and groups with matcher-based system
This shifts notification routing into the matcher-system. Every
notification has associated metadata (key-value fields, severity -
to be extended) that can be match with match directives in
notification matchers. Right now, there are 2 matching directives,
match-field and match-severity. The first one allows one to do a
regex match/exact match on a metadata field, the other one allows one
to match one or more severites.
Every matcher also allows 'target' directives, these decide which
target(s) will be notified if a matcher matches a notification.

Since routing now happens in matchers, the API for sending is
simplified, since we do not need to specify a target any more.

The API routes for filters and groups have been removed completely.
The parser for the configuration file will still accept filter/group
entries, but will delete them once the config is saved again. This is
needed to allow a smooth transition from the old system to the new
system, since the old system was already available on pvetest.

Signed-off-by: Lukas Wagner <l.wagner@proxmox.com>
2023-11-17 08:31:36 +01:00
Wolfgang Bumiller
7cb339dfa3 notify: cleanup all the imports sections
Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com>
2023-07-28 11:47:39 +02:00
Lukas Wagner
1a75668dc9 notify: use HttpError from proxmox-http-error
Also improve API documentation in terms of which HttpError is
returned when.

Signed-off-by: Lukas Wagner <l.wagner@proxmox.com>
2023-07-28 10:47:07 +02:00
Lukas Wagner
a1cbaea766 notify: fix tests if not all features are enabled
Some tests are now disabled if not all required features are enabled.

Signed-off-by: Lukas Wagner <l.wagner@proxmox.com>
2023-07-28 10:43:57 +02:00
Lukas Wagner
f6fa851d1f notify: fix build warnings if not all features are enabled
Signed-off-by: Lukas Wagner <l.wagner@proxmox.com>
2023-07-28 10:43:55 +02:00
Lukas Wagner
2756c11c2f notify: ensure that filter/group/endpoint names are unique
Otherwise, a filter with the same name as an already existing
endpoint or group can overwrite it.

Signed-off-by: Lukas Wagner <l.wagner@proxmox.com>
2023-07-24 10:26:06 +02:00
Lukas Wagner
62ae1cf959 notify: on deletion, check if a filter/endp. is still used by anything
Signed-off-by: Lukas Wagner <l.wagner@proxmox.com>
2023-07-24 10:26:04 +02:00
Lukas Wagner
3c9584296f notify: api: allow to query entities referenced by filter/target
Signed-off-by: Lukas Wagner <l.wagner@proxmox.com>
2023-07-24 10:26:02 +02:00
Lukas Wagner
c5f91aa1c8 notify: sendmail: allow users as recipients
This introduces a new configuration parameter `mailto-user`.
A user's email address will be looked up in the product-specific
user database.

Signed-off-by: Lukas Wagner <l.wagner@proxmox.com>
2023-07-24 10:25:57 +02:00
Lukas Wagner
109a936b6b notify: api: add API for filters
Signed-off-by: Lukas Wagner <l.wagner@proxmox.com>
2023-07-24 10:25:46 +02:00
Lukas Wagner
ee0ab52b9b notify: add notification filter mechanism
This commit adds a way to filter notifications based on severity. The
filter module also has the necessary foundation work for more complex
filters, e.g. matching on properties or for creating arbitarily complex
filter structures using nested sub-filters.

Signed-off-by: Lukas Wagner <l.wagner@proxmox.com>
2023-07-24 10:25:43 +02:00
Lukas Wagner
ee44fdca04 notify: api: add API for groups
Signed-off-by: Lukas Wagner <l.wagner@proxmox.com>
2023-07-24 10:25:41 +02:00
Lukas Wagner
055db2d107 notify: api: add API for gotify endpoints
Signed-off-by: Lukas Wagner <l.wagner@proxmox.com>
2023-07-24 10:25:37 +02:00
Lukas Wagner
21c5c9a0c7 notify: api: add API for sendmail endpoints
Signed-off-by: Lukas Wagner <l.wagner@proxmox.com>
2023-07-24 10:25:33 +02:00
Lukas Wagner
714ef27786 notify: api: add API for sending notifications/testing endpoints
Signed-off-by: Lukas Wagner <l.wagner@proxmox.com>
2023-07-24 10:25:30 +02:00
Lukas Wagner
ad3f78a315 notify: preparation for the API
Signed-off-by: Lukas Wagner <l.wagner@proxmox.com>
2023-07-24 10:25:28 +02:00