v2_observability_pipelines_CreatePipeline/
v2_observability-pipelines_CreatePipeline.rs

1// Create a new pipeline returns "OK" response
2use datadog_api_client::datadog;
3use datadog_api_client::datadogV2::api_observability_pipelines::ObservabilityPipelinesAPI;
4use datadog_api_client::datadogV2::model::ObservabilityPipelineConfig;
5use datadog_api_client::datadogV2::model::ObservabilityPipelineConfigDestinationItem;
6use datadog_api_client::datadogV2::model::ObservabilityPipelineConfigProcessorItem;
7use datadog_api_client::datadogV2::model::ObservabilityPipelineConfigSourceItem;
8use datadog_api_client::datadogV2::model::ObservabilityPipelineDataAttributes;
9use datadog_api_client::datadogV2::model::ObservabilityPipelineDatadogAgentSource;
10use datadog_api_client::datadogV2::model::ObservabilityPipelineDatadogAgentSourceType;
11use datadog_api_client::datadogV2::model::ObservabilityPipelineDatadogLogsDestination;
12use datadog_api_client::datadogV2::model::ObservabilityPipelineDatadogLogsDestinationType;
13use datadog_api_client::datadogV2::model::ObservabilityPipelineFilterProcessor;
14use datadog_api_client::datadogV2::model::ObservabilityPipelineFilterProcessorType;
15use datadog_api_client::datadogV2::model::ObservabilityPipelineSpec;
16use datadog_api_client::datadogV2::model::ObservabilityPipelineSpecData;
17
18#[tokio::main]
19async fn main() {
20    let body =
21        ObservabilityPipelineSpec::new(
22            ObservabilityPipelineSpecData::new(
23                ObservabilityPipelineDataAttributes::new(
24                    ObservabilityPipelineConfig::new(
25                        vec![
26                            ObservabilityPipelineConfigDestinationItem::ObservabilityPipelineDatadogLogsDestination(
27                                Box::new(
28                                    ObservabilityPipelineDatadogLogsDestination::new(
29                                        "datadog-logs-destination".to_string(),
30                                        vec!["filter-processor".to_string()],
31                                        ObservabilityPipelineDatadogLogsDestinationType::DATADOG_LOGS,
32                                    ),
33                                ),
34                            )
35                        ],
36                        vec![
37                            ObservabilityPipelineConfigSourceItem::ObservabilityPipelineDatadogAgentSource(
38                                Box::new(
39                                    ObservabilityPipelineDatadogAgentSource::new(
40                                        "datadog-agent-source".to_string(),
41                                        ObservabilityPipelineDatadogAgentSourceType::DATADOG_AGENT,
42                                    ),
43                                ),
44                            )
45                        ],
46                    ).processors(
47                        vec![
48                            ObservabilityPipelineConfigProcessorItem::ObservabilityPipelineFilterProcessor(
49                                Box::new(
50                                    ObservabilityPipelineFilterProcessor::new(
51                                        "filter-processor".to_string(),
52                                        "service:my-service".to_string(),
53                                        vec!["datadog-agent-source".to_string()],
54                                        ObservabilityPipelineFilterProcessorType::FILTER,
55                                    ),
56                                ),
57                            )
58                        ],
59                    ),
60                    "Main Observability Pipeline".to_string(),
61                ),
62                "pipelines".to_string(),
63            ),
64        );
65    let mut configuration = datadog::Configuration::new();
66    configuration.set_unstable_operation_enabled("v2.CreatePipeline", true);
67    let api = ObservabilityPipelinesAPI::with_config(configuration);
68    let resp = api.create_pipeline(body).await;
69    if let Ok(value) = resp {
70        println!("{:#?}", value);
71    } else {
72        println!("{:#?}", resp.unwrap_err());
73    }
74}