Remove provisioned prop from Policy component
This commit is contained in:
-3
@@ -27,7 +27,6 @@ import { useAddPolicyModal, useAlertGroupsModal, useDeletePolicyModal, useEditPo
|
||||
import { Policy } from './Policy';
|
||||
import { TIMING_OPTIONS_DEFAULTS } from './timingOptions';
|
||||
import {
|
||||
isRouteProvisioned,
|
||||
useAddNotificationPolicy,
|
||||
useDeleteNotificationPolicy,
|
||||
useNotificationPolicyRoute,
|
||||
@@ -101,7 +100,6 @@ export const NotificationPoliciesList = () => {
|
||||
return;
|
||||
}, [defaultPolicy]);
|
||||
const routeProvenance = defaultPolicy?.provenance;
|
||||
const isRootRouteProvisioned = rootRoute ? isRouteProvisioned(rootRoute) : false;
|
||||
|
||||
// useAsync could also work but it's hard to wait until it's done in the tests
|
||||
// Combining with useEffect gives more predictable results because the condition is in useEffect
|
||||
@@ -247,7 +245,6 @@ export const NotificationPoliciesList = () => {
|
||||
currentRoute={defaults(rootRoute, TIMING_OPTIONS_DEFAULTS)}
|
||||
contactPointsState={contactPointsState.receivers}
|
||||
readOnly={!hasConfigurationAPI}
|
||||
provisioned={isRootRouteProvisioned}
|
||||
provenance={routeProvenance}
|
||||
alertManagerSourceName={selectedAlertmanager}
|
||||
onAddPolicy={openAddModal}
|
||||
|
||||
+12
-13
@@ -351,7 +351,6 @@ describe('Policy', () => {
|
||||
onAddPolicy={noop}
|
||||
onDeletePolicy={noop}
|
||||
onShowAlertInstances={noop}
|
||||
provisioned
|
||||
provenance={KnownProvenance.File}
|
||||
/>
|
||||
);
|
||||
@@ -378,7 +377,6 @@ describe('Policy', () => {
|
||||
onAddPolicy={noop}
|
||||
onDeletePolicy={noop}
|
||||
onShowAlertInstances={noop}
|
||||
provisioned
|
||||
provenance={KnownProvenance.ConvertedPrometheus}
|
||||
/>
|
||||
);
|
||||
@@ -477,35 +475,36 @@ describe('useCreateDropdownMenuActions', () => {
|
||||
{
|
||||
isAutoGenerated: false,
|
||||
isDefaultPolicy: true,
|
||||
provisioned: false,
|
||||
provenance: undefined,
|
||||
expectedMenu: ['edit-policy', 'export-policy'],
|
||||
},
|
||||
{
|
||||
isAutoGenerated: false,
|
||||
isDefaultPolicy: true,
|
||||
provisioned: true,
|
||||
provenance: KnownProvenance.File,
|
||||
expectedMenu: ['edit-policy', 'export-policy'],
|
||||
},
|
||||
{
|
||||
isAutoGenerated: false,
|
||||
isDefaultPolicy: false,
|
||||
provisioned: false,
|
||||
provenance: undefined,
|
||||
expectedMenu: ['edit-policy', 'delete-policy'],
|
||||
},
|
||||
{
|
||||
isAutoGenerated: false,
|
||||
isDefaultPolicy: false,
|
||||
provisioned: true,
|
||||
provenance: KnownProvenance.File,
|
||||
expectedMenu: ['edit-policy', 'delete-policy'],
|
||||
},
|
||||
{ isAutoGenerated: true, isDefaultPolicy: true, provisioned: true, expectedMenu: ['edit-policy'] },
|
||||
{ isAutoGenerated: true, isDefaultPolicy: false, provisioned: false, expectedMenu: ['edit-policy'] },
|
||||
{ isAutoGenerated: true, isDefaultPolicy: true, provisioned: false, expectedMenu: ['edit-policy'] },
|
||||
{ isAutoGenerated: true, isDefaultPolicy: false, provisioned: true, expectedMenu: ['edit-policy'] },
|
||||
{ isAutoGenerated: true, isDefaultPolicy: true, provenance: KnownProvenance.File, expectedMenu: ['edit-policy'] },
|
||||
{ isAutoGenerated: true, isDefaultPolicy: false, provenance: undefined, expectedMenu: ['edit-policy'] },
|
||||
{ isAutoGenerated: true, isDefaultPolicy: true, provenance: undefined, expectedMenu: ['edit-policy'] },
|
||||
{ isAutoGenerated: true, isDefaultPolicy: false, provenance: KnownProvenance.File, expectedMenu: ['edit-policy'] },
|
||||
];
|
||||
|
||||
testCases.forEach(({ isAutoGenerated, isDefaultPolicy, provisioned, expectedMenu }) => {
|
||||
it(`Having all the permissions returns ${expectedMenu.length} menu items for isAutoGenerated=${isAutoGenerated}, isDefaultPolicy=${isDefaultPolicy}, provisioned=${provisioned}`, () => {
|
||||
testCases.forEach(({ isAutoGenerated, isDefaultPolicy, provenance, expectedMenu }) => {
|
||||
const provisionedStatus = provenance ? 'provisioned' : 'not provisioned';
|
||||
it(`Having all the permissions returns ${expectedMenu.length} menu items for isAutoGenerated=${isAutoGenerated}, isDefaultPolicy=${isDefaultPolicy}, ${provisionedStatus}`, () => {
|
||||
useAlertmanagerAbilitiesMock.mockReturnValue([
|
||||
[true, true],
|
||||
[true, true],
|
||||
@@ -515,7 +514,7 @@ describe('useCreateDropdownMenuActions', () => {
|
||||
useCreateDropdownMenuActions(
|
||||
isAutoGenerated,
|
||||
isDefaultPolicy,
|
||||
provisioned,
|
||||
provenance,
|
||||
openDetailModal,
|
||||
currentRoute,
|
||||
toggleShowExportDrawer,
|
||||
|
||||
@@ -31,12 +31,14 @@ import {
|
||||
AlertmanagerGroup,
|
||||
MatcherOperator,
|
||||
ObjectMatcher,
|
||||
ROUTES_META_SYMBOL,
|
||||
Receiver,
|
||||
RouteWithID,
|
||||
} from 'app/plugins/datasource/alertmanager/types';
|
||||
|
||||
import { AlertmanagerAction, useAlertmanagerAbilities, useAlertmanagerAbility } from '../../hooks/useAbilities';
|
||||
import { getAmMatcherFormatter } from '../../utils/alertmanager';
|
||||
import { isProvisionedResource } from '../../utils/k8s/utils';
|
||||
import { MatcherFormatter, normalizeMatchers } from '../../utils/matchers';
|
||||
import { createContactPointLink, createContactPointSearchLink, createMuteTimingLink } from '../../utils/misc';
|
||||
import { routeAdapter } from '../../utils/routeAdapter';
|
||||
@@ -60,7 +62,6 @@ interface PolicyComponentProps {
|
||||
receivers?: Receiver[];
|
||||
contactPointsState?: ReceiversState;
|
||||
readOnly?: boolean;
|
||||
provisioned?: boolean;
|
||||
provenance?: string;
|
||||
inheritedProperties?: InheritableProperties;
|
||||
routesMatchingFilters?: RoutesMatchingFilters;
|
||||
@@ -89,7 +90,6 @@ const Policy = (props: PolicyComponentProps) => {
|
||||
receivers = [],
|
||||
contactPointsState,
|
||||
readOnly = false,
|
||||
provisioned = false,
|
||||
provenance,
|
||||
alertManagerSourceName,
|
||||
currentRoute,
|
||||
@@ -109,6 +109,9 @@ const Policy = (props: PolicyComponentProps) => {
|
||||
|
||||
const styles = useStyles2(getStyles);
|
||||
|
||||
// Compute provisioned status from provenance
|
||||
const provisioned = isProvisionedResource(provenance);
|
||||
|
||||
const contactPoint = currentRoute.receiver;
|
||||
const continueMatching = currentRoute.continue ?? false;
|
||||
|
||||
@@ -183,7 +186,7 @@ const Policy = (props: PolicyComponentProps) => {
|
||||
const dropdownMenuActions: JSX.Element[] = useCreateDropdownMenuActions(
|
||||
isAutoGenerated,
|
||||
isDefaultPolicy,
|
||||
provisioned,
|
||||
provenance,
|
||||
onEditPolicy,
|
||||
currentRoute,
|
||||
toggleShowExportDrawer,
|
||||
@@ -361,6 +364,9 @@ const Policy = (props: PolicyComponentProps) => {
|
||||
then the child policy should not be editable either */
|
||||
const isThisChildReadOnly = readOnly || provisioned || isAutoGenerated;
|
||||
|
||||
// Extract provenance from child route (can be in metadata symbol or top-level)
|
||||
const childProvenance = child[ROUTES_META_SYMBOL]?.provenance ?? child.provenance;
|
||||
|
||||
return (
|
||||
<Policy
|
||||
key={child.id}
|
||||
@@ -377,7 +383,7 @@ const Policy = (props: PolicyComponentProps) => {
|
||||
routesMatchingFilters={routesMatchingFilters}
|
||||
matchingInstancesPreview={matchingInstancesPreview}
|
||||
isAutoGenerated={isThisChildAutoGenerated}
|
||||
provisioned={provisioned}
|
||||
provenance={childProvenance}
|
||||
/>
|
||||
);
|
||||
})}
|
||||
@@ -542,7 +548,7 @@ function MetadataRow({
|
||||
export const useCreateDropdownMenuActions = (
|
||||
isAutoGenerated: boolean,
|
||||
isDefaultPolicy: boolean,
|
||||
provisioned: boolean,
|
||||
provenance: string | undefined,
|
||||
onEditPolicy: (route: RouteWithID, isDefault?: boolean, readOnly?: boolean) => void,
|
||||
currentRoute: RouteWithID,
|
||||
toggleShowExportDrawer: () => void,
|
||||
@@ -558,6 +564,9 @@ export const useCreateDropdownMenuActions = (
|
||||
AlertmanagerAction.ExportNotificationPolicies,
|
||||
]);
|
||||
|
||||
// Compute provisioned status from provenance
|
||||
const provisioned = isProvisionedResource(provenance);
|
||||
|
||||
const dropdownMenuActions = [];
|
||||
const showExportAction = exportPoliciesAllowed && exportPoliciesSupported && isDefaultPolicy && !isAutoGenerated;
|
||||
const showEditAction = updatePoliciesSupported && updatePoliciesAllowed;
|
||||
|
||||
Reference in New Issue
Block a user