From 6d1a24c891960e41bbf1351a060d400f1b5d2b9b Mon Sep 17 00:00:00 2001 From: "maxime.quentin" Date: Thu, 14 May 2020 15:58:40 +0200 Subject: [PATCH 1/6] :sparkles: add env, service and version --- packages/core/src/configuration.ts | 22 ++++++++++++++++++---- packages/core/src/init.ts | 2 +- packages/logs/src/buildEnv.ts | 2 +- packages/rum/src/buildEnv.ts | 2 +- 4 files changed, 21 insertions(+), 7 deletions(-) diff --git a/packages/core/src/configuration.ts b/packages/core/src/configuration.ts index b2e3bb96b2..619a3734dc 100644 --- a/packages/core/src/configuration.ts +++ b/packages/core/src/configuration.ts @@ -49,6 +49,10 @@ export interface UserConfiguration { internalMonitoringEndpoint?: string logsEndpoint?: string rumEndpoint?: string + + clientService?: string + clientEnv?: string + clientVersion?: string } export type Configuration = typeof DEFAULT_CONFIGURATION & { @@ -63,19 +67,26 @@ export type Configuration = typeof DEFAULT_CONFIGURATION & { interface TransportConfiguration { clientToken: string datacenter: Datacenter - env: Environment + sdkEnv: Environment buildMode: BuildMode sdkVersion: string proxyHost?: string + + clientService?: string + clientEnv?: string + clientVersion?: string } export function buildConfiguration(userConfiguration: UserConfiguration, buildEnv: BuildEnv): Configuration { const transportConfiguration: TransportConfiguration = { buildMode: buildEnv.buildMode, + clientEnv: userConfiguration.clientEnv, + clientService: userConfiguration.clientService, clientToken: userConfiguration.clientToken, + clientVersion: userConfiguration.clientVersion, datacenter: userConfiguration.datacenter || buildEnv.datacenter, - env: buildEnv.env, proxyHost: userConfiguration.proxyHost, + sdkEnv: buildEnv.sdkEnv, sdkVersion: buildEnv.sdkVersion, } @@ -129,8 +140,11 @@ export function buildConfiguration(userConfiguration: UserConfiguration, buildEn function getEndpoint(type: string, conf: TransportConfiguration, source?: string) { const tld = conf.datacenter === 'us' ? 'com' : 'eu' - const domain = conf.env === 'production' ? `datadoghq.${tld}` : `datad0g.${tld}` - const tags = `sdk_version:${conf.sdkVersion}` + const domain = conf.sdkEnv === 'production' ? `datadoghq.${tld}` : `datad0g.${tld}` + const tags = `sdk_version:${conf.sdkVersion} + ${conf.clientEnv ? `,env:${conf.clientEnv}` : ''} + ${conf.clientService ? `,service:${conf.clientService}` : ''} + ${conf.clientVersion ? `,version:${conf.clientVersion}` : ''}` const datadogHost = `${type}-http-intake.logs.${domain}` const host = conf.proxyHost ? conf.proxyHost : datadogHost const proxyParameter = conf.proxyHost ? `ddhost=${datadogHost}&` : '' diff --git a/packages/core/src/init.ts b/packages/core/src/init.ts index 640297d81e..2beaf98607 100644 --- a/packages/core/src/init.ts +++ b/packages/core/src/init.ts @@ -28,7 +28,7 @@ export type BuildMode = 'release' | 'staging' | 'e2e-test' export interface BuildEnv { datacenter: Datacenter - env: Environment + sdkEnv: Environment buildMode: BuildMode sdkVersion: string } diff --git a/packages/logs/src/buildEnv.ts b/packages/logs/src/buildEnv.ts index c3d3f459d0..bf1aceb951 100644 --- a/packages/logs/src/buildEnv.ts +++ b/packages/logs/src/buildEnv.ts @@ -3,6 +3,6 @@ import { BuildEnv, Datacenter, Environment } from '@datadog/browser-core' export const buildEnv: BuildEnv = { buildMode: '<<< BUILD_MODE >>>' as BuildEnv['buildMode'], datacenter: '<<< TARGET_DATACENTER >>>' as Datacenter, - env: '<<< TARGET_ENV >>>' as Environment, + sdkEnv: '<<< TARGET_ENV >>>' as Environment, sdkVersion: '<<< SDK_VERSION >>>', } diff --git a/packages/rum/src/buildEnv.ts b/packages/rum/src/buildEnv.ts index e418fa57c7..c1c5c002a8 100644 --- a/packages/rum/src/buildEnv.ts +++ b/packages/rum/src/buildEnv.ts @@ -3,6 +3,6 @@ import { BuildEnv } from '@datadog/browser-core' export const buildEnv: BuildEnv = { buildMode: '<<< BUILD_MODE >>>' as BuildEnv['buildMode'], datacenter: '<<< TARGET_DATACENTER >>>' as BuildEnv['datacenter'], - env: '<<< TARGET_ENV >>>' as BuildEnv['env'], + sdkEnv: '<<< TARGET_ENV >>>' as BuildEnv['sdkEnv'], sdkVersion: '<<< SDK_VERSION >>>', } From 0e29e15171af9f1e32e35fc294e1a2e84a4f5b8d Mon Sep 17 00:00:00 2001 From: "maxime.quentin" Date: Fri, 15 May 2020 10:11:27 +0200 Subject: [PATCH 2/6] fix the url tag concat --- packages/core/src/configuration.ts | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/packages/core/src/configuration.ts b/packages/core/src/configuration.ts index 619a3734dc..1f60854258 100644 --- a/packages/core/src/configuration.ts +++ b/packages/core/src/configuration.ts @@ -141,10 +141,9 @@ export function buildConfiguration(userConfiguration: UserConfiguration, buildEn function getEndpoint(type: string, conf: TransportConfiguration, source?: string) { const tld = conf.datacenter === 'us' ? 'com' : 'eu' const domain = conf.sdkEnv === 'production' ? `datadoghq.${tld}` : `datad0g.${tld}` - const tags = `sdk_version:${conf.sdkVersion} - ${conf.clientEnv ? `,env:${conf.clientEnv}` : ''} - ${conf.clientService ? `,service:${conf.clientService}` : ''} - ${conf.clientVersion ? `,version:${conf.clientVersion}` : ''}` + const tags = `sdk_version:${conf.sdkVersion}${conf.clientEnv ? `,env:${conf.clientEnv}` : ''}${ + conf.clientService ? `,service:${conf.clientService}` : '' + }${conf.clientVersion ? `,version:${conf.clientVersion}` : ''}` const datadogHost = `${type}-http-intake.logs.${domain}` const host = conf.proxyHost ? conf.proxyHost : datadogHost const proxyParameter = conf.proxyHost ? `ddhost=${datadogHost}&` : '' From a5368477705778538a376c529a6c4b11dddbda7c Mon Sep 17 00:00:00 2001 From: "maxime.quentin" Date: Fri, 15 May 2020 17:06:48 +0200 Subject: [PATCH 3/6] =?UTF-8?q?=F0=9F=91=8C=20rename=20clientXXX=20to=20XX?= =?UTF-8?q?X?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- packages/core/src/configuration.ts | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/packages/core/src/configuration.ts b/packages/core/src/configuration.ts index 1f60854258..749292d91d 100644 --- a/packages/core/src/configuration.ts +++ b/packages/core/src/configuration.ts @@ -45,14 +45,14 @@ export interface UserConfiguration { silentMultipleInit?: boolean proxyHost?: string + service?: string + env?: string + version?: string + // Below is only taken into account for e2e-test build mode. internalMonitoringEndpoint?: string logsEndpoint?: string rumEndpoint?: string - - clientService?: string - clientEnv?: string - clientVersion?: string } export type Configuration = typeof DEFAULT_CONFIGURATION & { @@ -72,22 +72,22 @@ interface TransportConfiguration { sdkVersion: string proxyHost?: string - clientService?: string - clientEnv?: string - clientVersion?: string + service?: string + env?: string + version?: string } export function buildConfiguration(userConfiguration: UserConfiguration, buildEnv: BuildEnv): Configuration { const transportConfiguration: TransportConfiguration = { buildMode: buildEnv.buildMode, - clientEnv: userConfiguration.clientEnv, - clientService: userConfiguration.clientService, clientToken: userConfiguration.clientToken, - clientVersion: userConfiguration.clientVersion, datacenter: userConfiguration.datacenter || buildEnv.datacenter, + env: userConfiguration.env, proxyHost: userConfiguration.proxyHost, sdkEnv: buildEnv.sdkEnv, sdkVersion: buildEnv.sdkVersion, + service: userConfiguration.service, + version: userConfiguration.version, } const enableExperimentalFeatures = Array.isArray(userConfiguration.enableExperimentalFeatures) @@ -141,9 +141,9 @@ export function buildConfiguration(userConfiguration: UserConfiguration, buildEn function getEndpoint(type: string, conf: TransportConfiguration, source?: string) { const tld = conf.datacenter === 'us' ? 'com' : 'eu' const domain = conf.sdkEnv === 'production' ? `datadoghq.${tld}` : `datad0g.${tld}` - const tags = `sdk_version:${conf.sdkVersion}${conf.clientEnv ? `,env:${conf.clientEnv}` : ''}${ - conf.clientService ? `,service:${conf.clientService}` : '' - }${conf.clientVersion ? `,version:${conf.clientVersion}` : ''}` + const tags = `sdk_version:${conf.sdkVersion}${conf.env ? `,env:${conf.env}` : ''}${ + conf.service ? `,service:${conf.service}` : '' + }${conf.version ? `,version:${conf.version}` : ''}` const datadogHost = `${type}-http-intake.logs.${domain}` const host = conf.proxyHost ? conf.proxyHost : datadogHost const proxyParameter = conf.proxyHost ? `ddhost=${datadogHost}&` : '' From f3ee2bfa8d694f62c037d7fb0de715b2fae2e513 Mon Sep 17 00:00:00 2001 From: "maxime.quentin" Date: Fri, 15 May 2020 17:28:55 +0200 Subject: [PATCH 4/6] =?UTF-8?q?=E2=9C=85=20add=20the=20env,=20service=20an?= =?UTF-8?q?d=20version=20endpoint=20tags=20test?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- packages/core/test/configuration.spec.ts | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/packages/core/test/configuration.spec.ts b/packages/core/test/configuration.spec.ts index e3e6dbbb14..7702f40efb 100644 --- a/packages/core/test/configuration.spec.ts +++ b/packages/core/test/configuration.spec.ts @@ -5,7 +5,7 @@ describe('configuration', () => { const prodEnv = { buildMode: 'release' as 'release', datacenter: 'us' as 'us', - env: 'production' as 'production', + sdkEnv: 'production' as 'production', sdkVersion: 'some_version', } @@ -36,7 +36,7 @@ describe('configuration', () => { const e2eEnv = { buildMode: 'e2e-test' as 'e2e-test', datacenter: 'us' as 'us', - env: 'staging' as 'staging', + sdkEnv: 'staging' as 'staging', sdkVersion: 'some_version', } const configuration = buildConfiguration( @@ -80,4 +80,16 @@ describe('configuration', () => { expect(configuration.rumEndpoint).toContain('?ddhost=rum-http-intake.logs.datadoghq.com&') }) }) + + describe('env, version and service', () => { + it('should set the env, version and services tags in the logs and rum endpoints', () => { + const configuration = buildConfiguration({ clientToken, env: 'foo', service: 'bar', version: 'baz' }, prodEnv) + expect(configuration.rumEndpoint).toContain( + `&ddtags=sdk_version:${prodEnv.sdkVersion},env:foo,service:bar,version:baz` + ) + expect(configuration.logsEndpoint).toContain( + `&ddtags=sdk_version:${prodEnv.sdkVersion},env:foo,service:bar,version:baz` + ) + }) + }) }) From dfe49469ea004dfb8e6f89db40d34021eff7af5d Mon Sep 17 00:00:00 2001 From: "maxime.quentin" Date: Mon, 18 May 2020 09:33:29 +0200 Subject: [PATCH 5/6] =?UTF-8?q?=F0=9F=91=8C=20clarify=20the=20tag=20genera?= =?UTF-8?q?tion=20in=20getEndpoint?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- packages/core/src/configuration.ts | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/packages/core/src/configuration.ts b/packages/core/src/configuration.ts index 749292d91d..a485bc77b9 100644 --- a/packages/core/src/configuration.ts +++ b/packages/core/src/configuration.ts @@ -141,9 +141,11 @@ export function buildConfiguration(userConfiguration: UserConfiguration, buildEn function getEndpoint(type: string, conf: TransportConfiguration, source?: string) { const tld = conf.datacenter === 'us' ? 'com' : 'eu' const domain = conf.sdkEnv === 'production' ? `datadoghq.${tld}` : `datad0g.${tld}` - const tags = `sdk_version:${conf.sdkVersion}${conf.env ? `,env:${conf.env}` : ''}${ - conf.service ? `,service:${conf.service}` : '' - }${conf.version ? `,version:${conf.version}` : ''}` + const tags = + `sdk_version:${conf.sdkVersion}` + + `${conf.env ? `,env:${conf.env}` : ''}` + + `${conf.service ? `,service:${conf.service}` : ''}` + + `${conf.version ? `,version:${conf.version}` : ''}` const datadogHost = `${type}-http-intake.logs.${domain}` const host = conf.proxyHost ? conf.proxyHost : datadogHost const proxyParameter = conf.proxyHost ? `ddhost=${datadogHost}&` : '' From e5f224d6872165bfe1ae24c5cb36adb7616bccae Mon Sep 17 00:00:00 2001 From: "maxime.quentin" Date: Mon, 18 May 2020 11:06:34 +0200 Subject: [PATCH 6/6] =?UTF-8?q?=E2=9C=85=20add=20tests=20for=20default=20t?= =?UTF-8?q?ags=20when=20env,=20version,=20service=20are=20not=20defined?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- packages/core/test/configuration.spec.ts | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/packages/core/test/configuration.spec.ts b/packages/core/test/configuration.spec.ts index 7702f40efb..b6f62836ee 100644 --- a/packages/core/test/configuration.spec.ts +++ b/packages/core/test/configuration.spec.ts @@ -81,8 +81,20 @@ describe('configuration', () => { }) }) - describe('env, version and service', () => { - it('should set the env, version and services tags in the logs and rum endpoints', () => { + describe('sdk_version, env, version and service', () => { + it('should not modify the logs and rum endpoints tags when not defined', () => { + const configuration = buildConfiguration({ clientToken }, prodEnv) + expect(configuration.rumEndpoint).toContain(`&ddtags=sdk_version:${prodEnv.sdkVersion}`) + + expect(configuration.rumEndpoint).not.toContain(',env:') + expect(configuration.rumEndpoint).not.toContain(',service:') + expect(configuration.rumEndpoint).not.toContain(',version:') + expect(configuration.logsEndpoint).not.toContain(',env:') + expect(configuration.logsEndpoint).not.toContain(',service:') + expect(configuration.logsEndpoint).not.toContain(',version:') + }) + + it('should be set as tags in the logs and rum endpoints', () => { const configuration = buildConfiguration({ clientToken, env: 'foo', service: 'bar', version: 'baz' }, prodEnv) expect(configuration.rumEndpoint).toContain( `&ddtags=sdk_version:${prodEnv.sdkVersion},env:foo,service:bar,version:baz`