5
0
mirror of git://git.proxmox.com/git/proxmox-backup.git synced 2025-01-22 22:04:00 +03:00

api-types: api: datatore: add notification-mode parameter

This one lets the user choose between the old notification behavior
(selecting an email address/user and always/error/never behavior per
datastore) and the new one (emit notification events to the
notification system)

Signed-off-by: Lukas Wagner <l.wagner@proxmox.com>
Tested-by: Gabriel Goller <g.goller@proxmox.com>
Reviewed-by: Gabriel Goller <g.goller@proxmox.com>
Tested-by: Maximiliano Sandoval <m.sandoval@proxmox.com>
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
This commit is contained in:
Lukas Wagner 2024-04-23 13:52:04 +02:00 committed by Thomas Lamprecht
parent 728740d307
commit 7b668dbc2b
2 changed files with 31 additions and 0 deletions

View File

@ -309,6 +309,10 @@ pub struct DataStoreConfig {
#[serde(skip_serializing_if = "Option::is_none")]
pub notify: Option<String>,
/// Opt in to the new notification system
#[serde(skip_serializing_if = "Option::is_none")]
pub notification_mode: Option<NotificationMode>,
/// Datastore tuning options
#[serde(skip_serializing_if = "Option::is_none")]
pub tuning: Option<String>,
@ -318,6 +322,23 @@ pub struct DataStoreConfig {
pub maintenance_mode: Option<String>,
}
#[api]
#[derive(Serialize, Deserialize, Updater, Clone, PartialEq, Default)]
#[serde(rename_all = "kebab-case")]
/// Configure how notifications for this datastore should be sent.
/// `legacy-sendmail` sends email notifications to the user configured
/// in `notify-user` via the system's `sendmail` executable.
/// `notification-system` emits matchable notification events to the
/// notification system.
pub enum NotificationMode {
/// Send notifications via the system's sendmail command to the user
/// configured in `notify-user`
#[default]
LegacySendmail,
/// Emit notification events to the notification system
NotificationSystem,
}
impl DataStoreConfig {
pub fn new(name: String, path: String) -> Self {
Self {
@ -330,6 +351,7 @@ impl DataStoreConfig {
verify_new: None,
notify_user: None,
notify: None,
notification_mode: None,
tuning: None,
maintenance_mode: None,
}

View File

@ -222,6 +222,8 @@ pub enum DeletableProperty {
NotifyUser,
/// Delete the notify property
Notify,
/// Delete the notification-mode property
NotificationMode,
/// Delete the tuning property
Tuning,
/// Delete the maintenance-mode property
@ -315,6 +317,9 @@ pub fn update_datastore(
DeletableProperty::NotifyUser => {
data.notify_user = None;
}
DeletableProperty::NotificationMode => {
data.notification_mode = None;
}
DeletableProperty::Tuning => {
data.tuning = None;
}
@ -385,6 +390,10 @@ pub fn update_datastore(
data.notify_user = update.notify_user;
}
if update.notification_mode.is_some() {
data.notification_mode = update.notification_mode;
}
if update.tuning.is_some() {
data.tuning = update.tuning;
}