redis_enterprise/
debuginfo.rs1use crate::client::RestClient;
9use crate::error::Result;
10use serde::{Deserialize, Serialize};
11use serde_json::Value;
12use typed_builder::TypedBuilder;
13
14#[derive(Debug, Clone, Serialize, Deserialize, TypedBuilder)]
16pub struct DebugInfoRequest {
17 #[serde(skip_serializing_if = "Option::is_none")]
19 #[builder(default, setter(strip_option))]
20 pub node_uids: Option<Vec<u32>>,
21 #[serde(skip_serializing_if = "Option::is_none")]
23 #[builder(default, setter(strip_option))]
24 pub bdb_uids: Option<Vec<u32>>,
25 #[serde(skip_serializing_if = "Option::is_none")]
27 #[builder(default, setter(strip_option))]
28 pub include_logs: Option<bool>,
29 #[serde(skip_serializing_if = "Option::is_none")]
31 #[builder(default, setter(strip_option))]
32 pub include_metrics: Option<bool>,
33 #[serde(skip_serializing_if = "Option::is_none")]
35 #[builder(default, setter(strip_option))]
36 pub include_configs: Option<bool>,
37 #[serde(skip_serializing_if = "Option::is_none")]
39 #[builder(default, setter(strip_option))]
40 pub time_range: Option<TimeRange>,
41}
42
43#[derive(Debug, Clone, Serialize, Deserialize)]
45pub struct TimeRange {
46 pub start: String,
48 pub end: String,
50}
51
52#[derive(Debug, Clone, Serialize, Deserialize)]
54pub struct DebugInfoStatus {
55 pub task_id: String,
57 pub status: String,
59 #[serde(skip_serializing_if = "Option::is_none")]
61 pub progress: Option<f32>,
62 #[serde(skip_serializing_if = "Option::is_none")]
64 pub download_url: Option<String>,
65 #[serde(skip_serializing_if = "Option::is_none")]
67 pub error: Option<String>,
68}
69
70pub struct DebugInfoHandler {
72 client: RestClient,
73}
74
75impl DebugInfoHandler {
76 pub fn new(client: RestClient) -> Self {
78 DebugInfoHandler { client }
79 }
80
81 #[deprecated(note = "use the documented cluster, node, or database debuginfo methods")]
83 pub async fn create(&self, _request: DebugInfoRequest) -> Result<DebugInfoStatus> {
84 crate::error::unsupported_operation("create generic debuginfo task")
85 }
86
87 #[deprecated(note = "Redis Software does not register task-style debuginfo routes")]
89 pub async fn status(&self, _task_id: &str) -> Result<DebugInfoStatus> {
90 crate::error::unsupported_operation("get generic debuginfo task status")
91 }
92
93 #[deprecated(note = "Redis Software does not register task-style debuginfo routes")]
95 pub async fn list(&self) -> Result<Vec<DebugInfoStatus>> {
96 crate::error::unsupported_operation("list generic debuginfo tasks")
97 }
98
99 #[deprecated(note = "use the documented cluster, node, or database debuginfo methods")]
101 pub async fn download(&self, _task_id: &str) -> Result<Vec<u8>> {
102 crate::error::unsupported_operation("download generic debuginfo task")
103 }
104
105 #[deprecated(note = "Redis Software does not register task-style debuginfo routes")]
107 pub async fn cancel(&self, _task_id: &str) -> Result<()> {
108 crate::error::unsupported_operation("cancel generic debuginfo task")
109 }
110
111 pub async fn all(&self) -> Result<Value> {
114 self.client.get("/v1/debuginfo/all").await
115 }
116
117 pub async fn all_bdb(&self, bdb_uid: u32) -> Result<Value> {
120 self.client
121 .get(&format!("/v1/debuginfo/all/bdb/{}", bdb_uid))
122 .await
123 }
124
125 pub async fn node(&self) -> Result<Value> {
128 self.client.get("/v1/debuginfo/node").await
129 }
130
131 pub async fn node_bdb(&self, bdb_uid: u32) -> Result<Value> {
134 self.client
135 .get(&format!("/v1/debuginfo/node/bdb/{}", bdb_uid))
136 .await
137 }
138
139 pub async fn cluster_debuginfo_binary(&self) -> Result<Vec<u8>> {
144 self.client.get_binary("/v1/cluster/debuginfo").await
145 }
146
147 pub async fn nodes_debuginfo_binary(&self) -> Result<Vec<u8>> {
150 self.client.get_binary("/v1/nodes/debuginfo").await
151 }
152
153 pub async fn node_debuginfo_binary(&self, node_uid: u32) -> Result<Vec<u8>> {
156 self.client
157 .get_binary(&format!("/v1/nodes/{}/debuginfo", node_uid))
158 .await
159 }
160
161 pub async fn databases_debuginfo_binary(&self) -> Result<Vec<u8>> {
164 self.client.get_binary("/v1/bdbs/debuginfo").await
165 }
166
167 pub async fn database_debuginfo_binary(&self, bdb_uid: u32) -> Result<Vec<u8>> {
170 self.client
171 .get_binary(&format!("/v1/bdbs/{}/debuginfo", bdb_uid))
172 .await
173 }
174
175 pub async fn all_binary(&self) -> Result<Vec<u8>> {
180 self.client.get_binary("/v1/debuginfo/all").await
181 }
182
183 pub async fn all_bdb_binary(&self, bdb_uid: u32) -> Result<Vec<u8>> {
186 self.client
187 .get_binary(&format!("/v1/debuginfo/all/bdb/{}", bdb_uid))
188 .await
189 }
190
191 pub async fn node_binary(&self) -> Result<Vec<u8>> {
194 self.client.get_binary("/v1/debuginfo/node").await
195 }
196
197 pub async fn node_bdb_binary(&self, bdb_uid: u32) -> Result<Vec<u8>> {
200 self.client
201 .get_binary(&format!("/v1/debuginfo/node/bdb/{}", bdb_uid))
202 .await
203 }
204}