redis_enterprise/
cm_settings.rs

1//! Cluster Manager settings for Redis Enterprise
2
3use crate::client::RestClient;
4use crate::error::Result;
5use serde::{Deserialize, Serialize};
6use serde_json::Value;
7
8/// Cluster Manager settings
9#[derive(Debug, Clone, Serialize, Deserialize)]
10pub struct CmSettings {
11    #[serde(skip_serializing_if = "Option::is_none")]
12    pub cm_port: Option<u16>,
13    #[serde(skip_serializing_if = "Option::is_none")]
14    pub cm_session_timeout: Option<u32>,
15    #[serde(skip_serializing_if = "Option::is_none")]
16    pub auto_recovery: Option<bool>,
17    #[serde(skip_serializing_if = "Option::is_none")]
18    pub auto_failover: Option<bool>,
19    #[serde(skip_serializing_if = "Option::is_none")]
20    pub slave_ha: Option<bool>,
21    #[serde(skip_serializing_if = "Option::is_none")]
22    pub slave_ha_grace_period: Option<u32>,
23    #[serde(skip_serializing_if = "Option::is_none")]
24    pub max_simultaneous_backups: Option<u32>,
25
26    #[serde(flatten)]
27    pub extra: Value,
28}
29
30/// Cluster Manager settings handler
31pub struct CmSettingsHandler {
32    client: RestClient,
33}
34
35impl CmSettingsHandler {
36    pub fn new(client: RestClient) -> Self {
37        CmSettingsHandler { client }
38    }
39
40    /// Get Cluster Manager settings
41    pub async fn get(&self) -> Result<CmSettings> {
42        self.client.get("/v1/cm_settings").await
43    }
44
45    /// Update Cluster Manager settings
46    pub async fn update(&self, settings: CmSettings) -> Result<CmSettings> {
47        self.client.put("/v1/cm_settings", &settings).await
48    }
49
50    /// Reset Cluster Manager settings to defaults
51    pub async fn reset(&self) -> Result<()> {
52        self.client.delete("/v1/cm_settings").await
53    }
54}