grafana_dashboard/panel/
mod.rs

1use alert::Alert;
2use serde::{Deserialize, Serialize};
3
4#[derive(Debug, Clone, Serialize, Deserialize)]
5pub struct Panel {
6    #[serde(rename = "aliasColors")]
7    #[serde(skip_serializing_if = "Option::is_none")]
8    pub alias_colors: Option<AliasColors>,
9    #[serde(skip_serializing_if = "Option::is_none")]
10    pub alert: Option<Alert>,
11    #[serde(skip_serializing_if = "Option::is_none")]
12    pub bars: Option<bool>,
13    #[serde(skip_serializing_if = "Option::is_none")]
14    pub content: Option<String>,
15    #[serde(rename = "dashLength")]
16    #[serde(skip_serializing_if = "Option::is_none")]
17    pub dash_length: Option<u32>,
18    #[serde(skip_serializing_if = "Option::is_none")]
19    pub dashes: Option<bool>,
20    #[serde(skip_serializing_if = "Option::is_none")]
21    pub datasource: Option<String>,
22    #[serde(skip_serializing_if = "Option::is_none")]
23    pub fill: Option<u32>,
24    #[serde(skip_serializing_if = "Option::is_none")]
25    #[serde(rename = "fill_gradient")]
26    pub fill_gradient: Option<u32>,
27    #[serde(rename = "gridPos")]
28    #[serde(skip_serializing_if = "Option::is_none")]
29    pub grid_pos: Option<GridPos>,
30    #[serde(rename = "hiddenSeries")]
31    #[serde(skip_serializing_if = "Option::is_none")]
32    pub hidden_series: Option<bool>,
33    #[serde(skip_serializing_if = "Option::is_none")]
34    pub id: Option<u32>,
35    #[serde(skip_serializing_if = "Option::is_none")]
36    pub legend: Option<Legend>,
37    #[serde(skip_serializing_if = "Option::is_none")]
38    pub lines: Option<bool>,
39    #[serde(rename = "lineWidth")]
40    #[serde(skip_serializing_if = "Option::is_none")]
41    pub line_width: Option<u32>,
42    #[serde(rename = "nullPointMode")]
43    #[serde(skip_serializing_if = "Option::is_none")]
44    pub null_point_mode: Option<String>,
45    #[serde(skip_serializing_if = "Option::is_none")]
46    pub options: Option<Vec<DataLink>>,
47    #[serde(skip_serializing_if = "Option::is_none")]
48    pub percentage: Option<bool>,
49    #[serde(skip_serializing_if = "Option::is_none")]
50    pub pointradius: Option<u32>,
51    #[serde(skip_serializing_if = "Option::is_none")]
52    pub points: Option<bool>,
53    #[serde(skip_serializing_if = "Option::is_none")]
54    pub renderer: Option<String>,
55    #[serde(rename = "seriesOverrides")]
56    #[serde(skip_serializing_if = "Option::is_none")]
57    pub series_overrides: Option<Vec<SeriesOverride>>,
58    #[serde(rename = "spaceLength")]
59    #[serde(skip_serializing_if = "Option::is_none")]
60    pub space_length: Option<u32>,
61    #[serde(skip_serializing_if = "Option::is_none")]
62    pub stack: Option<bool>,
63    #[serde(rename = "steppedLine")]
64    #[serde(skip_serializing_if = "Option::is_none")]
65    pub stepped_line: Option<bool>,
66    #[serde(skip_serializing_if = "Option::is_none")]
67    pub targets: Option<Vec<Target>>,
68    #[serde(rename = "timeFrom")]
69    #[serde(skip_serializing_if = "Option::is_none")]
70    // TODO unknown type, might not be string
71    pub time_from: Option<String>,
72    #[serde(rename = "timeRegions")]
73    #[serde(skip_serializing_if = "Option::is_none")]
74    // TODO unknown type, might not be string
75    pub time_regions: Option<Vec<TimeRegion>>,
76    #[serde(rename = "timeShift")]
77    #[serde(skip_serializing_if = "Option::is_none")]
78    // TODO unknown type, might not be string
79    pub time_shift: Option<String>,
80    #[serde(skip_serializing_if = "Option::is_none")]
81    pub thresholds: Option<Vec<Threshold>>,
82    #[serde(skip_serializing_if = "Option::is_none")]
83    pub xaxis: Option<Axis>,
84    #[serde(skip_serializing_if = "Option::is_none")]
85    pub yaxes: Option<Vec<Axe>>,
86    #[serde(skip_serializing_if = "Option::is_none")]
87    pub yaxis: Option<Axis>,
88    #[serde(skip_serializing_if = "Option::is_none")]
89    pub r#type: Option<String>,
90    #[serde(skip_serializing_if = "Option::is_none")]
91    pub title: Option<String>,
92    #[serde(skip_serializing_if = "Option::is_none")]
93    pub tooltip: Option<ToolTip>,
94    #[serde(skip_serializing_if = "Option::is_none")]
95    pub mode: Option<String>,
96}
97
98#[derive(Debug, Clone, Serialize, Deserialize)]
99pub struct ToolTip {
100    #[serde(skip_serializing_if = "Option::is_none")]
101    pub shared: Option<bool>,
102    #[serde(skip_serializing_if = "Option::is_none")]
103    pub sort: Option<u32>,
104    #[serde(rename = "valueType")]
105    #[serde(skip_serializing_if = "Option::is_none")]
106    pub value_type: Option<String>,
107}
108
109#[derive(Debug, Clone, Serialize, Deserialize)]
110pub struct TimeRegion {
111    // TODO add fields
112}
113
114#[derive(Debug, Clone, Serialize, Deserialize)]
115pub struct AliasColors {
116    // TODO add fields
117}
118
119#[derive(Debug, Clone, Serialize, Deserialize)]
120pub struct Axis {
121    #[serde(skip_serializing_if = "Option::is_none")]
122    pub align: Option<bool>,
123    #[serde(rename = "alignLevel")]
124    #[serde(skip_serializing_if = "Option::is_none")]
125    pub align_level: Option<String>, // TODO correct type
126    #[serde(skip_serializing_if = "Option::is_none")]
127    pub buckets: Option<Vec<u32>>,
128    #[serde(skip_serializing_if = "Option::is_none")]
129    pub mode: Option<String>,
130    // nullable
131    pub name: Option<String>,
132    #[serde(skip_serializing_if = "Option::is_none")]
133    pub show: Option<bool>,
134    #[serde(skip_serializing_if = "Option::is_none")]
135    pub values: Option<Vec<AxisValue>>,
136}
137
138#[derive(Debug, Clone, Serialize, Deserialize)]
139pub struct AxisValue {
140    // TODO fields
141}
142
143#[derive(Debug, Clone, Serialize, Deserialize)]
144pub struct Axe {
145    #[serde(rename = "$$hashKey")]
146    #[serde(skip_serializing_if = "Option::is_none")]
147    pub hash_key: Option<String>,
148    #[serde(skip_serializing_if = "Option::is_none")]
149    pub format: Option<String>,
150    #[serde(skip_serializing_if = "Option::is_none")]
151    pub label: Option<String>,
152    #[serde(rename = "logBase")]
153    #[serde(skip_serializing_if = "Option::is_none")]
154    pub log_base: Option<u32>,
155    #[serde(skip_serializing_if = "Option::is_none")]
156    pub max: Option<String>,
157    #[serde(skip_serializing_if = "Option::is_none")]
158    pub min: Option<String>,
159    #[serde(skip_serializing_if = "Option::is_none")]
160    pub show: Option<bool>,
161}
162
163#[derive(Debug, Clone, Serialize, Deserialize)]
164pub struct Threshold {
165    // TODO fields
166}
167
168#[derive(Debug, Clone, Serialize, Deserialize)]
169pub struct Target {
170    #[serde(skip_serializing_if = "Option::is_none")]
171    pub expr: Option<String>,
172    #[serde(skip_serializing_if = "Option::is_none")]
173    pub interval: Option<String>,
174    #[serde(rename = "legendFormat")]
175    #[serde(skip_serializing_if = "Option::is_none")]
176    pub legend_format: Option<String>,
177    #[serde(rename = "refId")]
178    #[serde(skip_serializing_if = "Option::is_none")]
179    pub ref_id: Option<String>,
180}
181
182#[derive(Debug, Clone, Serialize, Deserialize)]
183pub struct SeriesOverride {
184    // TODO fields
185}
186
187#[derive(Debug, Clone, Serialize, Deserialize)]
188pub struct DataLink {
189    // TODO fields
190}
191
192#[derive(Debug, Clone, Serialize, Deserialize)]
193pub struct Legend {
194    #[serde(skip_serializing_if = "Option::is_none")]
195    pub avg: Option<bool>,
196    #[serde(skip_serializing_if = "Option::is_none")]
197    pub current: Option<bool>,
198    #[serde(skip_serializing_if = "Option::is_none")]
199    pub max: Option<bool>,
200    #[serde(skip_serializing_if = "Option::is_none")]
201    pub min: Option<bool>,
202    #[serde(skip_serializing_if = "Option::is_none")]
203    pub show: Option<bool>,
204    #[serde(skip_serializing_if = "Option::is_none")]
205    pub total: Option<bool>,
206    #[serde(skip_serializing_if = "Option::is_none")]
207    pub values: Option<bool>,
208}
209
210#[derive(Debug, Clone, Serialize, Deserialize)]
211pub struct GridPos {
212    #[serde(skip_serializing_if = "Option::is_none")]
213    pub x: Option<i32>,
214    #[serde(skip_serializing_if = "Option::is_none")]
215    pub y: Option<i32>,
216    #[serde(skip_serializing_if = "Option::is_none")]
217    pub w: Option<i32>,
218    #[serde(skip_serializing_if = "Option::is_none")]
219    pub h: Option<i32>,
220}
221
222pub mod alert {
223    use serde::{Deserialize, Serialize};
224
225    #[derive(Debug, Clone, Serialize, Deserialize)]
226    pub struct Alert {
227        #[serde(skip_serializing_if = "Option::is_none")]
228        #[serde(rename = "alertRuleTag")]
229        pub alert_rule_tag: Option<RuleTag>,
230        #[serde(skip_serializing_if = "Option::is_none")]
231        pub conditions: Option<Vec<Condition>>,
232    }
233
234    #[derive(Debug, Clone, Serialize, Deserialize)]
235    pub struct RuleTag {
236        // TODO define properties
237    }
238
239    #[derive(Debug, Clone, Serialize, Deserialize)]
240    pub struct Condition {
241        #[serde(skip_serializing_if = "Option::is_none")]
242        pub evaluator: Option<Evaluator>,
243        #[serde(skip_serializing_if = "Option::is_none")]
244        pub operator: Option<Operator>,
245        #[serde(skip_serializing_if = "Option::is_none")]
246        pub query: Option<Query>,
247        #[serde(skip_serializing_if = "Option::is_none")]
248        pub reducer: Option<Reducer>,
249        #[serde(skip_serializing_if = "Option::is_none")]
250        pub r#type: Option<String>,
251    }
252
253    #[derive(Debug, Clone, Serialize, Deserialize)]
254    pub struct Evaluator {
255        #[serde(skip_serializing_if = "Option::is_none")]
256        pub params: Option<u32>,
257        #[serde(skip_serializing_if = "Option::is_none")]
258        pub r#type: Option<String>,
259    }
260
261    #[derive(Debug, Clone, Serialize, Deserialize)]
262    pub struct Operator {
263        #[serde(skip_serializing_if = "Option::is_none")]
264        pub r#type: Option<String>,
265    }
266
267    #[derive(Debug, Clone, Serialize, Deserialize)]
268    pub struct Query {
269        #[serde(skip_serializing_if = "Option::is_none")]
270        pub params: Option<u32>,
271    }
272
273    #[derive(Debug, Clone, Serialize, Deserialize)]
274    pub struct Reducer {
275        #[serde(skip_serializing_if = "Option::is_none")]
276        pub params: Option<u32>,
277        #[serde(skip_serializing_if = "Option::is_none")]
278        pub r#type: Option<String>,
279    }
280}