From 78ba72d86104d9740c2145f3a240a886fe301407 Mon Sep 17 00:00:00 2001 From: David Leek Date: Fri, 30 Jun 2023 11:27:54 +0200 Subject: [PATCH] feat: remove experimental flag for telemetry (#4123) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ## About the changes This removes the experimental feature flag that defaulted to turn off telemetry collection --- .../instance-privacy/InstancePrivacy.tsx | 36 ++++------- frontend/src/interfaces/uiConfig.ts | 1 - .../__snapshots__/create-config.test.ts.snap | 2 - src/lib/routes/admin-api/telemetry.ts | 5 +- src/lib/services/version-service.test.ts | 61 ------------------- src/lib/services/version-service.ts | 18 +----- src/lib/types/experimental.ts | 5 -- 7 files changed, 14 insertions(+), 114 deletions(-) diff --git a/frontend/src/component/admin/instance-privacy/InstancePrivacy.tsx b/frontend/src/component/admin/instance-privacy/InstancePrivacy.tsx index e78b929ba4..618a4eadc4 100644 --- a/frontend/src/component/admin/instance-privacy/InstancePrivacy.tsx +++ b/frontend/src/component/admin/instance-privacy/InstancePrivacy.tsx @@ -4,7 +4,6 @@ import { Box, styled } from '@mui/material'; import useUiConfig from 'hooks/api/getters/useUiConfig/useUiConfig'; import { InstancePrivacySection } from './InstancePrivacySection'; import { useTelemetry } from 'hooks/api/getters/useTelemetry/useTelemetry'; -import { ConditionallyRender } from 'component/common/ConditionallyRender/ConditionallyRender'; interface IFeatureActivenessManagementInfo { enabled: IActivenessManagementInfo; @@ -85,7 +84,7 @@ const featureCollectionActivenessManagementTexts: IFeatureActivenessManagementIn export const InstancePrivacy = () => { const { settings } = useTelemetry(); - const { uiConfig, loading } = useUiConfig(); + const { loading } = useUiConfig(); if (loading) { return null; @@ -116,30 +115,17 @@ export const InstancePrivacy = () => { changeInfoText={versionActivenessInfo.changeInfoText} variablesText={versionActivenessInfo.environmentVariables} /> - + diff --git a/frontend/src/interfaces/uiConfig.ts b/frontend/src/interfaces/uiConfig.ts index a70419d12a..1380393d28 100644 --- a/frontend/src/interfaces/uiConfig.ts +++ b/frontend/src/interfaces/uiConfig.ts @@ -54,7 +54,6 @@ export interface IFlags { advancedPlayground?: boolean; customRootRoles?: boolean; strategySplittedButton?: boolean; - experimentalExtendedTelemetry?: boolean; } export interface IVersionInfo { diff --git a/src/lib/__snapshots__/create-config.test.ts.snap b/src/lib/__snapshots__/create-config.test.ts.snap index d3d82b067f..d73cc0da4c 100644 --- a/src/lib/__snapshots__/create-config.test.ts.snap +++ b/src/lib/__snapshots__/create-config.test.ts.snap @@ -77,7 +77,6 @@ exports[`should create default config 1`] = ` "disableNotifications": false, "embedProxy": true, "embedProxyFrontend": true, - "experimentalExtendedTelemetry": false, "featuresExportImport": true, "googleAuthEnabled": false, "groupRootRoles": false, @@ -111,7 +110,6 @@ exports[`should create default config 1`] = ` "disableNotifications": false, "embedProxy": true, "embedProxyFrontend": true, - "experimentalExtendedTelemetry": false, "featuresExportImport": true, "googleAuthEnabled": false, "groupRootRoles": false, diff --git a/src/lib/routes/admin-api/telemetry.ts b/src/lib/routes/admin-api/telemetry.ts index d50004c574..2925ef062a 100644 --- a/src/lib/routes/admin-api/telemetry.ts +++ b/src/lib/routes/admin-api/telemetry.ts @@ -54,10 +54,7 @@ class TelemetryController extends Controller { telemetrySettingsSchema.$id, { versionInfoCollectionEnabled: this.config.versionCheck.enable, - featureInfoCollectionEnabled: - this.config.flagResolver.isEnabled( - 'experimentalExtendedTelemetry', - ) && this.config.telemetry, + featureInfoCollectionEnabled: this.config.telemetry, }, ); } diff --git a/src/lib/services/version-service.test.ts b/src/lib/services/version-service.test.ts index 38bd230670..d27c2c060f 100644 --- a/src/lib/services/version-service.test.ts +++ b/src/lib/services/version-service.test.ts @@ -14,21 +14,6 @@ afterAll(() => { nock.enableNetConnect(); }); -const getTestFlagResolver = (enabled: boolean) => { - return { - // eslint-disable-next-line @typescript-eslint/no-unused-vars - isEnabled: () => { - return enabled; - }, - getAll: () => { - return {}; - }, - getVariant: () => { - return { name: '', enabled: false }; - }, - }; -}; - test('yields current versions', async () => { const url = `https://${randomId()}.example.com`; const stores = createStores(); @@ -49,7 +34,6 @@ test('yields current versions', async () => { const service = new VersionService(stores, { getLogger, versionCheck: { url, enable: true }, - flagResolver: getTestFlagResolver(true), telemetry: true, }); await service.checkLatestVersion(); @@ -84,7 +68,6 @@ test('supports setting enterprise version as well', async () => { getLogger, versionCheck: { url, enable: true }, enterpriseVersion, - flagResolver: getTestFlagResolver(true), telemetry: true, }); await service.checkLatestVersion(); @@ -119,7 +102,6 @@ test('if version check is not enabled should not make any calls', async () => { getLogger, versionCheck: { url, enable: false }, enterpriseVersion, - flagResolver: getTestFlagResolver(true), telemetry: true, }); await service.checkLatestVersion(); @@ -162,7 +144,6 @@ test('sets featureinfo', async () => { getLogger, versionCheck: { url, enable: true }, enterpriseVersion, - flagResolver: getTestFlagResolver(true), telemetry: true, }); await service.checkLatestVersion(); @@ -211,47 +192,6 @@ test('counts toggles', async () => { getLogger, versionCheck: { url, enable: true }, enterpriseVersion, - flagResolver: getTestFlagResolver(true), - telemetry: true, - }); - await service.checkLatestVersion(); - expect(scope.isDone()).toEqual(true); - nock.cleanAll(); -}); - -test('doesnt report featureinfo when flag off', async () => { - const url = `https://${randomId()}.example.com`; - const stores = createStores(); - const enterpriseVersion = '4.0.0'; - await stores.settingStore.insert('instanceInfo', { id: '1234abc' }); - await stores.settingStore.insert('unleash.enterprise.auth.oidc', { - enabled: true, - }); - await stores.featureToggleStore.create('project', { name: uuidv4() }); - await stores.strategyStore.createStrategy({ - name: uuidv4(), - editable: true, - }); - const latest = { - oss: '4.0.0', - enterprise: '4.0.0', - }; - - const scope = nock(url) - .post('/', (body) => body.featureInfo === undefined) - .reply(() => [ - 200, - JSON.stringify({ - latest: true, - versions: latest, - }), - ]); - - const service = new VersionService(stores, { - getLogger, - versionCheck: { url, enable: true }, - enterpriseVersion, - flagResolver: getTestFlagResolver(false), telemetry: true, }); await service.checkLatestVersion(); @@ -314,7 +254,6 @@ test('counts custom strategies', async () => { getLogger, versionCheck: { url, enable: true }, enterpriseVersion, - flagResolver: getTestFlagResolver(true), telemetry: true, }); await service.checkLatestVersion(); diff --git a/src/lib/services/version-service.ts b/src/lib/services/version-service.ts index 5423da3857..6dca45bc79 100644 --- a/src/lib/services/version-service.ts +++ b/src/lib/services/version-service.ts @@ -19,7 +19,6 @@ import { ISettingStore } from '../types/stores/settings-store'; import { hoursToMilliseconds } from 'date-fns'; import { IStrategyStore } from 'lib/types'; import { FEATURES_EXPORTED, FEATURES_IMPORTED } from '../types'; -import { IFlagResolver } from '../types'; export interface IVersionInfo { oss: string; @@ -102,8 +101,6 @@ export default class VersionService { private timer: NodeJS.Timeout; - private flagResolver: IFlagResolver; - constructor( { settingStore, @@ -137,15 +134,10 @@ export default class VersionService { getLogger, versionCheck, enterpriseVersion, - flagResolver, telemetry, }: Pick< IUnleashConfig, - | 'getLogger' - | 'versionCheck' - | 'enterpriseVersion' - | 'flagResolver' - | 'telemetry' + 'getLogger' | 'versionCheck' | 'enterpriseVersion' | 'telemetry' >, ) { this.logger = getLogger('lib/services/version-service.js'); @@ -169,7 +161,6 @@ export default class VersionService { this.telemetryEnabled = telemetry; this.versionCheckUrl = versionCheck.url; this.isLatest = true; - this.flagResolver = flagResolver; process.nextTick(() => this.setup()); } @@ -200,12 +191,7 @@ export default class VersionService { instanceId: this.instanceId, }; - if ( - this.flagResolver.isEnabled( - 'experimentalExtendedTelemetry', - ) && - this.telemetryEnabled - ) { + if (this.telemetryEnabled) { const featureInfo = await this.getFeatureUsageInfo(); versionPayload.featureInfo = featureInfo; } diff --git a/src/lib/types/experimental.ts b/src/lib/types/experimental.ts index 828f70ab1a..0fe956e3f3 100644 --- a/src/lib/types/experimental.ts +++ b/src/lib/types/experimental.ts @@ -20,7 +20,6 @@ export type IFlagKey = | 'demo' | 'googleAuthEnabled' | 'disableBulkToggle' - | 'experimentalExtendedTelemetry' | 'segmentContextFieldUsage' | 'disableNotifications' | 'advancedPlayground' @@ -94,10 +93,6 @@ const flags: IFlags = { process.env.GOOGLE_AUTH_ENABLED, false, ), - experimentalExtendedTelemetry: parseEnvVarBoolean( - process.env.UNLEASH_EXPERIMENTAL_EXTENDED_TELEMETRY, - false, - ), disableBulkToggle: parseEnvVarBoolean( process.env.DISABLE_BULK_TOGGLE, false,