v1_dashboards_CreateDashboard_798168180/
v1_dashboards_CreateDashboard_798168180.rs

1// Create a new dashboard with apm dependency stats widget
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::FormulaAndFunctionApmDependencyStatName;
7use datadog_api_client::datadogV1::model::FormulaAndFunctionApmDependencyStatsDataSource;
8use datadog_api_client::datadogV1::model::FormulaAndFunctionApmDependencyStatsQueryDefinition;
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::TableWidgetRequest;
14use datadog_api_client::datadogV1::model::Widget;
15use datadog_api_client::datadogV1::model::WidgetDefinition;
16use datadog_api_client::datadogV1::model::WidgetLayout;
17use datadog_api_client::datadogV1::model::WidgetTextAlign;
18
19#[tokio::main]
20async fn main() {
21    let body =
22        Dashboard::new(
23            DashboardLayoutType::ORDERED,
24            "Example-Dashboard".to_string(),
25            vec![
26                Widget::new(
27                    WidgetDefinition::TableWidgetDefinition(
28                        Box::new(
29                            TableWidgetDefinition::new(
30                                vec![
31                                    TableWidgetRequest::new()
32                                        .queries(
33                                            vec![
34                                                FormulaAndFunctionQueryDefinition
35                                                ::FormulaAndFunctionApmDependencyStatsQueryDefinition(
36                                                    Box::new(
37                                                        FormulaAndFunctionApmDependencyStatsQueryDefinition::new(
38                                                            FormulaAndFunctionApmDependencyStatsDataSource
39                                                            ::APM_DEPENDENCY_STATS,
40                                                            "ci".to_string(),
41                                                            "query1".to_string(),
42                                                            "cassandra.query".to_string(),
43                                                            "DELETE FROM monitor_history.monitor_state_change_history WHERE org_id = ? AND monitor_id IN ? AND group = ?".to_string(),
44                                                            "cassandra".to_string(),
45                                                            FormulaAndFunctionApmDependencyStatName::AVG_DURATION,
46                                                        )
47                                                            .primary_tag_name("datacenter".to_string())
48                                                            .primary_tag_value("edge-eu1.prod.dog".to_string()),
49                                                    ),
50                                                )
51                                            ],
52                                        )
53                                        .response_format(FormulaAndFunctionResponseFormat::SCALAR)
54                                ],
55                                TableWidgetDefinitionType::QUERY_TABLE,
56                            )
57                                .title("".to_string())
58                                .title_align(WidgetTextAlign::LEFT)
59                                .title_size("16".to_string()),
60                        ),
61                    ),
62                ).layout(WidgetLayout::new(4, 4, 0, 0))
63            ],
64        );
65    let configuration = datadog::Configuration::new();
66    let api = DashboardsAPI::with_config(configuration);
67    let resp = api.create_dashboard(body).await;
68    if let Ok(value) = resp {
69        println!("{:#?}", value);
70    } else {
71        println!("{:#?}", resp.unwrap_err());
72    }
73}