Commit graph

21899 commits

Author SHA1 Message Date
Sarah Hersh
5654f608eb
DOCS/add detail to managing rollup jobs (#28000) 2019-01-04 10:42:35 -05:00
Nox911
fc94bb181d
[i18n] Translate ML - explorer (#27805)
* Translate explorer

* Update snapshot

* Update test

* Resolve comments from review

* Resolve issues from review comments

* Translate additional files

* Fix issues from review comments

* Update test
2019-01-04 17:53:34 +03:00
Thomas Neirynck
e7e8d48535
[Maps] Add EMS Tile services to UI (#28032) 2019-01-04 09:21:50 -05:00
Nox911
fdfbd57a89
[i18n] Translate ML - index.js (#27976)
* Translate index.js

* Resolve issue from review comment
2019-01-04 16:19:13 +03:00
Walter Rafelsberger
99f99291ef
[ML] Tests for ML annotations feature. (#27994)
Adds unit/integration tests for various parts of the code base affected by the annotations feature.
2019-01-04 14:00:34 +01:00
Nox911
3496dff912
[i18n] Translate ML - util (#27971)
* Translate public -> util folder

* Add translations for register_feature.js and breadcrumbs.js

* Resolve issues from review comments
2019-01-04 15:26:42 +03:00
pavel06081991
bb3bd2a16d
[ML] translate job select (#27803)
[ML] translate job select
2019-01-04 10:31:50 +03:00
pavel06081991
21209debc4
[ML] translate formatters (#27806)
[ML] translate formatters
2019-01-04 10:00:55 +03:00
pavel06081991
ac99a2eb85
[ML] field data card translations (#27593)
[ML] translate field data card
2019-01-04 09:58:34 +03:00
Matthew Kime
20ed7d43b7
Index Pattern UI - remove _remote/info query (#27345)
* use internal user to query _remote/info

* query both * and *:* rather than querying for clusters

* Update create_index_pattern_wizard.js

* Update create_index_pattern_wizard.js

* add a closing curly bracket

* fix for failed matches

* Update create_index_pattern_wizard.js
2019-01-03 22:51:50 -06:00
Chandler Prall
d265b4b8d1
Remove SCSS linting from dev server (#28055) 2019-01-03 21:41:40 -07:00
Chandler Prall
52d2be5312 Change sass-lint config to very specifically target files to lint (#28048) 2019-01-03 19:16:37 -08:00
Tim Sullivan
d568e65e78
Core task manager (#24356)
* Core task manager (#23555)

* Initial stab at core task manager logic

* Update task_manager readme

* Update task manager readme

* Add cancelable helper package, OSS, and general purpose, but
will be useful for writing cancelable x-pack tasks.

* Make the cancellable package promise-compliant

* Update task manager readme w/ reference to cancellable

* Change pool from lazy to eager, add support for sub-pools per task type.

* Move cancellable to task_manager, and typescriptify it.

* Working proof of concept for task manager. Still have lots to do:
clean up, tests, comments, validations, assertions, etc.

* Add pagination support to task manager fetch

* Move task manager to OSS

* Remove task manager reference from x-pack

* Make task_manager a valid core plugin

* Modify how task resource allocation works

* Remove the special case 'max' workers occupied value

* Remove x-pack package.json changes

* Make taskDefinitions a part of uiExports

* Make task docs saved-object compliant.

* Add kbnServer to the task context.

* Allow tasks to have a void / undefined return type

* revert x-pack change

* move cancellable to src/utils

* move to src/server

* use afterPluginsInit hook

* task_manager.ts rename

* add a wrapper with a setClient method

* Add tests for task runner

* Break task_pool into smaller, testable pieces

* return raw task doc fields for calling code

* remove todo comment

* helper module for default client
 - setClient takes a callback fn

* fix misidentified field name

* fix rest args warning

* flatten task_pool

* remove cancellable

* return raw task doc fields for calling code

* remove todo comment

* helper module for default client
 - setClient takes a callback fn

* fix rest args warning

* typescript fixes

* roll back setClient takes a callback

* createTaskRunner returns an object with run/cancel functions

* Test task store, tweak task poller tests

* Rename num_workers to max_workers

* Tweak task pool method names

* Fix cancellable test, and ts errors

* Rename doc to _doc

* Fix the doc type in the task manager index mappings

* Make task costs configurable in kibana.yml

* fix a tslint warning

* TaskManager.afterPluginsInit replaces circuitous stuff

* addMiddleware, implement beforeSave

* wip

* comment

* run context stuff

* pretty fix

* comments

* lint/pretty fixes

* safeties in case they don't define both beforeRun and beforeSave

* task runner test constructor opts fix

* Add task_manager integration tests

* FIx readme mistakes, fix schedule signature

* Fix integration tests

* Add blurb about middleware

* make a libs directory for the small things

* test for extractTaskDefinitions

* unit test for middleware

* Comment, refactor, and test task_manager

* Touch up comments

* Make task store throw error if given an unknown task type

* Fix sample task definition in readme

* Make task manager toggle on / off based on Elasticsearch connectivity

* Prevent task manager from crashing Kibana if
elasticsearch plugin is disabled

* Fix task manager signature

* Move the task manager into the task manager mixin,
fix tests. It's an uber integration object anyway, so
it seemed to make sense to keep it in one place.

* Fix task manager integration tests

* Update the task manager index creation to use auto_expand_replicas

* Fix task manager integration tests

* Fix task manager integration tests

* Fix the overzealous deletion of .kibana during tests

* Core task manager

* Allow hardcoded ID passed in

* comments

* don't deconstruct type and task for payload

* remove uiExport support

* move task_manager to x-pack/plugins

* expose as client on the plugin namespace

* fix tests

* move plugin api integration tests

* roll back readme sample task definition example

* fix sample plugin link

* server.taskManager

* sanitizeTaskDefinitions

* fix integration tests

* sanitize rename

* assert unintialized and check for duplicates in registerTaskDefinitions

* Remove unnecessary defaults from task_manager.test.ts

* Remove task manager from OSS

* Remove task manager from src

* Tidy up task_manager unit tests around elasticsearch status changes

* Integration test for specifying ID in scheduling

* Task_manager init -> preInit to allow other plugins to consume
taskManager in their init.

* Remove task manager integration tests from OSS

* spelling

* readme fix

* fix test code impacted by hapi upgrade

* Task Manager index creation changes (#24542)

* Uses putTemplate for task manager mappings and index settings.

* Removes create option.

* Opposite day, the test catches up to the code changes.

* Ignores index unavailable during searches.

* Improve taskRunner's processResult (#24880)

* Set task state to idle after run, and add failed state

* fix tests

* Test alerting demo (#25136)

* Ensures that task store init gets called before schedule.

* Removes unused option for debugging purposes.

* Fix unit tests because a second callCluster was made.

* Task manager starts sanely.

Does not preInit
Will not allow definitions after initialization
Creates store immediately.
Modifies store after all plugins have initialized
Adds static tasks that will be defined by plugins.

* Task manager should not allow operations before initialization.

* Attempts to fix runner tests.

* Fixes unit test contract with APIs.

* Removes unused type definitions.

* Removes unused package json.

* Removes unused import type.

* Removes unnecessary async applied to a function.

* Returns diferently if task store has already initialized.

* Explains how to add static task instances to task definitions. (#25880)

* Tasks cannot be scheduled until task manager is initialized.

* Adds task manager api integration tests to ci group4.

* Context of describe test must be the test framework object.

* Update src/es_archiver/lib/indices/kibana_index.js

regex update to actually disallow non-kibana system indices

Co-Authored-By: tsullivan <tsullivan@users.noreply.github.com>

* verify fillPool exception passing

* readme update about max_workers/numWorkers

* change forEach to reduce

* use public interfaces in internal method

* replace getMaxAttempts with public readonly maxAttempts

* Update x-pack/plugins/task_manager/task_store.ts

`throw new Error` and initializattion spell fix

Co-Authored-By: tsullivan <tsullivan@users.noreply.github.com>

* min = 1 for max_workers

Co-Authored-By: tsullivan <tsullivan@users.noreply.github.com>

* timeOut => timeout

* min 1

* scope as an array

* no retries

Co-Authored-By: tsullivan <tsullivan@users.noreply.github.com>

* ConcreteTaskInstance is a TaskInstance

* remove guard per joi logic

* more return types for functions

* more comments around incremental back-off

Co-Authored-By: tsullivan <tsullivan@users.noreply.github.com>

* throw error instead of return undefined

* poll_interval min 1000

* avoid handling err.stack directly

* break up processResult

* fix a few runtime issues

* only fetch idle tasks

* remove check for status idle

* always return a state, and when there is an error return the state we had at beforeRun

* check isStarted before attemptWork

Co-Authored-By: tsullivan <tsullivan@users.noreply.github.com>

* ts fix
2019-01-03 16:32:09 -07:00
Nathan Reese
46d8293992
[Maps] fix license check for gold and standard license (#27990) 2019-01-03 16:16:53 -07:00
Matthew Kime
b491d8790a
Management: EUI Navigation sidebar (#25905)
* partial work - sidebar works, need to address rendering issues

* rendering fixes

* refactor sidenav into its own file

* refactor sidenav into its own file

* remove unneeded changes

* remove unneeded formatting changes

* remove unneeded formatting changes

* remove unneeded formatting changes

* remove unneeded formatting changes

* remove more unneeded EuiPage

* remove more unneeded EuiPage

* snap snap

* remove unused dependencies

* functional tests

* sidebar tweaks, beats-cm

* lint

* properly sharing UI code

* fix eui export

* type fixes

* add test

* add test

* testy test

* partial progress

* attmpt to fix functional test

* from merge

* snap snap

* clean up management for side nav changes

* functional test fix

* snap, blank landing

* snap snap

* change management item order

* test fix

* disable tslint line

* ts fix

* functional test fix

* functional test fixes

* fix functional test

* minor cleanup

* simplify management registry callback

* remove comment

* react island with kibana version

* merge

* fix scss reference

* fix types

* remove mistaken commit

* remove k7 switch

* snapshot update

* fix sidebar nav headers

* landing page copy

* remove dummy text

* merge

* i18n and revert unneeded change

* Update edit_role_page.tsx

* i18n

* i18n

* snap snap

* better text

* snap snap

* mergi

* pop open nav on mobile

* add management section tests

* NOTICE

* fix subhead text, add padding to bottom of management nav

* Update sidebar_nav.tsx

* merge merge

* fix sass lint
2019-01-03 17:09:42 -06:00
Nathan Reese
faa5bd7288
update docs for reporting move to share menu (#27683) 2019-01-03 15:06:12 -07:00
Tim Sullivan
237e446ba3
[Reporting] Remove Phantom (#27142)
* remove some phantom stuff and tests

* remove phantom

* remove phantom

* remove phantom

* todo comments

* remove from yarn.lock

* edit fix

* use constant in init

* readme edit

* update migration guide

* remove refs to non-existing docs
2019-01-03 14:35:15 -07:00
Thomas Neirynck
241949b350
update config (#28019) 2019-01-03 15:56:20 -05:00
Matt Apperson
41996bfa4b
[BeatsCM] use static map of pages vs dynamic from FS (#27998)
* [BeatsCM] use static map of pages vs dynamic from FS

* remove snapshot

* Apply suggestions from code review

* Update x-pack/plugins/beats_management/public/pages/index.ts
2019-01-03 15:44:46 -05:00
Joe Fleming
c0f6192090
Fix: Make timelion a browser function (#27944)
* chore: revert #26809

it was a temp fix meant to be removed anyway

* chore: convert timelion to private browser function

allows access to ui/chrome, required for determining the server basepath
2019-01-03 11:22:25 -07:00
Larry Gregory
36d0f4a6b6
Provides context to spaces grid action buttons (#27911)
## Summary
Fixes #27744

cc @elastic/eui-design -- It appears that the [`DefaultItemAction`](https://elastic.github.io/eui/#/display/tables) can only accept hard-coded `name`/`description` values. While this isn't necessarily a bad thing, I'm wondering if the linked issue (#27744) will be a common enough occurrence within Kibana to make the DefaultItemAction less useful. What do you think about allowing functions for the `name` and `description` fields, so that they can get access to the row's record, and provide context as necessary?
2019-01-03 13:16:42 -05:00
Joe Fleming
dcc01f77df
fix: trick build into including dependencies (#27858)
import server and common functions so the build correctly includes their
dependencies
2019-01-03 10:22:56 -07:00
Justin Kambic
2d8e7a146b
[Uptime Monitoring] Add uptime monitoring (#27552)
* Add Uptime Monitoring (#25480)

* Initial commit.

* Add heartbeat app to Kibana.

* Add routing architecture.

* Add graphQL endpoint.

* Rename app to be 'uptime monitoring' instead of 'heartbeat'.

* Add server tests.

* Standardize interface/class/route naming.

* Clean up GraphQL type inference script.

* Update gql schema.

* Rename classes/interfaces. Add tests for ES ping adapter.

* Rename more symbols.

* Improve angular lifecycle management.

* Move angular lifecycle management code to framework adapter.

* [Uptime Monitoring] Add user auth checks (#26070)

* Add Uptime Monitoring (#25480)

* Add authentication checks and tests. WIP.

* Add auth adapter types. Finish work on adapter and update tests.

* Add route errors. Rename license symbols.

* [Uptime Monitoring] Add Overview and Monitor pages (#27279)

* Add Uptime Monitoring (#25480)

* Initial commit.

* Add heartbeat app to Kibana.

* Add routing architecture.

* Add graphQL endpoint.

* Rename app to be 'uptime monitoring' instead of 'heartbeat'.

* Add server tests.

* Standardize interface/class/route naming.

* Clean up GraphQL type inference script.

* Update gql schema.

* Rename classes/interfaces. Add tests for ES ping adapter.

* Rename more symbols.

* Improve angular lifecycle management.

* Move angular lifecycle management code to framework adapter.

* [Uptime Monitoring] Add user auth checks (#26070)

* Add Uptime Monitoring (#25480)

* Add authentication checks and tests. WIP.

* Add auth adapter types. Finish work on adapter and update tests.

* Add route errors. Rename license symbols.

* Add GQL query components.

* Remove reference to dedicated histogram resolver.

* Update formatting of displayed dates and columns for monitor statuses.

* Add UI import for framework adapter.

* Add Uptime Monitoring (#25480)

* Initial commit.

* Add heartbeat app to Kibana.

* Add routing architecture.

* Add graphQL endpoint.

* Rename app to be 'uptime monitoring' instead of 'heartbeat'.

* Add server tests.

* Standardize interface/class/route naming.

* Clean up GraphQL type inference script.

* Update gql schema.

* Rename classes/interfaces. Add tests for ES ping adapter.

* Rename more symbols.

* Improve angular lifecycle management.

* Move angular lifecycle management code to framework adapter.

* [Uptime Monitoring] Add user auth checks (#26070)

* Add Uptime Monitoring (#25480)

* Add authentication checks and tests. WIP.

* Add auth adapter types. Finish work on adapter and update tests.

* Add route errors. Rename license symbols.

* Add React Router and some basic breadcrumbs.

* Update application flow to subscribe to use K7 if available.

* Rename a type.

* Update to work with K7.

* Update breadcrumb module to export functions per uptime page.

* Add explicit type to object.

* HTML-encode a symbol.

* Extract router basename to prop/constant.

* Add autorefresh control and state variables.

* Support passing monitor ID to route.

* Mock up some charts in the Monitor page.

* Add spacer.

* Enlarge spacer.

* Add ID to sample link.

* Replace div with fragment.

* Remove unused text.

* Add GQL components/resolvers/queries for PingList and MonitorSelect.

* Add MonitorStatusBar GQL component, update GQL schema + resolver.

* Add GQL support for Monitor charts.

* Add auto-polling for Monitor Page components.

* Fix routing bug.

* Remove outdated code.

* Add beaker icon.

* Add snapshot component to Overview page.

* Update snapshot histogram to display monitors up/down. Update types.

* Update typings for adapters/libs.

* Move monitor list to Overview page. Update formatting of snapshot component.

* Include link from monitor table to monitor page.

* Add help link to app header.

* Remove unneeded title from Overview page.

* Update the data shown in checks list.

* Put limit on check query size.

* Remove obsolete code.

* Add filtering to Overview page.

* Add Monitor List component.

* Add filtering capabilities to errors list.

* Add pagination, sorting, and status code to errors list.

* Add Uptime Monitoring (#25480)

* Initial commit.

* Add heartbeat app to Kibana.

* Add routing architecture.

* Add graphQL endpoint.

* Rename app to be 'uptime monitoring' instead of 'heartbeat'.

* Add server tests.

* Standardize interface/class/route naming.

* Clean up GraphQL type inference script.

* Update gql schema.

* Rename classes/interfaces. Add tests for ES ping adapter.

* Rename more symbols.

* Improve angular lifecycle management.

* Move angular lifecycle management code to framework adapter.

* [Uptime Monitoring] Add user auth checks (#26070)

* Add Uptime Monitoring (#25480)

* Add authentication checks and tests. WIP.

* Add auth adapter types. Finish work on adapter and update tests.

* Add route errors. Rename license symbols.

* Fix broken test.

* Add more tests for pings ES adapter.

* Remove obsolete code.

* Track autorefresh state in localStorage.

* Shrink top visualizations.

* Fix typings in monitor charts component.

* Fix typings in monitor status bar.

* Fix typings in monitor select component.

* Fix typings for monitor memory adapter.

* Update error list column ordering. Fix broken API test.

* Clean up names.

* Refactor snapshot histogram into dedicated component, make histogram data nullable.

* Add API test.

* Add Uptime Monitoring (#25480)

* Initial commit.

* Add heartbeat app to Kibana.

* Add routing architecture.

* Add graphQL endpoint.

* Rename app to be 'uptime monitoring' instead of 'heartbeat'.

* Add server tests.

* Standardize interface/class/route naming.

* Clean up GraphQL type inference script.

* Update gql schema.

* Rename classes/interfaces. Add tests for ES ping adapter.

* Rename more symbols.

* Improve angular lifecycle management.

* Move angular lifecycle management code to framework adapter.

* [Uptime Monitoring] Add user auth checks (#26070)

* Add Uptime Monitoring (#25480)

* Add authentication checks and tests. WIP.

* Add auth adapter types. Finish work on adapter and update tests.

* Add route errors. Rename license symbols.

* Add test for ES pings adapter.

* Add empty prompt when no index found.

* Place limits on filtering capabilities.

* Update plugin order.

* Add date picker.

* Fix bug setting date range. Update chart color.

* Downgrade apollo cache package to avoid bumping other clients.

* Extract reference to chrome API from app startup to kibana adapter.

* Update framework_adapter_types.ts

Remove unneeded comment via GitHub web UI.

* Extract data formatting function to dedicated file to improve modularity.

* Add a TODO.

* Add TODO for moving formatting code to server.

* Switch to use auto_date_histogram agg.

* Add filter schema.

* Add pagination and sorting to Monitor List component.

* Add latest timestamp to errors list.

* Add code to default the date range's end to be greater than 'now' to avoid the user missing latest information on refresh.

* Delete console.log call from code.
2019-01-03 12:17:21 -05:00
Nathan Reese
fc6439916e
[Maps] [ES document source] Make filterByMapBounds and tooltipProperties configurations editable (#27811)
* move create source editor into its own file

* move tooltip and extent filter inputs to update editor
2019-01-03 09:56:35 -07:00
Aaron Caldwell
772e24b404
Set boolean flag to ensure initRoutes only called once in a given ses… (#27943)
* Set boolean flag to ensure initRoutes only called once in a given session

* Completely remove license check. Not using to init latest EMS Client
2019-01-03 09:52:38 -07:00
Chandler Prall
23037a3760
Add SCSS linting (#27328)
* scss linting POC

* update yarn.lock

* Include sass linting alongside es/ts lint tasks

* fix linting errors

* replace unceccessary selector on rollup creation
2019-01-03 09:01:43 -07:00
Larry Gregory
ee3ad95d5c
Fixes space name being read twice on the space selector screen (#27906)
* fixes space name being read twice on the space selector screen

* fix comment

* fix type checks
2019-01-03 10:55:12 -05:00
Matt Apperson
2fa140332e
[BeatsCM] Correct new user redirect, enroll command extra space, and KQL bar EUI theme breaking change (#27891) 2019-01-03 09:49:08 -05:00
Søren Louv-Jansen
dd6d93769b
[APM] Remove unneeded @ts-ignore and use destructed Lodash imports (#27881)
* [APM] remove unneeded ts-ignore and make lodash imports specific

* Remove unneeded isomorphic-fetch import

* Combine lodash imports
2019-01-03 15:21:28 +01:00
Nox911
80020795fd
[i18n] Translate ML - New Job - Advanced (#27777)
* Translate new_job -> advanced

* Resolve issues from review comments

* Resolve issues from review comments
2019-01-03 15:37:37 +03:00
Matthew Kime
5f8d53c29f
Make test runners available from yarn run test:* (#26671)
* yarn test:mocha yarn test:jest, x-pack too

* remove inline comments, deprecate test:server and replace with test:mocha
2019-01-03 06:32:04 -06:00
James Gowdy
0232b9b69e
[ML] Fix for audit message search size being 0 when jobs size is 0 (#27955) 2019-01-03 11:06:50 +00:00
Nox911
398f067104
[i18n] Translate ML - New Job - Multi metric (#27479)
* Translate new_job  -> multi_metric

* Fix id

* Fix issues
2019-01-03 13:42:36 +03:00
Nox911
e5962a37bb
[i18n] Translate ML - New Job - population (#27388)
* Translate new_job population

* Separate id for documentCount chart and other charts

* Resolve part of comments

* Fix issues
2019-01-03 12:39:56 +03:00
Silvia Mitter
9f3c991232
[apm] Remove ms format for duration.us (#27890) 2019-01-03 09:49:36 +01:00
Nox911
6a455833da
[i18n] Translate ML - settings - calendar management (#27839)
* Translate settings -> calendar management

* Update snapshots

* Update test for calendar form

* Minor fix for id name
2019-01-03 11:23:35 +03:00
pavel06081991
63999aa7c7
[ML] translate services (#27807)
[ML] translate services
2019-01-03 11:01:24 +03:00
Clint Andrew Hall
59353daedf
[Canvas] Expose i18n to Canvas runtime (#27718)
Committing.  If there comes a case where the bundled i18n doesn't suffice, we'll cross that bridge when we arrive.
2019-01-02 20:29:11 -06:00
Søren Louv-Jansen
1b2a5861b4
[APM] Add icons to timeline (#27840)
* [APM] Add icons to timeline

* Update snapshots

* Remove unused imports

* Decrease font-size

* Add inline comments

* Fix margin for Legends

* Address feedback

* Fix snapshot

* Fix tslint
2019-01-03 00:50:17 +01:00
Søren Louv-Jansen
277634507f
Remove isomorphic-fetch (#27878)
* Remove isomorphic-fetch

* Fix tests

* Fix ui_settings tests

* Bump deps
2019-01-02 23:08:52 +01:00
Nathan Reese
eac7774500
[Maps] Elasticsearch document source - flatten hit using indexPattern.flattenHit (#27912) 2019-01-02 14:59:44 -07:00
Shaunak Kashyap
eace67bbf6
Removing old index patterns that are not expected in 7.0.0 onwards (#27915)
A monitoring cluster running Elasticsearch 7.0.0+ should never see `.monitoring-*-2-*` indices being created by the production cluster writing to it. So the Kibana Monitoring UI doesn't need to search against these indices any more.
2019-01-02 13:56:17 -08:00
Søren Louv-Jansen
617ecdd73e
[APM] Remove automatic camelcasing of API responses (#27879) 2019-01-02 22:04:16 +01:00
James Gowdy
6c47361e56
[ML] Fixing missing new ML job link in file datavisualizer (#27889) 2019-01-02 17:48:15 +00:00
Nathan Reese
b9b43cce9c
[Maps] support elasticsearch documents containing array of geometry values (#27846)
* [Maps] support elasticsearch documents containing array of geometry values

* clean up

* use reduce instead of map and flatten

* replace map and flatten with reduce in geoShapeToGeometry
2019-01-02 09:39:06 -07:00
Aaron Caldwell
db0a4a3238
If dynamic vector value is null, set color to transparent (#27821) 2019-01-02 08:34:22 -07:00
Matthew Kime
00e0c7e3e5 NOTICE (#27875) 2019-01-02 12:46:09 +01:00
Dimitris Athanasiou
b2f44622fe
[ML] Remove use of types in datafeeds (#27572)
This commit removes the use of types in datafeeds
and a few more places where it was possible.

Relates #26968
2019-01-02 09:34:38 +02:00
Nathan Reese
280fa97500
[Maps] trigger digest cycle on kbnUrl.change (#27812)
* [Maps] trigger digest cycle on kbnUrl.change

* remove extra space
2019-01-01 18:03:03 -07:00
Nathan Reese
1a8ae1505b
[Maps] refactor replaceLayerList to use addLayer and removeLayer (#27823) 2019-01-01 18:00:20 -07:00