Skip to content

Commit a03189f

Browse files
api-clients-generation-pipeline[bot]ci.datadog-api-spec
andauthored
Add Google PubSub destination to the Observability Pipelines API (#3144)
Co-authored-by: ci.datadog-api-spec <packages@datadoghq.com>
1 parent 465a9b4 commit a03189f

File tree

5 files changed

+644
-4
lines changed

5 files changed

+644
-4
lines changed

.generator/schemas/v2/openapi.yaml

Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30324,6 +30324,7 @@ components:
3032430324
- $ref: '#/components/schemas/ObservabilityPipelineSocketDestination'
3032530325
- $ref: '#/components/schemas/ObservabilityPipelineAmazonSecurityLakeDestination'
3032630326
- $ref: '#/components/schemas/ObservabilityPipelineCrowdStrikeNextGenSiemDestination'
30327+
- $ref: '#/components/schemas/ObservabilityPipelineGooglePubSubDestination'
3032730328
ObservabilityPipelineConfigProcessorItem:
3032830329
description: A processor for the pipeline.
3032930330
oneOf:
@@ -31385,6 +31386,65 @@ components:
3138531386
type: string
3138631387
x-enum-varnames:
3138731388
- GOOGLE_CLOUD_STORAGE
31389+
ObservabilityPipelineGooglePubSubDestination:
31390+
description: The `google_pubsub` destination publishes logs to a Google Cloud
31391+
Pub/Sub topic.
31392+
properties:
31393+
auth:
31394+
$ref: '#/components/schemas/ObservabilityPipelineGcpAuth'
31395+
encoding:
31396+
$ref: '#/components/schemas/ObservabilityPipelineGooglePubSubDestinationEncoding'
31397+
id:
31398+
description: The unique identifier for this component.
31399+
example: google-pubsub-destination
31400+
type: string
31401+
inputs:
31402+
description: A list of component IDs whose output is used as the `input`
31403+
for this component.
31404+
example:
31405+
- filter-processor
31406+
items:
31407+
type: string
31408+
type: array
31409+
project:
31410+
description: The GCP project ID that owns the Pub/Sub topic.
31411+
example: my-gcp-project
31412+
type: string
31413+
tls:
31414+
$ref: '#/components/schemas/ObservabilityPipelineTls'
31415+
topic:
31416+
description: The Pub/Sub topic name to publish logs to.
31417+
example: logs-subscription
31418+
type: string
31419+
type:
31420+
$ref: '#/components/schemas/ObservabilityPipelineGooglePubSubDestinationType'
31421+
required:
31422+
- id
31423+
- type
31424+
- inputs
31425+
- encoding
31426+
- project
31427+
- topic
31428+
type: object
31429+
ObservabilityPipelineGooglePubSubDestinationEncoding:
31430+
description: Encoding format for log events.
31431+
enum:
31432+
- json
31433+
- raw_message
31434+
example: json
31435+
type: string
31436+
x-enum-varnames:
31437+
- JSON
31438+
- RAW_MESSAGE
31439+
ObservabilityPipelineGooglePubSubDestinationType:
31440+
default: google_pubsub
31441+
description: The destination type. The value should always be `google_pubsub`.
31442+
enum:
31443+
- google_pubsub
31444+
example: google_pubsub
31445+
type: string
31446+
x-enum-varnames:
31447+
- GOOGLE_PUBSUB
3138831448
ObservabilityPipelineGooglePubSubSource:
3138931449
description: The `google_pubsub` source ingests logs from a Google Cloud Pub/Sub
3139031450
subscription.

src/main/java/com/datadog/api/client/v2/model/ObservabilityPipelineConfigDestinationItem.java

Lines changed: 88 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1015,6 +1015,58 @@ public ObservabilityPipelineConfigDestinationItem deserialize(
10151015
e);
10161016
}
10171017

1018+
// deserialize ObservabilityPipelineGooglePubSubDestination
1019+
try {
1020+
boolean attemptParsing = true;
1021+
// ensure that we respect type coercion as set on the client ObjectMapper
1022+
if (ObservabilityPipelineGooglePubSubDestination.class.equals(Integer.class)
1023+
|| ObservabilityPipelineGooglePubSubDestination.class.equals(Long.class)
1024+
|| ObservabilityPipelineGooglePubSubDestination.class.equals(Float.class)
1025+
|| ObservabilityPipelineGooglePubSubDestination.class.equals(Double.class)
1026+
|| ObservabilityPipelineGooglePubSubDestination.class.equals(Boolean.class)
1027+
|| ObservabilityPipelineGooglePubSubDestination.class.equals(String.class)) {
1028+
attemptParsing = typeCoercion;
1029+
if (!attemptParsing) {
1030+
attemptParsing |=
1031+
((ObservabilityPipelineGooglePubSubDestination.class.equals(Integer.class)
1032+
|| ObservabilityPipelineGooglePubSubDestination.class.equals(Long.class))
1033+
&& token == JsonToken.VALUE_NUMBER_INT);
1034+
attemptParsing |=
1035+
((ObservabilityPipelineGooglePubSubDestination.class.equals(Float.class)
1036+
|| ObservabilityPipelineGooglePubSubDestination.class.equals(Double.class))
1037+
&& (token == JsonToken.VALUE_NUMBER_FLOAT
1038+
|| token == JsonToken.VALUE_NUMBER_INT));
1039+
attemptParsing |=
1040+
(ObservabilityPipelineGooglePubSubDestination.class.equals(Boolean.class)
1041+
&& (token == JsonToken.VALUE_FALSE || token == JsonToken.VALUE_TRUE));
1042+
attemptParsing |=
1043+
(ObservabilityPipelineGooglePubSubDestination.class.equals(String.class)
1044+
&& token == JsonToken.VALUE_STRING);
1045+
}
1046+
}
1047+
if (attemptParsing) {
1048+
tmp =
1049+
tree.traverse(jp.getCodec())
1050+
.readValueAs(ObservabilityPipelineGooglePubSubDestination.class);
1051+
// TODO: there is no validation against JSON schema constraints
1052+
// (min, max, enum, pattern...), this does not perform a strict JSON
1053+
// validation, which means the 'match' count may be higher than it should be.
1054+
if (!((ObservabilityPipelineGooglePubSubDestination) tmp).unparsed) {
1055+
deserialized = tmp;
1056+
match++;
1057+
}
1058+
log.log(
1059+
Level.FINER,
1060+
"Input data matches schema 'ObservabilityPipelineGooglePubSubDestination'");
1061+
}
1062+
} catch (Exception e) {
1063+
// deserialization failed, continue
1064+
log.log(
1065+
Level.FINER,
1066+
"Input data does not match schema 'ObservabilityPipelineGooglePubSubDestination'",
1067+
e);
1068+
}
1069+
10181070
ObservabilityPipelineConfigDestinationItem ret =
10191071
new ObservabilityPipelineConfigDestinationItem();
10201072
if (match == 1) {
@@ -1142,6 +1194,12 @@ public ObservabilityPipelineConfigDestinationItem(
11421194
setActualInstance(o);
11431195
}
11441196

1197+
public ObservabilityPipelineConfigDestinationItem(
1198+
ObservabilityPipelineGooglePubSubDestination o) {
1199+
super("oneOf", Boolean.FALSE);
1200+
setActualInstance(o);
1201+
}
1202+
11451203
static {
11461204
schemas.put(
11471205
"ObservabilityPipelineDatadogLogsDestination",
@@ -1193,6 +1251,9 @@ public ObservabilityPipelineConfigDestinationItem(
11931251
schemas.put(
11941252
"ObservabilityPipelineCrowdStrikeNextGenSiemDestination",
11951253
new GenericType<ObservabilityPipelineCrowdStrikeNextGenSiemDestination>() {});
1254+
schemas.put(
1255+
"ObservabilityPipelineGooglePubSubDestination",
1256+
new GenericType<ObservabilityPipelineGooglePubSubDestination>() {});
11961257
JSON.registerDescendants(
11971258
ObservabilityPipelineConfigDestinationItem.class, Collections.unmodifiableMap(schemas));
11981259
}
@@ -1213,7 +1274,8 @@ public Map<String, GenericType> getSchemas() {
12131274
* ObservabilityPipelineNewRelicDestination, ObservabilityPipelineSentinelOneDestination,
12141275
* ObservabilityPipelineOpenSearchDestination, ObservabilityPipelineAmazonOpenSearchDestination,
12151276
* ObservabilityPipelineSocketDestination, ObservabilityPipelineAmazonSecurityLakeDestination,
1216-
* ObservabilityPipelineCrowdStrikeNextGenSiemDestination
1277+
* ObservabilityPipelineCrowdStrikeNextGenSiemDestination,
1278+
* ObservabilityPipelineGooglePubSubDestination
12171279
*
12181280
* <p>It could be an instance of the 'oneOf' schemas. The oneOf child schemas may themselves be a
12191281
* composed schema (allOf, anyOf, oneOf).
@@ -1316,6 +1378,11 @@ public void setActualInstance(Object instance) {
13161378
super.setActualInstance(instance);
13171379
return;
13181380
}
1381+
if (JSON.isInstanceOf(
1382+
ObservabilityPipelineGooglePubSubDestination.class, instance, new HashSet<Class<?>>())) {
1383+
super.setActualInstance(instance);
1384+
return;
1385+
}
13191386

13201387
if (JSON.isInstanceOf(UnparsedObject.class, instance, new HashSet<Class<?>>())) {
13211388
super.setActualInstance(instance);
@@ -1337,7 +1404,8 @@ public void setActualInstance(Object instance) {
13371404
+ " ObservabilityPipelineAmazonOpenSearchDestination,"
13381405
+ " ObservabilityPipelineSocketDestination,"
13391406
+ " ObservabilityPipelineAmazonSecurityLakeDestination,"
1340-
+ " ObservabilityPipelineCrowdStrikeNextGenSiemDestination");
1407+
+ " ObservabilityPipelineCrowdStrikeNextGenSiemDestination,"
1408+
+ " ObservabilityPipelineGooglePubSubDestination");
13411409
}
13421410

13431411
/**
@@ -1351,7 +1419,8 @@ public void setActualInstance(Object instance) {
13511419
* ObservabilityPipelineSentinelOneDestination, ObservabilityPipelineOpenSearchDestination,
13521420
* ObservabilityPipelineAmazonOpenSearchDestination, ObservabilityPipelineSocketDestination,
13531421
* ObservabilityPipelineAmazonSecurityLakeDestination,
1354-
* ObservabilityPipelineCrowdStrikeNextGenSiemDestination
1422+
* ObservabilityPipelineCrowdStrikeNextGenSiemDestination,
1423+
* ObservabilityPipelineGooglePubSubDestination
13551424
*
13561425
* @return The actual instance (ObservabilityPipelineDatadogLogsDestination,
13571426
* ObservabilityPipelineAmazonS3Destination,
@@ -1364,7 +1433,8 @@ public void setActualInstance(Object instance) {
13641433
* ObservabilityPipelineOpenSearchDestination,
13651434
* ObservabilityPipelineAmazonOpenSearchDestination, ObservabilityPipelineSocketDestination,
13661435
* ObservabilityPipelineAmazonSecurityLakeDestination,
1367-
* ObservabilityPipelineCrowdStrikeNextGenSiemDestination)
1436+
* ObservabilityPipelineCrowdStrikeNextGenSiemDestination,
1437+
* ObservabilityPipelineGooglePubSubDestination)
13681438
*/
13691439
@Override
13701440
public Object getActualInstance() {
@@ -1598,4 +1668,18 @@ public ObservabilityPipelineSocketDestination getObservabilityPipelineSocketDest
15981668
getObservabilityPipelineCrowdStrikeNextGenSiemDestination() throws ClassCastException {
15991669
return (ObservabilityPipelineCrowdStrikeNextGenSiemDestination) super.getActualInstance();
16001670
}
1671+
1672+
/**
1673+
* Get the actual instance of `ObservabilityPipelineGooglePubSubDestination`. If the actual
1674+
* instance is not `ObservabilityPipelineGooglePubSubDestination`, the ClassCastException will be
1675+
* thrown.
1676+
*
1677+
* @return The actual instance of `ObservabilityPipelineGooglePubSubDestination`
1678+
* @throws ClassCastException if the instance is not
1679+
* `ObservabilityPipelineGooglePubSubDestination`
1680+
*/
1681+
public ObservabilityPipelineGooglePubSubDestination
1682+
getObservabilityPipelineGooglePubSubDestination() throws ClassCastException {
1683+
return (ObservabilityPipelineGooglePubSubDestination) super.getActualInstance();
1684+
}
16011685
}

0 commit comments

Comments
 (0)