v1_dashboards_CreateDashboard_3669695268/
v1_dashboards_CreateDashboard_3669695268.rs

1// Create a new dashboard with logs query table widget and storage parameter
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::FormulaAndFunctionEventAggregation;
7use datadog_api_client::datadogV1::model::FormulaAndFunctionEventQueryDefinition;
8use datadog_api_client::datadogV1::model::FormulaAndFunctionEventQueryDefinitionCompute;
9use datadog_api_client::datadogV1::model::FormulaAndFunctionEventQueryDefinitionSearch;
10use datadog_api_client::datadogV1::model::FormulaAndFunctionEventsDataSource;
11use datadog_api_client::datadogV1::model::FormulaAndFunctionQueryDefinition;
12use datadog_api_client::datadogV1::model::FormulaAndFunctionResponseFormat;
13use datadog_api_client::datadogV1::model::FormulaType;
14use datadog_api_client::datadogV1::model::TableWidgetCellDisplayMode;
15use datadog_api_client::datadogV1::model::TableWidgetDefinition;
16use datadog_api_client::datadogV1::model::TableWidgetDefinitionType;
17use datadog_api_client::datadogV1::model::TableWidgetRequest;
18use datadog_api_client::datadogV1::model::Widget;
19use datadog_api_client::datadogV1::model::WidgetDefinition;
20use datadog_api_client::datadogV1::model::WidgetFormula;
21use datadog_api_client::datadogV1::model::WidgetFormulaSort;
22use datadog_api_client::datadogV1::model::WidgetSort;
23use datadog_api_client::datadogV1::model::WidgetSortBy;
24use datadog_api_client::datadogV1::model::WidgetSortOrderBy;
25
26#[tokio::main]
27async fn main() {
28    let body = Dashboard::new(
29        DashboardLayoutType::ORDERED,
30        "Example-Dashboard with query table widget and storage parameter".to_string(),
31        vec![Widget::new(WidgetDefinition::TableWidgetDefinition(
32            Box::new(TableWidgetDefinition::new(
33                vec![TableWidgetRequest::new()
34                    .formulas(vec![WidgetFormula::new("query1".to_string())
35                        .cell_display_mode(TableWidgetCellDisplayMode::BAR)
36                        .conditional_formats(vec![])])
37                    .queries(vec![
38                        FormulaAndFunctionQueryDefinition::FormulaAndFunctionEventQueryDefinition(
39                            Box::new(
40                                FormulaAndFunctionEventQueryDefinition::new(
41                                    FormulaAndFunctionEventQueryDefinitionCompute::new(
42                                        FormulaAndFunctionEventAggregation::COUNT,
43                                    ),
44                                    FormulaAndFunctionEventsDataSource::LOGS,
45                                    "query1".to_string(),
46                                )
47                                .group_by(vec![])
48                                .indexes(vec!["*".to_string()])
49                                .search(FormulaAndFunctionEventQueryDefinitionSearch::new(
50                                    "".to_string(),
51                                ))
52                                .storage("online_archives".to_string()),
53                            ),
54                        ),
55                    ])
56                    .response_format(FormulaAndFunctionResponseFormat::SCALAR)
57                    .sort(WidgetSortBy::new().count(50).order_by(vec![
58                        WidgetSortOrderBy::WidgetFormulaSort(Box::new(WidgetFormulaSort::new(
59                            0,
60                            WidgetSort::DESCENDING,
61                            FormulaType::FORMULA,
62                        ))),
63                    ]))],
64                TableWidgetDefinitionType::QUERY_TABLE,
65            )),
66        ))],
67    );
68    let configuration = datadog::Configuration::new();
69    let api = DashboardsAPI::with_config(configuration);
70    let resp = api.create_dashboard(body).await;
71    if let Ok(value) = resp {
72        println!("{:#?}", value);
73    } else {
74        println!("{:#?}", resp.unwrap_err());
75    }
76}