From ca5e7202b9aa12129cf41982e8597c6f6548f563 Mon Sep 17 00:00:00 2001 From: Alex Khomenko Date: Fri, 31 Oct 2025 09:40:33 +0200 Subject: [PATCH] Provisioning: Update onPrem check to use stacks (#113262) --- .../provisioning/GettingStarted/FeaturesList.tsx | 6 ++---- .../GettingStarted/GettingStartedPage.tsx | 8 +++----- .../app/features/provisioning/utils/isOnPrem.ts | 15 +++++++++++++++ 3 files changed, 20 insertions(+), 9 deletions(-) create mode 100644 public/app/features/provisioning/utils/isOnPrem.ts diff --git a/public/app/features/provisioning/GettingStarted/FeaturesList.tsx b/public/app/features/provisioning/GettingStarted/FeaturesList.tsx index 0b932e725df..c3d8e1b7906 100644 --- a/public/app/features/provisioning/GettingStarted/FeaturesList.tsx +++ b/public/app/features/provisioning/GettingStarted/FeaturesList.tsx @@ -1,12 +1,11 @@ import { css } from '@emotion/css'; import { FeatureState, GrafanaTheme2 } from '@grafana/data'; -import { GrafanaEdition } from '@grafana/data/internal'; import { Trans } from '@grafana/i18n'; -import { config } from '@grafana/runtime'; import { Box, FeatureBadge, LinkButton, Stack, Text, TextLink, useStyles2 } from '@grafana/ui'; import { RepositoryTypeCards } from '../Shared/RepositoryTypeCards'; +import { isOnPrem } from '../utils/isOnPrem'; interface FeaturesListProps { hasRequiredFeatures: boolean; @@ -15,7 +14,6 @@ interface FeaturesListProps { export const FeaturesList = ({ hasRequiredFeatures, onSetupFeatures }: FeaturesListProps) => { const styles = useStyles2(getStyles); - const isOnPrem = [GrafanaEdition.OpenSource, GrafanaEdition.Enterprise].includes(config.buildInfo.edition); return ( @@ -23,7 +21,7 @@ export const FeaturesList = ({ hasRequiredFeatures, onSetupFeatures }: FeaturesL Get started with Git Sync {' '} - {!isOnPrem && } + {!isOnPrem() && }
  • diff --git a/public/app/features/provisioning/GettingStarted/GettingStartedPage.tsx b/public/app/features/provisioning/GettingStarted/GettingStartedPage.tsx index 0a9d6822780..adaf68a80ee 100644 --- a/public/app/features/provisioning/GettingStarted/GettingStartedPage.tsx +++ b/public/app/features/provisioning/GettingStarted/GettingStartedPage.tsx @@ -1,10 +1,10 @@ -import { GrafanaEdition } from '@grafana/data/internal'; import { Trans, t } from '@grafana/i18n'; -import { config } from '@grafana/runtime'; import { Alert, Stack, Text, TextLink } from '@grafana/ui'; import { Repository } from 'app/api/clients/provisioning/v0alpha1'; import { Page } from 'app/core/components/Page/Page'; +import { isOnPrem } from '../utils/isOnPrem'; + import GettingStarted from './GettingStarted'; interface Props { @@ -34,9 +34,7 @@ export default function GettingStartedPage({ items }: Props) { } function Banner() { - const isOnPrem = [GrafanaEdition.OpenSource, GrafanaEdition.Enterprise].includes(config.buildInfo.edition); - - if (!isOnPrem) { + if (!isOnPrem()) { return null; } diff --git a/public/app/features/provisioning/utils/isOnPrem.ts b/public/app/features/provisioning/utils/isOnPrem.ts new file mode 100644 index 00000000000..1771bb1a677 --- /dev/null +++ b/public/app/features/provisioning/utils/isOnPrem.ts @@ -0,0 +1,15 @@ +import { config } from '@grafana/runtime'; + +/** + * Checks if the current Grafana instance is running on-prem + * Uses namespace to determine deployment type: + * - Cloud instances use namespace format: `stacks-{stackId}` + * - On-prem instances use org-based namespace format: `org-{orgId}` or similar + * + * @returns true if the instance is on-premise, false if it's cloud + */ +export function isOnPrem() { + const namespace = config.namespace; + + return !namespace.startsWith('stacks-'); +}