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:
parent
728740d307
commit
7b668dbc2b
@ -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,
|
||||
}
|
||||
|
@ -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;
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user