* Create REST API to fire actions
* Add more tests to the fire API
* Remove dead file reference
* Fix broken tests
* Fix broken test
* Update docs
* Apply PR feedback
* 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 f11a6aeb06
* 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
* Core task manager (#23555)
* Initial stab at core task manager logic
* Update task_manager readme
* Update task manager readme
* Add cancelable helper package, OSS, and general purpose, but
will be useful for writing cancelable x-pack tasks.
* Make the cancellable package promise-compliant
* Update task manager readme w/ reference to cancellable
* Change pool from lazy to eager, add support for sub-pools per task type.
* Move cancellable to task_manager, and typescriptify it.
* Working proof of concept for task manager. Still have lots to do:
clean up, tests, comments, validations, assertions, etc.
* Add pagination support to task manager fetch
* Move task manager to OSS
* Remove task manager reference from x-pack
* Make task_manager a valid core plugin
* Modify how task resource allocation works
* Remove the special case 'max' workers occupied value
* Remove x-pack package.json changes
* Make taskDefinitions a part of uiExports
* Make task docs saved-object compliant.
* Add kbnServer to the task context.
* Allow tasks to have a void / undefined return type
* revert x-pack change
* move cancellable to src/utils
* move to src/server
* use afterPluginsInit hook
* task_manager.ts rename
* add a wrapper with a setClient method
* Add tests for task runner
* Break task_pool into smaller, testable pieces
* return raw task doc fields for calling code
* remove todo comment
* helper module for default client
- setClient takes a callback fn
* fix misidentified field name
* fix rest args warning
* flatten task_pool
* remove cancellable
* return raw task doc fields for calling code
* remove todo comment
* helper module for default client
- setClient takes a callback fn
* fix rest args warning
* typescript fixes
* roll back setClient takes a callback
* createTaskRunner returns an object with run/cancel functions
* Test task store, tweak task poller tests
* Rename num_workers to max_workers
* Tweak task pool method names
* Fix cancellable test, and ts errors
* Rename doc to _doc
* Fix the doc type in the task manager index mappings
* Make task costs configurable in kibana.yml
* fix a tslint warning
* TaskManager.afterPluginsInit replaces circuitous stuff
* addMiddleware, implement beforeSave
* wip
* comment
* run context stuff
* pretty fix
* comments
* lint/pretty fixes
* safeties in case they don't define both beforeRun and beforeSave
* task runner test constructor opts fix
* Add task_manager integration tests
* FIx readme mistakes, fix schedule signature
* Fix integration tests
* Add blurb about middleware
* make a libs directory for the small things
* test for extractTaskDefinitions
* unit test for middleware
* Comment, refactor, and test task_manager
* Touch up comments
* Make task store throw error if given an unknown task type
* Fix sample task definition in readme
* Make task manager toggle on / off based on Elasticsearch connectivity
* Prevent task manager from crashing Kibana if
elasticsearch plugin is disabled
* Fix task manager signature
* Move the task manager into the task manager mixin,
fix tests. It's an uber integration object anyway, so
it seemed to make sense to keep it in one place.
* Fix task manager integration tests
* Update the task manager index creation to use auto_expand_replicas
* Fix task manager integration tests
* Fix task manager integration tests
* Fix the overzealous deletion of .kibana during tests
* Core task manager
* Allow hardcoded ID passed in
* comments
* don't deconstruct type and task for payload
* remove uiExport support
* move task_manager to x-pack/plugins
* expose as client on the plugin namespace
* fix tests
* move plugin api integration tests
* roll back readme sample task definition example
* fix sample plugin link
* server.taskManager
* sanitizeTaskDefinitions
* fix integration tests
* sanitize rename
* assert unintialized and check for duplicates in registerTaskDefinitions
* Remove unnecessary defaults from task_manager.test.ts
* Remove task manager from OSS
* Remove task manager from src
* Tidy up task_manager unit tests around elasticsearch status changes
* Integration test for specifying ID in scheduling
* Task_manager init -> preInit to allow other plugins to consume
taskManager in their init.
* Remove task manager integration tests from OSS
* spelling
* readme fix
* fix test code impacted by hapi upgrade
* Task Manager index creation changes (#24542)
* Uses putTemplate for task manager mappings and index settings.
* Removes create option.
* Opposite day, the test catches up to the code changes.
* Ignores index unavailable during searches.
* Improve taskRunner's processResult (#24880)
* Set task state to idle after run, and add failed state
* fix tests
* Test alerting demo (#25136)
* Ensures that task store init gets called before schedule.
* Removes unused option for debugging purposes.
* Fix unit tests because a second callCluster was made.
* Task manager starts sanely.
Does not preInit
Will not allow definitions after initialization
Creates store immediately.
Modifies store after all plugins have initialized
Adds static tasks that will be defined by plugins.
* Task manager should not allow operations before initialization.
* Attempts to fix runner tests.
* Fixes unit test contract with APIs.
* Removes unused type definitions.
* Removes unused package json.
* Removes unused import type.
* Removes unnecessary async applied to a function.
* Returns diferently if task store has already initialized.
* Explains how to add static task instances to task definitions. (#25880)
* Tasks cannot be scheduled until task manager is initialized.
* Adds task manager api integration tests to ci group4.
* Context of describe test must be the test framework object.
* Update src/es_archiver/lib/indices/kibana_index.js
regex update to actually disallow non-kibana system indices
Co-Authored-By: tsullivan <tsullivan@users.noreply.github.com>
* verify fillPool exception passing
* readme update about max_workers/numWorkers
* change forEach to reduce
* use public interfaces in internal method
* replace getMaxAttempts with public readonly maxAttempts
* Update x-pack/plugins/task_manager/task_store.ts
`throw new Error` and initializattion spell fix
Co-Authored-By: tsullivan <tsullivan@users.noreply.github.com>
* min = 1 for max_workers
Co-Authored-By: tsullivan <tsullivan@users.noreply.github.com>
* timeOut => timeout
* min 1
* scope as an array
* no retries
Co-Authored-By: tsullivan <tsullivan@users.noreply.github.com>
* ConcreteTaskInstance is a TaskInstance
* remove guard per joi logic
* more return types for functions
* more comments around incremental back-off
Co-Authored-By: tsullivan <tsullivan@users.noreply.github.com>
* throw error instead of return undefined
* poll_interval min 1000
* avoid handling err.stack directly
* break up processResult
* fix a few runtime issues
* only fetch idle tasks
* remove check for status idle
* always return a state, and when there is an error return the state we had at beforeRun
* check isStarted before attemptWork
Co-Authored-By: tsullivan <tsullivan@users.noreply.github.com>
* ts fix
* Initial stab at core task manager logic
* Update task_manager readme
* Update task manager readme
* Add cancelable helper package, OSS, and general purpose, but
will be useful for writing cancelable x-pack tasks.
* Make the cancellable package promise-compliant
* Update task manager readme w/ reference to cancellable
* Change pool from lazy to eager, add support for sub-pools per task type.
* Move cancellable to task_manager, and typescriptify it.
* Working proof of concept for task manager. Still have lots to do:
clean up, tests, comments, validations, assertions, etc.
* Add pagination support to task manager fetch
* Move task manager to OSS
* Remove task manager reference from x-pack
* Make task_manager a valid core plugin
* Modify how task resource allocation works
* Remove the special case 'max' workers occupied value
* Remove x-pack package.json changes
* Make taskDefinitions a part of uiExports
* Make task docs saved-object compliant.
* Add kbnServer to the task context.
* Allow tasks to have a void / undefined return type
* revert x-pack change
* move cancellable to src/utils
* move to src/server
* use afterPluginsInit hook
* task_manager.ts rename
* add a wrapper with a setClient method
* Add tests for task runner
* Break task_pool into smaller, testable pieces
* return raw task doc fields for calling code
* remove todo comment
* helper module for default client
- setClient takes a callback fn
* fix misidentified field name
* fix rest args warning
* flatten task_pool
* remove cancellable
* return raw task doc fields for calling code
* remove todo comment
* helper module for default client
- setClient takes a callback fn
* fix rest args warning
* typescript fixes
* roll back setClient takes a callback
* createTaskRunner returns an object with run/cancel functions
* Test task store, tweak task poller tests
* Rename num_workers to max_workers
* Tweak task pool method names
* Fix cancellable test, and ts errors
* Rename doc to _doc
* Fix the doc type in the task manager index mappings
* Make task costs configurable in kibana.yml
* fix a tslint warning
* TaskManager.afterPluginsInit replaces circuitous stuff
* addMiddleware, implement beforeSave
* wip
* comment
* run context stuff
* pretty fix
* comments
* lint/pretty fixes
* safeties in case they don't define both beforeRun and beforeSave
* task runner test constructor opts fix
* Add task_manager integration tests
* FIx readme mistakes, fix schedule signature
* Fix integration tests
* Add blurb about middleware
* make a libs directory for the small things
* test for extractTaskDefinitions
* unit test for middleware
* Comment, refactor, and test task_manager
* Touch up comments
* Make task store throw error if given an unknown task type
* Fix sample task definition in readme
* Make task manager toggle on / off based on Elasticsearch connectivity
* Prevent task manager from crashing Kibana if
elasticsearch plugin is disabled
* Fix task manager signature
* Move the task manager into the task manager mixin,
fix tests. It's an uber integration object anyway, so
it seemed to make sense to keep it in one place.
* Fix task manager integration tests
* Update the task manager index creation to use auto_expand_replicas
* Fix task manager integration tests
* Fix task manager integration tests
* Fix the overzealous deletion of .kibana during tests
* Core task manager
* Allow hardcoded ID passed in
* comments
* don't deconstruct type and task for payload
* remove uiExport support
* move task_manager to x-pack/plugins
* expose as client on the plugin namespace
* fix tests
* move plugin api integration tests
* roll back readme sample task definition example
* fix sample plugin link
* server.taskManager
* sanitizeTaskDefinitions
* fix integration tests
* sanitize rename
* assert unintialized and check for duplicates in registerTaskDefinitions
* Remove unnecessary defaults from task_manager.test.ts
* Remove task manager from OSS
* Remove task manager from src
* Tidy up task_manager unit tests around elasticsearch status changes
* Integration test for specifying ID in scheduling
* Task_manager init -> preInit to allow other plugins to consume
taskManager in their init.
* Remove task manager integration tests from OSS