v1_dashboards_CreateDashboard/
v1_dashboards_CreateDashboard.rs

1// Create a new dashboard returns "OK" response
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::LogQueryDefinition;
7use datadog_api_client::datadogV1::model::LogQueryDefinitionGroupBy;
8use datadog_api_client::datadogV1::model::LogQueryDefinitionGroupBySort;
9use datadog_api_client::datadogV1::model::LogQueryDefinitionSearch;
10use datadog_api_client::datadogV1::model::LogsQueryCompute;
11use datadog_api_client::datadogV1::model::TimeseriesWidgetDefinition;
12use datadog_api_client::datadogV1::model::TimeseriesWidgetDefinitionType;
13use datadog_api_client::datadogV1::model::TimeseriesWidgetRequest;
14use datadog_api_client::datadogV1::model::Widget;
15use datadog_api_client::datadogV1::model::WidgetDefinition;
16use datadog_api_client::datadogV1::model::WidgetSort;
17
18#[tokio::main]
19async fn main() {
20    let body = Dashboard::new(
21        DashboardLayoutType::ORDERED,
22        "Example-Dashboard with Profile Metrics Query".to_string(),
23        vec![Widget::new(WidgetDefinition::TimeseriesWidgetDefinition(
24            Box::new(TimeseriesWidgetDefinition::new(
25                vec![TimeseriesWidgetRequest::new().profile_metrics_query(
26                    LogQueryDefinition::new()
27                        .compute(
28                            LogsQueryCompute::new("sum".to_string())
29                                .facet("@prof_core_cpu_cores".to_string()),
30                        )
31                        .group_by(vec![LogQueryDefinitionGroupBy::new("service".to_string())
32                            .limit(10)
33                            .sort(
34                                LogQueryDefinitionGroupBySort::new(
35                                    "sum".to_string(),
36                                    WidgetSort::DESCENDING,
37                                )
38                                .facet("@prof_core_cpu_cores".to_string()),
39                            )])
40                        .search(LogQueryDefinitionSearch::new("runtime:jvm".to_string())),
41                )],
42                TimeseriesWidgetDefinitionType::TIMESERIES,
43            )),
44        ))],
45    );
46    let configuration = datadog::Configuration::new();
47    let api = DashboardsAPI::with_config(configuration);
48    let resp = api.create_dashboard(body).await;
49    if let Ok(value) = resp {
50        println!("{:#?}", value);
51    } else {
52        println!("{:#?}", resp.unwrap_err());
53    }
54}