-
Notifications
You must be signed in to change notification settings - Fork 376
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge branch 'master' into robertomonteromiguel/k8s_new_scenarios
- Loading branch information
Showing
705 changed files
with
4,367 additions
and
3,313 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file was deleted.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,71 @@ | ||
name: "Bug Report (Low Priority)" | ||
description: "Create a public Bug Report. Note that these may not be addressed as quickly as the helpdesk and that looking up account information will be difficult." | ||
title: "[BUG]: " | ||
labels: community, bug | ||
body: | ||
- type: input | ||
attributes: | ||
label: Tracer Version(s) | ||
description: "Version(s) of the tracer affected by this bug" | ||
placeholder: "1.23.4, 2.8.0" | ||
validations: | ||
required: true | ||
|
||
- type: input | ||
attributes: | ||
label: Ruby Version(s) | ||
description: "Version(s) of Ruby (`ruby --version`) that you've encountered this bug with" | ||
placeholder: "ruby 2.7.5p203 (2021-11-24 revision f69aeb8314) [arm64-darwin21]" | ||
validations: | ||
required: true | ||
|
||
- type: input | ||
attributes: | ||
label: Relevent Library and Version(s) | ||
description: "The name of a library and version(s) that you've encountered this bug with" | ||
placeholder: "mysql 2.9.1" | ||
validations: | ||
required: false | ||
|
||
- type: textarea | ||
attributes: | ||
label: Bug Report | ||
description: Please add a clear and concise description of the bug here | ||
validations: | ||
required: true | ||
|
||
- type: textarea | ||
attributes: | ||
label: Reproduction Code | ||
description: Please add code here to help us reproduce the problem | ||
validations: | ||
required: false | ||
|
||
- type: textarea | ||
attributes: | ||
label: Configuration Block | ||
description: How is your tracer configured, e.g. `Datadog.configure ...` | ||
validations: | ||
required: false | ||
|
||
- type: textarea | ||
attributes: | ||
label: Error Logs | ||
description: "Please provide any error logs from the tracer (`DD_TRACE_DEBUG=true` can help)" | ||
validations: | ||
required: false | ||
|
||
- type: input | ||
attributes: | ||
label: Operating System | ||
description: "Provide your operating system and version (e.g. `uname -a`)" | ||
placeholder: Darwin Kernel Version 23.6.0 | ||
validations: | ||
required: false | ||
|
||
- type: textarea | ||
attributes: | ||
label: How does Datadog help you? | ||
description: "Optionally, tell us why and how you're using datadog, and what your overall experience with it is!" | ||
validations: | ||
required: false |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,5 +1,8 @@ | ||
blank_issues_enabled: true | ||
blank_issues_enabled: false | ||
contact_links: | ||
- name: ℹ️ Datadog Support | ||
url: https://www.datadoghq.com/support/ | ||
about: Get help from the Datadog support team | ||
- name: Bug Report (High Priority) | ||
url: https://help.datadoghq.com/hc/en-us/requests/new?tf_1260824651490=pt_product_type:apm&tf_1900004146284=pt_apm_language:ruby | ||
about: Create an expedited Bug Report via the helpdesk (no login required). This will allow us to look up your account and allows you to provide additional information in private. | ||
- name: Feature Request (High Priority) | ||
url: https://help.datadoghq.com/hc/en-us/requests/new?tf_1260824651490=pt_product_type:apm&tf_1900004146284=pt_apm_language:ruby&tf_1260825272270=pt_apm_category_feature_request | ||
about: Create an expedited Feature Request via the helpdesk (no login required). This helps with prioritization and allows you to provide additional information in private. |
This file was deleted.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,50 @@ | ||
name: Feature Request (Low Priority) | ||
description: Create a public Feature Request. Note that these may not be addressed as quickly as the helpdesk and that looking up account information will be difficult. | ||
title: "[FEATURE]: " | ||
labels: community, feature-request | ||
body: | ||
- type: input | ||
attributes: | ||
label: Gem Name | ||
description: "If your feature request is to add instrumentation support for a Ruby gem please provide the gem name here" | ||
placeholder: mysql | ||
validations: | ||
required: false | ||
|
||
- type: input | ||
attributes: | ||
label: Gem Version(s) | ||
description: "Please provide the version of the above gem here" | ||
placeholder: 2.9.1 | ||
validations: | ||
required: false | ||
|
||
- type: textarea | ||
attributes: | ||
label: Describe the goal of the feature | ||
description: A clear and concise goal of what you want to happen. | ||
validations: | ||
required: true | ||
|
||
- type: textarea | ||
attributes: | ||
label: Is your feature request related to a problem? | ||
description: | | ||
Please add a clear and concise description of your problem. | ||
E.g. I'm unable to instrument my database queries... | ||
validations: | ||
required: false | ||
|
||
- type: textarea | ||
attributes: | ||
label: Describe alternatives you've considered | ||
description: A clear and concise description of any alternative solutions or features you've considered | ||
validations: | ||
required: false | ||
|
||
- type: textarea | ||
attributes: | ||
label: Additional context | ||
description: Add any other context or screenshots about the feature request here | ||
validations: | ||
required: false |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,149 @@ | ||
require 'pathname' | ||
require 'rubygems' | ||
require 'json' | ||
require 'bundler' | ||
|
||
lib = File.expand_path('lib', __dir__) | ||
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib) | ||
require 'datadog' | ||
|
||
class GemfileProcessor | ||
SPECIAL_CASES = { | ||
"opensearch" => "OpenSearch" # special case because opensearch = OpenSearch not Opensearch | ||
}.freeze | ||
EXCLUDED_INTEGRATIONS = ["configuration", "propagation", "utils"].freeze | ||
|
||
def initialize(directory: 'gemfiles/', contrib_dir: 'lib/datadog/tracing/contrib/') | ||
@directory = directory | ||
@contrib_dir = contrib_dir | ||
@min_gems = { 'ruby' => {}, 'jruby' => {} } | ||
@max_gems = { 'ruby' => {}, 'jruby' => {} } | ||
@integration_json_mapping = {} | ||
end | ||
|
||
def process | ||
parse_gemfiles | ||
process_integrations | ||
include_hardcoded_versions | ||
write_output | ||
end | ||
|
||
private | ||
|
||
|
||
def parse_gemfiles(directory = 'gemfiles/') | ||
gemfiles = Dir.glob(File.join(@directory, '*')) | ||
gemfiles.each do |gemfile_name| | ||
runtime = File.basename(gemfile_name).split('_').first # ruby or jruby | ||
next unless %w[ruby jruby].include?(runtime) | ||
# parse the gemfile | ||
if gemfile_name.end_with?(".gemfile") | ||
process_gemfile(gemfile_name, runtime) | ||
elsif gemfile_name.end_with?('.gemfile.lock') | ||
process_lockfile(gemfile_name, runtime) | ||
end | ||
end | ||
|
||
end | ||
|
||
def process_gemfile(gemfile_name, runtime) | ||
begin | ||
definition = Bundler::Definition.build(gemfile_name, nil, nil) | ||
definition.dependencies.each do |dependency| | ||
gem_name = dependency.name | ||
version = dependency.requirement.to_s | ||
update_gem_versions(runtime, gem_name, version) | ||
end | ||
rescue Bundler::GemfileError => e | ||
puts "Error reading Gemfile: #{e.message}" | ||
end | ||
end | ||
|
||
def process_lockfile(gemfile_name, runtime) | ||
lockfile_contents = File.read(gemfile_name) | ||
parser = Bundler::LockfileParser.new(lockfile_contents) | ||
parser.specs.each do |spec| | ||
gem_name = spec.name | ||
version = spec.version.to_s | ||
update_gem_versions(runtime, gem_name, version) | ||
end | ||
end | ||
|
||
def update_gem_versions(runtime, gem_name, version) | ||
return unless version_valid?(version) | ||
|
||
gem_version = Gem::Version.new(version) | ||
|
||
# Update minimum gems | ||
if @min_gems[runtime][gem_name].nil? || gem_version < Gem::Version.new(@min_gems[runtime][gem_name]) | ||
@min_gems[runtime][gem_name] = version | ||
end | ||
|
||
# Update maximum gems | ||
if @max_gems[runtime][gem_name].nil? || gem_version > Gem::Version.new(@max_gems[runtime][gem_name]) | ||
@max_gems[runtime][gem_name] = version | ||
end | ||
end | ||
|
||
# Helper: Validate the version format | ||
def version_valid?(version) | ||
return false if version.nil? || version.strip.empty? | ||
|
||
Gem::Version.new(version) | ||
true | ||
rescue ArgumentError | ||
false | ||
end | ||
|
||
|
||
def process_integrations | ||
integrations = Datadog::Tracing::Contrib::REGISTRY.map(&:name).map(&:to_s) | ||
integrations.each do |integration| | ||
next if EXCLUDED_INTEGRATIONS.include?(integration) | ||
|
||
integration_name = resolve_integration_name(integration) | ||
|
||
@integration_json_mapping[integration] = [ | ||
@min_gems['ruby'][integration_name], | ||
@max_gems['ruby'][integration_name], | ||
@min_gems['jruby'][integration_name], | ||
@max_gems['jruby'][integration_name] | ||
] | ||
end | ||
end | ||
|
||
def include_hardcoded_versions | ||
# `httpx` is maintained externally | ||
@integration_json_mapping['httpx'] = [ | ||
'0.11', # Min version Ruby | ||
'0.11', # Max version Ruby | ||
nil, # Min version JRuby | ||
nil # Max version JRuby | ||
] | ||
|
||
# `makara` is part of `activerecord` | ||
@integration_json_mapping['makara'] = [ | ||
'0.3.5', # Min version Ruby | ||
'0.3.5', # Max version Ruby | ||
nil, # Min version JRuby | ||
nil # Max version JRuby | ||
] | ||
end | ||
|
||
def resolve_integration_name(integration) | ||
mod_name = SPECIAL_CASES[integration] || integration.split('_').map(&:capitalize).join | ||
module_name = "Datadog::Tracing::Contrib::#{mod_name}" | ||
integration_module = Object.const_get(module_name)::Integration | ||
integration_module.respond_to?(:gem_name) ? integration_module.gem_name : integration | ||
rescue NameError, NoMethodError | ||
puts "Fallback for #{integration}: module or gem_name not found." | ||
integration | ||
end | ||
|
||
def write_output | ||
@integration_json_mapping = @integration_json_mapping.sort.to_h | ||
File.write("gem_output.json", JSON.pretty_generate(@integration_json_mapping)) | ||
end | ||
end | ||
|
||
GemfileProcessor.new.process |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,21 @@ | ||
require 'json' | ||
|
||
input_file = 'gem_output.json' | ||
output_file = 'integration_versions.md' | ||
|
||
data = JSON.parse(File.read(input_file)) | ||
|
||
comment = "# Integrations\n\n" | ||
header = "| Integration | Ruby Min | Ruby Max | JRuby Min | JRuby Max |\n" | ||
separator = "|-------------|----------|-----------|----------|----------|\n" | ||
rows = data.map do |integration_name, versions| | ||
ruby_min, ruby_max, jruby_min, jruby_max = versions.map { |v| v || "None" } | ||
"| #{integration_name} | #{ruby_min} | #{ruby_max} | #{jruby_min} | #{jruby_max} |" | ||
end | ||
|
||
File.open(output_file, 'w') do |file| | ||
file.puts comment | ||
file.puts header | ||
file.puts separator | ||
rows.each { |row| file.puts row } | ||
end |
Oops, something went wrong.