mirror of
https://github.com/grafana/grafana.git
synced 2025-07-31 10:42:14 +08:00
53 lines
1.6 KiB
TypeScript
53 lines
1.6 KiB
TypeScript
import { FeatureToggles } from '@grafana/data';
|
|
import { config } from '@grafana/runtime';
|
|
|
|
export const requiredFeatureToggles: Array<keyof FeatureToggles> = [
|
|
'provisioning',
|
|
'kubernetesDashboards',
|
|
'kubernetesClientDashboardsFolders',
|
|
];
|
|
|
|
/**
|
|
* Checks if all required feature toggles are enabled
|
|
* @returns true if all required feature toggles are enabled
|
|
*/
|
|
export const checkRequiredFeatures = (): boolean => {
|
|
const featureToggles = config.featureToggles || {};
|
|
return requiredFeatureToggles.every((toggle) => featureToggles[toggle]);
|
|
};
|
|
|
|
/**
|
|
* Checks if public access is configured
|
|
* @returns true if the app URL is configured for external access
|
|
*/
|
|
export const checkPublicAccess = (): boolean => {
|
|
return Boolean(config.appUrl && config.appUrl.indexOf('://localhost') < 0);
|
|
};
|
|
|
|
/**
|
|
* Checks if image renderer is configured
|
|
* @returns true if the image renderer is available
|
|
*/
|
|
export const checkImageRenderer = (): boolean => {
|
|
return Boolean(config.rendererAvailable);
|
|
};
|
|
|
|
/**
|
|
* Returns the configuration status of all features
|
|
* @returns Object containing the status of required and optional features
|
|
*/
|
|
export const getConfigurationStatus = () => {
|
|
const hasRequiredFeatures = checkRequiredFeatures();
|
|
const hasPublicAccess = checkPublicAccess();
|
|
const hasImageRenderer = checkImageRenderer();
|
|
|
|
return {
|
|
hasRequiredFeatures,
|
|
hasPublicAccess,
|
|
hasImageRenderer,
|
|
missingOnlyOptionalFeatures: hasRequiredFeatures && (!hasPublicAccess || !hasImageRenderer),
|
|
missingRequiredFeatures: !hasRequiredFeatures,
|
|
everythingConfigured: hasRequiredFeatures && hasPublicAccess && hasImageRenderer,
|
|
};
|
|
};
|