redis_enterprise/
cm_settings.rs1use crate::client::RestClient;
4use crate::error::Result;
5use serde::{Deserialize, Serialize};
6use serde_json::Value;
7
8#[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
30pub struct CmSettingsHandler {
32 client: RestClient,
33}
34
35impl CmSettingsHandler {
36 pub fn new(client: RestClient) -> Self {
37 CmSettingsHandler { client }
38 }
39
40 pub async fn get(&self) -> Result<CmSettings> {
42 self.client.get("/v1/cm_settings").await
43 }
44
45 pub async fn update(&self, settings: CmSettings) -> Result<CmSettings> {
47 self.client.put("/v1/cm_settings", &settings).await
48 }
49
50 pub async fn reset(&self) -> Result<()> {
52 self.client.delete("/v1/cm_settings").await
53 }
54}