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}