diff --git a/.generator/schemas/v2/openapi.yaml b/.generator/schemas/v2/openapi.yaml index 181237b18fc..ad75118bfde 100644 --- a/.generator/schemas/v2/openapi.yaml +++ b/.generator/schemas/v2/openapi.yaml @@ -39514,6 +39514,8 @@ components: **Supported pipeline types:** logs' properties: + cache: + $ref: '#/components/schemas/ObservabilityPipelineDedupeProcessorCache' display_name: $ref: '#/components/schemas/ObservabilityPipelineComponentDisplayName' enabled: @@ -39551,6 +39553,19 @@ components: type: object x-pipeline-types: - logs + ObservabilityPipelineDedupeProcessorCache: + description: Configuration for the cache used to detect duplicates. + properties: + num_events: + description: The number of events to cache for duplicate detection. + example: 5000 + format: int64 + maximum: 1000000000 + minimum: 1 + type: integer + required: + - num_events + type: object ObservabilityPipelineDedupeProcessorMode: description: The deduplication mode to apply to the fields. enum: diff --git a/examples/v2/observability-pipelines/CreatePipeline_3363445359.java b/examples/v2/observability-pipelines/CreatePipeline_3363445359.java new file mode 100644 index 00000000000..966d8edc5f8 --- /dev/null +++ b/examples/v2/observability-pipelines/CreatePipeline_3363445359.java @@ -0,0 +1,99 @@ +// Create a pipeline with dedupe processor with cache returns "OK" response + +import com.datadog.api.client.ApiClient; +import com.datadog.api.client.ApiException; +import com.datadog.api.client.v2.api.ObservabilityPipelinesApi; +import com.datadog.api.client.v2.model.ObservabilityPipeline; +import com.datadog.api.client.v2.model.ObservabilityPipelineConfig; +import com.datadog.api.client.v2.model.ObservabilityPipelineConfigDestinationItem; +import com.datadog.api.client.v2.model.ObservabilityPipelineConfigProcessorGroup; +import com.datadog.api.client.v2.model.ObservabilityPipelineConfigProcessorItem; +import com.datadog.api.client.v2.model.ObservabilityPipelineConfigSourceItem; +import com.datadog.api.client.v2.model.ObservabilityPipelineDataAttributes; +import com.datadog.api.client.v2.model.ObservabilityPipelineDatadogAgentSource; +import com.datadog.api.client.v2.model.ObservabilityPipelineDatadogAgentSourceType; +import com.datadog.api.client.v2.model.ObservabilityPipelineDatadogLogsDestination; +import com.datadog.api.client.v2.model.ObservabilityPipelineDatadogLogsDestinationType; +import com.datadog.api.client.v2.model.ObservabilityPipelineDedupeProcessor; +import com.datadog.api.client.v2.model.ObservabilityPipelineDedupeProcessorCache; +import com.datadog.api.client.v2.model.ObservabilityPipelineDedupeProcessorMode; +import com.datadog.api.client.v2.model.ObservabilityPipelineDedupeProcessorType; +import com.datadog.api.client.v2.model.ObservabilityPipelineSpec; +import com.datadog.api.client.v2.model.ObservabilityPipelineSpecData; +import java.util.Collections; + +public class Example { + public static void main(String[] args) { + ApiClient defaultClient = ApiClient.getDefaultApiClient(); + ObservabilityPipelinesApi apiInstance = new ObservabilityPipelinesApi(defaultClient); + + ObservabilityPipelineSpec body = + new ObservabilityPipelineSpec() + .data( + new ObservabilityPipelineSpecData() + .attributes( + new ObservabilityPipelineDataAttributes() + .config( + new ObservabilityPipelineConfig() + .destinations( + Collections.singletonList( + new ObservabilityPipelineConfigDestinationItem( + new ObservabilityPipelineDatadogLogsDestination() + .id("datadog-logs-destination") + .inputs( + Collections.singletonList( + "my-processor-group")) + .type( + ObservabilityPipelineDatadogLogsDestinationType + .DATADOG_LOGS)))) + .processorGroups( + Collections.singletonList( + new ObservabilityPipelineConfigProcessorGroup() + .enabled(true) + .id("my-processor-group") + .include("service:my-service") + .inputs( + Collections.singletonList( + "datadog-agent-source")) + .processors( + Collections.singletonList( + new ObservabilityPipelineConfigProcessorItem( + new ObservabilityPipelineDedupeProcessor() + .enabled(true) + .id("dedupe-processor") + .include("service:my-service") + .type( + ObservabilityPipelineDedupeProcessorType + .DEDUPE) + .fields( + Collections.singletonList( + "message")) + .mode( + ObservabilityPipelineDedupeProcessorMode + .MATCH) + .cache( + new ObservabilityPipelineDedupeProcessorCache() + .numEvents(5000L))))))) + .sources( + Collections.singletonList( + new ObservabilityPipelineConfigSourceItem( + new ObservabilityPipelineDatadogAgentSource() + .id("datadog-agent-source") + .type( + ObservabilityPipelineDatadogAgentSourceType + .DATADOG_AGENT))))) + .name("Pipeline with Dedupe Cache")) + .type("pipelines")); + + try { + ObservabilityPipeline result = apiInstance.createPipeline(body); + System.out.println(result); + } catch (ApiException e) { + System.err.println("Exception when calling ObservabilityPipelinesApi#createPipeline"); + System.err.println("Status code: " + e.getCode()); + System.err.println("Reason: " + e.getResponseBody()); + System.err.println("Response headers: " + e.getResponseHeaders()); + e.printStackTrace(); + } + } +} diff --git a/examples/v2/observability-pipelines/CreatePipeline_581245895.java b/examples/v2/observability-pipelines/CreatePipeline_581245895.java new file mode 100644 index 00000000000..bed0a8776fe --- /dev/null +++ b/examples/v2/observability-pipelines/CreatePipeline_581245895.java @@ -0,0 +1,95 @@ +// Create a pipeline with dedupe processor without cache returns "OK" response + +import com.datadog.api.client.ApiClient; +import com.datadog.api.client.ApiException; +import com.datadog.api.client.v2.api.ObservabilityPipelinesApi; +import com.datadog.api.client.v2.model.ObservabilityPipeline; +import com.datadog.api.client.v2.model.ObservabilityPipelineConfig; +import com.datadog.api.client.v2.model.ObservabilityPipelineConfigDestinationItem; +import com.datadog.api.client.v2.model.ObservabilityPipelineConfigProcessorGroup; +import com.datadog.api.client.v2.model.ObservabilityPipelineConfigProcessorItem; +import com.datadog.api.client.v2.model.ObservabilityPipelineConfigSourceItem; +import com.datadog.api.client.v2.model.ObservabilityPipelineDataAttributes; +import com.datadog.api.client.v2.model.ObservabilityPipelineDatadogAgentSource; +import com.datadog.api.client.v2.model.ObservabilityPipelineDatadogAgentSourceType; +import com.datadog.api.client.v2.model.ObservabilityPipelineDatadogLogsDestination; +import com.datadog.api.client.v2.model.ObservabilityPipelineDatadogLogsDestinationType; +import com.datadog.api.client.v2.model.ObservabilityPipelineDedupeProcessor; +import com.datadog.api.client.v2.model.ObservabilityPipelineDedupeProcessorMode; +import com.datadog.api.client.v2.model.ObservabilityPipelineDedupeProcessorType; +import com.datadog.api.client.v2.model.ObservabilityPipelineSpec; +import com.datadog.api.client.v2.model.ObservabilityPipelineSpecData; +import java.util.Collections; + +public class Example { + public static void main(String[] args) { + ApiClient defaultClient = ApiClient.getDefaultApiClient(); + ObservabilityPipelinesApi apiInstance = new ObservabilityPipelinesApi(defaultClient); + + ObservabilityPipelineSpec body = + new ObservabilityPipelineSpec() + .data( + new ObservabilityPipelineSpecData() + .attributes( + new ObservabilityPipelineDataAttributes() + .config( + new ObservabilityPipelineConfig() + .destinations( + Collections.singletonList( + new ObservabilityPipelineConfigDestinationItem( + new ObservabilityPipelineDatadogLogsDestination() + .id("datadog-logs-destination") + .inputs( + Collections.singletonList( + "my-processor-group")) + .type( + ObservabilityPipelineDatadogLogsDestinationType + .DATADOG_LOGS)))) + .processorGroups( + Collections.singletonList( + new ObservabilityPipelineConfigProcessorGroup() + .enabled(true) + .id("my-processor-group") + .include("service:my-service") + .inputs( + Collections.singletonList( + "datadog-agent-source")) + .processors( + Collections.singletonList( + new ObservabilityPipelineConfigProcessorItem( + new ObservabilityPipelineDedupeProcessor() + .enabled(true) + .id("dedupe-processor") + .include("service:my-service") + .type( + ObservabilityPipelineDedupeProcessorType + .DEDUPE) + .fields( + Collections.singletonList( + "message")) + .mode( + ObservabilityPipelineDedupeProcessorMode + .MATCH)))))) + .sources( + Collections.singletonList( + new ObservabilityPipelineConfigSourceItem( + new ObservabilityPipelineDatadogAgentSource() + .id("datadog-agent-source") + .type( + ObservabilityPipelineDatadogAgentSourceType + .DATADOG_AGENT))))) + .name("Pipeline with Dedupe No Cache")) + .type("pipelines")); + + try { + ObservabilityPipeline result = apiInstance.createPipeline(body); + System.out.println(result); + } catch (ApiException e) { + System.err.println("Exception when calling ObservabilityPipelinesApi#createPipeline"); + System.err.println("Status code: " + e.getCode()); + System.err.println("Reason: " + e.getResponseBody()); + System.err.println("Response headers: " + e.getResponseHeaders()); + e.printStackTrace(); + } + } +} diff --git a/src/main/java/com/datadog/api/client/v2/model/ObservabilityPipelineDedupeProcessor.java b/src/main/java/com/datadog/api/client/v2/model/ObservabilityPipelineDedupeProcessor.java index 7777a43977e..2e5e695eeae 100644 --- a/src/main/java/com/datadog/api/client/v2/model/ObservabilityPipelineDedupeProcessor.java +++ b/src/main/java/com/datadog/api/client/v2/model/ObservabilityPipelineDedupeProcessor.java @@ -25,6 +25,7 @@ *

Supported pipeline types: logs */ @JsonPropertyOrder({ + ObservabilityPipelineDedupeProcessor.JSON_PROPERTY_CACHE, ObservabilityPipelineDedupeProcessor.JSON_PROPERTY_DISPLAY_NAME, ObservabilityPipelineDedupeProcessor.JSON_PROPERTY_ENABLED, ObservabilityPipelineDedupeProcessor.JSON_PROPERTY_FIELDS, @@ -37,6 +38,9 @@ value = "https://github.com/DataDog/datadog-api-client-java/blob/master/.generator") public class ObservabilityPipelineDedupeProcessor { @JsonIgnore public boolean unparsed = false; + public static final String JSON_PROPERTY_CACHE = "cache"; + private ObservabilityPipelineDedupeProcessorCache cache; + public static final String JSON_PROPERTY_DISPLAY_NAME = "display_name"; private String displayName; @@ -81,6 +85,29 @@ public ObservabilityPipelineDedupeProcessor( this.unparsed |= !type.isValid(); } + public ObservabilityPipelineDedupeProcessor cache( + ObservabilityPipelineDedupeProcessorCache cache) { + this.cache = cache; + this.unparsed |= cache.unparsed; + return this; + } + + /** + * Configuration for the cache used to detect duplicates. + * + * @return cache + */ + @jakarta.annotation.Nullable + @JsonProperty(JSON_PROPERTY_CACHE) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public ObservabilityPipelineDedupeProcessorCache getCache() { + return cache; + } + + public void setCache(ObservabilityPipelineDedupeProcessorCache cache) { + this.cache = cache; + } + public ObservabilityPipelineDedupeProcessor displayName(String displayName) { this.displayName = displayName; return this; @@ -292,7 +319,8 @@ public boolean equals(Object o) { } ObservabilityPipelineDedupeProcessor observabilityPipelineDedupeProcessor = (ObservabilityPipelineDedupeProcessor) o; - return Objects.equals(this.displayName, observabilityPipelineDedupeProcessor.displayName) + return Objects.equals(this.cache, observabilityPipelineDedupeProcessor.cache) + && Objects.equals(this.displayName, observabilityPipelineDedupeProcessor.displayName) && Objects.equals(this.enabled, observabilityPipelineDedupeProcessor.enabled) && Objects.equals(this.fields, observabilityPipelineDedupeProcessor.fields) && Objects.equals(this.id, observabilityPipelineDedupeProcessor.id) @@ -306,13 +334,14 @@ public boolean equals(Object o) { @Override public int hashCode() { return Objects.hash( - displayName, enabled, fields, id, include, mode, type, additionalProperties); + cache, displayName, enabled, fields, id, include, mode, type, additionalProperties); } @Override public String toString() { StringBuilder sb = new StringBuilder(); sb.append("class ObservabilityPipelineDedupeProcessor {\n"); + sb.append(" cache: ").append(toIndentedString(cache)).append("\n"); sb.append(" displayName: ").append(toIndentedString(displayName)).append("\n"); sb.append(" enabled: ").append(toIndentedString(enabled)).append("\n"); sb.append(" fields: ").append(toIndentedString(fields)).append("\n"); diff --git a/src/main/java/com/datadog/api/client/v2/model/ObservabilityPipelineDedupeProcessorCache.java b/src/main/java/com/datadog/api/client/v2/model/ObservabilityPipelineDedupeProcessorCache.java new file mode 100644 index 00000000000..d656f08f273 --- /dev/null +++ b/src/main/java/com/datadog/api/client/v2/model/ObservabilityPipelineDedupeProcessorCache.java @@ -0,0 +1,146 @@ +/* + * Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. + * This product includes software developed at Datadog (https://www.datadoghq.com/). + * Copyright 2019-Present Datadog, Inc. + */ + +package com.datadog.api.client.v2.model; + +import com.fasterxml.jackson.annotation.JsonAnyGetter; +import com.fasterxml.jackson.annotation.JsonAnySetter; +import com.fasterxml.jackson.annotation.JsonCreator; +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonPropertyOrder; +import java.util.HashMap; +import java.util.Map; +import java.util.Objects; + +/** Configuration for the cache used to detect duplicates. */ +@JsonPropertyOrder({ObservabilityPipelineDedupeProcessorCache.JSON_PROPERTY_NUM_EVENTS}) +@jakarta.annotation.Generated( + value = "https://github.com/DataDog/datadog-api-client-java/blob/master/.generator") +public class ObservabilityPipelineDedupeProcessorCache { + @JsonIgnore public boolean unparsed = false; + public static final String JSON_PROPERTY_NUM_EVENTS = "num_events"; + private Long numEvents; + + public ObservabilityPipelineDedupeProcessorCache() {} + + @JsonCreator + public ObservabilityPipelineDedupeProcessorCache( + @JsonProperty(required = true, value = JSON_PROPERTY_NUM_EVENTS) Long numEvents) { + this.numEvents = numEvents; + } + + public ObservabilityPipelineDedupeProcessorCache numEvents(Long numEvents) { + this.numEvents = numEvents; + return this; + } + + /** + * The number of events to cache for duplicate detection. minimum: 1 maximum: 1000000000 + * + * @return numEvents + */ + @JsonProperty(JSON_PROPERTY_NUM_EVENTS) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + public Long getNumEvents() { + return numEvents; + } + + public void setNumEvents(Long numEvents) { + this.numEvents = numEvents; + } + + /** + * A container for additional, undeclared properties. This is a holder for any undeclared + * properties as specified with the 'additionalProperties' keyword in the OAS document. + */ + private Map additionalProperties; + + /** + * Set the additional (undeclared) property with the specified name and value. If the property + * does not already exist, create it otherwise replace it. + * + * @param key The arbitrary key to set + * @param value The associated value + * @return ObservabilityPipelineDedupeProcessorCache + */ + @JsonAnySetter + public ObservabilityPipelineDedupeProcessorCache putAdditionalProperty(String key, Object value) { + if (this.additionalProperties == null) { + this.additionalProperties = new HashMap(); + } + this.additionalProperties.put(key, value); + return this; + } + + /** + * Return the additional (undeclared) property. + * + * @return The additional properties + */ + @JsonAnyGetter + public Map getAdditionalProperties() { + return additionalProperties; + } + + /** + * Return the additional (undeclared) property with the specified name. + * + * @param key The arbitrary key to get + * @return The specific additional property for the given key + */ + public Object getAdditionalProperty(String key) { + if (this.additionalProperties == null) { + return null; + } + return this.additionalProperties.get(key); + } + + /** Return true if this ObservabilityPipelineDedupeProcessorCache object is equal to o. */ + @Override + public boolean equals(Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + ObservabilityPipelineDedupeProcessorCache observabilityPipelineDedupeProcessorCache = + (ObservabilityPipelineDedupeProcessorCache) o; + return Objects.equals(this.numEvents, observabilityPipelineDedupeProcessorCache.numEvents) + && Objects.equals( + this.additionalProperties, + observabilityPipelineDedupeProcessorCache.additionalProperties); + } + + @Override + public int hashCode() { + return Objects.hash(numEvents, additionalProperties); + } + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("class ObservabilityPipelineDedupeProcessorCache {\n"); + sb.append(" numEvents: ").append(toIndentedString(numEvents)).append("\n"); + sb.append(" additionalProperties: ") + .append(toIndentedString(additionalProperties)) + .append("\n"); + sb.append('}'); + return sb.toString(); + } + + /** + * Convert the given object to string with each line indented by 4 spaces (except the first line). + */ + private String toIndentedString(Object o) { + if (o == null) { + return "null"; + } + return o.toString().replace("\n", "\n "); + } +} diff --git a/src/test/resources/cassettes/features/v2/Create_a_pipeline_with_dedupe_processor_with_cache_returns_OK_response.freeze b/src/test/resources/cassettes/features/v2/Create_a_pipeline_with_dedupe_processor_with_cache_returns_OK_response.freeze new file mode 100644 index 00000000000..0d00ad61ad7 --- /dev/null +++ b/src/test/resources/cassettes/features/v2/Create_a_pipeline_with_dedupe_processor_with_cache_returns_OK_response.freeze @@ -0,0 +1 @@ +2026-02-09T09:53:31.840Z \ No newline at end of file diff --git a/src/test/resources/cassettes/features/v2/Create_a_pipeline_with_dedupe_processor_with_cache_returns_OK_response.json b/src/test/resources/cassettes/features/v2/Create_a_pipeline_with_dedupe_processor_with_cache_returns_OK_response.json new file mode 100644 index 00000000000..cc266eca86f --- /dev/null +++ b/src/test/resources/cassettes/features/v2/Create_a_pipeline_with_dedupe_processor_with_cache_returns_OK_response.json @@ -0,0 +1,57 @@ +[ + { + "httpRequest": { + "body": { + "type": "JSON", + "json": "{\"data\":{\"attributes\":{\"config\":{\"destinations\":[{\"id\":\"datadog-logs-destination\",\"inputs\":[\"my-processor-group\"],\"type\":\"datadog_logs\"}],\"processor_groups\":[{\"enabled\":true,\"id\":\"my-processor-group\",\"include\":\"service:my-service\",\"inputs\":[\"datadog-agent-source\"],\"processors\":[{\"cache\":{\"num_events\":5000},\"enabled\":true,\"fields\":[\"message\"],\"id\":\"dedupe-processor\",\"include\":\"service:my-service\",\"mode\":\"match\",\"type\":\"dedupe\"}]}],\"sources\":[{\"id\":\"datadog-agent-source\",\"type\":\"datadog_agent\"}]},\"name\":\"Pipeline with Dedupe Cache\"},\"type\":\"pipelines\"}}" + }, + "headers": {}, + "method": "POST", + "path": "/api/v2/obs-pipelines/pipelines", + "keepAlive": false, + "secure": true + }, + "httpResponse": { + "body": "{\"data\":{\"id\":\"31a750dc-059d-11f1-a2a8-da7ad0900002\",\"type\":\"pipelines\",\"attributes\":{\"name\":\"Pipeline with Dedupe Cache\",\"config\":{\"destinations\":[{\"id\":\"datadog-logs-destination\",\"inputs\":[\"my-processor-group\"],\"type\":\"datadog_logs\"}],\"processor_groups\":[{\"enabled\":true,\"id\":\"my-processor-group\",\"include\":\"service:my-service\",\"inputs\":[\"datadog-agent-source\"],\"processors\":[{\"cache\":{\"num_events\":5000},\"enabled\":true,\"fields\":[\"message\"],\"id\":\"dedupe-processor\",\"include\":\"service:my-service\",\"mode\":\"match\",\"type\":\"dedupe\"}]}],\"processors\":[{\"enabled\":true,\"id\":\"my-processor-group\",\"include\":\"service:my-service\",\"inputs\":[\"datadog-agent-source\"],\"processors\":[{\"cache\":{\"num_events\":5000},\"enabled\":true,\"fields\":[\"message\"],\"id\":\"dedupe-processor\",\"include\":\"service:my-service\",\"mode\":\"match\",\"type\":\"dedupe\"}]}],\"sources\":[{\"id\":\"datadog-agent-source\",\"type\":\"datadog_agent\"}]}}}}\n", + "headers": { + "Content-Type": [ + "application/vnd.api+json" + ] + }, + "statusCode": 201, + "reasonPhrase": "Created" + }, + "times": { + "remainingTimes": 1 + }, + "timeToLive": { + "unlimited": true + }, + "id": "5e54c4e6-8df0-50e5-e062-b51538d22d19" + }, + { + "httpRequest": { + "headers": {}, + "method": "DELETE", + "path": "/api/v2/obs-pipelines/pipelines/31a750dc-059d-11f1-a2a8-da7ad0900002", + "keepAlive": false, + "secure": true + }, + "httpResponse": { + "headers": { + "Content-Type": [ + "application/json" + ] + }, + "statusCode": 204, + "reasonPhrase": "No Content" + }, + "times": { + "remainingTimes": 1 + }, + "timeToLive": { + "unlimited": true + }, + "id": "5d43f025-2ced-2d84-1661-5eb0c54f44bb" + } +] \ No newline at end of file diff --git a/src/test/resources/cassettes/features/v2/Create_a_pipeline_with_dedupe_processor_without_cache_returns_OK_response.freeze b/src/test/resources/cassettes/features/v2/Create_a_pipeline_with_dedupe_processor_without_cache_returns_OK_response.freeze new file mode 100644 index 00000000000..9dbed52a0e7 --- /dev/null +++ b/src/test/resources/cassettes/features/v2/Create_a_pipeline_with_dedupe_processor_without_cache_returns_OK_response.freeze @@ -0,0 +1 @@ +2026-02-09T09:53:33.945Z \ No newline at end of file diff --git a/src/test/resources/cassettes/features/v2/Create_a_pipeline_with_dedupe_processor_without_cache_returns_OK_response.json b/src/test/resources/cassettes/features/v2/Create_a_pipeline_with_dedupe_processor_without_cache_returns_OK_response.json new file mode 100644 index 00000000000..8ba1da5a8c5 --- /dev/null +++ b/src/test/resources/cassettes/features/v2/Create_a_pipeline_with_dedupe_processor_without_cache_returns_OK_response.json @@ -0,0 +1,57 @@ +[ + { + "httpRequest": { + "body": { + "type": "JSON", + "json": "{\"data\":{\"attributes\":{\"config\":{\"destinations\":[{\"id\":\"datadog-logs-destination\",\"inputs\":[\"my-processor-group\"],\"type\":\"datadog_logs\"}],\"processor_groups\":[{\"enabled\":true,\"id\":\"my-processor-group\",\"include\":\"service:my-service\",\"inputs\":[\"datadog-agent-source\"],\"processors\":[{\"enabled\":true,\"fields\":[\"message\"],\"id\":\"dedupe-processor\",\"include\":\"service:my-service\",\"mode\":\"match\",\"type\":\"dedupe\"}]}],\"sources\":[{\"id\":\"datadog-agent-source\",\"type\":\"datadog_agent\"}]},\"name\":\"Pipeline with Dedupe No Cache\"},\"type\":\"pipelines\"}}" + }, + "headers": {}, + "method": "POST", + "path": "/api/v2/obs-pipelines/pipelines", + "keepAlive": false, + "secure": true + }, + "httpResponse": { + "body": "{\"data\":{\"id\":\"3280ccb8-059d-11f1-a2aa-da7ad0900002\",\"type\":\"pipelines\",\"attributes\":{\"name\":\"Pipeline with Dedupe No Cache\",\"config\":{\"destinations\":[{\"id\":\"datadog-logs-destination\",\"inputs\":[\"my-processor-group\"],\"type\":\"datadog_logs\"}],\"processor_groups\":[{\"enabled\":true,\"id\":\"my-processor-group\",\"include\":\"service:my-service\",\"inputs\":[\"datadog-agent-source\"],\"processors\":[{\"enabled\":true,\"fields\":[\"message\"],\"id\":\"dedupe-processor\",\"include\":\"service:my-service\",\"mode\":\"match\",\"type\":\"dedupe\"}]}],\"processors\":[{\"enabled\":true,\"id\":\"my-processor-group\",\"include\":\"service:my-service\",\"inputs\":[\"datadog-agent-source\"],\"processors\":[{\"enabled\":true,\"fields\":[\"message\"],\"id\":\"dedupe-processor\",\"include\":\"service:my-service\",\"mode\":\"match\",\"type\":\"dedupe\"}]}],\"sources\":[{\"id\":\"datadog-agent-source\",\"type\":\"datadog_agent\"}]}}}}\n", + "headers": { + "Content-Type": [ + "application/vnd.api+json" + ] + }, + "statusCode": 201, + "reasonPhrase": "Created" + }, + "times": { + "remainingTimes": 1 + }, + "timeToLive": { + "unlimited": true + }, + "id": "49b5783e-7585-4803-7f43-4f9c3b65f4ef" + }, + { + "httpRequest": { + "headers": {}, + "method": "DELETE", + "path": "/api/v2/obs-pipelines/pipelines/3280ccb8-059d-11f1-a2aa-da7ad0900002", + "keepAlive": false, + "secure": true + }, + "httpResponse": { + "headers": { + "Content-Type": [ + "application/json" + ] + }, + "statusCode": 204, + "reasonPhrase": "No Content" + }, + "times": { + "remainingTimes": 1 + }, + "timeToLive": { + "unlimited": true + }, + "id": "ecf742e6-6517-f10d-d4c8-57002c94f59a" + } +] \ No newline at end of file diff --git a/src/test/resources/com/datadog/api/client/v2/api/observability_pipelines.feature b/src/test/resources/com/datadog/api/client/v2/api/observability_pipelines.feature index 07e0c8ea028..725b9e425a7 100644 --- a/src/test/resources/com/datadog/api/client/v2/api/observability_pipelines.feature +++ b/src/test/resources/com/datadog/api/client/v2/api/observability_pipelines.feature @@ -35,6 +35,24 @@ Feature: Observability Pipelines And the response "data.attributes.config.processor_groups" has length 1 And the response "data.attributes.config.destinations" has length 1 + @team:DataDog/observability-pipelines + Scenario: Create a pipeline with dedupe processor with cache returns "OK" response + Given new "CreatePipeline" request + And body with value {"data": {"attributes": {"config": {"destinations": [{"id": "datadog-logs-destination", "inputs": ["my-processor-group"], "type": "datadog_logs"}], "processor_groups": [{"enabled": true, "id": "my-processor-group", "include": "service:my-service", "inputs": ["datadog-agent-source"], "processors": [{"enabled": true, "id": "dedupe-processor", "include": "service:my-service", "type": "dedupe", "fields": ["message"], "mode": "match", "cache": {"num_events": 5000}}]}], "sources": [{"id": "datadog-agent-source", "type": "datadog_agent"}]}, "name": "Pipeline with Dedupe Cache"}, "type": "pipelines"}} + When the request is sent + Then the response status is 201 OK + And the response "data.attributes.config.processor_groups[0].processors[0].type" is equal to "dedupe" + And the response "data.attributes.config.processor_groups[0].processors[0].cache.num_events" is equal to 5000 + + @team:DataDog/observability-pipelines + Scenario: Create a pipeline with dedupe processor without cache returns "OK" response + Given new "CreatePipeline" request + And body with value {"data": {"attributes": {"config": {"destinations": [{"id": "datadog-logs-destination", "inputs": ["my-processor-group"], "type": "datadog_logs"}], "processor_groups": [{"enabled": true, "id": "my-processor-group", "include": "service:my-service", "inputs": ["datadog-agent-source"], "processors": [{"enabled": true, "id": "dedupe-processor", "include": "service:my-service", "type": "dedupe", "fields": ["message"], "mode": "match"}]}], "sources": [{"id": "datadog-agent-source", "type": "datadog_agent"}]}, "name": "Pipeline with Dedupe No Cache"}, "type": "pipelines"}} + When the request is sent + Then the response status is 201 OK + And the response "data.attributes.config.processor_groups[0].processors[0].type" is equal to "dedupe" + And the response "data.attributes.config.processor_groups[0].processors[0].fields[0]" is equal to "message" + @generated @skip @team:DataDog/observability-pipelines Scenario: Delete a pipeline returns "Conflict" response Given new "DeletePipeline" request