* Initial logic and tests for this
* Improve test
* Some cleanup and adding api integration tests
* Add comments
* Account for no documents returned
* Add detection logic and tests
* Ensure these fields are optional
* Update detection logic
* Beats, logstash and apm can only possibly exist
* Fix some issues with APM
* Fix tests
* Small updates based on needing to also include the filebeat index
* Fix issue with the reduce
* PR feedback
* More PR feedback
* Add additional tests
* Add additional tests
* Initial implementation
* More logs UI work
* Remove unnecessary code
* Add support to build a logs url based on the cluster and/or node uuid
* Deep link directly
* Update link
* Use CCS to access remote filebeat data
* Fix existing tests
* Add log specific api integration tests
* Localization
* Adding more localization
* Adding unit tests for logs ui
* Client side unit tests, configuration for log fetch count, adding visual callout for why we can't detect logs
* Remove debug
* Fix localization issue
* Update tests
* PR feedback
* Update import
* Format the count to avoid a huge string of numbers
* Use @timestamp instead
* Handle scenario where the time period is not right but the type exists
* Update jest tests
* Update api tests
* Text changes
* Add periods
* Update tests
Resolves#27513.
_This PR is a combination of #31293 (the code changes) + #33570 (test updates). These two PRs were individually reviewed and merged into a feature branch. This combo PR here simply sets up the merge from the feature branch to `master`._
Summary of changes, taken from #31293:
## Before this PR
The Logstash Pipeline Viewer UI would make a single Kibana API call to fetch all the information necessary to render the Logstash pipeline. This included information necessary to render the detail drawer that opens up when a user clicks on an individual vertex in the pipeline.
Naturally, this single API call fetched _a lot_ of data, not just from the Kibana server but also, in turn, from Elasticsearch as well. The "pro" of this approach was that the user would see instantaneous results if they clicked on a vertex in a pipeline and opened the detail drawer for that vertex. The "cons" were the amount of computation Elasticsearch had to perform and the amount of data being transferred over the wire between Elasticsearch and the Kibana server as well as between the Kibana server and the browser.
## With this PR
This PR makes the Kibana API call to fetch data necessary for **initially** rendering the pipeline — that is, with the detail drawer closed — much lighter. When the user clicks on a vertex in a pipeline, a second API call is then made to fetch data necessary for the detail drawer.
## Gains, by the numbers
Based on a simple, 1-input, 1-filter, and 1-output pipeline.
* Before this PR, the Elasticsearch `logstash_stats` API responses (multiple calls were made using the `composite` aggregation over the `date_histogram` aggregation) generated a total of 1228 aggregation buckets (before any `filter_path`s were applied but across all `composite` "pages"). With this PR, the single `logstash_stats` API response (note that this is just for the initial rendering of the pipeline, with the detail drawer closed) generated 12 buckets (also before any `filter_path`s were applied). That's a **99.02% reduction** in number of buckets.
* Before this PR, the Elasticsearch `logstash_stats` API responses added up to 70319 bytes. With this PR, the single `logstash_stats` API response for the same pipeline is 746 bytes. That's a **98.93% reduction** in size.
* Before this PR, the Elasticsearch `logstash_state` API response was 7718 bytes. With this PR, the API response for the same pipeline is 2328 bytes. That's a **69.83% reduction** in size.
* Before this PR the Kibana API response was 51777 bytes. With this PR, the API response for the same pipeline is 2567 bytes (again, note that this is just for the initial rendering of the pipeline, with the detail drawer closed). That's a **95.04% reduction** in size.
* [@kbn/expect] "fork" expect.js into repo
* [eslint] autofix references to expect.js
* [tslint] autofix all expect.js imports
* now that expect.js is in strict mode, avoid reassigning fn.length
* Minor change to stack monitoring tooltips
In the Linux documentation and source code, cgroups are always referred to without
capitalization and should be here as well.
* Update Jest snapshots
* Update more test fixtures
We have had `insert_final_newline = true` in our `.editorconfig` file since April 2015, but never validated it with eslint. I'm a little tired of extra changes showing up in PRs because some people use editors which respect the `.editorconfig` file and some don't, so I figured we might want to enable the rule in eslint so that the can be autofixed.
Votes requested please :)
* Reintroduce linting rule that requires single-quotes in x-pack.
* Remove redundant quotes rule for ML.
* Convert ES-UI code to single quotes.
- Dev tools
- CCR
- ILM
- Index management
- License management
- Remote clusters
- Rollup
- Watcher
* Convert Graph code to single quotes.
* Convert Maps to single quotes.
* Convert Monitoring code to single quotes.
* Convert Reporting code to single quotes.
* Convert Security code to single quotes.
* Convert Telemetry code to single quotes.
* Convert Upgrade Assistant code to single quotes.
* Convert Grok Debugger to single quotes.
This commit accompanies the four that precede it. Rather than squash
them altogether, the four previous commits all do nothing except move
files to help avoid conflicts.
* Add flag to enable/disable CCR monitoring UI
* Use the cluster setting instead of a new config
* Remove debug
* Update based on PR feedback
* Ensure the CCR tab shows up on the CCR page
* Rework this so we remove the janky UX
* Update tests
* Handle both string and boolean
* Remove debug
* Fix tests
* Refactor this to use the stack_stats part of the cluster_stats document
* Update the api integration tests
* Fix this test
* Remove debug
* Move away from index patterns as configs and move them into constants
* Refactor more usages of the index patterns
* Remove debug
* Update comment
* Fix mocha tests
* PR feedback
* Unlinked deployment working for beats
* Use better constant
* Show N/A for license
* Rename to Unlinked Cluster
* Use callout to mention unlinked cluster
* PR feedback
* Use fragment
* Speed up the query by using terminate_after
* Handle failures more defensively
* Remove unnecessary msearch
* PR feedback
* PR feedback and a bit of light refactor
* Updated text
* Add api integration tests
* Localize call out
* Update loc pattern
* Fix improper i18n.translate usage
* Revert "Fix improper i18n.translate usage"
This reverts commit 0e2e7608c3.
* Revert "Update loc pattern"
This reverts commit cc99fe8a8a.
* Ensure the unlinked deployment cluster counts as a valid cluster
* Sometimes, you miss the smallest things
* Ensure the unlinked cluster is supported, in that users can click the link and load it
* Update tests
* PR feedback. Simplifying the flag supported code and adding more tests
* Update naming
* Rename to Standalone Cluster
* Remove unnecessary file
* Move logic for setting isSupported to exclusively in flag supported clusters code, update tests
* Move os info into OSS collection so the stats api can access it
* Fix tests
* copy this back for now
* Use server decorate to share from OSS to x-pack/plugins
* progress
* progress
* cleanup and elastic configs
* make upgrades to support adding aditional users, with
* use defaultDeep to ensure settings pass correctly
* move needed configs to start servers into kbn_server (except x-pack plugin paths and users)
* move xpack config to an export
* add more time
* diff rollbacks
* roll back prettier diff
* revert setupUsers signature
* remove more bluebird
* update bluebird for fixes with jest compatability
* fix ts errors
* dont allow jest to keep going making errors confising
* Separates configs for jest integration core/x-pack.
* Pass nested kbn config parameters.
* Adds example x-pack integration test using live es.
* Cloud detectors should be configurable for tests.
* Cloud detectors should use native promises only.
* No erroneous comments...
* Util is only for promisify, duh!
* New tests should have docuementation to help those looking to utilize them.
* Doc section headings should be consistent with each other.
* With git there is no need to commit commented code.
* [Monitoring] Cluster alerts table to EUI (#26031)
* Convert cluster alerts page to use EUI tables. Also adds baseline support for all monitoring tables
* Fix tests
* Remove these two files
* Keep the original table but offer a new one so existing UIs still work
* Use different base table controller for the EUI table
* Use EUI specific asc and desc constants
* [Monitoring] Elasticsearch monitoring to EUI (#26217)
* Convert cluster alerts page to use EUI tables. Also adds baseline support for all monitoring tables
* Fix tests
* Remove these two files
* Keep the original table but offer a new one so existing UIs still work
* Use different base table controller for the EUI table
* Use EUI specific asc and desc constants
* Update summary status
* ES nodes
* Indices page
* ML job listing
* Fix tests up
* Node listing page
* Advanced node page
* Advanced index
* Fix tests
* Fix onBrush
* Cluster listing page
* Update snapshots
* Fix functional tests
* Fix more tests
* Remove commented out code
* Update token API calls in elaticsearch.js (#26650)
* make selection border 1px (#26739)
* Reporting phantom and chromium tests should run in parallel. (#26566)
* Reporting phantom and chromium tests should run in parallel.
* Chromium tests should be done in group 9.
* Attempting to use group 2 in ci for chromium tests.
* X-pack CI jobs should have 7 groups.
* Phantom tests should be in group 7.
* [es-management/watcher] implement k7Breadcrumbs (#26719)
* [timelion] implement k7Breadcrumbs (#26729)
* [timelion] implement k7Breadcrumbs
* [timelion] show "Create" breadcrumb by default
* [es-management] implement k7Breadcrumbs (#26711)
* [es-manaagement] implement k7Breadcrumbs
* fix i18n ids
* Fixes i18n issue in space nav selector (#26742)
## Summary
Wraps the Spaces `NavControlPopover` in `<I18nProvider>`.
Fixes#26736
* [Docs] Add beta flag to central management docs (#26558)
* Feature/translate ml-jobs-jobs_list(part_1) (#25466)
Translate ml -> jobsList(part_1)
* Corrected wrong calls from .on to .off (#24575)
Closing memory leak
* Fix saved objects client _processBatchQueue function to handle errors (#26763)
* Fix saved objects client _processBatchQueue function to handle errors
* Fix error thrown in try/catch
* chore(.gitignore): ignore sublime workspace files (#26516)
* Map inspector requests by id so single requests can be reset at a time (#26770)
* [ML] Implement k7 breadcrumbs for ML routes (#26774)
* [ML] Implement k7 breadcrumbs for ML routes
* [ML] Remove duplicate nouns from jobs and settings breadcrumbs
* [Reporting] Re-enabled Chromium API tests (#26789)
* [Reporting] Test logging
* chromium api tests fixed
* whitespace
* Fix Elasticsearch typo on connection error screen (#26815)
`Elastiscearch` -> `Elasticsearch`.
* Reporting/reveal document bytes (#26667)
* Adding a `size` property to all job-reporting meta-data and showing in reporting details pane
* Enable heartbeat telemetry (#25886)
This commit allows heartbeat telemetry data to be sent through kibana.
The change to beats was introduced in https://github.com/elastic/beats/pull/8621
* Change 'Disenroll' text to be consistent with menu option 'Unenroll'. (#26816)
* Upgrading sshpk (#26834)
sshpk is an implicit dependency of request@2.88.0
* Re-enable the chromium functional tests (#26822)
* Logging when max-bytes is larger than what's set in ES (#26482)
* Simple check if ES body-size is smaller than KBN report size
* [BeatsCM] Cleanup and refactor (#26636)
* Refactor BeatsCM
* update deps
* update more deps
* update for new EUI definitions
* update import
* Revert "update deps"
This reverts commit 759a14561d.
* use _source_includes
* remove _source_includes
* work-around due to watcher UI tests
* Keep all xpack checks safe because we cant trust its there in tests for some reason
* VALIDATION. This commit is to ensure the errors in CI are coming from beats
* remove validation that this is a beats CM issue
* More try/catch to try and find where this error is
* testing another call
* revert back to dangerouslyGetActiveInjector
* ensure expire always is a number
* fix swallowed error
* Update x-pack/plugins/beats_management/public/lib/compose/kibana.ts
Co-Authored-By: mattapperson <me@mattapperson.com>
* Update x-pack/plugins/beats_management/public/utils/page_loader.test.ts
Co-Authored-By: mattapperson <me@mattapperson.com>
* Update x-pack/plugins/beats_management/public/utils/page_loader.ts
Co-Authored-By: mattapperson <me@mattapperson.com>
* fix for new webpack import
* Fix translation map
* fix URL path
* fix other link
* removing tag from beats via tag details screen now uses container
* remove debug text
* added comment/readme about routing on the client side
* enrolled beat UI now works on overview screen
* newly enrolled beat now reloads the beats table
* fix TS errors
* [APM] Transaction group agg size config (#26683)
* [APM] Fixes#24204 by adding default configs to kibana.yml
* [APM] fixes#25940 by adding APM config to control top transation group agg size
* Revert the default configs added to kibana.yml and define joi validations for `xpack.apm.ui.transactionGroupBucketSize`
* fix broken test for incorrect config
* [APM] add docs entry for `xpack.apm.ui.transactionGroupBucketSize`
* [APM] fixes#26784 by updateing import from a default to a named import (#26785)
* allow disabling gpu in tests (#26684)
* skipping failing tests (#26877)
* Feature/translate ml - jobs(part 2) (#25528)
Translate ml -> jobs - jobs-list(part_2)
* use canvas pipeline in visualize (#25996)
* Upgrade to NodeJS 10 (#25157)
* feat(NA): upgrade node js version on file configs.
* chore(NA): migrate configs and 3rd party dependencies to work on node js 10.x
* fix(NA): add missing async function declaration.
* chore(NA): updated elastic/good package to work with node10
* chore(NA): update lockfiles.
* fix(NA): add missing dep.
* fix(NA): types for node 10.
* test(NA): fix error return type for node10.
* fix(NA): kbn-pm webpack config to unlazy a require using lazy-cache. fix(NA): build to work with node 10.
* test(NA): jest integration test for kbn-pluin-helpers.
* test(NA): fix jest tests for kbn-es.
* fix(NA): use ostmpdir instead of a tmp folder inside the fixtures.
* fix(NA): change afterEach on kbn es decompress test.
* fix(NA): change afterEach on kbn es decompress test.
* fix(NA): readd mock-fs for the tests that still use it on kbn-es and that works on node10.
* fix(NA): readd mock-fs for the tests that still use it on kbn-es and that works on node10.
* refact(NA): rewrite tests using mock-fs and completely remove this dependency.
* fix(NA): failing test implementation using jest mock in order to replace mock-fs.
* fix(NA): update jest snapshots to match new ones generated one node 10.
* fix(NA): cli/cluster mock to spyOn off method instead off spyOn removeListener as this was changed on Node 10.
* fix(NA): tests for cluster_manager to also spyOn off and on instead of addListener and removeListener
* test(NA): fix management advance settings image field test flow.
* fix(NA): apply missing types for src/core/server/plugins/discovery/plugins_discovery.ts.
* test(NA): updated 2 missing snapshots for KuiCodeEditor on kbn-ui-framework.
* refact(NA): fix eslint errors.
* refact(NA): fix ts code with tslint fix. chore(NA): update jest snapshots.
* chore(NA): migrate kbn config schema peer dependency to last used joi version to avoid warning on bootstrap.
* fix(NA): tslint errors.
* chore(NA): upgrade types node to the last version.
* fix(NA): missing utf8 input format encoding when reading a file.
* chore(NA): upgrade to node 10.14.1
* fix(NA): Buffer api usage to avoid deprecation warnings.
* fixing a11y errors so we can add a11y rules for tslint (#26902)
* [DOCS] Deprecate X-Pack-centric watcher endpoints (#26899)
* Index lifecycle (#25553)
* [WIP] Index lifecycle (#25071)
* Index lifecycle management wizard
* Adding index lifecycle management files
* Updates
* Fix errors and add flyout for node details
* New diff tool
* Scroll to change for review diff
* Some feedback on copy
* Updating copy, moving components around and fixing bugs with the diff view
* Add logic to auto enable a phase when something is set
* redesign ilm
* Adding server api tests
* Removing debug and some tweaks from dave's work
* Conditionally show this message
* Policy selection cleanup
* Updates for better UX
* [COPYEDIT | ILM] Copyedit of text in index lifecycle management UI
* Use better default text
* Remove debug
* Adding readme and comments
* Update readme
* Do not need this anymore
* Remove debug or commented out code
* Remove these - they are in the tests PR
* Toggle system indices
* Aliases are not defined here anymore
* Handle rollover better in warm phase and remove from cold,delete
* adding learn more link component and switching over to using that
* fixing UI issue when no policies exist
* various fixes
* some cleanup
* moving number_of_replicas due to API change
* modifying some messaging
* fixing typo
* fixing some diff issues and not adding sattr_name if none chosen
* making write alias required for template step and making necessary API changes
* removing alias definition from template patching as it needs to be per index
* some copy edits for clarity
* fixing issue with editing existing policy when rollover starts the warm phase
* addressing PR feedback on server side code
* addressing PR feedback
* removing additional spaces from findMatchingNodes call
* changing template to index template in one more place
* fixing issue with error message showing when bootstrap is successful
* fixing node options for warm and cold phase
* adding seconds to duration fields to match what ES supports
* changing icon for enabled steps so it does not look like an error indicator
* adjusting icon color for enabled lifecycle steps
* fixing issue with editing an existing policy with warm phase on rollover enabled
* fixing issue with default unit for age dropdowns
* fixing issues with shrink action serialization and deserialization
* fixing issue with deserialization of ES policy for shrink
* removing shrink option from UI when primary shard count is not greater than 1 for hot phase
* going straight to create policy when no policies exist
* improving lifecycle policy selection
* adding active badge instead of checkmark for active lifecycle policy phases
* some cleanup of unneeded properties and only showing save as new when it is appropriate
* removing stray fullWidth attribute
* adding missing minimum for replica count for warm phase
* adding scroll to top for review step
* fixing issue with start warm phase after rollover introduced by time representaiton change from ES
* making shrink options not show for primary shard count of 1 as you can't shrink in that situation
* fixing issue with editing existing policy and saveAsNew
* bare bones policy table implementation
* implementing delete policy behavior
* fixing sorting and paging
* fixing policy table title
* rudimentary navigation flow
* fixing delete
* Index lifecycle management wizard (#21925)
* Index lifecycle management wizard
* Adding index lifecycle management files
* Updates
* Fix errors and add flyout for node details
* New diff tool
* Scroll to change for review diff
* Some feedback on copy
* Updating copy, moving components around and fixing bugs with the diff view
* Add logic to auto enable a phase when something is set
* redesign ilm
* Adding server api tests
* Removing debug and some tweaks from dave's work
* Conditionally show this message
* Policy selection cleanup
* Updates for better UX
* [COPYEDIT | ILM] Copyedit of text in index lifecycle management UI
* Use better default text
* Remove debug
* Adding readme and comments
* Update readme
* Do not need this anymore
* Remove debug or commented out code
* Remove these - they are in the tests PR
* Toggle system indices
* Aliases are not defined here anymore
* Handle rollover better in warm phase and remove from cold,delete
* adding learn more link component and switching over to using that
* fixing UI issue when no policies exist
* various fixes
* some cleanup
* moving number_of_replicas due to API change
* modifying some messaging
* fixing typo
* fixing some diff issues and not adding sattr_name if none chosen
* making write alias required for template step and making necessary API changes
* removing alias definition from template patching as it needs to be per index
* some copy edits for clarity
* fixing issue with editing existing policy when rollover starts the warm phase
* addressing PR feedback on server side code
* addressing PR feedback
* removing additional spaces from findMatchingNodes call
* changing template to index template in one more place
* fixing issue with error message showing when bootstrap is successful
* fixing node options for warm and cold phase
* adding seconds to duration fields to match what ES supports
* changing icon for enabled steps so it does not look like an error indicator
* adjusting icon color for enabled lifecycle steps
* fixing issue with editing an existing policy with warm phase on rollover enabled
* fixing issue with default unit for age dropdowns
* fixing issues with shrink action serialization and deserialization
* fixing issue with deserialization of ES policy for shrink
* removing shrink option from UI when primary shard count is not greater than 1 for hot phase
* going straight to create policy when no policies exist
* improving lifecycle policy selection
* adding active badge instead of checkmark for active lifecycle policy phases
* some cleanup of unneeded properties and only showing save as new when it is appropriate
* removing stray fullWidth attribute
* adding missing minimum for replica count for warm phase
* adding scroll to top for review step
* fixing issue with start warm phase after rollover introduced by time representaiton change from ES
* making shrink options not show for primary shard count of 1 as you can't shrink in that situation
* fixing issue with editing existing policy and saveAsNew
* adjusting to changes in ES API
* adding version and modified date to policies table
* implementing new CRUD approach
* simplified delete
* cleanup edit_policy
* removed wizard code
* fixing issue with edit policy
* fixing issue with closing delete confirmation modal
* making max age and max size not mutually exclusive
* removing names of covered indices from policy table
* changing minimum_age to min_age
* first pass at index lifecycle extensions
* adding retry button for ilm covered index that is in error
* first pass at index lifecycle banner
* i18n work
* more i18n
* fixing issue with node attributes
* removing console.log statements
* fixing issue with deserializing number_of_shards for edit policy
* defaulting shrink to false and fixing ui spacing issue
* removing hot phase shard count from warm phase
* scrolling to first error when user submits form for edit policy
* disabling UI for index management when enabled is false in kibana.yml
* disabling index lifecycle management when enabled is false in kibana.yml
* extending index management filter to allow for searching fields
* add support for filtering to indices with errors for index lifecycle management banner
* i18n work
* fixing error wrappers
* fixing tests
* adding view JSON for index lifecycle policy on edit screen
* fixing label for i18n on policy JSON flyout
* removing console.log statements
* fixing tests
* removing console.log statements
* adding key for banner extensions
* fixing bad import for FormattedMessage
* add link to edit index lifecycle policy from index management index summary
* adding key for map of summary extensions
* adding proper icon for retry lifecycle action
* factoring out common min age component
* factoring out common NodeAllocation component
* add copy to clipboard for json policy flyout
* adding validation rules for policy names to match ES rules
* fixing issues with policy names with non-alphabetic characters like & ^ % ?
* moving create policy button to top right and adding fill
* adding better empty state for policy list
* moving shrink and force merge titles and descriptions to the left
* moving show JSON button to right and limiting width of JSON flyout
* fixing warning about lifecycle prop type for JSON flyout
* fixing issue with warning on prop isShowingErrors
* removing outdated README
* simplifying constants
* moving components to more logical places
* moving lib and api files to services
* renaming provider to enricher
* factoring out common data enricher behavior
* consolidating index management extension code
* removing unnecessary colon
* Revert "removing unnecessary colon"
This reverts commit 19712807bb.
* removing unnecessary colon
* adding callout to ilm summary for errors
* better formatting for banner extensions
* Revert "disabling UI for index management when enabled is false in kibana.yml"
This reverts commit 45d4e8c51d.
* removing unnecessary code for detecting disabled plugin
* adding config prefix of xpack.index_lifecycle_management
* making policy link use href and consolidating link encoding logic
* removed outdated comment
* removed outdated comment
* better solution for policy name in URI
* fixing issue with index management being disabled and index_lifecycle_management not
* adding link to index management list filtered to policy name from index_lifecycle_management policy list
* fixing tests
* adding popover for stack trace for ilm errors
* adding stack trace and phase definition popovers to ilm summary in index management
* adding to blacklist for node attributes and not showing node allocation section when there are not any node attributes to choose from
* not showing create policy button in upper right for empty state
* moving policy name form field to right to be consistent with the rest of the form layout
* moving save button to left and using secondary color
* added copied to clipboard toast message
* moving activate/deactivate buttons to left on edit policy page
* deleting unnecessary less file
* using spacer instead of style
* translating success message for edit policy save
* fixing missing props warnings for EuiDescribedFormGroup usages
* better error handling borrowed from rollups
* disabling delete when a policy is attached to indices
* adding remove lifecycle policy action
* fixing issue with remove ilm policy showing for non-managed indices`
* adding add lifecycle policy action to index management extensions in index lifecycle management
* adding confirm modal for remove lifecycle policy
* fixing validation
* fixing issue with back button and edit policy retaining old policy
* removing console.log
* making no policy modal for add lifecycle policy make more sense (no add button)
* Calling reloadIndices when a lifecycle policy gets added or removed
* fixing logic issue with spinner showing
* refactoring confirm modal on policy list page
* adding an add to index template button on policy list page
* fixing console warning about select value being null
* fixing issue with modal not opening from index management table manage menu
* changing app title and adding i18n for it
* more naming changes and adding beta badge
* adding filter extension to index management and using it to add filters for index lifecycle management
* fixing broken jest test
* fixing issue with banners appearing/disappearing based on filters
* adding xpack.ilm.ui.enabled to allow cloud to disable the ui
* add ability to configure list of node attributes to ignore in kibana.yml for cloud
* filtering out reserved system templates from fetch route list
* adding warning when user tries to add a policy to a template that already has a policy
* fixing a11y issues on edit policy form
* incorporating docs team feedback on copy
* adding learn more link to add policy to index template modal
* fixing app order for management
* fixing breadcrumb issue by adding redirect for BASE_PATH (and adding memory leak fix)
* making version and covered indices column smaller and adding horizontal scroll and min width
* right align actions and better width solution for columns
* bigger spacer under callout for no node attributes
* restricting width of edit page
* fixing typo
* removing unnecessary store code for index templates
* fixing react warning about boolean type
* moving beta badge in line with title on policies screen
* better UI for show JSON for edit policy
* commenting on the memory leak fix for React Router redirects
* fixing fatal error with node allocation flyout
* fixing issue with banner not showing
* moving unmanaged/managed filter to filter group to make it clearer what they mean
* removing unused code
* copy changes
* adding context menu for policy table instead of icon buttons
* adding fix errors badge for phases
* removing unnecessary close button in flyout footer
* adding spinner when nodeOptions are not present
* moving view a list button below input
* adding more explanation to add policy to index template modal
* adding documentation link for main ILM docs in ES
* only showing view nodes link when node attributes are selected
* removing colon from flyout title
* fixing layout for view nodes button for attributes
* making loading spinner larger for node attributes select
* fixing issue with button going off end of table
* removing title from empty prompt for policy table
* fixing max width for edit policy page
* copy edits
* don't show pager when number of policies is less than minimum page size
* making number of replicas optional and adding optional label
* fixing sort for policy table
* fixing flicker for node allocation
* removing redundant message for index policies defined
* fixing spacing/alignment issues on error display for summary
* fixing issues with pager not showing and controls disappearing when filters applied
* adding tests for policy table
* more test additions
* making search bar incremental for index management
* making JSON policy flyout show ES request JSON not internal representation
* adding error message when user tries to submit add policy to index without selecting policy
* adding validation for missing template on add policy to index template modal
* adding tests for ilm index management extensions
* adding tests for edit policy
* removing learn about node attributes link until docs come
* fixing prop type warning
* adding missing translations
* better tests for edit policy
* adding tests for node attribute inputs
* better tests for node attributes
* fixing policy table test
* fixing bad i18n id
* updating snapshot
* [Telemetry] Pull local Kibana usage stats (#26496)
* add kibana stats
* fix tests
* format the stats for telemetry
* fix the os/platform stats
* add version to locally-source kibana telemetry stats
* use callWithInternalUser
* better get_kibana module unit test verification
* separate handleKibanaStats
* variable rename
* fix comment
* fix functional test
* keep the return object literal from handleLocalStats
* validate the payload fields
* add warning log if no kibana stats returned
* add missing apm-server response error monitor (#26570)
* [DOCS] Deprecate /_xpack/security in favor of /_security (#26897)
* fix ems hotlink (#26868)
* Initialize authorization mode for reporting jobs (#26762)
* wrap non error in a try/catch (#26898)
* fix(NA): change kbn pm webpack config to generate dist files in mode=none. (#26847)
* Fail out of auth flow on first provider failure (#26648)
In practical terms, the flexibility afforded by providers being able to
recover from the failures of previously configured providers isn't
compelling, but the ambiguity is not ideal.
* fixing a11y errors so we can add a11y rules to tslint (#26895)
* EUI 5.6.0 (#26839)
* eui 5.6.0
* Import IconType in infra/types/eui.d.ts
* fixing interpreter socket error (#26870)
* fixes split chart with no data (#26872)
* fixing tooltips for line chart (#26881)
* Make space selector a button (#26889)
* [ML] Adds isRequired where applicable to timeseries_chart props. (#26880)
Adds isRequired to timeseries_chart props to match the minimum required props necessary to render the component without errors reflected in the Minimal initialization test.
* Translate share (#26802)
* Only show change password form when a password change is possible (#26779)
* only show change password form when a password change is possible
* cleanup
* remove test code
* improved message
* [Beats CM] Add basic license type (#26935)
* Improve wording when creating a space (#26915)
* copy tweaks
* update save space toast
* adjust save toast
* fixing issue with multiple execution in console (#26933)
* fixing a11y error (#26906)
* [i18n] Translate ML - File Datavisualizer (Part 1) (#25641)
translate file_datavisualizer folder of Machine Learning (Part 1)
* Use new _graph endpoints (#26956)
* [ML] Do not pass datafeed query to Discover in custom URL (#26957)
* quick ILM fixes (#26966)
* fix fatal IE 11 error with undefined TextEncoder
* fixing validation issue with hot phase
* fixing double scroll bar on IE11
:
* Fixing a11y errors in querybar and suggestion_component (#26892)
* correcting a11y errors so that we can add a11y rules to tslint
* updating the jest snapshot
* updating the jest snapshot
* do not pass 'sortOrder' to EuiContextMenuItem in share context menu (#26890)
* do not pass 'sortOrder' to EuiContextMenuItem in share context menu
* add unit test for sortOrder
* avoid using lodash
* fix merge conflicts with internationization PR
* Feat: Workpad Templates (#23966)
* Added workpad manager which contains workpad_loader and workpad_templates
* Fixed term filter in workpad_templates
* design changes
* Removed console logs
Closes workpad manager modal after cloning template
Fixed filtering workpad templates
Removed console log
Added sample templates
Added more templates to test with
Removed cloneDeep
* case insensitive template search
* Case insensitive tag order in popover
* added descriptions and tags to sample data workpads
* refine list of initial templates
* remove sample data templates, make buttons bigger
* Added template and tag registries
* Fixed workpad loader resizing issue on home page
* Moved tags to ui folder
* Fixed template class
* Fixed properties in templates to match workpad
* fix lint errors (#26985)
* Fix: Support columns with dots (#26659)
Closes https://github.com/elastic/kibana/issues/26405
Upgrades tinymath so that columns with dots now work correctly.
---
To test, follow the details in #26405.
1. Get some data that has fields with dots in them. Beats data would work, or you can create a test index with just 2 documents as follows:
```
POST test/test
{
"string":"abc",
"with.dot":"abc"
}
POST test/test
{
"string":"abcd",
"with.dot":"abcd"
}
```
2. Create a pie chart, splitting labels on one of the available fields.
Previously, given the POST info above, only `string` would work correctly. Now both (and both of their `.keyword` variants) work correctly.
![dec-04-2018 13-35-47](https://user-images.githubusercontent.com/404731/49473970-b2cf7a00-f7d0-11e8-995b-e1a5e2a2acba.gif)
* upgrade resize-observer-polyfill version (#26990)
* Fixing issues with the url.search being null in Node 10 (#26992)
Node 10 uses `null` to denote the non-existence of a querystring
parameter when `url.parse(urlString, true)` is used, the following
changes fix our usages within the security plugin.
* Hide logs from deleteAll on task: clean client modules into dll (#26884)
* refact(NA): deleteAll function in order to allow it to not log anything out.
* fix(NA): add missing no op debug and verbose functions.
* refact(NA): wrap log calls into if calls.
* [APM] Fix for library frames not collapsing (#26827)
* [APM] fixes#26525
- simplified the stackframe grouping algorithm
- add support for `stackframe.exclude_from_grouping`
- made the rendering more tolerant of edge cases
* Made improvements to code readability and added more meaningful test cases
* [i18n] Translate untranslated labels (#26416)
* Translate some missing translations
* Fix issues
* Add topNavMenu translations
* Fix issues
* Fix topNav
* Fix issues
* Fix issues
* Fix kbnTopNav test and parametrs description
* [ML] Fix word break in anomalies and jobs tables (#26978)
* fixes other bucket request (#26874)
* [I18n] Register translations before plugins init (#26078)
* Register translations before plugins init
* Fix i18n engine initialization
* Fix translationPath$ RxJS pipeline
* Move translations registration to mixin
* Fix arrays concatenation
* Use prettier
* Fix translations relative paths
* Use globby instead of glob
* Update docs
* Move globby to dependencies
* Get rid of translation directories config
* Update globby patterns
* Search only for current locale translation files
* [Infra UI] Fix styling after breaking EUI changes (#27021)
This restores the Infrastructure and Logs UIs after upstream changes:
* The theme json import now behaves like a ES6 module.
* The `<EuiHeaderSection>` now requires the `grow` prop to be `true` in order to grow horizontally.
* [i18n] Optimize translation labels for Roles page (#26945)
* [i18n] Optimize translation labels
* Usage of ng-if instead of ng-show
* Update APM readme
* [APM] Convert errors API to typescript (#26801)
* [I18n] Allow i18n filter usage outside of interpolation expressions (#26803)
* [I18n] Allow i18n filter usage outside of interpolation expressions
* Remove redundant quotes from translation
* Update tests
* Resolve comments
* Fix wrong filter usage
* Introduce `recordOf` schema. Remove redundant declarations. (#26952)
* [Infra UI] Fix graphql type generation after package upgrades (#26991)
This fixes the infrastructure UI graphql type generation after relevant packages have been upgraded in #25157.
* [Monitoring] APM monitoring to EUI (#26344)
* Convert cluster alerts page to use EUI tables. Also adds baseline support for all monitoring tables
* Fix tests
* Remove these two files
* Keep the original table but offer a new one so existing UIs still work
* Use different base table controller for the EUI table
* Use EUI specific asc and desc constants
* Update summary status
* ES nodes
* Indices page
* ML job listing
* Fix tests up
* Node listing page
* Advanced node page
* Advanced index
* Fix tests
* Fix onBrush
* Cluster listing page
* Overview page
* Update snapshots
* Fix functional tests
* Beats instances
* Fix more tests
* Update cluster tests
* Logstash UIs
* Logstash tests
* APM pages
* [Monitoring] Beats monitoring to EUI (#26287)
* Convert cluster alerts page to use EUI tables. Also adds baseline support for all monitoring tables
* Fix tests
* Remove these two files
* Keep the original table but offer a new one so existing UIs still work
* Use different base table controller for the EUI table
* Use EUI specific asc and desc constants
* Update summary status
* ES nodes
* Indices page
* ML job listing
* Fix tests up
* Node listing page
* Advanced node page
* Advanced index
* Fix tests
* Fix onBrush
* Cluster listing page
* Overview page
* Update snapshots
* Fix functional tests
* Beats instances
* Fix more tests
* Update cluster tests
* [Monitoring] Kibana monitoring to EUI (#26361)
* Convert cluster alerts page to use EUI tables. Also adds baseline support for all monitoring tables
* Fix tests
* Remove these two files
* Keep the original table but offer a new one so existing UIs still work
* Use different base table controller for the EUI table
* Use EUI specific asc and desc constants
* Update summary status
* ES nodes
* Indices page
* ML job listing
* Fix tests up
* Node listing page
* Advanced node page
* Advanced index
* Fix tests
* Fix onBrush
* Cluster listing page
* Overview page
* Update snapshots
* Fix functional tests
* Beats instances
* Fix more tests
* Update cluster tests
* Logstash UIs
* Logstash tests
* APM pages
* Kibana pages
* [Monitoring] Logstash monitoring to EUI (#26298)
* Convert cluster alerts page to use EUI tables. Also adds baseline support for all monitoring tables
* Fix tests
* Remove these two files
* Keep the original table but offer a new one so existing UIs still work
* Use different base table controller for the EUI table
* Use EUI specific asc and desc constants
* Update summary status
* ES nodes
* Indices page
* ML job listing
* Fix tests up
* Node listing page
* Advanced node page
* Advanced index
* Fix tests
* Fix onBrush
* Cluster listing page
* Overview page
* Update snapshots
* Fix functional tests
* Beats instances
* Fix more tests
* Update cluster tests
* Logstash UIs
* Logstash tests
* Add this translation back in
* PR feedback
* Add handles graph
* Add limits in the UI
* Remove debug
* Update api tests
* Fix tests
* Fix snapshots
* Skip this test for now
* Fix this test and re-enable it
* Initial version of CCR monitoring UI
* Adding missing files
* Use icons
* Use new column header text
* Update tests
* Basic of shard detail page
* Do these in parallel
* Disable time picker on ccr page
* Remove summary for now
* Remove unnecessary code here
* Fix a few things on the shard page
* Only send down what we need
* update snapshot
* Handle no ccr_stats documents
* Ensure we fetch the latest
* Updates
* Format the time
* Add api integration tests
* Adding pagination and sorting
* Updated query logic
* Change this back
* Add specific information about the follower and leader lag ops
* Update tests
* UI updates
* Address PR issues
* Fix tests
* Update shapshots
* Add timestamp
* Update tests
* Add a few snapshot tests
* Use timezone formatter
* Fix tests
* Fix aligment of shard table
* PR feedback
* Update snapshots
* Update snapshot
### Review notes
This is generally ready for review. We are awaiting https://github.com/elastic/elasticsearch/issues/32777 to improve handling when users do not have any access to Kibana, but this should not hold up the overall review for this PR.
This PR is massive, there's no denying that. Here's what to focus on:
1) `x-pack/plugins/spaces`: This is, well, the Spaces plugin. Everything in here is brand new. The server code is arguably more important, but feel free to review whatever you see fit.
2) `x-pack/plugins/security`: There are large and significant changes here to allow Spaces to be securable. To save a bit of time, you are free to ignore changes in `x-pack/plugins/security/public`: These are the UI changes for the role management screen, which were previously reviewed by both us and the design team.
3) `x-pack/test/saved_object_api_integration` and `x-pack/test/spaces_api_integration`: These are the API test suites which verify functionality for:
a) Both security and spaces enabled
b) Only security enabled
c) Only spaces enabled
What to ignore:
1) As mentioned above, you are free to ignore changes in `x-pack/plugins/security/public`
2) Changes to `kibana/src/server/*`: These changes are part of a [different PR that we're targeting against master](https://github.com/elastic/kibana/pull/23378) for easier review.
## Saved Objects Client Extensions
A bulk of the changes to the saved objects service are in the namespaces PR, but we have a couple of important changes included here.
### Priority Queue for wrappers
We have implemented a priority queue which allows plugins to specify the order in which their SOC wrapper should be applied: `kibana/src/server/saved_objects/service/lib/priority_collection.ts`. We are leveraging this to ensure that both the security SOC wrapper and the spaces SOC wrapper are applied in the correct order (more details below).
### Spaces SOC Wrapper
This wrapper is very simple, and it is only responsible for two things:
1) Prevent users from interacting with any `space` objects (use the Spaces client instead, described below)
2) Provide a `namespace` to the underlying Saved Objects Client, and ensure that no other wrappers/callers have provided a namespace. In order to accomplish this, the Spaces wrapper uses the priority queue to ensure that it is the last wrapper invoked before calling the underlying client.
### Security SOC Wrapper
This wrapper is responsible for performing authorization checks. It uses the priority queue to ensure that it is the first wrapper invoked. To say another way, if the authorization checks fail, then no other wrappers will be called, and the base client will not be called either. This wrapper authorizes users in one of two ways: RBAC or Legacy. More details on this are below.
### Examples:
`GET /s/marketing/api/saved_objects/index-pattern/foo`
**When both Security and Spaces are enabled:**
1) Saved objects API retrieves an instance of the SOC via `savedObjects.getScopedClient()`, and invokes its `get` function
2) The Security wrapper is invoked.
a) Authorization checks are performed to ensure user can access this particular saved object at this space.
3) The Spaces wrapper is invoked.
a) Spaces applies a `namespace` to be used by the underlying client
4) The underlying client/repository are invoked to retrieve the object from ES.
**When only Spaces are enabled:**
1) Saved objects API retrieves an instance of the SOC via `savedObjects.getScopedClient()`, and invokes its `get` function
2) The Spaces wrapper is invoked.
a) Spaces applies a `namespace` to be used by the underlying client
3) The underlying client/repository are invoked to retrieve the object from ES.
**When only Security is enabled:**
(assume `/s/marketing` is no longer part of the request)
1) Saved objects API retrieves an instance of the SOC via `savedObjects.getScopedClient()`, and invokes its `get` function
2) The Security wrapper is invoked.
a) Authorization checks are performed to ensure user can access this particular saved object globally.
3) The underlying client/repository are invoked to retrieve the object from ES.
## Authorization
Authorization changes for this project are centered around Saved Objects, and builds on the work introduced in RBAC Phase 1.
### Saved objects client
#### Security without spaces
When security is enabled, but spaces is disabled, then the authorization model behaves the same way as before: If the user is taking advantage of Kibana Privileges, then we check their privileges "globally" before proceeding. A "global" privilege check specifies `resources: ['*']` when calling the [ES _has_privileges api.](https://www.elastic.co/guide/en/elasticsearch/reference/current/security-api-has-privileges.html). Legacy users (non-rbac) will continue to use the underlying index privileges for authorization.
#### Security with spaces
When both plugins are enabled, then the authorization model becomes more fine-tuned. Rather than checking privileges globally, the privileges are checked against a specific resource that matches the user's active space. In order to accomplish this, the Security plugin needs to know if Spaces is enabled, and if so, it needs to ask Spaces for the user's active space. The subsequent call to the `ES _has_privileges api` would use `resources: ['space:marketing']` to verify that the user is authorized at the `marketing` space. Legacy users (non-rbac) will continue to use the underlying index privileges for authorization. **NOTE** The legacy behavior implies that those users will have access to all spaces. The read/write restrictions are still enforced, but there is no way to restrict access to a specific space for legacy auth users.
#### Spaces without security
No authorization performed. Everyone can access everything.
### Spaces client
Spaces, when enabled, prevents saved objects of type `space` from being CRUD'd via the Saved Objects Client. Instead, the only "approved" way to work with these objects is through the new Spaces client (`kibana/x-pack/plugins/spaces/lib/spaces_client.ts`).
When security is enabled, the Spaces client performs its own set of authorization checks before allowing the request to proceed. The Spaces client knows which authorization checks need to happen for a particular request, but it doesn't know _how_ to check privileges. To accomplish this, the spaces client will delegate the check security's authorization service.
#### FAQ: Why oh why can't you used the Saved Objects Client instead!?
That's a great question! We did this primarily to simplify the authorization model (at least for our initial release). Accessing regular saved objects follows a predictible authorization pattern (described above). Spaces themselves inform the authorization model, and this interplay would have greatly increased the complexity. We are brainstorming ideas to obselete the Spaces client in favor of using the Saved Objects Client everywhere, but that's certainly out of scope for this release.
## Test Coverage
### Saved Objects API
A bulk of the changes to enable spaces are centered around saved objects, so we have spent a majority of our time automating tests against the saved objects api.
**`x-pack/test/saved_object_api_integration/`** contains the test suites for the saved objects api. There is a `common/suites` subfolder which contains a bulk of the test logic. The suites defined here are used in the following test configurations:
1) Spaces only: `./spaces_only`
2) Security and spaces: `./security_and_spaces`
3) Security only: `./security_only`
Each of these test configurations will start up ES/Kibana with the appropriate license and plugin set. Each set runs through the entire test suite described in `common/suites`. Each test with in each suite is run multiple times with different inputs, to test the various permutations of authentication, authorization type (legacy vs RBAC), space-level privileges, and the user's active space.
### Spaces API
Spaces provides an experimental public API.
**`x-pack/test/spaces_api_integration`** contains the test suites for the Spaces API. Similar to the Saved Objects API tests described above, there is a `common/suites` folder which contains a bulk of the test logic. The suites defined here are used in the following test configurations:
1) Spaces only: `./spaces_only`
2) Security and spaces: `./security_and_spaces`
### Role Management UI
We did not provide any new functional UI tests for role management, but the existing suite was updated to accomidate the screen rewrite.
We do have a decent suite of jest unit tests for the various components that make up the new role management screen. They're nested within `kibana/x-pack/plugins/security/public/views/management/edit_role`
### Spaces Management UI
We did not provide any new functional UI tests for spaces management, but the components that make up the screens are well-tested, and can be found within `kibana/x-pack/plugins/spaces/public/views/management/edit_space`
### Spaces Functional UI Tests
There are a couple of UI tests that verify _basic_ functionality. They assert that a user can login, select a space, and then choose a different space once inside: `kibana/x-pack/test/functional/apps/spaces`
## Reference
Notable child PRs are listed below for easier digesting. Note that some of these PRs are built on other PRs, so the deltas in the links below may be outdated. Cross reference with this PR when in doubt.
### UI
- Reactify Role Management Screen: https://github.com/elastic/kibana/pull/19035
- Space Aware Privileges UI: https://github.com/elastic/kibana/pull/21049
- Space Selector (in Kibana Nav): https://github.com/elastic/kibana/pull/19497
- Recently viewed Widget: https://github.com/elastic/kibana/pull/22492
- Support Space rename/delete: https://github.com/elastic/kibana/pull/22586
### Saved Objects Client
- ~~Space Aware Saved Objects: https://github.com/elastic/kibana/pull/18862~~
- ~~Add Space ID to document id: https://github.com/elastic/kibana/pull/21372~~
- Saved object namespaces (supercedes #18862 and #21372): https://github.com/elastic/kibana/pull/22357
- Securing saved objects: https://github.com/elastic/kibana/pull/21995
- Dedicated Spaces client (w/ security): https://github.com/elastic/kibana/pull/21995
### Other
- Public Spaces API (experimental): https://github.com/elastic/kibana/pull/22501
- Telemetry: https://github.com/elastic/kibana/pull/20581
- Reporting: https://github.com/elastic/kibana/pull/21457
- Spencer's original Spaces work: https://github.com/elastic/kibana/pull/18664
- Expose `spaceId` to "Add Data" tutorials: https://github.com/elastic/kibana/pull/22760Closes#18948
"Release Note: Create spaces within Kibana to organize dashboards, visualizations, and other saved objects. Secure access to each space when X-Pack Security is enabled"
* Merge in boilerplate branch
* Manually copy over the specific metrics and UIs
* Add api integration tests
* Fix tests
* Remove unused metrics
* Update snapshot
* Fix tests
* Remove types agg
* Use ApmClusterMetric
* provide description for apm-server monitoring metrics (#23331)
* Vis LESS to SASS (cont.) (#23199)
* Tweak migrations integraiton tests to have a stable sort (#23265)
* Fix: plugin api route with security enabled (#23334)
Closes https://github.com/elastic/kibana/issues/23266
This is more of a quick fix than the final solution. The issue was that Canvas tries to check the plugins API without checking to see if the user it logged in. As a result, instead of the plugins response, it gets the HTML from the login page and that causes an error to be thrown when attempting to parse the results.
For now, this PR just disables the auth requirement on the Canvas plugin API endpoint.
* [migrations/tests] sort results before assertion (#23347)
There have been several failures in this test, seemingly caused by a lack of sorting in the results. It makes sense that since both migrations are run simultaneously that sometimes one would succeed and sometimes another would, so I've just sorted the results before checking.
![image](https://user-images.githubusercontent.com/1329312/45791153-44e9cc80-bc3d-11e8-88c4-760d4c7b35bd.png)
cc: @chrisdavies
* [ML] Moves custom URL editor Add button and form to top of flyout (#23326)
* [ML] Moves custom URL editor Add button and form to top of flyout
* [ML] Edits to custom URL editor class name
* Graph LESS to SASS (#23348)
* Developer documentation for integrating with the telemetry service (#23295)
* Developer documentation for integrating with the telemetry service
* open with a bang
* more faqs
* thing about tracking ui interactions
* talk to the plat team
* create and register
* Fix a bug where ES sends a string and migrations expect a boolean (#23313)
* chore: use cheerio in i18n.html.getDirectiveMessages (#23342)
this was only using jsdom to parse html, but cheerio allows parsing html without requiring a dom. cheerio was also already in the dependency list.
* [core/utils] add shareWeakReplay() operator (#23333)
* Chore: fix canvas test runner (#23336)
Blocked by https://github.com/elastic/kibana/pull/23342
This fixes the local test runner in Canvas. It should not affect anything else, including the CI test runner.
- Bumps JSDOM to ^12.0.0
- I matched Kibana's version on migration, but nothing else in X-Pack uses JSDOM, so we can use the newer version (which has a very different API)
- I had to match it because of a script that enforces version matching, but #23342 removed jsdom from Kibana, so we no longer have a version to match
- Restores the local `.babelrc` file
- I thought it was only used for building plugins; I was wrong 😢
* Convert Discover open top nav to EUI flyout (#22971)
* move find logic to SavedObjectFinder component since savedObjectClient is no longer coupled to angular
* implement flyout open saved searches
* remove old open stuff
* add jest test for OpenSearchPanel and simplify panel title
* fix functional tests
* fix _lab_mode functional test
* Migrate save top nav in Discover and Visualize to EUI (#23190)
* extract reusable save component from DashboardSaveModal
* update discover search to use SavedObjectSaveModal
* create generic show_save_model that works for both discover and dashboard
* fix last bits of discover save
* remove old save functionallity
* migrate visualize save to EUI
* fix functional tests
* disable save button if title is empty
* mark title input as invalid when title is not provided
* fix funtional tests
* Moves styleSheetPath to uiExports (#23007)
This was previously defined in uiExports.app, which limited plugins which are not an app of providing a stylesheet. This allows any plugin to define a stylesheet which will be available on page load.
* Timelion less to sass (#23339)
* Consistent casing
* Fix snapshot
* Update tests
This PR fixes the logic for logging the deprecation warning introduced with https://github.com/elastic/kibana/pull/22765. Previously Kibana would log the warning if the new `xpack.monitoring.cluster_alerts.email_notifications.email_address` setting was not defined, regardless of `xpack:defaultAdminEmail`'s setting.
Now, we will only log the deprecation warning if all of the following are true:
1) `xpack.monitoring.cluster_alerts.email_notifications.email_address` is not set.
2) `xpack:defaultAdminEmail` is set. (**<-- this is the new part**)
3) We haven't already logged the deprecation warning