Skip to content

Commit

Permalink
Add support for span id remapper in logs pipelines processors (#2256)
Browse files Browse the repository at this point in the history
Co-authored-by: ci.datadog-api-spec <[email protected]>
  • Loading branch information
api-clients-generation-pipeline[bot] and ci.datadog-api-spec authored Feb 21, 2025
1 parent 88f0bf4 commit 420b51a
Show file tree
Hide file tree
Showing 10 changed files with 310 additions and 6 deletions.
8 changes: 4 additions & 4 deletions .apigentools-info
Original file line number Diff line number Diff line change
Expand Up @@ -4,13 +4,13 @@
"spec_versions": {
"v1": {
"apigentools_version": "1.6.6",
"regenerated": "2025-02-21 08:00:33.138734",
"spec_repo_commit": "8f2d39c3"
"regenerated": "2025-02-21 18:16:33.413992",
"spec_repo_commit": "5de91bd6"
},
"v2": {
"apigentools_version": "1.6.6",
"regenerated": "2025-02-21 08:00:33.154333",
"spec_repo_commit": "8f2d39c3"
"regenerated": "2025-02-21 18:16:33.429413",
"spec_repo_commit": "5de91bd6"
}
}
}
40 changes: 39 additions & 1 deletion .generator/schemas/v1/openapi.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -6049,6 +6049,7 @@ components:
- $ref: '#/components/schemas/LogsLookupProcessor'
- $ref: '#/components/schemas/ReferenceTableLogsLookupProcessor'
- $ref: '#/components/schemas/LogsTraceRemapper'
- $ref: '#/components/schemas/LogsSpanRemapper'
LogsQueryCompute:
description: Define computation for a log query.
properties:
Expand Down Expand Up @@ -6160,6 +6161,43 @@ components:
x-enum-varnames:
- TIME_ASCENDING
- TIME_DESCENDING
LogsSpanRemapper:
description: "There are two ways to define correlation between application spans
and logs:\n\n 1. Follow the documentation on [how to inject a span ID in
the application logs](https://docs.datadoghq.com/tracing/connect_logs_and_traces).\n
\ Log integrations automatically handle all remaining setup steps by default.\n\n
\ 2. Use the span remapper processor to define a log attribute as its associated
span ID."
properties:
is_enabled:
default: false
description: Whether or not the processor is enabled.
type: boolean
name:
description: Name of the processor.
type: string
sources:
default:
- dd.span_id
description: Array of source attributes.
items:
description: Attribute to extract the span ID from.
type: string
type: array
type:
$ref: '#/components/schemas/LogsSpanRemapperType'
required:
- type
type: object
LogsSpanRemapperType:
default: span-id-remapper
description: Type of logs span remapper.
enum:
- span-id-remapper
example: span-id-remapper
type: string
x-enum-varnames:
- SPAN_ID_REMAPPER
LogsStatusRemapper:
description: "Use this Processor if you want to assign some attributes as the
official status.\n\nEach incoming status value is mapped as follows.\n\n -
Expand Down Expand Up @@ -6275,7 +6313,7 @@ components:
- dd.trace_id
description: Array of source attributes.
items:
description: Attribute to extract the Trace ID from.
description: Attribute to extract the trace ID from.
type: string
type: array
type:
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
2025-02-20T15:44:02.905Z

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

23 changes: 23 additions & 0 deletions examples/v1/logs-pipelines/CreateLogsPipeline_2707101123.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
# Create a pipeline with Span Id Remapper returns "OK" response

require "datadog_api_client"
api_instance = DatadogAPIClient::V1::LogsPipelinesAPI.new

body = DatadogAPIClient::V1::LogsPipeline.new({
filter: DatadogAPIClient::V1::LogsFilter.new({
query: "source:python",
}),
name: "testPipeline",
processors: [
DatadogAPIClient::V1::LogsSpanRemapper.new({
type: DatadogAPIClient::V1::LogsSpanRemapperType::SPAN_ID_REMAPPER,
is_enabled: true,
name: "test_filter",
sources: [
"dd.span_id",
],
}),
],
tags: [],
})
p api_instance.create_logs_pipeline(body)
7 changes: 7 additions & 0 deletions features/v1/logs_pipelines.feature
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,13 @@ Feature: Logs Pipelines
When the request is sent
Then the response status is 200 OK

@team:DataDog/event-platform-experience
Scenario: Create a pipeline with Span Id Remapper returns "OK" response
Given new "CreateLogsPipeline" request
And body with value {"filter": {"query": "source:python"}, "name": "testPipeline", "processors": [{"type": "span-id-remapper", "is_enabled" : true, "name" : "test_filter", "sources" : [ "dd.span_id"] }], "tags": []}
When the request is sent
Then the response status is 200 OK

@generated @skip @team:DataDog/event-platform-experience
Scenario: Delete a pipeline returns "Bad Request" response
Given new "DeleteLogsPipeline" request
Expand Down
2 changes: 2 additions & 0 deletions lib/datadog_api_client/inflector.rb
Original file line number Diff line number Diff line change
Expand Up @@ -269,6 +269,8 @@ def overrides
"v1.logs_service_remapper" => "LogsServiceRemapper",
"v1.logs_service_remapper_type" => "LogsServiceRemapperType",
"v1.logs_sort" => "LogsSort",
"v1.logs_span_remapper" => "LogsSpanRemapper",
"v1.logs_span_remapper_type" => "LogsSpanRemapperType",
"v1.logs_status_remapper" => "LogsStatusRemapper",
"v1.logs_status_remapper_type" => "LogsStatusRemapperType",
"v1.logs_string_builder_processor" => "LogsStringBuilderProcessor",
Expand Down
3 changes: 2 additions & 1 deletion lib/datadog_api_client/v1/models/logs_processor.rb
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,8 @@ def openapi_one_of
:'LogsGeoIPParser',
:'LogsLookupProcessor',
:'ReferenceTableLogsLookupProcessor',
:'LogsTraceRemapper'
:'LogsTraceRemapper',
:'LogsSpanRemapper'
]
end
# Builds the object
Expand Down
160 changes: 160 additions & 0 deletions lib/datadog_api_client/v1/models/logs_span_remapper.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,160 @@
=begin
#Datadog API V1 Collection
#Collection of all Datadog Public endpoints.
The version of the OpenAPI document: 1.0
Contact: [email protected]
Generated by: https://github.com/DataDog/datadog-api-client-ruby/tree/master/.generator
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 2020-Present Datadog, Inc.
=end

require 'date'
require 'time'

module DatadogAPIClient::V1
# There are two ways to define correlation between application spans and logs:
#
# 1. Follow the documentation on [how to inject a span ID in the application logs](https://docs.datadoghq.com/tracing/connect_logs_and_traces).
# Log integrations automatically handle all remaining setup steps by default.
#
# 2. Use the span remapper processor to define a log attribute as its associated span ID.
class LogsSpanRemapper
include BaseGenericModel

# Whether or not the processor is enabled.
attr_accessor :is_enabled

# Name of the processor.
attr_accessor :name

# Array of source attributes.
attr_accessor :sources

# Type of logs span remapper.
attr_reader :type

attr_accessor :additional_properties

# Attribute mapping from ruby-style variable name to JSON key.
# @!visibility private
def self.attribute_map
{
:'is_enabled' => :'is_enabled',
:'name' => :'name',
:'sources' => :'sources',
:'type' => :'type'
}
end

# Attribute type mapping.
# @!visibility private
def self.openapi_types
{
:'is_enabled' => :'Boolean',
:'name' => :'String',
:'sources' => :'Array<String>',
:'type' => :'LogsSpanRemapperType'
}
end

# Initializes the object
# @param attributes [Hash] Model attributes in the form of hash
# @!visibility private
def initialize(attributes = {})
if (!attributes.is_a?(Hash))
fail ArgumentError, "The input argument (attributes) must be a hash in `DatadogAPIClient::V1::LogsSpanRemapper` initialize method"
end

self.additional_properties = {}
# check to see if the attribute exists and convert string to symbol for hash key
attributes = attributes.each_with_object({}) { |(k, v), h|
if (!self.class.attribute_map.key?(k.to_sym))
self.additional_properties[k.to_sym] = v
else
h[k.to_sym] = v
end
}

if attributes.key?(:'is_enabled')
self.is_enabled = attributes[:'is_enabled']
end

if attributes.key?(:'name')
self.name = attributes[:'name']
end

if attributes.key?(:'sources')
if (value = attributes[:'sources']).is_a?(Array)
self.sources = value
end
end

if attributes.key?(:'type')
self.type = attributes[:'type']
end
end

# Check to see if the all the properties in the model are valid
# @return true if the model is valid
# @!visibility private
def valid?
return false if @type.nil?
true
end

# Custom attribute writer method with validation
# @param type [Object] Object to be assigned
# @!visibility private
def type=(type)
if type.nil?
fail ArgumentError, 'invalid value for "type", type cannot be nil.'
end
@type = type
end

# Returns the object in the form of hash, with additionalProperties support.
# @return [Hash] Returns the object in the form of hash
# @!visibility private
def to_hash
hash = {}
self.class.attribute_map.each_pair do |attr, param|
value = self.send(attr)
if value.nil?
is_nullable = self.class.openapi_nullable.include?(attr)
next if !is_nullable || (is_nullable && !instance_variable_defined?(:"@#{attr}"))
end

hash[param] = _to_hash(value)
end
self.additional_properties.each_pair do |attr, value|
hash[attr] = value
end
hash
end

# Checks equality by comparing each attribute.
# @param o [Object] Object to be compared
# @!visibility private
def ==(o)
return true if self.equal?(o)
self.class == o.class &&
is_enabled == o.is_enabled &&
name == o.name &&
sources == o.sources &&
type == o.type &&
additional_properties == o.additional_properties
end

# Calculates hash code according to all attributes.
# @return [Integer] Hash code
# @!visibility private
def hash
[is_enabled, name, sources, type, additional_properties].hash
end
end
end
26 changes: 26 additions & 0 deletions lib/datadog_api_client/v1/models/logs_span_remapper_type.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
=begin
#Datadog API V1 Collection
#Collection of all Datadog Public endpoints.
The version of the OpenAPI document: 1.0
Contact: [email protected]
Generated by: https://github.com/DataDog/datadog-api-client-ruby/tree/master/.generator
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 2020-Present Datadog, Inc.
=end

require 'date'
require 'time'

module DatadogAPIClient::V1
# Type of logs span remapper.
class LogsSpanRemapperType
include BaseEnumModel

SPAN_ID_REMAPPER = "span-id-remapper".freeze
end
end

0 comments on commit 420b51a

Please sign in to comment.