* Old search strategy cleanup
* restore rollup strategy
* Remove hasSearchStategyForIndexPattern
* ts
* fix jest tests
* cleanup exports
* pass index pattern type to server for rollups
* merge fix
* Fix types
* ts fixes
* oss strategy error handling
* update translations
* jest test fix
* Use indexType instead of index
* code review 1
* updated docs
* jest test
* jest snapshot
Co-authored-by: Elastic Machine <elasticmachine@users.noreply.github.com>
* [Metrics Alerts] Fix error when a metric reports no data
* Clarify no data case handler, add separate error state
* Throw error state when callCluster fails
Before EuiInMemoryTable had TypeScript support we used our own typings and some state & CSS fixes. This is now all solved by the original EUI component.
- Use EuiInMemoryTable instead of custom typed table.
- Deletes some legacy leftover files.
The Alert Instances list calculates duration on each page load, which makes it hard for the test runner to know what the correct value should be.
In the PR we expose the epoch used by the duration calculation in such a way that the test runner can read it and asses the duration correctly.
This is a pre-cursor to https://github.com/elastic/kibana/issues/58529
I realized a bit ago that we weren't making quite enough info available
in the action parameter templating that happens when alerts schedule
actions to execute. Missing were alert name, tags, and spaceId.
For the index threshold alert, I had added them to it's context, but
then every other action would have to do the same if they also
wanted those values.
So I added these as additional top-level variables that can be
used in templates, along with the alert id, alert instance id,
context, and state. The other bits in RawAlert didn't seem
that interesting, to be used as an action parameter.
* scaffolding and notes.md
* add skeleton event generator to kibana
* add optional entityID param to generateEvent
* add tree generation
* add tests
* working tests
* fix up tests
* fix linting
* fix event types
* make process parent types consistent
* make generator match types
* move test resolver node out of common types
* fix random string generation
* fix typecheck errors
* remove extraneous stuff
* address PR comments
* add test for full resolver tree
* cleanup
* make tests clearer
* add seedrandom to endpoint plugin. contains DONOTMERGE example code
* remove robs test
* start replacing random with seedrandom
* use seeded random for uuidv4
* separate out IP randomization
* typecheck fixes
Co-authored-by: oatkiller <robert.austin@elastic.co>
Co-authored-by: Elastic Machine <elasticmachine@users.noreply.github.com>
* Convert our manual throwing of TypeError to a custom Error
Throwing a TypeError meant that our manual errors were indistinguishable
from, say, trying to invoke a method on undefined. This adds a custom
error, BadRequestError, that disambiguates that situation.
* Present API Error messages to the user
With Core's new HTTP client, an unsuccessful API call will raise an
error containing the body of the response it received. In the case of
SIEM endpoints, this will include a useful error message with
potentially more specificity than e.g. 'Internal Server Error'.
This adds a type predicate to check for such errors, and adds a handling
case in our errorToToaster handler.
If the error does not contain our SIEM-specific message, it will fall
through as normal and the general error.message will be displayed in the
toaster.
* Remove unnecessary use of throwIfNotOk in our client API calls
The new HTTP client raises an error on a 4xx or 5xx response, so there
should not be a case where throwIfNotOk is actually going to throw an
error.
The established pattern on the frontend is to catch errors at the call
site and handle them appropriately, so I'm mainly just verifying that
these are caught where they're used, now.
* Move errorToToaster and ToasterError to general location
These were living in ML since that's where they originated. However, we
have need of it (and already use it) elsewhere.
The basic pattern for error handling on the frontend is:
1) API call throws error
2) caller catches error and dispatches a toast
throwIfNotOk is meant to convert the error into a useful message in 1).
We currently use both errorToToaster and displayErrorToast to display
that in a toaster in 2)
Now that errorToToaster handles a few different types of errors, and
throwIfNotOk is going to be bypassed due to the new client behavior of
throwing on error, we're going to start consolidating on:
1) Api call throws error
2) caller catches error and passes it to errorToToaster
* Refactor Rules API functions to not use throwIfNotOk
* Ensures that all callers of these methods properly catch errors
* Updates error toasterification to use errorToToaster
* Simplifies tests now that we mainly just invoke the http client and
return the result.
throwIfNotOk is not being used in the majority of cases, as the client
raises an error and bypasses that call.
The few cases this might break are where we return a 200 but have errors
within the response. Whether throwIfNotOk handled this or not, I'll need
a simpler helper to accomplish the same behavior.
* Define a type for our BulkRule responses
These can be an array of errors OR rules; typing it as such forces
downstream to deal with both. enableRules was being handled correctly
with the bucketing helper, and TS has confirmed the rest are as well.
This obviates the need to raise from our API calls, as bulk errors are
recoverable and we want to both a) continue on with any successful rules
and b) handle the errors as necessary. This is highly dependent on the
caller and so we can't/shouldn't handle it here.
* Address case where bulk rules errors were not handled
I'm not sure that we're ever using this non-dispatch version, but it was
throwing a type error. Will bring it up in review.
* Remove more throwIfNotOk uses from API calls
These are unneeded as an error response will already throw an error to
be handled at the call site.
* Display an error toaster on newsfeed fetch failure
* Remove dead code
This was left over as a result of #56261
* Remove throwIfNotOk from case API calls
Again, not needed because the client already throws.
* Update use_get_tags for NP
* Gets rid of throwIfNotOK usage
* uses core http fetch
* Remove throwIfNotOk from signals API
* Remove throwIfNotOk
This served the same purpose as errorToToaster, but in a less robust
way. All usages have been replaced, so now we say goodbye.
* Remove custom errors in favor of KibanaApiError and isApiError type predicate
There was no functional difference between these two code paths, and
removing these custom errors allowed us to delete a bunch of associated
code as well..
* Fix test failures
These were mainly related to my swapping any remaining fetch calls with
the core router as good kibana denizens should :salute:
* Replace use of core mocks with our simpler local ones
This is enough to get our tests to pass. We can't use the core mocks for
now since there are circular dependencies there, which breaks our build.
* add signal api unit tests
* privilege unit test api
* Add unit tests on the signals container
* Refactor signals API tests to use core mocks
* Simplifies our mocking verbosity by leveraging core mocks
* Simplifies test setup by isolating a reference to our fetch mock
* Abstracts response structure to pure helper functions
The try/catch tests had some false positives in that nothing would be
asserted if the code did not throw an error. These proved to be masking
a gap in coverage for our get/create signal index requests, which do not
leverage `throwIfNotOk` but instead rely on the fetch to throw an error;
once that behavior is verified we can update those tests to have our
fetchMock throw errors, and we should be all set.
* Simplify signals API tests now that the subjects do less
We no longer re-throw errors, or parse the response, we just return the
result of the client call. Simple!
* Simplify API functions to use implict returns
When possible. Also adds missing error-throwing documentation where
necessary.
* Revert "Display an error toaster on newsfeed fetch failure"
This reverts commit 64213221f5.
* Error property is readonly
* Pull uuid generation into default argument value
* Fix type predicate isApiError
Uses has to properly inspect our errorish object. Turns out we have a
'message' property, not an 'error' property.
* Fix test setup following modification of type predicate
We need a message (via new Error), a body.message, and a
body.status_code to satisfy isApiError.
Co-authored-by: Xavier Mouligneau <189600+XavierM@users.noreply.github.com>
Co-authored-by: Elastic Machine <elasticmachine@users.noreply.github.com>
* Add a hook for seamlessly handling onClick and href props of links, buttons etc
Co-authored-by: Elastic Machine <elasticmachine@users.noreply.github.com>
Co-authored-by: Felix Stürmer <weltenwort@users.noreply.github.com>
* add management section to SavedObjectsType
* adapt import/export routes to get types accessor
* add documentation
* update generated doc
* update migration guide
* use request context to access exportable types
* update generated doc
* adapt SavedObjectsManagement to use the registry
* stop magical tricks about the config type, register it as any other so type.
* fix FTR assertions
* fix so_mixin tests
* register the `config` type from the uiSettings service
* nits and comments
* update generated doc
* remove true from dynamic property definition, use force-cast back for config type
* remove obsolete test comment
in cytoscape graph. Also selects root nodes with no incoming edges
rather than just unconnected nodes.
Co-authored-by: Elastic Machine <elasticmachine@users.noreply.github.com>
Prior to this PR, the alerting UI used two HTTP endpoints provided by the
Kibana watcher plugin, to list index and field names. There are now two HTTP
endpoints in the alerting_builtins plugin which will be used instead.
The code for the new endpoints was largely copied from the existing watcher
endpoints, and the HTTP request/response bodies kept pretty much the same.
resolves https://github.com/elastic/kibana/issues/53041
* wip
* wip
* wip
* will this work?
* wip but it works
* pedro
* remove thing
* remove TODOs
* fix type issue
* add tests to check that alert index api works
* Revert "add tests to check that alert index api works"
This reverts commit 5d40ca18337cf8deb63a0291150780ec094db016.
* Moved schema
* undoing my evils
* fix comments. fix incorrect import
Co-authored-by: Elastic Machine <elasticmachine@users.noreply.github.com>
* Exclude disallowed, private setting at index creation
* Remove intl from tabs component
* Added logic for checking the current index status
* Added ES contract integration test
Using _cluster/state is considered internal. This adds an integration
test for checking the contract in CI.
* Add the client side notification for closed indices
* First version of end-to-end functionality working
* Clean up unused, incorrect type information
* Fix type issues and added a comment about the new reindex options
* Fixed server side tests, added comments and logic updates
Updated the handling of reindexOptions to make it more
backwards compatible (treat it as if it could be undefined).
Also update the logic for checking for open or closed indices.
No optional chaining! It should break if the response does not
exactly match.
* Clean up unused code
* Improved idempotency of test and check explicitly for "close".
Rather check for the specific value we want, as this is what is
also gauranteed by the tests. In this way, the information we
send back to the client is also more accurate regarding the index
status. If, in future, more index states are introduced this will
need to be revisited if it affects the ability for an index to be
re-indexed.
* Update client-side tests
* Fix types
* Handle a case where the index name provided may be an alias
* Fix types
* merge-conflict: finish merge conflict resolution
* Update x-pack/plugins/upgrade_assistant/public/application/components/tabs/checkup/deprecations/reindex/closed_warning_icon.tsx
Co-Authored-By: Alison Goryachev <alisonmllr20@gmail.com>
* merge-conflict: Remove duplicate import
VSCode does not auto-save as expected :sigh:
* ui: Revisit the UI
Moved the warning icon to inside of the button and tooltip to
on the button.
Added a callout to the reindex flyout for when an index is closed.
* logic: slight update to when the index closed callout is shown
We only show the index closed callout in the flyout when the
reindex operation is not considered "completed"
* tests: fix jest tests
* refactor: remove "openAndClose" from reindex endpoints
"openAndClose" should just happen automatically. The user should
not have to pass the flag in, that would be a weird API. We just
need to warn the user about that reindexing a closed index will
take more resources
* test: update upgrade assistant integration test
* fix: types
* copy: use sentence case
* refactor: use the in scope declaration of reindex op
* test: Clean up tests
Reindexing test was generating index name, could just get it from
server response. Also removed openAndClose from all integration
tests
Co-authored-by: Elastic Machine <elasticmachine@users.noreply.github.com>
Co-authored-by: Alison Goryachev <alisonmllr20@gmail.com>
When only one node is displayed, show an empty message.
Also:
* Start adding a basic Jest test for the ServiceMap component
* Fix bug where EuiDocsLink was rendering "children" instead of the actual children
Closes#59326.
Closes#59128.
* use inline snapshots instead of snapshots
* hide input value from error messages
* update core snapshots
* update xpack snapshots
* fix ftr assertions
* fix new snapshots
* hide values for byte_size and duration
* update new snapshots
* remove another byte_size value reference
* fix yet another value references in error messages
* update xpack snapshots
* update xpack ftr assertions
Migrates the client side plugin of transforms to NP.
- Gets rid of the last parts of the shim (http, documentation links)
- Moves the plugin from x-pack/legacy/plugins/transform/public to x-pack/plugins/transform
- Creates a custom mock for appDependencies based on NP services
- Fixes jest tests to get rid of all act() related warnings
Changes the alerting UI to use the new time series query HTTP endpoint provided by the builtin index threshold alertType; previously it used a watcher HTTP endpoint.
This is part of the ongoing index threshold work tracked in https://github.com/elastic/kibana/issues/53041
* Unifying the test index name for resolver and alerts
* Endpoint isn't sending the agent field so check for it
Co-authored-by: Elastic Machine <elasticmachine@users.noreply.github.com>
* Added server side logic for handling batch reindex
* Remove literal string interpolation from translation
* Refactor return value of batch endpoint
"sucesses" does not communicate accurately what has happened.
"started" more closely reflects what has happened.
* First iteration of batch queues
* Single queue
Changed the batchqueues implementation to only using a single queue
- since there is only one ES that it is interacting with.
Before continuing with this work, just making sure that these pre-
cautions are necessary!
* Clean up old batch queue implementation
* Slight refactor
* Revert batch queues implementation
* Introduction of QueueSettings
Queue settings can be set on a reindex operation and set a
timemstamp value on the reindex operation for the scheduler
to use down the line for ordering operations and running them
in series
* Updated worker logic to handle items in queue in series
* Refactor /batch endpoint response to "enqueued" not "started"
* Fixed jest tests
* Refactor worker refresh operations for readability
Created a new file op_utils where logic repsonsible for sorting
and ordering reindex operation saved objects is.
* Add batch API integration test
Also assert that reindexing is happening in the expected order
* Added a new endpoint: GET batch/queue
This allows users of the API to see what the current queue state
is for visibility. Using the queue endpoint int he API integration
tests for batch too.
* Reset the queuedAt timestamp on resume
If a reindexOperation is being resumed and put in a queue we
also need to reset the queuedAt timestamp to respect the new
batch queue ordering.
* Fix jest test
Added 'undefined' as the second optional param to
resumeIndexOperation call.
Co-authored-by: Elastic Machine <elasticmachine@users.noreply.github.com>
## [SIEM] Fixes dragging entries to the Timeline while data is loading may trigger a partial page reload
The `react-beautiful-dnd` library, upgraded during the `7.6` stack release from
`10.0.1` to `12.2.0`, includes a breaking change to the way [errors are handled](https://github.com/atlassian/react-beautiful-dnd/blob/v12.0.0/docs/guides/setup-problem-detection-and-error-recovery.md)
and recovered. As a result of this change, an uncaught error may trigger a
an effect that feels (from the perspective of a user) like a partial page
reload.
The most common condition where this can occur is when dragging entries to the
Timeline while data is loading, per the animated gif below:
![refresh-error](https://user-images.githubusercontent.com/4459398/76016029-59755f80-5ed9-11ea-858d-cb1189d22ea9.gif)
## Reproduction steps
1. Navigate to the Hosts page
2. Open the Timeline
3. Drag a host to the Timeline
4. While data is still loading, drag a different host to the Timeline to create an `or` query
**Expected Results**
* The page does not appear to reload
* In development mode, a single error is logged to the JS console
**Actual Results**
* The page appears to reload
* In development mode, two errors are logged to the JS console
**Error 1**
```
react-beautiful-dnd
Invariant failed: Cannot find droppable entry with id [droppableId.content.event-details-value-default-draggable-plain-column-renderer-formatted-field-value-timeline-1-kLGooXABOOUskGlPiQw5-@timestamp-1583260131000]👷<200d> This is a development only message. It will be removed in production builds.
in Draggable (created by ConnectFunction)
in ConnectFunction (created by PrivateDraggable)
in PrivateDraggable (created by PublicDraggable)
in PublicDraggable (created by Droppable)
in Droppable (created by ConnectFunction)
in ConnectFunction
```
**Error 2**
```
react-beautiful-dnd
Invariant failed: Cannot find droppable entry with id [droppableId.content.event-details-value-default-draggable-plain-column-renderer-formatted-field-value-timeline-1-kLGooXABOOUskGlPiQw5-@timestamp-1583260131000]👷<200d> This is a development only message. It will be removed in production builds.
in ErrorBoundary (created by DragDropContext)
in DragDropContext (created by Anonymous)
in Anonymous
```
### Desk testing
Tested locally in:
* Chrome `80.0.3987.122`
* Firefox `73.0.1`
* Safari `13.0.5`
Fixes https://github.com/elastic/kibana/issues/59466
* [Reporting] Handle error if intercepted request could not be continued
* [Reporting/Screenshots] Handle page setup errors and capture the page with errors shown
* show warnings in UI
* i18n todos
* Cleanup an old troubleshooting task
* set the default for all new timeout settings to 30 seconds
* fix some tests
* update error strings
* Cleanup 2
* fix tests 2
* polish the job info map status items
* More error message updating
* Log the error that was caught
* Oops fix ts
* add documentation
* fix i18n
* fix mocha test
* use the openUrl timeout as the default for navigation
* fix comment
Co-authored-by: Elastic Machine <elasticmachine@users.noreply.github.com>
* refactor to use io-ts, to be able to have ressource with sub, add total comments via comment_ids, be able to delete multiple cases/comments
* fix test
* adapt UI to refactor of the API
* put it back the way it was
* clean up to get cases
* review I
* review II - bring back url parameter
* fix merge
Co-authored-by: Elastic Machine <elasticmachine@users.noreply.github.com>
* [Maps] top term percentage property
* populate percentage in feature properties
* TS work
* clean up TS
* fix all type errors
* unit test for esAggFieldsFactory
* clean up
* i18n cleanup
* do not show decimal place for perentage
* fix jest expects
* fix eslint errors
* tslint errors
* handle empty top bucket aggregation
Co-authored-by: Elastic Machine <elasticmachine@users.noreply.github.com>
* Add custom action to registry and show actions list in siem
* Exposed action form as reusable component
* Fixed few small bugs
* Fixed red ci
* Fixed type checks
* Fixed failed tests
* Fixed due to comments
* Fixed type check errors
* Fixed plugin check
* Rebalancing CI groups according to #58930
* Fixed merge issues
* Add async search strategy
* Add async search
* Fix async strategy and add tests
* Move types to separate file
* Revert changes to demo search
* Update demo search strategy to use async
* Add async es search strategy
* Return response as rawResponse
* Poll after initial request
* Add cancellation to search strategies
* Add tests
* Simplify async search strategy
* Move loadingCount to search strategy
* Update abort controller library
* Bootstrap
* Abort when the request is aborted
* Add utility and update value suggestions route
* Fix bad merge conflict
* Update tests
* Move to data_enhanced plugin
* Remove bad merge
* Revert switching abort controller libraries
* Revert package.json in lib
* Move to previous abort controller
* Add support for frozen indices
* Fix test to use fake timers to run debounced handlers
* Revert changes to example plugin
* Fix loading bar not going away when cancelling
* Call getSearchStrategy instead of passing directly
* Add async demo search strategy
* Fix error with setting state
* Update how aborting works
* Fix type checks
* Add test for loading count
* Attempt to fix broken example test
* Revert changes to test
* Fix test
* Update name to camelCase
* Fix failing test
* Don't require data_enhanced in example plugin
* Actually send DELETE request
* Use waitForCompletion parameter
* Use default search params
* Add support for rollups
* Only make changes needed for frozen indices/rollups
* Fix tests/types
* Don't include skipped in loaded/total
Co-authored-by: Elastic Machine <elasticmachine@users.noreply.github.com>
* Added possibility to embed connectors flyout
* Fixed type checks and removed example from siem start page
* Fixed jest tests
* Fixed failing tests
* fixed type check
* Added config for siem tests
* Fixed failing tests
* Fixed due to comments
* Added missing documentation
* Updated EUI to 20.0.1; updated typescript usage
* snapshots
* Upgrade to eui 20.0.2, fix one more type
* PR feedback
* Update EUI icon usage to the correct types
* Updated with master
- Deprecates the custom KibanaContext.
- Where applicable dependencies provided via KibanaContext are now passed on via AppDependencies.
- The main feature of KibanaContext was to populate index pattern and saved search information for the transform wizard. This is now provided via the useSearchItems() custom hook.
* [ML] Add support for date_nanos time field in anomaly job wizard
* [ML] Edits following review
* [ML] Add functional test for creating job off date_nanos data
* Makes alerting and actions optional properties for interface RequestHandlerContext
* Added an error response result if context for actions and alerting is not registered
* Implemented edit alert functionality
* Added unit tests
* Added functional test for edit alert
* Fixed failed tests
* Fixed edit api
* Fixed due to comments
* Fixed functional test
* Fixed tests
* Fixed add alert
* Small type fix
* Fixed jest test
* Fixed type check
* Fixed bugs with interval and throttle + index threshold expression
* Add direct access link registry and dashboard impl and use in ML
* Add example plugin with migration example
* address code review comments
* Fixes, more code review updates
* Readme clean up
* add tests
* remove else
* Rename everything from DirectAccessLinkGenerator to the much short UrlGenerator. also fix the ml # thing and return a relative link from dashboard genrator
* add important text in bold
* Move url generators into share plugin
* add correct i18n prefix
* Fix timeRange url name
* make share plugin optional for dashboard
* fix code owners
* Use base UrlGeneratorState type, add comments
* Fix hash bug and add test that would have caught it
* Pull core service init out into separate function
* Call bind function from embeddable factory constructor
* Move inspector init back to start method. Remove old license check file
* Add TS types
- Deprecates the custom KibanaContext.
- Where applicable dependencies provided via KibanaContext are now passed on via AppDependencies.
- The main feature of KibanaContext was to populate index pattern and saved search information for the transform wizard. This is now provided via the useSearchItems() custom hook.
* wip
* review follow up
* make ACTION a prefix, not SUFFIX
* fix path
* add warnings about casting to ActionType
* Make context an object in examples, not a string
* require object context, which seems to fix the partial requirement in type and thus the type issue
* mistake
Co-authored-by: Elastic Machine <elasticmachine@users.noreply.github.com>
* [SIEM] Fix Timeline registerProvider to be called only when it's needed
* cleanup
* add unit tests
Co-authored-by: Elastic Machine <elasticmachine@users.noreply.github.com>
* [APM] Make typescript optimization process compatible with NP
Rather than creating an extra tsconfig.json file in the APM folder, simply change the one in x-pack root, and include APM files from both legacy + NP.
* Update dev_docs/typescript.md
* Use spread op instead of assign
* Use console.error instead of console.log
* [ML] validate mml based on estimated value
* [ML] better memoize
* [ML] memoryInputValidator unit tests
* [ML] cache mml errors
* [ML] prevent override
* [ML] fix validators, add unit tests
* [ML] ignore typing issue with numeral
* [ML] fix validateMinMML
* [ML] fix useCreateAnalyticsForm test
* [ML] setEstimatedModelMemoryLimit to the fallback value in case of an error
* Define a very basic SiemClient
We're going to add our client to the route handler context. Currently,
it's sole purpose is to provide us with the signalsIndex to use for the
request.
This will allow us to stop passing around most uses of config and
getSpaceId, as they were used for this same purpose.
* WIP: Convert first DE route to NP
This is one of the more comprehensive routes, so I think we're good to
convert the rest.
* Abstract joi/NP validator to helper
We're gonna need this all over the place. Until our schema can generate
an NP-compatible type, we can use this helper to generate an equivalent
validator.
* Second route down
* Another one
* updateRulesRoute
* Fix exports
* patchRulesRoute
* Normalize request param type names
* findRulesRoute
* addPrepackagedRulesRoute
* getPrepackagedRulesStatusRoute
* createRulesBulkRoute
* updateRulesBulkRoute
* patchRulesBulkRoute
* deleteRulesBulkRoute
* importRulesRoute
* exportRulesRoute
* findRulesStatusesRoute
* setSignalsStatusRoute
* querySignalsRoute
* Remove unused type
* createIndexRoute
* Convert readIndexRoute
Removes support for a HEAD request here, becuase it was only used by the
signal_index_exists script (which is now gone). A GET request will have
the same semantics, with a few more bytes in the response.
* deleteIndexRoute
* readTagsRoute
* readPrivilegesRoute
We're incorrectly accessing request.auth in here still, fixing that
next.
* We are always authenticated until we support optional auth
* Clean up our route initialization
* Remove our now-unused ClientsService
* Remove unused getIndex helper and references
* Remove legacy route initialization (partial application)
All our routing tests are still totally broken. Coming up!
* Reference name property in context registration
This should be replaced with a reference to the constant, but at least
this doesn't add a third way it's being referenced.
* Convert our first route tests to NP
The API for our test utils isn't final, but this at least gets some
tests passing. We'll see how it handles a more complex example.
* Create Rules tests
* Update addPrepackagedRules tests
There were a lot of incorrect tests in here due to some incorrect route
registration: we were asserting a 404 but receiving a false positive
because the route we wanted didn't exist.
* Read Privileges Route tests
* Delete Rules route tests
* Use more permissive validation in request mock
* createRulesBulkRoute tests
* deleteRulesBulkRoute tests
* More explicit result mock
It was very unclear in the tests what this mock represented.
* findRulesRoute tests
* getPrepackagedRulesRoute tests
* PatchRulesBulkRoute tests
* Convert migrated tests to newest interface
* PatchRulesRoute tests
Also fixes a potential false positive in our patch_rule_bulk_route
validation tests by providing a more realistic payload with a single key
missing.
* Rename file for consistency
* UpdateRulesBulkRoute tests
* deleteRulesBulkRoute tests
* findRulesStatusRoute tests
* updateRulesRoute tests
* setSignalStatusRoute tests
* querySignalsRoute tests
This actually caught a bug where we were not resolving our response before returning
* Update schema tests following rename of type
* Converts Import Rules route tests to NP form
Most of these tests are failing due to our request not being parsed by
Hapi as it previously was. Once we figure out how to generate a
post-middleware request with a file stream, these should be easily
fixed.
* Remove unused import
This was the last remaining reference to hapi in our server plugin. yay!
* Remove unnecessary tests
We're already covering our error paths here.
* Hit success branch of bulk patch route test
* Add test around error path in our route
* Update our router to validate requests by default
This gives us two important behaviors:
1. Requests to inject() will be populated with default values
2. We can test request validation independent of a handler call
* This allows more straightforward assertions as we don't have to
disambiguate between a schema rejection and a data rejection.
* Update route validation tests with new interface
We don't need to reach into our route in the test, nor ts-ignore it.
* Update ImportRules route tests for NP testing
Gets rid of the multipart-form processing that Hapi would convert for us
into a Readable stream. Instead, we generate our own post-middleware
requst that's got a stream on it.
* Remove unnecessary router method
A bug in an initial implementation of inject() lead me to believe that
validations were removing the stream from our requests; this turned out
to be false! YAGNI
* Add an adapter for our route responses
This provides a uniform interface of { body, status, calls }, where body
and status come from the highest-status call (in the case of many). In a
case where we build multiple responses, the preference is to return the
most problematic one first. If there's an issue, one can look into the
other calls and see what's going on.
This breaks the tests and is not fully implemented, but this will allow
us to change how we build responses without affecting our tests.
* Fix remaining assertions in one test file
Helped flesh out our adapter a bit more.
* Update our response adapter to represent how NP transforms our errors
Most importantly, we return a statusCode but not a status_code.
* Update tests to interface with our Response type
This makes them robust to framework/implementation changes.
* Generate our error responses with our siemResponse wrapper
This adds the status_code key that we desire in our error responses.
Tests were updated as well, and they're currently failing because they
expect statusCode, not status_code.
* Update test assertions to look for status_code
* Remove unused import
* Return a meaningful error if an invalid request was injected
This ensures we a) mimic platform behavior so that b) we don't risk a
false positive if our invalid request were to somehow succeed.
* Return a useful error when no route has been registered
* Add back POST variant of delete_rules_bulk_route
Some browsers do not support a request body for DELETE requests.
* Allow headers to be passed to our error response
This is used by Apollo to set some cache/allow headers in the case of
specific bad requests.
* Add back our header-passing from Apollo errors
I also inverted the logic here to handle the special case first.
* Add some tests around our error response helper
* Fix types of our error wrapper
* Move router logic into separate function
This could be decomposed further but getRoute becomes more verbose, so
meh.
* Convert our mock server to a class
It makes the shared state (mocks) of these functions more explicit, and also
does away with some dumb tuple-returns I had (a consequence of trying to
make everything pure).
* Remove need for a route spy
Instead of mocking certain router methods with the same spy and then
retrieving its calls, we can simply iterate over the calls of the router
methods we care about. This is a little less logic and a little more
straightforward.
* Update test with updated copy
We're consolidating on "signals index" when referring to the data index
where signals are stored.
* Remove unneeded type assertion from our route validation factory
We implicitly cast our return value here when we provide the generic
type parameter, so there's no reason for the explicit cast.
* Use exact message assertions
* Export our SiemRequestContext type for consumers
This will move to server/index in NP.
* Make our SiemClient properties readonly
We don't want consumers mutating our state.
* Throw error if SiemClientFactory has not been properly set up
* Remove unnecessary spread
* Use reduce's type argument instead of an explicit assertion
* Remove unnecessary optional chaining
This was a holdover from when we captured calls that had no body, but is
now unnecessary.
* Remove unnecessary headers on mock requests
* Remove non-null assertion in favor of constructor assignment
* Prefer type annotations to explicit casting
If we annotate that both incoming pieces of our headers are of the
correct type, then we can spread them into an object of the same type
and avoid the index signature issue.
* Skip test failure do to handling of authentication
We need to thread through the utility that provides us this same
functionality.
* Mock our cluster calls with realistic data
* Remove TODO as this is addressed in a later PR
Co-authored-by: Josh Dover <me@joshdover.com>
* Addresses #55544.
- uses the core breadthfirst cytoscape layout
- rotates elements by -90degrees
- selects rum nodes as roots
- implements hover styles to show connected nodes
- fixes flash of unstyled cytoscape elements on initial load
* PR review feedback
* adds canned response for testing cytoscape layout in storybook
* update dep snapshot for removing cytoscape-dagre
* [Maps] source descriptor types
* make SORT_ORDER an enum
* fix type error
* finish defining descriptors for all sources
* fill out layer descriptor
* fix type
* make some properties optional to avoid type explosions
* make type optional
* nest types a bit more so they better match class structor
* in progress work from pairing with Thomas
* one more thing
* add unit test (#35)
* add functions removed from fields typescript converstion
* move joins from VectorTileLayer constructor to VectorLayer constructor, add mock to fix map_selectors test
Co-authored-by: Elastic Machine <elasticmachine@users.noreply.github.com>
Co-authored-by: Thomas Neirynck <thomas@elastic.co>
* Optimized pipelines
* Fixed tests
* Addressed feedback
* Withhold LS stats until there is at least one pipeline
* Fixed logstash stats
* Addressed feedback
Co-authored-by: Elastic Machine <elasticmachine@users.noreply.github.com>
* [ML] multi-line json support for analytics job editor
* [ML] advanced editor with xjson
* [ML] add jest mock for XJsonMode
* [ML] add xJson mode to the json tab
* [ML] fix mocks
* [ML] Fixing licensing after server NP cutover
* client side refactor
* management refactor
* moving management license check
* adding server side license class
* added common license class
* client sides using license class
* updating server api guards
* fix privileges tests
* updating translations
* fixing disabled tabs on basic license
* refactoring client side license checks
* setting license initialized flag
* fixing license check on index data viz
Co-authored-by: Elastic Machine <elasticmachine@users.noreply.github.com>
* [test] Comment out Jest hooks in skipped blocks
Jest will run the hooks regardless of if they are skipped.
Tests skipped in 61c9dc4022
and 420ded8eb2 were still resulting in build failures due to the beforeEach failing.
Signed-off-by: Tyler Smalley <tyler.smalley@elastic.co>
* Additional variables/imports no longer needed
Signed-off-by: Tyler Smalley <tyler.smalley@elastic.co>
* Skip additional flaky ingest tests
Signed-off-by: Tyler Smalley <tyler.smalley@elastic.co>
* Comment out file
Signed-off-by: Tyler Smalley <tyler.smalley@elastic.co>
* Must have one test
Signed-off-by: Tyler Smalley <tyler.smalley@elastic.co>
Cleanup implementation of the header to let pages embed the header rather than the weird sort of control the header works with today. Also uses kibana context in a way that makes more sense, and provide a path forward for #53550 since that will need to add a new header type (and some buttons next to the picker).
Fixes#58835
This is a follow-on to https://github.com/elastic/kibana/pull/57030 ,
"[alerting] initial index threshold alertType and supporting APIs",
to get it working with the existing alerting UI. The parameter shape
was different between the two, so the alertType was changed to fix
the existing UI shapes expected.
* Move linked_search to react
* Use i18n from start contract
* Move linked search to the editor
* Updating layout and fixing truncation
* Fix functional test, add a tooltip
Co-authored-by: Caroline Horn <549577+cchaos@users.noreply.github.com>
Migrate transform legacy server to NP.
- Create server plugin/index for transform in x-pack/plugins.
- Move all legacy/server files to plugins/transform
* [Maps] direct Discover visualize to Maps application
* pass initial layers to maps app
* add functional test
* fix parentheses messed up by lint fix
* fix i18n expression
* move logic into lib
* fix typescript errors
* use constant for geo_point and geo_shape, more TS noise
* use encode_array in an attempt to make TS happy
* another round of TS changes
* one more thing
Co-authored-by: Elastic Machine <elasticmachine@users.noreply.github.com>
* Add resolver middleware
* Update types to match events, use sample events in useCamera tests
* add predicate to convert alertdata to legacy endpoint event
* Use mock event generator in tests
* Guard against events not having agent or endpoint fields
Co-authored-by: Robert Austin <robert.austin@elastic.co>
* Removed Boom from reindex-service
The reindex service had logic inside it for mapping errors
to HTTP. This has been moved to the route handlers and also
removed Boom.
There is one more instance of Boom use inside of reindex-actions
but that comes from Saved Objects which should probably be removed
at a later stage.
* Fix import path
Specify the full relative import path to the kibana's core
server folder
* Remove unnecessary if statement
Co-authored-by: Elastic Machine <elasticmachine@users.noreply.github.com>
* Add tabs to the Endpoint app. Uses EuiTabs and browser history for integration with react-router
Co-authored-by: Paul Tavares <56442535+paul-tavares@users.noreply.github.com>
Co-authored-by: Elastic Machine <elasticmachine@users.noreply.github.com>
* [Lens] Allow custom number formats on dimensions
* Fix merge issues
* Text and decimal changes from review
* Persist number format across operations
* Respond to review comments
* Change label
* Add persistence
* Fix import
* 2 decimals
* Persist number formatting on drop too
Co-authored-by: Elastic Machine <elasticmachine@users.noreply.github.com>
Adds the first built-in alertType for Kibana alerting, an index threshold alert, and associated HTTP endpoint to generate preview data for it.
addresses the server-side requirements for issue https://github.com/elastic/kibana/issues/53041
* [APM] Update tsconfig.json template in optimization script
The location of the cypress tests has changed, and those files are no longer excluded in the APM type check. This change updates the tsconfig.json template to exclude the new location.
* Update link in readme
* remove obsolete legacy server deps
* licensePreRoutingFactory uses licensing plugin rather than legacy xpack
* move schemas to dir in routes
* use NP license check method for license check
* store license data in plugin for passing to check
* create server plugin files in NP plugin dir
* remove dependency on legacy xpack plugin
* add sample data links first step
* move all server dirs from legacy to np dir
* fix requiredPlugin spaces name and update import routes
* delete unnecessary files and add sample data links
* update license and privilege check tests
* add routeInit types
* Handle setup mode if security is disabled
* Rename so the test actually runs, and fix/add tests
* Use es.js api instead of transport.request
* Revert "Use es.js api instead of transport.request"
This reverts commit ae0e48f8bd.
* Explicitly handle security not enabled
Co-authored-by: Elastic Machine <elasticmachine@users.noreply.github.com>
* [Infra] Add basic backend for metric threshold alerts
* Define separate fired/recovered action groups
* Allow alerting on arbitrary search fields besides host.name
* Add list and delete endpoioints
* Add groupBy alerts
* Remove extraneous routes and SavedObject logic
* Remove additional SavedObject code
* Remove renotify logic from executor
* Fix action group type
* Fix scheduledActions typecheck
* Fix i18n
* Migrate alerting to new platform
* Add alerting to infra dependencies
* Add comment about future use
* Adjust alert params tm names to sync with UI; default to Entire Infrastructure alert
* Add support for between comparator
Co-authored-by: Elastic Machine <elasticmachine@users.noreply.github.com>
* fixes from comments on previous PR
* replaces any with unknown, adds test to show how optional chaining of array items can result in undefined even though typescript says its not
Before this pr:
Discover, Visualise and Dashboard in setup phase create own state containers which watch for pinned filters, time and refresh interval changes. This watching and state comparisons happen for each plugin separately and not only when a specific app is mounted. So we ended up with a bunch of similar synchronous work which happens every time query services state changes.
After this pr:
Query service exposes observable to watch for changes (state$). Discover, Visualise and Dashboard use this observable for sub url tracking instead of creating its own.
* ui/persisted_state 👉 src/plugins/visualizations
Part of #46926
* fix JEST
* remove sinon from tests
Co-authored-by: Elastic Machine <elasticmachine@users.noreply.github.com>
* Add KQL filtering
* Schema updates
* Cursor-based pagination
* Add alert detail GET api
* A little refactoring ;)
* Add KQL filtering
* Render SearchBar that provides suggestions and executes search
* Schema updates
* Cursor-based pagination
* Bug fix with search_after type
* hook up filters, trying date range
* Multi-filter support
* Add rison encoding/decoding on the backend
* Wire up front-end for new GET request
* tiny bug fix
* use redux for state, disable saved queries
* Remove SearchBar UI code
* Remove Search Bar UI Part 2
* test 1
* test 2
* Finish integrating refactor work
* Fix fromIndex calculation
* Address feedback
* More tweaks
* Add some tests, round 1
* Add Direction enum
* Add next and prev urls for alert details
* refactor
* fixes
* No more AlertDataWrapper, less Maybe types
* change @timestamp to type number, redefine AlertListState
* moved pagination classes, moved types to alerts top level
* remove fake data mappings file
* Fix data location
* remove Maybe type, prev and next have type 'string | null'
* fix functional tests
* Create immutable AlertEvent type and an AlertMetadata type
* test updates
* make tests werk
* Address PR feedback
* No Date Immutable
* Fix test params
* Fix test type-check
Co-authored-by: Pedro Jaramillo <peluja1012@gmail.com>
Address all of the requests in #54182.
Also add a story for the Cytoscape component that shows most of these changes.
Fixes#54182.
Co-authored-by: Elastic Machine <elasticmachine@users.noreply.github.com>
## Summary
* Adds an exact function which allows us to do exact validation rather than allowing arbitrary keys to go through
* Adds a type dependency for parts of validation (gives us feature parity with joi.when())
* Adds several hand spun validations/codecs
* Adds several utilities such as a printer for error validations
### Checklist
Delete any items that are not applicable to this PR.
- [x] [Unit or functional tests](https://github.com/elastic/kibana/blob/master/CONTRIBUTING.md#cross-browser-compatibility) were updated or added to match the most common scenarios
* chore: move gitignore to the cypress directory
* chore: ignore more test files
* fix: do not check the Loading Message
It seems not relevant to the main purpose of these tests
* chore: use cypres + webpack + cucumber scaffolding
See https://github.com/TheBrainFamily/cypress-cucumber-webpack-typescript-example
* chore: add eslint and prettier for code linting
* feat: convert existing Cypress test into BDD style
* feat: add support for using proper Node version in MacOSX
* chore: use tslint
* chore: use old layout
We are keeping cypress as rootDir to follow project's structure. On the other hand,
having a second cypress directory at the 2nd level is the default structure, as shown
in the examples:
- https://github.com/TheBrainFamily/cypress-cucumber-webpack-typescript-example
- a240054d7f/examples/preprocessors__typescript-webpack
* chore: remove prelint script meanwhile we fix TS lint
* chore: move test results to a specific directory
* chore: rename variable following old code
* chore: remove non-needed lints, as we are going to use kibana build
* chore: import snapshot function from cypress
* chore: add readFile utils back from a bad removal
* chore: change format of JSON spec file
It was automatically changed by tests
* chore: move CI directory to the proper layout in order for Jenkins to work
* chore: store test-results from proper dir on Jenkins
* chore: store artifacts properly on Jenkins
* Fix type issues
* chore: rename test application to e2e (end-to-end)
We are keeping the build system within the test application, isolating dependencies
* docs: reorganise docs for APM UI e2e tests
* fix: Use proper cypress support file
* chore: use existing NPM script for running cypress on CI
* chore: update paths in CI scripts
* docs: document how the CI runs the tests
* chore: use Node 10 for tests
* chore: Use kibana's Node version for tests
* chore: run yarn install
* docs: update docs
* fix: path was wrong
* docs: fix paths and flags used to load data
* docs: elasticsearch fix flag
* docs: Bootstrap kibana before running it
* docs: remove outdated info
* chore: move background steps to the scenario
This would avoid not reading the background when the number of scenarios grows
Co-authored-by: Dario Gieselaar <d.gieselaar@gmail.com>
Co-authored-by: Elastic Machine <elasticmachine@users.noreply.github.com>
* Migrate kbn_top_nav.js to kibana_legacy
* Wrap TopNavMenu into i18nContext
* Move the kbnTopNav directive definition to kibana_legacy and remove ui/kbn_top_nav
Co-authored-by: Elastic Machine <elasticmachine@users.noreply.github.com>
* [Metrics UI] Add custom metrics interface to Inventory View
* WIP
* Adding workflows for editing custom metrics
* Polishing visual design
* Removing extra text
* Fixing types and return values
* fixing i18n
* Adding aria labels for clearity
* Changing custom group by to match same width as custom metric
* updating integration test for custom metrics
* Fixing type def
* [Maps] add Top term aggregation
* update pew-pew source to handle terms agg
* make helper function for pulling values from bucket
* update terms source
* better join labels
* categoricla meta
* remove unused constant
* remove unused changes
* remove unused constant METRIC_SCHEMA_CONFIG
* update jest expect
* fix auto complete suggestions for top term
* get category autocomplete working with style props from joins
* pluck categorical style meta with real field name
* mock MetricsEditor to fix jest test
* review feedback
* es_agg_utils.js to es_agg_utils.ts
* typing updates
* use composit agg to avoid search.buckets limit
* i18n update and functional test fix
* stop paging through results when request is aborted
* remove unused file
* do not use composite agg when no terms sub-aggregations
* clean up
* pass indexPattern to getValueAggsDsl
* review feedback
* more review feedback
* ts-ignore for untyped imports in tests
* more review feedback
* add bucket.hasOwnProperty check
Co-authored-by: Elastic Machine <elasticmachine@users.noreply.github.com>
* Factor our the license checking logic and messaging to common
* Add licensing plugin as a dependency of the APM plugin
* Throw a forbidden error on the server if trying to access the service map routes
* es-archiver call _migrate endpoint instead of creating a migrator
* fix crlf....
* use promise instead of callback accessor
* attempt with disabled authent
* enable security again
* set mapping to dynamic before calling migration endpoint
* rename space data from non-spaced tests
* add documentation on the `rerun` flag
* create router with the `/api/saved_objects` prefix
* add unit test about strict mapping
* add integration test on migrate endpoint
* wrap route handler with handleLegacyErrors
* add remark about limitations of the rerun flag
* Apply suggestions from code review
Co-Authored-By: Aleh Zasypkin <aleh.zasypkin@gmail.com>
* do not return detailed index result
* add access tag to migrate route
* use /internal prefix for migrate endpoint
* fix integ tests
Co-authored-by: Elastic Machine <elasticmachine@users.noreply.github.com>
Co-authored-by: Josh Dover <me@joshdover.com>
Co-authored-by: Aleh Zasypkin <aleh.zasypkin@gmail.com>
* Refactor the all rules page to be easier to test
* review with Garrett
* bring back utility bar under condition
* fix bugs tags and allow switch to show loading when enable/disable rule
* fix rules selection when trigerring new rules
* fix imports/exports can only use rule_id as learned today
* review I
* Add async search strategy
* Add async search
* Fix async strategy and add tests
* Move types to separate file
* Revert changes to demo search
* Update demo search strategy to use async
* Add cancellation to search strategies
* Add tests
* Simplify async search strategy
* Move loadingCount to search strategy
* Update abort controller library
* Bootstrap
* Abort when the request is aborted
* Add utility and update value suggestions route
* Fix bad merge conflict
* Update tests
* Move to data_enhanced plugin
* Remove bad merge
* Revert switching abort controller libraries
* Revert package.json in lib
* Move to previous abort controller
* Fix test to use fake timers to run debounced handlers
* Revert changes to example plugin
* Fix loading bar not going away when cancelling
* Call getSearchStrategy instead of passing directly
* Add async demo search strategy
* Fix error with setting state
* Update how aborting works
* Fix type checks
* Add test for loading count
* Attempt to fix broken example test
* Revert changes to test
* Fix test
* Update name to camelCase
* Fix failing test
* Don't require data_enhanced in example plugin
Co-authored-by: Elastic Machine <elasticmachine@users.noreply.github.com>
Until these are officially supported in new platform, it's best to not
rely on this behavior. We can achieve roughly the same functionality
with a GET request. Modifies the existing script accordingly, in case
anyone's still using it.
Co-authored-by: Elastic Machine <elasticmachine@users.noreply.github.com>
* use links instead of click handlers when switching spaces
* remove unused imports
* remove use of deprecated injectedMetadata service
* simplify SpacesManager constructor
Co-authored-by: Elastic Machine <elasticmachine@users.noreply.github.com>
Partially addresses #50897
updates visualizations plugin
makes visualizations/saved_visualizations np_ready
makes visualizations/embeddable np_ready
remove DefaultVisEditor dependency from visualizations
import AggConfigs directly instead of ui/public
Clean up imports from root. use relative imports
Remove bind directive import
* updates read privileges route tests
* fixes test for 404 when alertsClient is not present, adds new test for catching errors at the route level for prepackaged rules route
* fixes test for happy path on create rules bulk route (missing mock resulted in 200, but was still throwing an error), adds tests for covering case where a rule with a matching rule id is found to have already existed, adds a test covering the case where createRules throws an error and that error is caught in the catch block, and appears in the response
* adds more jest functions to beforeEach to ensure mockImplementation state used by spyOn is not carried over between tests, increases test coverage for create rules route
* updates unit test coverage for delete rules route and bulk delete
* increase unit test coverage for find_rules_route
* add test case to get_prepackaged_rules where findRules throws an error
* adds unit test for missing alertsClient in patch_rules_bulk route
* adds unit test coverage for transform error and pathRules throwing an error on patch rules route
* adds unit test coverage for rule not found, transform error, and readRules throws an error on read_rules_route
* adds unit test coverage for update rules (bulk) routes
* increases unit test coverage for open close signals route
* updates coverage for signals query route
* adds unit tests for rules status route, updates utils test coverage. Removed unreachable code.
* updates test coverage, removes usage of pipes from ndjson to stream conversion and returns arrays of tranformers to be used in createPromiseFromStreams so that unhandled promise rejections can be handled appropriately.
* fixes type errors
* fix bug on transform when rulestatus saved objects array is empty because we are no longer passing in the current status, we are passing in the whole saved object.
* adds unit test for when readRules throws an error inside of get export by object ids
* adds unit tests for catching errors on read rules and fixes property undefined bug in catch block
* removes unused function from utils
* adds the 'else' clause back to the getTupleDuplicateErrorsAndUniqueRules function and adds a test case for when an attempt to import rules with missing ruleIds is made, and the expected outcome.
* Create x-pack/plugins skeleton for upgrade assistant
* Move public folder contents
Move the public folder of Upgrade Assistant and migrate public to use HttpSetup (remove axios)
* Include stylesheets in public
* Move server side out of legacy
Begin migration of Reindex worker to new platform
Move imports around so that it satsifies new platform constraints like not importing
server side code (even types) in client.
* Updated the routes with new dependencies and removed server shim
* Fix router unit tests
* Fix server lib tests
After changing function signatures for the reindex server factory (and others) all
of the tests needed to be revisited and brought in line with the new APIs.
Also used core/server mocks where appropriate
* Clean up types issues
* Fix setting credentials on request header
* Removed the security plugin from Upgrade Assistant
The security plugin is a potential future consumer of the Upgrade Assistant's deprecation feature
and we would therefore not want to create a circular depedency here. We pull in the licensing plugin
rather (as it is less likely that we will depend on that) and use it to determine whether security
is available and enabled.
* Migrate to config to new platform config
xpack.upgrade_assistant.enabled
* Remove unused types
* Fix import issue
* Move upgrade assistant back to Elasticsearch management section
* Update dotfiles
Added elasticsearch ui team as upgrade assistant code owner
Updated i18nrc.json path
* Alphabetical ordering in xpack/i18nrc.json
* Implemented PR feedback
Renamed callCluster -> callAsUser to be more consistent
with platform naming.
Added comment about why we are not using security plugin
directly inside of Upgrade Assistant.
Fixed long path imports and use 'src/core/..' throughout.
Fixed import ordering.
Renamed variables inside of telemetry lib.
* Revert to longer import path
In plugin.ts importing from 'kibana/server' or 'src/core/server'
results in a module not found error.
Co-authored-by: Elastic Machine <elasticmachine@users.noreply.github.com>
* [ML] Adding filebeat config to file dataviz
* adding extra help text
* removing commented out code
* adding extra blank line to processors section
* cleaning up types
* moving hosts line out of function
* typo in config text
* updating config based on review
* tiny refactor
* translating paths text
When generating test data we refresh excessively, this can fill up the
ES queues and break the tests if we run massive tests. I originally ran
into this with https://github.com/elastic/kibana/pull/58078/ which I
closed due to finding a better approach.
While none of our current tests have the scale to expose this problem,
we certainly will add tests that do later, so we should keep this
change.
Co-authored-by: Elastic Machine <elasticmachine@users.noreply.github.com>
In the NP the routes have already the app name on them. Adding it to
this button made the app name double
/app/metrics/metrics/settings
/app/logs/logs/settings
The button only needs to go to the settings page within the app where
it's being loaded, so we can safely drop the prefix.
Closes#58233