* Get rid of addFiltersAndChangeTimeFilter
* ts fix
* remove timefilter dependency from filter manager
* code review change
* Fixed bug in tests
* changeTimeFilter
* Refactored mappers and filter service to have no dependency on indexPatterns by generating the filter disaplyName in the relevant components.
* Fix map and flatten test
* Fixed filter state manager test
* Remove async from addFIlters and setFilters
* Fixed saved objects test - removed (display)value from url
* Make removeAll sync
* defer setFilters and removeAll in dashboard controller - temp hack
* fixed translation in filter view
* update strings
* Fixed range rendering
* map range converter
* provide packageInfo to server plugins
* provide env to kbn server
* provide env to client plugins
* update server mocks and tests
* update client mocks and tests
* add integration test
* regen docs
* remove weird file
* export types for the client from special folder
* env should not affect test ourcome
* Add API Keys app to Management > Security.
- For admins, list all API Keys created by the user: Name, Date Created, Expiration Date, Status, User, and Realm.
- For non-admins, list own API keys: Name, Date Created, Expiration Date, and Status.
- Surface admin status above table.
- Ability to search by Name and Revoke (invalidate) API keys, and filter by User and Realm.
- Surface feedback when API keys are disabled on Elasticsearch or when user lacks required permissions.
* Add `SectionLoading` component to `es_ui_shared` plugin.
* modifies getAllSavedQueries to return the total count along with the saved queries requested for the page parameters provided. Sets defaults to 'perPage' and 'activePage' parameters for getAllSavedQueries
* Separates out getting the total number of saved queries from the call to get all saved queries
* Adds unit tests for getSavedQueryCount and getAllSavedQueries
* Uses findSavedQueries with pagination to fetch saved queries for a current page
* renames functions
* Updates saved_query_service_tests
* Removes exposed perPage and page parameters from getAllSavedQueries, fetching the total saved query count internally
* Deletes extra call to fetch the saved query count
* Saved query management component can only use the savedQueryService only once mounted. The initial async functions were running outside of effects
* Changes undefined to empty string in first argument to findSavedQueries
I believe the cause of this issue is that we weren't saving the app state after updating it from the saved query. So the new query would be in memory but not in the URL. Something would cause the old app state to get read from the URL and override the changes. Simply adding a call to state.save after changing the query in app state seems to have solved it.
Visualize didn't have this issue, but I'm guessing there was nothing causing the old state to be read from the URL. So I applied this fix to Visualize as well to avoid any issues in the future.
* [APM] Replace ui/kfetch with core.http
Closes#46548.
* Remove kfetch mocks in tests
* Expose HttpFetchError from src/core/public/index
* Make HttpFetchError public
* Simplify tests for ServiceOverview
* First pass of spec update to OSS plugin
* Update existing doc links
* Move data_frame files to new depreceated namespace
* Removing this setting per https://github.com/elastic/elasticsearch/pull/47717
* Add new files
* Added transforms overrides
* Updated deprecated data transforms file names
Fixed broken __template's
Updated autocomplete for new transforms endpoints
* [Code] use native git to iterate git files
* [Code] use native git to clone/update repository
* [Code] git history using native git
* [Code] use native git to read file tree and file content
* [Code] fix the 'bad file' warning from status api
* [Code] use native git to handle worktree
* [Code] use native git to resolve references
* [Code] use native git to handle blame / diff
* [Code] patch git binaries in kibana build script
* [Code] migrate unit tests to use native git
* Phase 1 of search services
* First review feedback
* Start on tests
* Add functional tests for search explorer
* Add unload and fix ts error
* Add index.test.ts files for coverage completeness
* Adding unit tests
* use internal route terminology. No reason this should be a public route, at least not yet.
* Move search service into data plugin
* App mount search context needs to be optional
* Add more unit tests for server stuff
* wip types fix
* fix types for new context container stuff
* put back all jest test coverage paths
* address review comments
* delete the two test files that just tested the instantiation of the search service
* expose search fn on StartContract... tested locally only
* update mocks to account for new startcontract
* refactor: 💡 generalize service getters and setters in expressio
* feat: 🎸 create NP-ready plugin for expressions
* refactor: 💡 flatten expressions plugin and remove service
* chore: 🤖 re-export legacy expressions service dir for Lens
* refactor: 💡 don't import renderer registry statically
* test: 💍 mock expressions service renderers registry in Mocha
* get coverage for console functional test
* instrument kibana
* collect coverage stats after each test, on url navigation, refresh and back
* switch to babel-plugin-istanbul
* switch to babel-plugin-istanbul
* [coverage service] basic version
* trigger final coverage flush when ftr finishes, wait for all logs before exiting
* add coverage report generation
* increase optimizer timeout, re-run idx/babel plugin before istanbul
* increase memory usage for node
* put istanbul preset in the beginning to run as the last one
* bump babel-plugin-istanbul up to 5.2.0
* cleanup
* save unique json files with coverage
* [functional test coverage] update coverage.json path
* run code coverage on CI
* increase max-old-space-size with env variable
* fix coverage folder creation
* use env variable to configure code coverage
* revert ci config changes
* remove duplicate plugin
* remove comments
* fixes
* Fix default font size alignment
* Git update newline behaviour
* Fix console menu for IE11
* Slightly smarter algorithm for discovering space
* - Move inline styles to SCSS
- Clean up use of formatted message in aria-label
- Remove unused prop from component
* Set flex group to not use responsive layout optimization
* Use docLinks service
* Update tests to use docLinks mock service
* Test fixes
* Fixed jest test to work with functional tests
* snaps
* removed clicking on button test - as it actually tests EuiPopover
* Migrate url.js to TS
* Typescriptify truncate util
* Typescriptify string util
* Change method name by constant
* Typescriptify relative date util
* Refactor url util
* Typescriptify percent util
* Typescriptify bytes util
* Typescriptify number util
* Make _convert as method of derived class
* Get rid of Field Format type
* Typescriptify IP and Color utils
* Typescriptify dates utils
* Change functions to arrow functions in tests
* Convert Duration, Source and Static Lookup to TS
* Remove Field Format type from Numeral
* Use MomentJS types instead of any
* Use KBN_FIELD_TYPES as field types
* Make timezone as string
* Make memoizedConverter and memoizedPattern types
* Make ugly type for createNumberFormat
* Replace any types by certain ones
* Add types to tests
* Internationalize Duration, String, Url utils
* Get rid of implicit _convert method
* Fix conflicts
* Make htmlConvert, textConvert and setupContentType as public
* Make some any's more certain
* refactor failed_tests_reporter to use TS, no octokit
* update renovate config
* ensure that all kbn-test files are in ts project
* fix some type errors
* add some more tests
* [kbn-test/githubapi] cleanup and document
* collect log messages as strings instead of message objects
* ensure issue is open when updating body
* improve readability of getKibanaIssues
* expose axios helpers from dev-utils
* fix request params for fetching github issues and validate locally
* include a README for failed_tests_reporter
* improve axios error helpers
Add service map tabs on the main APM screen and for individual services.
This is not yet hooked up to work with back-end data, so it always shows the same hard-coded graph.
This is experimental, so you must have x-pack.apm.serviceMapEnabled: true in your Kibana config for it to show up.
Also add "PSF" to the list of allowed licenses since a new dependency added uses this license (it's on the [green list](https://github.com/elastic/open-source/blob/master/elastic-product-policy.md#green-list).)
Fixes#44890Fixes#44853
Summary
Adds pagination to the Uptime app's monitor overview page. Also cleans up/removes a lot of unused code that laid the foundation for the states index approach we opted not to take.
This PR is somewhat complex due to our need to use composite aggregations with searchAfter style pagination.
Understanding our new query approach
How the schema works
At its simplest, we run a single heartbeat from a single location checking a single endpoint with a single IP.In this case, everytime we run a check we create a new document.
# Documents for a single monitor.id
# checked from one heartbeat
------ time --------------->
[D] [D] [D] [D] [D] [D] [D]
We can also check from multiple geo locations
# Documents for a single monitor.id
# checked from multiple heartbeats, on in a US-E datacenter, the other in US-W
Location | ---------- time ----------->
US-E ` [D] [D] [D] [D] [D] [D] [D]
US-W ` [D] [D] [D] [D] [D] [D] [D]
We can also check multiple ip addresses per check if there are multiple DNS entries. If the endpoint we're checking has 3 DNS entries we will create 3 documents per check. The final document has an extra summary field with two integer values: summary.up and summary.down summarizing how many documents were up vs down across all three documents in the check. All documents also contain a monitor.check_group UUID string field that has a shared value across all three documents.
# Documents for a single monitor.id checked from a single location checking 3 IP addresses total
# checked from one heartbeat.
# Documents with a summary are indicated with an [S]
Note the partially written group at the end
--------------- time --------------------->
Docs | [D] [D] [S] [D] [D] [S] [D]
Groups | |--UUID1--| |--UUID2--| |-UUID3-
Putting it all together, we can have multiple geo locations with multiple IPs checked within each location.
# Documents for a single monitor.id checked from a single location checking 3 IP addresses total
# checked from one heartbeat.
# Documents with a summary are indicated with an [S]
Location | ------------------time-------------------------->
`
US-W ` [D] [D] [S] [D] [D] [S] [D]
` |--UUID1--| |--UUID2--| |-UUID3-
`
US-E ` [D] [D] [S] [D] [D] [S] [D] [D] [S]
` |--UUIDA--| |--UUIDB--| |--UUIDC--|
The Query
Goals
Logically, what we want to do when searching is to:
Match the most recent complete check group from each location and return all documents from that check group.
For any specific fields (say error.message or monitor.ip) consider the monitor matched if any documents in any location have that value.
For status filtering consider the monitor up if all documents within the latest check groups for each location are up.
Additional properties we'd like this query to have:
Be paginatable
Be fast
Be in a consistent order (required for pagination)
At a High Level
There are three phases, described in detail below, but the TL;DR is:
queryPotentialMatches() Find monitor.id,mostrecent(check_group) tuples that match the query and all filters except status. We eagerly fetch 500 results here knowing that we may discard some of these results in the next phase.
refinePotentialMatches() Perform an additional query that pulls in all the most recent check summaries from all locations for the monitor IDs from the last phase. We compare the matched check groups from the last phase to see if what matched previously was out of date. We can now apply the status filter as well.
enrich At this point we already have the matching monitor IDs and their status, but we haven't brought in most of their fields. Here we re-query to get all docs from the matching monitor IDs most recent checks, then format them for return via API.
queryPotentialMatches()
This query returns via a composite agg all monitor IDs matching all query. It also returns the latest matching monitor.check group of all monitor IDs with the correct monitor.status value. Note that the returned monitor.check_group value will only be the most recent value matching the query terms. It may be an old check.
So, the output of the check is all monitor.id values that have ever had a document that matched the query. However, these matches may be old.
TODO: The PR as it stands doesn't work exactly this way, I added in an optimization for status filtering that actually is incorrect. We can exclude matches that are down if we're looking for things that are up, but nothing more than that.
refinePotentialMatches()
In this phase we take the monitor.id values from the preceeding phase and query for all the latest check groups per geo-location for each via a terms query plus terms aggs, using a top hit to get the most recent (top hit size 1 is more efficient than a terms agg on a high cardinality string field sorted , I believe due to global ordinals). Then, in Javascript, we can further exclude monitors based on the monitor.status fiter. If the status filter is up we exclude any monitors that have any down checks using the summary fields. By using the summary fields we additionally ensure that we only include the most recent complete check groups, instead of partial ones.
We then combine the output of the preceding phase, kicking out results from the initial phase that didn't have their latest complete check groups match.
Enrichment
We already have the correct monitor IDs, but we don't have all the data from all matching documents inside the check groups. We only got the summary documents (and only returned the monitor.id and check group) in the preceding phase. In this straightforward phase we get all the documents for the latest check groups for each monitor and combine them into the final response. Additionally adding histogram data via an auxiliary query.
Pagination
The query phases described above omit discussion of how pagination works. We don't want to retrieve all matching monitor.ids, if a user has 30k monitors that can be expensive. Our default page only shows 10 in this patch. By limiting results we increase speed. Additionally, by using "after" style pagination as composite aggregations use, each page load is as fast as the first, we don't have the performance issues traditional page number style pagination has as you go deep into the result set.
Internally the code has an Iterator style paginator object covering all phases except the final enrichment phase that has the following functions:
next() Gets the next monitor matching the query advances the internal cursor.
peek() Gets the next monitor matching the query, does not advance the internal cursor.
current() Gets the monitor at the current cursor
paginationAfterCurrent() Checks via peek to see if there is more data, and if so returns pagination data to be sent on the next request to get the next page. This powers the 'next' button.
paginationBeforeCurrent() Same as preceeding, but gets the pagination info for the page before the current item. TODO add this method instead of the current hacky way with reverse()
Internally we overfetch for the initial filter query to provide a buffer for the paginator; we don't want a query per next() invocation. That's currently set to 500 items at the moment, which is pretty snappy.
Fixeselastic/uptime#63
Alternative approaches considered
Using data frames: We rejected this approach for two reasons: 1.) It's one more thing that a user can accidentally break 2.) Worry over the cost of constantly re-indexing every document with low latency. We'd need to reindex everything once every 5-10s to prevent excessive lag.
Kibana Background jobs and a high water mark. This would involve having a background job in Kibana that would compute the most recent documents for each monitor at a given time and then mark them with a high water mark using an update by query. This has the same issues as the data frames in terms of excessive doc writes and scalability. However, there's less to break in a sense in that there's no extra indices. OTOH, users have configure kibana to let it write to uptime indices.
* saved objects: allow partial update without references
For normal attributes, the update API for saved objects supports partial
updates, where it will only attempt to change those attributes you
specify. References should behave the same way otherwise they will be
replaced entirely if you call update without specifying the original
references.
* To recommend how to access API not available in New platform
* add a note about usage on the client side
* Update src/core/MIGRATION.md
Co-Authored-By: Josh Dover <me@joshdover.com>
* Moving FieldNameIcon implementation to FieldIcon implementation in kibana_react directory
* Adding LensFieldIcon implementation around the new FieldIcon to be used in Lens components
* Applying new LensFieldIcon in the Lens components
* Applying new FieldIcon component in Graph components
* Applying new FieldIcon component in the rest of the components
* Adding missing type to lens field icon
* adding missing type
* Addressing PR comments
* Bind search bar
* create prewired data components
* Pass NP data plugin to shim plugin, to access autocomplete
Pass storage and autocomplete to createSearchBar method
Add appName and autocomplete to IDataPluginServices
QueryBarInput to consume autocomplete and appName from context
QueryBarTopRow to consume appName from context
Remove appName from SearchBar
Added AutocompletePublicPluginSetup and AutocompletePublicPluginStart types
* Use KibanaContextProvider in vis editor and graph
* Use KibanaContextProvider in maps
* Use prewirted SearchBar in TopNavMenu
* Use KibanaContextProbider in Lens
* Fix appName usage in query bar input
* fixed query bar top row appName
* update tests
* fixed bind search bar bug
* mock SearchBar
* Removed unnecessary mocks
* Delete unused mock
* Fixed exporting of data plugin types
* Updated maps snapshot
* Fixed some TS issues
* Fixed jest tests
* Context adjustments in TSVB
* componentWillMount
* Code review fixes
* Pass dataTestSubj to query bar input
* Graph data
* - Pass NP data plugin to KibanaReactContext
- Move value_suggestions to NP
* - Pass NP data plugin to KibanaReactContext
- Move value_suggestions to NP
* ts fixes
* Added karma getSuggestions fake
* Refactored kuery autocomplete tests to jest
* Filter bar context for directives
* updated snapshot
* fix diffs
* fixed lens test
* expose injectMetadata until config service provided
* add functional test
* update types
* fix tests. injectMetadata is a part of plugin contract
* add comment about injectedVars API
* WIP Jenkinsfile for flaky test runner
* Fix syntax
* A few more jenkinsfile fixes
* A few more fixes
* Can't round numbers in Jenkins groovy sandbox apparently
* More fixes
* Only do build_kbn_tp_sample_panel_action once during flaky testing
* Fix path and try setting a different JOB value
* Keep track of flaky test failures
* Introduce flaky test for testing
* Some flaky test pipeline cleanup
* Fix a couple of issues with flaky test failure tracking
* Update flaky test runner build name/desc with metadata
* Revert "Introduce flaky test for testing"
This reverts commit 202e9d86cf130ef37aff1817781a5b694aa2aa32.
* Try adding a local shared library
* Move local library loading logic to kibana pipeline library
* Move shared groovy code to shared library
* Add missed file
* Add ability to specify multiple agents for flaky test runner
* Update kibana-pipeline-library version
* Fix bug causing early exit for oss ciGroup1
* [lens] Use top nav in Lens app
* Add tests for saved query, pass filters around more places
* Fix filter passing
* Add unit test for field popover making correct queries
* Respond to review feedback
* Fix type errors
* Respond to all review comments
* Remove commented code
* Top nav should be compatible as angular directive
* Fix rendering issue with filter updates
* Respond to review comments and add onChange test
* Add specific test for the index pattern bug from Tina
* Add KQL functionality in the find function of the saved objects
wip
rename variable from KQL to filter, fix unit test + add new ones
miss security pluggins
review I
fix api changes
refactor after reviewing with Rudolf
fix type
review III
review IV
for security put back allowed logic back to return empty results
remove StaticIndexPattern
review V
fix core_api_changes
fix type
* validate filter to match requirement type.attributes.key or type.savedObjectKey
* Fix types
* fix a bug + add more api integration test
* fix types in test until we create package @kbn/types
* fix type issue
* fix api integration test
* export nodeTypes from packages @kbn/es-query instead of the function buildNodeKuery
* throw 400- bad request when validation error in find
* fix type issue
* accept api change
* renove _ to represent private
* fix unit test + add doc
* add comment to explain why we removed the private
* Bind search bar
* create prewired data components
* Pass NP data plugin to shim plugin, to access autocomplete
Pass storage and autocomplete to createSearchBar method
Add appName and autocomplete to IDataPluginServices
QueryBarInput to consume autocomplete and appName from context
QueryBarTopRow to consume appName from context
Remove appName from SearchBar
Added AutocompletePublicPluginSetup and AutocompletePublicPluginStart types
* Use KibanaContextProvider in vis editor and graph
* Use KibanaContextProvider in maps
* Use prewirted SearchBar in TopNavMenu
* Use KibanaContextProbider in Lens
* Fix appName usage in query bar input
* fixed query bar top row appName
* update tests
* fixed bind search bar bug
* mock SearchBar
* Removed unnecessary mocks
* Delete unused mock
* Fixed exporting of data plugin types
* Updated maps snapshot
* Fixed some TS issues
* Fixed jest tests
* Context adjustments in TSVB
* componentWillMount
* Code review fixes
* Pass dataTestSubj to query bar input
* Graph data
* Add unit tests for ValueAxisOptions
* Add unit tests for ValueAxesPanel
* Add unit tests for index.tsx
* Update index.test.tsx
* Update y_extents.test.tsx.snap
* Rename folder
* Update snapshots
* Fix code review comments
* Move data to mocks.ts
* Replace mount to shallow
* Update snapshots
* Move tests to the same directory as source code files
* [dev-utils] implement basic KbnClient util for talking to Kibana server
* update KbnClient to expose full KibanaServerService API
* expose request() function and uriencode helper
* [uiSettings] retry read on conflicts auto upgrading
* expose function for resolving a Kibana server url
* only use apis in test hooks
* run x-pack-ciGroup2 60 times
* log retries as errors so they are included in console output for job
* bump
* Revert "run x-pack-ciGroup2 60 times"
This reverts commit 6b6f392edf.
* refactor urlencode tag to be a little clearer
* support customizing maxAttempts in request method
* Cleaned up use of es.send API
- Converted Elasticsearch proxy config to TS (now we can see the types with https.AgentOptions)
- Wrap request in util.promisify and refactor
- Use 'url' lib for parsing URLs
- Remove rejectUnauthorized from proxy_route.js (this is a TLS setting handled in agent setup)
* Retained original proxying behavior
* Re-enable support for setting rejectUnauthorized via proxy config settings
* Updated tests.
* Add getCache method to IndexPatterns
* Refactor to use IndexPatternCache instead of another request
* Improve getCache function to be async if necessary
* Adapt discover controller code
* First attempt at editor.tsx integration test
* Fix typo in variable name
* Expanded smoke test integration tests
* Mounting happens in beforeEach
Added i18n context to suppress error messages
Updated name of data-test-subj for the send request button
* Fix loading state
* Fix modal’s footer button spacing
* Better alignments of the panel header contents
* Fix alignment of badge if title doesn’t exist
* add ability to whitelist visible elements in percy
* allow white and blacklisting elements in visual tests
* remove unnecessary webElement methods
* refactor snapshot options to use show and hide
* refactor add/remove and visual test helpers
* [percy] rework css rules to allow hiding inside shown elements
* [percy] adjust logic to support showing inside hiding
* attach styles to hide percy when capturing the snapshot
* refactor in order to make sure all logic is executed if snapshot fails
* remove sleeps
* add back skipFirefox tag
* refactor: 💡 separate server-side function reg from executor
* refactor: 💡 separate Canvas functionality of Interpreter
* refactor: 💡 simplify, move server fn init into Canavas
* fix: 🐛 adjust Expressions service usage after master merge
* Enable one-var rule
* Prevent built-in extension
* Group more rules into modern language features
* Fix typing error use eslint disable instead
* Improve wording slightly
* Add notification service to Console and use it from the editor
* Revert original PR 45966
This reverts commit e60f4ed9ae.
* Re-add i18n import
* Updated copy
* Move index.js to index.ts
* Migrate Vis, interpreter, home and 2 hacks to setup() and start()
* Move Timechart hack to start()
* Add featureCatalogueRegistryProvider to an interface
* Add types to a server param
* Move some .js to .ts
* Add ExpressionFunction<> to interpreter
* Remove Feature Provider
* Remove extra export
* Add an interface to a timelion response
* Add an inteface to the panel
* Add IPrivate interface
* Make nit notes
* Edit uiCapabilities() type
* Shim Timelion plugin
* Shim start() plugin method
* Change InternalCoreStart to LegacyCoreStart
* Move Angular dependencies to a separate module
* Change visualizations import path due to recent changes
* Rename directives
* Take a common property out
* Get rid of require in schema
* Use core.uiSettings
* Refactor timelion request handler
* Remove Private from tests
* Remove redundant dependencies from tests
* Update visualizations paths
* Change expressions paths due to expessions movement
* Refactoring according to reviews
* Add a comment over the uiCapabilities field
* Edit the comment
* Ignore uiCapabilities issue
* Take angular controller out
* Get rid of
* Get rid of config
* Get rid of config in start
* Unwrap handler from redundant promise
* Move npSetup npStart dependencies in a high level
* Rename some details
* Fix reviews
* fix CI
* Take visFactory out
* Make FilterBar into functional component
Pass deps in using Context provider
* Turn query bar top row into functional component
Use notification.toasts in SearchBar
Use context provider in top nav.
* Added context provider to lens
* Fixed helps text for dates and using delimited form control for ranges
* Adjusting width of field slightly
* Use filter icon type and single branch in svg
* Change placeholders
* Update angular related packages
* upgrade jQuery too
* don't delete screenshots in pipeline jobs
* use ng-change so that listener is triggered after ng-model is updated
* match @types/angular versions
* update yarn.lock
* fix test
$routeChangeSuccess is no longer broadcast when resolving a redirect route, so this test has been adjusted to validate that
* Update jest related packages
* use correct type
* adapt spy and describe.each types
* update yarn.lock
* update snapshot
* define types before passing to describe.each
* Make request and response properties conditionally available during HTTP interception
* Address review comments, fix request reference in http service tests
* Create timefilter service
* Pass timehistory as a dependency to query bar
* Updated timefilter tests and mocks
* Fix jest test
* Fixed bad import path
* updated xpack test
* make history optional on query bar
* Fixed chart_utils test
* Fixed page.test by mocking timefilter
* Fixed explorer_charts_container_service test by mocking timefilter
* Fixed explorer_chart_distribution test by mocking timefilter
* Fixed explorer_chart_single_metric test by mocking timefilter
* Fixed explorer_charts_container test by mocking timefilter and removing some unneeded initialization
* Fixed explorer_swimlane tesy by mocking timefilter
* Added missing functions to uiTimefilterMock to fix top_nav test
* Fixed timeseries_chart test by mocking timefilter
* remove bad merge
* mock field formats
* mock field formats
* rename timefilter boolean getters
* fix ml mocks
* ml mocks
* Create a NP plugin for a EUI/Charts theme utility
Returns back the appropriate theme object based on the Kibana theme mode.
* Update new watcher chart
* Update discover chart
* Add SASS theme files
* Make getChartsTheme observable
* Implement getSortForSearchSource for add-on of 'numeric_type' to the ES request. Then sorting on a field that can be of date or date_nanos type works correctly
* Add functional test
* Revert hiding Kibana icon, test Percy rendering
* Update jobs.yml
* Use percy token for kibana dev
* Update Percy token to read from kibana-issues
* Read correct field
* increase timeout
* Run each visual job 10 times
* Revert last commit
* Increase timeout
* Disable visual tests and revert percy token
* Fix jest tests
* Another jest test fix
* Adds a toast as visual feedback when request is copied to cURL in console
* Implemented changes requested by @jloleysens
* toastid should be a number