instana 2.0.0 → 2.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/lib/instana/setup.rb +1 -0
- data/lib/instana/span_filtering/condition.rb +134 -0
- data/lib/instana/span_filtering/configuration.rb +262 -0
- data/lib/instana/span_filtering/filter_rule.rb +31 -0
- data/lib/instana/span_filtering.rb +62 -0
- data/lib/instana/trace/span.rb +5 -3
- data/lib/instana/version.rb +1 -1
- metadata +7 -258
- data/.circleci/config.yml +0 -361
- data/.codeclimate.yml +0 -23
- data/.editorconfig +0 -10
- data/.fasterer.yml +0 -23
- data/.github/ISSUE_TEMPLATE/bug.yml +0 -39
- data/.github/ISSUE_TEMPLATE/config.yml +0 -8
- data/.github/workflows/pr_commits_signed_off.yml +0 -16
- data/.github/workflows/release-notification-on-slack.yml +0 -34
- data/.gitignore +0 -19
- data/.rubocop.yml +0 -34
- data/.rubocop_todo.yml +0 -1140
- data/.tekton/.currency/docs/report.md +0 -20
- data/.tekton/.currency/resources/requirements.txt +0 -4
- data/.tekton/.currency/resources/table.json +0 -100
- data/.tekton/.currency/scripts/generate_report.py +0 -308
- data/.tekton/README.md +0 -278
- data/.tekton/github-interceptor-secret.yaml +0 -8
- data/.tekton/github-pr-eventlistener.yaml +0 -104
- data/.tekton/github-pr-pipeline.yaml.part +0 -38
- data/.tekton/github-set-status-task.yaml +0 -43
- data/.tekton/github-webhook-ingress.yaml +0 -20
- data/.tekton/pipeline.yaml +0 -484
- data/.tekton/pipelinerun.yaml +0 -21
- data/.tekton/prepuller-restart-service-account.yaml +0 -31
- data/.tekton/ruby-tracer-prepuller-cronjob.yaml +0 -20
- data/.tekton/ruby-tracer-prepuller.yaml +0 -88
- data/.tekton/run_unittests.sh +0 -87
- data/.tekton/scheduled-eventlistener.yaml +0 -108
- data/.tekton/task.yaml +0 -453
- data/.tekton/tekton-triggers-eventlistener-serviceaccount.yaml +0 -29
- data/Appraisals +0 -124
- data/CONTRIBUTING.md +0 -86
- data/Gemfile +0 -22
- data/LICENSE +0 -22
- data/MAINTAINERS.md +0 -3
- data/Rakefile +0 -49
- data/bin/announce_release_on_slack.py +0 -103
- data/docker-compose.yml +0 -20
- data/download.sh +0 -85
- data/examples/otel.rb +0 -98
- data/examples/tracing.rb +0 -85
- data/extras/license_header.rb +0 -44
- data/gemfiles/.bundle/config +0 -2
- data/gemfiles/aws_30.gemfile +0 -21
- data/gemfiles/aws_60.gemfile +0 -16
- data/gemfiles/cuba_30.gemfile +0 -16
- data/gemfiles/cuba_40.gemfile +0 -13
- data/gemfiles/dalli_20.gemfile +0 -15
- data/gemfiles/dalli_30.gemfile +0 -12
- data/gemfiles/dalli_32.gemfile +0 -12
- data/gemfiles/excon_0100.gemfile +0 -14
- data/gemfiles/excon_021.gemfile +0 -17
- data/gemfiles/excon_079.gemfile +0 -17
- data/gemfiles/excon_100.gemfile +0 -14
- data/gemfiles/graphql_10.gemfile +0 -16
- data/gemfiles/graphql_20.gemfile +0 -15
- data/gemfiles/grpc_10.gemfile +0 -15
- data/gemfiles/mongo_216.gemfile +0 -15
- data/gemfiles/mongo_219.gemfile +0 -12
- data/gemfiles/net_http_01.gemfile +0 -17
- data/gemfiles/rack_16.gemfile +0 -15
- data/gemfiles/rack_20.gemfile +0 -15
- data/gemfiles/rack_30.gemfile +0 -13
- data/gemfiles/rails_42.gemfile +0 -18
- data/gemfiles/rails_50.gemfile +0 -19
- data/gemfiles/rails_52.gemfile +0 -19
- data/gemfiles/rails_60.gemfile +0 -19
- data/gemfiles/rails_61.gemfile +0 -21
- data/gemfiles/rails_70.gemfile +0 -18
- data/gemfiles/rails_71.gemfile +0 -17
- data/gemfiles/rails_80.gemfile +0 -17
- data/gemfiles/redis_40.gemfile +0 -15
- data/gemfiles/redis_50.gemfile +0 -13
- data/gemfiles/redis_51.gemfile +0 -13
- data/gemfiles/resque_122.gemfile +0 -16
- data/gemfiles/resque_1274_3scale.gemfile +0 -17
- data/gemfiles/resque_20.gemfile +0 -16
- data/gemfiles/rest_client_16.gemfile +0 -17
- data/gemfiles/rest_client_20.gemfile +0 -17
- data/gemfiles/roda_20.gemfile +0 -16
- data/gemfiles/roda_30.gemfile +0 -16
- data/gemfiles/rubocop_162.gemfile +0 -6
- data/gemfiles/sequel_56.gemfile +0 -16
- data/gemfiles/sequel_57.gemfile +0 -16
- data/gemfiles/sequel_58.gemfile +0 -16
- data/gemfiles/shoryuken_50.gemfile +0 -16
- data/gemfiles/shoryuken_60.gemfile +0 -13
- data/gemfiles/sidekiq_42.gemfile +0 -15
- data/gemfiles/sidekiq_50.gemfile +0 -15
- data/gemfiles/sidekiq_60.gemfile +0 -12
- data/gemfiles/sidekiq_65.gemfile +0 -12
- data/gemfiles/sidekiq_70.gemfile +0 -12
- data/gemfiles/sinatra_14.gemfile +0 -15
- data/gemfiles/sinatra_22.gemfile +0 -12
- data/gemfiles/sinatra_30.gemfile +0 -12
- data/gemfiles/sinatra_40.gemfile +0 -12
- data/instana.gemspec +0 -53
- data/log/.keep +0 -0
- data/sonar-project.properties +0 -9
- data/test/activator_test.rb +0 -50
- data/test/backend/agent_test.rb +0 -80
- data/test/backend/gc_snapshot_test.rb +0 -11
- data/test/backend/host_agent_activation_observer_test.rb +0 -73
- data/test/backend/host_agent_lookup_test.rb +0 -78
- data/test/backend/host_agent_reporting_observer_test.rb +0 -276
- data/test/backend/host_agent_test.rb +0 -89
- data/test/backend/process_info_test.rb +0 -83
- data/test/backend/request_client_test.rb +0 -39
- data/test/backend/serverless_agent_test.rb +0 -83
- data/test/benchmarks/bench_id_generation.rb +0 -15
- data/test/benchmarks/bench_opentracing.rb +0 -16
- data/test/config_test.rb +0 -34
- data/test/frameworks/cuba_test.rb +0 -61
- data/test/frameworks/roda_test.rb +0 -60
- data/test/frameworks/sinatra_test.rb +0 -71
- data/test/instana_test.rb +0 -37
- data/test/instrumentation/aws_test.rb +0 -241
- data/test/instrumentation/dalli_test.rb +0 -325
- data/test/instrumentation/excon_test.rb +0 -204
- data/test/instrumentation/graphql_test.rb +0 -289
- data/test/instrumentation/grpc_test.rb +0 -420
- data/test/instrumentation/mongo_test.rb +0 -68
- data/test/instrumentation/net_http_test.rb +0 -220
- data/test/instrumentation/rack_instrumented_request_test.rb +0 -211
- data/test/instrumentation/rack_test.rb +0 -415
- data/test/instrumentation/rails_action_cable_test.rb +0 -135
- data/test/instrumentation/rails_action_controller_test.rb +0 -218
- data/test/instrumentation/rails_action_mailer_test.rb +0 -66
- data/test/instrumentation/rails_action_view_test.rb +0 -154
- data/test/instrumentation/rails_active_job_test.rb +0 -65
- data/test/instrumentation/rails_active_record_database_missing_test.rb +0 -44
- data/test/instrumentation/rails_active_record_test.rb +0 -116
- data/test/instrumentation/redis_test.rb +0 -152
- data/test/instrumentation/resque_test.rb +0 -188
- data/test/instrumentation/rest_client_test.rb +0 -106
- data/test/instrumentation/sequel_test.rb +0 -111
- data/test/instrumentation/shoryuken_test.rb +0 -47
- data/test/instrumentation/sidekiq-client_test.rb +0 -169
- data/test/instrumentation/sidekiq-worker_test.rb +0 -180
- data/test/secrets_test.rb +0 -112
- data/test/serverless_test.rb +0 -369
- data/test/snapshot/deltable_test.rb +0 -17
- data/test/snapshot/docker_container_test.rb +0 -82
- data/test/snapshot/fargate_container_test.rb +0 -82
- data/test/snapshot/fargate_process_test.rb +0 -35
- data/test/snapshot/fargate_task_test.rb +0 -49
- data/test/snapshot/google_cloud_run_instance_test.rb +0 -74
- data/test/snapshot/google_cloud_run_process_test.rb +0 -33
- data/test/snapshot/lambda_function_test.rb +0 -37
- data/test/snapshot/ruby_process_test.rb +0 -32
- data/test/support/apps/active_record/active_record.rb +0 -24
- data/test/support/apps/grpc/boot.rb +0 -23
- data/test/support/apps/grpc/grpc_server.rb +0 -84
- data/test/support/apps/http_endpoint/boot.rb +0 -28
- data/test/support/apps/rails/boot.rb +0 -219
- data/test/support/apps/rails/models/block.rb +0 -21
- data/test/support/apps/rails/models/block6.rb +0 -21
- data/test/support/apps/resque/boot.rb +0 -5
- data/test/support/apps/resque/jobs/resque_error_job.rb +0 -22
- data/test/support/apps/resque/jobs/resque_fast_job.rb +0 -23
- data/test/support/apps/sidekiq/boot.rb +0 -25
- data/test/support/apps/sidekiq/jobs/sidekiq_job_1.rb +0 -9
- data/test/support/apps/sidekiq/jobs/sidekiq_job_2.rb +0 -10
- data/test/support/apps/sidekiq/worker.rb +0 -37
- data/test/support/helpers.rb +0 -85
- data/test/support/mock_timer.rb +0 -20
- data/test/test_helper.rb +0 -69
- data/test/trace/custom_test.rb +0 -233
- data/test/trace/id_management_test.rb +0 -78
- data/test/trace/instrumented_logger_test.rb +0 -39
- data/test/trace/processor_test.rb +0 -58
- data/test/trace/span_context_test.rb +0 -22
- data/test/trace/span_test.rb +0 -179
- data/test/trace/tracer_async_test.rb +0 -243
- data/test/trace/tracer_provider_test.rb +0 -148
- data/test/trace/tracer_test.rb +0 -363
- data/test/util_test.rb +0 -10
@@ -1,20 +0,0 @@
|
|
1
|
-
##### This page is auto-generated. Any change will be overwritten after the next sync. Please apply changes directly to the files in the [ruby tracer](https://github.com/instana/ruby-sensor) repo.
|
2
|
-
## Ruby supported packages and versions
|
3
|
-
| Package name | Support Policy | Beta version | Last Supported Version | Latest version | Up-to-date | Cloud Native |
|
4
|
-
|:---------------|:-----------------|:---------------|:-------------------------|:-----------------|:-------------|:---------------|
|
5
|
-
| Cuba | On demand | No | 4.0.3 | 4.0.3 | Yes | No |
|
6
|
-
| Rack | 45-days | No | 3.1.7 | 3.1.7 | Yes | No |
|
7
|
-
| Rails | 45-days | No | 7.2.1 | 7.2.1 | Yes | No |
|
8
|
-
| Rails::API | 45-days | No | 0.4.1 | 0.4.1 | Yes | No |
|
9
|
-
| Rails LTS | On demand | No | 6.1 | 6.1 | Yes | No |
|
10
|
-
| Roda | 45-days | No | 3.84.0 | 3.84.0 | Yes | No |
|
11
|
-
| Sinatra | 45-days | No | 4.0.0 | 4.0.0 | Yes | No |
|
12
|
-
| Excon | 45-days | No | 0.112.0 | 0.112.0 | Yes | Yes |
|
13
|
-
| gRPC | 45-days | No | 1.66.0 | 1.66.0 | Yes | No |
|
14
|
-
| Net::HTTP | 0-day | Yes | 0.4.1 | 0.4.1 | Yes | No |
|
15
|
-
| Rest-Client | 45-days | No | 2.1.0 | 2.1.0 | Yes | No |
|
16
|
-
| Dalli | 45-days | No | 3.2.8 | 3.2.8 | Yes | No |
|
17
|
-
| Resque | 45-days | No | 2.6.0 | 2.6.0 | Yes | Yes |
|
18
|
-
| Sidekiq | 45-days | No | 7.3.2 | 7.3.2 | Yes | Yes |
|
19
|
-
| GraphQL | 45-days | No | 2.3.17 | 2.3.17 | Yes | Yes |
|
20
|
-
| Sequel | 45-days | No | 5.60.0 | 5.84.0 | Yes | No |
|
@@ -1,100 +0,0 @@
|
|
1
|
-
{
|
2
|
-
"table": [
|
3
|
-
{
|
4
|
-
"Package name": "Cuba",
|
5
|
-
"Support Policy": "On demand",
|
6
|
-
"Beta version": "No",
|
7
|
-
"Cloud Native": "No"
|
8
|
-
},
|
9
|
-
{
|
10
|
-
"Package name": "Rack",
|
11
|
-
"Support Policy": "45-days",
|
12
|
-
"Beta version": "No",
|
13
|
-
"Cloud Native": "No"
|
14
|
-
},
|
15
|
-
{
|
16
|
-
"Package name": "Rails",
|
17
|
-
"Support Policy": "45-days",
|
18
|
-
"Beta version": "No",
|
19
|
-
"Cloud Native": "No"
|
20
|
-
},
|
21
|
-
{
|
22
|
-
"Package name": "Rails::API",
|
23
|
-
"Support Policy": "45-days",
|
24
|
-
"Beta version": "No",
|
25
|
-
"Cloud Native": "No"
|
26
|
-
},
|
27
|
-
{
|
28
|
-
"Package name": "Rails LTS",
|
29
|
-
"Support Policy": "On demand",
|
30
|
-
"Beta version": "No",
|
31
|
-
"Cloud Native": "No"
|
32
|
-
},
|
33
|
-
{
|
34
|
-
"Package name": "Roda",
|
35
|
-
"Support Policy": "45-days",
|
36
|
-
"Beta version": "No",
|
37
|
-
"Cloud Native": "No"
|
38
|
-
},
|
39
|
-
{
|
40
|
-
"Package name": "Sinatra",
|
41
|
-
"Support Policy": "45-days",
|
42
|
-
"Beta version": "No",
|
43
|
-
"Cloud Native": "No"
|
44
|
-
},
|
45
|
-
{
|
46
|
-
"Package name": "Excon",
|
47
|
-
"Support Policy": "45-days",
|
48
|
-
"Beta version": "No",
|
49
|
-
"Cloud Native": "Yes"
|
50
|
-
},
|
51
|
-
{
|
52
|
-
"Package name": "gRPC",
|
53
|
-
"Support Policy": "45-days",
|
54
|
-
"Beta version": "No",
|
55
|
-
"Cloud Native": "No"
|
56
|
-
},
|
57
|
-
{
|
58
|
-
"Package name": "Net::HTTP",
|
59
|
-
"Support Policy": "0-day",
|
60
|
-
"Beta version": "Yes",
|
61
|
-
"Cloud Native": "No"
|
62
|
-
},
|
63
|
-
{
|
64
|
-
"Package name": "Rest-Client",
|
65
|
-
"Support Policy": "45-days",
|
66
|
-
"Beta version": "No",
|
67
|
-
"Cloud Native": "No"
|
68
|
-
},
|
69
|
-
{
|
70
|
-
"Package name": "Dalli",
|
71
|
-
"Support Policy": "45-days",
|
72
|
-
"Beta version": "No",
|
73
|
-
"Cloud Native": "No"
|
74
|
-
},
|
75
|
-
{
|
76
|
-
"Package name": "Resque",
|
77
|
-
"Support Policy": "45-days",
|
78
|
-
"Beta version": "No",
|
79
|
-
"Cloud Native": "Yes"
|
80
|
-
},
|
81
|
-
{
|
82
|
-
"Package name": "Sidekiq",
|
83
|
-
"Support Policy": "45-days",
|
84
|
-
"Beta version": "No",
|
85
|
-
"Cloud Native": "Yes"
|
86
|
-
},
|
87
|
-
{
|
88
|
-
"Package name": "GraphQL",
|
89
|
-
"Support Policy": "45-days",
|
90
|
-
"Beta version": "No",
|
91
|
-
"Cloud Native": "Yes"
|
92
|
-
},
|
93
|
-
{
|
94
|
-
"Package name": "Sequel",
|
95
|
-
"Support Policy": "45-days",
|
96
|
-
"Beta version": "No",
|
97
|
-
"Cloud Native": "Yes"
|
98
|
-
}
|
99
|
-
]
|
100
|
-
}
|
@@ -1,308 +0,0 @@
|
|
1
|
-
# Standard Libraries
|
2
|
-
import glob
|
3
|
-
import re
|
4
|
-
from json import load
|
5
|
-
from datetime import datetime
|
6
|
-
|
7
|
-
# Third Party
|
8
|
-
from requests import get
|
9
|
-
from pandas import DataFrame
|
10
|
-
from bs4 import BeautifulSoup
|
11
|
-
|
12
|
-
JSON_FILE = "resources/table.json"
|
13
|
-
REPORT_FILE = "docs/report.md"
|
14
|
-
API_V1_ENDPOINT = "https://rubygems.org/api/v1/versions/"
|
15
|
-
GEM_INFO_ENDPOINT = "https://rubygems.org/api/v1/gems/"
|
16
|
-
|
17
|
-
|
18
|
-
def get_bundle_install_output():
|
19
|
-
libraries_from_logs = {
|
20
|
-
"cuba": "cuba_40_ruby_3.3.",
|
21
|
-
"excon": "excon_100_ruby_3.3.",
|
22
|
-
"graphql": "graphql_20_ruby_3.3.",
|
23
|
-
"grpc": "grpc_10_ruby_3.3.",
|
24
|
-
"rack": "rack_30_ruby_3.3.",
|
25
|
-
"rest-client": "rest_client_20_ruby_3.3.",
|
26
|
-
"roda": "roda_30_ruby_3.3.",
|
27
|
-
"sinatra": "sinatra_40_ruby_3.3.",
|
28
|
-
"net-http": "net_http_01_ruby_3.1.",
|
29
|
-
"rails": "rails_71_sqlite3_ruby_3.3.",
|
30
|
-
"dalli": "dalli_32_ruby_3.3.",
|
31
|
-
"resque": "resque_20_ruby_3.3.",
|
32
|
-
"sidekiq": "sidekiq_70_ruby_3.3.",
|
33
|
-
"sequel": "sequel_58_ruby_3.3.",
|
34
|
-
}
|
35
|
-
|
36
|
-
bundle_install_output = ""
|
37
|
-
|
38
|
-
for library, pattern in libraries_from_logs.items():
|
39
|
-
glob_result = glob.glob(f"../../dep_{pattern}*")
|
40
|
-
|
41
|
-
if not glob_result:
|
42
|
-
print(f"Could not find bundle install log for gem '{library}'.")
|
43
|
-
continue
|
44
|
-
|
45
|
-
with open(glob_result[0], "r") as file:
|
46
|
-
logs = file.read().replace("\n", " ")
|
47
|
-
|
48
|
-
if "Installing" not in logs:
|
49
|
-
print(f"Unable to retrieve logs from for gem '{library}'.")
|
50
|
-
continue
|
51
|
-
|
52
|
-
print(f"Retrieving currency for gem '{library}'.")
|
53
|
-
match = re.search(f"Installing ({library} [^\s]+)", logs)
|
54
|
-
bundle_install_output += f"{match[1]}\n"
|
55
|
-
|
56
|
-
return bundle_install_output
|
57
|
-
|
58
|
-
|
59
|
-
def estimate_days_behind(release_date, last_supported_release_date):
|
60
|
-
"""Calculate days between release dates"""
|
61
|
-
latest_date = datetime.strptime(release_date, "%Y-%m-%d")
|
62
|
-
supported_date = datetime.strptime(last_supported_release_date, "%Y-%m-%d")
|
63
|
-
days_diff = (latest_date - supported_date).days
|
64
|
-
return max(0, days_diff)
|
65
|
-
|
66
|
-
|
67
|
-
def get_upstream_version(dependency):
|
68
|
-
"""get the latest version available upstream and release date"""
|
69
|
-
if dependency != "rails lts":
|
70
|
-
try:
|
71
|
-
response = get(f"{API_V1_ENDPOINT}{dependency}/latest.json")
|
72
|
-
if not response:
|
73
|
-
return "Unknown", "Unknown"
|
74
|
-
|
75
|
-
response_json = response.json()
|
76
|
-
latest_version = response_json["version"]
|
77
|
-
|
78
|
-
gem_info_response = get(f"{GEM_INFO_ENDPOINT}{dependency}.json")
|
79
|
-
if not gem_info_response:
|
80
|
-
return latest_version, "Unknown"
|
81
|
-
gem_info = gem_info_response.json()
|
82
|
-
|
83
|
-
version_info_response = get(f"{API_V1_ENDPOINT}{dependency}.json")
|
84
|
-
if not version_info_response:
|
85
|
-
return latest_version, "Unknown"
|
86
|
-
version_info = version_info_response.json()
|
87
|
-
|
88
|
-
latest_version_release_date = None
|
89
|
-
for version_data in version_info:
|
90
|
-
if version_data["number"] == latest_version:
|
91
|
-
if "created_at" in version_data:
|
92
|
-
created_at = version_data["created_at"]
|
93
|
-
latest_version_release_date = datetime.strptime(
|
94
|
-
created_at, "%Y-%m-%dT%H:%M:%S.%fZ"
|
95
|
-
).strftime("%Y-%m-%d")
|
96
|
-
break
|
97
|
-
|
98
|
-
if not latest_version_release_date and "created_at" in gem_info:
|
99
|
-
created_at = gem_info["created_at"]
|
100
|
-
latest_version_release_date = datetime.strptime(
|
101
|
-
created_at, "%Y-%m-%dT%H:%M:%S.%fZ"
|
102
|
-
).strftime("%Y-%m-%d")
|
103
|
-
|
104
|
-
if not latest_version_release_date:
|
105
|
-
latest_version_release_date = "Unknown"
|
106
|
-
print(f"Could not find release date for {dependency}")
|
107
|
-
|
108
|
-
return latest_version, latest_version_release_date
|
109
|
-
except Exception as e:
|
110
|
-
return "Unknown", "Unknown"
|
111
|
-
else:
|
112
|
-
try:
|
113
|
-
initial_response = get(
|
114
|
-
"https://makandracards.com/railslts/16137-installing-rails-lts/read"
|
115
|
-
)
|
116
|
-
if not initial_response:
|
117
|
-
return "Unknown", "Unknown"
|
118
|
-
|
119
|
-
initial_soup = BeautifulSoup(initial_response.text, "html.parser")
|
120
|
-
|
121
|
-
text = initial_soup.find_all("li")[-1].text
|
122
|
-
pattern = "(\d+\.\d+\.?\d*)"
|
123
|
-
latest_version_match = re.search(pattern, text)
|
124
|
-
|
125
|
-
latest_version = "Unknown"
|
126
|
-
if latest_version_match:
|
127
|
-
latest_version = latest_version_match[1]
|
128
|
-
rails_lts_links = initial_soup.find_all("a", href=re.compile(r"railslts"))
|
129
|
-
latest_rails_lts_link = None
|
130
|
-
latest_version_num = 0.0
|
131
|
-
|
132
|
-
for link in rails_lts_links:
|
133
|
-
href = link.get("href", "")
|
134
|
-
link_text = link.text.strip()
|
135
|
-
|
136
|
-
if "Installing Rails" in link_text:
|
137
|
-
version_match = re.search(r"Installing Rails (\d+\.\d+)", link_text)
|
138
|
-
if version_match:
|
139
|
-
version_str = version_match.group(1)
|
140
|
-
try:
|
141
|
-
version_num = float(version_str)
|
142
|
-
if version_num > latest_version_num:
|
143
|
-
latest_version_num = version_num
|
144
|
-
latest_rails_lts_link = href
|
145
|
-
latest_version = version_str
|
146
|
-
except ValueError:
|
147
|
-
pass
|
148
|
-
|
149
|
-
latest_version_release_date = None
|
150
|
-
|
151
|
-
if latest_rails_lts_link:
|
152
|
-
if latest_rails_lts_link.startswith("/"):
|
153
|
-
full_url = f"https://makandracards.com{latest_rails_lts_link}"
|
154
|
-
else:
|
155
|
-
full_url = latest_rails_lts_link
|
156
|
-
|
157
|
-
detail_response = get(full_url)
|
158
|
-
if detail_response:
|
159
|
-
detail_soup = BeautifulSoup(detail_response.text, "html.parser")
|
160
|
-
|
161
|
-
time_tags = detail_soup.find_all(
|
162
|
-
"time", attrs={"data-relative": "true"}
|
163
|
-
)
|
164
|
-
for time_tag in time_tags:
|
165
|
-
if "Updated" in time_tag.parent.text:
|
166
|
-
if "datetime" in time_tag.attrs:
|
167
|
-
datetime_str = time_tag["datetime"]
|
168
|
-
try:
|
169
|
-
date_obj = datetime.strptime(
|
170
|
-
datetime_str, "%Y-%m-%dT%H:%M:%SZ"
|
171
|
-
)
|
172
|
-
latest_version_release_date = date_obj.strftime(
|
173
|
-
"%Y-%m-%d"
|
174
|
-
)
|
175
|
-
break
|
176
|
-
except ValueError:
|
177
|
-
try:
|
178
|
-
date_obj = datetime.strptime(
|
179
|
-
datetime_str, "%Y-%m-%dT%H:%M:%S.%fZ"
|
180
|
-
)
|
181
|
-
latest_version_release_date = date_obj.strftime(
|
182
|
-
"%Y-%m-%d"
|
183
|
-
)
|
184
|
-
break
|
185
|
-
except ValueError as e:
|
186
|
-
print(f"Error parsing datetime: {e}")
|
187
|
-
|
188
|
-
if not latest_version_release_date:
|
189
|
-
latest_version_release_date = datetime.now().strftime("%Y-%m-%d")
|
190
|
-
return latest_version, latest_version_release_date
|
191
|
-
|
192
|
-
except Exception as e:
|
193
|
-
print(f"Error getting Rails LTS information: {str(e)}")
|
194
|
-
return "Unknown", datetime.now().strftime("%Y-%m-%d")
|
195
|
-
|
196
|
-
|
197
|
-
def get_version_release_date(dependency, version):
|
198
|
-
if dependency == "rails lts":
|
199
|
-
_, release_date = get_upstream_version(dependency)
|
200
|
-
return release_date
|
201
|
-
|
202
|
-
try:
|
203
|
-
response = get(f"{API_V1_ENDPOINT}/{dependency}.json")
|
204
|
-
if not response:
|
205
|
-
print(f"Failed to get version info for {dependency}")
|
206
|
-
return "Unknown"
|
207
|
-
|
208
|
-
version_info = response.json()
|
209
|
-
for version_data in version_info:
|
210
|
-
if version_data["number"] == version and "created_at" in version_data:
|
211
|
-
created_at = version_data["created_at"]
|
212
|
-
release_date = datetime.strptime(
|
213
|
-
created_at, "%Y-%m-%dT%H:%M:%S.%fZ"
|
214
|
-
).strftime("%Y-%m-%d")
|
215
|
-
return release_date
|
216
|
-
except Exception as e:
|
217
|
-
print(f"Error getting release date for {dependency} {version}: {str(e)}")
|
218
|
-
|
219
|
-
return "Unknown"
|
220
|
-
|
221
|
-
|
222
|
-
def get_last_supported_version(bundle_install_output, dependency):
|
223
|
-
"""get up-to-date supported version"""
|
224
|
-
pattern = r" ([^\s]+)"
|
225
|
-
|
226
|
-
last_supported_version = re.search(
|
227
|
-
dependency + pattern, bundle_install_output, flags=re.I | re.M
|
228
|
-
)
|
229
|
-
|
230
|
-
return last_supported_version[1]
|
231
|
-
|
232
|
-
|
233
|
-
def isUptodate(last_supported_version, latest_version):
|
234
|
-
if last_supported_version == latest_version:
|
235
|
-
up_to_date = "Yes"
|
236
|
-
else:
|
237
|
-
up_to_date = "No"
|
238
|
-
|
239
|
-
return up_to_date
|
240
|
-
|
241
|
-
|
242
|
-
def main():
|
243
|
-
# Read the JSON file
|
244
|
-
with open(JSON_FILE) as file:
|
245
|
-
data = load(file)
|
246
|
-
|
247
|
-
bundle_install_output = get_bundle_install_output()
|
248
|
-
|
249
|
-
items = data["table"]
|
250
|
-
|
251
|
-
for item in items:
|
252
|
-
package = item["Package name"]
|
253
|
-
package = package.lower().replace("::", "-")
|
254
|
-
|
255
|
-
latest_version, release_date = get_upstream_version(package)
|
256
|
-
if package not in ["rails lts", "rails-api"]:
|
257
|
-
last_supported_version = get_last_supported_version(
|
258
|
-
bundle_install_output, package
|
259
|
-
)
|
260
|
-
else:
|
261
|
-
last_supported_version = latest_version
|
262
|
-
|
263
|
-
last_supported_version_release_date = get_version_release_date(
|
264
|
-
package, last_supported_version
|
265
|
-
)
|
266
|
-
|
267
|
-
up_to_date = isUptodate(last_supported_version, latest_version)
|
268
|
-
|
269
|
-
days_behind = "0 day/s"
|
270
|
-
if (
|
271
|
-
up_to_date == "No"
|
272
|
-
and release_date != "Unknown"
|
273
|
-
and last_supported_version_release_date != "Unknown"
|
274
|
-
):
|
275
|
-
days = estimate_days_behind(
|
276
|
-
release_date, last_supported_version_release_date
|
277
|
-
)
|
278
|
-
days_behind = f"{days} day/s"
|
279
|
-
|
280
|
-
item.update(
|
281
|
-
{
|
282
|
-
"Last Supported Version": last_supported_version,
|
283
|
-
"Latest version": latest_version,
|
284
|
-
"Up-to-date": up_to_date,
|
285
|
-
"Release date": release_date,
|
286
|
-
"Latest Version Published At": last_supported_version_release_date,
|
287
|
-
"Days behind": days_behind,
|
288
|
-
},
|
289
|
-
)
|
290
|
-
# Create a DataFrame from the list of dictionaries
|
291
|
-
df = DataFrame(items)
|
292
|
-
df.insert(len(df.columns) - 1, "Cloud Native", df.pop("Cloud Native"))
|
293
|
-
|
294
|
-
# Convert dataframe to markdown
|
295
|
-
markdown_table = df.to_markdown(index=False)
|
296
|
-
|
297
|
-
disclaimer = "##### This page is auto-generated. Any change will be overwritten after the next sync. Please apply changes directly to the files in the [ruby tracer](https://github.com/instana/ruby-sensor) repo."
|
298
|
-
title = "## Ruby supported packages and versions"
|
299
|
-
|
300
|
-
# Combine disclaimer, title, and markdown table with line breaks
|
301
|
-
final_markdown = disclaimer + "\n" + title + "\n" + markdown_table
|
302
|
-
|
303
|
-
with open(REPORT_FILE, "w") as file:
|
304
|
-
file.write(final_markdown)
|
305
|
-
|
306
|
-
|
307
|
-
if __name__ == "__main__":
|
308
|
-
main()
|