v1_dashboards_CreateDashboard_3882428227/
v1_dashboards_CreateDashboard_3882428227.rs

1// Create a distribution widget using a histogram request containing a formulas
2// and functions events query
3use datadog_api_client::datadog;
4use datadog_api_client::datadogV1::api_dashboards::DashboardsAPI;
5use datadog_api_client::datadogV1::model::Dashboard;
6use datadog_api_client::datadogV1::model::DashboardLayoutType;
7use datadog_api_client::datadogV1::model::DistributionWidgetDefinition;
8use datadog_api_client::datadogV1::model::DistributionWidgetDefinitionType;
9use datadog_api_client::datadogV1::model::DistributionWidgetHistogramRequestQuery;
10use datadog_api_client::datadogV1::model::DistributionWidgetHistogramRequestType;
11use datadog_api_client::datadogV1::model::DistributionWidgetRequest;
12use datadog_api_client::datadogV1::model::DistributionWidgetXAxis;
13use datadog_api_client::datadogV1::model::DistributionWidgetYAxis;
14use datadog_api_client::datadogV1::model::FormulaAndFunctionEventAggregation;
15use datadog_api_client::datadogV1::model::FormulaAndFunctionEventQueryDefinition;
16use datadog_api_client::datadogV1::model::FormulaAndFunctionEventQueryDefinitionCompute;
17use datadog_api_client::datadogV1::model::FormulaAndFunctionEventQueryDefinitionSearch;
18use datadog_api_client::datadogV1::model::FormulaAndFunctionEventsDataSource;
19use datadog_api_client::datadogV1::model::Widget;
20use datadog_api_client::datadogV1::model::WidgetDefinition;
21use datadog_api_client::datadogV1::model::WidgetLayout;
22use datadog_api_client::datadogV1::model::WidgetTextAlign;
23
24#[tokio::main]
25async fn main() {
26    let body =
27        Dashboard::new(
28            DashboardLayoutType::ORDERED,
29            "Example-Dashboard".to_string(),
30            vec![
31                Widget::new(
32                    WidgetDefinition::DistributionWidgetDefinition(
33                        Box::new(
34                            DistributionWidgetDefinition::new(
35                                vec![
36                                    DistributionWidgetRequest::new()
37                                        .query(
38                                            DistributionWidgetHistogramRequestQuery
39                                            ::FormulaAndFunctionEventQueryDefinition(
40                                                Box::new(
41                                                    FormulaAndFunctionEventQueryDefinition::new(
42                                                        FormulaAndFunctionEventQueryDefinitionCompute::new(
43                                                            FormulaAndFunctionEventAggregation::MIN,
44                                                        ).metric("@duration".to_string()),
45                                                        FormulaAndFunctionEventsDataSource::EVENTS,
46                                                        "query1".to_string(),
47                                                    )
48                                                        .group_by(vec![])
49                                                        .indexes(vec!["*".to_string()])
50                                                        .search(
51                                                            FormulaAndFunctionEventQueryDefinitionSearch::new(
52                                                                "".to_string(),
53                                                            ),
54                                                        ),
55                                                ),
56                                            ),
57                                        )
58                                        .request_type(DistributionWidgetHistogramRequestType::HISTOGRAM)
59                                ],
60                                DistributionWidgetDefinitionType::DISTRIBUTION,
61                            )
62                                .show_legend(false)
63                                .title("Events Platform - Request latency HOP".to_string())
64                                .title_align(WidgetTextAlign::LEFT)
65                                .title_size("16".to_string())
66                                .xaxis(
67                                    DistributionWidgetXAxis::new()
68                                        .include_zero(true)
69                                        .max("auto".to_string())
70                                        .min("auto".to_string())
71                                        .scale("linear".to_string()),
72                                )
73                                .yaxis(
74                                    DistributionWidgetYAxis::new()
75                                        .include_zero(true)
76                                        .max("auto".to_string())
77                                        .min("auto".to_string())
78                                        .scale("linear".to_string()),
79                                ),
80                        ),
81                    ),
82                ).layout(WidgetLayout::new(2, 4, 0, 0))
83            ],
84        ).description(Some("Example-Dashboard".to_string()));
85    let configuration = datadog::Configuration::new();
86    let api = DashboardsAPI::with_config(configuration);
87    let resp = api.create_dashboard(body).await;
88    if let Ok(value) = resp {
89        println!("{:#?}", value);
90    } else {
91        println!("{:#?}", resp.unwrap_err());
92    }
93}