v1_dashboards_CreateDashboard_41622531/
v1_dashboards_CreateDashboard_41622531.rs

1// Create a new dashboard with timeseries widget and formula style attributes
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::DashboardReflowType;
7use datadog_api_client::datadogV1::model::FormulaAndFunctionMetricDataSource;
8use datadog_api_client::datadogV1::model::FormulaAndFunctionMetricQueryDefinition;
9use datadog_api_client::datadogV1::model::FormulaAndFunctionQueryDefinition;
10use datadog_api_client::datadogV1::model::FormulaAndFunctionResponseFormat;
11use datadog_api_client::datadogV1::model::TimeseriesWidgetDefinition;
12use datadog_api_client::datadogV1::model::TimeseriesWidgetDefinitionType;
13use datadog_api_client::datadogV1::model::TimeseriesWidgetLegendColumn;
14use datadog_api_client::datadogV1::model::TimeseriesWidgetLegendLayout;
15use datadog_api_client::datadogV1::model::TimeseriesWidgetRequest;
16use datadog_api_client::datadogV1::model::Widget;
17use datadog_api_client::datadogV1::model::WidgetDefinition;
18use datadog_api_client::datadogV1::model::WidgetDisplayType;
19use datadog_api_client::datadogV1::model::WidgetFormula;
20use datadog_api_client::datadogV1::model::WidgetFormulaStyle;
21use datadog_api_client::datadogV1::model::WidgetLegacyLiveSpan;
22use datadog_api_client::datadogV1::model::WidgetLineType;
23use datadog_api_client::datadogV1::model::WidgetLineWidth;
24use datadog_api_client::datadogV1::model::WidgetRequestStyle;
25use datadog_api_client::datadogV1::model::WidgetTime;
26
27#[tokio::main]
28async fn main() {
29    let body =
30        Dashboard::new(
31            DashboardLayoutType::ORDERED,
32            "Example-Dashboard with formula style".to_string(),
33            vec![
34                Widget::new(
35                    WidgetDefinition::TimeseriesWidgetDefinition(
36                        Box::new(
37                            TimeseriesWidgetDefinition::new(
38                                vec![
39                                    TimeseriesWidgetRequest::new()
40                                        .display_type(WidgetDisplayType::LINE)
41                                        .formulas(
42                                            vec![
43                                                WidgetFormula::new(
44                                                    "query1".to_string(),
45                                                ).style(
46                                                    WidgetFormulaStyle::new()
47                                                        .palette("classic".to_string())
48                                                        .palette_index(4),
49                                                )
50                                            ],
51                                        )
52                                        .queries(
53                                            vec![
54                                                FormulaAndFunctionQueryDefinition
55                                                ::FormulaAndFunctionMetricQueryDefinition(
56                                                    Box::new(
57                                                        FormulaAndFunctionMetricQueryDefinition::new(
58                                                            FormulaAndFunctionMetricDataSource::METRICS,
59                                                            "query1".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("dog_classic".to_string()),
72                                        )
73                                ],
74                                TimeseriesWidgetDefinitionType::TIMESERIES,
75                            )
76                                .legend_columns(
77                                    vec![
78                                        TimeseriesWidgetLegendColumn::AVG,
79                                        TimeseriesWidgetLegendColumn::MIN,
80                                        TimeseriesWidgetLegendColumn::MAX,
81                                        TimeseriesWidgetLegendColumn::VALUE,
82                                        TimeseriesWidgetLegendColumn::SUM
83                                    ],
84                                )
85                                .legend_layout(TimeseriesWidgetLegendLayout::AUTO)
86                                .show_legend(true)
87                                .time(WidgetTime::WidgetLegacyLiveSpan(Box::new(WidgetLegacyLiveSpan::new())))
88                                .title("styled timeseries".to_string()),
89                        ),
90                    ),
91                )
92            ],
93        ).reflow_type(DashboardReflowType::AUTO);
94    let configuration = datadog::Configuration::new();
95    let api = DashboardsAPI::with_config(configuration);
96    let resp = api.create_dashboard(body).await;
97    if let Ok(value) = resp {
98        println!("{:#?}", value);
99    } else {
100        println!("{:#?}", resp.unwrap_err());
101    }
102}