v1_dashboards_CreateDashboard_2261785072/
v1_dashboards_CreateDashboard_2261785072.rs

1// Create a new dashboard with a timeseries widget and an overlay request
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::FormulaAndFunctionMetricDataSource;
7use datadog_api_client::datadogV1::model::FormulaAndFunctionMetricQueryDefinition;
8use datadog_api_client::datadogV1::model::FormulaAndFunctionQueryDefinition;
9use datadog_api_client::datadogV1::model::FormulaAndFunctionResponseFormat;
10use datadog_api_client::datadogV1::model::TimeseriesWidgetDefinition;
11use datadog_api_client::datadogV1::model::TimeseriesWidgetDefinitionType;
12use datadog_api_client::datadogV1::model::TimeseriesWidgetRequest;
13use datadog_api_client::datadogV1::model::Widget;
14use datadog_api_client::datadogV1::model::WidgetDefinition;
15use datadog_api_client::datadogV1::model::WidgetDisplayType;
16use datadog_api_client::datadogV1::model::WidgetLineType;
17use datadog_api_client::datadogV1::model::WidgetLineWidth;
18use datadog_api_client::datadogV1::model::WidgetRequestStyle;
19
20#[tokio::main]
21async fn main() {
22    let body =
23        Dashboard::new(
24            DashboardLayoutType::ORDERED,
25            "Example-Dashboard".to_string(),
26            vec![
27                Widget::new(
28                    WidgetDefinition::TimeseriesWidgetDefinition(
29                        Box::new(
30                            TimeseriesWidgetDefinition::new(
31                                vec![
32                                    TimeseriesWidgetRequest::new()
33                                        .display_type(WidgetDisplayType::LINE)
34                                        .on_right_yaxis(false)
35                                        .queries(
36                                            vec![
37                                                FormulaAndFunctionQueryDefinition
38                                                ::FormulaAndFunctionMetricQueryDefinition(
39                                                    Box::new(
40                                                        FormulaAndFunctionMetricQueryDefinition::new(
41                                                            FormulaAndFunctionMetricDataSource::METRICS,
42                                                            "mymetric".to_string(),
43                                                            "avg:system.cpu.user{*}".to_string(),
44                                                        ),
45                                                    ),
46                                                )
47                                            ],
48                                        )
49                                        .response_format(FormulaAndFunctionResponseFormat::TIMESERIES),
50                                    TimeseriesWidgetRequest::new()
51                                        .display_type(WidgetDisplayType::OVERLAY)
52                                        .queries(
53                                            vec![
54                                                FormulaAndFunctionQueryDefinition
55                                                ::FormulaAndFunctionMetricQueryDefinition(
56                                                    Box::new(
57                                                        FormulaAndFunctionMetricQueryDefinition::new(
58                                                            FormulaAndFunctionMetricDataSource::METRICS,
59                                                            "mymetricoverlay".to_string(),
60                                                            "avg:system.cpu.user{*}".to_string(),
61                                                        ),
62                                                    ),
63                                                )
64                                            ],
65                                        )
66                                        .response_format(FormulaAndFunctionResponseFormat::TIMESERIES)
67                                        .style(
68                                            WidgetRequestStyle::new()
69                                                .line_type(WidgetLineType::SOLID)
70                                                .line_width(WidgetLineWidth::NORMAL)
71                                                .palette("purple".to_string()),
72                                        )
73                                ],
74                                TimeseriesWidgetDefinitionType::TIMESERIES,
75                            ),
76                        ),
77                    ),
78                )
79            ],
80        );
81    let configuration = datadog::Configuration::new();
82    let api = DashboardsAPI::with_config(configuration);
83    let resp = api.create_dashboard(body).await;
84    if let Ok(value) = resp {
85        println!("{:#?}", value);
86    } else {
87        println!("{:#?}", resp.unwrap_err());
88    }
89}