Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@ import {
EventActionOptions,
} from '../types';
import { hasMustacheTokens } from '../../../lib/has_mustache_tokens';
import { AlertProvidedActionVariables } from '../../../lib/action_variables';

export function getActionType(): ActionTypeModel<
PagerDutyConfig,
Expand Down Expand Up @@ -83,6 +84,14 @@ export function getActionType(): ActionTypeModel<
},
actionConnectorFields: lazy(() => import('./pagerduty_connectors')),
actionParamsFields: lazy(() => import('./pagerduty_params')),
defaultActionParams: {
dedupKey: `{{${AlertProvidedActionVariables.ruleId}}}:{{${AlertProvidedActionVariables.alertId}}}`,
eventAction: EventActionOptions.TRIGGER,
},
defaultRecoveredActionParams: {
dedupKey: `{{${AlertProvidedActionVariables.ruleId}}}:{{${AlertProvidedActionVariables.alertId}}}`,
eventAction: EventActionOptions.RESOLVE,
},
};
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ import { lazy } from 'react';
import { i18n } from '@kbn/i18n';
import { ActionTypeModel, GenericValidationResult } from '../../../../types';
import { XmattersActionParams, XmattersConfig, XmattersSecrets } from '../types';
import { AlertProvidedActionVariables } from '../../../lib/action_variables';

export function getActionType(): ActionTypeModel<
XmattersConfig,
Expand Down Expand Up @@ -45,5 +46,12 @@ export function getActionType(): ActionTypeModel<
},
actionConnectorFields: lazy(() => import('./xmatters_connectors')),
actionParamsFields: lazy(() => import('./xmatters_params')),
defaultActionParams: {
alertActionGroupName: `{{${AlertProvidedActionVariables.alertActionGroupName}}}`,
signalId: `{{${AlertProvidedActionVariables.ruleId}}}:{{${AlertProvidedActionVariables.alertId}}}`,
ruleName: `{{${AlertProvidedActionVariables.ruleName}}}`,
date: `{{${AlertProvidedActionVariables.date}}}`,
spaceId: `{{${AlertProvidedActionVariables.ruleSpaceId}}}`,
},
};
}

This file was deleted.

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,6 @@ import { actionTypeCompare } from '../../lib/action_type_compare';
import { checkActionFormActionTypeEnabled } from '../../lib/check_action_type_enabled';
import { VIEW_LICENSE_OPTIONS_LINK } from '../../../common/constants';
import { useKibana } from '../../../common/lib/kibana';
import { DefaultActionParamsGetter } from '../../lib/get_defaults_for_action_params';
import { ConnectorAddModal } from '.';
import { suspendedComponentWithProps } from '../../lib/suspended_component_with_props';
import { OmitMessageVariablesType } from '../../lib/action_variables';
Expand All @@ -61,7 +60,7 @@ export interface ActionAccordionFormProps {
setHasActionsDisabled?: (value: boolean) => void;
setHasActionsWithBrokenConnector?: (value: boolean) => void;
actionTypeRegistry: ActionTypeRegistryContract;
getDefaultActionParams?: DefaultActionParamsGetter;
recoveryActionGroup?: string;
isActionGroupDisabledForActionType?: (actionGroupId: string, actionTypeId: string) => boolean;
}

Expand All @@ -84,7 +83,7 @@ export const ActionForm = ({
setHasActionsDisabled,
setHasActionsWithBrokenConnector,
actionTypeRegistry,
getDefaultActionParams,
recoveryActionGroup,
isActionGroupDisabledForActionType,
}: ActionAccordionFormProps) => {
const {
Expand Down Expand Up @@ -361,7 +360,7 @@ export const ActionForm = ({
messageVariables={messageVariables}
actionGroups={actionGroups}
defaultActionMessage={defaultActionMessage}
defaultParams={getDefaultActionParams?.(actionItem.actionTypeId, actionItem.group)}
recoveryActionGroup={recoveryActionGroup}
isActionGroupDisabledForActionType={isActionGroupDisabledForActionType}
setActionGroupIdByIndex={setActionGroupIdByIndex}
onAddConnector={() => {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,6 @@ import { actionTypeRegistryMock } from '../../action_type_registry.mock';
import { ActionConnector, ActionType, RuleAction, GenericValidationResult } from '../../../types';
import { act } from 'react-dom/test-utils';
import { EuiFieldText } from '@elastic/eui';
import { DefaultActionParams } from '../../lib/get_defaults_for_action_params';

jest.mock('../../../common/lib/kibana');
const actionTypeRegistry = actionTypeRegistryMock.create();
Expand Down Expand Up @@ -43,6 +42,10 @@ describe('action_type_form', () => {
},
actionConnectorFields: null,
actionParamsFields: mockedActionParamsFields,
defaultActionParams: {
dedupKey: 'test',
eventAction: 'resolve',
},
});
actionTypeRegistry.get.mockReturnValue(actionType);

Expand Down Expand Up @@ -89,6 +92,10 @@ describe('action_type_form', () => {
},
actionConnectorFields: null,
actionParamsFields: mockedActionParamsFields,
defaultActionParams: {
dedupKey: 'test',
eventAction: 'resolve',
},
});
actionTypeRegistry.get.mockReturnValue(actionType);

Expand Down Expand Up @@ -134,6 +141,10 @@ describe('action_type_form', () => {
},
actionConnectorFields: null,
actionParamsFields: mockedActionParamsFields,
defaultActionParams: {
dedupKey: 'test',
eventAction: 'resolve',
},
});
actionTypeRegistry.get.mockReturnValue(actionType);

Expand Down Expand Up @@ -188,7 +199,6 @@ function getActionTypeForm(
defaultActionGroupId?: string,
connectors?: Array<ActionConnector<Record<string, unknown>, Record<string, unknown>>>,
actionTypeIndex?: Record<string, ActionType>,
defaultParams?: DefaultActionParams,
onAddConnector?: () => void,
onDeleteAction?: () => void,
onConnectorSelected?: (id: string) => void
Expand Down Expand Up @@ -259,10 +269,6 @@ function getActionTypeForm(
},
};

const defaultParamsDefault = {
dedupKey: `test`,
eventAction: 'resolve',
};
return (
<ActionTypeForm
actionConnector={actionConnector ?? actionConnectorDefault}
Expand All @@ -275,7 +281,6 @@ function getActionTypeForm(
setActionParamsProperty={jest.fn()}
index={index ?? 1}
actionTypesIndex={actionTypeIndex ?? actionTypeIndexDefault}
defaultParams={defaultParams ?? defaultParamsDefault}
actionTypeRegistry={actionTypeRegistry}
/>
);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,6 @@ import { hasSaveActionsCapability } from '../../lib/capabilities';
import { ActionAccordionFormProps, ActionGroupWithMessageVariables } from './action_form';
import { transformActionVariables } from '../../lib/action_variables';
import { useKibana } from '../../../common/lib/kibana';
import { DefaultActionParams } from '../../lib/get_defaults_for_action_params';
import { ConnectorsSelection } from './connectors_selection';

export type ActionTypeFormProps = {
Expand All @@ -56,7 +55,7 @@ export type ActionTypeFormProps = {
actionTypesIndex: ActionTypeIndex;
connectors: ActionConnector[];
actionTypeRegistry: ActionTypeRegistryContract;
defaultParams: DefaultActionParams;
recoveryActionGroup?: string;
isActionGroupDisabledForActionType?: (actionGroupId: string, actionTypeId: string) => boolean;
} & Pick<
ActionAccordionFormProps,
Expand Down Expand Up @@ -92,7 +91,7 @@ export const ActionTypeForm = ({
setActionGroupIdByIndex,
actionTypeRegistry,
isActionGroupDisabledForActionType,
defaultParams,
recoveryActionGroup,
}: ActionTypeFormProps) => {
const {
application: { capabilities },
Expand All @@ -107,26 +106,47 @@ export const ActionTypeForm = ({
errors: {},
});

const getDefaultParams = async () => {
const connectorType = await actionTypeRegistry.get(actionItem.actionTypeId);
let defaultParams;
if (actionItem.group === recoveryActionGroup) {
defaultParams = connectorType.defaultRecoveredActionParams;
}

if (!defaultParams) {
defaultParams = connectorType.defaultActionParams;
}

return defaultParams;
};

useEffect(() => {
setAvailableActionVariables(
messageVariables ? getAvailableActionVariables(messageVariables, selectedActionGroup) : []
);
if (defaultParams) {
for (const [key, paramValue] of Object.entries(defaultParams)) {
if (actionItem.params[key] === undefined || actionItem.params[key] === null) {
setActionParamsProperty(key, paramValue, index);
(async () => {
setAvailableActionVariables(
messageVariables ? getAvailableActionVariables(messageVariables, selectedActionGroup) : []
);

const defaultParams = await getDefaultParams();
if (defaultParams) {
for (const [key, paramValue] of Object.entries(defaultParams)) {
if (actionItem.params[key] === undefined || actionItem.params[key] === null) {
setActionParamsProperty(key, paramValue, index);
}
}
}
}
})();
// eslint-disable-next-line react-hooks/exhaustive-deps
}, [actionItem.group]);

useEffect(() => {
if (defaultParams && actionGroup) {
for (const [key, paramValue] of Object.entries(defaultParams)) {
setActionParamsProperty(key, paramValue, index);
(async () => {
const defaultParams = await getDefaultParams();
if (defaultParams && actionGroup) {
for (const [key, paramValue] of Object.entries(defaultParams)) {
setActionParamsProperty(key, paramValue, index);
}
}
}
})();
// eslint-disable-next-line react-hooks/exhaustive-deps
}, [actionGroup]);

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -68,7 +68,6 @@ import { SolutionFilter } from './solution_filter';
import './rule_form.scss';
import { useKibana } from '../../../common/lib/kibana';
import { recoveredActionGroupMessage } from '../../constants';
import { getDefaultsForActionParams } from '../../lib/get_defaults_for_action_params';
import { IsEnabledResult, IsDisabledResult } from '../../lib/check_rule_type_enabled';
import { RuleNotifyWhen } from './rule_notify_when';
import { checkRuleTypeEnabled } from '../../lib/check_rule_type_enabled';
Expand Down Expand Up @@ -309,15 +308,6 @@ export const RuleForm = ({

const selectedRuleType = rule?.ruleTypeId ? ruleTypeIndex?.get(rule?.ruleTypeId) : undefined;
const recoveryActionGroup = selectedRuleType?.recoveryActionGroup?.id;
const getDefaultActionParams = useCallback(
(actionTypeId: string, actionGroupId: string): Record<string, RuleActionParam> | undefined =>
getDefaultsForActionParams(
actionTypeId,
actionGroupId,
actionGroupId === recoveryActionGroup
),
[recoveryActionGroup]
);

const tagsOptions = rule.tags ? rule.tags.map((label: string) => ({ label })) : [];

Expand Down Expand Up @@ -571,7 +561,7 @@ export const RuleForm = ({
}
: { ...actionGroup, defaultActionMessage: ruleTypeModel?.defaultActionMessage }
)}
getDefaultActionParams={getDefaultActionParams}
recoveryActionGroup={recoveryActionGroup}
setActionIdByIndex={(id: string, index: number) => setActionProperty('id', id, index)}
setActionGroupIdByIndex={(group: string, index: number) =>
setActionProperty('group', group, index)
Expand Down
2 changes: 2 additions & 0 deletions x-pack/plugins/triggers_actions_ui/public/types.ts
Original file line number Diff line number Diff line change
Expand Up @@ -204,6 +204,8 @@ export interface ActionTypeModel<ActionConfig = any, ActionSecrets = any, Action
ComponentType<ActionConnectorFieldsProps>
> | null;
actionParamsFields: React.LazyExoticComponent<ComponentType<ActionParamsProps<ActionParams>>>;
defaultActionParams?: Partial<ActionParams>;
defaultRecoveredActionParams?: Partial<ActionParams>;
customConnectorSelectItem?: CustomConnectorSelectionItem;
isExperimental?: boolean;
}
Expand Down