Skip to content

Commit da0bc1b

Browse files
committed
migrate cloudtrace propagator
1 parent 10f7969 commit da0bc1b

20 files changed

+1055
-0
lines changed

.github/dependabot.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -91,6 +91,7 @@ updates:
9191
- "/src/Instrumentation/Yii"
9292
- "/src/Logs/Monolog"
9393
- "/src/MetaPackages/opentelemetry"
94+
- "/src/Propagation/CloudTrace"
9495
- "/src/Propagation/Instana"
9596
- "/src/Propagation/ServerTiming"
9697
- "/src/Propagation/TraceResponse"

.github/workflows/php.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,7 @@ jobs:
5454
'Instrumentation/Symfony',
5555
'Instrumentation/Yii',
5656
'Logs/Monolog',
57+
'Propagation/CloudTrace',
5758
'Propagation/Instana',
5859
'Propagation/ServerTiming',
5960
'Propagation/TraceResponse',

.gitsplit.yml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -72,6 +72,8 @@ splits:
7272
target: "https://${GH_TOKEN}@github.com/opentelemetry-php/contrib-logger-monolog.git"
7373
- prefix: "src/MetaPackages/opentelemetry"
7474
target: "https://${GH_TOKEN}@github.com/opentelemetry-php/opentelemetry-meta.git"
75+
- prefix: "src/Propagation/CloudTrace"
76+
target: "https://${GH_TOKEN}@github.com/opentelemetry-php/extension-propagator-cloudtrace.git"
7577
- prefix: "src/Propagation/Instana"
7678
target: "https://${GH_TOKEN}@github.com/opentelemetry-php/contrib-propagator-instana.git"
7779
- prefix: "src/Propagation/ServerTiming"

composer.json

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,7 @@
5454
"OpenTelemetry\\Contrib\\Sampler\\RuleBased\\": "src/Sampler/RuleBased/src",
5555
"OpenTelemetry\\Contrib\\Shim\\OpenTracing\\": "src/Shims/OpenTracing/src",
5656
"OpenTelemetry\\Contrib\\Symfony\\": "src/Symfony/src",
57+
"OpenTelemetry\\Extension\\Propagator\\CloudTrace\\": "src/Propagation/CloudTrace/src",
5758
"OpenTelemetry\\TestUtils\\": "src/Utils/Test/src"
5859
},
5960
"files": [
@@ -84,6 +85,7 @@
8485
"src/Instrumentation/Symfony/_register.php",
8586
"src/Instrumentation/Wordpress/_register.php",
8687
"src/Instrumentation/Yii/_register.php",
88+
"src/Propagation/CloudTrace/_register.php",
8789
"src/Propagation/Instana/_register.php",
8890
"src/ResourceDetectors/Azure/_register.php",
8991
"src/ResourceDetectors/Container/_register.php",
@@ -131,6 +133,7 @@
131133
"open-telemetry/detector-azure": "self.version",
132134
"open-telemetry/detector-container": "self.version",
133135
"open-telemetry/detector-digitalocean": "self.version",
136+
"open-telemetry/extension-propagator-cloudtrace": "self.version",
134137
"open-telemetry/opentelemetry-auto-aws-sdk": "self.version",
135138
"open-telemetry/opentelemetry-auto-cakephp": "self.version",
136139
"open-telemetry/opentelemetry-auto-codeigniter": "self.version",
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
* text=auto
2+
3+
*.md diff=markdown
4+
*.php diff=php
5+
6+
/.gitattributes export-ignore
7+
/.gitignore export-ignore
8+
/.php-cs-fixer.php export-ignore
9+
/phpstan.neon.dist export-ignore
10+
/phpunit.xml.dist export-ignore
11+
/psalm.xml.dist export-ignore
12+
/tests export-ignore
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
/vendor/
Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
<?php
2+
$finder = PhpCsFixer\Finder::create()
3+
->exclude('vendor')
4+
->exclude('var/cache')
5+
->in(__DIR__);
6+
7+
$config = new PhpCsFixer\Config();
8+
return $config->setRules([
9+
'concat_space' => ['spacing' => 'one'],
10+
'declare_equal_normalize' => ['space' => 'none'],
11+
'is_null' => true,
12+
'modernize_types_casting' => true,
13+
'ordered_imports' => true,
14+
'php_unit_construct' => true,
15+
'single_line_comment_style' => true,
16+
'yoda_style' => false,
17+
'@PSR2' => true,
18+
'array_syntax' => ['syntax' => 'short'],
19+
'blank_line_after_opening_tag' => true,
20+
'blank_line_before_statement' => true,
21+
'cast_spaces' => true,
22+
'declare_strict_types' => true,
23+
'type_declaration_spaces' => true,
24+
'include' => true,
25+
'lowercase_cast' => true,
26+
'new_with_parentheses' => true,
27+
'no_extra_blank_lines' => true,
28+
'no_leading_import_slash' => true,
29+
'echo_tag_syntax' => true,
30+
'no_unused_imports' => true,
31+
'no_useless_else' => true,
32+
'no_useless_return' => true,
33+
'phpdoc_order' => true,
34+
'phpdoc_scalar' => true,
35+
'phpdoc_types' => true,
36+
'short_scalar_cast' => true,
37+
'blank_lines_before_namespace' => true,
38+
'single_quote' => true,
39+
'trailing_comma_in_multiline' => true,
40+
])
41+
->setRiskyAllowed(true)
42+
->setFinder($finder);
43+
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
[![Releases](https://img.shields.io/badge/releases-purple)](https://github.com/opentelemetry-php/extension-propagator-cloudtrace/releases)
2+
[![Issues](https://img.shields.io/badge/issues-pink)](https://github.com/open-telemetry/opentelemetry-php/issues)
3+
[![Source](https://img.shields.io/badge/source-contrib-green)](https://github.com/open-telemetry/opentelemetry-php-contrib/tree/main/src/Propagation/CloudTrace)
4+
[![Mirror](https://img.shields.io/badge/mirror-opentelemetry--php--contrib-blue)](https://github.com/opentelemetry-php/extension-propagator-cloudtrace)
5+
[![Latest Version](http://poser.pugx.org/open-telemetry/opentelemetry-propagation-instana/v/unstable)](https://packagist.org/packages/open-telemetry/extension-propagator-cloudtrace/)
6+
[![Stable](http://poser.pugx.org/open-telemetry/opentelemetry-propagation-instana/v/stable)](https://packagist.org/packages/open-telemetry/extension-propagator-cloudtrace/)
7+
8+
This is a read-only subtree split of https://github.com/open-telemetry/opentelemetry-php-contrib.
9+
10+
# OpenTelemetry CloudTrace Propagator
11+
12+
CloudTrace is a propagator that supports the specification for the header "x-cloud-trace-context" used for trace context propagation across
13+
service boundaries. (https://cloud.google.com/trace/docs/setup#force-trace). OpenTelemetry PHP CloudTrace Propagator Extension provides
14+
option to use it bi-directionally or one-way. One-way does not inject the header for downstream consumption, it only processes the incoming headers
15+
and returns the correct span context. It only attaches to existing X-Cloud-Trace-Context traces and does not create downstream ones.
16+
17+
## Installation
18+
19+
```sh
20+
composer require open-telemetry/extension-propagator-cloudtrace
21+
```
22+
23+
## Usage
24+
25+
For one-way CloudTrace:
26+
27+
```
28+
$propagator = CloudTracePropagator::getOneWayInstance();
29+
```
30+
31+
For bi-directional CloudTrace:
32+
33+
```
34+
$propagator = CloudTracePropagator::getInstance();
35+
```
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
<?php
2+
3+
declare(strict_types=1);
4+
5+
use OpenTelemetry\Extension\Propagator\CloudTrace\CloudTracePropagator;
6+
use OpenTelemetry\SDK\Registry;
7+
8+
if (!class_exists(Registry::class)) {
9+
return;
10+
}
11+
12+
Registry::registerTextMapPropagator(
13+
'cloudtrace',
14+
CloudTracePropagator::getInstance()
15+
);
16+
17+
Registry::registerTextMapPropagator(
18+
'cloudtrace-oneway',
19+
CloudTracePropagator::getOneWayInstance()
20+
);
Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
{
2+
"name": "open-telemetry/extension-propagator-cloudtrace",
3+
"description": "CloudTraceContext propagator extension for OpenTelemetry PHP.",
4+
"keywords": ["opentelemetry", "otel", "tracing", "apm", "extension", "propagator", "cloudtrace"],
5+
"type": "library",
6+
"readme": "./README.md",
7+
"license": "Apache-2.0",
8+
"minimum-stability": "dev",
9+
"prefer-stable": true,
10+
"require": {
11+
"php": "^8.1",
12+
"open-telemetry/api": "^1.0",
13+
"open-telemetry/context": "^1.0"
14+
},
15+
"autoload": {
16+
"psr-4":{
17+
"OpenTelemetry\\Extension\\Propagator\\CloudTrace\\": "src/"
18+
},
19+
"files":[
20+
"_register.php"
21+
]
22+
},
23+
"require-dev": {
24+
"friendsofphp/php-cs-fixer": "^3",
25+
"phan/phan": "^5.0",
26+
"phpstan/phpstan": "^1.1",
27+
"phpstan/phpstan-phpunit": "^1.0",
28+
"psalm/plugin-phpunit": "^0.19.2",
29+
"open-telemetry/sdk": "^1.0",
30+
"phpunit/phpunit": "^9.5",
31+
"vimeo/psalm": "^4|^5|^6"
32+
},
33+
"config": {
34+
"allow-plugins": {
35+
"php-http/discovery": true,
36+
"tbachert/spi": true
37+
}
38+
}
39+
}

0 commit comments

Comments
 (0)