Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions .generator/schemas/v2/openapi.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -72734,6 +72734,11 @@ components:
items:
$ref: "#/components/schemas/ObservabilityPipelineConfigDestinationItem"
type: array
end_to_end_acknowledgements:
description: |-
Enables end-to-end event delivery confirmation. Without a disk buffer, sources acknowledge events after delivery to all final destinations; when a disk buffer provides the acknowledgment boundary, they acknowledge after durable persistence.
Defaults to `false` when omitted. Requires Observability Pipelines Worker 2.14 or later. All configured sources must support this behavior.
type: boolean
pipeline_type:
$ref: "#/components/schemas/ObservabilityPipelineConfigPipelineType"
processor_groups:
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,89 @@
// Create a pipeline with end-to-end acknowledgements enabled 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.ObservabilityPipelineFilterProcessor;
import com.datadog.api.client.v2.model.ObservabilityPipelineFilterProcessorType;
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))))
.endToEndAcknowledgements(true)
.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 ObservabilityPipelineFilterProcessor()
.enabled(true)
.id("filter-processor")
.include("status:error")
.type(
ObservabilityPipelineFilterProcessorType
.FILTER))))))
.sources(
Collections.singletonList(
new ObservabilityPipelineConfigSourceItem(
new ObservabilityPipelineDatadogAgentSource()
.id("datadog-agent-source")
.type(
ObservabilityPipelineDatadogAgentSourceType
.DATADOG_AGENT)))))
.name("Pipeline with End-to-End Acknowledgements"))
.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();
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,89 @@
// Create a pipeline with end-to-end acknowledgements disabled 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.ObservabilityPipelineFilterProcessor;
import com.datadog.api.client.v2.model.ObservabilityPipelineFilterProcessorType;
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))))
.endToEndAcknowledgements(false)
.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 ObservabilityPipelineFilterProcessor()
.enabled(true)
.id("filter-processor")
.include("status:error")
.type(
ObservabilityPipelineFilterProcessorType
.FILTER))))))
.sources(
Collections.singletonList(
new ObservabilityPipelineConfigSourceItem(
new ObservabilityPipelineDatadogAgentSource()
.id("datadog-agent-source")
.type(
ObservabilityPipelineDatadogAgentSourceType
.DATADOG_AGENT)))))
.name("Pipeline with End-to-End Acknowledgements Disabled"))
.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();
}
}
}
29 changes: 29 additions & 0 deletions examples/v2/observability-pipelines/GetPipeline_28187501.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
// Get a pipeline preserves end-to-end acknowledgements 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;

public class Example {
public static void main(String[] args) {
ApiClient defaultClient = ApiClient.getDefaultApiClient();
ObservabilityPipelinesApi apiInstance = new ObservabilityPipelinesApi(defaultClient);

// there is a valid "pipeline with end-to-end acknowledgements" in the system
String PIPELINE_WITH_END_TO_END_ACKNOWLEDGEMENTS_DATA_ID =
System.getenv("PIPELINE_WITH_END_TO_END_ACKNOWLEDGEMENTS_DATA_ID");

try {
ObservabilityPipeline result =
apiInstance.getPipeline(PIPELINE_WITH_END_TO_END_ACKNOWLEDGEMENTS_DATA_ID);
System.out.println(result);
} catch (ApiException e) {
System.err.println("Exception when calling ObservabilityPipelinesApi#getPipeline");
System.err.println("Status code: " + e.getCode());
System.err.println("Reason: " + e.getResponseBody());
System.err.println("Response headers: " + e.getResponseHeaders());
e.printStackTrace();
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@
/** Specifies the pipeline's configuration, including its sources, processors, and destinations. */
@JsonPropertyOrder({
ObservabilityPipelineConfig.JSON_PROPERTY_DESTINATIONS,
ObservabilityPipelineConfig.JSON_PROPERTY_END_TO_END_ACKNOWLEDGEMENTS,
ObservabilityPipelineConfig.JSON_PROPERTY_PIPELINE_TYPE,
ObservabilityPipelineConfig.JSON_PROPERTY_PROCESSOR_GROUPS,
ObservabilityPipelineConfig.JSON_PROPERTY_PROCESSORS,
Expand All @@ -35,6 +36,10 @@ public class ObservabilityPipelineConfig {
public static final String JSON_PROPERTY_DESTINATIONS = "destinations";
private List<ObservabilityPipelineConfigDestinationItem> destinations = new ArrayList<>();

public static final String JSON_PROPERTY_END_TO_END_ACKNOWLEDGEMENTS =
"end_to_end_acknowledgements";
private Boolean endToEndAcknowledgements;

public static final String JSON_PROPERTY_PIPELINE_TYPE = "pipeline_type";
private ObservabilityPipelineConfigPipelineType pipelineType =
ObservabilityPipelineConfigPipelineType.LOGS;
Expand Down Expand Up @@ -105,6 +110,31 @@ public void setDestinations(List<ObservabilityPipelineConfigDestinationItem> des
}
}

public ObservabilityPipelineConfig endToEndAcknowledgements(Boolean endToEndAcknowledgements) {
this.endToEndAcknowledgements = endToEndAcknowledgements;
return this;
}

/**
* Enables end-to-end event delivery confirmation. Without a disk buffer, sources acknowledge
* events after delivery to all final destinations; when a disk buffer provides the acknowledgment
* boundary, they acknowledge after durable persistence. Defaults to <code>false</code> when
* omitted. Requires Observability Pipelines Worker 2.14 or later. All configured sources must
* support this behavior.
*
* @return endToEndAcknowledgements
*/
@jakarta.annotation.Nullable
@JsonProperty(JSON_PROPERTY_END_TO_END_ACKNOWLEDGEMENTS)
@JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
public Boolean getEndToEndAcknowledgements() {
return endToEndAcknowledgements;
}

public void setEndToEndAcknowledgements(Boolean endToEndAcknowledgements) {
this.endToEndAcknowledgements = endToEndAcknowledgements;
}

public ObservabilityPipelineConfig pipelineType(
ObservabilityPipelineConfigPipelineType pipelineType) {
this.pipelineType = pipelineType;
Expand Down Expand Up @@ -340,6 +370,8 @@ public boolean equals(Object o) {
}
ObservabilityPipelineConfig observabilityPipelineConfig = (ObservabilityPipelineConfig) o;
return Objects.equals(this.destinations, observabilityPipelineConfig.destinations)
&& Objects.equals(
this.endToEndAcknowledgements, observabilityPipelineConfig.endToEndAcknowledgements)
&& Objects.equals(this.pipelineType, observabilityPipelineConfig.pipelineType)
&& Objects.equals(this.processorGroups, observabilityPipelineConfig.processorGroups)
&& Objects.equals(this.processors, observabilityPipelineConfig.processors)
Expand All @@ -354,6 +386,7 @@ public boolean equals(Object o) {
public int hashCode() {
return Objects.hash(
destinations,
endToEndAcknowledgements,
pipelineType,
processorGroups,
processors,
Expand All @@ -367,6 +400,9 @@ public String toString() {
StringBuilder sb = new StringBuilder();
sb.append("class ObservabilityPipelineConfig {\n");
sb.append(" destinations: ").append(toIndentedString(destinations)).append("\n");
sb.append(" endToEndAcknowledgements: ")
.append(toIndentedString(endToEndAcknowledgements))
.append("\n");
sb.append(" pipelineType: ").append(toIndentedString(pipelineType)).append("\n");
sb.append(" processorGroups: ").append(toIndentedString(processorGroups)).append("\n");
sb.append(" processors: ").append(toIndentedString(processors)).append("\n");
Expand Down
12 changes: 12 additions & 0 deletions src/test/resources/com/datadog/api/client/v2/api/given.json
Original file line number Diff line number Diff line change
Expand Up @@ -1086,6 +1086,18 @@
"tag": "Observability Pipelines",
"operationId": "CreatePipeline"
},
{
"parameters": [
{
"name": "body",
"value": "{\"data\":{\"attributes\":{\"config\":{\"end_to_end_acknowledgements\":true,\"destinations\":[{\"id\":\"datadog-logs-destination\",\"inputs\":[\"processor-group-0\"],\"type\":\"datadog_logs\"}],\"processor_groups\":[{\"id\":\"processor-group-0\",\"include\":\"service:my-service\",\"inputs\":[\"datadog-agent-source\"],\"enabled\":true,\"processors\":[{\"id\":\"filter-processor\",\"type\":\"filter\",\"include\":\"status:error\",\"enabled\":true}]}],\"sources\":[{\"id\":\"datadog-agent-source\",\"type\":\"datadog_agent\"}]},\"name\":\"End-to-End Acknowledgements Pipeline\"},\"type\":\"pipelines\"}}"
}
],
"step": "there is a valid \"pipeline with end-to-end acknowledgements\" in the system",
"key": "pipeline_with_end_to_end_acknowledgements",
"tag": "Observability Pipelines",
"operationId": "CreatePipeline"
},
{
"parameters": [
{
Expand Down
Loading
Loading