kibana/x-pack/plugins/actions/server/action_type_registry.ts

184 lines
6.3 KiB
TypeScript
Raw Normal View History

Introduce basic alerting and actions plugin (#37042) * Create actions plugin (#35679) * Basic alerting plugin with actions * Remove relative imports * Code cleanup * Split service into 3 parts, change connector structure * Ability to disable plugin, ability to get actions * Add slack connector * Add email connector * Ability to validate params and connector options * Remove connectorOptionsSecrets for now * Fix plugin config validation * Add tests for slack connector * Default connectors register on plugin init, console renamed to log, slack to message_slack * Add remaining API endpoints for action CRUD * Add list connectors API * Change actions CRUD APIs to be closer with saved objects structure * WIP * Fix broken tests * Add encrypted attribute support * Add params and connectorOptions for email * WIP * Remove action's ability to have custom ids * Remove ts-ignore * Fix broken test * Remove default connectors from this branch * Fix API integration tests to use fixture connector * Rename connector terminology to action type * Rename actionTypeOptions to actionTypeConfig * Code cleanup * Fix broken tests * Rename alerting plugin to actions * Some code cleanup and add API unit tests * Change signature of action type service execute function * Add some plugin api integration tests * Fix type check failure * Code cleanup * Create an actions client instead of an action service * Apply Bill's PR feedback * Fix broken test * Find function to have destructured params * Add tests to ensure encrypted attributes are not returned * Fix broken test * Add tests for validation * Ensure actions can be updated without re-passing the config * Remove dead code * Test cleanup * Fix eslint issue * Apply Peter's PR feedback * Code cleanup and fix broken tests * Apply Brandon's PR feedback * Add namespace support * Fix broken test * Pass services to action executors (#37194) * Pass services to action executors * Fix tests * Apply PR feedback * Apply PR feedback pt2 * Cleanup actions plugin (#37250) * Cleanup actions, move code from alerting plugin PR * Rename service terminology to registry * Use static encryption key for encrypted attributes plugin inside of tests * Empty data after create test is done running * Fix type checks * Fix inconsistent naming * add server log action for alerting (#37530) adds the first "builtin" alertType for performing a `server.log()` * Create alerting plugin (#37043) * WIP * Rename fire function and remove @ts-ignore in all places * Change naming in alerting service * Remove alert instance class for now, support interval configuration * Cleanup TS * Split alerting between registry and client * Use saved object alongside task manager instance * Add remaining alerting APIs * Change create structure * Rename some variables, change actionGroups structure * Use handlebars for templating strings at fire time * Fix params given to alert type execute function * Use alert instance class * Alert instances support meta attributes * Move alert instances deserialization * Change interval to be ms * Rename actions es archive * Fix tests to use encrypted esArchive for action record * Add create alert test to demo end to end flow * Fix type check issue * Alerts to use references to action objects * Only update task manager tasks after saved objects are fully updated * Use scope in task manager * Fix type check * Use task manager to execute actions * Convert ids into references and back * Apply PR feedback * Fix broken test * Fix some bugs * Fix test errors * Alert interval to be previous runAt + interval instead of now + interval * Add range support * Remove extra line * Cleanup * Add alert_instance.test.ts * Add alert_type_registry.test.ts * Move tests around * Create generic task manager mock * Add note about saved objects client mock * Create alert_type_registry.mock.ts * Add alerts_client.test.ts * Add create_alert_instance_factory.test.ts * Add create_fire_handler.test.ts * WIP * Fix get_create_task_runner_function.test.ts and make test pass * Make get_create_task_runner_function.test.ts 100% coverage * Add unit tests for routes * Move files around * Created transform_action_params.ts * Add get_next_run_at.ts * Add comment explaining why we copy nextRunAt * Re-use state within alert instance * Finalize code coverage in unit tests * Create base api integration tests * Add a test that ensures end to end functionality of an alert * Fix ui capabilities test * Fix broken plugin api integration test * Fix jest tests with new saved objects client * Fix broken integration tests * Change api integration test fixture to make more sense, add functions for future tests * Move alerts integration testing into own file, prep to add more tests * Add tests to ensure failed task instances get retried * Add get_create_task_runner_function.test.ts for actions, create encrypted saved objects mock * Add action validation tests * Ensure action type validation occurs on update * Test 400 on unregistered alert types * Ensure alertTypeId can't be updated * Add validation test for alert create / update * Fix broken checks / tests * Skip failing test for now * Cleanup jest tests * Ensure action objects can be updated while keeping encrypted attributes readable * Remove partial update sopport, remove ability to change actionTypeId, require config * Ensure actionTypeConfig is validated on create and update * Add alertTypeParams validation support * Fix failing tests * Ensure alert cleanup errors don't replace the original error * Pass callCluster as a service to alerts and actions * Only pass log to alerts client * Pass savedObjectsClient as a service to alerting and actions * Fix failing tests * Remove range support, provide when current and previous task got scheduled * Ensure Joi validation happens before every execute * Remove skipped tests, to be done in future PR * Apply self feedback pt1 * Apply self feedback pt2 * Fix broken tests * Apply PR feedback * PR feedback pt1 * Apply security team PR feedback * PR feedback pt1 * PR feedback pt2 * PR feedback pt3 * Fix broken tests * Fix callCluster to have signature * Revert f11a6aeb06c65e5ab54bf3cc36694845c812b6a7 * PR feedback pt4 * Remove __jest__ folders * PR feedback pt5 * Fix Joi from leaking secrets * Fire instance actions in parallel instead of series * Fix failing jest tests * Accept core api changes * Fix saved objects client mock * PR feedback pt1 * Fix eslint issues * Throw error when alert instance already fired (#39251) * Throw error when alert instance already fired * shouldFire doesn't need its own boolean value * Actions & alerting getting started user guides (#39093) * Initial user guides * Cleanup * Typos, example changes * Switch to tables, use ordered list for usage * Start docs around alert instances and templating * Documentation changes * Some adjustments * Apply PR feedback * Apply suggestions from code review Co-Authored-By: gchaps <33642766+gchaps@users.noreply.github.com> * PR feedback pt2 * Provide better examples for alert types * Apply PR feedback * Update README locations
2019-06-21 01:37:17 +02:00
/*
* Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
* or more contributor license agreements. Licensed under the Elastic License;
* you may not use this file except in compliance with the Elastic License.
*/
2020-11-02 13:18:00 +01:00
import Boom from '@hapi/boom';
Introduce basic alerting and actions plugin (#37042) * Create actions plugin (#35679) * Basic alerting plugin with actions * Remove relative imports * Code cleanup * Split service into 3 parts, change connector structure * Ability to disable plugin, ability to get actions * Add slack connector * Add email connector * Ability to validate params and connector options * Remove connectorOptionsSecrets for now * Fix plugin config validation * Add tests for slack connector * Default connectors register on plugin init, console renamed to log, slack to message_slack * Add remaining API endpoints for action CRUD * Add list connectors API * Change actions CRUD APIs to be closer with saved objects structure * WIP * Fix broken tests * Add encrypted attribute support * Add params and connectorOptions for email * WIP * Remove action's ability to have custom ids * Remove ts-ignore * Fix broken test * Remove default connectors from this branch * Fix API integration tests to use fixture connector * Rename connector terminology to action type * Rename actionTypeOptions to actionTypeConfig * Code cleanup * Fix broken tests * Rename alerting plugin to actions * Some code cleanup and add API unit tests * Change signature of action type service execute function * Add some plugin api integration tests * Fix type check failure * Code cleanup * Create an actions client instead of an action service * Apply Bill's PR feedback * Fix broken test * Find function to have destructured params * Add tests to ensure encrypted attributes are not returned * Fix broken test * Add tests for validation * Ensure actions can be updated without re-passing the config * Remove dead code * Test cleanup * Fix eslint issue * Apply Peter's PR feedback * Code cleanup and fix broken tests * Apply Brandon's PR feedback * Add namespace support * Fix broken test * Pass services to action executors (#37194) * Pass services to action executors * Fix tests * Apply PR feedback * Apply PR feedback pt2 * Cleanup actions plugin (#37250) * Cleanup actions, move code from alerting plugin PR * Rename service terminology to registry * Use static encryption key for encrypted attributes plugin inside of tests * Empty data after create test is done running * Fix type checks * Fix inconsistent naming * add server log action for alerting (#37530) adds the first "builtin" alertType for performing a `server.log()` * Create alerting plugin (#37043) * WIP * Rename fire function and remove @ts-ignore in all places * Change naming in alerting service * Remove alert instance class for now, support interval configuration * Cleanup TS * Split alerting between registry and client * Use saved object alongside task manager instance * Add remaining alerting APIs * Change create structure * Rename some variables, change actionGroups structure * Use handlebars for templating strings at fire time * Fix params given to alert type execute function * Use alert instance class * Alert instances support meta attributes * Move alert instances deserialization * Change interval to be ms * Rename actions es archive * Fix tests to use encrypted esArchive for action record * Add create alert test to demo end to end flow * Fix type check issue * Alerts to use references to action objects * Only update task manager tasks after saved objects are fully updated * Use scope in task manager * Fix type check * Use task manager to execute actions * Convert ids into references and back * Apply PR feedback * Fix broken test * Fix some bugs * Fix test errors * Alert interval to be previous runAt + interval instead of now + interval * Add range support * Remove extra line * Cleanup * Add alert_instance.test.ts * Add alert_type_registry.test.ts * Move tests around * Create generic task manager mock * Add note about saved objects client mock * Create alert_type_registry.mock.ts * Add alerts_client.test.ts * Add create_alert_instance_factory.test.ts * Add create_fire_handler.test.ts * WIP * Fix get_create_task_runner_function.test.ts and make test pass * Make get_create_task_runner_function.test.ts 100% coverage * Add unit tests for routes * Move files around * Created transform_action_params.ts * Add get_next_run_at.ts * Add comment explaining why we copy nextRunAt * Re-use state within alert instance * Finalize code coverage in unit tests * Create base api integration tests * Add a test that ensures end to end functionality of an alert * Fix ui capabilities test * Fix broken plugin api integration test * Fix jest tests with new saved objects client * Fix broken integration tests * Change api integration test fixture to make more sense, add functions for future tests * Move alerts integration testing into own file, prep to add more tests * Add tests to ensure failed task instances get retried * Add get_create_task_runner_function.test.ts for actions, create encrypted saved objects mock * Add action validation tests * Ensure action type validation occurs on update * Test 400 on unregistered alert types * Ensure alertTypeId can't be updated * Add validation test for alert create / update * Fix broken checks / tests * Skip failing test for now * Cleanup jest tests * Ensure action objects can be updated while keeping encrypted attributes readable * Remove partial update sopport, remove ability to change actionTypeId, require config * Ensure actionTypeConfig is validated on create and update * Add alertTypeParams validation support * Fix failing tests * Ensure alert cleanup errors don't replace the original error * Pass callCluster as a service to alerts and actions * Only pass log to alerts client * Pass savedObjectsClient as a service to alerting and actions * Fix failing tests * Remove range support, provide when current and previous task got scheduled * Ensure Joi validation happens before every execute * Remove skipped tests, to be done in future PR * Apply self feedback pt1 * Apply self feedback pt2 * Fix broken tests * Apply PR feedback * PR feedback pt1 * Apply security team PR feedback * PR feedback pt1 * PR feedback pt2 * PR feedback pt3 * Fix broken tests * Fix callCluster to have signature * Revert f11a6aeb06c65e5ab54bf3cc36694845c812b6a7 * PR feedback pt4 * Remove __jest__ folders * PR feedback pt5 * Fix Joi from leaking secrets * Fire instance actions in parallel instead of series * Fix failing jest tests * Accept core api changes * Fix saved objects client mock * PR feedback pt1 * Fix eslint issues * Throw error when alert instance already fired (#39251) * Throw error when alert instance already fired * shouldFire doesn't need its own boolean value * Actions & alerting getting started user guides (#39093) * Initial user guides * Cleanup * Typos, example changes * Switch to tables, use ordered list for usage * Start docs around alert instances and templating * Documentation changes * Some adjustments * Apply PR feedback * Apply suggestions from code review Co-Authored-By: gchaps <33642766+gchaps@users.noreply.github.com> * PR feedback pt2 * Provide better examples for alert types * Apply PR feedback * Update README locations
2019-06-21 01:37:17 +02:00
import { i18n } from '@kbn/i18n';
import { RunContext, TaskManagerSetupContract } from '../../task_manager/server';
import { ActionType as CommonActionType } from '../common';
import { ActionsConfigurationUtilities } from './actions_config';
import { LicensingPluginSetup } from '../../licensing/server';
import {
ExecutorError,
getActionTypeFeatureUsageName,
TaskRunnerFactory,
ILicenseState,
} from './lib';
import {
ActionType,
PreConfiguredAction,
ActionTypeConfig,
ActionTypeSecrets,
ActionTypeParams,
} from './types';
License checks for actions plugin (#59070) * Define minimum license required for each action type (#58668) * Add minimum required license * Require at least gold license as a minimum license required on third party action types * Use strings for license references * Ensure license type is valid * Fix some tests * Add servicenow to gold * Add tests * Set license requirements on other built in action types * Use jest.Mocked<ActionType> instead * Change servicenow to platinum Co-authored-by: Elastic Machine <elasticmachine@users.noreply.github.com> * Make actions config mock and license state mock use factory pattern and jest mocks (#59370) * Add license checks to action HTTP APIs (#59153) * Initial work * Handle errors in update action API * Add unit tests for APIs * Make action executor throw when action type isn't enabled * Add test suite for basic license * Fix ESLint errors * Fix failing tests * Attempt 1 to fix CI * ESLint fixes * Create sendResponse function on ActionTypeDisabledError * Make disabled action types by config return 403 * Remove switch case * Fix ESLint * Add license checks within alerting / actions framework (#59699) * Initial work * Handle errors in update action API * Add unit tests for APIs * Verify action type before scheduling action task * Make actions plugin.execute throw error if action type is disabled * Bug fixes * Make action executor throw when action type isn't enabled * Add test suite for basic license * Fix ESLint errors * Stop action task from re-running when license check fails * Fix failing tests * Attempt 1 to fix CI * ESLint fixes * Create sendResponse function on ActionTypeDisabledError * Make disabled action types by config return 403 * Remove switch case * Fix ESLint * Fix confusing assertion * Add comment explaining double mock * Log warning when alert action isn't scheduled * Disable action types in UI when license doesn't support it (#59819) * Initial work * Handle errors in update action API * Add unit tests for APIs * Verify action type before scheduling action task * Make actions plugin.execute throw error if action type is disabled * Bug fixes * Make action executor throw when action type isn't enabled * Add test suite for basic license * Fix ESLint errors * Stop action task from re-running when license check fails * Fix failing tests * Attempt 1 to fix CI * ESLint fixes * Return enabledInConfig and enabledInLicense from actions get types API * Disable cards that have invalid license in create connector flyout * Create sendResponse function on ActionTypeDisabledError * Make disabled action types by config return 403 * Remove switch case * Fix ESLint * Disable when creating alert action * Return minimumLicenseRequired in /types API * Disable row in connectors when action type is disabled * Fix failing jest test * Some refactoring * Card in edit alert flyout * Sort action types by name * Add tooltips to create connector action type selector * Add tooltips to alert flyout action type selector * Add get more actions link in alert flyout * Add callout when creating a connector * Typos * remove float right and use flexgroup * replace pixels with eui variables * turn on sass lint for triggers_actions_ui dir * trying to add padding around cards * Add callout in edit alert screen when some actions are disabled * improve card selection for Add Connector flyout * Fix cards for create connector * Add tests * ESLint issue * Cleanup * Cleanup pt2 * Fix type check errors * moving to 3-columns cards for connector selection * Change re-enable to enable terminology * Revert "Change re-enable to enable terminology" This reverts commit b497dfd6b6bc88db862ad97826e8d03b094c8ed0. * Add re-enable comment * Remove unecessary fragment * Add type to actionTypeNodes * Fix EuiLink to not have opacity of 0.7 when not hovered * design cleanup in progress * updating classNames * using EuiIconTip * Remove label on icon tip * Fix failing jest test Co-authored-by: Andrea Del Rio <delrio.andre@gmail.com> * Add index to .index action type test * PR feedback * Add isErrorThatHandlesItsOwnResponse Co-authored-by: Elastic Machine <elasticmachine@users.noreply.github.com> Co-authored-by: Andrea Del Rio <delrio.andre@gmail.com>
2020-03-20 15:49:37 +01:00
export interface ActionTypeRegistryOpts {
licensing: LicensingPluginSetup;
taskManager: TaskManagerSetupContract;
taskRunnerFactory: TaskRunnerFactory;
actionsConfigUtils: ActionsConfigurationUtilities;
License checks for actions plugin (#59070) * Define minimum license required for each action type (#58668) * Add minimum required license * Require at least gold license as a minimum license required on third party action types * Use strings for license references * Ensure license type is valid * Fix some tests * Add servicenow to gold * Add tests * Set license requirements on other built in action types * Use jest.Mocked<ActionType> instead * Change servicenow to platinum Co-authored-by: Elastic Machine <elasticmachine@users.noreply.github.com> * Make actions config mock and license state mock use factory pattern and jest mocks (#59370) * Add license checks to action HTTP APIs (#59153) * Initial work * Handle errors in update action API * Add unit tests for APIs * Make action executor throw when action type isn't enabled * Add test suite for basic license * Fix ESLint errors * Fix failing tests * Attempt 1 to fix CI * ESLint fixes * Create sendResponse function on ActionTypeDisabledError * Make disabled action types by config return 403 * Remove switch case * Fix ESLint * Add license checks within alerting / actions framework (#59699) * Initial work * Handle errors in update action API * Add unit tests for APIs * Verify action type before scheduling action task * Make actions plugin.execute throw error if action type is disabled * Bug fixes * Make action executor throw when action type isn't enabled * Add test suite for basic license * Fix ESLint errors * Stop action task from re-running when license check fails * Fix failing tests * Attempt 1 to fix CI * ESLint fixes * Create sendResponse function on ActionTypeDisabledError * Make disabled action types by config return 403 * Remove switch case * Fix ESLint * Fix confusing assertion * Add comment explaining double mock * Log warning when alert action isn't scheduled * Disable action types in UI when license doesn't support it (#59819) * Initial work * Handle errors in update action API * Add unit tests for APIs * Verify action type before scheduling action task * Make actions plugin.execute throw error if action type is disabled * Bug fixes * Make action executor throw when action type isn't enabled * Add test suite for basic license * Fix ESLint errors * Stop action task from re-running when license check fails * Fix failing tests * Attempt 1 to fix CI * ESLint fixes * Return enabledInConfig and enabledInLicense from actions get types API * Disable cards that have invalid license in create connector flyout * Create sendResponse function on ActionTypeDisabledError * Make disabled action types by config return 403 * Remove switch case * Fix ESLint * Disable when creating alert action * Return minimumLicenseRequired in /types API * Disable row in connectors when action type is disabled * Fix failing jest test * Some refactoring * Card in edit alert flyout * Sort action types by name * Add tooltips to create connector action type selector * Add tooltips to alert flyout action type selector * Add get more actions link in alert flyout * Add callout when creating a connector * Typos * remove float right and use flexgroup * replace pixels with eui variables * turn on sass lint for triggers_actions_ui dir * trying to add padding around cards * Add callout in edit alert screen when some actions are disabled * improve card selection for Add Connector flyout * Fix cards for create connector * Add tests * ESLint issue * Cleanup * Cleanup pt2 * Fix type check errors * moving to 3-columns cards for connector selection * Change re-enable to enable terminology * Revert "Change re-enable to enable terminology" This reverts commit b497dfd6b6bc88db862ad97826e8d03b094c8ed0. * Add re-enable comment * Remove unecessary fragment * Add type to actionTypeNodes * Fix EuiLink to not have opacity of 0.7 when not hovered * design cleanup in progress * updating classNames * using EuiIconTip * Remove label on icon tip * Fix failing jest test Co-authored-by: Andrea Del Rio <delrio.andre@gmail.com> * Add index to .index action type test * PR feedback * Add isErrorThatHandlesItsOwnResponse Co-authored-by: Elastic Machine <elasticmachine@users.noreply.github.com> Co-authored-by: Andrea Del Rio <delrio.andre@gmail.com>
2020-03-20 15:49:37 +01:00
licenseState: ILicenseState;
preconfiguredActions: PreConfiguredAction[];
Introduce basic alerting and actions plugin (#37042) * Create actions plugin (#35679) * Basic alerting plugin with actions * Remove relative imports * Code cleanup * Split service into 3 parts, change connector structure * Ability to disable plugin, ability to get actions * Add slack connector * Add email connector * Ability to validate params and connector options * Remove connectorOptionsSecrets for now * Fix plugin config validation * Add tests for slack connector * Default connectors register on plugin init, console renamed to log, slack to message_slack * Add remaining API endpoints for action CRUD * Add list connectors API * Change actions CRUD APIs to be closer with saved objects structure * WIP * Fix broken tests * Add encrypted attribute support * Add params and connectorOptions for email * WIP * Remove action's ability to have custom ids * Remove ts-ignore * Fix broken test * Remove default connectors from this branch * Fix API integration tests to use fixture connector * Rename connector terminology to action type * Rename actionTypeOptions to actionTypeConfig * Code cleanup * Fix broken tests * Rename alerting plugin to actions * Some code cleanup and add API unit tests * Change signature of action type service execute function * Add some plugin api integration tests * Fix type check failure * Code cleanup * Create an actions client instead of an action service * Apply Bill's PR feedback * Fix broken test * Find function to have destructured params * Add tests to ensure encrypted attributes are not returned * Fix broken test * Add tests for validation * Ensure actions can be updated without re-passing the config * Remove dead code * Test cleanup * Fix eslint issue * Apply Peter's PR feedback * Code cleanup and fix broken tests * Apply Brandon's PR feedback * Add namespace support * Fix broken test * Pass services to action executors (#37194) * Pass services to action executors * Fix tests * Apply PR feedback * Apply PR feedback pt2 * Cleanup actions plugin (#37250) * Cleanup actions, move code from alerting plugin PR * Rename service terminology to registry * Use static encryption key for encrypted attributes plugin inside of tests * Empty data after create test is done running * Fix type checks * Fix inconsistent naming * add server log action for alerting (#37530) adds the first "builtin" alertType for performing a `server.log()` * Create alerting plugin (#37043) * WIP * Rename fire function and remove @ts-ignore in all places * Change naming in alerting service * Remove alert instance class for now, support interval configuration * Cleanup TS * Split alerting between registry and client * Use saved object alongside task manager instance * Add remaining alerting APIs * Change create structure * Rename some variables, change actionGroups structure * Use handlebars for templating strings at fire time * Fix params given to alert type execute function * Use alert instance class * Alert instances support meta attributes * Move alert instances deserialization * Change interval to be ms * Rename actions es archive * Fix tests to use encrypted esArchive for action record * Add create alert test to demo end to end flow * Fix type check issue * Alerts to use references to action objects * Only update task manager tasks after saved objects are fully updated * Use scope in task manager * Fix type check * Use task manager to execute actions * Convert ids into references and back * Apply PR feedback * Fix broken test * Fix some bugs * Fix test errors * Alert interval to be previous runAt + interval instead of now + interval * Add range support * Remove extra line * Cleanup * Add alert_instance.test.ts * Add alert_type_registry.test.ts * Move tests around * Create generic task manager mock * Add note about saved objects client mock * Create alert_type_registry.mock.ts * Add alerts_client.test.ts * Add create_alert_instance_factory.test.ts * Add create_fire_handler.test.ts * WIP * Fix get_create_task_runner_function.test.ts and make test pass * Make get_create_task_runner_function.test.ts 100% coverage * Add unit tests for routes * Move files around * Created transform_action_params.ts * Add get_next_run_at.ts * Add comment explaining why we copy nextRunAt * Re-use state within alert instance * Finalize code coverage in unit tests * Create base api integration tests * Add a test that ensures end to end functionality of an alert * Fix ui capabilities test * Fix broken plugin api integration test * Fix jest tests with new saved objects client * Fix broken integration tests * Change api integration test fixture to make more sense, add functions for future tests * Move alerts integration testing into own file, prep to add more tests * Add tests to ensure failed task instances get retried * Add get_create_task_runner_function.test.ts for actions, create encrypted saved objects mock * Add action validation tests * Ensure action type validation occurs on update * Test 400 on unregistered alert types * Ensure alertTypeId can't be updated * Add validation test for alert create / update * Fix broken checks / tests * Skip failing test for now * Cleanup jest tests * Ensure action objects can be updated while keeping encrypted attributes readable * Remove partial update sopport, remove ability to change actionTypeId, require config * Ensure actionTypeConfig is validated on create and update * Add alertTypeParams validation support * Fix failing tests * Ensure alert cleanup errors don't replace the original error * Pass callCluster as a service to alerts and actions * Only pass log to alerts client * Pass savedObjectsClient as a service to alerting and actions * Fix failing tests * Remove range support, provide when current and previous task got scheduled * Ensure Joi validation happens before every execute * Remove skipped tests, to be done in future PR * Apply self feedback pt1 * Apply self feedback pt2 * Fix broken tests * Apply PR feedback * PR feedback pt1 * Apply security team PR feedback * PR feedback pt1 * PR feedback pt2 * PR feedback pt3 * Fix broken tests * Fix callCluster to have signature * Revert f11a6aeb06c65e5ab54bf3cc36694845c812b6a7 * PR feedback pt4 * Remove __jest__ folders * PR feedback pt5 * Fix Joi from leaking secrets * Fire instance actions in parallel instead of series * Fix failing jest tests * Accept core api changes * Fix saved objects client mock * PR feedback pt1 * Fix eslint issues * Throw error when alert instance already fired (#39251) * Throw error when alert instance already fired * shouldFire doesn't need its own boolean value * Actions & alerting getting started user guides (#39093) * Initial user guides * Cleanup * Typos, example changes * Switch to tables, use ordered list for usage * Start docs around alert instances and templating * Documentation changes * Some adjustments * Apply PR feedback * Apply suggestions from code review Co-Authored-By: gchaps <33642766+gchaps@users.noreply.github.com> * PR feedback pt2 * Provide better examples for alert types * Apply PR feedback * Update README locations
2019-06-21 01:37:17 +02:00
}
export class ActionTypeRegistry {
private readonly taskManager: TaskManagerSetupContract;
Introduce basic alerting and actions plugin (#37042) * Create actions plugin (#35679) * Basic alerting plugin with actions * Remove relative imports * Code cleanup * Split service into 3 parts, change connector structure * Ability to disable plugin, ability to get actions * Add slack connector * Add email connector * Ability to validate params and connector options * Remove connectorOptionsSecrets for now * Fix plugin config validation * Add tests for slack connector * Default connectors register on plugin init, console renamed to log, slack to message_slack * Add remaining API endpoints for action CRUD * Add list connectors API * Change actions CRUD APIs to be closer with saved objects structure * WIP * Fix broken tests * Add encrypted attribute support * Add params and connectorOptions for email * WIP * Remove action's ability to have custom ids * Remove ts-ignore * Fix broken test * Remove default connectors from this branch * Fix API integration tests to use fixture connector * Rename connector terminology to action type * Rename actionTypeOptions to actionTypeConfig * Code cleanup * Fix broken tests * Rename alerting plugin to actions * Some code cleanup and add API unit tests * Change signature of action type service execute function * Add some plugin api integration tests * Fix type check failure * Code cleanup * Create an actions client instead of an action service * Apply Bill's PR feedback * Fix broken test * Find function to have destructured params * Add tests to ensure encrypted attributes are not returned * Fix broken test * Add tests for validation * Ensure actions can be updated without re-passing the config * Remove dead code * Test cleanup * Fix eslint issue * Apply Peter's PR feedback * Code cleanup and fix broken tests * Apply Brandon's PR feedback * Add namespace support * Fix broken test * Pass services to action executors (#37194) * Pass services to action executors * Fix tests * Apply PR feedback * Apply PR feedback pt2 * Cleanup actions plugin (#37250) * Cleanup actions, move code from alerting plugin PR * Rename service terminology to registry * Use static encryption key for encrypted attributes plugin inside of tests * Empty data after create test is done running * Fix type checks * Fix inconsistent naming * add server log action for alerting (#37530) adds the first "builtin" alertType for performing a `server.log()` * Create alerting plugin (#37043) * WIP * Rename fire function and remove @ts-ignore in all places * Change naming in alerting service * Remove alert instance class for now, support interval configuration * Cleanup TS * Split alerting between registry and client * Use saved object alongside task manager instance * Add remaining alerting APIs * Change create structure * Rename some variables, change actionGroups structure * Use handlebars for templating strings at fire time * Fix params given to alert type execute function * Use alert instance class * Alert instances support meta attributes * Move alert instances deserialization * Change interval to be ms * Rename actions es archive * Fix tests to use encrypted esArchive for action record * Add create alert test to demo end to end flow * Fix type check issue * Alerts to use references to action objects * Only update task manager tasks after saved objects are fully updated * Use scope in task manager * Fix type check * Use task manager to execute actions * Convert ids into references and back * Apply PR feedback * Fix broken test * Fix some bugs * Fix test errors * Alert interval to be previous runAt + interval instead of now + interval * Add range support * Remove extra line * Cleanup * Add alert_instance.test.ts * Add alert_type_registry.test.ts * Move tests around * Create generic task manager mock * Add note about saved objects client mock * Create alert_type_registry.mock.ts * Add alerts_client.test.ts * Add create_alert_instance_factory.test.ts * Add create_fire_handler.test.ts * WIP * Fix get_create_task_runner_function.test.ts and make test pass * Make get_create_task_runner_function.test.ts 100% coverage * Add unit tests for routes * Move files around * Created transform_action_params.ts * Add get_next_run_at.ts * Add comment explaining why we copy nextRunAt * Re-use state within alert instance * Finalize code coverage in unit tests * Create base api integration tests * Add a test that ensures end to end functionality of an alert * Fix ui capabilities test * Fix broken plugin api integration test * Fix jest tests with new saved objects client * Fix broken integration tests * Change api integration test fixture to make more sense, add functions for future tests * Move alerts integration testing into own file, prep to add more tests * Add tests to ensure failed task instances get retried * Add get_create_task_runner_function.test.ts for actions, create encrypted saved objects mock * Add action validation tests * Ensure action type validation occurs on update * Test 400 on unregistered alert types * Ensure alertTypeId can't be updated * Add validation test for alert create / update * Fix broken checks / tests * Skip failing test for now * Cleanup jest tests * Ensure action objects can be updated while keeping encrypted attributes readable * Remove partial update sopport, remove ability to change actionTypeId, require config * Ensure actionTypeConfig is validated on create and update * Add alertTypeParams validation support * Fix failing tests * Ensure alert cleanup errors don't replace the original error * Pass callCluster as a service to alerts and actions * Only pass log to alerts client * Pass savedObjectsClient as a service to alerting and actions * Fix failing tests * Remove range support, provide when current and previous task got scheduled * Ensure Joi validation happens before every execute * Remove skipped tests, to be done in future PR * Apply self feedback pt1 * Apply self feedback pt2 * Fix broken tests * Apply PR feedback * PR feedback pt1 * Apply security team PR feedback * PR feedback pt1 * PR feedback pt2 * PR feedback pt3 * Fix broken tests * Fix callCluster to have signature * Revert f11a6aeb06c65e5ab54bf3cc36694845c812b6a7 * PR feedback pt4 * Remove __jest__ folders * PR feedback pt5 * Fix Joi from leaking secrets * Fire instance actions in parallel instead of series * Fix failing jest tests * Accept core api changes * Fix saved objects client mock * PR feedback pt1 * Fix eslint issues * Throw error when alert instance already fired (#39251) * Throw error when alert instance already fired * shouldFire doesn't need its own boolean value * Actions & alerting getting started user guides (#39093) * Initial user guides * Cleanup * Typos, example changes * Switch to tables, use ordered list for usage * Start docs around alert instances and templating * Documentation changes * Some adjustments * Apply PR feedback * Apply suggestions from code review Co-Authored-By: gchaps <33642766+gchaps@users.noreply.github.com> * PR feedback pt2 * Provide better examples for alert types * Apply PR feedback * Update README locations
2019-06-21 01:37:17 +02:00
private readonly actionTypes: Map<string, ActionType> = new Map();
private readonly taskRunnerFactory: TaskRunnerFactory;
private readonly actionsConfigUtils: ActionsConfigurationUtilities;
License checks for actions plugin (#59070) * Define minimum license required for each action type (#58668) * Add minimum required license * Require at least gold license as a minimum license required on third party action types * Use strings for license references * Ensure license type is valid * Fix some tests * Add servicenow to gold * Add tests * Set license requirements on other built in action types * Use jest.Mocked<ActionType> instead * Change servicenow to platinum Co-authored-by: Elastic Machine <elasticmachine@users.noreply.github.com> * Make actions config mock and license state mock use factory pattern and jest mocks (#59370) * Add license checks to action HTTP APIs (#59153) * Initial work * Handle errors in update action API * Add unit tests for APIs * Make action executor throw when action type isn't enabled * Add test suite for basic license * Fix ESLint errors * Fix failing tests * Attempt 1 to fix CI * ESLint fixes * Create sendResponse function on ActionTypeDisabledError * Make disabled action types by config return 403 * Remove switch case * Fix ESLint * Add license checks within alerting / actions framework (#59699) * Initial work * Handle errors in update action API * Add unit tests for APIs * Verify action type before scheduling action task * Make actions plugin.execute throw error if action type is disabled * Bug fixes * Make action executor throw when action type isn't enabled * Add test suite for basic license * Fix ESLint errors * Stop action task from re-running when license check fails * Fix failing tests * Attempt 1 to fix CI * ESLint fixes * Create sendResponse function on ActionTypeDisabledError * Make disabled action types by config return 403 * Remove switch case * Fix ESLint * Fix confusing assertion * Add comment explaining double mock * Log warning when alert action isn't scheduled * Disable action types in UI when license doesn't support it (#59819) * Initial work * Handle errors in update action API * Add unit tests for APIs * Verify action type before scheduling action task * Make actions plugin.execute throw error if action type is disabled * Bug fixes * Make action executor throw when action type isn't enabled * Add test suite for basic license * Fix ESLint errors * Stop action task from re-running when license check fails * Fix failing tests * Attempt 1 to fix CI * ESLint fixes * Return enabledInConfig and enabledInLicense from actions get types API * Disable cards that have invalid license in create connector flyout * Create sendResponse function on ActionTypeDisabledError * Make disabled action types by config return 403 * Remove switch case * Fix ESLint * Disable when creating alert action * Return minimumLicenseRequired in /types API * Disable row in connectors when action type is disabled * Fix failing jest test * Some refactoring * Card in edit alert flyout * Sort action types by name * Add tooltips to create connector action type selector * Add tooltips to alert flyout action type selector * Add get more actions link in alert flyout * Add callout when creating a connector * Typos * remove float right and use flexgroup * replace pixels with eui variables * turn on sass lint for triggers_actions_ui dir * trying to add padding around cards * Add callout in edit alert screen when some actions are disabled * improve card selection for Add Connector flyout * Fix cards for create connector * Add tests * ESLint issue * Cleanup * Cleanup pt2 * Fix type check errors * moving to 3-columns cards for connector selection * Change re-enable to enable terminology * Revert "Change re-enable to enable terminology" This reverts commit b497dfd6b6bc88db862ad97826e8d03b094c8ed0. * Add re-enable comment * Remove unecessary fragment * Add type to actionTypeNodes * Fix EuiLink to not have opacity of 0.7 when not hovered * design cleanup in progress * updating classNames * using EuiIconTip * Remove label on icon tip * Fix failing jest test Co-authored-by: Andrea Del Rio <delrio.andre@gmail.com> * Add index to .index action type test * PR feedback * Add isErrorThatHandlesItsOwnResponse Co-authored-by: Elastic Machine <elasticmachine@users.noreply.github.com> Co-authored-by: Andrea Del Rio <delrio.andre@gmail.com>
2020-03-20 15:49:37 +01:00
private readonly licenseState: ILicenseState;
private readonly preconfiguredActions: PreConfiguredAction[];
private readonly licensing: LicensingPluginSetup;
Introduce basic alerting and actions plugin (#37042) * Create actions plugin (#35679) * Basic alerting plugin with actions * Remove relative imports * Code cleanup * Split service into 3 parts, change connector structure * Ability to disable plugin, ability to get actions * Add slack connector * Add email connector * Ability to validate params and connector options * Remove connectorOptionsSecrets for now * Fix plugin config validation * Add tests for slack connector * Default connectors register on plugin init, console renamed to log, slack to message_slack * Add remaining API endpoints for action CRUD * Add list connectors API * Change actions CRUD APIs to be closer with saved objects structure * WIP * Fix broken tests * Add encrypted attribute support * Add params and connectorOptions for email * WIP * Remove action's ability to have custom ids * Remove ts-ignore * Fix broken test * Remove default connectors from this branch * Fix API integration tests to use fixture connector * Rename connector terminology to action type * Rename actionTypeOptions to actionTypeConfig * Code cleanup * Fix broken tests * Rename alerting plugin to actions * Some code cleanup and add API unit tests * Change signature of action type service execute function * Add some plugin api integration tests * Fix type check failure * Code cleanup * Create an actions client instead of an action service * Apply Bill's PR feedback * Fix broken test * Find function to have destructured params * Add tests to ensure encrypted attributes are not returned * Fix broken test * Add tests for validation * Ensure actions can be updated without re-passing the config * Remove dead code * Test cleanup * Fix eslint issue * Apply Peter's PR feedback * Code cleanup and fix broken tests * Apply Brandon's PR feedback * Add namespace support * Fix broken test * Pass services to action executors (#37194) * Pass services to action executors * Fix tests * Apply PR feedback * Apply PR feedback pt2 * Cleanup actions plugin (#37250) * Cleanup actions, move code from alerting plugin PR * Rename service terminology to registry * Use static encryption key for encrypted attributes plugin inside of tests * Empty data after create test is done running * Fix type checks * Fix inconsistent naming * add server log action for alerting (#37530) adds the first "builtin" alertType for performing a `server.log()` * Create alerting plugin (#37043) * WIP * Rename fire function and remove @ts-ignore in all places * Change naming in alerting service * Remove alert instance class for now, support interval configuration * Cleanup TS * Split alerting between registry and client * Use saved object alongside task manager instance * Add remaining alerting APIs * Change create structure * Rename some variables, change actionGroups structure * Use handlebars for templating strings at fire time * Fix params given to alert type execute function * Use alert instance class * Alert instances support meta attributes * Move alert instances deserialization * Change interval to be ms * Rename actions es archive * Fix tests to use encrypted esArchive for action record * Add create alert test to demo end to end flow * Fix type check issue * Alerts to use references to action objects * Only update task manager tasks after saved objects are fully updated * Use scope in task manager * Fix type check * Use task manager to execute actions * Convert ids into references and back * Apply PR feedback * Fix broken test * Fix some bugs * Fix test errors * Alert interval to be previous runAt + interval instead of now + interval * Add range support * Remove extra line * Cleanup * Add alert_instance.test.ts * Add alert_type_registry.test.ts * Move tests around * Create generic task manager mock * Add note about saved objects client mock * Create alert_type_registry.mock.ts * Add alerts_client.test.ts * Add create_alert_instance_factory.test.ts * Add create_fire_handler.test.ts * WIP * Fix get_create_task_runner_function.test.ts and make test pass * Make get_create_task_runner_function.test.ts 100% coverage * Add unit tests for routes * Move files around * Created transform_action_params.ts * Add get_next_run_at.ts * Add comment explaining why we copy nextRunAt * Re-use state within alert instance * Finalize code coverage in unit tests * Create base api integration tests * Add a test that ensures end to end functionality of an alert * Fix ui capabilities test * Fix broken plugin api integration test * Fix jest tests with new saved objects client * Fix broken integration tests * Change api integration test fixture to make more sense, add functions for future tests * Move alerts integration testing into own file, prep to add more tests * Add tests to ensure failed task instances get retried * Add get_create_task_runner_function.test.ts for actions, create encrypted saved objects mock * Add action validation tests * Ensure action type validation occurs on update * Test 400 on unregistered alert types * Ensure alertTypeId can't be updated * Add validation test for alert create / update * Fix broken checks / tests * Skip failing test for now * Cleanup jest tests * Ensure action objects can be updated while keeping encrypted attributes readable * Remove partial update sopport, remove ability to change actionTypeId, require config * Ensure actionTypeConfig is validated on create and update * Add alertTypeParams validation support * Fix failing tests * Ensure alert cleanup errors don't replace the original error * Pass callCluster as a service to alerts and actions * Only pass log to alerts client * Pass savedObjectsClient as a service to alerting and actions * Fix failing tests * Remove range support, provide when current and previous task got scheduled * Ensure Joi validation happens before every execute * Remove skipped tests, to be done in future PR * Apply self feedback pt1 * Apply self feedback pt2 * Fix broken tests * Apply PR feedback * PR feedback pt1 * Apply security team PR feedback * PR feedback pt1 * PR feedback pt2 * PR feedback pt3 * Fix broken tests * Fix callCluster to have signature * Revert f11a6aeb06c65e5ab54bf3cc36694845c812b6a7 * PR feedback pt4 * Remove __jest__ folders * PR feedback pt5 * Fix Joi from leaking secrets * Fire instance actions in parallel instead of series * Fix failing jest tests * Accept core api changes * Fix saved objects client mock * PR feedback pt1 * Fix eslint issues * Throw error when alert instance already fired (#39251) * Throw error when alert instance already fired * shouldFire doesn't need its own boolean value * Actions & alerting getting started user guides (#39093) * Initial user guides * Cleanup * Typos, example changes * Switch to tables, use ordered list for usage * Start docs around alert instances and templating * Documentation changes * Some adjustments * Apply PR feedback * Apply suggestions from code review Co-Authored-By: gchaps <33642766+gchaps@users.noreply.github.com> * PR feedback pt2 * Provide better examples for alert types * Apply PR feedback * Update README locations
2019-06-21 01:37:17 +02:00
License checks for actions plugin (#59070) * Define minimum license required for each action type (#58668) * Add minimum required license * Require at least gold license as a minimum license required on third party action types * Use strings for license references * Ensure license type is valid * Fix some tests * Add servicenow to gold * Add tests * Set license requirements on other built in action types * Use jest.Mocked<ActionType> instead * Change servicenow to platinum Co-authored-by: Elastic Machine <elasticmachine@users.noreply.github.com> * Make actions config mock and license state mock use factory pattern and jest mocks (#59370) * Add license checks to action HTTP APIs (#59153) * Initial work * Handle errors in update action API * Add unit tests for APIs * Make action executor throw when action type isn't enabled * Add test suite for basic license * Fix ESLint errors * Fix failing tests * Attempt 1 to fix CI * ESLint fixes * Create sendResponse function on ActionTypeDisabledError * Make disabled action types by config return 403 * Remove switch case * Fix ESLint * Add license checks within alerting / actions framework (#59699) * Initial work * Handle errors in update action API * Add unit tests for APIs * Verify action type before scheduling action task * Make actions plugin.execute throw error if action type is disabled * Bug fixes * Make action executor throw when action type isn't enabled * Add test suite for basic license * Fix ESLint errors * Stop action task from re-running when license check fails * Fix failing tests * Attempt 1 to fix CI * ESLint fixes * Create sendResponse function on ActionTypeDisabledError * Make disabled action types by config return 403 * Remove switch case * Fix ESLint * Fix confusing assertion * Add comment explaining double mock * Log warning when alert action isn't scheduled * Disable action types in UI when license doesn't support it (#59819) * Initial work * Handle errors in update action API * Add unit tests for APIs * Verify action type before scheduling action task * Make actions plugin.execute throw error if action type is disabled * Bug fixes * Make action executor throw when action type isn't enabled * Add test suite for basic license * Fix ESLint errors * Stop action task from re-running when license check fails * Fix failing tests * Attempt 1 to fix CI * ESLint fixes * Return enabledInConfig and enabledInLicense from actions get types API * Disable cards that have invalid license in create connector flyout * Create sendResponse function on ActionTypeDisabledError * Make disabled action types by config return 403 * Remove switch case * Fix ESLint * Disable when creating alert action * Return minimumLicenseRequired in /types API * Disable row in connectors when action type is disabled * Fix failing jest test * Some refactoring * Card in edit alert flyout * Sort action types by name * Add tooltips to create connector action type selector * Add tooltips to alert flyout action type selector * Add get more actions link in alert flyout * Add callout when creating a connector * Typos * remove float right and use flexgroup * replace pixels with eui variables * turn on sass lint for triggers_actions_ui dir * trying to add padding around cards * Add callout in edit alert screen when some actions are disabled * improve card selection for Add Connector flyout * Fix cards for create connector * Add tests * ESLint issue * Cleanup * Cleanup pt2 * Fix type check errors * moving to 3-columns cards for connector selection * Change re-enable to enable terminology * Revert "Change re-enable to enable terminology" This reverts commit b497dfd6b6bc88db862ad97826e8d03b094c8ed0. * Add re-enable comment * Remove unecessary fragment * Add type to actionTypeNodes * Fix EuiLink to not have opacity of 0.7 when not hovered * design cleanup in progress * updating classNames * using EuiIconTip * Remove label on icon tip * Fix failing jest test Co-authored-by: Andrea Del Rio <delrio.andre@gmail.com> * Add index to .index action type test * PR feedback * Add isErrorThatHandlesItsOwnResponse Co-authored-by: Elastic Machine <elasticmachine@users.noreply.github.com> Co-authored-by: Andrea Del Rio <delrio.andre@gmail.com>
2020-03-20 15:49:37 +01:00
constructor(constructorParams: ActionTypeRegistryOpts) {
this.taskManager = constructorParams.taskManager;
this.taskRunnerFactory = constructorParams.taskRunnerFactory;
this.actionsConfigUtils = constructorParams.actionsConfigUtils;
License checks for actions plugin (#59070) * Define minimum license required for each action type (#58668) * Add minimum required license * Require at least gold license as a minimum license required on third party action types * Use strings for license references * Ensure license type is valid * Fix some tests * Add servicenow to gold * Add tests * Set license requirements on other built in action types * Use jest.Mocked<ActionType> instead * Change servicenow to platinum Co-authored-by: Elastic Machine <elasticmachine@users.noreply.github.com> * Make actions config mock and license state mock use factory pattern and jest mocks (#59370) * Add license checks to action HTTP APIs (#59153) * Initial work * Handle errors in update action API * Add unit tests for APIs * Make action executor throw when action type isn't enabled * Add test suite for basic license * Fix ESLint errors * Fix failing tests * Attempt 1 to fix CI * ESLint fixes * Create sendResponse function on ActionTypeDisabledError * Make disabled action types by config return 403 * Remove switch case * Fix ESLint * Add license checks within alerting / actions framework (#59699) * Initial work * Handle errors in update action API * Add unit tests for APIs * Verify action type before scheduling action task * Make actions plugin.execute throw error if action type is disabled * Bug fixes * Make action executor throw when action type isn't enabled * Add test suite for basic license * Fix ESLint errors * Stop action task from re-running when license check fails * Fix failing tests * Attempt 1 to fix CI * ESLint fixes * Create sendResponse function on ActionTypeDisabledError * Make disabled action types by config return 403 * Remove switch case * Fix ESLint * Fix confusing assertion * Add comment explaining double mock * Log warning when alert action isn't scheduled * Disable action types in UI when license doesn't support it (#59819) * Initial work * Handle errors in update action API * Add unit tests for APIs * Verify action type before scheduling action task * Make actions plugin.execute throw error if action type is disabled * Bug fixes * Make action executor throw when action type isn't enabled * Add test suite for basic license * Fix ESLint errors * Stop action task from re-running when license check fails * Fix failing tests * Attempt 1 to fix CI * ESLint fixes * Return enabledInConfig and enabledInLicense from actions get types API * Disable cards that have invalid license in create connector flyout * Create sendResponse function on ActionTypeDisabledError * Make disabled action types by config return 403 * Remove switch case * Fix ESLint * Disable when creating alert action * Return minimumLicenseRequired in /types API * Disable row in connectors when action type is disabled * Fix failing jest test * Some refactoring * Card in edit alert flyout * Sort action types by name * Add tooltips to create connector action type selector * Add tooltips to alert flyout action type selector * Add get more actions link in alert flyout * Add callout when creating a connector * Typos * remove float right and use flexgroup * replace pixels with eui variables * turn on sass lint for triggers_actions_ui dir * trying to add padding around cards * Add callout in edit alert screen when some actions are disabled * improve card selection for Add Connector flyout * Fix cards for create connector * Add tests * ESLint issue * Cleanup * Cleanup pt2 * Fix type check errors * moving to 3-columns cards for connector selection * Change re-enable to enable terminology * Revert "Change re-enable to enable terminology" This reverts commit b497dfd6b6bc88db862ad97826e8d03b094c8ed0. * Add re-enable comment * Remove unecessary fragment * Add type to actionTypeNodes * Fix EuiLink to not have opacity of 0.7 when not hovered * design cleanup in progress * updating classNames * using EuiIconTip * Remove label on icon tip * Fix failing jest test Co-authored-by: Andrea Del Rio <delrio.andre@gmail.com> * Add index to .index action type test * PR feedback * Add isErrorThatHandlesItsOwnResponse Co-authored-by: Elastic Machine <elasticmachine@users.noreply.github.com> Co-authored-by: Andrea Del Rio <delrio.andre@gmail.com>
2020-03-20 15:49:37 +01:00
this.licenseState = constructorParams.licenseState;
this.preconfiguredActions = constructorParams.preconfiguredActions;
this.licensing = constructorParams.licensing;
Introduce basic alerting and actions plugin (#37042) * Create actions plugin (#35679) * Basic alerting plugin with actions * Remove relative imports * Code cleanup * Split service into 3 parts, change connector structure * Ability to disable plugin, ability to get actions * Add slack connector * Add email connector * Ability to validate params and connector options * Remove connectorOptionsSecrets for now * Fix plugin config validation * Add tests for slack connector * Default connectors register on plugin init, console renamed to log, slack to message_slack * Add remaining API endpoints for action CRUD * Add list connectors API * Change actions CRUD APIs to be closer with saved objects structure * WIP * Fix broken tests * Add encrypted attribute support * Add params and connectorOptions for email * WIP * Remove action's ability to have custom ids * Remove ts-ignore * Fix broken test * Remove default connectors from this branch * Fix API integration tests to use fixture connector * Rename connector terminology to action type * Rename actionTypeOptions to actionTypeConfig * Code cleanup * Fix broken tests * Rename alerting plugin to actions * Some code cleanup and add API unit tests * Change signature of action type service execute function * Add some plugin api integration tests * Fix type check failure * Code cleanup * Create an actions client instead of an action service * Apply Bill's PR feedback * Fix broken test * Find function to have destructured params * Add tests to ensure encrypted attributes are not returned * Fix broken test * Add tests for validation * Ensure actions can be updated without re-passing the config * Remove dead code * Test cleanup * Fix eslint issue * Apply Peter's PR feedback * Code cleanup and fix broken tests * Apply Brandon's PR feedback * Add namespace support * Fix broken test * Pass services to action executors (#37194) * Pass services to action executors * Fix tests * Apply PR feedback * Apply PR feedback pt2 * Cleanup actions plugin (#37250) * Cleanup actions, move code from alerting plugin PR * Rename service terminology to registry * Use static encryption key for encrypted attributes plugin inside of tests * Empty data after create test is done running * Fix type checks * Fix inconsistent naming * add server log action for alerting (#37530) adds the first "builtin" alertType for performing a `server.log()` * Create alerting plugin (#37043) * WIP * Rename fire function and remove @ts-ignore in all places * Change naming in alerting service * Remove alert instance class for now, support interval configuration * Cleanup TS * Split alerting between registry and client * Use saved object alongside task manager instance * Add remaining alerting APIs * Change create structure * Rename some variables, change actionGroups structure * Use handlebars for templating strings at fire time * Fix params given to alert type execute function * Use alert instance class * Alert instances support meta attributes * Move alert instances deserialization * Change interval to be ms * Rename actions es archive * Fix tests to use encrypted esArchive for action record * Add create alert test to demo end to end flow * Fix type check issue * Alerts to use references to action objects * Only update task manager tasks after saved objects are fully updated * Use scope in task manager * Fix type check * Use task manager to execute actions * Convert ids into references and back * Apply PR feedback * Fix broken test * Fix some bugs * Fix test errors * Alert interval to be previous runAt + interval instead of now + interval * Add range support * Remove extra line * Cleanup * Add alert_instance.test.ts * Add alert_type_registry.test.ts * Move tests around * Create generic task manager mock * Add note about saved objects client mock * Create alert_type_registry.mock.ts * Add alerts_client.test.ts * Add create_alert_instance_factory.test.ts * Add create_fire_handler.test.ts * WIP * Fix get_create_task_runner_function.test.ts and make test pass * Make get_create_task_runner_function.test.ts 100% coverage * Add unit tests for routes * Move files around * Created transform_action_params.ts * Add get_next_run_at.ts * Add comment explaining why we copy nextRunAt * Re-use state within alert instance * Finalize code coverage in unit tests * Create base api integration tests * Add a test that ensures end to end functionality of an alert * Fix ui capabilities test * Fix broken plugin api integration test * Fix jest tests with new saved objects client * Fix broken integration tests * Change api integration test fixture to make more sense, add functions for future tests * Move alerts integration testing into own file, prep to add more tests * Add tests to ensure failed task instances get retried * Add get_create_task_runner_function.test.ts for actions, create encrypted saved objects mock * Add action validation tests * Ensure action type validation occurs on update * Test 400 on unregistered alert types * Ensure alertTypeId can't be updated * Add validation test for alert create / update * Fix broken checks / tests * Skip failing test for now * Cleanup jest tests * Ensure action objects can be updated while keeping encrypted attributes readable * Remove partial update sopport, remove ability to change actionTypeId, require config * Ensure actionTypeConfig is validated on create and update * Add alertTypeParams validation support * Fix failing tests * Ensure alert cleanup errors don't replace the original error * Pass callCluster as a service to alerts and actions * Only pass log to alerts client * Pass savedObjectsClient as a service to alerting and actions * Fix failing tests * Remove range support, provide when current and previous task got scheduled * Ensure Joi validation happens before every execute * Remove skipped tests, to be done in future PR * Apply self feedback pt1 * Apply self feedback pt2 * Fix broken tests * Apply PR feedback * PR feedback pt1 * Apply security team PR feedback * PR feedback pt1 * PR feedback pt2 * PR feedback pt3 * Fix broken tests * Fix callCluster to have signature * Revert f11a6aeb06c65e5ab54bf3cc36694845c812b6a7 * PR feedback pt4 * Remove __jest__ folders * PR feedback pt5 * Fix Joi from leaking secrets * Fire instance actions in parallel instead of series * Fix failing jest tests * Accept core api changes * Fix saved objects client mock * PR feedback pt1 * Fix eslint issues * Throw error when alert instance already fired (#39251) * Throw error when alert instance already fired * shouldFire doesn't need its own boolean value * Actions & alerting getting started user guides (#39093) * Initial user guides * Cleanup * Typos, example changes * Switch to tables, use ordered list for usage * Start docs around alert instances and templating * Documentation changes * Some adjustments * Apply PR feedback * Apply suggestions from code review Co-Authored-By: gchaps <33642766+gchaps@users.noreply.github.com> * PR feedback pt2 * Provide better examples for alert types * Apply PR feedback * Update README locations
2019-06-21 01:37:17 +02:00
}
/**
* Returns if the action type registry has the given action type registered
*/
public has(id: string) {
return this.actionTypes.has(id);
}
/**
* Throws error if action type is not enabled.
*/
public ensureActionTypeEnabled(id: string) {
this.actionsConfigUtils.ensureActionTypeEnabled(id);
// Important to happen last because the function will notify of feature usage at the
// same time and it shouldn't notify when the action type isn't enabled
License checks for actions plugin (#59070) * Define minimum license required for each action type (#58668) * Add minimum required license * Require at least gold license as a minimum license required on third party action types * Use strings for license references * Ensure license type is valid * Fix some tests * Add servicenow to gold * Add tests * Set license requirements on other built in action types * Use jest.Mocked<ActionType> instead * Change servicenow to platinum Co-authored-by: Elastic Machine <elasticmachine@users.noreply.github.com> * Make actions config mock and license state mock use factory pattern and jest mocks (#59370) * Add license checks to action HTTP APIs (#59153) * Initial work * Handle errors in update action API * Add unit tests for APIs * Make action executor throw when action type isn't enabled * Add test suite for basic license * Fix ESLint errors * Fix failing tests * Attempt 1 to fix CI * ESLint fixes * Create sendResponse function on ActionTypeDisabledError * Make disabled action types by config return 403 * Remove switch case * Fix ESLint * Add license checks within alerting / actions framework (#59699) * Initial work * Handle errors in update action API * Add unit tests for APIs * Verify action type before scheduling action task * Make actions plugin.execute throw error if action type is disabled * Bug fixes * Make action executor throw when action type isn't enabled * Add test suite for basic license * Fix ESLint errors * Stop action task from re-running when license check fails * Fix failing tests * Attempt 1 to fix CI * ESLint fixes * Create sendResponse function on ActionTypeDisabledError * Make disabled action types by config return 403 * Remove switch case * Fix ESLint * Fix confusing assertion * Add comment explaining double mock * Log warning when alert action isn't scheduled * Disable action types in UI when license doesn't support it (#59819) * Initial work * Handle errors in update action API * Add unit tests for APIs * Verify action type before scheduling action task * Make actions plugin.execute throw error if action type is disabled * Bug fixes * Make action executor throw when action type isn't enabled * Add test suite for basic license * Fix ESLint errors * Stop action task from re-running when license check fails * Fix failing tests * Attempt 1 to fix CI * ESLint fixes * Return enabledInConfig and enabledInLicense from actions get types API * Disable cards that have invalid license in create connector flyout * Create sendResponse function on ActionTypeDisabledError * Make disabled action types by config return 403 * Remove switch case * Fix ESLint * Disable when creating alert action * Return minimumLicenseRequired in /types API * Disable row in connectors when action type is disabled * Fix failing jest test * Some refactoring * Card in edit alert flyout * Sort action types by name * Add tooltips to create connector action type selector * Add tooltips to alert flyout action type selector * Add get more actions link in alert flyout * Add callout when creating a connector * Typos * remove float right and use flexgroup * replace pixels with eui variables * turn on sass lint for triggers_actions_ui dir * trying to add padding around cards * Add callout in edit alert screen when some actions are disabled * improve card selection for Add Connector flyout * Fix cards for create connector * Add tests * ESLint issue * Cleanup * Cleanup pt2 * Fix type check errors * moving to 3-columns cards for connector selection * Change re-enable to enable terminology * Revert "Change re-enable to enable terminology" This reverts commit b497dfd6b6bc88db862ad97826e8d03b094c8ed0. * Add re-enable comment * Remove unecessary fragment * Add type to actionTypeNodes * Fix EuiLink to not have opacity of 0.7 when not hovered * design cleanup in progress * updating classNames * using EuiIconTip * Remove label on icon tip * Fix failing jest test Co-authored-by: Andrea Del Rio <delrio.andre@gmail.com> * Add index to .index action type test * PR feedback * Add isErrorThatHandlesItsOwnResponse Co-authored-by: Elastic Machine <elasticmachine@users.noreply.github.com> Co-authored-by: Andrea Del Rio <delrio.andre@gmail.com>
2020-03-20 15:49:37 +01:00
this.licenseState.ensureLicenseForActionType(this.get(id));
}
/**
* Returns true if action type is enabled in the config and a valid license is used.
*/
public isActionTypeEnabled(
id: string,
options: { notifyUsage: boolean } = { notifyUsage: false }
) {
License checks for actions plugin (#59070) * Define minimum license required for each action type (#58668) * Add minimum required license * Require at least gold license as a minimum license required on third party action types * Use strings for license references * Ensure license type is valid * Fix some tests * Add servicenow to gold * Add tests * Set license requirements on other built in action types * Use jest.Mocked<ActionType> instead * Change servicenow to platinum Co-authored-by: Elastic Machine <elasticmachine@users.noreply.github.com> * Make actions config mock and license state mock use factory pattern and jest mocks (#59370) * Add license checks to action HTTP APIs (#59153) * Initial work * Handle errors in update action API * Add unit tests for APIs * Make action executor throw when action type isn't enabled * Add test suite for basic license * Fix ESLint errors * Fix failing tests * Attempt 1 to fix CI * ESLint fixes * Create sendResponse function on ActionTypeDisabledError * Make disabled action types by config return 403 * Remove switch case * Fix ESLint * Add license checks within alerting / actions framework (#59699) * Initial work * Handle errors in update action API * Add unit tests for APIs * Verify action type before scheduling action task * Make actions plugin.execute throw error if action type is disabled * Bug fixes * Make action executor throw when action type isn't enabled * Add test suite for basic license * Fix ESLint errors * Stop action task from re-running when license check fails * Fix failing tests * Attempt 1 to fix CI * ESLint fixes * Create sendResponse function on ActionTypeDisabledError * Make disabled action types by config return 403 * Remove switch case * Fix ESLint * Fix confusing assertion * Add comment explaining double mock * Log warning when alert action isn't scheduled * Disable action types in UI when license doesn't support it (#59819) * Initial work * Handle errors in update action API * Add unit tests for APIs * Verify action type before scheduling action task * Make actions plugin.execute throw error if action type is disabled * Bug fixes * Make action executor throw when action type isn't enabled * Add test suite for basic license * Fix ESLint errors * Stop action task from re-running when license check fails * Fix failing tests * Attempt 1 to fix CI * ESLint fixes * Return enabledInConfig and enabledInLicense from actions get types API * Disable cards that have invalid license in create connector flyout * Create sendResponse function on ActionTypeDisabledError * Make disabled action types by config return 403 * Remove switch case * Fix ESLint * Disable when creating alert action * Return minimumLicenseRequired in /types API * Disable row in connectors when action type is disabled * Fix failing jest test * Some refactoring * Card in edit alert flyout * Sort action types by name * Add tooltips to create connector action type selector * Add tooltips to alert flyout action type selector * Add get more actions link in alert flyout * Add callout when creating a connector * Typos * remove float right and use flexgroup * replace pixels with eui variables * turn on sass lint for triggers_actions_ui dir * trying to add padding around cards * Add callout in edit alert screen when some actions are disabled * improve card selection for Add Connector flyout * Fix cards for create connector * Add tests * ESLint issue * Cleanup * Cleanup pt2 * Fix type check errors * moving to 3-columns cards for connector selection * Change re-enable to enable terminology * Revert "Change re-enable to enable terminology" This reverts commit b497dfd6b6bc88db862ad97826e8d03b094c8ed0. * Add re-enable comment * Remove unecessary fragment * Add type to actionTypeNodes * Fix EuiLink to not have opacity of 0.7 when not hovered * design cleanup in progress * updating classNames * using EuiIconTip * Remove label on icon tip * Fix failing jest test Co-authored-by: Andrea Del Rio <delrio.andre@gmail.com> * Add index to .index action type test * PR feedback * Add isErrorThatHandlesItsOwnResponse Co-authored-by: Elastic Machine <elasticmachine@users.noreply.github.com> Co-authored-by: Andrea Del Rio <delrio.andre@gmail.com>
2020-03-20 15:49:37 +01:00
return (
this.actionsConfigUtils.isActionTypeEnabled(id) &&
this.licenseState.isLicenseValidForActionType(this.get(id), options).isValid === true
License checks for actions plugin (#59070) * Define minimum license required for each action type (#58668) * Add minimum required license * Require at least gold license as a minimum license required on third party action types * Use strings for license references * Ensure license type is valid * Fix some tests * Add servicenow to gold * Add tests * Set license requirements on other built in action types * Use jest.Mocked<ActionType> instead * Change servicenow to platinum Co-authored-by: Elastic Machine <elasticmachine@users.noreply.github.com> * Make actions config mock and license state mock use factory pattern and jest mocks (#59370) * Add license checks to action HTTP APIs (#59153) * Initial work * Handle errors in update action API * Add unit tests for APIs * Make action executor throw when action type isn't enabled * Add test suite for basic license * Fix ESLint errors * Fix failing tests * Attempt 1 to fix CI * ESLint fixes * Create sendResponse function on ActionTypeDisabledError * Make disabled action types by config return 403 * Remove switch case * Fix ESLint * Add license checks within alerting / actions framework (#59699) * Initial work * Handle errors in update action API * Add unit tests for APIs * Verify action type before scheduling action task * Make actions plugin.execute throw error if action type is disabled * Bug fixes * Make action executor throw when action type isn't enabled * Add test suite for basic license * Fix ESLint errors * Stop action task from re-running when license check fails * Fix failing tests * Attempt 1 to fix CI * ESLint fixes * Create sendResponse function on ActionTypeDisabledError * Make disabled action types by config return 403 * Remove switch case * Fix ESLint * Fix confusing assertion * Add comment explaining double mock * Log warning when alert action isn't scheduled * Disable action types in UI when license doesn't support it (#59819) * Initial work * Handle errors in update action API * Add unit tests for APIs * Verify action type before scheduling action task * Make actions plugin.execute throw error if action type is disabled * Bug fixes * Make action executor throw when action type isn't enabled * Add test suite for basic license * Fix ESLint errors * Stop action task from re-running when license check fails * Fix failing tests * Attempt 1 to fix CI * ESLint fixes * Return enabledInConfig and enabledInLicense from actions get types API * Disable cards that have invalid license in create connector flyout * Create sendResponse function on ActionTypeDisabledError * Make disabled action types by config return 403 * Remove switch case * Fix ESLint * Disable when creating alert action * Return minimumLicenseRequired in /types API * Disable row in connectors when action type is disabled * Fix failing jest test * Some refactoring * Card in edit alert flyout * Sort action types by name * Add tooltips to create connector action type selector * Add tooltips to alert flyout action type selector * Add get more actions link in alert flyout * Add callout when creating a connector * Typos * remove float right and use flexgroup * replace pixels with eui variables * turn on sass lint for triggers_actions_ui dir * trying to add padding around cards * Add callout in edit alert screen when some actions are disabled * improve card selection for Add Connector flyout * Fix cards for create connector * Add tests * ESLint issue * Cleanup * Cleanup pt2 * Fix type check errors * moving to 3-columns cards for connector selection * Change re-enable to enable terminology * Revert "Change re-enable to enable terminology" This reverts commit b497dfd6b6bc88db862ad97826e8d03b094c8ed0. * Add re-enable comment * Remove unecessary fragment * Add type to actionTypeNodes * Fix EuiLink to not have opacity of 0.7 when not hovered * design cleanup in progress * updating classNames * using EuiIconTip * Remove label on icon tip * Fix failing jest test Co-authored-by: Andrea Del Rio <delrio.andre@gmail.com> * Add index to .index action type test * PR feedback * Add isErrorThatHandlesItsOwnResponse Co-authored-by: Elastic Machine <elasticmachine@users.noreply.github.com> Co-authored-by: Andrea Del Rio <delrio.andre@gmail.com>
2020-03-20 15:49:37 +01:00
);
}
/**
* Returns true if action type is enabled or it is a preconfigured action type.
*/
public isActionExecutable(
actionId: string,
actionTypeId: string,
options: { notifyUsage: boolean } = { notifyUsage: false }
) {
const actionTypeEnabled = this.isActionTypeEnabled(actionTypeId, options);
return (
actionTypeEnabled ||
(!actionTypeEnabled &&
this.preconfiguredActions.find(
2020-05-22 09:08:58 +02:00
(preconfiguredAction) => preconfiguredAction.id === actionId
) !== undefined)
);
}
Introduce basic alerting and actions plugin (#37042) * Create actions plugin (#35679) * Basic alerting plugin with actions * Remove relative imports * Code cleanup * Split service into 3 parts, change connector structure * Ability to disable plugin, ability to get actions * Add slack connector * Add email connector * Ability to validate params and connector options * Remove connectorOptionsSecrets for now * Fix plugin config validation * Add tests for slack connector * Default connectors register on plugin init, console renamed to log, slack to message_slack * Add remaining API endpoints for action CRUD * Add list connectors API * Change actions CRUD APIs to be closer with saved objects structure * WIP * Fix broken tests * Add encrypted attribute support * Add params and connectorOptions for email * WIP * Remove action's ability to have custom ids * Remove ts-ignore * Fix broken test * Remove default connectors from this branch * Fix API integration tests to use fixture connector * Rename connector terminology to action type * Rename actionTypeOptions to actionTypeConfig * Code cleanup * Fix broken tests * Rename alerting plugin to actions * Some code cleanup and add API unit tests * Change signature of action type service execute function * Add some plugin api integration tests * Fix type check failure * Code cleanup * Create an actions client instead of an action service * Apply Bill's PR feedback * Fix broken test * Find function to have destructured params * Add tests to ensure encrypted attributes are not returned * Fix broken test * Add tests for validation * Ensure actions can be updated without re-passing the config * Remove dead code * Test cleanup * Fix eslint issue * Apply Peter's PR feedback * Code cleanup and fix broken tests * Apply Brandon's PR feedback * Add namespace support * Fix broken test * Pass services to action executors (#37194) * Pass services to action executors * Fix tests * Apply PR feedback * Apply PR feedback pt2 * Cleanup actions plugin (#37250) * Cleanup actions, move code from alerting plugin PR * Rename service terminology to registry * Use static encryption key for encrypted attributes plugin inside of tests * Empty data after create test is done running * Fix type checks * Fix inconsistent naming * add server log action for alerting (#37530) adds the first "builtin" alertType for performing a `server.log()` * Create alerting plugin (#37043) * WIP * Rename fire function and remove @ts-ignore in all places * Change naming in alerting service * Remove alert instance class for now, support interval configuration * Cleanup TS * Split alerting between registry and client * Use saved object alongside task manager instance * Add remaining alerting APIs * Change create structure * Rename some variables, change actionGroups structure * Use handlebars for templating strings at fire time * Fix params given to alert type execute function * Use alert instance class * Alert instances support meta attributes * Move alert instances deserialization * Change interval to be ms * Rename actions es archive * Fix tests to use encrypted esArchive for action record * Add create alert test to demo end to end flow * Fix type check issue * Alerts to use references to action objects * Only update task manager tasks after saved objects are fully updated * Use scope in task manager * Fix type check * Use task manager to execute actions * Convert ids into references and back * Apply PR feedback * Fix broken test * Fix some bugs * Fix test errors * Alert interval to be previous runAt + interval instead of now + interval * Add range support * Remove extra line * Cleanup * Add alert_instance.test.ts * Add alert_type_registry.test.ts * Move tests around * Create generic task manager mock * Add note about saved objects client mock * Create alert_type_registry.mock.ts * Add alerts_client.test.ts * Add create_alert_instance_factory.test.ts * Add create_fire_handler.test.ts * WIP * Fix get_create_task_runner_function.test.ts and make test pass * Make get_create_task_runner_function.test.ts 100% coverage * Add unit tests for routes * Move files around * Created transform_action_params.ts * Add get_next_run_at.ts * Add comment explaining why we copy nextRunAt * Re-use state within alert instance * Finalize code coverage in unit tests * Create base api integration tests * Add a test that ensures end to end functionality of an alert * Fix ui capabilities test * Fix broken plugin api integration test * Fix jest tests with new saved objects client * Fix broken integration tests * Change api integration test fixture to make more sense, add functions for future tests * Move alerts integration testing into own file, prep to add more tests * Add tests to ensure failed task instances get retried * Add get_create_task_runner_function.test.ts for actions, create encrypted saved objects mock * Add action validation tests * Ensure action type validation occurs on update * Test 400 on unregistered alert types * Ensure alertTypeId can't be updated * Add validation test for alert create / update * Fix broken checks / tests * Skip failing test for now * Cleanup jest tests * Ensure action objects can be updated while keeping encrypted attributes readable * Remove partial update sopport, remove ability to change actionTypeId, require config * Ensure actionTypeConfig is validated on create and update * Add alertTypeParams validation support * Fix failing tests * Ensure alert cleanup errors don't replace the original error * Pass callCluster as a service to alerts and actions * Only pass log to alerts client * Pass savedObjectsClient as a service to alerting and actions * Fix failing tests * Remove range support, provide when current and previous task got scheduled * Ensure Joi validation happens before every execute * Remove skipped tests, to be done in future PR * Apply self feedback pt1 * Apply self feedback pt2 * Fix broken tests * Apply PR feedback * PR feedback pt1 * Apply security team PR feedback * PR feedback pt1 * PR feedback pt2 * PR feedback pt3 * Fix broken tests * Fix callCluster to have signature * Revert f11a6aeb06c65e5ab54bf3cc36694845c812b6a7 * PR feedback pt4 * Remove __jest__ folders * PR feedback pt5 * Fix Joi from leaking secrets * Fire instance actions in parallel instead of series * Fix failing jest tests * Accept core api changes * Fix saved objects client mock * PR feedback pt1 * Fix eslint issues * Throw error when alert instance already fired (#39251) * Throw error when alert instance already fired * shouldFire doesn't need its own boolean value * Actions & alerting getting started user guides (#39093) * Initial user guides * Cleanup * Typos, example changes * Switch to tables, use ordered list for usage * Start docs around alert instances and templating * Documentation changes * Some adjustments * Apply PR feedback * Apply suggestions from code review Co-Authored-By: gchaps <33642766+gchaps@users.noreply.github.com> * PR feedback pt2 * Provide better examples for alert types * Apply PR feedback * Update README locations
2019-06-21 01:37:17 +02:00
/**
* Registers an action type to the action type registry
*/
public register<
Config extends ActionTypeConfig = ActionTypeConfig,
Secrets extends ActionTypeSecrets = ActionTypeSecrets,
Params extends ActionTypeParams = ActionTypeParams,
ExecutorResultData = void
>(actionType: ActionType<Config, Secrets, Params, ExecutorResultData>) {
Introduce basic alerting and actions plugin (#37042) * Create actions plugin (#35679) * Basic alerting plugin with actions * Remove relative imports * Code cleanup * Split service into 3 parts, change connector structure * Ability to disable plugin, ability to get actions * Add slack connector * Add email connector * Ability to validate params and connector options * Remove connectorOptionsSecrets for now * Fix plugin config validation * Add tests for slack connector * Default connectors register on plugin init, console renamed to log, slack to message_slack * Add remaining API endpoints for action CRUD * Add list connectors API * Change actions CRUD APIs to be closer with saved objects structure * WIP * Fix broken tests * Add encrypted attribute support * Add params and connectorOptions for email * WIP * Remove action's ability to have custom ids * Remove ts-ignore * Fix broken test * Remove default connectors from this branch * Fix API integration tests to use fixture connector * Rename connector terminology to action type * Rename actionTypeOptions to actionTypeConfig * Code cleanup * Fix broken tests * Rename alerting plugin to actions * Some code cleanup and add API unit tests * Change signature of action type service execute function * Add some plugin api integration tests * Fix type check failure * Code cleanup * Create an actions client instead of an action service * Apply Bill's PR feedback * Fix broken test * Find function to have destructured params * Add tests to ensure encrypted attributes are not returned * Fix broken test * Add tests for validation * Ensure actions can be updated without re-passing the config * Remove dead code * Test cleanup * Fix eslint issue * Apply Peter's PR feedback * Code cleanup and fix broken tests * Apply Brandon's PR feedback * Add namespace support * Fix broken test * Pass services to action executors (#37194) * Pass services to action executors * Fix tests * Apply PR feedback * Apply PR feedback pt2 * Cleanup actions plugin (#37250) * Cleanup actions, move code from alerting plugin PR * Rename service terminology to registry * Use static encryption key for encrypted attributes plugin inside of tests * Empty data after create test is done running * Fix type checks * Fix inconsistent naming * add server log action for alerting (#37530) adds the first "builtin" alertType for performing a `server.log()` * Create alerting plugin (#37043) * WIP * Rename fire function and remove @ts-ignore in all places * Change naming in alerting service * Remove alert instance class for now, support interval configuration * Cleanup TS * Split alerting between registry and client * Use saved object alongside task manager instance * Add remaining alerting APIs * Change create structure * Rename some variables, change actionGroups structure * Use handlebars for templating strings at fire time * Fix params given to alert type execute function * Use alert instance class * Alert instances support meta attributes * Move alert instances deserialization * Change interval to be ms * Rename actions es archive * Fix tests to use encrypted esArchive for action record * Add create alert test to demo end to end flow * Fix type check issue * Alerts to use references to action objects * Only update task manager tasks after saved objects are fully updated * Use scope in task manager * Fix type check * Use task manager to execute actions * Convert ids into references and back * Apply PR feedback * Fix broken test * Fix some bugs * Fix test errors * Alert interval to be previous runAt + interval instead of now + interval * Add range support * Remove extra line * Cleanup * Add alert_instance.test.ts * Add alert_type_registry.test.ts * Move tests around * Create generic task manager mock * Add note about saved objects client mock * Create alert_type_registry.mock.ts * Add alerts_client.test.ts * Add create_alert_instance_factory.test.ts * Add create_fire_handler.test.ts * WIP * Fix get_create_task_runner_function.test.ts and make test pass * Make get_create_task_runner_function.test.ts 100% coverage * Add unit tests for routes * Move files around * Created transform_action_params.ts * Add get_next_run_at.ts * Add comment explaining why we copy nextRunAt * Re-use state within alert instance * Finalize code coverage in unit tests * Create base api integration tests * Add a test that ensures end to end functionality of an alert * Fix ui capabilities test * Fix broken plugin api integration test * Fix jest tests with new saved objects client * Fix broken integration tests * Change api integration test fixture to make more sense, add functions for future tests * Move alerts integration testing into own file, prep to add more tests * Add tests to ensure failed task instances get retried * Add get_create_task_runner_function.test.ts for actions, create encrypted saved objects mock * Add action validation tests * Ensure action type validation occurs on update * Test 400 on unregistered alert types * Ensure alertTypeId can't be updated * Add validation test for alert create / update * Fix broken checks / tests * Skip failing test for now * Cleanup jest tests * Ensure action objects can be updated while keeping encrypted attributes readable * Remove partial update sopport, remove ability to change actionTypeId, require config * Ensure actionTypeConfig is validated on create and update * Add alertTypeParams validation support * Fix failing tests * Ensure alert cleanup errors don't replace the original error * Pass callCluster as a service to alerts and actions * Only pass log to alerts client * Pass savedObjectsClient as a service to alerting and actions * Fix failing tests * Remove range support, provide when current and previous task got scheduled * Ensure Joi validation happens before every execute * Remove skipped tests, to be done in future PR * Apply self feedback pt1 * Apply self feedback pt2 * Fix broken tests * Apply PR feedback * PR feedback pt1 * Apply security team PR feedback * PR feedback pt1 * PR feedback pt2 * PR feedback pt3 * Fix broken tests * Fix callCluster to have signature * Revert f11a6aeb06c65e5ab54bf3cc36694845c812b6a7 * PR feedback pt4 * Remove __jest__ folders * PR feedback pt5 * Fix Joi from leaking secrets * Fire instance actions in parallel instead of series * Fix failing jest tests * Accept core api changes * Fix saved objects client mock * PR feedback pt1 * Fix eslint issues * Throw error when alert instance already fired (#39251) * Throw error when alert instance already fired * shouldFire doesn't need its own boolean value * Actions & alerting getting started user guides (#39093) * Initial user guides * Cleanup * Typos, example changes * Switch to tables, use ordered list for usage * Start docs around alert instances and templating * Documentation changes * Some adjustments * Apply PR feedback * Apply suggestions from code review Co-Authored-By: gchaps <33642766+gchaps@users.noreply.github.com> * PR feedback pt2 * Provide better examples for alert types * Apply PR feedback * Update README locations
2019-06-21 01:37:17 +02:00
if (this.has(actionType.id)) {
throw new Error(
i18n.translate(
'xpack.actions.actionTypeRegistry.register.duplicateActionTypeErrorMessage',
{
defaultMessage: 'Action type "{id}" is already registered.',
values: {
id: actionType.id,
},
}
)
Introduce basic alerting and actions plugin (#37042) * Create actions plugin (#35679) * Basic alerting plugin with actions * Remove relative imports * Code cleanup * Split service into 3 parts, change connector structure * Ability to disable plugin, ability to get actions * Add slack connector * Add email connector * Ability to validate params and connector options * Remove connectorOptionsSecrets for now * Fix plugin config validation * Add tests for slack connector * Default connectors register on plugin init, console renamed to log, slack to message_slack * Add remaining API endpoints for action CRUD * Add list connectors API * Change actions CRUD APIs to be closer with saved objects structure * WIP * Fix broken tests * Add encrypted attribute support * Add params and connectorOptions for email * WIP * Remove action's ability to have custom ids * Remove ts-ignore * Fix broken test * Remove default connectors from this branch * Fix API integration tests to use fixture connector * Rename connector terminology to action type * Rename actionTypeOptions to actionTypeConfig * Code cleanup * Fix broken tests * Rename alerting plugin to actions * Some code cleanup and add API unit tests * Change signature of action type service execute function * Add some plugin api integration tests * Fix type check failure * Code cleanup * Create an actions client instead of an action service * Apply Bill's PR feedback * Fix broken test * Find function to have destructured params * Add tests to ensure encrypted attributes are not returned * Fix broken test * Add tests for validation * Ensure actions can be updated without re-passing the config * Remove dead code * Test cleanup * Fix eslint issue * Apply Peter's PR feedback * Code cleanup and fix broken tests * Apply Brandon's PR feedback * Add namespace support * Fix broken test * Pass services to action executors (#37194) * Pass services to action executors * Fix tests * Apply PR feedback * Apply PR feedback pt2 * Cleanup actions plugin (#37250) * Cleanup actions, move code from alerting plugin PR * Rename service terminology to registry * Use static encryption key for encrypted attributes plugin inside of tests * Empty data after create test is done running * Fix type checks * Fix inconsistent naming * add server log action for alerting (#37530) adds the first "builtin" alertType for performing a `server.log()` * Create alerting plugin (#37043) * WIP * Rename fire function and remove @ts-ignore in all places * Change naming in alerting service * Remove alert instance class for now, support interval configuration * Cleanup TS * Split alerting between registry and client * Use saved object alongside task manager instance * Add remaining alerting APIs * Change create structure * Rename some variables, change actionGroups structure * Use handlebars for templating strings at fire time * Fix params given to alert type execute function * Use alert instance class * Alert instances support meta attributes * Move alert instances deserialization * Change interval to be ms * Rename actions es archive * Fix tests to use encrypted esArchive for action record * Add create alert test to demo end to end flow * Fix type check issue * Alerts to use references to action objects * Only update task manager tasks after saved objects are fully updated * Use scope in task manager * Fix type check * Use task manager to execute actions * Convert ids into references and back * Apply PR feedback * Fix broken test * Fix some bugs * Fix test errors * Alert interval to be previous runAt + interval instead of now + interval * Add range support * Remove extra line * Cleanup * Add alert_instance.test.ts * Add alert_type_registry.test.ts * Move tests around * Create generic task manager mock * Add note about saved objects client mock * Create alert_type_registry.mock.ts * Add alerts_client.test.ts * Add create_alert_instance_factory.test.ts * Add create_fire_handler.test.ts * WIP * Fix get_create_task_runner_function.test.ts and make test pass * Make get_create_task_runner_function.test.ts 100% coverage * Add unit tests for routes * Move files around * Created transform_action_params.ts * Add get_next_run_at.ts * Add comment explaining why we copy nextRunAt * Re-use state within alert instance * Finalize code coverage in unit tests * Create base api integration tests * Add a test that ensures end to end functionality of an alert * Fix ui capabilities test * Fix broken plugin api integration test * Fix jest tests with new saved objects client * Fix broken integration tests * Change api integration test fixture to make more sense, add functions for future tests * Move alerts integration testing into own file, prep to add more tests * Add tests to ensure failed task instances get retried * Add get_create_task_runner_function.test.ts for actions, create encrypted saved objects mock * Add action validation tests * Ensure action type validation occurs on update * Test 400 on unregistered alert types * Ensure alertTypeId can't be updated * Add validation test for alert create / update * Fix broken checks / tests * Skip failing test for now * Cleanup jest tests * Ensure action objects can be updated while keeping encrypted attributes readable * Remove partial update sopport, remove ability to change actionTypeId, require config * Ensure actionTypeConfig is validated on create and update * Add alertTypeParams validation support * Fix failing tests * Ensure alert cleanup errors don't replace the original error * Pass callCluster as a service to alerts and actions * Only pass log to alerts client * Pass savedObjectsClient as a service to alerting and actions * Fix failing tests * Remove range support, provide when current and previous task got scheduled * Ensure Joi validation happens before every execute * Remove skipped tests, to be done in future PR * Apply self feedback pt1 * Apply self feedback pt2 * Fix broken tests * Apply PR feedback * PR feedback pt1 * Apply security team PR feedback * PR feedback pt1 * PR feedback pt2 * PR feedback pt3 * Fix broken tests * Fix callCluster to have signature * Revert f11a6aeb06c65e5ab54bf3cc36694845c812b6a7 * PR feedback pt4 * Remove __jest__ folders * PR feedback pt5 * Fix Joi from leaking secrets * Fire instance actions in parallel instead of series * Fix failing jest tests * Accept core api changes * Fix saved objects client mock * PR feedback pt1 * Fix eslint issues * Throw error when alert instance already fired (#39251) * Throw error when alert instance already fired * shouldFire doesn't need its own boolean value * Actions & alerting getting started user guides (#39093) * Initial user guides * Cleanup * Typos, example changes * Switch to tables, use ordered list for usage * Start docs around alert instances and templating * Documentation changes * Some adjustments * Apply PR feedback * Apply suggestions from code review Co-Authored-By: gchaps <33642766+gchaps@users.noreply.github.com> * PR feedback pt2 * Provide better examples for alert types * Apply PR feedback * Update README locations
2019-06-21 01:37:17 +02:00
);
}
this.actionTypes.set(actionType.id, { ...actionType } as ActionType);
Introduce basic alerting and actions plugin (#37042) * Create actions plugin (#35679) * Basic alerting plugin with actions * Remove relative imports * Code cleanup * Split service into 3 parts, change connector structure * Ability to disable plugin, ability to get actions * Add slack connector * Add email connector * Ability to validate params and connector options * Remove connectorOptionsSecrets for now * Fix plugin config validation * Add tests for slack connector * Default connectors register on plugin init, console renamed to log, slack to message_slack * Add remaining API endpoints for action CRUD * Add list connectors API * Change actions CRUD APIs to be closer with saved objects structure * WIP * Fix broken tests * Add encrypted attribute support * Add params and connectorOptions for email * WIP * Remove action's ability to have custom ids * Remove ts-ignore * Fix broken test * Remove default connectors from this branch * Fix API integration tests to use fixture connector * Rename connector terminology to action type * Rename actionTypeOptions to actionTypeConfig * Code cleanup * Fix broken tests * Rename alerting plugin to actions * Some code cleanup and add API unit tests * Change signature of action type service execute function * Add some plugin api integration tests * Fix type check failure * Code cleanup * Create an actions client instead of an action service * Apply Bill's PR feedback * Fix broken test * Find function to have destructured params * Add tests to ensure encrypted attributes are not returned * Fix broken test * Add tests for validation * Ensure actions can be updated without re-passing the config * Remove dead code * Test cleanup * Fix eslint issue * Apply Peter's PR feedback * Code cleanup and fix broken tests * Apply Brandon's PR feedback * Add namespace support * Fix broken test * Pass services to action executors (#37194) * Pass services to action executors * Fix tests * Apply PR feedback * Apply PR feedback pt2 * Cleanup actions plugin (#37250) * Cleanup actions, move code from alerting plugin PR * Rename service terminology to registry * Use static encryption key for encrypted attributes plugin inside of tests * Empty data after create test is done running * Fix type checks * Fix inconsistent naming * add server log action for alerting (#37530) adds the first "builtin" alertType for performing a `server.log()` * Create alerting plugin (#37043) * WIP * Rename fire function and remove @ts-ignore in all places * Change naming in alerting service * Remove alert instance class for now, support interval configuration * Cleanup TS * Split alerting between registry and client * Use saved object alongside task manager instance * Add remaining alerting APIs * Change create structure * Rename some variables, change actionGroups structure * Use handlebars for templating strings at fire time * Fix params given to alert type execute function * Use alert instance class * Alert instances support meta attributes * Move alert instances deserialization * Change interval to be ms * Rename actions es archive * Fix tests to use encrypted esArchive for action record * Add create alert test to demo end to end flow * Fix type check issue * Alerts to use references to action objects * Only update task manager tasks after saved objects are fully updated * Use scope in task manager * Fix type check * Use task manager to execute actions * Convert ids into references and back * Apply PR feedback * Fix broken test * Fix some bugs * Fix test errors * Alert interval to be previous runAt + interval instead of now + interval * Add range support * Remove extra line * Cleanup * Add alert_instance.test.ts * Add alert_type_registry.test.ts * Move tests around * Create generic task manager mock * Add note about saved objects client mock * Create alert_type_registry.mock.ts * Add alerts_client.test.ts * Add create_alert_instance_factory.test.ts * Add create_fire_handler.test.ts * WIP * Fix get_create_task_runner_function.test.ts and make test pass * Make get_create_task_runner_function.test.ts 100% coverage * Add unit tests for routes * Move files around * Created transform_action_params.ts * Add get_next_run_at.ts * Add comment explaining why we copy nextRunAt * Re-use state within alert instance * Finalize code coverage in unit tests * Create base api integration tests * Add a test that ensures end to end functionality of an alert * Fix ui capabilities test * Fix broken plugin api integration test * Fix jest tests with new saved objects client * Fix broken integration tests * Change api integration test fixture to make more sense, add functions for future tests * Move alerts integration testing into own file, prep to add more tests * Add tests to ensure failed task instances get retried * Add get_create_task_runner_function.test.ts for actions, create encrypted saved objects mock * Add action validation tests * Ensure action type validation occurs on update * Test 400 on unregistered alert types * Ensure alertTypeId can't be updated * Add validation test for alert create / update * Fix broken checks / tests * Skip failing test for now * Cleanup jest tests * Ensure action objects can be updated while keeping encrypted attributes readable * Remove partial update sopport, remove ability to change actionTypeId, require config * Ensure actionTypeConfig is validated on create and update * Add alertTypeParams validation support * Fix failing tests * Ensure alert cleanup errors don't replace the original error * Pass callCluster as a service to alerts and actions * Only pass log to alerts client * Pass savedObjectsClient as a service to alerting and actions * Fix failing tests * Remove range support, provide when current and previous task got scheduled * Ensure Joi validation happens before every execute * Remove skipped tests, to be done in future PR * Apply self feedback pt1 * Apply self feedback pt2 * Fix broken tests * Apply PR feedback * PR feedback pt1 * Apply security team PR feedback * PR feedback pt1 * PR feedback pt2 * PR feedback pt3 * Fix broken tests * Fix callCluster to have signature * Revert f11a6aeb06c65e5ab54bf3cc36694845c812b6a7 * PR feedback pt4 * Remove __jest__ folders * PR feedback pt5 * Fix Joi from leaking secrets * Fire instance actions in parallel instead of series * Fix failing jest tests * Accept core api changes * Fix saved objects client mock * PR feedback pt1 * Fix eslint issues * Throw error when alert instance already fired (#39251) * Throw error when alert instance already fired * shouldFire doesn't need its own boolean value * Actions & alerting getting started user guides (#39093) * Initial user guides * Cleanup * Typos, example changes * Switch to tables, use ordered list for usage * Start docs around alert instances and templating * Documentation changes * Some adjustments * Apply PR feedback * Apply suggestions from code review Co-Authored-By: gchaps <33642766+gchaps@users.noreply.github.com> * PR feedback pt2 * Provide better examples for alert types * Apply PR feedback * Update README locations
2019-06-21 01:37:17 +02:00
this.taskManager.registerTaskDefinitions({
[`actions:${actionType.id}`]: {
title: actionType.name,
maxAttempts: actionType.maxAttempts || 1,
getRetry(attempts: number, error: unknown) {
if (error instanceof ExecutorError) {
return error.retry == null ? false : error.retry;
}
// Don't retry other kinds of errors
return false;
},
createTaskRunner: (context: RunContext) => this.taskRunnerFactory.create(context),
Introduce basic alerting and actions plugin (#37042) * Create actions plugin (#35679) * Basic alerting plugin with actions * Remove relative imports * Code cleanup * Split service into 3 parts, change connector structure * Ability to disable plugin, ability to get actions * Add slack connector * Add email connector * Ability to validate params and connector options * Remove connectorOptionsSecrets for now * Fix plugin config validation * Add tests for slack connector * Default connectors register on plugin init, console renamed to log, slack to message_slack * Add remaining API endpoints for action CRUD * Add list connectors API * Change actions CRUD APIs to be closer with saved objects structure * WIP * Fix broken tests * Add encrypted attribute support * Add params and connectorOptions for email * WIP * Remove action's ability to have custom ids * Remove ts-ignore * Fix broken test * Remove default connectors from this branch * Fix API integration tests to use fixture connector * Rename connector terminology to action type * Rename actionTypeOptions to actionTypeConfig * Code cleanup * Fix broken tests * Rename alerting plugin to actions * Some code cleanup and add API unit tests * Change signature of action type service execute function * Add some plugin api integration tests * Fix type check failure * Code cleanup * Create an actions client instead of an action service * Apply Bill's PR feedback * Fix broken test * Find function to have destructured params * Add tests to ensure encrypted attributes are not returned * Fix broken test * Add tests for validation * Ensure actions can be updated without re-passing the config * Remove dead code * Test cleanup * Fix eslint issue * Apply Peter's PR feedback * Code cleanup and fix broken tests * Apply Brandon's PR feedback * Add namespace support * Fix broken test * Pass services to action executors (#37194) * Pass services to action executors * Fix tests * Apply PR feedback * Apply PR feedback pt2 * Cleanup actions plugin (#37250) * Cleanup actions, move code from alerting plugin PR * Rename service terminology to registry * Use static encryption key for encrypted attributes plugin inside of tests * Empty data after create test is done running * Fix type checks * Fix inconsistent naming * add server log action for alerting (#37530) adds the first "builtin" alertType for performing a `server.log()` * Create alerting plugin (#37043) * WIP * Rename fire function and remove @ts-ignore in all places * Change naming in alerting service * Remove alert instance class for now, support interval configuration * Cleanup TS * Split alerting between registry and client * Use saved object alongside task manager instance * Add remaining alerting APIs * Change create structure * Rename some variables, change actionGroups structure * Use handlebars for templating strings at fire time * Fix params given to alert type execute function * Use alert instance class * Alert instances support meta attributes * Move alert instances deserialization * Change interval to be ms * Rename actions es archive * Fix tests to use encrypted esArchive for action record * Add create alert test to demo end to end flow * Fix type check issue * Alerts to use references to action objects * Only update task manager tasks after saved objects are fully updated * Use scope in task manager * Fix type check * Use task manager to execute actions * Convert ids into references and back * Apply PR feedback * Fix broken test * Fix some bugs * Fix test errors * Alert interval to be previous runAt + interval instead of now + interval * Add range support * Remove extra line * Cleanup * Add alert_instance.test.ts * Add alert_type_registry.test.ts * Move tests around * Create generic task manager mock * Add note about saved objects client mock * Create alert_type_registry.mock.ts * Add alerts_client.test.ts * Add create_alert_instance_factory.test.ts * Add create_fire_handler.test.ts * WIP * Fix get_create_task_runner_function.test.ts and make test pass * Make get_create_task_runner_function.test.ts 100% coverage * Add unit tests for routes * Move files around * Created transform_action_params.ts * Add get_next_run_at.ts * Add comment explaining why we copy nextRunAt * Re-use state within alert instance * Finalize code coverage in unit tests * Create base api integration tests * Add a test that ensures end to end functionality of an alert * Fix ui capabilities test * Fix broken plugin api integration test * Fix jest tests with new saved objects client * Fix broken integration tests * Change api integration test fixture to make more sense, add functions for future tests * Move alerts integration testing into own file, prep to add more tests * Add tests to ensure failed task instances get retried * Add get_create_task_runner_function.test.ts for actions, create encrypted saved objects mock * Add action validation tests * Ensure action type validation occurs on update * Test 400 on unregistered alert types * Ensure alertTypeId can't be updated * Add validation test for alert create / update * Fix broken checks / tests * Skip failing test for now * Cleanup jest tests * Ensure action objects can be updated while keeping encrypted attributes readable * Remove partial update sopport, remove ability to change actionTypeId, require config * Ensure actionTypeConfig is validated on create and update * Add alertTypeParams validation support * Fix failing tests * Ensure alert cleanup errors don't replace the original error * Pass callCluster as a service to alerts and actions * Only pass log to alerts client * Pass savedObjectsClient as a service to alerting and actions * Fix failing tests * Remove range support, provide when current and previous task got scheduled * Ensure Joi validation happens before every execute * Remove skipped tests, to be done in future PR * Apply self feedback pt1 * Apply self feedback pt2 * Fix broken tests * Apply PR feedback * PR feedback pt1 * Apply security team PR feedback * PR feedback pt1 * PR feedback pt2 * PR feedback pt3 * Fix broken tests * Fix callCluster to have signature * Revert f11a6aeb06c65e5ab54bf3cc36694845c812b6a7 * PR feedback pt4 * Remove __jest__ folders * PR feedback pt5 * Fix Joi from leaking secrets * Fire instance actions in parallel instead of series * Fix failing jest tests * Accept core api changes * Fix saved objects client mock * PR feedback pt1 * Fix eslint issues * Throw error when alert instance already fired (#39251) * Throw error when alert instance already fired * shouldFire doesn't need its own boolean value * Actions & alerting getting started user guides (#39093) * Initial user guides * Cleanup * Typos, example changes * Switch to tables, use ordered list for usage * Start docs around alert instances and templating * Documentation changes * Some adjustments * Apply PR feedback * Apply suggestions from code review Co-Authored-By: gchaps <33642766+gchaps@users.noreply.github.com> * PR feedback pt2 * Provide better examples for alert types * Apply PR feedback * Update README locations
2019-06-21 01:37:17 +02:00
},
});
// No need to notify usage on basic action types
if (actionType.minimumLicenseRequired !== 'basic') {
this.licensing.featureUsage.register(
getActionTypeFeatureUsageName(actionType as ActionType),
actionType.minimumLicenseRequired
);
}
Introduce basic alerting and actions plugin (#37042) * Create actions plugin (#35679) * Basic alerting plugin with actions * Remove relative imports * Code cleanup * Split service into 3 parts, change connector structure * Ability to disable plugin, ability to get actions * Add slack connector * Add email connector * Ability to validate params and connector options * Remove connectorOptionsSecrets for now * Fix plugin config validation * Add tests for slack connector * Default connectors register on plugin init, console renamed to log, slack to message_slack * Add remaining API endpoints for action CRUD * Add list connectors API * Change actions CRUD APIs to be closer with saved objects structure * WIP * Fix broken tests * Add encrypted attribute support * Add params and connectorOptions for email * WIP * Remove action's ability to have custom ids * Remove ts-ignore * Fix broken test * Remove default connectors from this branch * Fix API integration tests to use fixture connector * Rename connector terminology to action type * Rename actionTypeOptions to actionTypeConfig * Code cleanup * Fix broken tests * Rename alerting plugin to actions * Some code cleanup and add API unit tests * Change signature of action type service execute function * Add some plugin api integration tests * Fix type check failure * Code cleanup * Create an actions client instead of an action service * Apply Bill's PR feedback * Fix broken test * Find function to have destructured params * Add tests to ensure encrypted attributes are not returned * Fix broken test * Add tests for validation * Ensure actions can be updated without re-passing the config * Remove dead code * Test cleanup * Fix eslint issue * Apply Peter's PR feedback * Code cleanup and fix broken tests * Apply Brandon's PR feedback * Add namespace support * Fix broken test * Pass services to action executors (#37194) * Pass services to action executors * Fix tests * Apply PR feedback * Apply PR feedback pt2 * Cleanup actions plugin (#37250) * Cleanup actions, move code from alerting plugin PR * Rename service terminology to registry * Use static encryption key for encrypted attributes plugin inside of tests * Empty data after create test is done running * Fix type checks * Fix inconsistent naming * add server log action for alerting (#37530) adds the first "builtin" alertType for performing a `server.log()` * Create alerting plugin (#37043) * WIP * Rename fire function and remove @ts-ignore in all places * Change naming in alerting service * Remove alert instance class for now, support interval configuration * Cleanup TS * Split alerting between registry and client * Use saved object alongside task manager instance * Add remaining alerting APIs * Change create structure * Rename some variables, change actionGroups structure * Use handlebars for templating strings at fire time * Fix params given to alert type execute function * Use alert instance class * Alert instances support meta attributes * Move alert instances deserialization * Change interval to be ms * Rename actions es archive * Fix tests to use encrypted esArchive for action record * Add create alert test to demo end to end flow * Fix type check issue * Alerts to use references to action objects * Only update task manager tasks after saved objects are fully updated * Use scope in task manager * Fix type check * Use task manager to execute actions * Convert ids into references and back * Apply PR feedback * Fix broken test * Fix some bugs * Fix test errors * Alert interval to be previous runAt + interval instead of now + interval * Add range support * Remove extra line * Cleanup * Add alert_instance.test.ts * Add alert_type_registry.test.ts * Move tests around * Create generic task manager mock * Add note about saved objects client mock * Create alert_type_registry.mock.ts * Add alerts_client.test.ts * Add create_alert_instance_factory.test.ts * Add create_fire_handler.test.ts * WIP * Fix get_create_task_runner_function.test.ts and make test pass * Make get_create_task_runner_function.test.ts 100% coverage * Add unit tests for routes * Move files around * Created transform_action_params.ts * Add get_next_run_at.ts * Add comment explaining why we copy nextRunAt * Re-use state within alert instance * Finalize code coverage in unit tests * Create base api integration tests * Add a test that ensures end to end functionality of an alert * Fix ui capabilities test * Fix broken plugin api integration test * Fix jest tests with new saved objects client * Fix broken integration tests * Change api integration test fixture to make more sense, add functions for future tests * Move alerts integration testing into own file, prep to add more tests * Add tests to ensure failed task instances get retried * Add get_create_task_runner_function.test.ts for actions, create encrypted saved objects mock * Add action validation tests * Ensure action type validation occurs on update * Test 400 on unregistered alert types * Ensure alertTypeId can't be updated * Add validation test for alert create / update * Fix broken checks / tests * Skip failing test for now * Cleanup jest tests * Ensure action objects can be updated while keeping encrypted attributes readable * Remove partial update sopport, remove ability to change actionTypeId, require config * Ensure actionTypeConfig is validated on create and update * Add alertTypeParams validation support * Fix failing tests * Ensure alert cleanup errors don't replace the original error * Pass callCluster as a service to alerts and actions * Only pass log to alerts client * Pass savedObjectsClient as a service to alerting and actions * Fix failing tests * Remove range support, provide when current and previous task got scheduled * Ensure Joi validation happens before every execute * Remove skipped tests, to be done in future PR * Apply self feedback pt1 * Apply self feedback pt2 * Fix broken tests * Apply PR feedback * PR feedback pt1 * Apply security team PR feedback * PR feedback pt1 * PR feedback pt2 * PR feedback pt3 * Fix broken tests * Fix callCluster to have signature * Revert f11a6aeb06c65e5ab54bf3cc36694845c812b6a7 * PR feedback pt4 * Remove __jest__ folders * PR feedback pt5 * Fix Joi from leaking secrets * Fire instance actions in parallel instead of series * Fix failing jest tests * Accept core api changes * Fix saved objects client mock * PR feedback pt1 * Fix eslint issues * Throw error when alert instance already fired (#39251) * Throw error when alert instance already fired * shouldFire doesn't need its own boolean value * Actions & alerting getting started user guides (#39093) * Initial user guides * Cleanup * Typos, example changes * Switch to tables, use ordered list for usage * Start docs around alert instances and templating * Documentation changes * Some adjustments * Apply PR feedback * Apply suggestions from code review Co-Authored-By: gchaps <33642766+gchaps@users.noreply.github.com> * PR feedback pt2 * Provide better examples for alert types * Apply PR feedback * Update README locations
2019-06-21 01:37:17 +02:00
}
/**
* Returns an action type, throws if not registered
*/
public get<
Config extends ActionTypeConfig = ActionTypeConfig,
Secrets extends ActionTypeSecrets = ActionTypeSecrets,
Params extends ActionTypeParams = ActionTypeParams,
ExecutorResultData = void
>(id: string): ActionType<Config, Secrets, Params, ExecutorResultData> {
Introduce basic alerting and actions plugin (#37042) * Create actions plugin (#35679) * Basic alerting plugin with actions * Remove relative imports * Code cleanup * Split service into 3 parts, change connector structure * Ability to disable plugin, ability to get actions * Add slack connector * Add email connector * Ability to validate params and connector options * Remove connectorOptionsSecrets for now * Fix plugin config validation * Add tests for slack connector * Default connectors register on plugin init, console renamed to log, slack to message_slack * Add remaining API endpoints for action CRUD * Add list connectors API * Change actions CRUD APIs to be closer with saved objects structure * WIP * Fix broken tests * Add encrypted attribute support * Add params and connectorOptions for email * WIP * Remove action's ability to have custom ids * Remove ts-ignore * Fix broken test * Remove default connectors from this branch * Fix API integration tests to use fixture connector * Rename connector terminology to action type * Rename actionTypeOptions to actionTypeConfig * Code cleanup * Fix broken tests * Rename alerting plugin to actions * Some code cleanup and add API unit tests * Change signature of action type service execute function * Add some plugin api integration tests * Fix type check failure * Code cleanup * Create an actions client instead of an action service * Apply Bill's PR feedback * Fix broken test * Find function to have destructured params * Add tests to ensure encrypted attributes are not returned * Fix broken test * Add tests for validation * Ensure actions can be updated without re-passing the config * Remove dead code * Test cleanup * Fix eslint issue * Apply Peter's PR feedback * Code cleanup and fix broken tests * Apply Brandon's PR feedback * Add namespace support * Fix broken test * Pass services to action executors (#37194) * Pass services to action executors * Fix tests * Apply PR feedback * Apply PR feedback pt2 * Cleanup actions plugin (#37250) * Cleanup actions, move code from alerting plugin PR * Rename service terminology to registry * Use static encryption key for encrypted attributes plugin inside of tests * Empty data after create test is done running * Fix type checks * Fix inconsistent naming * add server log action for alerting (#37530) adds the first "builtin" alertType for performing a `server.log()` * Create alerting plugin (#37043) * WIP * Rename fire function and remove @ts-ignore in all places * Change naming in alerting service * Remove alert instance class for now, support interval configuration * Cleanup TS * Split alerting between registry and client * Use saved object alongside task manager instance * Add remaining alerting APIs * Change create structure * Rename some variables, change actionGroups structure * Use handlebars for templating strings at fire time * Fix params given to alert type execute function * Use alert instance class * Alert instances support meta attributes * Move alert instances deserialization * Change interval to be ms * Rename actions es archive * Fix tests to use encrypted esArchive for action record * Add create alert test to demo end to end flow * Fix type check issue * Alerts to use references to action objects * Only update task manager tasks after saved objects are fully updated * Use scope in task manager * Fix type check * Use task manager to execute actions * Convert ids into references and back * Apply PR feedback * Fix broken test * Fix some bugs * Fix test errors * Alert interval to be previous runAt + interval instead of now + interval * Add range support * Remove extra line * Cleanup * Add alert_instance.test.ts * Add alert_type_registry.test.ts * Move tests around * Create generic task manager mock * Add note about saved objects client mock * Create alert_type_registry.mock.ts * Add alerts_client.test.ts * Add create_alert_instance_factory.test.ts * Add create_fire_handler.test.ts * WIP * Fix get_create_task_runner_function.test.ts and make test pass * Make get_create_task_runner_function.test.ts 100% coverage * Add unit tests for routes * Move files around * Created transform_action_params.ts * Add get_next_run_at.ts * Add comment explaining why we copy nextRunAt * Re-use state within alert instance * Finalize code coverage in unit tests * Create base api integration tests * Add a test that ensures end to end functionality of an alert * Fix ui capabilities test * Fix broken plugin api integration test * Fix jest tests with new saved objects client * Fix broken integration tests * Change api integration test fixture to make more sense, add functions for future tests * Move alerts integration testing into own file, prep to add more tests * Add tests to ensure failed task instances get retried * Add get_create_task_runner_function.test.ts for actions, create encrypted saved objects mock * Add action validation tests * Ensure action type validation occurs on update * Test 400 on unregistered alert types * Ensure alertTypeId can't be updated * Add validation test for alert create / update * Fix broken checks / tests * Skip failing test for now * Cleanup jest tests * Ensure action objects can be updated while keeping encrypted attributes readable * Remove partial update sopport, remove ability to change actionTypeId, require config * Ensure actionTypeConfig is validated on create and update * Add alertTypeParams validation support * Fix failing tests * Ensure alert cleanup errors don't replace the original error * Pass callCluster as a service to alerts and actions * Only pass log to alerts client * Pass savedObjectsClient as a service to alerting and actions * Fix failing tests * Remove range support, provide when current and previous task got scheduled * Ensure Joi validation happens before every execute * Remove skipped tests, to be done in future PR * Apply self feedback pt1 * Apply self feedback pt2 * Fix broken tests * Apply PR feedback * PR feedback pt1 * Apply security team PR feedback * PR feedback pt1 * PR feedback pt2 * PR feedback pt3 * Fix broken tests * Fix callCluster to have signature * Revert f11a6aeb06c65e5ab54bf3cc36694845c812b6a7 * PR feedback pt4 * Remove __jest__ folders * PR feedback pt5 * Fix Joi from leaking secrets * Fire instance actions in parallel instead of series * Fix failing jest tests * Accept core api changes * Fix saved objects client mock * PR feedback pt1 * Fix eslint issues * Throw error when alert instance already fired (#39251) * Throw error when alert instance already fired * shouldFire doesn't need its own boolean value * Actions & alerting getting started user guides (#39093) * Initial user guides * Cleanup * Typos, example changes * Switch to tables, use ordered list for usage * Start docs around alert instances and templating * Documentation changes * Some adjustments * Apply PR feedback * Apply suggestions from code review Co-Authored-By: gchaps <33642766+gchaps@users.noreply.github.com> * PR feedback pt2 * Provide better examples for alert types * Apply PR feedback * Update README locations
2019-06-21 01:37:17 +02:00
if (!this.has(id)) {
throw Boom.badRequest(
i18n.translate('xpack.actions.actionTypeRegistry.get.missingActionTypeErrorMessage', {
Introduce basic alerting and actions plugin (#37042) * Create actions plugin (#35679) * Basic alerting plugin with actions * Remove relative imports * Code cleanup * Split service into 3 parts, change connector structure * Ability to disable plugin, ability to get actions * Add slack connector * Add email connector * Ability to validate params and connector options * Remove connectorOptionsSecrets for now * Fix plugin config validation * Add tests for slack connector * Default connectors register on plugin init, console renamed to log, slack to message_slack * Add remaining API endpoints for action CRUD * Add list connectors API * Change actions CRUD APIs to be closer with saved objects structure * WIP * Fix broken tests * Add encrypted attribute support * Add params and connectorOptions for email * WIP * Remove action's ability to have custom ids * Remove ts-ignore * Fix broken test * Remove default connectors from this branch * Fix API integration tests to use fixture connector * Rename connector terminology to action type * Rename actionTypeOptions to actionTypeConfig * Code cleanup * Fix broken tests * Rename alerting plugin to actions * Some code cleanup and add API unit tests * Change signature of action type service execute function * Add some plugin api integration tests * Fix type check failure * Code cleanup * Create an actions client instead of an action service * Apply Bill's PR feedback * Fix broken test * Find function to have destructured params * Add tests to ensure encrypted attributes are not returned * Fix broken test * Add tests for validation * Ensure actions can be updated without re-passing the config * Remove dead code * Test cleanup * Fix eslint issue * Apply Peter's PR feedback * Code cleanup and fix broken tests * Apply Brandon's PR feedback * Add namespace support * Fix broken test * Pass services to action executors (#37194) * Pass services to action executors * Fix tests * Apply PR feedback * Apply PR feedback pt2 * Cleanup actions plugin (#37250) * Cleanup actions, move code from alerting plugin PR * Rename service terminology to registry * Use static encryption key for encrypted attributes plugin inside of tests * Empty data after create test is done running * Fix type checks * Fix inconsistent naming * add server log action for alerting (#37530) adds the first "builtin" alertType for performing a `server.log()` * Create alerting plugin (#37043) * WIP * Rename fire function and remove @ts-ignore in all places * Change naming in alerting service * Remove alert instance class for now, support interval configuration * Cleanup TS * Split alerting between registry and client * Use saved object alongside task manager instance * Add remaining alerting APIs * Change create structure * Rename some variables, change actionGroups structure * Use handlebars for templating strings at fire time * Fix params given to alert type execute function * Use alert instance class * Alert instances support meta attributes * Move alert instances deserialization * Change interval to be ms * Rename actions es archive * Fix tests to use encrypted esArchive for action record * Add create alert test to demo end to end flow * Fix type check issue * Alerts to use references to action objects * Only update task manager tasks after saved objects are fully updated * Use scope in task manager * Fix type check * Use task manager to execute actions * Convert ids into references and back * Apply PR feedback * Fix broken test * Fix some bugs * Fix test errors * Alert interval to be previous runAt + interval instead of now + interval * Add range support * Remove extra line * Cleanup * Add alert_instance.test.ts * Add alert_type_registry.test.ts * Move tests around * Create generic task manager mock * Add note about saved objects client mock * Create alert_type_registry.mock.ts * Add alerts_client.test.ts * Add create_alert_instance_factory.test.ts * Add create_fire_handler.test.ts * WIP * Fix get_create_task_runner_function.test.ts and make test pass * Make get_create_task_runner_function.test.ts 100% coverage * Add unit tests for routes * Move files around * Created transform_action_params.ts * Add get_next_run_at.ts * Add comment explaining why we copy nextRunAt * Re-use state within alert instance * Finalize code coverage in unit tests * Create base api integration tests * Add a test that ensures end to end functionality of an alert * Fix ui capabilities test * Fix broken plugin api integration test * Fix jest tests with new saved objects client * Fix broken integration tests * Change api integration test fixture to make more sense, add functions for future tests * Move alerts integration testing into own file, prep to add more tests * Add tests to ensure failed task instances get retried * Add get_create_task_runner_function.test.ts for actions, create encrypted saved objects mock * Add action validation tests * Ensure action type validation occurs on update * Test 400 on unregistered alert types * Ensure alertTypeId can't be updated * Add validation test for alert create / update * Fix broken checks / tests * Skip failing test for now * Cleanup jest tests * Ensure action objects can be updated while keeping encrypted attributes readable * Remove partial update sopport, remove ability to change actionTypeId, require config * Ensure actionTypeConfig is validated on create and update * Add alertTypeParams validation support * Fix failing tests * Ensure alert cleanup errors don't replace the original error * Pass callCluster as a service to alerts and actions * Only pass log to alerts client * Pass savedObjectsClient as a service to alerting and actions * Fix failing tests * Remove range support, provide when current and previous task got scheduled * Ensure Joi validation happens before every execute * Remove skipped tests, to be done in future PR * Apply self feedback pt1 * Apply self feedback pt2 * Fix broken tests * Apply PR feedback * PR feedback pt1 * Apply security team PR feedback * PR feedback pt1 * PR feedback pt2 * PR feedback pt3 * Fix broken tests * Fix callCluster to have signature * Revert f11a6aeb06c65e5ab54bf3cc36694845c812b6a7 * PR feedback pt4 * Remove __jest__ folders * PR feedback pt5 * Fix Joi from leaking secrets * Fire instance actions in parallel instead of series * Fix failing jest tests * Accept core api changes * Fix saved objects client mock * PR feedback pt1 * Fix eslint issues * Throw error when alert instance already fired (#39251) * Throw error when alert instance already fired * shouldFire doesn't need its own boolean value * Actions & alerting getting started user guides (#39093) * Initial user guides * Cleanup * Typos, example changes * Switch to tables, use ordered list for usage * Start docs around alert instances and templating * Documentation changes * Some adjustments * Apply PR feedback * Apply suggestions from code review Co-Authored-By: gchaps <33642766+gchaps@users.noreply.github.com> * PR feedback pt2 * Provide better examples for alert types * Apply PR feedback * Update README locations
2019-06-21 01:37:17 +02:00
defaultMessage: 'Action type "{id}" is not registered.',
values: {
id,
},
})
);
}
return this.actionTypes.get(id)! as ActionType<Config, Secrets, Params, ExecutorResultData>;
Introduce basic alerting and actions plugin (#37042) * Create actions plugin (#35679) * Basic alerting plugin with actions * Remove relative imports * Code cleanup * Split service into 3 parts, change connector structure * Ability to disable plugin, ability to get actions * Add slack connector * Add email connector * Ability to validate params and connector options * Remove connectorOptionsSecrets for now * Fix plugin config validation * Add tests for slack connector * Default connectors register on plugin init, console renamed to log, slack to message_slack * Add remaining API endpoints for action CRUD * Add list connectors API * Change actions CRUD APIs to be closer with saved objects structure * WIP * Fix broken tests * Add encrypted attribute support * Add params and connectorOptions for email * WIP * Remove action's ability to have custom ids * Remove ts-ignore * Fix broken test * Remove default connectors from this branch * Fix API integration tests to use fixture connector * Rename connector terminology to action type * Rename actionTypeOptions to actionTypeConfig * Code cleanup * Fix broken tests * Rename alerting plugin to actions * Some code cleanup and add API unit tests * Change signature of action type service execute function * Add some plugin api integration tests * Fix type check failure * Code cleanup * Create an actions client instead of an action service * Apply Bill's PR feedback * Fix broken test * Find function to have destructured params * Add tests to ensure encrypted attributes are not returned * Fix broken test * Add tests for validation * Ensure actions can be updated without re-passing the config * Remove dead code * Test cleanup * Fix eslint issue * Apply Peter's PR feedback * Code cleanup and fix broken tests * Apply Brandon's PR feedback * Add namespace support * Fix broken test * Pass services to action executors (#37194) * Pass services to action executors * Fix tests * Apply PR feedback * Apply PR feedback pt2 * Cleanup actions plugin (#37250) * Cleanup actions, move code from alerting plugin PR * Rename service terminology to registry * Use static encryption key for encrypted attributes plugin inside of tests * Empty data after create test is done running * Fix type checks * Fix inconsistent naming * add server log action for alerting (#37530) adds the first "builtin" alertType for performing a `server.log()` * Create alerting plugin (#37043) * WIP * Rename fire function and remove @ts-ignore in all places * Change naming in alerting service * Remove alert instance class for now, support interval configuration * Cleanup TS * Split alerting between registry and client * Use saved object alongside task manager instance * Add remaining alerting APIs * Change create structure * Rename some variables, change actionGroups structure * Use handlebars for templating strings at fire time * Fix params given to alert type execute function * Use alert instance class * Alert instances support meta attributes * Move alert instances deserialization * Change interval to be ms * Rename actions es archive * Fix tests to use encrypted esArchive for action record * Add create alert test to demo end to end flow * Fix type check issue * Alerts to use references to action objects * Only update task manager tasks after saved objects are fully updated * Use scope in task manager * Fix type check * Use task manager to execute actions * Convert ids into references and back * Apply PR feedback * Fix broken test * Fix some bugs * Fix test errors * Alert interval to be previous runAt + interval instead of now + interval * Add range support * Remove extra line * Cleanup * Add alert_instance.test.ts * Add alert_type_registry.test.ts * Move tests around * Create generic task manager mock * Add note about saved objects client mock * Create alert_type_registry.mock.ts * Add alerts_client.test.ts * Add create_alert_instance_factory.test.ts * Add create_fire_handler.test.ts * WIP * Fix get_create_task_runner_function.test.ts and make test pass * Make get_create_task_runner_function.test.ts 100% coverage * Add unit tests for routes * Move files around * Created transform_action_params.ts * Add get_next_run_at.ts * Add comment explaining why we copy nextRunAt * Re-use state within alert instance * Finalize code coverage in unit tests * Create base api integration tests * Add a test that ensures end to end functionality of an alert * Fix ui capabilities test * Fix broken plugin api integration test * Fix jest tests with new saved objects client * Fix broken integration tests * Change api integration test fixture to make more sense, add functions for future tests * Move alerts integration testing into own file, prep to add more tests * Add tests to ensure failed task instances get retried * Add get_create_task_runner_function.test.ts for actions, create encrypted saved objects mock * Add action validation tests * Ensure action type validation occurs on update * Test 400 on unregistered alert types * Ensure alertTypeId can't be updated * Add validation test for alert create / update * Fix broken checks / tests * Skip failing test for now * Cleanup jest tests * Ensure action objects can be updated while keeping encrypted attributes readable * Remove partial update sopport, remove ability to change actionTypeId, require config * Ensure actionTypeConfig is validated on create and update * Add alertTypeParams validation support * Fix failing tests * Ensure alert cleanup errors don't replace the original error * Pass callCluster as a service to alerts and actions * Only pass log to alerts client * Pass savedObjectsClient as a service to alerting and actions * Fix failing tests * Remove range support, provide when current and previous task got scheduled * Ensure Joi validation happens before every execute * Remove skipped tests, to be done in future PR * Apply self feedback pt1 * Apply self feedback pt2 * Fix broken tests * Apply PR feedback * PR feedback pt1 * Apply security team PR feedback * PR feedback pt1 * PR feedback pt2 * PR feedback pt3 * Fix broken tests * Fix callCluster to have signature * Revert f11a6aeb06c65e5ab54bf3cc36694845c812b6a7 * PR feedback pt4 * Remove __jest__ folders * PR feedback pt5 * Fix Joi from leaking secrets * Fire instance actions in parallel instead of series * Fix failing jest tests * Accept core api changes * Fix saved objects client mock * PR feedback pt1 * Fix eslint issues * Throw error when alert instance already fired (#39251) * Throw error when alert instance already fired * shouldFire doesn't need its own boolean value * Actions & alerting getting started user guides (#39093) * Initial user guides * Cleanup * Typos, example changes * Switch to tables, use ordered list for usage * Start docs around alert instances and templating * Documentation changes * Some adjustments * Apply PR feedback * Apply suggestions from code review Co-Authored-By: gchaps <33642766+gchaps@users.noreply.github.com> * PR feedback pt2 * Provide better examples for alert types * Apply PR feedback * Update README locations
2019-06-21 01:37:17 +02:00
}
/**
* Returns a list of registered action types [{ id, name, enabled }]
Introduce basic alerting and actions plugin (#37042) * Create actions plugin (#35679) * Basic alerting plugin with actions * Remove relative imports * Code cleanup * Split service into 3 parts, change connector structure * Ability to disable plugin, ability to get actions * Add slack connector * Add email connector * Ability to validate params and connector options * Remove connectorOptionsSecrets for now * Fix plugin config validation * Add tests for slack connector * Default connectors register on plugin init, console renamed to log, slack to message_slack * Add remaining API endpoints for action CRUD * Add list connectors API * Change actions CRUD APIs to be closer with saved objects structure * WIP * Fix broken tests * Add encrypted attribute support * Add params and connectorOptions for email * WIP * Remove action's ability to have custom ids * Remove ts-ignore * Fix broken test * Remove default connectors from this branch * Fix API integration tests to use fixture connector * Rename connector terminology to action type * Rename actionTypeOptions to actionTypeConfig * Code cleanup * Fix broken tests * Rename alerting plugin to actions * Some code cleanup and add API unit tests * Change signature of action type service execute function * Add some plugin api integration tests * Fix type check failure * Code cleanup * Create an actions client instead of an action service * Apply Bill's PR feedback * Fix broken test * Find function to have destructured params * Add tests to ensure encrypted attributes are not returned * Fix broken test * Add tests for validation * Ensure actions can be updated without re-passing the config * Remove dead code * Test cleanup * Fix eslint issue * Apply Peter's PR feedback * Code cleanup and fix broken tests * Apply Brandon's PR feedback * Add namespace support * Fix broken test * Pass services to action executors (#37194) * Pass services to action executors * Fix tests * Apply PR feedback * Apply PR feedback pt2 * Cleanup actions plugin (#37250) * Cleanup actions, move code from alerting plugin PR * Rename service terminology to registry * Use static encryption key for encrypted attributes plugin inside of tests * Empty data after create test is done running * Fix type checks * Fix inconsistent naming * add server log action for alerting (#37530) adds the first "builtin" alertType for performing a `server.log()` * Create alerting plugin (#37043) * WIP * Rename fire function and remove @ts-ignore in all places * Change naming in alerting service * Remove alert instance class for now, support interval configuration * Cleanup TS * Split alerting between registry and client * Use saved object alongside task manager instance * Add remaining alerting APIs * Change create structure * Rename some variables, change actionGroups structure * Use handlebars for templating strings at fire time * Fix params given to alert type execute function * Use alert instance class * Alert instances support meta attributes * Move alert instances deserialization * Change interval to be ms * Rename actions es archive * Fix tests to use encrypted esArchive for action record * Add create alert test to demo end to end flow * Fix type check issue * Alerts to use references to action objects * Only update task manager tasks after saved objects are fully updated * Use scope in task manager * Fix type check * Use task manager to execute actions * Convert ids into references and back * Apply PR feedback * Fix broken test * Fix some bugs * Fix test errors * Alert interval to be previous runAt + interval instead of now + interval * Add range support * Remove extra line * Cleanup * Add alert_instance.test.ts * Add alert_type_registry.test.ts * Move tests around * Create generic task manager mock * Add note about saved objects client mock * Create alert_type_registry.mock.ts * Add alerts_client.test.ts * Add create_alert_instance_factory.test.ts * Add create_fire_handler.test.ts * WIP * Fix get_create_task_runner_function.test.ts and make test pass * Make get_create_task_runner_function.test.ts 100% coverage * Add unit tests for routes * Move files around * Created transform_action_params.ts * Add get_next_run_at.ts * Add comment explaining why we copy nextRunAt * Re-use state within alert instance * Finalize code coverage in unit tests * Create base api integration tests * Add a test that ensures end to end functionality of an alert * Fix ui capabilities test * Fix broken plugin api integration test * Fix jest tests with new saved objects client * Fix broken integration tests * Change api integration test fixture to make more sense, add functions for future tests * Move alerts integration testing into own file, prep to add more tests * Add tests to ensure failed task instances get retried * Add get_create_task_runner_function.test.ts for actions, create encrypted saved objects mock * Add action validation tests * Ensure action type validation occurs on update * Test 400 on unregistered alert types * Ensure alertTypeId can't be updated * Add validation test for alert create / update * Fix broken checks / tests * Skip failing test for now * Cleanup jest tests * Ensure action objects can be updated while keeping encrypted attributes readable * Remove partial update sopport, remove ability to change actionTypeId, require config * Ensure actionTypeConfig is validated on create and update * Add alertTypeParams validation support * Fix failing tests * Ensure alert cleanup errors don't replace the original error * Pass callCluster as a service to alerts and actions * Only pass log to alerts client * Pass savedObjectsClient as a service to alerting and actions * Fix failing tests * Remove range support, provide when current and previous task got scheduled * Ensure Joi validation happens before every execute * Remove skipped tests, to be done in future PR * Apply self feedback pt1 * Apply self feedback pt2 * Fix broken tests * Apply PR feedback * PR feedback pt1 * Apply security team PR feedback * PR feedback pt1 * PR feedback pt2 * PR feedback pt3 * Fix broken tests * Fix callCluster to have signature * Revert f11a6aeb06c65e5ab54bf3cc36694845c812b6a7 * PR feedback pt4 * Remove __jest__ folders * PR feedback pt5 * Fix Joi from leaking secrets * Fire instance actions in parallel instead of series * Fix failing jest tests * Accept core api changes * Fix saved objects client mock * PR feedback pt1 * Fix eslint issues * Throw error when alert instance already fired (#39251) * Throw error when alert instance already fired * shouldFire doesn't need its own boolean value * Actions & alerting getting started user guides (#39093) * Initial user guides * Cleanup * Typos, example changes * Switch to tables, use ordered list for usage * Start docs around alert instances and templating * Documentation changes * Some adjustments * Apply PR feedback * Apply suggestions from code review Co-Authored-By: gchaps <33642766+gchaps@users.noreply.github.com> * PR feedback pt2 * Provide better examples for alert types * Apply PR feedback * Update README locations
2019-06-21 01:37:17 +02:00
*/
public list(): CommonActionType[] {
Introduce basic alerting and actions plugin (#37042) * Create actions plugin (#35679) * Basic alerting plugin with actions * Remove relative imports * Code cleanup * Split service into 3 parts, change connector structure * Ability to disable plugin, ability to get actions * Add slack connector * Add email connector * Ability to validate params and connector options * Remove connectorOptionsSecrets for now * Fix plugin config validation * Add tests for slack connector * Default connectors register on plugin init, console renamed to log, slack to message_slack * Add remaining API endpoints for action CRUD * Add list connectors API * Change actions CRUD APIs to be closer with saved objects structure * WIP * Fix broken tests * Add encrypted attribute support * Add params and connectorOptions for email * WIP * Remove action's ability to have custom ids * Remove ts-ignore * Fix broken test * Remove default connectors from this branch * Fix API integration tests to use fixture connector * Rename connector terminology to action type * Rename actionTypeOptions to actionTypeConfig * Code cleanup * Fix broken tests * Rename alerting plugin to actions * Some code cleanup and add API unit tests * Change signature of action type service execute function * Add some plugin api integration tests * Fix type check failure * Code cleanup * Create an actions client instead of an action service * Apply Bill's PR feedback * Fix broken test * Find function to have destructured params * Add tests to ensure encrypted attributes are not returned * Fix broken test * Add tests for validation * Ensure actions can be updated without re-passing the config * Remove dead code * Test cleanup * Fix eslint issue * Apply Peter's PR feedback * Code cleanup and fix broken tests * Apply Brandon's PR feedback * Add namespace support * Fix broken test * Pass services to action executors (#37194) * Pass services to action executors * Fix tests * Apply PR feedback * Apply PR feedback pt2 * Cleanup actions plugin (#37250) * Cleanup actions, move code from alerting plugin PR * Rename service terminology to registry * Use static encryption key for encrypted attributes plugin inside of tests * Empty data after create test is done running * Fix type checks * Fix inconsistent naming * add server log action for alerting (#37530) adds the first "builtin" alertType for performing a `server.log()` * Create alerting plugin (#37043) * WIP * Rename fire function and remove @ts-ignore in all places * Change naming in alerting service * Remove alert instance class for now, support interval configuration * Cleanup TS * Split alerting between registry and client * Use saved object alongside task manager instance * Add remaining alerting APIs * Change create structure * Rename some variables, change actionGroups structure * Use handlebars for templating strings at fire time * Fix params given to alert type execute function * Use alert instance class * Alert instances support meta attributes * Move alert instances deserialization * Change interval to be ms * Rename actions es archive * Fix tests to use encrypted esArchive for action record * Add create alert test to demo end to end flow * Fix type check issue * Alerts to use references to action objects * Only update task manager tasks after saved objects are fully updated * Use scope in task manager * Fix type check * Use task manager to execute actions * Convert ids into references and back * Apply PR feedback * Fix broken test * Fix some bugs * Fix test errors * Alert interval to be previous runAt + interval instead of now + interval * Add range support * Remove extra line * Cleanup * Add alert_instance.test.ts * Add alert_type_registry.test.ts * Move tests around * Create generic task manager mock * Add note about saved objects client mock * Create alert_type_registry.mock.ts * Add alerts_client.test.ts * Add create_alert_instance_factory.test.ts * Add create_fire_handler.test.ts * WIP * Fix get_create_task_runner_function.test.ts and make test pass * Make get_create_task_runner_function.test.ts 100% coverage * Add unit tests for routes * Move files around * Created transform_action_params.ts * Add get_next_run_at.ts * Add comment explaining why we copy nextRunAt * Re-use state within alert instance * Finalize code coverage in unit tests * Create base api integration tests * Add a test that ensures end to end functionality of an alert * Fix ui capabilities test * Fix broken plugin api integration test * Fix jest tests with new saved objects client * Fix broken integration tests * Change api integration test fixture to make more sense, add functions for future tests * Move alerts integration testing into own file, prep to add more tests * Add tests to ensure failed task instances get retried * Add get_create_task_runner_function.test.ts for actions, create encrypted saved objects mock * Add action validation tests * Ensure action type validation occurs on update * Test 400 on unregistered alert types * Ensure alertTypeId can't be updated * Add validation test for alert create / update * Fix broken checks / tests * Skip failing test for now * Cleanup jest tests * Ensure action objects can be updated while keeping encrypted attributes readable * Remove partial update sopport, remove ability to change actionTypeId, require config * Ensure actionTypeConfig is validated on create and update * Add alertTypeParams validation support * Fix failing tests * Ensure alert cleanup errors don't replace the original error * Pass callCluster as a service to alerts and actions * Only pass log to alerts client * Pass savedObjectsClient as a service to alerting and actions * Fix failing tests * Remove range support, provide when current and previous task got scheduled * Ensure Joi validation happens before every execute * Remove skipped tests, to be done in future PR * Apply self feedback pt1 * Apply self feedback pt2 * Fix broken tests * Apply PR feedback * PR feedback pt1 * Apply security team PR feedback * PR feedback pt1 * PR feedback pt2 * PR feedback pt3 * Fix broken tests * Fix callCluster to have signature * Revert f11a6aeb06c65e5ab54bf3cc36694845c812b6a7 * PR feedback pt4 * Remove __jest__ folders * PR feedback pt5 * Fix Joi from leaking secrets * Fire instance actions in parallel instead of series * Fix failing jest tests * Accept core api changes * Fix saved objects client mock * PR feedback pt1 * Fix eslint issues * Throw error when alert instance already fired (#39251) * Throw error when alert instance already fired * shouldFire doesn't need its own boolean value * Actions & alerting getting started user guides (#39093) * Initial user guides * Cleanup * Typos, example changes * Switch to tables, use ordered list for usage * Start docs around alert instances and templating * Documentation changes * Some adjustments * Apply PR feedback * Apply suggestions from code review Co-Authored-By: gchaps <33642766+gchaps@users.noreply.github.com> * PR feedback pt2 * Provide better examples for alert types * Apply PR feedback * Update README locations
2019-06-21 01:37:17 +02:00
return Array.from(this.actionTypes).map(([actionTypeId, actionType]) => ({
id: actionTypeId,
name: actionType.name,
License checks for actions plugin (#59070) * Define minimum license required for each action type (#58668) * Add minimum required license * Require at least gold license as a minimum license required on third party action types * Use strings for license references * Ensure license type is valid * Fix some tests * Add servicenow to gold * Add tests * Set license requirements on other built in action types * Use jest.Mocked<ActionType> instead * Change servicenow to platinum Co-authored-by: Elastic Machine <elasticmachine@users.noreply.github.com> * Make actions config mock and license state mock use factory pattern and jest mocks (#59370) * Add license checks to action HTTP APIs (#59153) * Initial work * Handle errors in update action API * Add unit tests for APIs * Make action executor throw when action type isn't enabled * Add test suite for basic license * Fix ESLint errors * Fix failing tests * Attempt 1 to fix CI * ESLint fixes * Create sendResponse function on ActionTypeDisabledError * Make disabled action types by config return 403 * Remove switch case * Fix ESLint * Add license checks within alerting / actions framework (#59699) * Initial work * Handle errors in update action API * Add unit tests for APIs * Verify action type before scheduling action task * Make actions plugin.execute throw error if action type is disabled * Bug fixes * Make action executor throw when action type isn't enabled * Add test suite for basic license * Fix ESLint errors * Stop action task from re-running when license check fails * Fix failing tests * Attempt 1 to fix CI * ESLint fixes * Create sendResponse function on ActionTypeDisabledError * Make disabled action types by config return 403 * Remove switch case * Fix ESLint * Fix confusing assertion * Add comment explaining double mock * Log warning when alert action isn't scheduled * Disable action types in UI when license doesn't support it (#59819) * Initial work * Handle errors in update action API * Add unit tests for APIs * Verify action type before scheduling action task * Make actions plugin.execute throw error if action type is disabled * Bug fixes * Make action executor throw when action type isn't enabled * Add test suite for basic license * Fix ESLint errors * Stop action task from re-running when license check fails * Fix failing tests * Attempt 1 to fix CI * ESLint fixes * Return enabledInConfig and enabledInLicense from actions get types API * Disable cards that have invalid license in create connector flyout * Create sendResponse function on ActionTypeDisabledError * Make disabled action types by config return 403 * Remove switch case * Fix ESLint * Disable when creating alert action * Return minimumLicenseRequired in /types API * Disable row in connectors when action type is disabled * Fix failing jest test * Some refactoring * Card in edit alert flyout * Sort action types by name * Add tooltips to create connector action type selector * Add tooltips to alert flyout action type selector * Add get more actions link in alert flyout * Add callout when creating a connector * Typos * remove float right and use flexgroup * replace pixels with eui variables * turn on sass lint for triggers_actions_ui dir * trying to add padding around cards * Add callout in edit alert screen when some actions are disabled * improve card selection for Add Connector flyout * Fix cards for create connector * Add tests * ESLint issue * Cleanup * Cleanup pt2 * Fix type check errors * moving to 3-columns cards for connector selection * Change re-enable to enable terminology * Revert "Change re-enable to enable terminology" This reverts commit b497dfd6b6bc88db862ad97826e8d03b094c8ed0. * Add re-enable comment * Remove unecessary fragment * Add type to actionTypeNodes * Fix EuiLink to not have opacity of 0.7 when not hovered * design cleanup in progress * updating classNames * using EuiIconTip * Remove label on icon tip * Fix failing jest test Co-authored-by: Andrea Del Rio <delrio.andre@gmail.com> * Add index to .index action type test * PR feedback * Add isErrorThatHandlesItsOwnResponse Co-authored-by: Elastic Machine <elasticmachine@users.noreply.github.com> Co-authored-by: Andrea Del Rio <delrio.andre@gmail.com>
2020-03-20 15:49:37 +01:00
minimumLicenseRequired: actionType.minimumLicenseRequired,
enabled: this.isActionTypeEnabled(actionTypeId),
enabledInConfig: this.actionsConfigUtils.isActionTypeEnabled(actionTypeId),
enabledInLicense: !!this.licenseState.isLicenseValidForActionType(actionType).isValid,
Introduce basic alerting and actions plugin (#37042) * Create actions plugin (#35679) * Basic alerting plugin with actions * Remove relative imports * Code cleanup * Split service into 3 parts, change connector structure * Ability to disable plugin, ability to get actions * Add slack connector * Add email connector * Ability to validate params and connector options * Remove connectorOptionsSecrets for now * Fix plugin config validation * Add tests for slack connector * Default connectors register on plugin init, console renamed to log, slack to message_slack * Add remaining API endpoints for action CRUD * Add list connectors API * Change actions CRUD APIs to be closer with saved objects structure * WIP * Fix broken tests * Add encrypted attribute support * Add params and connectorOptions for email * WIP * Remove action's ability to have custom ids * Remove ts-ignore * Fix broken test * Remove default connectors from this branch * Fix API integration tests to use fixture connector * Rename connector terminology to action type * Rename actionTypeOptions to actionTypeConfig * Code cleanup * Fix broken tests * Rename alerting plugin to actions * Some code cleanup and add API unit tests * Change signature of action type service execute function * Add some plugin api integration tests * Fix type check failure * Code cleanup * Create an actions client instead of an action service * Apply Bill's PR feedback * Fix broken test * Find function to have destructured params * Add tests to ensure encrypted attributes are not returned * Fix broken test * Add tests for validation * Ensure actions can be updated without re-passing the config * Remove dead code * Test cleanup * Fix eslint issue * Apply Peter's PR feedback * Code cleanup and fix broken tests * Apply Brandon's PR feedback * Add namespace support * Fix broken test * Pass services to action executors (#37194) * Pass services to action executors * Fix tests * Apply PR feedback * Apply PR feedback pt2 * Cleanup actions plugin (#37250) * Cleanup actions, move code from alerting plugin PR * Rename service terminology to registry * Use static encryption key for encrypted attributes plugin inside of tests * Empty data after create test is done running * Fix type checks * Fix inconsistent naming * add server log action for alerting (#37530) adds the first "builtin" alertType for performing a `server.log()` * Create alerting plugin (#37043) * WIP * Rename fire function and remove @ts-ignore in all places * Change naming in alerting service * Remove alert instance class for now, support interval configuration * Cleanup TS * Split alerting between registry and client * Use saved object alongside task manager instance * Add remaining alerting APIs * Change create structure * Rename some variables, change actionGroups structure * Use handlebars for templating strings at fire time * Fix params given to alert type execute function * Use alert instance class * Alert instances support meta attributes * Move alert instances deserialization * Change interval to be ms * Rename actions es archive * Fix tests to use encrypted esArchive for action record * Add create alert test to demo end to end flow * Fix type check issue * Alerts to use references to action objects * Only update task manager tasks after saved objects are fully updated * Use scope in task manager * Fix type check * Use task manager to execute actions * Convert ids into references and back * Apply PR feedback * Fix broken test * Fix some bugs * Fix test errors * Alert interval to be previous runAt + interval instead of now + interval * Add range support * Remove extra line * Cleanup * Add alert_instance.test.ts * Add alert_type_registry.test.ts * Move tests around * Create generic task manager mock * Add note about saved objects client mock * Create alert_type_registry.mock.ts * Add alerts_client.test.ts * Add create_alert_instance_factory.test.ts * Add create_fire_handler.test.ts * WIP * Fix get_create_task_runner_function.test.ts and make test pass * Make get_create_task_runner_function.test.ts 100% coverage * Add unit tests for routes * Move files around * Created transform_action_params.ts * Add get_next_run_at.ts * Add comment explaining why we copy nextRunAt * Re-use state within alert instance * Finalize code coverage in unit tests * Create base api integration tests * Add a test that ensures end to end functionality of an alert * Fix ui capabilities test * Fix broken plugin api integration test * Fix jest tests with new saved objects client * Fix broken integration tests * Change api integration test fixture to make more sense, add functions for future tests * Move alerts integration testing into own file, prep to add more tests * Add tests to ensure failed task instances get retried * Add get_create_task_runner_function.test.ts for actions, create encrypted saved objects mock * Add action validation tests * Ensure action type validation occurs on update * Test 400 on unregistered alert types * Ensure alertTypeId can't be updated * Add validation test for alert create / update * Fix broken checks / tests * Skip failing test for now * Cleanup jest tests * Ensure action objects can be updated while keeping encrypted attributes readable * Remove partial update sopport, remove ability to change actionTypeId, require config * Ensure actionTypeConfig is validated on create and update * Add alertTypeParams validation support * Fix failing tests * Ensure alert cleanup errors don't replace the original error * Pass callCluster as a service to alerts and actions * Only pass log to alerts client * Pass savedObjectsClient as a service to alerting and actions * Fix failing tests * Remove range support, provide when current and previous task got scheduled * Ensure Joi validation happens before every execute * Remove skipped tests, to be done in future PR * Apply self feedback pt1 * Apply self feedback pt2 * Fix broken tests * Apply PR feedback * PR feedback pt1 * Apply security team PR feedback * PR feedback pt1 * PR feedback pt2 * PR feedback pt3 * Fix broken tests * Fix callCluster to have signature * Revert f11a6aeb06c65e5ab54bf3cc36694845c812b6a7 * PR feedback pt4 * Remove __jest__ folders * PR feedback pt5 * Fix Joi from leaking secrets * Fire instance actions in parallel instead of series * Fix failing jest tests * Accept core api changes * Fix saved objects client mock * PR feedback pt1 * Fix eslint issues * Throw error when alert instance already fired (#39251) * Throw error when alert instance already fired * shouldFire doesn't need its own boolean value * Actions & alerting getting started user guides (#39093) * Initial user guides * Cleanup * Typos, example changes * Switch to tables, use ordered list for usage * Start docs around alert instances and templating * Documentation changes * Some adjustments * Apply PR feedback * Apply suggestions from code review Co-Authored-By: gchaps <33642766+gchaps@users.noreply.github.com> * PR feedback pt2 * Provide better examples for alert types * Apply PR feedback * Update README locations
2019-06-21 01:37:17 +02:00
}));
}
}