v2_software_catalog_UpsertCatalogEntity/
v2_software-catalog_UpsertCatalogEntity.rs

1// Create or update entities returns "ACCEPTED" response
2use datadog_api_client::datadog;
3use datadog_api_client::datadogV2::api_software_catalog::SoftwareCatalogAPI;
4use datadog_api_client::datadogV2::model::EntityV3;
5use datadog_api_client::datadogV2::model::EntityV3APIVersion;
6use datadog_api_client::datadogV2::model::EntityV3DatadogCodeLocationItem;
7use datadog_api_client::datadogV2::model::EntityV3DatadogEventItem;
8use datadog_api_client::datadogV2::model::EntityV3DatadogIntegrationOpsgenie;
9use datadog_api_client::datadogV2::model::EntityV3DatadogIntegrationPagerduty;
10use datadog_api_client::datadogV2::model::EntityV3DatadogLogItem;
11use datadog_api_client::datadogV2::model::EntityV3DatadogPerformance;
12use datadog_api_client::datadogV2::model::EntityV3DatadogPipelines;
13use datadog_api_client::datadogV2::model::EntityV3Integrations;
14use datadog_api_client::datadogV2::model::EntityV3Metadata;
15use datadog_api_client::datadogV2::model::EntityV3MetadataAdditionalOwnersItems;
16use datadog_api_client::datadogV2::model::EntityV3MetadataContactsItems;
17use datadog_api_client::datadogV2::model::EntityV3MetadataLinksItems;
18use datadog_api_client::datadogV2::model::EntityV3Service;
19use datadog_api_client::datadogV2::model::EntityV3ServiceDatadog;
20use datadog_api_client::datadogV2::model::EntityV3ServiceKind;
21use datadog_api_client::datadogV2::model::EntityV3ServiceSpec;
22use datadog_api_client::datadogV2::model::UpsertCatalogEntityRequest;
23
24#[tokio::main]
25async fn main() {
26    let body = UpsertCatalogEntityRequest::EntityV3(Box::new(EntityV3::EntityV3Service(Box::new(
27        EntityV3Service::new(
28            EntityV3APIVersion::V3,
29            EntityV3ServiceKind::SERVICE,
30            EntityV3Metadata::new("myService".to_string())
31                .additional_owners(vec![EntityV3MetadataAdditionalOwnersItems::new(
32                    "".to_string(),
33                )])
34                .contacts(vec![EntityV3MetadataContactsItems::new(
35                    "https://slack/".to_string(),
36                    "slack".to_string(),
37                )])
38                .id("4b163705-23c0-4573-b2fb-f6cea2163fcb".to_string())
39                .inherit_from("application:default/myapp".to_string())
40                .links(vec![EntityV3MetadataLinksItems::new(
41                    "mylink".to_string(),
42                    "link".to_string(),
43                    "https://mylink".to_string(),
44                )])
45                .namespace("default".to_string())
46                .tags(vec!["this:tag".to_string(), "that:tag".to_string()]),
47        )
48        .datadog(
49            EntityV3ServiceDatadog::new()
50                .code_locations(vec![EntityV3DatadogCodeLocationItem::new().paths(vec![])])
51                .events(vec![EntityV3DatadogEventItem::new()])
52                .logs(vec![EntityV3DatadogLogItem::new()])
53                .performance_data(EntityV3DatadogPerformance::new().tags(vec![]))
54                .pipelines(EntityV3DatadogPipelines::new().fingerprints(vec![])),
55        )
56        .integrations(
57            EntityV3Integrations::new()
58                .opsgenie(EntityV3DatadogIntegrationOpsgenie::new(
59                    "https://www.opsgenie.com/service/shopping-cart".to_string(),
60                ))
61                .pagerduty(EntityV3DatadogIntegrationPagerduty::new(
62                    "https://www.pagerduty.com/service-directory/Pshopping-cart".to_string(),
63                )),
64        )
65        .spec(
66            EntityV3ServiceSpec::new()
67                .component_of(vec![])
68                .depends_on(vec![])
69                .languages(vec![]),
70        ),
71    ))));
72    let configuration = datadog::Configuration::new();
73    let api = SoftwareCatalogAPI::with_config(configuration);
74    let resp = api.upsert_catalog_entity(body).await;
75    if let Ok(value) = resp {
76        println!("{:#?}", value);
77    } else {
78        println!("{:#?}", resp.unwrap_err());
79    }
80}