From 24e46f3ae72a110ab6dc1d5daaf14e1fb69304d7 Mon Sep 17 00:00:00 2001 From: "Grot (@grafanabot)" <43478413+grafanabot@users.noreply.github.com> Date: Mon, 6 Mar 2023 16:58:48 +0200 Subject: [PATCH] [v9.4.x] Alerting: Disable "Declare Incident" button for open-source editions (#64234) Co-authored-by: Gilles De Mey --- .../components/rules/RuleDetailsActionButtons.tsx | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/public/app/features/alerting/unified/components/rules/RuleDetailsActionButtons.tsx b/public/app/features/alerting/unified/components/rules/RuleDetailsActionButtons.tsx index ae529af565e..f66b3eab7b7 100644 --- a/public/app/features/alerting/unified/components/rules/RuleDetailsActionButtons.tsx +++ b/public/app/features/alerting/unified/components/rules/RuleDetailsActionButtons.tsx @@ -3,6 +3,7 @@ import React, { FC, Fragment, useState } from 'react'; import { useLocation } from 'react-router-dom'; import { GrafanaTheme2, textUtil, urlUtil } from '@grafana/data'; +import { GrafanaEdition } from '@grafana/data/src/types/config'; import { config } from '@grafana/runtime'; import { Button, ClipboardButton, ConfirmModal, HorizontalGroup, LinkButton, useStyles2 } from '@grafana/ui'; import { useAppNotification } from 'app/core/copy/appNotification'; @@ -177,7 +178,7 @@ export const RuleDetailsActionButtons: FC = ({ rule, rulesSource, isViewM ); } - if (isFiringRule) { + if (isFiringRule && shouldShowDeclareIncidentButton()) { buttons.push( @@ -266,6 +267,18 @@ export const RuleDetailsActionButtons: FC = ({ rule, rulesSource, isViewM return null; }; +/** + * Since Incident isn't available as an open-source product we shouldn't show it for Open-Source licenced editions of Grafana. + * We should show it in development mode + */ +function shouldShowDeclareIncidentButton() { + const buildInfo = config.buildInfo; + const isOpenSourceEdition = buildInfo.edition === GrafanaEdition.OpenSource; + const isDevelopment = buildInfo.env === 'development'; + + return !isOpenSourceEdition || isDevelopment; +} + /** * We don't want to show the silence button if either * 1. the user has no permissions to create silences