mirror of
https://github.com/Unleash/unleash.git
synced 2025-07-31 13:47:02 +02:00
feat: remove experimental flag for telemetry (#4123)
<!-- Thanks for creating a PR! To make it easier for reviewers and
everyone else to understand what your changes relate to, please add some
relevant content to the headings below. Feel free to ignore or delete
sections that you don't think are relevant. Thank you! ❤️ -->
## About the changes
<!-- Describe the changes introduced. What are they and why are they
being introduced? Feel free to also add screenshots or steps to view the
changes if they're visual. -->
This removes the experimental feature flag that defaulted to turn off
telemetry collection
This commit is contained in:
parent
4a4f14f69b
commit
78ba72d861
@ -4,7 +4,6 @@ import { Box, styled } from '@mui/material';
|
|||||||
import useUiConfig from 'hooks/api/getters/useUiConfig/useUiConfig';
|
import useUiConfig from 'hooks/api/getters/useUiConfig/useUiConfig';
|
||||||
import { InstancePrivacySection } from './InstancePrivacySection';
|
import { InstancePrivacySection } from './InstancePrivacySection';
|
||||||
import { useTelemetry } from 'hooks/api/getters/useTelemetry/useTelemetry';
|
import { useTelemetry } from 'hooks/api/getters/useTelemetry/useTelemetry';
|
||||||
import { ConditionallyRender } from 'component/common/ConditionallyRender/ConditionallyRender';
|
|
||||||
|
|
||||||
interface IFeatureActivenessManagementInfo {
|
interface IFeatureActivenessManagementInfo {
|
||||||
enabled: IActivenessManagementInfo;
|
enabled: IActivenessManagementInfo;
|
||||||
@ -85,7 +84,7 @@ const featureCollectionActivenessManagementTexts: IFeatureActivenessManagementIn
|
|||||||
|
|
||||||
export const InstancePrivacy = () => {
|
export const InstancePrivacy = () => {
|
||||||
const { settings } = useTelemetry();
|
const { settings } = useTelemetry();
|
||||||
const { uiConfig, loading } = useUiConfig();
|
const { loading } = useUiConfig();
|
||||||
|
|
||||||
if (loading) {
|
if (loading) {
|
||||||
return null;
|
return null;
|
||||||
@ -116,31 +115,18 @@ export const InstancePrivacy = () => {
|
|||||||
changeInfoText={versionActivenessInfo.changeInfoText}
|
changeInfoText={versionActivenessInfo.changeInfoText}
|
||||||
variablesText={versionActivenessInfo.environmentVariables}
|
variablesText={versionActivenessInfo.environmentVariables}
|
||||||
/>
|
/>
|
||||||
<ConditionallyRender
|
|
||||||
condition={Boolean(
|
|
||||||
uiConfig.flags.experimentalExtendedTelemetry
|
|
||||||
)}
|
|
||||||
show={
|
|
||||||
<InstancePrivacySection
|
<InstancePrivacySection
|
||||||
title={featureCollectionDetails.title}
|
title={featureCollectionDetails.title}
|
||||||
infoText={featureCollectionDetails.infoText}
|
infoText={featureCollectionDetails.infoText}
|
||||||
concreteDetails={
|
concreteDetails={featureCollectionDetails.concreteDetails}
|
||||||
featureCollectionDetails.concreteDetails
|
|
||||||
}
|
|
||||||
enabled={
|
enabled={
|
||||||
settings?.featureInfoCollectionEnabled &&
|
settings?.featureInfoCollectionEnabled &&
|
||||||
settings?.versionInfoCollectionEnabled
|
settings?.versionInfoCollectionEnabled
|
||||||
}
|
}
|
||||||
changeInfoText={
|
changeInfoText={featureActivenessInfo.changeInfoText}
|
||||||
featureActivenessInfo.changeInfoText
|
variablesText={featureActivenessInfo.environmentVariables}
|
||||||
}
|
|
||||||
variablesText={
|
|
||||||
featureActivenessInfo.environmentVariables
|
|
||||||
}
|
|
||||||
dependsOnText={dependsOnFeatureCollection}
|
dependsOnText={dependsOnFeatureCollection}
|
||||||
/>
|
/>
|
||||||
}
|
|
||||||
/>
|
|
||||||
</StyledBox>
|
</StyledBox>
|
||||||
</PageContent>
|
</PageContent>
|
||||||
);
|
);
|
||||||
|
@ -54,7 +54,6 @@ export interface IFlags {
|
|||||||
advancedPlayground?: boolean;
|
advancedPlayground?: boolean;
|
||||||
customRootRoles?: boolean;
|
customRootRoles?: boolean;
|
||||||
strategySplittedButton?: boolean;
|
strategySplittedButton?: boolean;
|
||||||
experimentalExtendedTelemetry?: boolean;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface IVersionInfo {
|
export interface IVersionInfo {
|
||||||
|
@ -77,7 +77,6 @@ exports[`should create default config 1`] = `
|
|||||||
"disableNotifications": false,
|
"disableNotifications": false,
|
||||||
"embedProxy": true,
|
"embedProxy": true,
|
||||||
"embedProxyFrontend": true,
|
"embedProxyFrontend": true,
|
||||||
"experimentalExtendedTelemetry": false,
|
|
||||||
"featuresExportImport": true,
|
"featuresExportImport": true,
|
||||||
"googleAuthEnabled": false,
|
"googleAuthEnabled": false,
|
||||||
"groupRootRoles": false,
|
"groupRootRoles": false,
|
||||||
@ -111,7 +110,6 @@ exports[`should create default config 1`] = `
|
|||||||
"disableNotifications": false,
|
"disableNotifications": false,
|
||||||
"embedProxy": true,
|
"embedProxy": true,
|
||||||
"embedProxyFrontend": true,
|
"embedProxyFrontend": true,
|
||||||
"experimentalExtendedTelemetry": false,
|
|
||||||
"featuresExportImport": true,
|
"featuresExportImport": true,
|
||||||
"googleAuthEnabled": false,
|
"googleAuthEnabled": false,
|
||||||
"groupRootRoles": false,
|
"groupRootRoles": false,
|
||||||
|
@ -54,10 +54,7 @@ class TelemetryController extends Controller {
|
|||||||
telemetrySettingsSchema.$id,
|
telemetrySettingsSchema.$id,
|
||||||
{
|
{
|
||||||
versionInfoCollectionEnabled: this.config.versionCheck.enable,
|
versionInfoCollectionEnabled: this.config.versionCheck.enable,
|
||||||
featureInfoCollectionEnabled:
|
featureInfoCollectionEnabled: this.config.telemetry,
|
||||||
this.config.flagResolver.isEnabled(
|
|
||||||
'experimentalExtendedTelemetry',
|
|
||||||
) && this.config.telemetry,
|
|
||||||
},
|
},
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
@ -14,21 +14,6 @@ afterAll(() => {
|
|||||||
nock.enableNetConnect();
|
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 () => {
|
test('yields current versions', async () => {
|
||||||
const url = `https://${randomId()}.example.com`;
|
const url = `https://${randomId()}.example.com`;
|
||||||
const stores = createStores();
|
const stores = createStores();
|
||||||
@ -49,7 +34,6 @@ test('yields current versions', async () => {
|
|||||||
const service = new VersionService(stores, {
|
const service = new VersionService(stores, {
|
||||||
getLogger,
|
getLogger,
|
||||||
versionCheck: { url, enable: true },
|
versionCheck: { url, enable: true },
|
||||||
flagResolver: getTestFlagResolver(true),
|
|
||||||
telemetry: true,
|
telemetry: true,
|
||||||
});
|
});
|
||||||
await service.checkLatestVersion();
|
await service.checkLatestVersion();
|
||||||
@ -84,7 +68,6 @@ test('supports setting enterprise version as well', async () => {
|
|||||||
getLogger,
|
getLogger,
|
||||||
versionCheck: { url, enable: true },
|
versionCheck: { url, enable: true },
|
||||||
enterpriseVersion,
|
enterpriseVersion,
|
||||||
flagResolver: getTestFlagResolver(true),
|
|
||||||
telemetry: true,
|
telemetry: true,
|
||||||
});
|
});
|
||||||
await service.checkLatestVersion();
|
await service.checkLatestVersion();
|
||||||
@ -119,7 +102,6 @@ test('if version check is not enabled should not make any calls', async () => {
|
|||||||
getLogger,
|
getLogger,
|
||||||
versionCheck: { url, enable: false },
|
versionCheck: { url, enable: false },
|
||||||
enterpriseVersion,
|
enterpriseVersion,
|
||||||
flagResolver: getTestFlagResolver(true),
|
|
||||||
telemetry: true,
|
telemetry: true,
|
||||||
});
|
});
|
||||||
await service.checkLatestVersion();
|
await service.checkLatestVersion();
|
||||||
@ -162,7 +144,6 @@ test('sets featureinfo', async () => {
|
|||||||
getLogger,
|
getLogger,
|
||||||
versionCheck: { url, enable: true },
|
versionCheck: { url, enable: true },
|
||||||
enterpriseVersion,
|
enterpriseVersion,
|
||||||
flagResolver: getTestFlagResolver(true),
|
|
||||||
telemetry: true,
|
telemetry: true,
|
||||||
});
|
});
|
||||||
await service.checkLatestVersion();
|
await service.checkLatestVersion();
|
||||||
@ -211,47 +192,6 @@ test('counts toggles', async () => {
|
|||||||
getLogger,
|
getLogger,
|
||||||
versionCheck: { url, enable: true },
|
versionCheck: { url, enable: true },
|
||||||
enterpriseVersion,
|
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,
|
telemetry: true,
|
||||||
});
|
});
|
||||||
await service.checkLatestVersion();
|
await service.checkLatestVersion();
|
||||||
@ -314,7 +254,6 @@ test('counts custom strategies', async () => {
|
|||||||
getLogger,
|
getLogger,
|
||||||
versionCheck: { url, enable: true },
|
versionCheck: { url, enable: true },
|
||||||
enterpriseVersion,
|
enterpriseVersion,
|
||||||
flagResolver: getTestFlagResolver(true),
|
|
||||||
telemetry: true,
|
telemetry: true,
|
||||||
});
|
});
|
||||||
await service.checkLatestVersion();
|
await service.checkLatestVersion();
|
||||||
|
@ -19,7 +19,6 @@ import { ISettingStore } from '../types/stores/settings-store';
|
|||||||
import { hoursToMilliseconds } from 'date-fns';
|
import { hoursToMilliseconds } from 'date-fns';
|
||||||
import { IStrategyStore } from 'lib/types';
|
import { IStrategyStore } from 'lib/types';
|
||||||
import { FEATURES_EXPORTED, FEATURES_IMPORTED } from '../types';
|
import { FEATURES_EXPORTED, FEATURES_IMPORTED } from '../types';
|
||||||
import { IFlagResolver } from '../types';
|
|
||||||
|
|
||||||
export interface IVersionInfo {
|
export interface IVersionInfo {
|
||||||
oss: string;
|
oss: string;
|
||||||
@ -102,8 +101,6 @@ export default class VersionService {
|
|||||||
|
|
||||||
private timer: NodeJS.Timeout;
|
private timer: NodeJS.Timeout;
|
||||||
|
|
||||||
private flagResolver: IFlagResolver;
|
|
||||||
|
|
||||||
constructor(
|
constructor(
|
||||||
{
|
{
|
||||||
settingStore,
|
settingStore,
|
||||||
@ -137,15 +134,10 @@ export default class VersionService {
|
|||||||
getLogger,
|
getLogger,
|
||||||
versionCheck,
|
versionCheck,
|
||||||
enterpriseVersion,
|
enterpriseVersion,
|
||||||
flagResolver,
|
|
||||||
telemetry,
|
telemetry,
|
||||||
}: Pick<
|
}: Pick<
|
||||||
IUnleashConfig,
|
IUnleashConfig,
|
||||||
| 'getLogger'
|
'getLogger' | 'versionCheck' | 'enterpriseVersion' | 'telemetry'
|
||||||
| 'versionCheck'
|
|
||||||
| 'enterpriseVersion'
|
|
||||||
| 'flagResolver'
|
|
||||||
| 'telemetry'
|
|
||||||
>,
|
>,
|
||||||
) {
|
) {
|
||||||
this.logger = getLogger('lib/services/version-service.js');
|
this.logger = getLogger('lib/services/version-service.js');
|
||||||
@ -169,7 +161,6 @@ export default class VersionService {
|
|||||||
this.telemetryEnabled = telemetry;
|
this.telemetryEnabled = telemetry;
|
||||||
this.versionCheckUrl = versionCheck.url;
|
this.versionCheckUrl = versionCheck.url;
|
||||||
this.isLatest = true;
|
this.isLatest = true;
|
||||||
this.flagResolver = flagResolver;
|
|
||||||
process.nextTick(() => this.setup());
|
process.nextTick(() => this.setup());
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -200,12 +191,7 @@ export default class VersionService {
|
|||||||
instanceId: this.instanceId,
|
instanceId: this.instanceId,
|
||||||
};
|
};
|
||||||
|
|
||||||
if (
|
if (this.telemetryEnabled) {
|
||||||
this.flagResolver.isEnabled(
|
|
||||||
'experimentalExtendedTelemetry',
|
|
||||||
) &&
|
|
||||||
this.telemetryEnabled
|
|
||||||
) {
|
|
||||||
const featureInfo = await this.getFeatureUsageInfo();
|
const featureInfo = await this.getFeatureUsageInfo();
|
||||||
versionPayload.featureInfo = featureInfo;
|
versionPayload.featureInfo = featureInfo;
|
||||||
}
|
}
|
||||||
|
@ -20,7 +20,6 @@ export type IFlagKey =
|
|||||||
| 'demo'
|
| 'demo'
|
||||||
| 'googleAuthEnabled'
|
| 'googleAuthEnabled'
|
||||||
| 'disableBulkToggle'
|
| 'disableBulkToggle'
|
||||||
| 'experimentalExtendedTelemetry'
|
|
||||||
| 'segmentContextFieldUsage'
|
| 'segmentContextFieldUsage'
|
||||||
| 'disableNotifications'
|
| 'disableNotifications'
|
||||||
| 'advancedPlayground'
|
| 'advancedPlayground'
|
||||||
@ -94,10 +93,6 @@ const flags: IFlags = {
|
|||||||
process.env.GOOGLE_AUTH_ENABLED,
|
process.env.GOOGLE_AUTH_ENABLED,
|
||||||
false,
|
false,
|
||||||
),
|
),
|
||||||
experimentalExtendedTelemetry: parseEnvVarBoolean(
|
|
||||||
process.env.UNLEASH_EXPERIMENTAL_EXTENDED_TELEMETRY,
|
|
||||||
false,
|
|
||||||
),
|
|
||||||
disableBulkToggle: parseEnvVarBoolean(
|
disableBulkToggle: parseEnvVarBoolean(
|
||||||
process.env.DISABLE_BULK_TOGGLE,
|
process.env.DISABLE_BULK_TOGGLE,
|
||||||
false,
|
false,
|
||||||
|
Loading…
Reference in New Issue
Block a user