Skip to content

Commit e5031bd

Browse files
pichlermarcdyladan
andauthored
refactor(exporters): introduce packages for shared exporter classes (#2893)
Co-authored-by: Daniel Dyla <[email protected]>
1 parent 0f3e4de commit e5031bd

File tree

124 files changed

+2873
-402
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

124 files changed

+2873
-402
lines changed

.gitmodules

Lines changed: 4 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,6 @@
1-
[submodule "experimental/packages/exporter-trace-otlp-proto/protos"]
2-
path = experimental/packages/exporter-trace-otlp-proto/protos
1+
[submodule "experimental/packages/otlp-grpc-exporter-base/protos"]
2+
path = experimental/packages/otlp-grpc-exporter-base/protos
33
url = https://github.com/open-telemetry/opentelemetry-proto.git
4-
[submodule "experimental/packages/exporter-trace-otlp-grpc/protos"]
5-
path = experimental/packages/exporter-trace-otlp-grpc/protos
6-
url = https://github.com/open-telemetry/opentelemetry-proto.git
7-
[submodule "experimental/packages/opentelemetry-exporter-metrics-otlp-grpc/protos"]
8-
path = experimental/packages/opentelemetry-exporter-metrics-otlp-grpc/protos
9-
url = https://github.com/open-telemetry/opentelemetry-proto.git
10-
[submodule "experimental/packages/opentelemetry-exporter-metrics-otlp-proto/protos"]
11-
path = experimental/packages/opentelemetry-exporter-metrics-otlp-proto/protos
4+
[submodule "experimental/packages/otlp-proto-exporter-base/protos"]
5+
path = experimental/packages/otlp-proto-exporter-base/protos
126
url = https://github.com/open-telemetry/opentelemetry-proto.git

experimental/CHANGELOG.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,10 @@ All notable changes to experimental packages in this project will be documented
1616
* updated `opentelemetry-sdk-node` to the latest Metrics SDK.
1717
* updated `otlp-transformer` to the latest Metrics SDK.
1818
* updated all `instrumentation-*` packages to use local implementations of `parseUrl()` due to #2884
19+
* refactor(otlp-exporters) move base classes and associated types into their own packages #2893 @pichlermarc
20+
* `otlp-exporter-base` => `OTLPExporterBase`, `OTLPExporterBrowserBase`, `OTLPExporterNodeBase`
21+
* `otlp-grpc-exporter-base` => `OTLPGRPCExporterNodeBase`
22+
* `otlp-proto-exporter-base` => `OTLPProtoExporterNodeBase`
1923

2024
### :rocket: (Enhancement)
2125

experimental/packages/exporter-trace-otlp-grpc/package.json

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -11,13 +11,10 @@
1111
"clean": "tsc --build --clean",
1212
"lint": "eslint . --ext .ts",
1313
"lint:fix": "eslint . --ext .ts --fix",
14-
"postcompile": "npm run submodule && npm run protos:copy",
15-
"protos:copy": "cpx protos/opentelemetry/**/*.* build/protos/opentelemetry",
16-
"submodule": "git submodule sync --recursive && git submodule update --init --recursive",
1714
"tdd": "npm run test -- --watch-extensions ts --watch",
1815
"test": "nyc ts-mocha -p tsconfig.json 'test/**/*.test.ts'",
1916
"version": "node ../../../scripts/version-update.js",
20-
"watch": "npm run protos:copy && tsc -w",
17+
"watch": "tsc -w",
2118
"precompile": "lerna run version --scope $(npm pkg get name) --include-dependencies",
2219
"prewatch": "npm run precompile",
2320
"peer-api-check": "node ../../../scripts/peer-api-check.js",
@@ -52,6 +49,7 @@
5249
"devDependencies": {
5350
"@babel/core": "7.16.0",
5451
"@opentelemetry/api": "^1.0.0",
52+
"@opentelemetry/otlp-exporter-base": "0.27.0",
5553
"@types/mocha": "8.2.3",
5654
"@types/node": "14.17.33",
5755
"@types/sinon": "10.0.6",
@@ -73,6 +71,7 @@
7371
"@grpc/grpc-js": "^1.5.9",
7472
"@grpc/proto-loader": "^0.6.9",
7573
"@opentelemetry/exporter-trace-otlp-http": "0.27.0",
74+
"@opentelemetry/otlp-grpc-exporter-base": "0.27.0",
7675
"@opentelemetry/resources": "1.1.1",
7776
"@opentelemetry/sdk-trace-base": "1.1.1"
7877
}

experimental/packages/exporter-trace-otlp-grpc/src/OTLPTraceExporter.ts

Lines changed: 14 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -15,29 +15,30 @@
1515
*/
1616

1717
import { ReadableSpan, SpanExporter } from '@opentelemetry/sdk-trace-base';
18-
import { OTLPExporterNodeBase } from './OTLPExporterNodeBase';
1918
import {
2019
otlpTypes,
2120
toOTLPExportTraceServiceRequest,
2221
} from '@opentelemetry/exporter-trace-otlp-http';
23-
import { OTLPExporterConfigNode, ServiceClientType } from './types';
2422
import { baggageUtils, getEnv } from '@opentelemetry/core';
25-
import { validateAndNormalizeUrl } from './util';
2623
import { Metadata } from '@grpc/grpc-js';
24+
import {
25+
OTLPGRPCExporterConfigNode,
26+
OTLPGRPCExporterNodeBase,
27+
ServiceClientType,
28+
validateAndNormalizeUrl
29+
} from '@opentelemetry/otlp-grpc-exporter-base';
2730

2831
const DEFAULT_COLLECTOR_URL = 'localhost:4317';
2932

3033
/**
3134
* OTLP Trace Exporter for Node
3235
*/
3336
export class OTLPTraceExporter
34-
extends OTLPExporterNodeBase<
35-
ReadableSpan,
36-
otlpTypes.opentelemetryProto.collector.trace.v1.ExportTraceServiceRequest
37-
>
37+
extends OTLPGRPCExporterNodeBase<ReadableSpan,
38+
otlpTypes.opentelemetryProto.collector.trace.v1.ExportTraceServiceRequest>
3839
implements SpanExporter {
3940

40-
constructor(config: OTLPExporterConfigNode = {}) {
41+
constructor(config: OTLPGRPCExporterConfigNode = {}) {
4142
super(config);
4243
const headers = baggageUtils.parseKeyPairsIntoRecord(getEnv().OTEL_EXPORTER_OTLP_TRACES_HEADERS);
4344
this.metadata ||= new Metadata();
@@ -52,14 +53,14 @@ export class OTLPTraceExporter
5253
return toOTLPExportTraceServiceRequest(spans, this);
5354
}
5455

55-
getDefaultUrl(config: OTLPExporterConfigNode) {
56+
getDefaultUrl(config: OTLPGRPCExporterConfigNode) {
5657
return typeof config.url === 'string'
5758
? validateAndNormalizeUrl(config.url)
5859
: getEnv().OTEL_EXPORTER_OTLP_TRACES_ENDPOINT.length > 0
59-
? validateAndNormalizeUrl(getEnv().OTEL_EXPORTER_OTLP_TRACES_ENDPOINT)
60-
: getEnv().OTEL_EXPORTER_OTLP_ENDPOINT.length > 0
61-
? validateAndNormalizeUrl(getEnv().OTEL_EXPORTER_OTLP_ENDPOINT)
62-
: DEFAULT_COLLECTOR_URL;
60+
? validateAndNormalizeUrl(getEnv().OTEL_EXPORTER_OTLP_TRACES_ENDPOINT)
61+
: getEnv().OTEL_EXPORTER_OTLP_ENDPOINT.length > 0
62+
? validateAndNormalizeUrl(getEnv().OTEL_EXPORTER_OTLP_ENDPOINT)
63+
: DEFAULT_COLLECTOR_URL;
6364
}
6465

6566
getServiceClientType() {

experimental/packages/exporter-trace-otlp-grpc/src/index.ts

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,4 @@
1414
* limitations under the License.
1515
*/
1616

17-
export * from './OTLPExporterNodeBase';
1817
export * from './OTLPTraceExporter';
19-
export { ServiceClientType, OTLPExporterConfigNode } from './types';
20-
export { validateAndNormalizeUrl } from './util';

experimental/packages/exporter-trace-otlp-grpc/submodule.md

Lines changed: 0 additions & 46 deletions
This file was deleted.

experimental/packages/exporter-trace-otlp-grpc/test/OTLPTraceExporter.test.ts

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -35,12 +35,12 @@ import {
3535
ensureResourceIsCorrect,
3636
mockedReadableSpan,
3737
} from './traceHelper';
38-
39-
import { CompressionAlgorithm } from '../src/types';
38+
import { CompressionAlgorithm } from '@opentelemetry/otlp-exporter-base';
39+
import { GrpcCompressionAlgorithm } from '@opentelemetry/otlp-grpc-exporter-base';
4040

4141
const traceServiceProtoPath =
4242
'opentelemetry/proto/collector/trace/v1/trace_service.proto';
43-
const includeDirs = [path.resolve(__dirname, '../protos')];
43+
const includeDirs = [path.resolve(__dirname, '../../otlp-grpc-exporter-base/protos')];
4444

4545
const address = 'localhost:1501';
4646

@@ -267,7 +267,7 @@ const testCollectorExporter = (params: TestParams) =>
267267
credentials,
268268
metadata: params.metadata,
269269
});
270-
assert.strictEqual(collectorExporter.compression, CompressionAlgorithm.GZIP);
270+
assert.strictEqual(collectorExporter.compression, GrpcCompressionAlgorithm.GZIP);
271271
delete envSource.OTEL_EXPORTER_OTLP_COMPRESSION;
272272
});
273273
});
@@ -337,3 +337,5 @@ describe('when configuring via environment', () => {
337337
testCollectorExporter({ useTLS: true });
338338
testCollectorExporter({ useTLS: false });
339339
testCollectorExporter({ metadata });
340+
341+

experimental/packages/exporter-trace-otlp-grpc/tsconfig.json

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,12 @@
2020
},
2121
{
2222
"path": "../exporter-trace-otlp-http"
23+
},
24+
{
25+
"path": "../otlp-exporter-base"
26+
},
27+
{
28+
"path": "../otlp-grpc-exporter-base"
2329
}
2430
]
2531
}

experimental/packages/exporter-trace-otlp-http/package.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -96,6 +96,7 @@
9696
"dependencies": {
9797
"@opentelemetry/core": "1.1.1",
9898
"@opentelemetry/resources": "1.1.1",
99-
"@opentelemetry/sdk-trace-base": "1.1.1"
99+
"@opentelemetry/sdk-trace-base": "1.1.1",
100+
"@opentelemetry/otlp-exporter-base": "0.27.0"
100101
}
101102
}

experimental/packages/exporter-trace-otlp-http/src/index.ts

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,8 +14,6 @@
1414
* limitations under the License.
1515
*/
1616

17-
export * from './OTLPExporterBase';
1817
export * from './platform';
1918
export * as otlpTypes from './types';
2019
export { toCollectorResource, toOTLPExportTraceServiceRequest } from './transform';
21-
export { appendResourcePathToUrlIfNotPresent } from './util';

0 commit comments

Comments
 (0)