v1_dashboards_CreateDashboard_794302680/v1_dashboards_CreateDashboard_794302680.rs
1// Create a new dashboard with query_table widget and text formatting
2use datadog_api_client::datadog;
3use datadog_api_client::datadogV1::api_dashboards::DashboardsAPI;
4use datadog_api_client::datadogV1::model::Dashboard;
5use datadog_api_client::datadogV1::model::DashboardLayoutType;
6use datadog_api_client::datadogV1::model::FormulaAndFunctionMetricAggregation;
7use datadog_api_client::datadogV1::model::FormulaAndFunctionMetricDataSource;
8use datadog_api_client::datadogV1::model::FormulaAndFunctionMetricQueryDefinition;
9use datadog_api_client::datadogV1::model::FormulaAndFunctionQueryDefinition;
10use datadog_api_client::datadogV1::model::FormulaAndFunctionResponseFormat;
11use datadog_api_client::datadogV1::model::TableWidgetDefinition;
12use datadog_api_client::datadogV1::model::TableWidgetDefinitionType;
13use datadog_api_client::datadogV1::model::TableWidgetHasSearchBar;
14use datadog_api_client::datadogV1::model::TableWidgetRequest;
15use datadog_api_client::datadogV1::model::TableWidgetTextFormatMatch;
16use datadog_api_client::datadogV1::model::TableWidgetTextFormatMatchType;
17use datadog_api_client::datadogV1::model::TableWidgetTextFormatPalette;
18use datadog_api_client::datadogV1::model::TableWidgetTextFormatReplace;
19use datadog_api_client::datadogV1::model::TableWidgetTextFormatReplaceAll;
20use datadog_api_client::datadogV1::model::TableWidgetTextFormatReplaceAllType;
21use datadog_api_client::datadogV1::model::TableWidgetTextFormatRule;
22use datadog_api_client::datadogV1::model::Widget;
23use datadog_api_client::datadogV1::model::WidgetDefinition;
24use datadog_api_client::datadogV1::model::WidgetLayout;
25use datadog_api_client::datadogV1::model::WidgetTextAlign;
26
27#[tokio::main]
28async fn main() {
29 let body =
30 Dashboard::new(
31 DashboardLayoutType::FREE,
32 "Example-Dashboard".to_string(),
33 vec![
34 Widget::new(
35 WidgetDefinition::TableWidgetDefinition(
36 Box::new(
37 TableWidgetDefinition::new(
38 vec![
39 TableWidgetRequest::new()
40 .formulas(vec![])
41 .queries(
42 vec![
43 FormulaAndFunctionQueryDefinition
44 ::FormulaAndFunctionMetricQueryDefinition(
45 Box::new(
46 FormulaAndFunctionMetricQueryDefinition::new(
47 FormulaAndFunctionMetricDataSource::METRICS,
48 "query1".to_string(),
49 "avg:aws.stream.globalaccelerator.processed_bytes_in{*} by {aws_account,acceleratoripaddress}".to_string(),
50 ).aggregator(FormulaAndFunctionMetricAggregation::AVG),
51 ),
52 ),
53 FormulaAndFunctionQueryDefinition
54 ::FormulaAndFunctionMetricQueryDefinition(
55 Box::new(
56 FormulaAndFunctionMetricQueryDefinition::new(
57 FormulaAndFunctionMetricDataSource::METRICS,
58 "query2".to_string(),
59 "avg:aws.stream.globalaccelerator.processed_bytes_out{*} by {aws_account,acceleratoripaddress}".to_string(),
60 ).aggregator(FormulaAndFunctionMetricAggregation::AVG),
61 ),
62 )
63 ],
64 )
65 .response_format(FormulaAndFunctionResponseFormat::SCALAR)
66 .text_formats(
67 vec![
68 vec![
69 TableWidgetTextFormatRule::new(
70 TableWidgetTextFormatMatch::new(
71 TableWidgetTextFormatMatchType::IS,
72 "fruit".to_string(),
73 ),
74 )
75 .palette(TableWidgetTextFormatPalette::WHITE_ON_RED)
76 .replace(
77 TableWidgetTextFormatReplace
78 ::TableWidgetTextFormatReplaceAll(
79 Box::new(
80 TableWidgetTextFormatReplaceAll::new(
81 TableWidgetTextFormatReplaceAllType::ALL,
82 "vegetable".to_string(),
83 ),
84 ),
85 ),
86 ),
87 TableWidgetTextFormatRule::new(
88 TableWidgetTextFormatMatch::new(
89 TableWidgetTextFormatMatchType::IS,
90 "animal".to_string(),
91 ),
92 )
93 .custom_bg_color("#632ca6".to_string())
94 .palette(TableWidgetTextFormatPalette::CUSTOM_BG),
95 TableWidgetTextFormatRule::new(
96 TableWidgetTextFormatMatch::new(
97 TableWidgetTextFormatMatchType::IS,
98 "robot".to_string(),
99 ),
100 ).palette(TableWidgetTextFormatPalette::RED_ON_WHITE),
101 TableWidgetTextFormatRule::new(
102 TableWidgetTextFormatMatch::new(
103 TableWidgetTextFormatMatchType::IS,
104 "ai".to_string(),
105 ),
106 ).palette(TableWidgetTextFormatPalette::YELLOW_ON_WHITE)
107 ],
108 vec![
109 TableWidgetTextFormatRule::new(
110 TableWidgetTextFormatMatch::new(
111 TableWidgetTextFormatMatchType::IS_NOT,
112 "xyz".to_string(),
113 ),
114 ).palette(TableWidgetTextFormatPalette::WHITE_ON_YELLOW)
115 ],
116 vec![
117 TableWidgetTextFormatRule::new(
118 TableWidgetTextFormatMatch::new(
119 TableWidgetTextFormatMatchType::CONTAINS,
120 "test".to_string(),
121 ),
122 )
123 .palette(TableWidgetTextFormatPalette::WHITE_ON_GREEN)
124 .replace(
125 TableWidgetTextFormatReplace
126 ::TableWidgetTextFormatReplaceAll(
127 Box::new(
128 TableWidgetTextFormatReplaceAll::new(
129 TableWidgetTextFormatReplaceAllType::ALL,
130 "vegetable".to_string(),
131 ),
132 ),
133 ),
134 )
135 ],
136 vec![
137 TableWidgetTextFormatRule::new(
138 TableWidgetTextFormatMatch::new(
139 TableWidgetTextFormatMatchType::DOES_NOT_CONTAIN,
140 "blah".to_string(),
141 ),
142 ).palette(TableWidgetTextFormatPalette::BLACK_ON_LIGHT_RED)
143 ],
144 vec![
145 TableWidgetTextFormatRule::new(
146 TableWidgetTextFormatMatch::new(
147 TableWidgetTextFormatMatchType::STARTS_WITH,
148 "abc".to_string(),
149 ),
150 ).palette(TableWidgetTextFormatPalette::BLACK_ON_LIGHT_YELLOW)
151 ],
152 vec![
153 TableWidgetTextFormatRule::new(
154 TableWidgetTextFormatMatch::new(
155 TableWidgetTextFormatMatchType::ENDS_WITH,
156 "xyz".to_string(),
157 ),
158 ).palette(TableWidgetTextFormatPalette::BLACK_ON_LIGHT_GREEN),
159 TableWidgetTextFormatRule::new(
160 TableWidgetTextFormatMatch::new(
161 TableWidgetTextFormatMatchType::ENDS_WITH,
162 "zzz".to_string(),
163 ),
164 ).palette(TableWidgetTextFormatPalette::GREEN_ON_WHITE),
165 TableWidgetTextFormatRule::new(
166 TableWidgetTextFormatMatch::new(
167 TableWidgetTextFormatMatchType::IS,
168 "animal".to_string(),
169 ),
170 )
171 .custom_fg_color("#632ca6".to_string())
172 .palette(TableWidgetTextFormatPalette::CUSTOM_TEXT)
173 ]
174 ],
175 )
176 ],
177 TableWidgetDefinitionType::QUERY_TABLE,
178 )
179 .has_search_bar(TableWidgetHasSearchBar::NEVER)
180 .title("".to_string())
181 .title_align(WidgetTextAlign::LEFT)
182 .title_size("16".to_string()),
183 ),
184 ),
185 ).layout(WidgetLayout::new(4, 4, 0, 0))
186 ],
187 )
188 .description(Some("".to_string()))
189 .notify_list(Some(vec![]))
190 .template_variables(Some(vec![]));
191 let configuration = datadog::Configuration::new();
192 let api = DashboardsAPI::with_config(configuration);
193 let resp = api.create_dashboard(body).await;
194 if let Ok(value) = resp {
195 println!("{:#?}", value);
196 } else {
197 println!("{:#?}", resp.unwrap_err());
198 }
199}