FeatureToggles: Allow changing prod env safe feature toggles via URL (#84034)

This commit is contained in:
Adela Almasan 2024-03-07 08:49:37 -06:00 committed by GitHub
parent 0236053f70
commit 429ef9559c
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -203,10 +203,7 @@ export class GrafanaBootConfig implements GrafanaConfig {
systemDateFormats.update(this.dateFormats);
}
if (this.buildInfo.env === 'development') {
overrideFeatureTogglesFromUrl(this);
}
overrideFeatureTogglesFromUrl(this);
overrideFeatureTogglesFromLocalStorage(this);
if (this.featureToggles.disableAngular) {
@ -243,11 +240,28 @@ function overrideFeatureTogglesFromUrl(config: GrafanaBootConfig) {
return;
}
const isLocalDevEnv = config.buildInfo.env === 'development';
const prodUrlAllowedFeatureFlags = new Set([
'autoMigrateOldPanels',
'autoMigrateGraphPanel',
'autoMigrateTablePanel',
'autoMigratePiechartPanel',
'autoMigrateWorldmapPanel',
'autoMigrateStatPanel',
'disableAngular',
]);
const params = new URLSearchParams(window.location.search);
params.forEach((value, key) => {
if (key.startsWith('__feature.')) {
const featureToggles = config.featureToggles as Record<string, boolean>;
const featureName = key.substring(10);
if (!isLocalDevEnv && !prodUrlAllowedFeatureFlags.has(featureName)) {
return;
}
const toggleState = value === 'true' || value === ''; // browser rewrites true as ''
if (toggleState !== featureToggles[key]) {
featureToggles[featureName] = toggleState;