redis_enterprise/
cm_settings.rs1use crate::client::RestClient;
9use crate::error::Result;
10use serde::{Deserialize, Serialize};
11use serde_json::Value;
12
13#[derive(Debug, Clone, Serialize, Deserialize)]
15pub struct CmSettings {
16 #[serde(skip_serializing_if = "Option::is_none")]
18 pub cm_port: Option<u16>,
19 #[serde(skip_serializing_if = "Option::is_none")]
21 pub cm_session_timeout: Option<u32>,
22 #[serde(skip_serializing_if = "Option::is_none")]
24 pub auto_recovery: Option<bool>,
25 #[serde(skip_serializing_if = "Option::is_none")]
27 pub auto_failover: Option<bool>,
28 #[serde(skip_serializing_if = "Option::is_none")]
30 pub slave_ha: Option<bool>,
31 #[serde(skip_serializing_if = "Option::is_none")]
33 pub slave_ha_grace_period: Option<u32>,
34 #[serde(skip_serializing_if = "Option::is_none")]
36 pub max_simultaneous_backups: Option<u32>,
37
38 #[serde(flatten)]
39 pub extra: Value,
40}
41
42pub struct CmSettingsHandler {
44 client: RestClient,
45}
46
47impl CmSettingsHandler {
48 pub fn new(client: RestClient) -> Self {
49 CmSettingsHandler { client }
50 }
51
52 pub async fn get(&self) -> Result<CmSettings> {
54 self.client.get("/v1/cm_settings").await
55 }
56
57 pub async fn update(&self, settings: CmSettings) -> Result<CmSettings> {
59 self.client.put("/v1/cm_settings", &settings).await
60 }
61
62 pub async fn reset(&self) -> Result<()> {
64 self.client.delete("/v1/cm_settings").await
65 }
66}