Skip to content

Commit 5ccf380

Browse files
authored
feat(resources): use functions over constants for default and empty resources (#5467)
1 parent faeae98 commit 5ccf380

File tree

32 files changed

+123
-125
lines changed

32 files changed

+123
-125
lines changed

CHANGELOG.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -105,6 +105,8 @@ For semantic convention package changes, see the [semconv CHANGELOG](packages/se
105105
* Renames `Resource` class to `ResourceImpl` and makes it package-private
106106
* Renames `IResource` interface to `Resource`
107107
* Export function `resourceFromAttributes` to create a `Resource` from a `DetectedAttributes` object
108+
* Export function `defaultResource` to create a default resource [#5467](https://github.com/open-telemetry/opentelemetry-js/pull/5467) @pichlermarc
109+
* Export function `emptyResource` to create an empty resource [#5467](https://github.com/open-telemetry/opentelemetry-js/pull/5467) @pichlermarc
108110
* Only export types and functions. This aids in cross-version compatibility and makes it more easily extensible in the future.
109111
* feat(resources)!: do not read environment variables from window in browsers [#5466](https://github.com/open-telemetry/opentelemetry-js/pull/5466) @pichlermarc
110112
* (user-facing): all configuration previously possible via `window.OTEL_*` is now not supported anymore

experimental/packages/opentelemetry-browser-detector/src/BrowserDetector.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ import {
1919
DetectedResource,
2020
ResourceDetector,
2121
ResourceDetectionConfig,
22-
EMPTY_RESOURCE,
22+
emptyResource,
2323
} from '@opentelemetry/resources';
2424
import { BROWSER_ATTRIBUTES, UserAgentData } from './types';
2525

@@ -30,7 +30,7 @@ class BrowserDetector implements ResourceDetector {
3030
detect(config?: ResourceDetectionConfig): DetectedResource {
3131
const isBrowser = typeof navigator !== 'undefined';
3232
if (!isBrowser) {
33-
return EMPTY_RESOURCE;
33+
return emptyResource();
3434
}
3535
const browserResource: Attributes = getBrowserAttributes();
3636
return this._getResourceAttributes(browserResource, config);
@@ -53,7 +53,7 @@ class BrowserDetector implements ResourceDetector {
5353
diag.debug(
5454
'BrowserDetector failed: Unable to find required browser resources. '
5555
);
56-
return EMPTY_RESOURCE;
56+
return emptyResource();
5757
} else {
5858
return { attributes: browserResource };
5959
}

experimental/packages/opentelemetry-exporter-prometheus/test/util.ts

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

1717
import * as sinon from 'sinon';
18-
import { DEFAULT_RESOURCE } from '@opentelemetry/resources';
18+
import { defaultResource } from '@opentelemetry/resources';
1919
import {
2020
SEMRESATTRS_SERVICE_NAME,
2121
SEMRESATTRS_TELEMETRY_SDK_LANGUAGE,
@@ -29,23 +29,19 @@ export function mockHrTime() {
2929
sinon.useFakeTimers(mockedHrTimeMs);
3030
}
3131

32-
export const serviceName = DEFAULT_RESOURCE.attributes[
33-
SEMRESATTRS_SERVICE_NAME
34-
]?.toString()
32+
export const serviceName = defaultResource()
33+
.attributes[SEMRESATTRS_SERVICE_NAME]?.toString()
3534
.replace(/\\/g, '\\\\')
3635
.replace(/\n/g, '\\n');
37-
export const sdkLanguage = DEFAULT_RESOURCE.attributes[
38-
SEMRESATTRS_TELEMETRY_SDK_LANGUAGE
39-
]?.toString()
36+
export const sdkLanguage = defaultResource()
37+
.attributes[SEMRESATTRS_TELEMETRY_SDK_LANGUAGE]?.toString()
4038
.replace(/\\/g, '\\\\')
4139
.replace(/\n/g, '\\n');
42-
export const sdkName = DEFAULT_RESOURCE.attributes[
43-
SEMRESATTRS_TELEMETRY_SDK_NAME
44-
]?.toString()
40+
export const sdkName = defaultResource()
41+
.attributes[SEMRESATTRS_TELEMETRY_SDK_NAME]?.toString()
4542
.replace(/\\/g, '\\\\')
4643
.replace(/\n/g, '\\n');
47-
export const sdkVersion = DEFAULT_RESOURCE.attributes[
48-
SEMRESATTRS_TELEMETRY_SDK_VERSION
49-
]?.toString()
44+
export const sdkVersion = defaultResource()
45+
.attributes[SEMRESATTRS_TELEMETRY_SDK_VERSION]?.toString()
5046
.replace(/\\/g, '\\\\')
5147
.replace(/\n/g, '\\n');

experimental/packages/opentelemetry-sdk-node/src/sdk.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ import {
2727
registerInstrumentations,
2828
} from '@opentelemetry/instrumentation';
2929
import {
30-
DEFAULT_RESOURCE,
30+
defaultResource,
3131
detectResources,
3232
envDetector,
3333
hostDetector,
@@ -245,7 +245,7 @@ export class NodeSDK {
245245

246246
this._configuration = configuration;
247247

248-
this._resource = configuration.resource ?? DEFAULT_RESOURCE;
248+
this._resource = configuration.resource ?? defaultResource();
249249
this._autoDetectResources = configuration.autoDetectResources ?? true;
250250
if (!this._autoDetectResources) {
251251
this._resourceDetectors = [];

experimental/packages/opentelemetry-sdk-node/test/sdk.test.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,7 @@ import {
6666
hostDetector,
6767
serviceInstanceIdDetector,
6868
DetectedResource,
69-
DEFAULT_RESOURCE,
69+
defaultResource,
7070
} from '@opentelemetry/resources';
7171
import { OTLPTraceExporter } from '@opentelemetry/exporter-trace-otlp-http';
7272
import { logs, ProxyLoggerProvider } from '@opentelemetry/api-logs';
@@ -956,7 +956,7 @@ describe('Node SDK', () => {
956956
const resource = sdk['_resource'];
957957
await resource.waitForAsyncAttributes?.();
958958

959-
assert.deepStrictEqual(resource, DEFAULT_RESOURCE);
959+
assert.deepStrictEqual(resource, defaultResource());
960960
await sdk.shutdown();
961961
});
962962
});

experimental/packages/sampler-jaeger-remote/README.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ To integrate the Jaeger Remote Sampler with your application, configure it with
1919

2020
```javascript
2121
const { JaegerRemoteSampler } = require('@opentelemetry/sampler-jaeger-remote');
22-
const { DEFAULT_RESOURCE, resourceFromAttributes } = require('@opentelemetry/resources');
22+
const { defaultResource, resourceFromAttributes } = require('@opentelemetry/resources');
2323
const { NodeTracerProvider } = require('@opentelemetry/node');
2424

2525
// Jaeger agent endpoint
@@ -30,7 +30,7 @@ const sampler = new JaegerRemoteSampler({
3030
poolingInterval: 60000 // 60 seconds
3131
});
3232
const provider = new NodeTracerProvider({
33-
resource: DEFAULT_RESOURCE.merge(resourceFromAttributes({
33+
resource: defaultResource().merge(resourceFromAttributes({
3434
'service.name': 'your-service-name'
3535
})),
3636
sampler

experimental/packages/sdk-logs/src/LoggerProvider.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@
1616
import { diag } from '@opentelemetry/api';
1717
import type * as logsAPI from '@opentelemetry/api-logs';
1818
import { NOOP_LOGGER } from '@opentelemetry/api-logs';
19-
import { DEFAULT_RESOURCE } from '@opentelemetry/resources';
19+
import { defaultResource } from '@opentelemetry/resources';
2020
import { BindOnceFuture, merge } from '@opentelemetry/core';
2121

2222
import type { LoggerProviderConfig } from './types';
@@ -34,7 +34,7 @@ export class LoggerProvider implements logsAPI.LoggerProvider {
3434

3535
constructor(config: LoggerProviderConfig = {}) {
3636
const mergedConfig = merge({}, loadDefaultConfig(), config);
37-
const resource = config.resource ?? DEFAULT_RESOURCE;
37+
const resource = config.resource ?? defaultResource();
3838
this._sharedState = new LoggerProviderSharedState(
3939
resource,
4040
mergedConfig.forceFlushTimeoutMillis,

experimental/packages/sdk-logs/test/common/LogRecord.test.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ import {
2727
import * as logsAPI from '@opentelemetry/api-logs';
2828
import type { HrTime } from '@opentelemetry/api';
2929
import { hrTimeToMilliseconds, timeInputToHrTime } from '@opentelemetry/core';
30-
import { DEFAULT_RESOURCE } from '@opentelemetry/resources';
30+
import { defaultResource } from '@opentelemetry/resources';
3131

3232
import {
3333
LogRecordLimits,
@@ -47,7 +47,7 @@ const setup = (logRecordLimits?: LogRecordLimits, data?: logsAPI.LogRecord) => {
4747
version: 'test version',
4848
schemaUrl: 'test schema url',
4949
};
50-
const resource = DEFAULT_RESOURCE;
50+
const resource = defaultResource();
5151
const sharedState = new LoggerProviderSharedState(
5252
resource,
5353
Infinity,

experimental/packages/sdk-logs/test/common/LoggerProvider.test.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@
1616
import { logs, NoopLogger } from '@opentelemetry/api-logs';
1717
import { diag } from '@opentelemetry/api';
1818
import {
19-
DEFAULT_RESOURCE,
19+
defaultResource,
2020
resourceFromAttributes,
2121
} from '@opentelemetry/resources';
2222
import * as assert from 'assert';
@@ -55,7 +55,7 @@ describe('LoggerProvider', () => {
5555
it('should have default resource if not pass', () => {
5656
const provider = new LoggerProvider();
5757
const { resource } = provider['_sharedState'];
58-
assert.deepStrictEqual(resource, DEFAULT_RESOURCE);
58+
assert.deepStrictEqual(resource, defaultResource());
5959
});
6060

6161
it('should not have default resource if passed', function () {

experimental/packages/sdk-logs/test/common/export/BatchLogRecordProcessor.test.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ import { BatchLogRecordProcessorBase } from '../../../src/export/BatchLogRecordP
3232
import { reconfigureLimits } from '../../../src/config';
3333
import { LoggerProviderSharedState } from '../../../src/internal/LoggerProviderSharedState';
3434
import {
35-
DEFAULT_RESOURCE,
35+
defaultResource,
3636
Resource,
3737
resourceFromAttributes,
3838
} from '@opentelemetry/resources';
@@ -47,7 +47,7 @@ const createLogRecord = (
4747
resource?: Resource
4848
): LogRecord => {
4949
const sharedState = new LoggerProviderSharedState(
50-
resource || DEFAULT_RESOURCE,
50+
resource || defaultResource(),
5151
Infinity,
5252
reconfigureLimits(limits ?? {})
5353
);

0 commit comments

Comments
 (0)