mirror of
https://github.com/elastic/kibana.git
synced 2025-04-23 17:28:26 -04:00
[Fleet] Remove beats management plugin (#99789)
This commit is contained in:
parent
5da329a809
commit
83e5b6c689
207 changed files with 3247 additions and 19840 deletions
3
.github/CODEOWNERS
vendored
3
.github/CODEOWNERS
vendored
|
@ -94,9 +94,6 @@
|
|||
/x-pack/plugins/apm/server/projections/rum_page_load_transactions.ts @elastic/uptime
|
||||
/x-pack/test/apm_api_integration/tests/csm/ @elastic/uptime
|
||||
|
||||
# Beats
|
||||
/x-pack/plugins/beats_management/ @elastic/beats
|
||||
#CC# /x-pack/plugins/beats_management/ @elastic/beats
|
||||
|
||||
# Presentation
|
||||
/src/plugins/dashboard/ @elastic/kibana-presentation
|
||||
|
|
|
@ -516,13 +516,15 @@
|
|||
"label": "rule",
|
||||
"description": [],
|
||||
"signature": [
|
||||
"Pick<Pick<",
|
||||
{
|
||||
"pluginId": "alerting",
|
||||
"scope": "common",
|
||||
"docId": "kibAlertingPluginApi",
|
||||
"section": "def-common.SanitizedRuleConfig",
|
||||
"text": "SanitizedRuleConfig"
|
||||
}
|
||||
"section": "def-common.Alert",
|
||||
"text": "Alert"
|
||||
},
|
||||
"<never>, \"enabled\" | \"id\" | \"name\" | \"params\" | \"actions\" | \"tags\" | \"alertTypeId\" | \"consumer\" | \"schedule\" | \"scheduledTaskId\" | \"createdBy\" | \"updatedBy\" | \"createdAt\" | \"updatedAt\" | \"apiKeyOwner\" | \"throttle\" | \"notifyWhen\" | \"muteAll\" | \"mutedInstanceIds\" | \"executionStatus\">, \"enabled\" | \"name\" | \"actions\" | \"tags\" | \"consumer\" | \"schedule\" | \"createdBy\" | \"updatedBy\" | \"createdAt\" | \"updatedAt\" | \"throttle\" | \"notifyWhen\"> & { producer: string; ruleTypeId: string; ruleTypeName: string; }"
|
||||
],
|
||||
"source": {
|
||||
"path": "x-pack/plugins/alerting/server/types.ts",
|
||||
|
@ -840,7 +842,7 @@
|
|||
"description": [],
|
||||
"source": {
|
||||
"path": "x-pack/plugins/alerting/server/types.ts",
|
||||
"lineNumber": 75
|
||||
"lineNumber": 76
|
||||
},
|
||||
"deprecated": false
|
||||
}
|
||||
|
@ -1030,7 +1032,7 @@
|
|||
],
|
||||
"source": {
|
||||
"path": "x-pack/plugins/alerting/server/types.ts",
|
||||
"lineNumber": 107
|
||||
"lineNumber": 109
|
||||
},
|
||||
"deprecated": false
|
||||
}
|
||||
|
@ -3913,7 +3915,15 @@
|
|||
"label": "SanitizedRuleConfig",
|
||||
"description": [],
|
||||
"signature": [
|
||||
"Pick<Pick<Alert<never>, \"enabled\" | \"id\" | \"name\" | \"params\" | \"actions\" | \"tags\" | \"muteAll\" | \"alertTypeId\" | \"consumer\" | \"schedule\" | \"scheduledTaskId\" | \"createdBy\" | \"updatedBy\" | \"createdAt\" | \"updatedAt\" | \"apiKeyOwner\" | \"throttle\" | \"notifyWhen\" | \"mutedInstanceIds\" | \"executionStatus\">, \"enabled\" | \"name\" | \"actions\" | \"tags\" | \"consumer\" | \"schedule\" | \"createdBy\" | \"updatedBy\" | \"createdAt\" | \"updatedAt\" | \"throttle\" | \"notifyWhen\"> & { producer: string; ruleTypeId: string; ruleTypeName: string; }"
|
||||
"Pick<Pick<",
|
||||
{
|
||||
"pluginId": "alerting",
|
||||
"scope": "common",
|
||||
"docId": "kibAlertingPluginApi",
|
||||
"section": "def-common.Alert",
|
||||
"text": "Alert"
|
||||
},
|
||||
"<never>, \"enabled\" | \"id\" | \"name\" | \"params\" | \"actions\" | \"tags\" | \"alertTypeId\" | \"consumer\" | \"schedule\" | \"scheduledTaskId\" | \"createdBy\" | \"updatedBy\" | \"createdAt\" | \"updatedAt\" | \"apiKeyOwner\" | \"throttle\" | \"notifyWhen\" | \"muteAll\" | \"mutedInstanceIds\" | \"executionStatus\">, \"enabled\" | \"name\" | \"actions\" | \"tags\" | \"consumer\" | \"schedule\" | \"createdBy\" | \"updatedBy\" | \"createdAt\" | \"updatedAt\" | \"throttle\" | \"notifyWhen\"> & { producer: string; ruleTypeId: string; ruleTypeName: string; }"
|
||||
],
|
||||
"source": {
|
||||
"path": "x-pack/plugins/alerting/common/alert.ts",
|
||||
|
|
|
@ -1,72 +0,0 @@
|
|||
{
|
||||
"id": "beatsManagement",
|
||||
"client": {
|
||||
"classes": [],
|
||||
"functions": [],
|
||||
"interfaces": [],
|
||||
"enums": [],
|
||||
"misc": [],
|
||||
"objects": []
|
||||
},
|
||||
"server": {
|
||||
"classes": [],
|
||||
"functions": [],
|
||||
"interfaces": [],
|
||||
"enums": [],
|
||||
"misc": [],
|
||||
"objects": []
|
||||
},
|
||||
"common": {
|
||||
"classes": [],
|
||||
"functions": [],
|
||||
"interfaces": [],
|
||||
"enums": [],
|
||||
"misc": [
|
||||
{
|
||||
"parentPluginId": "beatsManagement",
|
||||
"id": "def-common.BeatsManagementConfigType",
|
||||
"type": "Type",
|
||||
"tags": [],
|
||||
"label": "BeatsManagementConfigType",
|
||||
"description": [],
|
||||
"signature": [
|
||||
"{ readonly enabled: boolean; readonly defaultUserRoles: string[]; readonly encryptionKey: string; readonly enrollmentTokensTtlInSeconds: number; }"
|
||||
],
|
||||
"source": {
|
||||
"path": "x-pack/plugins/beats_management/common/index.ts",
|
||||
"lineNumber": 23
|
||||
},
|
||||
"deprecated": false,
|
||||
"initialIsOpen": false
|
||||
}
|
||||
],
|
||||
"objects": [
|
||||
{
|
||||
"parentPluginId": "beatsManagement",
|
||||
"id": "def-common.beatsManagementConfigSchema",
|
||||
"type": "Object",
|
||||
"tags": [],
|
||||
"label": "beatsManagementConfigSchema",
|
||||
"description": [],
|
||||
"signature": [
|
||||
"ObjectType",
|
||||
"<{ enabled: ",
|
||||
"Type",
|
||||
"<boolean>; defaultUserRoles: ",
|
||||
"Type",
|
||||
"<string[]>; encryptionKey: ",
|
||||
"Type",
|
||||
"<string>; enrollmentTokensTtlInSeconds: ",
|
||||
"Type",
|
||||
"<number>; }>"
|
||||
],
|
||||
"source": {
|
||||
"path": "x-pack/plugins/beats_management/common/index.ts",
|
||||
"lineNumber": 12
|
||||
},
|
||||
"deprecated": false,
|
||||
"initialIsOpen": false
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
|
@ -1,21 +0,0 @@
|
|||
---
|
||||
id: kibBeatsManagementPluginApi
|
||||
slug: /kibana-dev-docs/beatsManagementPluginApi
|
||||
title: beatsManagement
|
||||
image: https://source.unsplash.com/400x175/?github
|
||||
summary: API docs for the beatsManagement plugin
|
||||
date: 2020-11-16
|
||||
tags: ['contributor', 'dev', 'apidocs', 'kibana', 'beatsManagement']
|
||||
warning: This document is auto-generated and is meant to be viewed inside our experimental, new docs system. Reach out in #docs-engineering for more info.
|
||||
---
|
||||
|
||||
import beatsManagementObj from './beats_management.json';
|
||||
|
||||
## Common
|
||||
|
||||
### Objects
|
||||
<DocDefinitionList data={beatsManagementObj.common.objects}/>
|
||||
|
||||
### Consts, variables and types
|
||||
<DocDefinitionList data={beatsManagementObj.common.misc}/>
|
||||
|
|
@ -1112,7 +1112,7 @@
|
|||
],
|
||||
"source": {
|
||||
"path": "src/core/public/index.ts",
|
||||
"lineNumber": 206
|
||||
"lineNumber": 203
|
||||
},
|
||||
"deprecated": false,
|
||||
"children": [
|
||||
|
@ -1136,7 +1136,7 @@
|
|||
],
|
||||
"source": {
|
||||
"path": "src/core/public/index.ts",
|
||||
"lineNumber": 208
|
||||
"lineNumber": 205
|
||||
},
|
||||
"deprecated": false
|
||||
},
|
||||
|
@ -1160,7 +1160,7 @@
|
|||
],
|
||||
"source": {
|
||||
"path": "src/core/public/index.ts",
|
||||
"lineNumber": 210
|
||||
"lineNumber": 207
|
||||
},
|
||||
"deprecated": false
|
||||
},
|
||||
|
@ -1184,7 +1184,7 @@
|
|||
],
|
||||
"source": {
|
||||
"path": "src/core/public/index.ts",
|
||||
"lineNumber": 212
|
||||
"lineNumber": 209
|
||||
},
|
||||
"deprecated": false
|
||||
},
|
||||
|
@ -1208,7 +1208,7 @@
|
|||
],
|
||||
"source": {
|
||||
"path": "src/core/public/index.ts",
|
||||
"lineNumber": 214
|
||||
"lineNumber": 211
|
||||
},
|
||||
"deprecated": false
|
||||
},
|
||||
|
@ -1232,7 +1232,7 @@
|
|||
],
|
||||
"source": {
|
||||
"path": "src/core/public/index.ts",
|
||||
"lineNumber": 216
|
||||
"lineNumber": 213
|
||||
},
|
||||
"deprecated": false
|
||||
},
|
||||
|
@ -1252,7 +1252,7 @@
|
|||
],
|
||||
"source": {
|
||||
"path": "src/core/public/index.ts",
|
||||
"lineNumber": 223
|
||||
"lineNumber": 220
|
||||
},
|
||||
"deprecated": true,
|
||||
"references": []
|
||||
|
@ -1279,7 +1279,7 @@
|
|||
],
|
||||
"source": {
|
||||
"path": "src/core/public/index.ts",
|
||||
"lineNumber": 227
|
||||
"lineNumber": 224
|
||||
},
|
||||
"deprecated": false,
|
||||
"returnComment": [],
|
||||
|
@ -1299,7 +1299,7 @@
|
|||
],
|
||||
"source": {
|
||||
"path": "src/core/public/index.ts",
|
||||
"lineNumber": 251
|
||||
"lineNumber": 248
|
||||
},
|
||||
"deprecated": false,
|
||||
"children": [
|
||||
|
@ -1323,7 +1323,7 @@
|
|||
],
|
||||
"source": {
|
||||
"path": "src/core/public/index.ts",
|
||||
"lineNumber": 253
|
||||
"lineNumber": 250
|
||||
},
|
||||
"deprecated": false
|
||||
},
|
||||
|
@ -1347,7 +1347,7 @@
|
|||
],
|
||||
"source": {
|
||||
"path": "src/core/public/index.ts",
|
||||
"lineNumber": 255
|
||||
"lineNumber": 252
|
||||
},
|
||||
"deprecated": false
|
||||
},
|
||||
|
@ -1371,7 +1371,7 @@
|
|||
],
|
||||
"source": {
|
||||
"path": "src/core/public/index.ts",
|
||||
"lineNumber": 257
|
||||
"lineNumber": 254
|
||||
},
|
||||
"deprecated": false
|
||||
},
|
||||
|
@ -1395,7 +1395,7 @@
|
|||
],
|
||||
"source": {
|
||||
"path": "src/core/public/index.ts",
|
||||
"lineNumber": 259
|
||||
"lineNumber": 256
|
||||
},
|
||||
"deprecated": false
|
||||
},
|
||||
|
@ -1419,7 +1419,7 @@
|
|||
],
|
||||
"source": {
|
||||
"path": "src/core/public/index.ts",
|
||||
"lineNumber": 261
|
||||
"lineNumber": 258
|
||||
},
|
||||
"deprecated": false
|
||||
},
|
||||
|
@ -1443,7 +1443,7 @@
|
|||
],
|
||||
"source": {
|
||||
"path": "src/core/public/index.ts",
|
||||
"lineNumber": 263
|
||||
"lineNumber": 260
|
||||
},
|
||||
"deprecated": false
|
||||
},
|
||||
|
@ -1467,7 +1467,7 @@
|
|||
],
|
||||
"source": {
|
||||
"path": "src/core/public/index.ts",
|
||||
"lineNumber": 265
|
||||
"lineNumber": 262
|
||||
},
|
||||
"deprecated": false
|
||||
},
|
||||
|
@ -1491,7 +1491,7 @@
|
|||
],
|
||||
"source": {
|
||||
"path": "src/core/public/index.ts",
|
||||
"lineNumber": 267
|
||||
"lineNumber": 264
|
||||
},
|
||||
"deprecated": false
|
||||
},
|
||||
|
@ -1515,7 +1515,7 @@
|
|||
],
|
||||
"source": {
|
||||
"path": "src/core/public/index.ts",
|
||||
"lineNumber": 269
|
||||
"lineNumber": 266
|
||||
},
|
||||
"deprecated": false
|
||||
},
|
||||
|
@ -1539,7 +1539,7 @@
|
|||
],
|
||||
"source": {
|
||||
"path": "src/core/public/index.ts",
|
||||
"lineNumber": 271
|
||||
"lineNumber": 268
|
||||
},
|
||||
"deprecated": false
|
||||
},
|
||||
|
@ -1563,7 +1563,7 @@
|
|||
],
|
||||
"source": {
|
||||
"path": "src/core/public/index.ts",
|
||||
"lineNumber": 273
|
||||
"lineNumber": 270
|
||||
},
|
||||
"deprecated": false
|
||||
},
|
||||
|
@ -1583,7 +1583,7 @@
|
|||
],
|
||||
"source": {
|
||||
"path": "src/core/public/index.ts",
|
||||
"lineNumber": 280
|
||||
"lineNumber": 277
|
||||
},
|
||||
"deprecated": true,
|
||||
"references": [
|
||||
|
@ -7427,7 +7427,7 @@
|
|||
],
|
||||
"source": {
|
||||
"path": "src/core/public/index.ts",
|
||||
"lineNumber": 237
|
||||
"lineNumber": 234
|
||||
},
|
||||
"deprecated": false,
|
||||
"initialIsOpen": false
|
||||
|
@ -8544,6 +8544,20 @@
|
|||
"lineNumber": 182
|
||||
}
|
||||
},
|
||||
{
|
||||
"plugin": "monitoring",
|
||||
"link": {
|
||||
"path": "x-pack/plugins/monitoring/server/kibana_monitoring/collectors/get_usage_collector.ts",
|
||||
"lineNumber": 107
|
||||
}
|
||||
},
|
||||
{
|
||||
"plugin": "monitoring",
|
||||
"link": {
|
||||
"path": "x-pack/plugins/monitoring/server/telemetry_collection/register_monitoring_telemetry_collection.ts",
|
||||
"lineNumber": 148
|
||||
}
|
||||
},
|
||||
{
|
||||
"plugin": "securitySolution",
|
||||
"link": {
|
||||
|
@ -8565,27 +8579,6 @@
|
|||
"lineNumber": 235
|
||||
}
|
||||
},
|
||||
{
|
||||
"plugin": "beatsManagement",
|
||||
"link": {
|
||||
"path": "x-pack/plugins/beats_management/server/lib/adapters/database/kibana_database_adapter.ts",
|
||||
"lineNumber": 113
|
||||
}
|
||||
},
|
||||
{
|
||||
"plugin": "monitoring",
|
||||
"link": {
|
||||
"path": "x-pack/plugins/monitoring/server/kibana_monitoring/collectors/get_usage_collector.ts",
|
||||
"lineNumber": 107
|
||||
}
|
||||
},
|
||||
{
|
||||
"plugin": "monitoring",
|
||||
"link": {
|
||||
"path": "x-pack/plugins/monitoring/server/telemetry_collection/register_monitoring_telemetry_collection.ts",
|
||||
"lineNumber": 148
|
||||
}
|
||||
},
|
||||
{
|
||||
"plugin": "licensing",
|
||||
"link": {
|
||||
|
@ -9387,55 +9380,6 @@
|
|||
"lineNumber": 67
|
||||
}
|
||||
},
|
||||
{
|
||||
"plugin": "lists",
|
||||
"link": {
|
||||
"path": "x-pack/plugins/lists/server/routes/read_privileges_route.ts",
|
||||
"lineNumber": 31
|
||||
}
|
||||
},
|
||||
{
|
||||
"plugin": "lists",
|
||||
"link": {
|
||||
"path": "x-pack/plugins/lists/server/routes/read_privileges_route.ts",
|
||||
"lineNumber": 35
|
||||
}
|
||||
},
|
||||
{
|
||||
"plugin": "securitySolution",
|
||||
"link": {
|
||||
"path": "x-pack/plugins/security_solution/server/lib/framework/kibana_framework_adapter.ts",
|
||||
"lineNumber": 34
|
||||
}
|
||||
},
|
||||
{
|
||||
"plugin": "securitySolution",
|
||||
"link": {
|
||||
"path": "x-pack/plugins/security_solution/server/lib/detection_engine/routes/signals/query_signals_route.ts",
|
||||
"lineNumber": 52
|
||||
}
|
||||
},
|
||||
{
|
||||
"plugin": "securitySolution",
|
||||
"link": {
|
||||
"path": "x-pack/plugins/security_solution/server/lib/detection_engine/routes/signals/open_close_signals_route.ts",
|
||||
"lineNumber": 60
|
||||
}
|
||||
},
|
||||
{
|
||||
"plugin": "securitySolution",
|
||||
"link": {
|
||||
"path": "x-pack/plugins/security_solution/server/lib/detection_engine/routes/privileges/read_privileges_route.ts",
|
||||
"lineNumber": 41
|
||||
}
|
||||
},
|
||||
{
|
||||
"plugin": "beatsManagement",
|
||||
"link": {
|
||||
"path": "x-pack/plugins/beats_management/server/lib/adapters/database/kibana_database_adapter.ts",
|
||||
"lineNumber": 111
|
||||
}
|
||||
},
|
||||
{
|
||||
"plugin": "canvas",
|
||||
"link": {
|
||||
|
@ -9821,6 +9765,20 @@
|
|||
"lineNumber": 420
|
||||
}
|
||||
},
|
||||
{
|
||||
"plugin": "lists",
|
||||
"link": {
|
||||
"path": "x-pack/plugins/lists/server/routes/read_privileges_route.ts",
|
||||
"lineNumber": 31
|
||||
}
|
||||
},
|
||||
{
|
||||
"plugin": "lists",
|
||||
"link": {
|
||||
"path": "x-pack/plugins/lists/server/routes/read_privileges_route.ts",
|
||||
"lineNumber": 35
|
||||
}
|
||||
},
|
||||
{
|
||||
"plugin": "monitoring",
|
||||
"link": {
|
||||
|
@ -9842,6 +9800,34 @@
|
|||
"lineNumber": 356
|
||||
}
|
||||
},
|
||||
{
|
||||
"plugin": "securitySolution",
|
||||
"link": {
|
||||
"path": "x-pack/plugins/security_solution/server/lib/framework/kibana_framework_adapter.ts",
|
||||
"lineNumber": 34
|
||||
}
|
||||
},
|
||||
{
|
||||
"plugin": "securitySolution",
|
||||
"link": {
|
||||
"path": "x-pack/plugins/security_solution/server/lib/detection_engine/routes/signals/query_signals_route.ts",
|
||||
"lineNumber": 52
|
||||
}
|
||||
},
|
||||
{
|
||||
"plugin": "securitySolution",
|
||||
"link": {
|
||||
"path": "x-pack/plugins/security_solution/server/lib/detection_engine/routes/signals/open_close_signals_route.ts",
|
||||
"lineNumber": 60
|
||||
}
|
||||
},
|
||||
{
|
||||
"plugin": "securitySolution",
|
||||
"link": {
|
||||
"path": "x-pack/plugins/security_solution/server/lib/detection_engine/routes/privileges/read_privileges_route.ts",
|
||||
"lineNumber": 41
|
||||
}
|
||||
},
|
||||
{
|
||||
"plugin": "canvas",
|
||||
"link": {
|
||||
|
@ -12712,34 +12698,6 @@
|
|||
"lineNumber": 117
|
||||
}
|
||||
},
|
||||
{
|
||||
"plugin": "securitySolution",
|
||||
"link": {
|
||||
"path": "x-pack/plugins/security_solution/server/lib/telemetry/sender.ts",
|
||||
"lineNumber": 125
|
||||
}
|
||||
},
|
||||
{
|
||||
"plugin": "securitySolution",
|
||||
"link": {
|
||||
"path": "x-pack/plugins/security_solution/server/lib/telemetry/sender.ts",
|
||||
"lineNumber": 218
|
||||
}
|
||||
},
|
||||
{
|
||||
"plugin": "securitySolution",
|
||||
"link": {
|
||||
"path": "x-pack/plugins/security_solution/server/lib/telemetry/sender.ts",
|
||||
"lineNumber": 235
|
||||
}
|
||||
},
|
||||
{
|
||||
"plugin": "beatsManagement",
|
||||
"link": {
|
||||
"path": "x-pack/plugins/beats_management/server/lib/adapters/database/kibana_database_adapter.ts",
|
||||
"lineNumber": 31
|
||||
}
|
||||
},
|
||||
{
|
||||
"plugin": "indexManagement",
|
||||
"link": {
|
||||
|
@ -12768,6 +12726,27 @@
|
|||
"lineNumber": 41
|
||||
}
|
||||
},
|
||||
{
|
||||
"plugin": "securitySolution",
|
||||
"link": {
|
||||
"path": "x-pack/plugins/security_solution/server/lib/telemetry/sender.ts",
|
||||
"lineNumber": 125
|
||||
}
|
||||
},
|
||||
{
|
||||
"plugin": "securitySolution",
|
||||
"link": {
|
||||
"path": "x-pack/plugins/security_solution/server/lib/telemetry/sender.ts",
|
||||
"lineNumber": 218
|
||||
}
|
||||
},
|
||||
{
|
||||
"plugin": "securitySolution",
|
||||
"link": {
|
||||
"path": "x-pack/plugins/security_solution/server/lib/telemetry/sender.ts",
|
||||
"lineNumber": 235
|
||||
}
|
||||
},
|
||||
{
|
||||
"plugin": "licensing",
|
||||
"link": {
|
||||
|
@ -15940,48 +15919,6 @@
|
|||
"deprecated": true,
|
||||
"removeBy": "7.16",
|
||||
"references": [
|
||||
{
|
||||
"plugin": "lists",
|
||||
"link": {
|
||||
"path": "x-pack/plugins/lists/server/schemas/common/get_call_cluster.mock.ts",
|
||||
"lineNumber": 9
|
||||
}
|
||||
},
|
||||
{
|
||||
"plugin": "lists",
|
||||
"link": {
|
||||
"path": "x-pack/plugins/lists/server/schemas/common/get_call_cluster.mock.ts",
|
||||
"lineNumber": 27
|
||||
}
|
||||
},
|
||||
{
|
||||
"plugin": "lists",
|
||||
"link": {
|
||||
"path": "x-pack/plugins/lists/server/schemas/common/get_call_cluster.mock.ts",
|
||||
"lineNumber": 31
|
||||
}
|
||||
},
|
||||
{
|
||||
"plugin": "securitySolution",
|
||||
"link": {
|
||||
"path": "x-pack/plugins/security_solution/server/lib/telemetry/sender.ts",
|
||||
"lineNumber": 10
|
||||
}
|
||||
},
|
||||
{
|
||||
"plugin": "securitySolution",
|
||||
"link": {
|
||||
"path": "x-pack/plugins/security_solution/server/lib/telemetry/sender.ts",
|
||||
"lineNumber": 447
|
||||
}
|
||||
},
|
||||
{
|
||||
"plugin": "securitySolution",
|
||||
"link": {
|
||||
"path": "x-pack/plugins/security_solution/server/lib/telemetry/sender.ts",
|
||||
"lineNumber": 466
|
||||
}
|
||||
},
|
||||
{
|
||||
"plugin": "canvas",
|
||||
"link": {
|
||||
|
@ -16269,6 +16206,48 @@
|
|||
"lineNumber": 35
|
||||
}
|
||||
},
|
||||
{
|
||||
"plugin": "securitySolution",
|
||||
"link": {
|
||||
"path": "x-pack/plugins/security_solution/server/lib/telemetry/sender.ts",
|
||||
"lineNumber": 10
|
||||
}
|
||||
},
|
||||
{
|
||||
"plugin": "securitySolution",
|
||||
"link": {
|
||||
"path": "x-pack/plugins/security_solution/server/lib/telemetry/sender.ts",
|
||||
"lineNumber": 447
|
||||
}
|
||||
},
|
||||
{
|
||||
"plugin": "securitySolution",
|
||||
"link": {
|
||||
"path": "x-pack/plugins/security_solution/server/lib/telemetry/sender.ts",
|
||||
"lineNumber": 466
|
||||
}
|
||||
},
|
||||
{
|
||||
"plugin": "lists",
|
||||
"link": {
|
||||
"path": "x-pack/plugins/lists/server/schemas/common/get_call_cluster.mock.ts",
|
||||
"lineNumber": 9
|
||||
}
|
||||
},
|
||||
{
|
||||
"plugin": "lists",
|
||||
"link": {
|
||||
"path": "x-pack/plugins/lists/server/schemas/common/get_call_cluster.mock.ts",
|
||||
"lineNumber": 27
|
||||
}
|
||||
},
|
||||
{
|
||||
"plugin": "lists",
|
||||
"link": {
|
||||
"path": "x-pack/plugins/lists/server/schemas/common/get_call_cluster.mock.ts",
|
||||
"lineNumber": 31
|
||||
}
|
||||
},
|
||||
{
|
||||
"plugin": "monitoring",
|
||||
"link": {
|
||||
|
@ -16458,6 +16437,27 @@
|
|||
"lineNumber": 20
|
||||
}
|
||||
},
|
||||
{
|
||||
"plugin": "lists",
|
||||
"link": {
|
||||
"path": "x-pack/plugins/lists/target/types/server/schemas/common/get_call_cluster.mock.d.ts",
|
||||
"lineNumber": 2
|
||||
}
|
||||
},
|
||||
{
|
||||
"plugin": "lists",
|
||||
"link": {
|
||||
"path": "x-pack/plugins/lists/target/types/server/schemas/common/get_call_cluster.mock.d.ts",
|
||||
"lineNumber": 4
|
||||
}
|
||||
},
|
||||
{
|
||||
"plugin": "lists",
|
||||
"link": {
|
||||
"path": "x-pack/plugins/lists/target/types/server/schemas/common/get_call_cluster.mock.d.ts",
|
||||
"lineNumber": 5
|
||||
}
|
||||
},
|
||||
{
|
||||
"plugin": "monitoring",
|
||||
"link": {
|
||||
|
@ -19544,7 +19544,7 @@
|
|||
"The os platform"
|
||||
],
|
||||
"signature": [
|
||||
"\"linux\" | \"aix\" | \"android\" | \"darwin\" | \"freebsd\" | \"openbsd\" | \"sunos\" | \"win32\" | \"cygwin\" | \"netbsd\""
|
||||
"\"linux\" | \"aix\" | \"android\" | \"darwin\" | \"freebsd\" | \"openbsd\" | \"sunos\" | \"win32\" | \"cygwin\""
|
||||
],
|
||||
"source": {
|
||||
"path": "src/core/server/metrics/collectors/types.ts",
|
||||
|
@ -23173,20 +23173,6 @@
|
|||
"lineNumber": 180
|
||||
}
|
||||
},
|
||||
{
|
||||
"plugin": "beatsManagement",
|
||||
"link": {
|
||||
"path": "x-pack/plugins/beats_management/server/lib/adapters/database/kibana_database_adapter.ts",
|
||||
"lineNumber": 8
|
||||
}
|
||||
},
|
||||
{
|
||||
"plugin": "beatsManagement",
|
||||
"link": {
|
||||
"path": "x-pack/plugins/beats_management/server/lib/adapters/database/kibana_database_adapter.ts",
|
||||
"lineNumber": 28
|
||||
}
|
||||
},
|
||||
{
|
||||
"plugin": "licensing",
|
||||
"link": {
|
||||
|
|
|
@ -886,7 +886,7 @@
|
|||
],
|
||||
"source": {
|
||||
"path": "src/core/public/application/types.ts",
|
||||
"lineNumber": 339
|
||||
"lineNumber": 326
|
||||
},
|
||||
"deprecated": false
|
||||
}
|
||||
|
@ -930,26 +930,44 @@
|
|||
},
|
||||
{
|
||||
"parentPluginId": "core",
|
||||
"id": "def-public.App.meta",
|
||||
"type": "Object",
|
||||
"id": "def-public.App.keywords",
|
||||
"type": "Array",
|
||||
"tags": [],
|
||||
"label": "meta",
|
||||
"label": "keywords",
|
||||
"description": [
|
||||
"\nMeta data for an application that represent additional information for the app.\nSee {@link AppMeta}\n"
|
||||
"Optional keywords to match with in deep links search. Omit if this part of the hierarchy does not have a page URL."
|
||||
],
|
||||
"signature": [
|
||||
"string[] | undefined"
|
||||
],
|
||||
"source": {
|
||||
"path": "src/core/public/application/types.ts",
|
||||
"lineNumber": 215
|
||||
},
|
||||
"deprecated": false
|
||||
},
|
||||
{
|
||||
"parentPluginId": "core",
|
||||
"id": "def-public.App.deepLinks",
|
||||
"type": "Array",
|
||||
"tags": [],
|
||||
"label": "deepLinks",
|
||||
"description": [
|
||||
"\nInput type for registering secondary in-app locations for an application.\n\nDeep links must include at least one of `path` or `deepLinks`. A deep link that does not have a `path`\nrepresents a topological level in the application's hierarchy, but does not have a destination URL that is\nuser-accessible.\n"
|
||||
],
|
||||
"signature": [
|
||||
{
|
||||
"pluginId": "core",
|
||||
"scope": "public",
|
||||
"docId": "kibCoreApplicationPluginApi",
|
||||
"section": "def-public.AppMeta",
|
||||
"text": "AppMeta"
|
||||
"section": "def-public.AppDeepLink",
|
||||
"text": "AppDeepLink"
|
||||
},
|
||||
" | undefined"
|
||||
"[] | undefined"
|
||||
],
|
||||
"source": {
|
||||
"path": "src/core/public/application/types.ts",
|
||||
"lineNumber": 244
|
||||
"lineNumber": 254
|
||||
},
|
||||
"deprecated": false
|
||||
}
|
||||
|
@ -967,7 +985,7 @@
|
|||
],
|
||||
"source": {
|
||||
"path": "src/core/public/application/types.ts",
|
||||
"lineNumber": 565
|
||||
"lineNumber": 552
|
||||
},
|
||||
"deprecated": false,
|
||||
"children": [
|
||||
|
@ -990,7 +1008,7 @@
|
|||
],
|
||||
"source": {
|
||||
"path": "src/core/public/application/types.ts",
|
||||
"lineNumber": 566
|
||||
"lineNumber": 553
|
||||
},
|
||||
"deprecated": false
|
||||
},
|
||||
|
@ -1003,7 +1021,7 @@
|
|||
"description": [],
|
||||
"source": {
|
||||
"path": "src/core/public/application/types.ts",
|
||||
"lineNumber": 567
|
||||
"lineNumber": 554
|
||||
},
|
||||
"deprecated": false
|
||||
},
|
||||
|
@ -1019,7 +1037,7 @@
|
|||
],
|
||||
"source": {
|
||||
"path": "src/core/public/application/types.ts",
|
||||
"lineNumber": 568
|
||||
"lineNumber": 555
|
||||
},
|
||||
"deprecated": false
|
||||
},
|
||||
|
@ -1035,7 +1053,7 @@
|
|||
],
|
||||
"source": {
|
||||
"path": "src/core/public/application/types.ts",
|
||||
"lineNumber": 569
|
||||
"lineNumber": 556
|
||||
},
|
||||
"deprecated": false
|
||||
}
|
||||
|
@ -1053,7 +1071,7 @@
|
|||
],
|
||||
"source": {
|
||||
"path": "src/core/public/application/types.ts",
|
||||
"lineNumber": 553
|
||||
"lineNumber": 540
|
||||
},
|
||||
"deprecated": false,
|
||||
"children": [
|
||||
|
@ -1076,7 +1094,7 @@
|
|||
],
|
||||
"source": {
|
||||
"path": "src/core/public/application/types.ts",
|
||||
"lineNumber": 554
|
||||
"lineNumber": 541
|
||||
},
|
||||
"deprecated": false
|
||||
}
|
||||
|
@ -1092,7 +1110,7 @@
|
|||
"description": [],
|
||||
"source": {
|
||||
"path": "src/core/public/application/types.ts",
|
||||
"lineNumber": 620
|
||||
"lineNumber": 607
|
||||
},
|
||||
"deprecated": false,
|
||||
"children": [
|
||||
|
@ -1118,7 +1136,7 @@
|
|||
],
|
||||
"source": {
|
||||
"path": "src/core/public/application/types.ts",
|
||||
"lineNumber": 626
|
||||
"lineNumber": 613
|
||||
},
|
||||
"deprecated": false,
|
||||
"children": [
|
||||
|
@ -1143,7 +1161,7 @@
|
|||
],
|
||||
"source": {
|
||||
"path": "src/core/public/application/types.ts",
|
||||
"lineNumber": 626
|
||||
"lineNumber": 613
|
||||
},
|
||||
"deprecated": false,
|
||||
"isRequired": true
|
||||
|
@ -1175,7 +1193,7 @@
|
|||
],
|
||||
"source": {
|
||||
"path": "src/core/public/application/types.ts",
|
||||
"lineNumber": 655
|
||||
"lineNumber": 642
|
||||
},
|
||||
"deprecated": false,
|
||||
"children": [
|
||||
|
@ -1200,7 +1218,7 @@
|
|||
],
|
||||
"source": {
|
||||
"path": "src/core/public/application/types.ts",
|
||||
"lineNumber": 655
|
||||
"lineNumber": 642
|
||||
},
|
||||
"deprecated": false,
|
||||
"isRequired": true
|
||||
|
@ -1220,7 +1238,7 @@
|
|||
"description": [],
|
||||
"source": {
|
||||
"path": "src/core/public/application/types.ts",
|
||||
"lineNumber": 696
|
||||
"lineNumber": 683
|
||||
},
|
||||
"deprecated": false,
|
||||
"children": [
|
||||
|
@ -1238,7 +1256,7 @@
|
|||
],
|
||||
"source": {
|
||||
"path": "src/core/public/application/types.ts",
|
||||
"lineNumber": 700
|
||||
"lineNumber": 687
|
||||
},
|
||||
"deprecated": false
|
||||
},
|
||||
|
@ -1265,7 +1283,7 @@
|
|||
],
|
||||
"source": {
|
||||
"path": "src/core/public/application/types.ts",
|
||||
"lineNumber": 709
|
||||
"lineNumber": 696
|
||||
},
|
||||
"deprecated": false
|
||||
},
|
||||
|
@ -1291,7 +1309,7 @@
|
|||
],
|
||||
"source": {
|
||||
"path": "src/core/public/application/types.ts",
|
||||
"lineNumber": 717
|
||||
"lineNumber": 704
|
||||
},
|
||||
"deprecated": false,
|
||||
"children": [
|
||||
|
@ -1307,7 +1325,7 @@
|
|||
],
|
||||
"source": {
|
||||
"path": "src/core/public/application/types.ts",
|
||||
"lineNumber": 717
|
||||
"lineNumber": 704
|
||||
},
|
||||
"deprecated": false,
|
||||
"isRequired": true
|
||||
|
@ -1333,7 +1351,7 @@
|
|||
],
|
||||
"source": {
|
||||
"path": "src/core/public/application/types.ts",
|
||||
"lineNumber": 717
|
||||
"lineNumber": 704
|
||||
},
|
||||
"deprecated": false,
|
||||
"isRequired": false
|
||||
|
@ -1355,7 +1373,7 @@
|
|||
],
|
||||
"source": {
|
||||
"path": "src/core/public/application/types.ts",
|
||||
"lineNumber": 755
|
||||
"lineNumber": 742
|
||||
},
|
||||
"deprecated": false,
|
||||
"children": [
|
||||
|
@ -1373,7 +1391,7 @@
|
|||
],
|
||||
"source": {
|
||||
"path": "src/core/public/application/types.ts",
|
||||
"lineNumber": 755
|
||||
"lineNumber": 742
|
||||
},
|
||||
"deprecated": false,
|
||||
"isRequired": true
|
||||
|
@ -1395,7 +1413,7 @@
|
|||
],
|
||||
"source": {
|
||||
"path": "src/core/public/application/types.ts",
|
||||
"lineNumber": 769
|
||||
"lineNumber": 756
|
||||
},
|
||||
"deprecated": false,
|
||||
"children": [
|
||||
|
@ -1411,7 +1429,7 @@
|
|||
],
|
||||
"source": {
|
||||
"path": "src/core/public/application/types.ts",
|
||||
"lineNumber": 769
|
||||
"lineNumber": 756
|
||||
},
|
||||
"deprecated": false,
|
||||
"isRequired": true
|
||||
|
@ -1425,7 +1443,7 @@
|
|||
"description": [],
|
||||
"source": {
|
||||
"path": "src/core/public/application/types.ts",
|
||||
"lineNumber": 769
|
||||
"lineNumber": 756
|
||||
},
|
||||
"deprecated": false,
|
||||
"children": [
|
||||
|
@ -1441,7 +1459,7 @@
|
|||
],
|
||||
"source": {
|
||||
"path": "src/core/public/application/types.ts",
|
||||
"lineNumber": 769
|
||||
"lineNumber": 756
|
||||
},
|
||||
"deprecated": false
|
||||
},
|
||||
|
@ -1457,7 +1475,7 @@
|
|||
],
|
||||
"source": {
|
||||
"path": "src/core/public/application/types.ts",
|
||||
"lineNumber": 769
|
||||
"lineNumber": 756
|
||||
},
|
||||
"deprecated": false
|
||||
}
|
||||
|
@ -1481,68 +1499,7 @@
|
|||
],
|
||||
"source": {
|
||||
"path": "src/core/public/application/types.ts",
|
||||
"lineNumber": 774
|
||||
},
|
||||
"deprecated": false
|
||||
}
|
||||
],
|
||||
"initialIsOpen": false
|
||||
},
|
||||
{
|
||||
"parentPluginId": "core",
|
||||
"id": "def-public.AppMeta",
|
||||
"type": "Interface",
|
||||
"tags": [],
|
||||
"label": "AppMeta",
|
||||
"description": [
|
||||
"\nInput type for meta data for an application.\n\nMeta fields include `keywords` and `searchDeepLinks`\nKeywords is an array of string with which to associate the app, must include at least one unique string as an array.\n`searchDeepLinks` is an array of links that represent secondary in-app locations for the app."
|
||||
],
|
||||
"source": {
|
||||
"path": "src/core/public/application/types.ts",
|
||||
"lineNumber": 255
|
||||
},
|
||||
"deprecated": false,
|
||||
"children": [
|
||||
{
|
||||
"parentPluginId": "core",
|
||||
"id": "def-public.AppMeta.keywords",
|
||||
"type": "Array",
|
||||
"tags": [],
|
||||
"label": "keywords",
|
||||
"description": [
|
||||
"Keywords to represent this application"
|
||||
],
|
||||
"signature": [
|
||||
"string[] | undefined"
|
||||
],
|
||||
"source": {
|
||||
"path": "src/core/public/application/types.ts",
|
||||
"lineNumber": 257
|
||||
},
|
||||
"deprecated": false
|
||||
},
|
||||
{
|
||||
"parentPluginId": "core",
|
||||
"id": "def-public.AppMeta.searchDeepLinks",
|
||||
"type": "Array",
|
||||
"tags": [],
|
||||
"label": "searchDeepLinks",
|
||||
"description": [
|
||||
"Array of links that represent secondary in-app locations for the app."
|
||||
],
|
||||
"signature": [
|
||||
{
|
||||
"pluginId": "core",
|
||||
"scope": "public",
|
||||
"docId": "kibCoreApplicationPluginApi",
|
||||
"section": "def-public.AppSearchDeepLink",
|
||||
"text": "AppSearchDeepLink"
|
||||
},
|
||||
"[] | undefined"
|
||||
],
|
||||
"source": {
|
||||
"path": "src/core/public/application/types.ts",
|
||||
"lineNumber": 259
|
||||
"lineNumber": 761
|
||||
},
|
||||
"deprecated": false
|
||||
}
|
||||
|
@ -1568,7 +1525,7 @@
|
|||
],
|
||||
"source": {
|
||||
"path": "src/core/public/application/types.ts",
|
||||
"lineNumber": 349
|
||||
"lineNumber": 336
|
||||
},
|
||||
"deprecated": false,
|
||||
"children": [
|
||||
|
@ -1586,7 +1543,7 @@
|
|||
],
|
||||
"source": {
|
||||
"path": "src/core/public/application/types.ts",
|
||||
"lineNumber": 353
|
||||
"lineNumber": 340
|
||||
},
|
||||
"deprecated": false
|
||||
},
|
||||
|
@ -1611,7 +1568,7 @@
|
|||
],
|
||||
"source": {
|
||||
"path": "src/core/public/application/types.ts",
|
||||
"lineNumber": 399
|
||||
"lineNumber": 386
|
||||
},
|
||||
"deprecated": false
|
||||
},
|
||||
|
@ -1628,7 +1585,7 @@
|
|||
],
|
||||
"source": {
|
||||
"path": "src/core/public/application/types.ts",
|
||||
"lineNumber": 449
|
||||
"lineNumber": 436
|
||||
},
|
||||
"deprecated": true,
|
||||
"references": [
|
||||
|
@ -1721,7 +1678,7 @@
|
|||
],
|
||||
"source": {
|
||||
"path": "src/core/public/application/types.ts",
|
||||
"lineNumber": 484
|
||||
"lineNumber": 471
|
||||
},
|
||||
"deprecated": true,
|
||||
"references": [
|
||||
|
@ -1746,20 +1703,6 @@
|
|||
"lineNumber": 298
|
||||
}
|
||||
},
|
||||
{
|
||||
"plugin": "lens",
|
||||
"link": {
|
||||
"path": "x-pack/plugins/lens/public/app_plugin/types.ts",
|
||||
"lineNumber": 71
|
||||
}
|
||||
},
|
||||
{
|
||||
"plugin": "lens",
|
||||
"link": {
|
||||
"path": "x-pack/plugins/lens/public/app_plugin/mounter.tsx",
|
||||
"lineNumber": 171
|
||||
}
|
||||
},
|
||||
{
|
||||
"plugin": "maps",
|
||||
"link": {
|
||||
|
@ -1781,6 +1724,20 @@
|
|||
"lineNumber": 19
|
||||
}
|
||||
},
|
||||
{
|
||||
"plugin": "lens",
|
||||
"link": {
|
||||
"path": "x-pack/plugins/lens/public/app_plugin/types.ts",
|
||||
"lineNumber": 71
|
||||
}
|
||||
},
|
||||
{
|
||||
"plugin": "lens",
|
||||
"link": {
|
||||
"path": "x-pack/plugins/lens/public/app_plugin/mounter.tsx",
|
||||
"lineNumber": 171
|
||||
}
|
||||
},
|
||||
{
|
||||
"plugin": "ml",
|
||||
"link": {
|
||||
|
@ -1882,7 +1839,7 @@
|
|||
],
|
||||
"source": {
|
||||
"path": "src/core/public/application/types.ts",
|
||||
"lineNumber": 484
|
||||
"lineNumber": 471
|
||||
},
|
||||
"deprecated": false
|
||||
}
|
||||
|
@ -1910,7 +1867,7 @@
|
|||
],
|
||||
"source": {
|
||||
"path": "src/core/public/application/types.ts",
|
||||
"lineNumber": 515
|
||||
"lineNumber": 502
|
||||
},
|
||||
"deprecated": false,
|
||||
"returnComment": [],
|
||||
|
@ -1934,7 +1891,7 @@
|
|||
],
|
||||
"source": {
|
||||
"path": "src/core/public/application/types.ts",
|
||||
"lineNumber": 515
|
||||
"lineNumber": 502
|
||||
},
|
||||
"deprecated": false
|
||||
}
|
||||
|
@ -1954,7 +1911,7 @@
|
|||
],
|
||||
"source": {
|
||||
"path": "src/core/public/application/types.ts",
|
||||
"lineNumber": 674
|
||||
"lineNumber": 661
|
||||
},
|
||||
"deprecated": false,
|
||||
"children": [
|
||||
|
@ -1972,7 +1929,7 @@
|
|||
],
|
||||
"source": {
|
||||
"path": "src/core/public/application/types.ts",
|
||||
"lineNumber": 679
|
||||
"lineNumber": 666
|
||||
},
|
||||
"deprecated": false
|
||||
},
|
||||
|
@ -1990,7 +1947,7 @@
|
|||
],
|
||||
"source": {
|
||||
"path": "src/core/public/application/types.ts",
|
||||
"lineNumber": 683
|
||||
"lineNumber": 670
|
||||
},
|
||||
"deprecated": false
|
||||
},
|
||||
|
@ -2008,7 +1965,7 @@
|
|||
],
|
||||
"source": {
|
||||
"path": "src/core/public/application/types.ts",
|
||||
"lineNumber": 687
|
||||
"lineNumber": 674
|
||||
},
|
||||
"deprecated": false
|
||||
},
|
||||
|
@ -2026,7 +1983,7 @@
|
|||
],
|
||||
"source": {
|
||||
"path": "src/core/public/application/types.ts",
|
||||
"lineNumber": 692
|
||||
"lineNumber": 679
|
||||
},
|
||||
"deprecated": false
|
||||
}
|
||||
|
@ -2046,7 +2003,7 @@
|
|||
],
|
||||
"source": {
|
||||
"path": "src/core/public/application/types.ts",
|
||||
"lineNumber": 540
|
||||
"lineNumber": 527
|
||||
},
|
||||
"deprecated": false,
|
||||
"initialIsOpen": false
|
||||
|
@ -2085,6 +2042,57 @@
|
|||
}
|
||||
],
|
||||
"misc": [
|
||||
{
|
||||
"parentPluginId": "core",
|
||||
"id": "def-public.AppDeepLink",
|
||||
"type": "Type",
|
||||
"tags": [],
|
||||
"label": "AppDeepLink",
|
||||
"description": [
|
||||
"\nInput type for registering secondary in-app locations for an application.\n\nDeep links must include at least one of `path` or `deepLinks`. A deep link that does not have a `path`\nrepresents a topological level in the application's hierarchy, but does not have a destination URL that is\nuser-accessible."
|
||||
],
|
||||
"signature": [
|
||||
"({ id: string; title: string; keywords?: string[] | undefined; navLinkStatus?: ",
|
||||
{
|
||||
"pluginId": "core",
|
||||
"scope": "public",
|
||||
"docId": "kibCoreApplicationPluginApi",
|
||||
"section": "def-public.AppNavLinkStatus",
|
||||
"text": "AppNavLinkStatus"
|
||||
},
|
||||
" | undefined; } & { path: string; deepLinks?: ",
|
||||
{
|
||||
"pluginId": "core",
|
||||
"scope": "public",
|
||||
"docId": "kibCoreApplicationPluginApi",
|
||||
"section": "def-public.AppDeepLink",
|
||||
"text": "AppDeepLink"
|
||||
},
|
||||
"[] | undefined; }) | ({ id: string; title: string; keywords?: string[] | undefined; navLinkStatus?: ",
|
||||
{
|
||||
"pluginId": "core",
|
||||
"scope": "public",
|
||||
"docId": "kibCoreApplicationPluginApi",
|
||||
"section": "def-public.AppNavLinkStatus",
|
||||
"text": "AppNavLinkStatus"
|
||||
},
|
||||
" | undefined; } & { path?: string | undefined; deepLinks: ",
|
||||
{
|
||||
"pluginId": "core",
|
||||
"scope": "public",
|
||||
"docId": "kibCoreApplicationPluginApi",
|
||||
"section": "def-public.AppDeepLink",
|
||||
"text": "AppDeepLink"
|
||||
},
|
||||
"[]; })"
|
||||
],
|
||||
"source": {
|
||||
"path": "src/core/public/application/types.ts",
|
||||
"lineNumber": 279
|
||||
},
|
||||
"deprecated": false,
|
||||
"initialIsOpen": false
|
||||
},
|
||||
{
|
||||
"parentPluginId": "core",
|
||||
"id": "def-public.AppLeaveAction",
|
||||
|
@ -2113,7 +2121,7 @@
|
|||
],
|
||||
"source": {
|
||||
"path": "src/core/public/application/types.ts",
|
||||
"lineNumber": 579
|
||||
"lineNumber": 566
|
||||
},
|
||||
"deprecated": false,
|
||||
"initialIsOpen": false
|
||||
|
@ -2143,7 +2151,7 @@
|
|||
],
|
||||
"source": {
|
||||
"path": "src/core/public/application/types.ts",
|
||||
"lineNumber": 530
|
||||
"lineNumber": 517
|
||||
},
|
||||
"deprecated": true,
|
||||
"references": [
|
||||
|
@ -2251,42 +2259,7 @@
|
|||
],
|
||||
"source": {
|
||||
"path": "src/core/public/application/types.ts",
|
||||
"lineNumber": 338
|
||||
},
|
||||
"deprecated": false,
|
||||
"initialIsOpen": false
|
||||
},
|
||||
{
|
||||
"parentPluginId": "core",
|
||||
"id": "def-public.AppSearchDeepLink",
|
||||
"type": "Type",
|
||||
"tags": [],
|
||||
"label": "AppSearchDeepLink",
|
||||
"description": [
|
||||
"\nInput type for registering secondary in-app locations for an application.\n\nDeep links must include at least one of `path` or `searchDeepLinks`. A deep link that does not have a `path`\nrepresents a topological level in the application's hierarchy, but does not have a destination URL that is\nuser-accessible."
|
||||
],
|
||||
"signature": [
|
||||
"({ id: string; title: string; } & { path: string; searchDeepLinks?: ",
|
||||
{
|
||||
"pluginId": "core",
|
||||
"scope": "public",
|
||||
"docId": "kibCoreApplicationPluginApi",
|
||||
"section": "def-public.AppSearchDeepLink",
|
||||
"text": "AppSearchDeepLink"
|
||||
},
|
||||
"[] | undefined; keywords?: string[] | undefined; }) | ({ id: string; title: string; } & { path?: string | undefined; searchDeepLinks: ",
|
||||
{
|
||||
"pluginId": "core",
|
||||
"scope": "public",
|
||||
"docId": "kibCoreApplicationPluginApi",
|
||||
"section": "def-public.AppSearchDeepLink",
|
||||
"text": "AppSearchDeepLink"
|
||||
},
|
||||
"[]; keywords?: string[] | undefined; })"
|
||||
],
|
||||
"source": {
|
||||
"path": "src/core/public/application/types.ts",
|
||||
"lineNumber": 293
|
||||
"lineNumber": 325
|
||||
},
|
||||
"deprecated": false,
|
||||
"initialIsOpen": false
|
||||
|
@ -2305,7 +2278,7 @@
|
|||
],
|
||||
"source": {
|
||||
"path": "src/core/public/application/types.ts",
|
||||
"lineNumber": 346
|
||||
"lineNumber": 333
|
||||
},
|
||||
"deprecated": false,
|
||||
"initialIsOpen": false
|
||||
|
@ -2328,15 +2301,15 @@
|
|||
"section": "def-public.AppStatus",
|
||||
"text": "AppStatus"
|
||||
},
|
||||
" | undefined; meta?: ",
|
||||
" | undefined; deepLinks?: ",
|
||||
{
|
||||
"pluginId": "core",
|
||||
"scope": "public",
|
||||
"docId": "kibCoreApplicationPluginApi",
|
||||
"section": "def-public.AppMeta",
|
||||
"text": "AppMeta"
|
||||
"section": "def-public.AppDeepLink",
|
||||
"text": "AppDeepLink"
|
||||
},
|
||||
" | undefined; navLinkStatus?: ",
|
||||
"[] | undefined; navLinkStatus?: ",
|
||||
{
|
||||
"pluginId": "core",
|
||||
"scope": "public",
|
||||
|
@ -2379,7 +2352,7 @@
|
|||
"section": "def-public.App",
|
||||
"text": "App"
|
||||
},
|
||||
"<unknown>, \"status\" | \"meta\" | \"navLinkStatus\" | \"defaultPath\" | \"tooltip\">> | undefined"
|
||||
"<unknown>, \"status\" | \"deepLinks\" | \"navLinkStatus\" | \"defaultPath\" | \"tooltip\">> | undefined"
|
||||
],
|
||||
"source": {
|
||||
"path": "src/core/public/application/types.ts",
|
||||
|
@ -2388,6 +2361,49 @@
|
|||
"deprecated": false,
|
||||
"initialIsOpen": false
|
||||
},
|
||||
{
|
||||
"parentPluginId": "core",
|
||||
"id": "def-public.PublicAppDeepLinkInfo",
|
||||
"type": "Type",
|
||||
"tags": [],
|
||||
"label": "PublicAppDeepLinkInfo",
|
||||
"description": [
|
||||
"\nPublic information about a registered app's {@link AppDeepLink | deepLinks}\n"
|
||||
],
|
||||
"signature": [
|
||||
"Pick<",
|
||||
{
|
||||
"pluginId": "core",
|
||||
"scope": "public",
|
||||
"docId": "kibCoreApplicationPluginApi",
|
||||
"section": "def-public.AppDeepLink",
|
||||
"text": "AppDeepLink"
|
||||
},
|
||||
", \"title\" | \"id\" | \"path\"> & { deepLinks: ",
|
||||
{
|
||||
"pluginId": "core",
|
||||
"scope": "public",
|
||||
"docId": "kibCoreApplicationPluginApi",
|
||||
"section": "def-public.PublicAppDeepLinkInfo",
|
||||
"text": "PublicAppDeepLinkInfo"
|
||||
},
|
||||
"[]; keywords: string[]; navLinkStatus: ",
|
||||
{
|
||||
"pluginId": "core",
|
||||
"scope": "public",
|
||||
"docId": "kibCoreApplicationPluginApi",
|
||||
"section": "def-public.AppNavLinkStatus",
|
||||
"text": "AppNavLinkStatus"
|
||||
},
|
||||
"; }"
|
||||
],
|
||||
"source": {
|
||||
"path": "src/core/public/application/types.ts",
|
||||
"lineNumber": 262
|
||||
},
|
||||
"deprecated": false,
|
||||
"initialIsOpen": false
|
||||
},
|
||||
{
|
||||
"parentPluginId": "core",
|
||||
"id": "def-public.PublicAppInfo",
|
||||
|
@ -2422,89 +2438,19 @@
|
|||
"section": "def-public.AppNavLinkStatus",
|
||||
"text": "AppNavLinkStatus"
|
||||
},
|
||||
"; appRoute: string; meta: ",
|
||||
"; appRoute: string; keywords: string[]; deepLinks: ",
|
||||
{
|
||||
"pluginId": "core",
|
||||
"scope": "public",
|
||||
"docId": "kibCoreApplicationPluginApi",
|
||||
"section": "def-public.PublicAppMetaInfo",
|
||||
"text": "PublicAppMetaInfo"
|
||||
},
|
||||
"; }"
|
||||
],
|
||||
"source": {
|
||||
"path": "src/core/public/application/types.ts",
|
||||
"lineNumber": 322
|
||||
},
|
||||
"deprecated": false,
|
||||
"initialIsOpen": false
|
||||
},
|
||||
{
|
||||
"parentPluginId": "core",
|
||||
"id": "def-public.PublicAppMetaInfo",
|
||||
"type": "Type",
|
||||
"tags": [],
|
||||
"label": "PublicAppMetaInfo",
|
||||
"description": [
|
||||
"\nPublic information about a registered app's {@link AppMeta | keywords }\n"
|
||||
],
|
||||
"signature": [
|
||||
"Pick<",
|
||||
{
|
||||
"pluginId": "core",
|
||||
"scope": "public",
|
||||
"docId": "kibCoreApplicationPluginApi",
|
||||
"section": "def-public.AppMeta",
|
||||
"text": "AppMeta"
|
||||
},
|
||||
", never> & { keywords: string[]; searchDeepLinks: ",
|
||||
{
|
||||
"pluginId": "core",
|
||||
"scope": "public",
|
||||
"docId": "kibCoreApplicationPluginApi",
|
||||
"section": "def-public.PublicAppSearchDeepLinkInfo",
|
||||
"text": "PublicAppSearchDeepLinkInfo"
|
||||
"section": "def-public.PublicAppDeepLinkInfo",
|
||||
"text": "PublicAppDeepLinkInfo"
|
||||
},
|
||||
"[]; }"
|
||||
],
|
||||
"source": {
|
||||
"path": "src/core/public/application/types.ts",
|
||||
"lineNumber": 267
|
||||
},
|
||||
"deprecated": false,
|
||||
"initialIsOpen": false
|
||||
},
|
||||
{
|
||||
"parentPluginId": "core",
|
||||
"id": "def-public.PublicAppSearchDeepLinkInfo",
|
||||
"type": "Type",
|
||||
"tags": [],
|
||||
"label": "PublicAppSearchDeepLinkInfo",
|
||||
"description": [
|
||||
"\nPublic information about a registered app's {@link AppSearchDeepLink | searchDeepLinks}\n"
|
||||
],
|
||||
"signature": [
|
||||
"Pick<",
|
||||
{
|
||||
"pluginId": "core",
|
||||
"scope": "public",
|
||||
"docId": "kibCoreApplicationPluginApi",
|
||||
"section": "def-public.AppSearchDeepLink",
|
||||
"text": "AppSearchDeepLink"
|
||||
},
|
||||
", \"title\" | \"id\" | \"path\"> & { searchDeepLinks: ",
|
||||
{
|
||||
"pluginId": "core",
|
||||
"scope": "public",
|
||||
"docId": "kibCoreApplicationPluginApi",
|
||||
"section": "def-public.PublicAppSearchDeepLinkInfo",
|
||||
"text": "PublicAppSearchDeepLinkInfo"
|
||||
},
|
||||
"[]; keywords: string[]; }"
|
||||
],
|
||||
"source": {
|
||||
"path": "src/core/public/application/types.ts",
|
||||
"lineNumber": 277
|
||||
"lineNumber": 308
|
||||
},
|
||||
"deprecated": false,
|
||||
"initialIsOpen": false
|
||||
|
|
|
@ -890,7 +890,7 @@
|
|||
"description": [],
|
||||
"source": {
|
||||
"path": "src/core/public/chrome/nav_links/nav_link.ts",
|
||||
"lineNumber": 15
|
||||
"lineNumber": 14
|
||||
},
|
||||
"deprecated": false,
|
||||
"children": [
|
||||
|
@ -905,7 +905,7 @@
|
|||
],
|
||||
"source": {
|
||||
"path": "src/core/public/chrome/nav_links/nav_link.ts",
|
||||
"lineNumber": 19
|
||||
"lineNumber": 18
|
||||
},
|
||||
"deprecated": false
|
||||
},
|
||||
|
@ -920,7 +920,7 @@
|
|||
],
|
||||
"source": {
|
||||
"path": "src/core/public/chrome/nav_links/nav_link.ts",
|
||||
"lineNumber": 24
|
||||
"lineNumber": 23
|
||||
},
|
||||
"deprecated": false
|
||||
},
|
||||
|
@ -939,7 +939,7 @@
|
|||
],
|
||||
"source": {
|
||||
"path": "src/core/public/chrome/nav_links/nav_link.ts",
|
||||
"lineNumber": 29
|
||||
"lineNumber": 28
|
||||
},
|
||||
"deprecated": false
|
||||
},
|
||||
|
@ -954,7 +954,7 @@
|
|||
],
|
||||
"source": {
|
||||
"path": "src/core/public/chrome/nav_links/nav_link.ts",
|
||||
"lineNumber": 34
|
||||
"lineNumber": 33
|
||||
},
|
||||
"deprecated": false
|
||||
},
|
||||
|
@ -972,7 +972,7 @@
|
|||
],
|
||||
"source": {
|
||||
"path": "src/core/public/chrome/nav_links/nav_link.ts",
|
||||
"lineNumber": 40
|
||||
"lineNumber": 39
|
||||
},
|
||||
"deprecated": false
|
||||
},
|
||||
|
@ -990,7 +990,7 @@
|
|||
],
|
||||
"source": {
|
||||
"path": "src/core/public/chrome/nav_links/nav_link.ts",
|
||||
"lineNumber": 45
|
||||
"lineNumber": 44
|
||||
},
|
||||
"deprecated": false
|
||||
},
|
||||
|
@ -1008,7 +1008,7 @@
|
|||
],
|
||||
"source": {
|
||||
"path": "src/core/public/chrome/nav_links/nav_link.ts",
|
||||
"lineNumber": 50
|
||||
"lineNumber": 49
|
||||
},
|
||||
"deprecated": false
|
||||
},
|
||||
|
@ -1026,7 +1026,7 @@
|
|||
],
|
||||
"source": {
|
||||
"path": "src/core/public/chrome/nav_links/nav_link.ts",
|
||||
"lineNumber": 56
|
||||
"lineNumber": 55
|
||||
},
|
||||
"deprecated": false
|
||||
},
|
||||
|
@ -1044,7 +1044,7 @@
|
|||
],
|
||||
"source": {
|
||||
"path": "src/core/public/chrome/nav_links/nav_link.ts",
|
||||
"lineNumber": 62
|
||||
"lineNumber": 61
|
||||
},
|
||||
"deprecated": false
|
||||
},
|
||||
|
@ -1059,7 +1059,7 @@
|
|||
],
|
||||
"source": {
|
||||
"path": "src/core/public/chrome/nav_links/nav_link.ts",
|
||||
"lineNumber": 67
|
||||
"lineNumber": 66
|
||||
},
|
||||
"deprecated": false
|
||||
},
|
||||
|
@ -1077,7 +1077,7 @@
|
|||
],
|
||||
"source": {
|
||||
"path": "src/core/public/chrome/nav_links/nav_link.ts",
|
||||
"lineNumber": 76
|
||||
"lineNumber": 75
|
||||
},
|
||||
"deprecated": false
|
||||
},
|
||||
|
@ -1095,7 +1095,7 @@
|
|||
],
|
||||
"source": {
|
||||
"path": "src/core/public/chrome/nav_links/nav_link.ts",
|
||||
"lineNumber": 81
|
||||
"lineNumber": 80
|
||||
},
|
||||
"deprecated": false
|
||||
}
|
||||
|
@ -1297,103 +1297,6 @@
|
|||
],
|
||||
"returnComment": []
|
||||
},
|
||||
{
|
||||
"parentPluginId": "core",
|
||||
"id": "def-public.ChromeNavLinks.update",
|
||||
"type": "Function",
|
||||
"tags": [
|
||||
"deprecated"
|
||||
],
|
||||
"label": "update",
|
||||
"description": [
|
||||
"\nUpdate the navlink for the given id with the updated attributes.\nReturns the updated navlink or `undefined` if it does not exist.\n"
|
||||
],
|
||||
"signature": [
|
||||
"(id: string, values: Partial<Pick<",
|
||||
{
|
||||
"pluginId": "core",
|
||||
"scope": "public",
|
||||
"docId": "kibCoreChromePluginApi",
|
||||
"section": "def-public.ChromeNavLink",
|
||||
"text": "ChromeNavLink"
|
||||
},
|
||||
", \"hidden\" | \"url\" | \"disabled\" | \"href\">>) => ",
|
||||
{
|
||||
"pluginId": "core",
|
||||
"scope": "public",
|
||||
"docId": "kibCoreChromePluginApi",
|
||||
"section": "def-public.ChromeNavLink",
|
||||
"text": "ChromeNavLink"
|
||||
},
|
||||
" | undefined"
|
||||
],
|
||||
"source": {
|
||||
"path": "src/core/public/chrome/nav_links/nav_links_service.ts",
|
||||
"lineNumber": 71
|
||||
},
|
||||
"deprecated": true,
|
||||
"references": [
|
||||
{
|
||||
"plugin": "apm",
|
||||
"link": {
|
||||
"path": "x-pack/plugins/apm/public/toggleAppLinkInNav.ts",
|
||||
"lineNumber": 13
|
||||
}
|
||||
},
|
||||
{
|
||||
"plugin": "graph",
|
||||
"link": {
|
||||
"path": "x-pack/plugins/graph/public/services/toggle_nav_link.ts",
|
||||
"lineNumber": 26
|
||||
}
|
||||
}
|
||||
],
|
||||
"children": [
|
||||
{
|
||||
"parentPluginId": "core",
|
||||
"id": "def-public.ChromeNavLinks.update.$1",
|
||||
"type": "string",
|
||||
"tags": [],
|
||||
"label": "id",
|
||||
"description": [],
|
||||
"signature": [
|
||||
"string"
|
||||
],
|
||||
"source": {
|
||||
"path": "src/core/public/chrome/nav_links/nav_links_service.ts",
|
||||
"lineNumber": 71
|
||||
},
|
||||
"deprecated": false,
|
||||
"isRequired": true
|
||||
},
|
||||
{
|
||||
"parentPluginId": "core",
|
||||
"id": "def-public.ChromeNavLinks.update.$2",
|
||||
"type": "Object",
|
||||
"tags": [],
|
||||
"label": "values",
|
||||
"description": [],
|
||||
"signature": [
|
||||
"Partial<Pick<",
|
||||
{
|
||||
"pluginId": "core",
|
||||
"scope": "public",
|
||||
"docId": "kibCoreChromePluginApi",
|
||||
"section": "def-public.ChromeNavLink",
|
||||
"text": "ChromeNavLink"
|
||||
},
|
||||
", \"hidden\" | \"url\" | \"disabled\" | \"href\">>"
|
||||
],
|
||||
"source": {
|
||||
"path": "src/core/public/chrome/nav_links/nav_links_service.ts",
|
||||
"lineNumber": 71
|
||||
},
|
||||
"deprecated": false,
|
||||
"isRequired": true
|
||||
}
|
||||
],
|
||||
"returnComment": []
|
||||
},
|
||||
{
|
||||
"parentPluginId": "core",
|
||||
"id": "def-public.ChromeNavLinks.enableForcedAppSwitcherNavigation",
|
||||
|
@ -1408,7 +1311,7 @@
|
|||
],
|
||||
"source": {
|
||||
"path": "src/core/public/chrome/nav_links/nav_links_service.ts",
|
||||
"lineNumber": 85
|
||||
"lineNumber": 73
|
||||
},
|
||||
"deprecated": false,
|
||||
"children": [],
|
||||
|
@ -1430,7 +1333,7 @@
|
|||
],
|
||||
"source": {
|
||||
"path": "src/core/public/chrome/nav_links/nav_links_service.ts",
|
||||
"lineNumber": 90
|
||||
"lineNumber": 78
|
||||
},
|
||||
"deprecated": false,
|
||||
"children": [],
|
||||
|
@ -2678,23 +2581,6 @@
|
|||
"deprecated": false,
|
||||
"initialIsOpen": false
|
||||
},
|
||||
{
|
||||
"parentPluginId": "core",
|
||||
"id": "def-public.ChromeNavLinkUpdateableFields",
|
||||
"type": "Type",
|
||||
"tags": [],
|
||||
"label": "ChromeNavLinkUpdateableFields",
|
||||
"description": [],
|
||||
"signature": [
|
||||
"{ readonly hidden?: boolean | undefined; readonly url?: string | undefined; readonly disabled?: boolean | undefined; readonly href?: string | undefined; }"
|
||||
],
|
||||
"source": {
|
||||
"path": "src/core/public/chrome/nav_links/nav_link.ts",
|
||||
"lineNumber": 85
|
||||
},
|
||||
"deprecated": false,
|
||||
"initialIsOpen": false
|
||||
},
|
||||
{
|
||||
"parentPluginId": "core",
|
||||
"id": "def-public.NavType",
|
||||
|
|
2732
api_docs/data.json
2732
api_docs/data.json
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
|
@ -2690,7 +2690,7 @@
|
|||
],
|
||||
"source": {
|
||||
"path": "src/plugins/data/server/search/types.ts",
|
||||
"lineNumber": 89
|
||||
"lineNumber": 90
|
||||
},
|
||||
"deprecated": false,
|
||||
"children": [
|
||||
|
@ -2708,7 +2708,7 @@
|
|||
],
|
||||
"source": {
|
||||
"path": "src/plugins/data/server/search/types.ts",
|
||||
"lineNumber": 90
|
||||
"lineNumber": 91
|
||||
},
|
||||
"deprecated": false,
|
||||
"returnComment": [],
|
||||
|
@ -2758,7 +2758,7 @@
|
|||
],
|
||||
"source": {
|
||||
"path": "src/plugins/data/server/search/types.ts",
|
||||
"lineNumber": 91
|
||||
"lineNumber": 92
|
||||
},
|
||||
"deprecated": false,
|
||||
"returnComment": [],
|
||||
|
@ -2806,7 +2806,7 @@
|
|||
],
|
||||
"source": {
|
||||
"path": "src/plugins/data/server/search/types.ts",
|
||||
"lineNumber": 92
|
||||
"lineNumber": 93
|
||||
},
|
||||
"deprecated": false,
|
||||
"returnComment": [],
|
||||
|
@ -2875,7 +2875,7 @@
|
|||
],
|
||||
"source": {
|
||||
"path": "src/plugins/data/server/search/types.ts",
|
||||
"lineNumber": 93
|
||||
"lineNumber": 94
|
||||
},
|
||||
"deprecated": false,
|
||||
"returnComment": [],
|
||||
|
@ -2923,7 +2923,7 @@
|
|||
],
|
||||
"source": {
|
||||
"path": "src/plugins/data/server/search/types.ts",
|
||||
"lineNumber": 94
|
||||
"lineNumber": 95
|
||||
},
|
||||
"deprecated": false,
|
||||
"returnComment": [],
|
||||
|
@ -2955,7 +2955,7 @@
|
|||
],
|
||||
"source": {
|
||||
"path": "src/plugins/data/server/search/types.ts",
|
||||
"lineNumber": 95
|
||||
"lineNumber": 96
|
||||
},
|
||||
"deprecated": false,
|
||||
"returnComment": [],
|
||||
|
@ -2995,7 +2995,7 @@
|
|||
],
|
||||
"source": {
|
||||
"path": "src/plugins/data/server/search/types.ts",
|
||||
"lineNumber": 96
|
||||
"lineNumber": 97
|
||||
},
|
||||
"deprecated": false,
|
||||
"returnComment": [],
|
||||
|
@ -3128,7 +3128,7 @@
|
|||
"description": [],
|
||||
"source": {
|
||||
"path": "src/plugins/data/server/search/types.ts",
|
||||
"lineNumber": 42
|
||||
"lineNumber": 43
|
||||
},
|
||||
"deprecated": false,
|
||||
"children": [
|
||||
|
@ -3144,7 +3144,7 @@
|
|||
],
|
||||
"source": {
|
||||
"path": "src/plugins/data/server/search/types.ts",
|
||||
"lineNumber": 43
|
||||
"lineNumber": 44
|
||||
},
|
||||
"deprecated": false
|
||||
},
|
||||
|
@ -3202,7 +3202,7 @@
|
|||
],
|
||||
"source": {
|
||||
"path": "src/plugins/data/server/search/types.ts",
|
||||
"lineNumber": 48
|
||||
"lineNumber": 49
|
||||
},
|
||||
"deprecated": false,
|
||||
"returnComment": [],
|
||||
|
@ -3216,7 +3216,7 @@
|
|||
"description": [],
|
||||
"source": {
|
||||
"path": "src/plugins/data/server/search/types.ts",
|
||||
"lineNumber": 52
|
||||
"lineNumber": 53
|
||||
},
|
||||
"deprecated": false
|
||||
},
|
||||
|
@ -3239,7 +3239,7 @@
|
|||
],
|
||||
"source": {
|
||||
"path": "src/plugins/data/server/search/types.ts",
|
||||
"lineNumber": 53
|
||||
"lineNumber": 54
|
||||
},
|
||||
"deprecated": false
|
||||
}
|
||||
|
@ -3266,7 +3266,7 @@
|
|||
],
|
||||
"source": {
|
||||
"path": "src/plugins/data/server/search/types.ts",
|
||||
"lineNumber": 59
|
||||
"lineNumber": 60
|
||||
},
|
||||
"deprecated": false
|
||||
}
|
||||
|
@ -3292,7 +3292,7 @@
|
|||
],
|
||||
"source": {
|
||||
"path": "src/plugins/data/server/search/types.ts",
|
||||
"lineNumber": 99
|
||||
"lineNumber": 100
|
||||
},
|
||||
"deprecated": false,
|
||||
"children": [
|
||||
|
@ -3308,7 +3308,7 @@
|
|||
],
|
||||
"source": {
|
||||
"path": "src/plugins/data/server/search/types.ts",
|
||||
"lineNumber": 103
|
||||
"lineNumber": 104
|
||||
},
|
||||
"deprecated": false
|
||||
},
|
||||
|
@ -3334,7 +3334,7 @@
|
|||
],
|
||||
"source": {
|
||||
"path": "src/plugins/data/server/search/types.ts",
|
||||
"lineNumber": 109
|
||||
"lineNumber": 110
|
||||
},
|
||||
"deprecated": false,
|
||||
"returnComment": [],
|
||||
|
@ -3351,7 +3351,7 @@
|
|||
],
|
||||
"source": {
|
||||
"path": "src/plugins/data/server/search/types.ts",
|
||||
"lineNumber": 110
|
||||
"lineNumber": 111
|
||||
},
|
||||
"deprecated": false
|
||||
}
|
||||
|
@ -3384,7 +3384,7 @@
|
|||
],
|
||||
"source": {
|
||||
"path": "src/plugins/data/server/search/types.ts",
|
||||
"lineNumber": 112
|
||||
"lineNumber": 113
|
||||
},
|
||||
"deprecated": false,
|
||||
"returnComment": [],
|
||||
|
@ -3408,7 +3408,7 @@
|
|||
],
|
||||
"source": {
|
||||
"path": "src/plugins/data/server/search/types.ts",
|
||||
"lineNumber": 112
|
||||
"lineNumber": 113
|
||||
},
|
||||
"deprecated": false
|
||||
}
|
||||
|
@ -3442,7 +3442,7 @@
|
|||
],
|
||||
"source": {
|
||||
"path": "src/plugins/data/server/search/types.ts",
|
||||
"lineNumber": 113
|
||||
"lineNumber": 114
|
||||
},
|
||||
"deprecated": false
|
||||
}
|
||||
|
@ -3470,7 +3470,7 @@
|
|||
],
|
||||
"source": {
|
||||
"path": "src/plugins/data/server/search/types.ts",
|
||||
"lineNumber": 71
|
||||
"lineNumber": 72
|
||||
},
|
||||
"deprecated": false,
|
||||
"children": [
|
||||
|
@ -3504,7 +3504,7 @@
|
|||
],
|
||||
"source": {
|
||||
"path": "src/plugins/data/server/search/types.ts",
|
||||
"lineNumber": 75
|
||||
"lineNumber": 76
|
||||
},
|
||||
"deprecated": false,
|
||||
"returnComment": [],
|
||||
|
@ -3521,7 +3521,7 @@
|
|||
],
|
||||
"source": {
|
||||
"path": "src/plugins/data/server/search/types.ts",
|
||||
"lineNumber": 76
|
||||
"lineNumber": 77
|
||||
},
|
||||
"deprecated": false
|
||||
},
|
||||
|
@ -3543,7 +3543,7 @@
|
|||
],
|
||||
"source": {
|
||||
"path": "src/plugins/data/server/search/types.ts",
|
||||
"lineNumber": 77
|
||||
"lineNumber": 78
|
||||
},
|
||||
"deprecated": false
|
||||
},
|
||||
|
@ -3565,7 +3565,7 @@
|
|||
],
|
||||
"source": {
|
||||
"path": "src/plugins/data/server/search/types.ts",
|
||||
"lineNumber": 78
|
||||
"lineNumber": 79
|
||||
},
|
||||
"deprecated": false
|
||||
}
|
||||
|
@ -3599,7 +3599,7 @@
|
|||
],
|
||||
"source": {
|
||||
"path": "src/plugins/data/server/search/types.ts",
|
||||
"lineNumber": 80
|
||||
"lineNumber": 81
|
||||
},
|
||||
"deprecated": false
|
||||
},
|
||||
|
@ -3631,7 +3631,7 @@
|
|||
],
|
||||
"source": {
|
||||
"path": "src/plugins/data/server/search/types.ts",
|
||||
"lineNumber": 81
|
||||
"lineNumber": 82
|
||||
},
|
||||
"deprecated": false
|
||||
}
|
||||
|
@ -4027,6 +4027,29 @@
|
|||
"lineNumber": 39
|
||||
},
|
||||
"deprecated": false
|
||||
},
|
||||
{
|
||||
"parentPluginId": "data",
|
||||
"id": "def-server.SearchStrategyDependencies.request",
|
||||
"type": "Object",
|
||||
"tags": [],
|
||||
"label": "request",
|
||||
"description": [],
|
||||
"signature": [
|
||||
{
|
||||
"pluginId": "core",
|
||||
"scope": "server",
|
||||
"docId": "kibCoreHttpPluginApi",
|
||||
"section": "def-server.KibanaRequest",
|
||||
"text": "KibanaRequest"
|
||||
},
|
||||
"<unknown, unknown, unknown, any>"
|
||||
],
|
||||
"source": {
|
||||
"path": "src/plugins/data/server/search/types.ts",
|
||||
"lineNumber": 40
|
||||
},
|
||||
"deprecated": false
|
||||
}
|
||||
],
|
||||
"initialIsOpen": false
|
||||
|
@ -4122,7 +4145,7 @@
|
|||
],
|
||||
"source": {
|
||||
"path": "src/plugins/data/server/search/types.ts",
|
||||
"lineNumber": 118
|
||||
"lineNumber": 119
|
||||
},
|
||||
"deprecated": false,
|
||||
"initialIsOpen": false
|
||||
|
|
|
@ -42,15 +42,6 @@ warning: This document is auto-generated and is meant to be viewed inside our ex
|
|||
|
||||
|
||||
|
||||
## beatsManagement
|
||||
|
||||
| Deprecated API | Reference location | Remove By |
|
||||
| ---------------|-----------|-----------|
|
||||
| <DocLink id="kibCorePluginApi" section="def-server.ILegacyClusterClient" text="ILegacyClusterClient"/> | [kibana_database_adapter.ts#L8](https://github.com/elastic/kibana/tree/master/x-pack/plugins/beats_management/server/lib/adapters/database/kibana_database_adapter.ts#L8) | 7.16 |
|
||||
| <DocLink id="kibCorePluginApi" section="def-server.ILegacyClusterClient" text="ILegacyClusterClient"/> | [kibana_database_adapter.ts#L28](https://github.com/elastic/kibana/tree/master/x-pack/plugins/beats_management/server/lib/adapters/database/kibana_database_adapter.ts#L28) | 7.16 |
|
||||
|
||||
|
||||
|
||||
## canvas
|
||||
|
||||
| Deprecated API | Reference location | Remove By |
|
||||
|
@ -783,7 +774,7 @@ warning: This document is auto-generated and is meant to be viewed inside our ex
|
|||
| <DocLink id="kibDataPluginApi" section="def-public.IFieldType" text="IFieldType"/> | [field_value_match.tsx#L36](https://github.com/elastic/kibana/tree/master/x-pack/plugins/lists/public/exceptions/components/autocomplete/field_value_match.tsx#L36) | - |
|
||||
| <DocLink id="kibDataPluginApi" section="def-public.IFieldType" text="IFieldType"/> | [field_value_match_any.tsx#L13](https://github.com/elastic/kibana/tree/master/x-pack/plugins/lists/public/exceptions/components/autocomplete/field_value_match_any.tsx#L13) | - |
|
||||
| <DocLink id="kibDataPluginApi" section="def-public.IFieldType" text="IFieldType"/> | [field_value_match_any.tsx#L23](https://github.com/elastic/kibana/tree/master/x-pack/plugins/lists/public/exceptions/components/autocomplete/field_value_match_any.tsx#L23) | - |
|
||||
| <DocLink id="kibDataPluginApi" section="def-public.IFieldType" text="IFieldType"/> | [field_value_lists.tsx#L13](https://github.com/elastic/kibana/tree/master/x-pack/plugins/lists/public/exceptions/components/autocomplete/field_value_lists.tsx#L13) | - |
|
||||
| <DocLink id="kibDataPluginApi" section="def-public.IFieldType" text="IFieldType"/> | [field_value_lists.tsx#L14](https://github.com/elastic/kibana/tree/master/x-pack/plugins/lists/public/exceptions/components/autocomplete/field_value_lists.tsx#L14) | - |
|
||||
| <DocLink id="kibDataPluginApi" section="def-public.IFieldType" text="IFieldType"/> | [field_value_lists.tsx#L29](https://github.com/elastic/kibana/tree/master/x-pack/plugins/lists/public/exceptions/components/autocomplete/field_value_lists.tsx#L29) | - |
|
||||
| <DocLink id="kibDataPluginApi" section="def-public.IFieldType" text="IFieldType"/> | [entry_renderer.tsx#L31](https://github.com/elastic/kibana/tree/master/x-pack/plugins/lists/public/exceptions/components/builder/entry_renderer.tsx#L31) | - |
|
||||
| <DocLink id="kibDataPluginApi" section="def-public.IFieldType" text="IFieldType"/> | [entry_renderer.tsx#L91](https://github.com/elastic/kibana/tree/master/x-pack/plugins/lists/public/exceptions/components/builder/entry_renderer.tsx#L91) | - |
|
||||
|
@ -830,7 +821,7 @@ warning: This document is auto-generated and is meant to be viewed inside our ex
|
|||
| <DocLink id="kibDataPluginApi" section="def-common.IFieldType" text="IFieldType"/> | [field_value_match.tsx#L36](https://github.com/elastic/kibana/tree/master/x-pack/plugins/lists/public/exceptions/components/autocomplete/field_value_match.tsx#L36) | - |
|
||||
| <DocLink id="kibDataPluginApi" section="def-common.IFieldType" text="IFieldType"/> | [field_value_match_any.tsx#L13](https://github.com/elastic/kibana/tree/master/x-pack/plugins/lists/public/exceptions/components/autocomplete/field_value_match_any.tsx#L13) | - |
|
||||
| <DocLink id="kibDataPluginApi" section="def-common.IFieldType" text="IFieldType"/> | [field_value_match_any.tsx#L23](https://github.com/elastic/kibana/tree/master/x-pack/plugins/lists/public/exceptions/components/autocomplete/field_value_match_any.tsx#L23) | - |
|
||||
| <DocLink id="kibDataPluginApi" section="def-common.IFieldType" text="IFieldType"/> | [field_value_lists.tsx#L13](https://github.com/elastic/kibana/tree/master/x-pack/plugins/lists/public/exceptions/components/autocomplete/field_value_lists.tsx#L13) | - |
|
||||
| <DocLink id="kibDataPluginApi" section="def-common.IFieldType" text="IFieldType"/> | [field_value_lists.tsx#L14](https://github.com/elastic/kibana/tree/master/x-pack/plugins/lists/public/exceptions/components/autocomplete/field_value_lists.tsx#L14) | - |
|
||||
| <DocLink id="kibDataPluginApi" section="def-common.IFieldType" text="IFieldType"/> | [field_value_lists.tsx#L29](https://github.com/elastic/kibana/tree/master/x-pack/plugins/lists/public/exceptions/components/autocomplete/field_value_lists.tsx#L29) | - |
|
||||
| <DocLink id="kibDataPluginApi" section="def-common.IFieldType" text="IFieldType"/> | [entry_renderer.tsx#L31](https://github.com/elastic/kibana/tree/master/x-pack/plugins/lists/public/exceptions/components/builder/entry_renderer.tsx#L31) | - |
|
||||
| <DocLink id="kibDataPluginApi" section="def-common.IFieldType" text="IFieldType"/> | [entry_renderer.tsx#L91](https://github.com/elastic/kibana/tree/master/x-pack/plugins/lists/public/exceptions/components/builder/entry_renderer.tsx#L91) | - |
|
||||
|
@ -923,7 +914,7 @@ warning: This document is auto-generated and is meant to be viewed inside our ex
|
|||
| <DocLink id="kibDataPluginApi" section="def-server.IFieldType" text="IFieldType"/> | [field_value_match.tsx#L36](https://github.com/elastic/kibana/tree/master/x-pack/plugins/lists/public/exceptions/components/autocomplete/field_value_match.tsx#L36) | - |
|
||||
| <DocLink id="kibDataPluginApi" section="def-server.IFieldType" text="IFieldType"/> | [field_value_match_any.tsx#L13](https://github.com/elastic/kibana/tree/master/x-pack/plugins/lists/public/exceptions/components/autocomplete/field_value_match_any.tsx#L13) | - |
|
||||
| <DocLink id="kibDataPluginApi" section="def-server.IFieldType" text="IFieldType"/> | [field_value_match_any.tsx#L23](https://github.com/elastic/kibana/tree/master/x-pack/plugins/lists/public/exceptions/components/autocomplete/field_value_match_any.tsx#L23) | - |
|
||||
| <DocLink id="kibDataPluginApi" section="def-server.IFieldType" text="IFieldType"/> | [field_value_lists.tsx#L13](https://github.com/elastic/kibana/tree/master/x-pack/plugins/lists/public/exceptions/components/autocomplete/field_value_lists.tsx#L13) | - |
|
||||
| <DocLink id="kibDataPluginApi" section="def-server.IFieldType" text="IFieldType"/> | [field_value_lists.tsx#L14](https://github.com/elastic/kibana/tree/master/x-pack/plugins/lists/public/exceptions/components/autocomplete/field_value_lists.tsx#L14) | - |
|
||||
| <DocLink id="kibDataPluginApi" section="def-server.IFieldType" text="IFieldType"/> | [field_value_lists.tsx#L29](https://github.com/elastic/kibana/tree/master/x-pack/plugins/lists/public/exceptions/components/autocomplete/field_value_lists.tsx#L29) | - |
|
||||
| <DocLink id="kibDataPluginApi" section="def-server.IFieldType" text="IFieldType"/> | [entry_renderer.tsx#L31](https://github.com/elastic/kibana/tree/master/x-pack/plugins/lists/public/exceptions/components/builder/entry_renderer.tsx#L31) | - |
|
||||
| <DocLink id="kibDataPluginApi" section="def-server.IFieldType" text="IFieldType"/> | [entry_renderer.tsx#L91](https://github.com/elastic/kibana/tree/master/x-pack/plugins/lists/public/exceptions/components/builder/entry_renderer.tsx#L91) | - |
|
||||
|
@ -944,6 +935,9 @@ warning: This document is auto-generated and is meant to be viewed inside our ex
|
|||
| <DocLink id="kibCorePluginApi" section="def-server.LegacyAPICaller" text="LegacyAPICaller"/> | [get_call_cluster.mock.ts#L9](https://github.com/elastic/kibana/tree/master/x-pack/plugins/lists/server/schemas/common/get_call_cluster.mock.ts#L9) | 7.16 |
|
||||
| <DocLink id="kibCorePluginApi" section="def-server.LegacyAPICaller" text="LegacyAPICaller"/> | [get_call_cluster.mock.ts#L27](https://github.com/elastic/kibana/tree/master/x-pack/plugins/lists/server/schemas/common/get_call_cluster.mock.ts#L27) | 7.16 |
|
||||
| <DocLink id="kibCorePluginApi" section="def-server.LegacyAPICaller" text="LegacyAPICaller"/> | [get_call_cluster.mock.ts#L31](https://github.com/elastic/kibana/tree/master/x-pack/plugins/lists/server/schemas/common/get_call_cluster.mock.ts#L31) | 7.16 |
|
||||
| <DocLink id="kibCorePluginApi" section="def-server.LegacyAPICaller" text="LegacyAPICaller"/> | [get_call_cluster.mock.d.ts#L2](https://github.com/elastic/kibana/tree/master/x-pack/plugins/lists/target/types/server/schemas/common/get_call_cluster.mock.d.ts#L2) | 7.16 |
|
||||
| <DocLink id="kibCorePluginApi" section="def-server.LegacyAPICaller" text="LegacyAPICaller"/> | [get_call_cluster.mock.d.ts#L4](https://github.com/elastic/kibana/tree/master/x-pack/plugins/lists/target/types/server/schemas/common/get_call_cluster.mock.d.ts#L4) | 7.16 |
|
||||
| <DocLink id="kibCorePluginApi" section="def-server.LegacyAPICaller" text="LegacyAPICaller"/> | [get_call_cluster.mock.d.ts#L5](https://github.com/elastic/kibana/tree/master/x-pack/plugins/lists/target/types/server/schemas/common/get_call_cluster.mock.d.ts#L5) | 7.16 |
|
||||
|
||||
|
||||
|
||||
|
@ -1579,12 +1573,12 @@ warning: This document is auto-generated and is meant to be viewed inside our ex
|
|||
|
||||
| Deprecated API | Reference location | Remove By |
|
||||
| ---------------|-----------|-----------|
|
||||
| <DocLink id="kibDataPluginApi" section="def-public.IIndexPattern" text="IIndexPattern"/> | [types.ts#L21](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/management/pages/endpoint_hosts/types.ts#L21) | - |
|
||||
| <DocLink id="kibDataPluginApi" section="def-public.IIndexPattern" text="IIndexPattern"/> | [types.ts#L66](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/management/pages/endpoint_hosts/types.ts#L66) | - |
|
||||
| <DocLink id="kibDataPluginApi" section="def-public.IIndexPattern" text="IIndexPattern"/> | [action.ts#L19](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/management/pages/endpoint_hosts/store/action.ts#L19) | - |
|
||||
| <DocLink id="kibDataPluginApi" section="def-public.IIndexPattern" text="IIndexPattern"/> | [action.ts#L100](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/management/pages/endpoint_hosts/store/action.ts#L100) | - |
|
||||
| <DocLink id="kibDataPluginApi" section="def-public.IIndexPattern" text="IIndexPattern"/> | [index.ts#L8](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/common/search_strategy/index_fields/index.ts#L8) | - |
|
||||
| <DocLink id="kibDataPluginApi" section="def-public.IIndexPattern" text="IIndexPattern"/> | [index.ts#L86](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/common/search_strategy/index_fields/index.ts#L86) | - |
|
||||
| <DocLink id="kibDataPluginApi" section="def-public.IIndexPattern" text="IIndexPattern"/> | [types.ts#L20](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/management/pages/endpoint_hosts/types.ts#L20) | - |
|
||||
| <DocLink id="kibDataPluginApi" section="def-public.IIndexPattern" text="IIndexPattern"/> | [types.ts#L64](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/management/pages/endpoint_hosts/types.ts#L64) | - |
|
||||
| <DocLink id="kibDataPluginApi" section="def-public.IIndexPattern" text="IIndexPattern"/> | [action.ts#L17](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/management/pages/endpoint_hosts/store/action.ts#L17) | - |
|
||||
| <DocLink id="kibDataPluginApi" section="def-public.IIndexPattern" text="IIndexPattern"/> | [action.ts#L98](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/management/pages/endpoint_hosts/store/action.ts#L98) | - |
|
||||
| <DocLink id="kibDataPluginApi" section="def-public.IIndexPattern" text="IIndexPattern"/> | [index.tsx#L12](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/common/containers/source/index.tsx#L12) | - |
|
||||
| <DocLink id="kibDataPluginApi" section="def-public.IIndexPattern" text="IIndexPattern"/> | [index.tsx#L48](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/common/containers/source/index.tsx#L48) | - |
|
||||
| <DocLink id="kibDataPluginApi" section="def-public.IIndexPattern" text="IIndexPattern"/> | [index.tsx#L122](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/common/containers/source/index.tsx#L122) | - |
|
||||
|
@ -1618,9 +1612,9 @@ warning: This document is auto-generated and is meant to be viewed inside our ex
|
|||
| <DocLink id="kibDataPluginApi" section="def-public.IIndexPattern" text="IIndexPattern"/> | [types.ts#L41](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/network/pages/details/types.ts#L41) | - |
|
||||
| <DocLink id="kibDataPluginApi" section="def-public.IIndexPattern" text="IIndexPattern"/> | [index.tsx#L12](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/network/components/network_top_countries_table/index.tsx#L12) | - |
|
||||
| <DocLink id="kibDataPluginApi" section="def-public.IIndexPattern" text="IIndexPattern"/> | [index.tsx#L34](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/network/components/network_top_countries_table/index.tsx#L34) | - |
|
||||
| <DocLink id="kibDataPluginApi" section="def-public.IIndexPattern" text="IIndexPattern"/> | [middleware.ts#L32](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/management/pages/endpoint_hosts/store/middleware.ts#L32) | - |
|
||||
| <DocLink id="kibDataPluginApi" section="def-public.IIndexPattern" text="IIndexPattern"/> | [middleware.ts#L38](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/management/pages/endpoint_hosts/store/middleware.ts#L38) | - |
|
||||
| <DocLink id="kibDataPluginApi" section="def-public.IIndexPattern" text="IIndexPattern"/> | [middleware.ts#L43](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/management/pages/endpoint_hosts/store/middleware.ts#L43) | - |
|
||||
| <DocLink id="kibDataPluginApi" section="def-public.IIndexPattern" text="IIndexPattern"/> | [middleware.ts#L40](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/management/pages/endpoint_hosts/store/middleware.ts#L40) | - |
|
||||
| <DocLink id="kibDataPluginApi" section="def-public.IIndexPattern" text="IIndexPattern"/> | [middleware.ts#L55](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/management/pages/endpoint_hosts/store/middleware.ts#L55) | - |
|
||||
| <DocLink id="kibDataPluginApi" section="def-public.IIndexPattern" text="IIndexPattern"/> | [middleware.ts#L60](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/management/pages/endpoint_hosts/store/middleware.ts#L60) | - |
|
||||
| <DocLink id="kibDataPluginApi" section="def-public.IIndexPattern" text="IIndexPattern"/> | [types.ts#L12](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/detections/components/rules/description_step/types.ts#L12) | - |
|
||||
| <DocLink id="kibDataPluginApi" section="def-public.IIndexPattern" text="IIndexPattern"/> | [types.ts#L28](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/detections/components/rules/description_step/types.ts#L28) | - |
|
||||
| <DocLink id="kibDataPluginApi" section="def-public.IIndexPattern" text="IIndexPattern"/> | [index.tsx#L15](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/detections/components/rules/description_step/index.tsx#L15) | - |
|
||||
|
@ -1633,13 +1627,30 @@ warning: This document is auto-generated and is meant to be viewed inside our ex
|
|||
| <DocLink id="kibDataPluginApi" section="def-public.IIndexPattern" text="IIndexPattern"/> | [index.tsx#L44](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/overview/components/alerts_by_category/index.tsx#L44) | - |
|
||||
| <DocLink id="kibDataPluginApi" section="def-public.IIndexPattern" text="IIndexPattern"/> | [index.tsx#L21](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/overview/components/event_counts/index.tsx#L21) | - |
|
||||
| <DocLink id="kibDataPluginApi" section="def-public.IIndexPattern" text="IIndexPattern"/> | [index.tsx#L33](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/overview/components/event_counts/index.tsx#L33) | - |
|
||||
| <DocLink id="kibDataPluginApi" section="def-public.IIndexPattern" text="IIndexPattern"/> | [index.tsx#L9](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/common/containers/kuery_autocompletion/index.tsx#L9) | - |
|
||||
| <DocLink id="kibDataPluginApi" section="def-public.IIndexPattern" text="IIndexPattern"/> | [index.tsx#L21](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/common/containers/kuery_autocompletion/index.tsx#L21) | - |
|
||||
| <DocLink id="kibDataPluginApi" section="def-public.IIndexPattern" text="IIndexPattern"/> | [get_query_filter.ts#L15](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/common/detection_engine/get_query_filter.ts#L15) | - |
|
||||
| <DocLink id="kibDataPluginApi" section="def-public.IIndexPattern" text="IIndexPattern"/> | [get_query_filter.ts#L31](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/common/detection_engine/get_query_filter.ts#L31) | - |
|
||||
| <DocLink id="kibDataPluginApi" section="def-public.IIndexPattern" text="IIndexPattern"/> | [index.d.ts#L1](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/target/types/common/search_strategy/index_fields/index.d.ts#L1) | - |
|
||||
| <DocLink id="kibDataPluginApi" section="def-public.IIndexPattern" text="IIndexPattern"/> | [index.d.ts#L66](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/target/types/common/search_strategy/index_fields/index.d.ts#L66) | - |
|
||||
| <DocLink id="kibDataPluginApi" section="def-public.IIndexPattern" text="IIndexPattern"/> | [index.d.ts#L1](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/target/types/public/common/containers/source/index.d.ts#L1) | - |
|
||||
| <DocLink id="kibDataPluginApi" section="def-public.IIndexPattern" text="IIndexPattern"/> | [index.d.ts#L10](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/target/types/public/common/containers/source/index.d.ts#L10) | - |
|
||||
| <DocLink id="kibDataPluginApi" section="def-public.IIndexPattern" text="IIndexPattern"/> | [index.d.ts#L23](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/target/types/public/common/containers/source/index.d.ts#L23) | - |
|
||||
| <DocLink id="kibDataPluginApi" section="def-public.IIndexPattern" text="IIndexPattern"/> | [types.d.ts#L3](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/target/types/public/common/components/url_state/types.d.ts#L3) | - |
|
||||
| <DocLink id="kibDataPluginApi" section="def-public.IIndexPattern" text="IIndexPattern"/> | [types.d.ts#L25](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/target/types/public/common/components/url_state/types.d.ts#L25) | - |
|
||||
| <DocLink id="kibDataPluginApi" section="def-public.IIndexPattern" text="IIndexPattern"/> | [types.d.ts#L55](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/target/types/public/common/components/url_state/types.d.ts#L55) | - |
|
||||
| <DocLink id="kibDataPluginApi" section="def-public.IIndexPattern" text="IIndexPattern"/> | [columns.d.ts#L1](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/target/types/public/network/components/network_top_countries_table/columns.d.ts#L1) | - |
|
||||
| <DocLink id="kibDataPluginApi" section="def-public.IIndexPattern" text="IIndexPattern"/> | [columns.d.ts#L20](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/target/types/public/network/components/network_top_countries_table/columns.d.ts#L20) | - |
|
||||
| <DocLink id="kibDataPluginApi" section="def-public.IIndexPattern" text="IIndexPattern"/> | [columns.d.ts#L21](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/target/types/public/network/components/network_top_countries_table/columns.d.ts#L21) | - |
|
||||
| <DocLink id="kibDataPluginApi" section="def-public.IIndexPattern" text="IIndexPattern"/> | [index.d.ts#L3](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/target/types/public/common/components/search_bar/index.d.ts#L3) | - |
|
||||
| <DocLink id="kibDataPluginApi" section="def-public.IIndexPattern" text="IIndexPattern"/> | [index.d.ts#L9](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/target/types/public/common/components/search_bar/index.d.ts#L9) | - |
|
||||
| <DocLink id="kibDataPluginApi" section="def-public.IIndexPattern" text="IIndexPattern"/> | [types.d.ts#L2](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/target/types/public/hosts/pages/details/types.d.ts#L2) | - |
|
||||
| <DocLink id="kibDataPluginApi" section="def-public.IIndexPattern" text="IIndexPattern"/> | [types.d.ts#L40](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/target/types/public/hosts/pages/details/types.d.ts#L40) | - |
|
||||
| <DocLink id="kibDataPluginApi" section="def-public.IIndexPattern" text="IIndexPattern"/> | [index.d.ts#L2](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/target/types/public/network/components/network_top_countries_table/index.d.ts#L2) | - |
|
||||
| <DocLink id="kibDataPluginApi" section="def-public.IIndexPattern" text="IIndexPattern"/> | [index.d.ts#L10](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/target/types/public/network/components/network_top_countries_table/index.d.ts#L10) | - |
|
||||
| <DocLink id="kibDataPluginApi" section="def-public.IIndexPattern" text="IIndexPattern"/> | [types.d.ts#L1](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/target/types/public/network/pages/details/types.d.ts#L1) | - |
|
||||
| <DocLink id="kibDataPluginApi" section="def-public.IIndexPattern" text="IIndexPattern"/> | [types.d.ts#L25](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/target/types/public/network/pages/details/types.d.ts#L25) | - |
|
||||
| <DocLink id="kibDataPluginApi" section="def-public.IIndexPattern" text="IIndexPattern"/> | [types.ts#L9](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/network/pages/navigation/types.ts#L9) | - |
|
||||
| <DocLink id="kibDataPluginApi" section="def-public.IIndexPattern" text="IIndexPattern"/> | [types.ts#L35](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/network/pages/navigation/types.ts#L35) | - |
|
||||
| <DocLink id="kibDataPluginApi" section="def-public.IIndexPattern" text="IIndexPattern"/> | [types.ts#L53](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/network/pages/navigation/types.ts#L53) | - |
|
||||
| <DocLink id="kibDataPluginApi" section="def-public.IIndexPattern" text="IIndexPattern"/> | [get_query_filter.ts#L16](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/common/detection_engine/get_query_filter.ts#L16) | - |
|
||||
| <DocLink id="kibDataPluginApi" section="def-public.IIndexPattern" text="IIndexPattern"/> | [get_query_filter.ts#L31](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/common/detection_engine/get_query_filter.ts#L31) | - |
|
||||
| <DocLink id="kibDataPluginApi" section="def-public.IIndexPattern" text="IIndexPattern"/> | [helpers.tsx#L39](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/common/components/exceptions/helpers.tsx#L39) | - |
|
||||
| <DocLink id="kibDataPluginApi" section="def-public.IIndexPattern" text="IIndexPattern"/> | [helpers.tsx#L49](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/common/components/exceptions/helpers.tsx#L49) | - |
|
||||
| <DocLink id="kibDataPluginApi" section="def-public.IIndexPattern" text="IIndexPattern"/> | [helpers.tsx#L52](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/common/components/exceptions/helpers.tsx#L52) | - |
|
||||
|
@ -1658,11 +1669,6 @@ warning: This document is auto-generated and is meant to be viewed inside our ex
|
|||
| <DocLink id="kibDataPluginApi" section="def-public.IIndexPattern" text="IIndexPattern"/> | [use_field_value_autocomplete.ts#L31](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/common/components/autocomplete/hooks/use_field_value_autocomplete.ts#L31) | - |
|
||||
| <DocLink id="kibDataPluginApi" section="def-public.IIndexPattern" text="IIndexPattern"/> | [field_value_match.tsx#L19](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/common/components/autocomplete/field_value_match.tsx#L19) | - |
|
||||
| <DocLink id="kibDataPluginApi" section="def-public.IIndexPattern" text="IIndexPattern"/> | [field_value_match.tsx#L30](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/common/components/autocomplete/field_value_match.tsx#L30) | - |
|
||||
| <DocLink id="kibDataPluginApi" section="def-public.IIndexPattern" text="IIndexPattern"/> | [field_value_match_any.tsx#L13](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/common/components/autocomplete/field_value_match_any.tsx#L13) | - |
|
||||
| <DocLink id="kibDataPluginApi" section="def-public.IIndexPattern" text="IIndexPattern"/> | [field_value_match_any.tsx#L24](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/common/components/autocomplete/field_value_match_any.tsx#L24) | - |
|
||||
| <DocLink id="kibDataPluginApi" section="def-public.IIndexPattern" text="IIndexPattern"/> | [helpers.test.tsx#L43](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/common/components/exceptions/helpers.test.tsx#L43) | - |
|
||||
| <DocLink id="kibDataPluginApi" section="def-public.IIndexPattern" text="IIndexPattern"/> | [helpers.test.tsx#L49](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/common/components/exceptions/helpers.test.tsx#L49) | - |
|
||||
| <DocLink id="kibDataPluginApi" section="def-public.IIndexPattern" text="IIndexPattern"/> | [helpers.test.tsx#L368](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/common/components/exceptions/helpers.test.tsx#L368) | - |
|
||||
| <DocLink id="kibDataPluginApi" section="def-public.IIndexPattern" text="IIndexPattern"/> | [model.ts#L8](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/common/store/sourcerer/model.ts#L8) | - |
|
||||
| <DocLink id="kibDataPluginApi" section="def-public.IIndexPattern" text="IIndexPattern"/> | [model.ts#L30](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/common/store/sourcerer/model.ts#L30) | - |
|
||||
| <DocLink id="kibDataPluginApi" section="def-public.IIndexPattern" text="IIndexPattern"/> | [index.tsx#L33](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/detections/components/rules/severity_mapping/index.tsx#L33) | - |
|
||||
|
@ -1709,10 +1715,6 @@ warning: This document is auto-generated and is meant to be viewed inside our ex
|
|||
| <DocLink id="kibDataPluginApi" section="def-public.IFieldType" text="IFieldType"/> | [use_field_value_autocomplete.ts#L27](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/common/components/autocomplete/hooks/use_field_value_autocomplete.ts#L27) | - |
|
||||
| <DocLink id="kibDataPluginApi" section="def-public.IFieldType" text="IFieldType"/> | [field_value_match.tsx#L19](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/common/components/autocomplete/field_value_match.tsx#L19) | - |
|
||||
| <DocLink id="kibDataPluginApi" section="def-public.IFieldType" text="IFieldType"/> | [field_value_match.tsx#L28](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/common/components/autocomplete/field_value_match.tsx#L28) | - |
|
||||
| <DocLink id="kibDataPluginApi" section="def-public.IFieldType" text="IFieldType"/> | [field_value_lists.tsx#L12](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/common/components/autocomplete/field_value_lists.tsx#L12) | - |
|
||||
| <DocLink id="kibDataPluginApi" section="def-public.IFieldType" text="IFieldType"/> | [field_value_lists.tsx#L20](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/common/components/autocomplete/field_value_lists.tsx#L20) | - |
|
||||
| <DocLink id="kibDataPluginApi" section="def-public.IFieldType" text="IFieldType"/> | [field_value_match_any.tsx#L13](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/common/components/autocomplete/field_value_match_any.tsx#L13) | - |
|
||||
| <DocLink id="kibDataPluginApi" section="def-public.IFieldType" text="IFieldType"/> | [field_value_match_any.tsx#L22](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/common/components/autocomplete/field_value_match_any.tsx#L22) | - |
|
||||
| <DocLink id="kibDataPluginApi" section="def-public.IFieldType" text="IFieldType"/> | [helpers.test.ts#L11](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/common/components/autocomplete/helpers.test.ts#L11) | - |
|
||||
| <DocLink id="kibDataPluginApi" section="def-public.IFieldType" text="IFieldType"/> | [helpers.test.ts#L333](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/common/components/autocomplete/helpers.test.ts#L333) | - |
|
||||
| <DocLink id="kibDataPluginApi" section="def-public.IFieldType" text="IFieldType"/> | [helpers.test.ts#L339](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/common/components/autocomplete/helpers.test.ts#L339) | - |
|
||||
|
@ -1721,10 +1723,8 @@ warning: This document is auto-generated and is meant to be viewed inside our ex
|
|||
| <DocLink id="kibDataPluginApi" section="def-public.IFieldType" text="IFieldType"/> | [helpers.test.ts#L363](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/common/components/autocomplete/helpers.test.ts#L363) | - |
|
||||
| <DocLink id="kibDataPluginApi" section="def-public.IFieldType" text="IFieldType"/> | [helpers.test.ts#L371](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/common/components/autocomplete/helpers.test.ts#L371) | - |
|
||||
| <DocLink id="kibDataPluginApi" section="def-public.IFieldType" text="IFieldType"/> | [helpers.test.ts#L380](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/common/components/autocomplete/helpers.test.ts#L380) | - |
|
||||
| <DocLink id="kibDataPluginApi" section="def-public.IFieldType" text="IFieldType"/> | [operator.tsx#L11](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/common/components/autocomplete/operator.tsx#L11) | - |
|
||||
| <DocLink id="kibDataPluginApi" section="def-public.IFieldType" text="IFieldType"/> | [operator.tsx#L17](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/common/components/autocomplete/operator.tsx#L17) | - |
|
||||
| <DocLink id="kibDataPluginApi" section="def-public.IFieldType" text="IFieldType"/> | [helpers.test.tsx#L43](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/common/components/exceptions/helpers.test.tsx#L43) | - |
|
||||
| <DocLink id="kibDataPluginApi" section="def-public.IFieldType" text="IFieldType"/> | [helpers.test.tsx#L104](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/common/components/exceptions/helpers.test.tsx#L104) | - |
|
||||
| <DocLink id="kibDataPluginApi" section="def-public.IFieldType" text="IFieldType"/> | [helpers.test.d.ts#L1](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/target/types/public/common/components/exceptions/helpers.test.d.ts#L1) | - |
|
||||
| <DocLink id="kibDataPluginApi" section="def-public.IFieldType" text="IFieldType"/> | [helpers.test.d.ts#L2](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/target/types/public/common/components/exceptions/helpers.test.d.ts#L2) | - |
|
||||
| <DocLink id="kibDataPluginApi" section="def-public.IFieldType" text="IFieldType"/> | [index.tsx#L32](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/detections/components/rules/severity_mapping/index.tsx#L32) | - |
|
||||
| <DocLink id="kibDataPluginApi" section="def-public.IFieldType" text="IFieldType"/> | [index.tsx#L86](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/detections/components/rules/severity_mapping/index.tsx#L86) | - |
|
||||
| <DocLink id="kibDataPluginApi" section="def-public.IFieldType" text="IFieldType"/> | [index.tsx#L305](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/detections/components/rules/severity_mapping/index.tsx#L305) | - |
|
||||
|
@ -1767,10 +1767,6 @@ warning: This document is auto-generated and is meant to be viewed inside our ex
|
|||
| <DocLink id="kibDataPluginApi" section="def-common.IFieldType" text="IFieldType"/> | [use_field_value_autocomplete.ts#L27](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/common/components/autocomplete/hooks/use_field_value_autocomplete.ts#L27) | - |
|
||||
| <DocLink id="kibDataPluginApi" section="def-common.IFieldType" text="IFieldType"/> | [field_value_match.tsx#L19](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/common/components/autocomplete/field_value_match.tsx#L19) | - |
|
||||
| <DocLink id="kibDataPluginApi" section="def-common.IFieldType" text="IFieldType"/> | [field_value_match.tsx#L28](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/common/components/autocomplete/field_value_match.tsx#L28) | - |
|
||||
| <DocLink id="kibDataPluginApi" section="def-common.IFieldType" text="IFieldType"/> | [field_value_lists.tsx#L12](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/common/components/autocomplete/field_value_lists.tsx#L12) | - |
|
||||
| <DocLink id="kibDataPluginApi" section="def-common.IFieldType" text="IFieldType"/> | [field_value_lists.tsx#L20](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/common/components/autocomplete/field_value_lists.tsx#L20) | - |
|
||||
| <DocLink id="kibDataPluginApi" section="def-common.IFieldType" text="IFieldType"/> | [field_value_match_any.tsx#L13](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/common/components/autocomplete/field_value_match_any.tsx#L13) | - |
|
||||
| <DocLink id="kibDataPluginApi" section="def-common.IFieldType" text="IFieldType"/> | [field_value_match_any.tsx#L22](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/common/components/autocomplete/field_value_match_any.tsx#L22) | - |
|
||||
| <DocLink id="kibDataPluginApi" section="def-common.IFieldType" text="IFieldType"/> | [helpers.test.ts#L11](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/common/components/autocomplete/helpers.test.ts#L11) | - |
|
||||
| <DocLink id="kibDataPluginApi" section="def-common.IFieldType" text="IFieldType"/> | [helpers.test.ts#L333](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/common/components/autocomplete/helpers.test.ts#L333) | - |
|
||||
| <DocLink id="kibDataPluginApi" section="def-common.IFieldType" text="IFieldType"/> | [helpers.test.ts#L339](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/common/components/autocomplete/helpers.test.ts#L339) | - |
|
||||
|
@ -1779,10 +1775,8 @@ warning: This document is auto-generated and is meant to be viewed inside our ex
|
|||
| <DocLink id="kibDataPluginApi" section="def-common.IFieldType" text="IFieldType"/> | [helpers.test.ts#L363](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/common/components/autocomplete/helpers.test.ts#L363) | - |
|
||||
| <DocLink id="kibDataPluginApi" section="def-common.IFieldType" text="IFieldType"/> | [helpers.test.ts#L371](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/common/components/autocomplete/helpers.test.ts#L371) | - |
|
||||
| <DocLink id="kibDataPluginApi" section="def-common.IFieldType" text="IFieldType"/> | [helpers.test.ts#L380](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/common/components/autocomplete/helpers.test.ts#L380) | - |
|
||||
| <DocLink id="kibDataPluginApi" section="def-common.IFieldType" text="IFieldType"/> | [operator.tsx#L11](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/common/components/autocomplete/operator.tsx#L11) | - |
|
||||
| <DocLink id="kibDataPluginApi" section="def-common.IFieldType" text="IFieldType"/> | [operator.tsx#L17](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/common/components/autocomplete/operator.tsx#L17) | - |
|
||||
| <DocLink id="kibDataPluginApi" section="def-common.IFieldType" text="IFieldType"/> | [helpers.test.tsx#L43](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/common/components/exceptions/helpers.test.tsx#L43) | - |
|
||||
| <DocLink id="kibDataPluginApi" section="def-common.IFieldType" text="IFieldType"/> | [helpers.test.tsx#L104](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/common/components/exceptions/helpers.test.tsx#L104) | - |
|
||||
| <DocLink id="kibDataPluginApi" section="def-common.IFieldType" text="IFieldType"/> | [helpers.test.d.ts#L1](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/target/types/public/common/components/exceptions/helpers.test.d.ts#L1) | - |
|
||||
| <DocLink id="kibDataPluginApi" section="def-common.IFieldType" text="IFieldType"/> | [helpers.test.d.ts#L2](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/target/types/public/common/components/exceptions/helpers.test.d.ts#L2) | - |
|
||||
| <DocLink id="kibDataPluginApi" section="def-common.IFieldType" text="IFieldType"/> | [index.tsx#L32](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/detections/components/rules/severity_mapping/index.tsx#L32) | - |
|
||||
| <DocLink id="kibDataPluginApi" section="def-common.IFieldType" text="IFieldType"/> | [index.tsx#L86](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/detections/components/rules/severity_mapping/index.tsx#L86) | - |
|
||||
| <DocLink id="kibDataPluginApi" section="def-common.IFieldType" text="IFieldType"/> | [index.tsx#L305](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/detections/components/rules/severity_mapping/index.tsx#L305) | - |
|
||||
|
@ -1791,12 +1785,12 @@ warning: This document is auto-generated and is meant to be viewed inside our ex
|
|||
| <DocLink id="kibDataPluginApi" section="def-common.IFieldType" text="IFieldType"/> | [index.tsx#L242](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/detections/components/rules/risk_score_mapping/index.tsx#L242) | - |
|
||||
| <DocLink id="kibDataPluginApi" section="def-common.IFieldType" text="IFieldType"/> | [index.tsx#L12](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/detections/components/rules/autocomplete_field/index.tsx#L12) | - |
|
||||
| <DocLink id="kibDataPluginApi" section="def-common.IFieldType" text="IFieldType"/> | [index.tsx#L35](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/detections/components/rules/autocomplete_field/index.tsx#L35) | - |
|
||||
| <DocLink id="kibDataPluginApi" section="def-common.IIndexPattern" text="IIndexPattern"/> | [types.ts#L21](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/management/pages/endpoint_hosts/types.ts#L21) | - |
|
||||
| <DocLink id="kibDataPluginApi" section="def-common.IIndexPattern" text="IIndexPattern"/> | [types.ts#L66](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/management/pages/endpoint_hosts/types.ts#L66) | - |
|
||||
| <DocLink id="kibDataPluginApi" section="def-common.IIndexPattern" text="IIndexPattern"/> | [action.ts#L19](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/management/pages/endpoint_hosts/store/action.ts#L19) | - |
|
||||
| <DocLink id="kibDataPluginApi" section="def-common.IIndexPattern" text="IIndexPattern"/> | [action.ts#L100](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/management/pages/endpoint_hosts/store/action.ts#L100) | - |
|
||||
| <DocLink id="kibDataPluginApi" section="def-common.IIndexPattern" text="IIndexPattern"/> | [index.ts#L8](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/common/search_strategy/index_fields/index.ts#L8) | - |
|
||||
| <DocLink id="kibDataPluginApi" section="def-common.IIndexPattern" text="IIndexPattern"/> | [index.ts#L86](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/common/search_strategy/index_fields/index.ts#L86) | - |
|
||||
| <DocLink id="kibDataPluginApi" section="def-common.IIndexPattern" text="IIndexPattern"/> | [types.ts#L20](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/management/pages/endpoint_hosts/types.ts#L20) | - |
|
||||
| <DocLink id="kibDataPluginApi" section="def-common.IIndexPattern" text="IIndexPattern"/> | [types.ts#L64](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/management/pages/endpoint_hosts/types.ts#L64) | - |
|
||||
| <DocLink id="kibDataPluginApi" section="def-common.IIndexPattern" text="IIndexPattern"/> | [action.ts#L17](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/management/pages/endpoint_hosts/store/action.ts#L17) | - |
|
||||
| <DocLink id="kibDataPluginApi" section="def-common.IIndexPattern" text="IIndexPattern"/> | [action.ts#L98](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/management/pages/endpoint_hosts/store/action.ts#L98) | - |
|
||||
| <DocLink id="kibDataPluginApi" section="def-common.IIndexPattern" text="IIndexPattern"/> | [index.tsx#L12](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/common/containers/source/index.tsx#L12) | - |
|
||||
| <DocLink id="kibDataPluginApi" section="def-common.IIndexPattern" text="IIndexPattern"/> | [index.tsx#L48](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/common/containers/source/index.tsx#L48) | - |
|
||||
| <DocLink id="kibDataPluginApi" section="def-common.IIndexPattern" text="IIndexPattern"/> | [index.tsx#L122](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/common/containers/source/index.tsx#L122) | - |
|
||||
|
@ -1830,9 +1824,9 @@ warning: This document is auto-generated and is meant to be viewed inside our ex
|
|||
| <DocLink id="kibDataPluginApi" section="def-common.IIndexPattern" text="IIndexPattern"/> | [types.ts#L41](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/network/pages/details/types.ts#L41) | - |
|
||||
| <DocLink id="kibDataPluginApi" section="def-common.IIndexPattern" text="IIndexPattern"/> | [index.tsx#L12](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/network/components/network_top_countries_table/index.tsx#L12) | - |
|
||||
| <DocLink id="kibDataPluginApi" section="def-common.IIndexPattern" text="IIndexPattern"/> | [index.tsx#L34](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/network/components/network_top_countries_table/index.tsx#L34) | - |
|
||||
| <DocLink id="kibDataPluginApi" section="def-common.IIndexPattern" text="IIndexPattern"/> | [middleware.ts#L32](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/management/pages/endpoint_hosts/store/middleware.ts#L32) | - |
|
||||
| <DocLink id="kibDataPluginApi" section="def-common.IIndexPattern" text="IIndexPattern"/> | [middleware.ts#L38](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/management/pages/endpoint_hosts/store/middleware.ts#L38) | - |
|
||||
| <DocLink id="kibDataPluginApi" section="def-common.IIndexPattern" text="IIndexPattern"/> | [middleware.ts#L43](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/management/pages/endpoint_hosts/store/middleware.ts#L43) | - |
|
||||
| <DocLink id="kibDataPluginApi" section="def-common.IIndexPattern" text="IIndexPattern"/> | [middleware.ts#L40](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/management/pages/endpoint_hosts/store/middleware.ts#L40) | - |
|
||||
| <DocLink id="kibDataPluginApi" section="def-common.IIndexPattern" text="IIndexPattern"/> | [middleware.ts#L55](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/management/pages/endpoint_hosts/store/middleware.ts#L55) | - |
|
||||
| <DocLink id="kibDataPluginApi" section="def-common.IIndexPattern" text="IIndexPattern"/> | [middleware.ts#L60](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/management/pages/endpoint_hosts/store/middleware.ts#L60) | - |
|
||||
| <DocLink id="kibDataPluginApi" section="def-common.IIndexPattern" text="IIndexPattern"/> | [types.ts#L12](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/detections/components/rules/description_step/types.ts#L12) | - |
|
||||
| <DocLink id="kibDataPluginApi" section="def-common.IIndexPattern" text="IIndexPattern"/> | [types.ts#L28](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/detections/components/rules/description_step/types.ts#L28) | - |
|
||||
| <DocLink id="kibDataPluginApi" section="def-common.IIndexPattern" text="IIndexPattern"/> | [index.tsx#L15](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/detections/components/rules/description_step/index.tsx#L15) | - |
|
||||
|
@ -1845,13 +1839,30 @@ warning: This document is auto-generated and is meant to be viewed inside our ex
|
|||
| <DocLink id="kibDataPluginApi" section="def-common.IIndexPattern" text="IIndexPattern"/> | [index.tsx#L44](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/overview/components/alerts_by_category/index.tsx#L44) | - |
|
||||
| <DocLink id="kibDataPluginApi" section="def-common.IIndexPattern" text="IIndexPattern"/> | [index.tsx#L21](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/overview/components/event_counts/index.tsx#L21) | - |
|
||||
| <DocLink id="kibDataPluginApi" section="def-common.IIndexPattern" text="IIndexPattern"/> | [index.tsx#L33](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/overview/components/event_counts/index.tsx#L33) | - |
|
||||
| <DocLink id="kibDataPluginApi" section="def-common.IIndexPattern" text="IIndexPattern"/> | [index.tsx#L9](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/common/containers/kuery_autocompletion/index.tsx#L9) | - |
|
||||
| <DocLink id="kibDataPluginApi" section="def-common.IIndexPattern" text="IIndexPattern"/> | [index.tsx#L21](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/common/containers/kuery_autocompletion/index.tsx#L21) | - |
|
||||
| <DocLink id="kibDataPluginApi" section="def-common.IIndexPattern" text="IIndexPattern"/> | [get_query_filter.ts#L15](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/common/detection_engine/get_query_filter.ts#L15) | - |
|
||||
| <DocLink id="kibDataPluginApi" section="def-common.IIndexPattern" text="IIndexPattern"/> | [get_query_filter.ts#L31](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/common/detection_engine/get_query_filter.ts#L31) | - |
|
||||
| <DocLink id="kibDataPluginApi" section="def-common.IIndexPattern" text="IIndexPattern"/> | [index.d.ts#L1](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/target/types/common/search_strategy/index_fields/index.d.ts#L1) | - |
|
||||
| <DocLink id="kibDataPluginApi" section="def-common.IIndexPattern" text="IIndexPattern"/> | [index.d.ts#L66](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/target/types/common/search_strategy/index_fields/index.d.ts#L66) | - |
|
||||
| <DocLink id="kibDataPluginApi" section="def-common.IIndexPattern" text="IIndexPattern"/> | [index.d.ts#L1](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/target/types/public/common/containers/source/index.d.ts#L1) | - |
|
||||
| <DocLink id="kibDataPluginApi" section="def-common.IIndexPattern" text="IIndexPattern"/> | [index.d.ts#L10](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/target/types/public/common/containers/source/index.d.ts#L10) | - |
|
||||
| <DocLink id="kibDataPluginApi" section="def-common.IIndexPattern" text="IIndexPattern"/> | [index.d.ts#L23](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/target/types/public/common/containers/source/index.d.ts#L23) | - |
|
||||
| <DocLink id="kibDataPluginApi" section="def-common.IIndexPattern" text="IIndexPattern"/> | [types.d.ts#L3](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/target/types/public/common/components/url_state/types.d.ts#L3) | - |
|
||||
| <DocLink id="kibDataPluginApi" section="def-common.IIndexPattern" text="IIndexPattern"/> | [types.d.ts#L25](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/target/types/public/common/components/url_state/types.d.ts#L25) | - |
|
||||
| <DocLink id="kibDataPluginApi" section="def-common.IIndexPattern" text="IIndexPattern"/> | [types.d.ts#L55](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/target/types/public/common/components/url_state/types.d.ts#L55) | - |
|
||||
| <DocLink id="kibDataPluginApi" section="def-common.IIndexPattern" text="IIndexPattern"/> | [columns.d.ts#L1](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/target/types/public/network/components/network_top_countries_table/columns.d.ts#L1) | - |
|
||||
| <DocLink id="kibDataPluginApi" section="def-common.IIndexPattern" text="IIndexPattern"/> | [columns.d.ts#L20](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/target/types/public/network/components/network_top_countries_table/columns.d.ts#L20) | - |
|
||||
| <DocLink id="kibDataPluginApi" section="def-common.IIndexPattern" text="IIndexPattern"/> | [columns.d.ts#L21](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/target/types/public/network/components/network_top_countries_table/columns.d.ts#L21) | - |
|
||||
| <DocLink id="kibDataPluginApi" section="def-common.IIndexPattern" text="IIndexPattern"/> | [index.d.ts#L3](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/target/types/public/common/components/search_bar/index.d.ts#L3) | - |
|
||||
| <DocLink id="kibDataPluginApi" section="def-common.IIndexPattern" text="IIndexPattern"/> | [index.d.ts#L9](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/target/types/public/common/components/search_bar/index.d.ts#L9) | - |
|
||||
| <DocLink id="kibDataPluginApi" section="def-common.IIndexPattern" text="IIndexPattern"/> | [types.d.ts#L2](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/target/types/public/hosts/pages/details/types.d.ts#L2) | - |
|
||||
| <DocLink id="kibDataPluginApi" section="def-common.IIndexPattern" text="IIndexPattern"/> | [types.d.ts#L40](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/target/types/public/hosts/pages/details/types.d.ts#L40) | - |
|
||||
| <DocLink id="kibDataPluginApi" section="def-common.IIndexPattern" text="IIndexPattern"/> | [index.d.ts#L2](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/target/types/public/network/components/network_top_countries_table/index.d.ts#L2) | - |
|
||||
| <DocLink id="kibDataPluginApi" section="def-common.IIndexPattern" text="IIndexPattern"/> | [index.d.ts#L10](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/target/types/public/network/components/network_top_countries_table/index.d.ts#L10) | - |
|
||||
| <DocLink id="kibDataPluginApi" section="def-common.IIndexPattern" text="IIndexPattern"/> | [types.d.ts#L1](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/target/types/public/network/pages/details/types.d.ts#L1) | - |
|
||||
| <DocLink id="kibDataPluginApi" section="def-common.IIndexPattern" text="IIndexPattern"/> | [types.d.ts#L25](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/target/types/public/network/pages/details/types.d.ts#L25) | - |
|
||||
| <DocLink id="kibDataPluginApi" section="def-common.IIndexPattern" text="IIndexPattern"/> | [types.ts#L9](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/network/pages/navigation/types.ts#L9) | - |
|
||||
| <DocLink id="kibDataPluginApi" section="def-common.IIndexPattern" text="IIndexPattern"/> | [types.ts#L35](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/network/pages/navigation/types.ts#L35) | - |
|
||||
| <DocLink id="kibDataPluginApi" section="def-common.IIndexPattern" text="IIndexPattern"/> | [types.ts#L53](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/network/pages/navigation/types.ts#L53) | - |
|
||||
| <DocLink id="kibDataPluginApi" section="def-common.IIndexPattern" text="IIndexPattern"/> | [get_query_filter.ts#L16](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/common/detection_engine/get_query_filter.ts#L16) | - |
|
||||
| <DocLink id="kibDataPluginApi" section="def-common.IIndexPattern" text="IIndexPattern"/> | [get_query_filter.ts#L31](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/common/detection_engine/get_query_filter.ts#L31) | - |
|
||||
| <DocLink id="kibDataPluginApi" section="def-common.IIndexPattern" text="IIndexPattern"/> | [helpers.tsx#L39](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/common/components/exceptions/helpers.tsx#L39) | - |
|
||||
| <DocLink id="kibDataPluginApi" section="def-common.IIndexPattern" text="IIndexPattern"/> | [helpers.tsx#L49](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/common/components/exceptions/helpers.tsx#L49) | - |
|
||||
| <DocLink id="kibDataPluginApi" section="def-common.IIndexPattern" text="IIndexPattern"/> | [helpers.tsx#L52](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/common/components/exceptions/helpers.tsx#L52) | - |
|
||||
|
@ -1870,11 +1881,6 @@ warning: This document is auto-generated and is meant to be viewed inside our ex
|
|||
| <DocLink id="kibDataPluginApi" section="def-common.IIndexPattern" text="IIndexPattern"/> | [use_field_value_autocomplete.ts#L31](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/common/components/autocomplete/hooks/use_field_value_autocomplete.ts#L31) | - |
|
||||
| <DocLink id="kibDataPluginApi" section="def-common.IIndexPattern" text="IIndexPattern"/> | [field_value_match.tsx#L19](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/common/components/autocomplete/field_value_match.tsx#L19) | - |
|
||||
| <DocLink id="kibDataPluginApi" section="def-common.IIndexPattern" text="IIndexPattern"/> | [field_value_match.tsx#L30](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/common/components/autocomplete/field_value_match.tsx#L30) | - |
|
||||
| <DocLink id="kibDataPluginApi" section="def-common.IIndexPattern" text="IIndexPattern"/> | [field_value_match_any.tsx#L13](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/common/components/autocomplete/field_value_match_any.tsx#L13) | - |
|
||||
| <DocLink id="kibDataPluginApi" section="def-common.IIndexPattern" text="IIndexPattern"/> | [field_value_match_any.tsx#L24](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/common/components/autocomplete/field_value_match_any.tsx#L24) | - |
|
||||
| <DocLink id="kibDataPluginApi" section="def-common.IIndexPattern" text="IIndexPattern"/> | [helpers.test.tsx#L43](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/common/components/exceptions/helpers.test.tsx#L43) | - |
|
||||
| <DocLink id="kibDataPluginApi" section="def-common.IIndexPattern" text="IIndexPattern"/> | [helpers.test.tsx#L49](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/common/components/exceptions/helpers.test.tsx#L49) | - |
|
||||
| <DocLink id="kibDataPluginApi" section="def-common.IIndexPattern" text="IIndexPattern"/> | [helpers.test.tsx#L368](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/common/components/exceptions/helpers.test.tsx#L368) | - |
|
||||
| <DocLink id="kibDataPluginApi" section="def-common.IIndexPattern" text="IIndexPattern"/> | [model.ts#L8](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/common/store/sourcerer/model.ts#L8) | - |
|
||||
| <DocLink id="kibDataPluginApi" section="def-common.IIndexPattern" text="IIndexPattern"/> | [model.ts#L30](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/common/store/sourcerer/model.ts#L30) | - |
|
||||
| <DocLink id="kibDataPluginApi" section="def-common.IIndexPattern" text="IIndexPattern"/> | [index.tsx#L33](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/detections/components/rules/severity_mapping/index.tsx#L33) | - |
|
||||
|
@ -1921,10 +1927,6 @@ warning: This document is auto-generated and is meant to be viewed inside our ex
|
|||
| <DocLink id="kibDataPluginApi" section="def-server.IFieldType" text="IFieldType"/> | [use_field_value_autocomplete.ts#L27](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/common/components/autocomplete/hooks/use_field_value_autocomplete.ts#L27) | - |
|
||||
| <DocLink id="kibDataPluginApi" section="def-server.IFieldType" text="IFieldType"/> | [field_value_match.tsx#L19](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/common/components/autocomplete/field_value_match.tsx#L19) | - |
|
||||
| <DocLink id="kibDataPluginApi" section="def-server.IFieldType" text="IFieldType"/> | [field_value_match.tsx#L28](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/common/components/autocomplete/field_value_match.tsx#L28) | - |
|
||||
| <DocLink id="kibDataPluginApi" section="def-server.IFieldType" text="IFieldType"/> | [field_value_lists.tsx#L12](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/common/components/autocomplete/field_value_lists.tsx#L12) | - |
|
||||
| <DocLink id="kibDataPluginApi" section="def-server.IFieldType" text="IFieldType"/> | [field_value_lists.tsx#L20](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/common/components/autocomplete/field_value_lists.tsx#L20) | - |
|
||||
| <DocLink id="kibDataPluginApi" section="def-server.IFieldType" text="IFieldType"/> | [field_value_match_any.tsx#L13](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/common/components/autocomplete/field_value_match_any.tsx#L13) | - |
|
||||
| <DocLink id="kibDataPluginApi" section="def-server.IFieldType" text="IFieldType"/> | [field_value_match_any.tsx#L22](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/common/components/autocomplete/field_value_match_any.tsx#L22) | - |
|
||||
| <DocLink id="kibDataPluginApi" section="def-server.IFieldType" text="IFieldType"/> | [helpers.test.ts#L11](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/common/components/autocomplete/helpers.test.ts#L11) | - |
|
||||
| <DocLink id="kibDataPluginApi" section="def-server.IFieldType" text="IFieldType"/> | [helpers.test.ts#L333](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/common/components/autocomplete/helpers.test.ts#L333) | - |
|
||||
| <DocLink id="kibDataPluginApi" section="def-server.IFieldType" text="IFieldType"/> | [helpers.test.ts#L339](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/common/components/autocomplete/helpers.test.ts#L339) | - |
|
||||
|
@ -1933,10 +1935,8 @@ warning: This document is auto-generated and is meant to be viewed inside our ex
|
|||
| <DocLink id="kibDataPluginApi" section="def-server.IFieldType" text="IFieldType"/> | [helpers.test.ts#L363](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/common/components/autocomplete/helpers.test.ts#L363) | - |
|
||||
| <DocLink id="kibDataPluginApi" section="def-server.IFieldType" text="IFieldType"/> | [helpers.test.ts#L371](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/common/components/autocomplete/helpers.test.ts#L371) | - |
|
||||
| <DocLink id="kibDataPluginApi" section="def-server.IFieldType" text="IFieldType"/> | [helpers.test.ts#L380](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/common/components/autocomplete/helpers.test.ts#L380) | - |
|
||||
| <DocLink id="kibDataPluginApi" section="def-server.IFieldType" text="IFieldType"/> | [operator.tsx#L11](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/common/components/autocomplete/operator.tsx#L11) | - |
|
||||
| <DocLink id="kibDataPluginApi" section="def-server.IFieldType" text="IFieldType"/> | [operator.tsx#L17](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/common/components/autocomplete/operator.tsx#L17) | - |
|
||||
| <DocLink id="kibDataPluginApi" section="def-server.IFieldType" text="IFieldType"/> | [helpers.test.tsx#L43](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/common/components/exceptions/helpers.test.tsx#L43) | - |
|
||||
| <DocLink id="kibDataPluginApi" section="def-server.IFieldType" text="IFieldType"/> | [helpers.test.tsx#L104](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/common/components/exceptions/helpers.test.tsx#L104) | - |
|
||||
| <DocLink id="kibDataPluginApi" section="def-server.IFieldType" text="IFieldType"/> | [helpers.test.d.ts#L1](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/target/types/public/common/components/exceptions/helpers.test.d.ts#L1) | - |
|
||||
| <DocLink id="kibDataPluginApi" section="def-server.IFieldType" text="IFieldType"/> | [helpers.test.d.ts#L2](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/target/types/public/common/components/exceptions/helpers.test.d.ts#L2) | - |
|
||||
| <DocLink id="kibDataPluginApi" section="def-server.IFieldType" text="IFieldType"/> | [index.tsx#L32](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/detections/components/rules/severity_mapping/index.tsx#L32) | - |
|
||||
| <DocLink id="kibDataPluginApi" section="def-server.IFieldType" text="IFieldType"/> | [index.tsx#L86](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/detections/components/rules/severity_mapping/index.tsx#L86) | - |
|
||||
| <DocLink id="kibDataPluginApi" section="def-server.IFieldType" text="IFieldType"/> | [index.tsx#L305](https://github.com/elastic/kibana/tree/master/x-pack/plugins/security_solution/public/detections/components/rules/severity_mapping/index.tsx#L305) | - |
|
||||
|
|
|
@ -1599,13 +1599,6 @@
|
|||
"path": "x-pack/plugins/security/server/authorization/disable_ui_capabilities.ts",
|
||||
"lineNumber": 311
|
||||
}
|
||||
},
|
||||
{
|
||||
"plugin": "beatsManagement",
|
||||
"link": {
|
||||
"path": "x-pack/plugins/beats_management/server/plugin.ts",
|
||||
"lineNumber": 61
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
|
@ -3298,13 +3291,6 @@
|
|||
"path": "x-pack/plugins/security/server/authorization/disable_ui_capabilities.ts",
|
||||
"lineNumber": 311
|
||||
}
|
||||
},
|
||||
{
|
||||
"plugin": "beatsManagement",
|
||||
"link": {
|
||||
"path": "x-pack/plugins/beats_management/server/plugin.ts",
|
||||
"lineNumber": 61
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
|
|
|
@ -8837,7 +8837,7 @@
|
|||
],
|
||||
"source": {
|
||||
"path": "x-pack/plugins/fleet/common/types/models/agent_policy.ts",
|
||||
"lineNumber": 113
|
||||
"lineNumber": 114
|
||||
},
|
||||
"deprecated": false,
|
||||
"children": [
|
||||
|
@ -8855,7 +8855,7 @@
|
|||
],
|
||||
"source": {
|
||||
"path": "x-pack/plugins/fleet/common/types/models/agent_policy.ts",
|
||||
"lineNumber": 117
|
||||
"lineNumber": 118
|
||||
},
|
||||
"deprecated": false
|
||||
},
|
||||
|
@ -8870,7 +8870,7 @@
|
|||
],
|
||||
"source": {
|
||||
"path": "x-pack/plugins/fleet/common/types/models/agent_policy.ts",
|
||||
"lineNumber": 121
|
||||
"lineNumber": 122
|
||||
},
|
||||
"deprecated": false
|
||||
},
|
||||
|
@ -8885,7 +8885,7 @@
|
|||
],
|
||||
"source": {
|
||||
"path": "x-pack/plugins/fleet/common/types/models/agent_policy.ts",
|
||||
"lineNumber": 125
|
||||
"lineNumber": 126
|
||||
},
|
||||
"deprecated": false
|
||||
},
|
||||
|
@ -8900,7 +8900,7 @@
|
|||
],
|
||||
"source": {
|
||||
"path": "x-pack/plugins/fleet/common/types/models/agent_policy.ts",
|
||||
"lineNumber": 129
|
||||
"lineNumber": 130
|
||||
},
|
||||
"deprecated": false
|
||||
},
|
||||
|
@ -8918,7 +8918,7 @@
|
|||
],
|
||||
"source": {
|
||||
"path": "x-pack/plugins/fleet/common/types/models/agent_policy.ts",
|
||||
"lineNumber": 133
|
||||
"lineNumber": 134
|
||||
},
|
||||
"deprecated": false
|
||||
},
|
||||
|
@ -8933,7 +8933,7 @@
|
|||
],
|
||||
"source": {
|
||||
"path": "x-pack/plugins/fleet/common/types/models/agent_policy.ts",
|
||||
"lineNumber": 139
|
||||
"lineNumber": 140
|
||||
},
|
||||
"deprecated": false
|
||||
}
|
||||
|
@ -9085,7 +9085,7 @@
|
|||
"label": "agent",
|
||||
"description": [],
|
||||
"signature": [
|
||||
"{ monitoring: { use_output?: string | undefined; enabled: boolean; metrics: boolean; logs: boolean; }; } | undefined"
|
||||
"{ monitoring: { namespace?: string | undefined; use_output?: string | undefined; enabled: boolean; metrics: boolean; logs: boolean; }; } | undefined"
|
||||
],
|
||||
"source": {
|
||||
"path": "x-pack/plugins/fleet/common/types/models/agent_policy.ts",
|
||||
|
@ -9326,7 +9326,7 @@
|
|||
"description": [],
|
||||
"source": {
|
||||
"path": "x-pack/plugins/fleet/common/types/models/agent_policy.ts",
|
||||
"lineNumber": 102
|
||||
"lineNumber": 103
|
||||
},
|
||||
"deprecated": false,
|
||||
"children": [
|
||||
|
@ -9342,7 +9342,7 @@
|
|||
],
|
||||
"source": {
|
||||
"path": "x-pack/plugins/fleet/common/types/models/agent_policy.ts",
|
||||
"lineNumber": 103
|
||||
"lineNumber": 104
|
||||
},
|
||||
"deprecated": false
|
||||
},
|
||||
|
@ -9355,7 +9355,7 @@
|
|||
"description": [],
|
||||
"source": {
|
||||
"path": "x-pack/plugins/fleet/common/types/models/agent_policy.ts",
|
||||
"lineNumber": 104
|
||||
"lineNumber": 105
|
||||
},
|
||||
"deprecated": false
|
||||
},
|
||||
|
@ -9371,7 +9371,7 @@
|
|||
],
|
||||
"source": {
|
||||
"path": "x-pack/plugins/fleet/common/types/models/agent_policy.ts",
|
||||
"lineNumber": 105
|
||||
"lineNumber": 106
|
||||
},
|
||||
"deprecated": false
|
||||
}
|
||||
|
|
|
@ -953,13 +953,6 @@
|
|||
},
|
||||
"deprecated": true,
|
||||
"references": [
|
||||
{
|
||||
"plugin": "cloud",
|
||||
"link": {
|
||||
"path": "x-pack/plugins/cloud/public/plugin.ts",
|
||||
"lineNumber": 66
|
||||
}
|
||||
},
|
||||
{
|
||||
"plugin": "ml",
|
||||
"link": {
|
||||
|
@ -973,6 +966,13 @@
|
|||
"path": "x-pack/plugins/apm/public/plugin.ts",
|
||||
"lineNumber": 82
|
||||
}
|
||||
},
|
||||
{
|
||||
"plugin": "cloud",
|
||||
"link": {
|
||||
"path": "x-pack/plugins/cloud/public/plugin.ts",
|
||||
"lineNumber": 66
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
|
|
|
@ -3799,7 +3799,7 @@
|
|||
"description": [],
|
||||
"source": {
|
||||
"path": "src/core/public/application/types.ts",
|
||||
"lineNumber": 717
|
||||
"lineNumber": 704
|
||||
},
|
||||
"deprecated": false
|
||||
},
|
||||
|
@ -3822,7 +3822,7 @@
|
|||
],
|
||||
"source": {
|
||||
"path": "src/core/public/application/types.ts",
|
||||
"lineNumber": 717
|
||||
"lineNumber": 704
|
||||
},
|
||||
"deprecated": false
|
||||
}
|
||||
|
|
|
@ -553,90 +553,6 @@
|
|||
},
|
||||
"deprecated": true,
|
||||
"references": [
|
||||
{
|
||||
"plugin": "securitySolution",
|
||||
"link": {
|
||||
"path": "x-pack/plugins/security_solution/common/license/policy_config.test.ts",
|
||||
"lineNumber": 22
|
||||
}
|
||||
},
|
||||
{
|
||||
"plugin": "securitySolution",
|
||||
"link": {
|
||||
"path": "x-pack/plugins/security_solution/common/license/policy_config.test.ts",
|
||||
"lineNumber": 23
|
||||
}
|
||||
},
|
||||
{
|
||||
"plugin": "securitySolution",
|
||||
"link": {
|
||||
"path": "x-pack/plugins/security_solution/common/license/policy_config.test.ts",
|
||||
"lineNumber": 24
|
||||
}
|
||||
},
|
||||
{
|
||||
"plugin": "securitySolution",
|
||||
"link": {
|
||||
"path": "x-pack/plugins/security_solution/public/management/pages/policy/store/policy_details/index.test.ts",
|
||||
"lineNumber": 159
|
||||
}
|
||||
},
|
||||
{
|
||||
"plugin": "securitySolution",
|
||||
"link": {
|
||||
"path": "x-pack/plugins/security_solution/public/management/pages/policy/store/policy_details/index.test.ts",
|
||||
"lineNumber": 161
|
||||
}
|
||||
},
|
||||
{
|
||||
"plugin": "securitySolution",
|
||||
"link": {
|
||||
"path": "x-pack/plugins/security_solution/server/endpoint/lib/policy/license_watch.test.ts",
|
||||
"lineNumber": 42
|
||||
}
|
||||
},
|
||||
{
|
||||
"plugin": "securitySolution",
|
||||
"link": {
|
||||
"path": "x-pack/plugins/security_solution/server/endpoint/lib/policy/license_watch.test.ts",
|
||||
"lineNumber": 43
|
||||
}
|
||||
},
|
||||
{
|
||||
"plugin": "securitySolution",
|
||||
"link": {
|
||||
"path": "x-pack/plugins/security_solution/server/endpoint/lib/policy/license_watch.test.ts",
|
||||
"lineNumber": 44
|
||||
}
|
||||
},
|
||||
{
|
||||
"plugin": "securitySolution",
|
||||
"link": {
|
||||
"path": "x-pack/plugins/security_solution/server/endpoint/routes/actions/isolation.test.ts",
|
||||
"lineNumber": 54
|
||||
}
|
||||
},
|
||||
{
|
||||
"plugin": "securitySolution",
|
||||
"link": {
|
||||
"path": "x-pack/plugins/security_solution/server/endpoint/routes/actions/isolation.test.ts",
|
||||
"lineNumber": 55
|
||||
}
|
||||
},
|
||||
{
|
||||
"plugin": "securitySolution",
|
||||
"link": {
|
||||
"path": "x-pack/plugins/security_solution/server/fleet_integration/fleet_integration.test.ts",
|
||||
"lineNumber": 47
|
||||
}
|
||||
},
|
||||
{
|
||||
"plugin": "securitySolution",
|
||||
"link": {
|
||||
"path": "x-pack/plugins/security_solution/server/fleet_integration/fleet_integration.test.ts",
|
||||
"lineNumber": 48
|
||||
}
|
||||
},
|
||||
{
|
||||
"plugin": "apm",
|
||||
"link": {
|
||||
|
@ -741,6 +657,90 @@
|
|||
"path": "x-pack/plugins/security/common/licensing/license_service.test.ts",
|
||||
"lineNumber": 219
|
||||
}
|
||||
},
|
||||
{
|
||||
"plugin": "securitySolution",
|
||||
"link": {
|
||||
"path": "x-pack/plugins/security_solution/common/license/policy_config.test.ts",
|
||||
"lineNumber": 22
|
||||
}
|
||||
},
|
||||
{
|
||||
"plugin": "securitySolution",
|
||||
"link": {
|
||||
"path": "x-pack/plugins/security_solution/common/license/policy_config.test.ts",
|
||||
"lineNumber": 23
|
||||
}
|
||||
},
|
||||
{
|
||||
"plugin": "securitySolution",
|
||||
"link": {
|
||||
"path": "x-pack/plugins/security_solution/common/license/policy_config.test.ts",
|
||||
"lineNumber": 24
|
||||
}
|
||||
},
|
||||
{
|
||||
"plugin": "securitySolution",
|
||||
"link": {
|
||||
"path": "x-pack/plugins/security_solution/server/fleet_integration/fleet_integration.test.ts",
|
||||
"lineNumber": 47
|
||||
}
|
||||
},
|
||||
{
|
||||
"plugin": "securitySolution",
|
||||
"link": {
|
||||
"path": "x-pack/plugins/security_solution/server/fleet_integration/fleet_integration.test.ts",
|
||||
"lineNumber": 48
|
||||
}
|
||||
},
|
||||
{
|
||||
"plugin": "securitySolution",
|
||||
"link": {
|
||||
"path": "x-pack/plugins/security_solution/server/endpoint/lib/policy/license_watch.test.ts",
|
||||
"lineNumber": 42
|
||||
}
|
||||
},
|
||||
{
|
||||
"plugin": "securitySolution",
|
||||
"link": {
|
||||
"path": "x-pack/plugins/security_solution/server/endpoint/lib/policy/license_watch.test.ts",
|
||||
"lineNumber": 43
|
||||
}
|
||||
},
|
||||
{
|
||||
"plugin": "securitySolution",
|
||||
"link": {
|
||||
"path": "x-pack/plugins/security_solution/server/endpoint/lib/policy/license_watch.test.ts",
|
||||
"lineNumber": 44
|
||||
}
|
||||
},
|
||||
{
|
||||
"plugin": "securitySolution",
|
||||
"link": {
|
||||
"path": "x-pack/plugins/security_solution/server/endpoint/routes/actions/isolation.test.ts",
|
||||
"lineNumber": 54
|
||||
}
|
||||
},
|
||||
{
|
||||
"plugin": "securitySolution",
|
||||
"link": {
|
||||
"path": "x-pack/plugins/security_solution/server/endpoint/routes/actions/isolation.test.ts",
|
||||
"lineNumber": 55
|
||||
}
|
||||
},
|
||||
{
|
||||
"plugin": "securitySolution",
|
||||
"link": {
|
||||
"path": "x-pack/plugins/security_solution/public/management/pages/policy/store/policy_details/index.test.ts",
|
||||
"lineNumber": 159
|
||||
}
|
||||
},
|
||||
{
|
||||
"plugin": "securitySolution",
|
||||
"link": {
|
||||
"path": "x-pack/plugins/security_solution/public/management/pages/policy/store/policy_details/index.test.ts",
|
||||
"lineNumber": 161
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
|
@ -941,41 +941,6 @@
|
|||
},
|
||||
"deprecated": true,
|
||||
"references": [
|
||||
{
|
||||
"plugin": "security",
|
||||
"link": {
|
||||
"path": "x-pack/plugins/security/public/plugin.tsx",
|
||||
"lineNumber": 82
|
||||
}
|
||||
},
|
||||
{
|
||||
"plugin": "licenseManagement",
|
||||
"link": {
|
||||
"path": "x-pack/plugins/license_management/public/plugin.ts",
|
||||
"lineNumber": 61
|
||||
}
|
||||
},
|
||||
{
|
||||
"plugin": "ml",
|
||||
"link": {
|
||||
"path": "x-pack/plugins/ml/public/application/license/check_license.tsx",
|
||||
"lineNumber": 26
|
||||
}
|
||||
},
|
||||
{
|
||||
"plugin": "ml",
|
||||
"link": {
|
||||
"path": "x-pack/plugins/ml/public/plugin.ts",
|
||||
"lineNumber": 136
|
||||
}
|
||||
},
|
||||
{
|
||||
"plugin": "fleet",
|
||||
"link": {
|
||||
"path": "x-pack/plugins/fleet/public/plugin.ts",
|
||||
"lineNumber": 97
|
||||
}
|
||||
},
|
||||
{
|
||||
"plugin": "reporting",
|
||||
"link": {
|
||||
|
@ -1011,6 +976,34 @@
|
|||
"lineNumber": 61
|
||||
}
|
||||
},
|
||||
{
|
||||
"plugin": "licenseManagement",
|
||||
"link": {
|
||||
"path": "x-pack/plugins/license_management/public/plugin.ts",
|
||||
"lineNumber": 61
|
||||
}
|
||||
},
|
||||
{
|
||||
"plugin": "security",
|
||||
"link": {
|
||||
"path": "x-pack/plugins/security/public/plugin.tsx",
|
||||
"lineNumber": 82
|
||||
}
|
||||
},
|
||||
{
|
||||
"plugin": "ml",
|
||||
"link": {
|
||||
"path": "x-pack/plugins/ml/public/application/license/check_license.tsx",
|
||||
"lineNumber": 26
|
||||
}
|
||||
},
|
||||
{
|
||||
"plugin": "ml",
|
||||
"link": {
|
||||
"path": "x-pack/plugins/ml/public/plugin.ts",
|
||||
"lineNumber": 136
|
||||
}
|
||||
},
|
||||
{
|
||||
"plugin": "apm",
|
||||
"link": {
|
||||
|
@ -1018,13 +1011,6 @@
|
|||
"lineNumber": 19
|
||||
}
|
||||
},
|
||||
{
|
||||
"plugin": "beatsManagement",
|
||||
"link": {
|
||||
"path": "x-pack/plugins/beats_management/public/lib/adapters/framework/kibana_framework_adapter.ts",
|
||||
"lineNumber": 65
|
||||
}
|
||||
},
|
||||
{
|
||||
"plugin": "crossClusterReplication",
|
||||
"link": {
|
||||
|
@ -1032,6 +1018,13 @@
|
|||
"lineNumber": 75
|
||||
}
|
||||
},
|
||||
{
|
||||
"plugin": "fleet",
|
||||
"link": {
|
||||
"path": "x-pack/plugins/fleet/public/plugin.ts",
|
||||
"lineNumber": 97
|
||||
}
|
||||
},
|
||||
{
|
||||
"plugin": "logstash",
|
||||
"link": {
|
||||
|
@ -2649,90 +2642,6 @@
|
|||
},
|
||||
"deprecated": true,
|
||||
"references": [
|
||||
{
|
||||
"plugin": "securitySolution",
|
||||
"link": {
|
||||
"path": "x-pack/plugins/security_solution/common/license/policy_config.test.ts",
|
||||
"lineNumber": 22
|
||||
}
|
||||
},
|
||||
{
|
||||
"plugin": "securitySolution",
|
||||
"link": {
|
||||
"path": "x-pack/plugins/security_solution/common/license/policy_config.test.ts",
|
||||
"lineNumber": 23
|
||||
}
|
||||
},
|
||||
{
|
||||
"plugin": "securitySolution",
|
||||
"link": {
|
||||
"path": "x-pack/plugins/security_solution/common/license/policy_config.test.ts",
|
||||
"lineNumber": 24
|
||||
}
|
||||
},
|
||||
{
|
||||
"plugin": "securitySolution",
|
||||
"link": {
|
||||
"path": "x-pack/plugins/security_solution/public/management/pages/policy/store/policy_details/index.test.ts",
|
||||
"lineNumber": 159
|
||||
}
|
||||
},
|
||||
{
|
||||
"plugin": "securitySolution",
|
||||
"link": {
|
||||
"path": "x-pack/plugins/security_solution/public/management/pages/policy/store/policy_details/index.test.ts",
|
||||
"lineNumber": 161
|
||||
}
|
||||
},
|
||||
{
|
||||
"plugin": "securitySolution",
|
||||
"link": {
|
||||
"path": "x-pack/plugins/security_solution/server/endpoint/lib/policy/license_watch.test.ts",
|
||||
"lineNumber": 42
|
||||
}
|
||||
},
|
||||
{
|
||||
"plugin": "securitySolution",
|
||||
"link": {
|
||||
"path": "x-pack/plugins/security_solution/server/endpoint/lib/policy/license_watch.test.ts",
|
||||
"lineNumber": 43
|
||||
}
|
||||
},
|
||||
{
|
||||
"plugin": "securitySolution",
|
||||
"link": {
|
||||
"path": "x-pack/plugins/security_solution/server/endpoint/lib/policy/license_watch.test.ts",
|
||||
"lineNumber": 44
|
||||
}
|
||||
},
|
||||
{
|
||||
"plugin": "securitySolution",
|
||||
"link": {
|
||||
"path": "x-pack/plugins/security_solution/server/endpoint/routes/actions/isolation.test.ts",
|
||||
"lineNumber": 54
|
||||
}
|
||||
},
|
||||
{
|
||||
"plugin": "securitySolution",
|
||||
"link": {
|
||||
"path": "x-pack/plugins/security_solution/server/endpoint/routes/actions/isolation.test.ts",
|
||||
"lineNumber": 55
|
||||
}
|
||||
},
|
||||
{
|
||||
"plugin": "securitySolution",
|
||||
"link": {
|
||||
"path": "x-pack/plugins/security_solution/server/fleet_integration/fleet_integration.test.ts",
|
||||
"lineNumber": 47
|
||||
}
|
||||
},
|
||||
{
|
||||
"plugin": "securitySolution",
|
||||
"link": {
|
||||
"path": "x-pack/plugins/security_solution/server/fleet_integration/fleet_integration.test.ts",
|
||||
"lineNumber": 48
|
||||
}
|
||||
},
|
||||
{
|
||||
"plugin": "apm",
|
||||
"link": {
|
||||
|
@ -2837,6 +2746,90 @@
|
|||
"path": "x-pack/plugins/security/common/licensing/license_service.test.ts",
|
||||
"lineNumber": 219
|
||||
}
|
||||
},
|
||||
{
|
||||
"plugin": "securitySolution",
|
||||
"link": {
|
||||
"path": "x-pack/plugins/security_solution/common/license/policy_config.test.ts",
|
||||
"lineNumber": 22
|
||||
}
|
||||
},
|
||||
{
|
||||
"plugin": "securitySolution",
|
||||
"link": {
|
||||
"path": "x-pack/plugins/security_solution/common/license/policy_config.test.ts",
|
||||
"lineNumber": 23
|
||||
}
|
||||
},
|
||||
{
|
||||
"plugin": "securitySolution",
|
||||
"link": {
|
||||
"path": "x-pack/plugins/security_solution/common/license/policy_config.test.ts",
|
||||
"lineNumber": 24
|
||||
}
|
||||
},
|
||||
{
|
||||
"plugin": "securitySolution",
|
||||
"link": {
|
||||
"path": "x-pack/plugins/security_solution/server/fleet_integration/fleet_integration.test.ts",
|
||||
"lineNumber": 47
|
||||
}
|
||||
},
|
||||
{
|
||||
"plugin": "securitySolution",
|
||||
"link": {
|
||||
"path": "x-pack/plugins/security_solution/server/fleet_integration/fleet_integration.test.ts",
|
||||
"lineNumber": 48
|
||||
}
|
||||
},
|
||||
{
|
||||
"plugin": "securitySolution",
|
||||
"link": {
|
||||
"path": "x-pack/plugins/security_solution/server/endpoint/lib/policy/license_watch.test.ts",
|
||||
"lineNumber": 42
|
||||
}
|
||||
},
|
||||
{
|
||||
"plugin": "securitySolution",
|
||||
"link": {
|
||||
"path": "x-pack/plugins/security_solution/server/endpoint/lib/policy/license_watch.test.ts",
|
||||
"lineNumber": 43
|
||||
}
|
||||
},
|
||||
{
|
||||
"plugin": "securitySolution",
|
||||
"link": {
|
||||
"path": "x-pack/plugins/security_solution/server/endpoint/lib/policy/license_watch.test.ts",
|
||||
"lineNumber": 44
|
||||
}
|
||||
},
|
||||
{
|
||||
"plugin": "securitySolution",
|
||||
"link": {
|
||||
"path": "x-pack/plugins/security_solution/server/endpoint/routes/actions/isolation.test.ts",
|
||||
"lineNumber": 54
|
||||
}
|
||||
},
|
||||
{
|
||||
"plugin": "securitySolution",
|
||||
"link": {
|
||||
"path": "x-pack/plugins/security_solution/server/endpoint/routes/actions/isolation.test.ts",
|
||||
"lineNumber": 55
|
||||
}
|
||||
},
|
||||
{
|
||||
"plugin": "securitySolution",
|
||||
"link": {
|
||||
"path": "x-pack/plugins/security_solution/public/management/pages/policy/store/policy_details/index.test.ts",
|
||||
"lineNumber": 159
|
||||
}
|
||||
},
|
||||
{
|
||||
"plugin": "securitySolution",
|
||||
"link": {
|
||||
"path": "x-pack/plugins/security_solution/public/management/pages/policy/store/policy_details/index.test.ts",
|
||||
"lineNumber": 161
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
|
@ -3060,7 +3053,7 @@
|
|||
"plugin": "spaces",
|
||||
"link": {
|
||||
"path": "x-pack/plugins/spaces/server/usage_collection/spaces_usage_collector.ts",
|
||||
"lineNumber": 442
|
||||
"lineNumber": 431
|
||||
}
|
||||
},
|
||||
{
|
||||
|
@ -3126,13 +3119,6 @@
|
|||
"lineNumber": 139
|
||||
}
|
||||
},
|
||||
{
|
||||
"plugin": "fleet",
|
||||
"link": {
|
||||
"path": "x-pack/plugins/fleet/server/plugin.ts",
|
||||
"lineNumber": 213
|
||||
}
|
||||
},
|
||||
{
|
||||
"plugin": "indexManagement",
|
||||
"link": {
|
||||
|
@ -3147,6 +3133,13 @@
|
|||
"lineNumber": 73
|
||||
}
|
||||
},
|
||||
{
|
||||
"plugin": "fleet",
|
||||
"link": {
|
||||
"path": "x-pack/plugins/fleet/server/plugin.ts",
|
||||
"lineNumber": 213
|
||||
}
|
||||
},
|
||||
{
|
||||
"plugin": "graph",
|
||||
"link": {
|
||||
|
|
1359
api_docs/lists.json
1359
api_docs/lists.json
File diff suppressed because one or more lines are too long
|
@ -22,15 +22,9 @@ import listsObj from './lists.json';
|
|||
### Objects
|
||||
<DocDefinitionList data={listsObj.client.objects}/>
|
||||
|
||||
### Functions
|
||||
<DocDefinitionList data={listsObj.client.functions}/>
|
||||
|
||||
### Classes
|
||||
<DocDefinitionList data={listsObj.client.classes}/>
|
||||
|
||||
### Interfaces
|
||||
<DocDefinitionList data={listsObj.client.interfaces}/>
|
||||
|
||||
## Server
|
||||
|
||||
### Classes
|
||||
|
@ -39,11 +33,3 @@ import listsObj from './lists.json';
|
|||
### Interfaces
|
||||
<DocDefinitionList data={listsObj.server.interfaces}/>
|
||||
|
||||
## Common
|
||||
|
||||
### Functions
|
||||
<DocDefinitionList data={listsObj.common.functions}/>
|
||||
|
||||
### Consts, variables and types
|
||||
<DocDefinitionList data={listsObj.common.misc}/>
|
||||
|
||||
|
|
|
@ -22,7 +22,7 @@
|
|||
],
|
||||
"source": {
|
||||
"path": "src/plugins/management/public/utils/management_app.ts",
|
||||
"lineNumber": 19
|
||||
"lineNumber": 18
|
||||
},
|
||||
"deprecated": false,
|
||||
"children": [
|
||||
|
@ -50,7 +50,7 @@
|
|||
],
|
||||
"source": {
|
||||
"path": "src/plugins/management/public/utils/management_app.ts",
|
||||
"lineNumber": 20
|
||||
"lineNumber": 19
|
||||
},
|
||||
"deprecated": false,
|
||||
"returnComment": [],
|
||||
|
@ -88,29 +88,23 @@
|
|||
"description": [],
|
||||
"source": {
|
||||
"path": "src/plugins/management/public/utils/management_app.ts",
|
||||
"lineNumber": 21
|
||||
"lineNumber": 20
|
||||
},
|
||||
"deprecated": false
|
||||
},
|
||||
{
|
||||
"parentPluginId": "management",
|
||||
"id": "def-public.ManagementApp.meta",
|
||||
"type": "Object",
|
||||
"id": "def-public.ManagementApp.keywords",
|
||||
"type": "Array",
|
||||
"tags": [],
|
||||
"label": "meta",
|
||||
"label": "keywords",
|
||||
"description": [],
|
||||
"signature": [
|
||||
{
|
||||
"pluginId": "core",
|
||||
"scope": "public",
|
||||
"docId": "kibCoreApplicationPluginApi",
|
||||
"section": "def-public.AppMeta",
|
||||
"text": "AppMeta"
|
||||
}
|
||||
"string[]"
|
||||
],
|
||||
"source": {
|
||||
"path": "src/plugins/management/public/utils/management_app.ts",
|
||||
"lineNumber": 22
|
||||
"lineNumber": 21
|
||||
},
|
||||
"deprecated": false
|
||||
},
|
||||
|
@ -126,7 +120,7 @@
|
|||
],
|
||||
"source": {
|
||||
"path": "src/plugins/management/public/utils/management_app.ts",
|
||||
"lineNumber": 24
|
||||
"lineNumber": 23
|
||||
},
|
||||
"deprecated": false,
|
||||
"children": [
|
||||
|
@ -148,7 +142,7 @@
|
|||
],
|
||||
"source": {
|
||||
"path": "src/plugins/management/public/utils/management_app.ts",
|
||||
"lineNumber": 24
|
||||
"lineNumber": 23
|
||||
},
|
||||
"deprecated": false,
|
||||
"isRequired": true
|
||||
|
@ -260,7 +254,7 @@
|
|||
"section": "def-public.RegisterManagementAppArgs",
|
||||
"text": "RegisterManagementAppArgs"
|
||||
},
|
||||
", \"title\" | \"id\" | \"meta\" | \"order\" | \"mount\" | \"euiIconType\" | \"icon\" | \"tip\">) => ",
|
||||
", \"title\" | \"id\" | \"order\" | \"mount\" | \"keywords\" | \"euiIconType\" | \"icon\" | \"tip\">) => ",
|
||||
{
|
||||
"pluginId": "management",
|
||||
"scope": "public",
|
||||
|
@ -291,7 +285,7 @@
|
|||
"section": "def-public.RegisterManagementAppArgs",
|
||||
"text": "RegisterManagementAppArgs"
|
||||
},
|
||||
", \"title\" | \"id\" | \"meta\" | \"order\" | \"mount\" | \"euiIconType\" | \"icon\" | \"tip\">"
|
||||
", \"title\" | \"id\" | \"order\" | \"mount\" | \"keywords\" | \"euiIconType\" | \"icon\" | \"tip\">"
|
||||
],
|
||||
"source": {
|
||||
"path": "src/plugins/management/public/utils/management_section.ts",
|
||||
|
@ -653,7 +647,7 @@
|
|||
],
|
||||
"source": {
|
||||
"path": "src/plugins/management/public/utils/management_app.ts",
|
||||
"lineNumber": 13
|
||||
"lineNumber": 12
|
||||
},
|
||||
"deprecated": false,
|
||||
"children": [
|
||||
|
@ -681,7 +675,7 @@
|
|||
],
|
||||
"source": {
|
||||
"path": "src/plugins/management/public/utils/management_app.ts",
|
||||
"lineNumber": 14
|
||||
"lineNumber": 13
|
||||
},
|
||||
"deprecated": false,
|
||||
"returnComment": [],
|
||||
|
@ -719,30 +713,23 @@
|
|||
"description": [],
|
||||
"source": {
|
||||
"path": "src/plugins/management/public/utils/management_app.ts",
|
||||
"lineNumber": 15
|
||||
"lineNumber": 14
|
||||
},
|
||||
"deprecated": false
|
||||
},
|
||||
{
|
||||
"parentPluginId": "management",
|
||||
"id": "def-public.RegisterManagementAppArgs.meta",
|
||||
"type": "Object",
|
||||
"id": "def-public.RegisterManagementAppArgs.keywords",
|
||||
"type": "Array",
|
||||
"tags": [],
|
||||
"label": "meta",
|
||||
"label": "keywords",
|
||||
"description": [],
|
||||
"signature": [
|
||||
{
|
||||
"pluginId": "core",
|
||||
"scope": "public",
|
||||
"docId": "kibCoreApplicationPluginApi",
|
||||
"section": "def-public.AppMeta",
|
||||
"text": "AppMeta"
|
||||
},
|
||||
" | undefined"
|
||||
"string[] | undefined"
|
||||
],
|
||||
"source": {
|
||||
"path": "src/plugins/management/public/utils/management_app.ts",
|
||||
"lineNumber": 16
|
||||
"lineNumber": 15
|
||||
},
|
||||
"deprecated": false
|
||||
}
|
||||
|
|
|
@ -1320,7 +1320,7 @@
|
|||
},
|
||||
" extends Pick<",
|
||||
"UseDataGridReturnType",
|
||||
", \"status\" | \"errorMessage\" | \"baseline\" | \"pagination\" | \"chartsVisible\" | \"chartsButtonVisible\" | \"ccsWarning\" | \"columnsWithCharts\" | \"invalidSortingColumnns\" | \"noDataMessage\" | \"onChangeItemsPerPage\" | \"onChangePage\" | \"onSort\" | \"setPagination\" | \"setVisibleColumns\" | \"rowCount\" | \"rowCountRelation\" | \"sortingColumns\" | \"tableItems\" | \"toggleChartVisibility\" | \"visibleColumns\" | \"predictionFieldName\" | \"resultsField\">"
|
||||
", \"status\" | \"errorMessage\" | \"baseline\" | \"chartsVisible\" | \"chartsButtonVisible\" | \"ccsWarning\" | \"columnsWithCharts\" | \"invalidSortingColumnns\" | \"noDataMessage\" | \"onChangeItemsPerPage\" | \"onChangePage\" | \"onSort\" | \"pagination\" | \"setPagination\" | \"setVisibleColumns\" | \"rowCount\" | \"rowCountRelation\" | \"sortingColumns\" | \"tableItems\" | \"toggleChartVisibility\" | \"visibleColumns\" | \"predictionFieldName\" | \"resultsField\">"
|
||||
],
|
||||
"source": {
|
||||
"path": "x-pack/plugins/ml/public/application/components/data_grid/types.ts",
|
||||
|
|
|
@ -680,20 +680,6 @@
|
|||
},
|
||||
"deprecated": true,
|
||||
"references": [
|
||||
{
|
||||
"plugin": "visualizations",
|
||||
"link": {
|
||||
"path": "src/plugins/visualizations/public/saved_visualizations/find_list_items.ts",
|
||||
"lineNumber": 16
|
||||
}
|
||||
},
|
||||
{
|
||||
"plugin": "visualizations",
|
||||
"link": {
|
||||
"path": "src/plugins/visualizations/public/saved_visualizations/find_list_items.ts",
|
||||
"lineNumber": 35
|
||||
}
|
||||
},
|
||||
{
|
||||
"plugin": "discover",
|
||||
"link": {
|
||||
|
@ -722,6 +708,20 @@
|
|||
"lineNumber": 88
|
||||
}
|
||||
},
|
||||
{
|
||||
"plugin": "visualizations",
|
||||
"link": {
|
||||
"path": "src/plugins/visualizations/public/saved_visualizations/find_list_items.ts",
|
||||
"lineNumber": 16
|
||||
}
|
||||
},
|
||||
{
|
||||
"plugin": "visualizations",
|
||||
"link": {
|
||||
"path": "src/plugins/visualizations/public/saved_visualizations/find_list_items.ts",
|
||||
"lineNumber": 35
|
||||
}
|
||||
},
|
||||
{
|
||||
"plugin": "visualizations",
|
||||
"link": {
|
||||
|
@ -2568,20 +2568,6 @@
|
|||
"lineNumber": 14
|
||||
}
|
||||
},
|
||||
{
|
||||
"plugin": "visualizations",
|
||||
"link": {
|
||||
"path": "src/plugins/visualizations/public/types.ts",
|
||||
"lineNumber": 9
|
||||
}
|
||||
},
|
||||
{
|
||||
"plugin": "visualizations",
|
||||
"link": {
|
||||
"path": "src/plugins/visualizations/public/types.ts",
|
||||
"lineNumber": 41
|
||||
}
|
||||
},
|
||||
{
|
||||
"plugin": "discover",
|
||||
"link": {
|
||||
|
@ -2596,6 +2582,20 @@
|
|||
"lineNumber": 61
|
||||
}
|
||||
},
|
||||
{
|
||||
"plugin": "visualizations",
|
||||
"link": {
|
||||
"path": "src/plugins/visualizations/public/types.ts",
|
||||
"lineNumber": 9
|
||||
}
|
||||
},
|
||||
{
|
||||
"plugin": "visualizations",
|
||||
"link": {
|
||||
"path": "src/plugins/visualizations/public/types.ts",
|
||||
"lineNumber": 41
|
||||
}
|
||||
},
|
||||
{
|
||||
"plugin": "visualizations",
|
||||
"link": {
|
||||
|
|
|
@ -1306,13 +1306,6 @@
|
|||
"lineNumber": 444
|
||||
}
|
||||
},
|
||||
{
|
||||
"plugin": "cases",
|
||||
"link": {
|
||||
"path": "x-pack/plugins/cases/server/plugin.ts",
|
||||
"lineNumber": 89
|
||||
}
|
||||
},
|
||||
{
|
||||
"plugin": "ml",
|
||||
"link": {
|
||||
|
@ -1321,31 +1314,10 @@
|
|||
}
|
||||
},
|
||||
{
|
||||
"plugin": "securitySolution",
|
||||
"plugin": "cases",
|
||||
"link": {
|
||||
"path": "x-pack/plugins/security_solution/server/lib/detection_engine/routes/signals/create_signals_migration_route.ts",
|
||||
"lineNumber": 48
|
||||
}
|
||||
},
|
||||
{
|
||||
"plugin": "securitySolution",
|
||||
"link": {
|
||||
"path": "x-pack/plugins/security_solution/server/lib/detection_engine/routes/signals/delete_signals_migration_route.ts",
|
||||
"lineNumber": 45
|
||||
}
|
||||
},
|
||||
{
|
||||
"plugin": "securitySolution",
|
||||
"link": {
|
||||
"path": "x-pack/plugins/security_solution/server/lib/detection_engine/routes/signals/finalize_signals_migration_route.ts",
|
||||
"lineNumber": 45
|
||||
}
|
||||
},
|
||||
{
|
||||
"plugin": "beatsManagement",
|
||||
"link": {
|
||||
"path": "x-pack/plugins/beats_management/server/lib/adapters/framework/kibana_framework_adapter.ts",
|
||||
"lineNumber": 44
|
||||
"path": "x-pack/plugins/cases/server/plugin.ts",
|
||||
"lineNumber": 89
|
||||
}
|
||||
},
|
||||
{
|
||||
|
@ -1369,6 +1341,27 @@
|
|||
"lineNumber": 41
|
||||
}
|
||||
},
|
||||
{
|
||||
"plugin": "securitySolution",
|
||||
"link": {
|
||||
"path": "x-pack/plugins/security_solution/server/lib/detection_engine/routes/signals/create_signals_migration_route.ts",
|
||||
"lineNumber": 48
|
||||
}
|
||||
},
|
||||
{
|
||||
"plugin": "securitySolution",
|
||||
"link": {
|
||||
"path": "x-pack/plugins/security_solution/server/lib/detection_engine/routes/signals/delete_signals_migration_route.ts",
|
||||
"lineNumber": 45
|
||||
}
|
||||
},
|
||||
{
|
||||
"plugin": "securitySolution",
|
||||
"link": {
|
||||
"path": "x-pack/plugins/security_solution/server/lib/detection_engine/routes/signals/finalize_signals_migration_route.ts",
|
||||
"lineNumber": 45
|
||||
}
|
||||
},
|
||||
{
|
||||
"plugin": "securitySolution",
|
||||
"link": {
|
||||
|
|
|
@ -1213,13 +1213,6 @@
|
|||
"lineNumber": 271
|
||||
}
|
||||
},
|
||||
{
|
||||
"plugin": "securitySolution",
|
||||
"link": {
|
||||
"path": "x-pack/plugins/security_solution/server/plugin.ts",
|
||||
"lineNumber": 194
|
||||
}
|
||||
},
|
||||
{
|
||||
"plugin": "apm",
|
||||
"link": {
|
||||
|
@ -1248,6 +1241,13 @@
|
|||
"lineNumber": 153
|
||||
}
|
||||
},
|
||||
{
|
||||
"plugin": "securitySolution",
|
||||
"link": {
|
||||
"path": "x-pack/plugins/security_solution/server/plugin.ts",
|
||||
"lineNumber": 194
|
||||
}
|
||||
},
|
||||
{
|
||||
"plugin": "security",
|
||||
"link": {
|
||||
|
@ -2047,13 +2047,6 @@
|
|||
"lineNumber": 303
|
||||
}
|
||||
},
|
||||
{
|
||||
"plugin": "securitySolution",
|
||||
"link": {
|
||||
"path": "x-pack/plugins/security_solution/server/plugin.ts",
|
||||
"lineNumber": 194
|
||||
}
|
||||
},
|
||||
{
|
||||
"plugin": "apm",
|
||||
"link": {
|
||||
|
@ -2088,6 +2081,13 @@
|
|||
"path": "x-pack/plugins/infra/server/plugin.ts",
|
||||
"lineNumber": 153
|
||||
}
|
||||
},
|
||||
{
|
||||
"plugin": "securitySolution",
|
||||
"link": {
|
||||
"path": "x-pack/plugins/security_solution/server/plugin.ts",
|
||||
"lineNumber": 194
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
|
|
|
@ -332,11 +332,6 @@ which will load the visualization's editor.
|
|||
|Allow to add a header banner that will be displayed on every page of the Kibana application
|
||||
|
||||
|
||||
|{kib-repo}blob/{branch}/x-pack/plugins/beats_management/readme.md[beatsManagement]
|
||||
|Notes:
|
||||
Failure to have auth enabled in Kibana will make for a broken UI. UI-based errors not yet in place
|
||||
|
||||
|
||||
|{kib-repo}blob/{branch}/x-pack/plugins/canvas/README.md[canvas]
|
||||
|"Never look back. The past is done. The future is a blank canvas." ― Suzy Kassem, Rise Up and Salute the Sun
|
||||
|
||||
|
|
|
@ -1,108 +0,0 @@
|
|||
[[managing-beats]]
|
||||
[role="xpack"]
|
||||
== {beats} Central Management
|
||||
|
||||
include::{asciidoc-dir}/../../shared/discontinued.asciidoc[tag=cm-discontinued]
|
||||
|
||||
To use {beats} Central Management, open the main menu, click *Stack Management >
|
||||
{beats} Central Management*, then define and
|
||||
manage configurations in a central location in {kib} and quickly deploy
|
||||
configuration changes to all {beats} running across your enterprise. For more
|
||||
about central management, see the related {beats} documentation:
|
||||
|
||||
* {filebeat-ref}/configuration-central-management.html[{filebeat} documentation]
|
||||
* {metricbeat-ref}/configuration-central-management.html[{metricbeat} documentation]
|
||||
|
||||
[NOTE]
|
||||
====
|
||||
This feature requires an Elastic license that includes {beats} central
|
||||
management.
|
||||
|
||||
Don't have a license? You can start a 30-day trial. Open the main menu, then
|
||||
click *Stack Management > License Management*. At the end of the trial
|
||||
period, you can purchase a subscription to keep using central management. For
|
||||
more information, see https://www.elastic.co/subscriptions and
|
||||
<<managing-licenses>>.
|
||||
====
|
||||
|
||||
{kib} makes it easy for you to use central management by walking you through the
|
||||
enrollment and configuration process step by step the first time you use the
|
||||
Central Management UI.
|
||||
|
||||
[float]
|
||||
=== Required permissions
|
||||
|
||||
You must have the `beats_admin` role assigned to use **{beats} Central Management**
|
||||
|
||||
To assign the role, open the menu, then click *Stack Management > Users*.
|
||||
|
||||
|
||||
[float]
|
||||
=== Enroll {beats}
|
||||
|
||||
You need to enroll {beats} to register them in central management and establish
|
||||
trust. Enrolled {beats} will have the credentials needed to retrieve
|
||||
configurations from {kib}.
|
||||
|
||||
[float]
|
||||
=== Create configuration tags
|
||||
|
||||
A _configuration tag_ is a group of configuration blocks that you can apply to
|
||||
one or more {beats}. For example, you can create a tag called `development` to
|
||||
group configurations for {beats} running in your development environment.
|
||||
|
||||
The first time you walk through the enrollment process, you'll create a
|
||||
configuration tag that's applied to the {beats} instance you're enrolling.
|
||||
|
||||
After that, under *Configuration tags*, you can create additional tags and
|
||||
apply them to any enrolled {beats}, and the {beats} will use the configurations
|
||||
defined in the tag.
|
||||
|
||||
[float]
|
||||
=== Add configuration blocks
|
||||
|
||||
Add one or more configuration blocks to the tag. A tag can have configuration
|
||||
blocks for different types of {beats}. When the enrolled {beats} run, they will
|
||||
use the configuration blocks that are valid for their type.
|
||||
|
||||
Central management supports configuration settings for:
|
||||
|
||||
* {filebeat} modules
|
||||
* {metricbeat} modules
|
||||
* {filebeat} inputs
|
||||
* {filebeat} and {metricbeat} outputs
|
||||
|
||||
NOTE: Central management supports the following outputs only: {es}, {ls}, Kafka,
|
||||
and Redis. Other output types are not supported for {beats} that are enrolled in
|
||||
central management.
|
||||
|
||||
Use the Central Management UI to define and manage settings for supported
|
||||
configuration blocks. You cannot define those settings in local {beats}
|
||||
configuration files. For configuration blocks that are not supported by central
|
||||
management, configure the settings in the local configuration file after
|
||||
enrolling the Beat in central management.
|
||||
|
||||
[float]
|
||||
=== Manage enrolled {beats}
|
||||
|
||||
Under *Enrolled {beats}*, you can view the list of enrolled {beats} to see
|
||||
details, including the type, applied tags, configuration status, and the last
|
||||
configuration update. Click the *Beat name* or *Type* column heading to sort the
|
||||
list. To filter the list, enter a search string. If there are errors in a
|
||||
configuration, you’ll see an Error status in the Central Management UI and need
|
||||
to look at {beats} logs to troubleshoot the problem.
|
||||
|
||||
You can add or remove tags, and the configuration changes are automatically
|
||||
deployed to all {beats} that have the tag. Avoid applying tags with conflicting
|
||||
configurations. Because the configurations for all assigned tags are merged,
|
||||
conflicting configurations result in errors.
|
||||
|
||||
You can unenroll {beats} to remove them from central management.
|
||||
|
||||
[float]
|
||||
=== Manage tags
|
||||
|
||||
Under *Configuration tags*, you can select tags and delete them, or you can
|
||||
drill down into a tag to add, modify, or remove configuration blocks from the
|
||||
tag. When you change the configuration blocks or remove tags, the configuration
|
||||
changes are automatically deployed to all {beats} that have the tag.
|
|
@ -24,10 +24,6 @@ and enrichments on your data.
|
|||
| {logstash-ref}/logstash-centralized-pipeline-management.html[Logstash Pipelines]
|
||||
| Create, edit, and delete your Logstash pipeline configurations.
|
||||
|
||||
| <<managing-beats, Beats Central Management>>
|
||||
| Manage your Beats configurations in a central location and
|
||||
quickly deploy configuration changes to all Beats running across your enterprise.
|
||||
|
||||
|
||||
|===
|
||||
|
||||
|
@ -182,8 +178,6 @@ next major version of {es}, and then reindex, if needed.
|
|||
|
||||
include::{kib-repo-dir}/management/advanced-options.asciidoc[]
|
||||
|
||||
include::{kib-repo-dir}/management/managing-beats.asciidoc[]
|
||||
|
||||
include::{kib-repo-dir}/management/action-types.asciidoc[]
|
||||
|
||||
include::{kib-repo-dir}/management/managing-licenses.asciidoc[]
|
||||
|
|
|
@ -3,7 +3,6 @@ pageLoadAssetSize:
|
|||
alerting: 106936
|
||||
apm: 64385
|
||||
apmOss: 18996
|
||||
beatsManagement: 188135
|
||||
bfetch: 41874
|
||||
canvas: 1066647
|
||||
charts: 195358
|
||||
|
|
|
@ -73,7 +73,6 @@
|
|||
{ "path": "./x-pack/plugins/actions/tsconfig.json" },
|
||||
{ "path": "./x-pack/plugins/alerting/tsconfig.json" },
|
||||
{ "path": "./x-pack/plugins/apm/tsconfig.json" },
|
||||
{ "path": "./x-pack/plugins/beats_management/tsconfig.json" },
|
||||
{ "path": "./x-pack/plugins/canvas/tsconfig.json" },
|
||||
{ "path": "./x-pack/plugins/cases/tsconfig.json" },
|
||||
{ "path": "./x-pack/plugins/cloud/tsconfig.json" },
|
||||
|
|
|
@ -58,7 +58,6 @@
|
|||
{ "path": "./x-pack/plugins/actions/tsconfig.json" },
|
||||
{ "path": "./x-pack/plugins/alerting/tsconfig.json" },
|
||||
{ "path": "./x-pack/plugins/apm/tsconfig.json" },
|
||||
{ "path": "./x-pack/plugins/beats_management/tsconfig.json" },
|
||||
{ "path": "./x-pack/plugins/canvas/tsconfig.json" },
|
||||
{ "path": "./x-pack/plugins/cases/tsconfig.json" },
|
||||
{ "path": "./x-pack/plugins/cloud/tsconfig.json" },
|
||||
|
|
|
@ -7,7 +7,6 @@
|
|||
"xpack.eventLog": "plugins/event_log",
|
||||
"xpack.stackAlerts": "plugins/stack_alerts",
|
||||
"xpack.apm": "plugins/apm",
|
||||
"xpack.beatsManagement": "plugins/beats_management",
|
||||
"xpack.canvas": "plugins/canvas",
|
||||
"xpack.cases": "plugins/cases",
|
||||
"xpack.cloud": "plugins/cloud",
|
||||
|
|
|
@ -1,384 +0,0 @@
|
|||
/*
|
||||
* Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
|
||||
* or more contributor license agreements. Licensed under the Elastic License
|
||||
* 2.0; you may not use this file except in compliance with the Elastic License
|
||||
* 2.0.
|
||||
*/
|
||||
|
||||
// Note: importing this is a temp thing. This file will be replaced with JSON from Beats/ES at some point
|
||||
import { ConfigBlockSchema } from './domain_types';
|
||||
|
||||
export const configBlockSchemas: ConfigBlockSchema[] = [
|
||||
{
|
||||
id: 'filebeat.inputs',
|
||||
name: 'Filebeat Input',
|
||||
version: 6.7,
|
||||
allowOtherConfigs: true,
|
||||
configs: [
|
||||
{
|
||||
id: 'paths',
|
||||
ui: {
|
||||
label: 'Paths',
|
||||
labelId: 'filebeatInputConfig.paths.ui.label',
|
||||
type: 'multi-input',
|
||||
helpText: 'filebeatInputConfig.paths.ui.helpText',
|
||||
helpTextId: 'filebeatInputConfig.paths.ui.helpText',
|
||||
placeholder: `first/path/to/file.json second/path/to/otherfile.json`,
|
||||
},
|
||||
validation: 'isPaths',
|
||||
error: 'filebeatInputConfig.paths.error',
|
||||
errorId: 'filebeatInputConfig.paths.error',
|
||||
required: true,
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
id: 'filebeat.modules',
|
||||
name: 'Filebeat Modules',
|
||||
version: 6.7,
|
||||
allowOtherConfigs: true,
|
||||
configs: [
|
||||
{
|
||||
id: '_sub_type',
|
||||
ui: {
|
||||
label: 'filebeatModuleConfig.module.ui.label',
|
||||
labelId: 'filebeatModuleConfig.module.ui.label',
|
||||
type: 'select',
|
||||
},
|
||||
options: [
|
||||
{
|
||||
value: 'apache2',
|
||||
text: 'apache2',
|
||||
},
|
||||
{
|
||||
value: 'auditd',
|
||||
text: 'auditd',
|
||||
},
|
||||
{
|
||||
value: 'elasticsearch',
|
||||
text: 'elasticsearch',
|
||||
},
|
||||
{
|
||||
value: 'haproxy',
|
||||
text: 'haproxy',
|
||||
},
|
||||
{
|
||||
value: 'icinga',
|
||||
text: 'icinga',
|
||||
},
|
||||
{
|
||||
value: 'iis',
|
||||
text: 'iis',
|
||||
},
|
||||
{
|
||||
value: 'kafka',
|
||||
text: 'kafka',
|
||||
},
|
||||
{
|
||||
value: 'kibana',
|
||||
text: 'kibana',
|
||||
},
|
||||
{
|
||||
value: 'logstash',
|
||||
text: 'logstash',
|
||||
},
|
||||
{
|
||||
value: 'mongodb',
|
||||
text: 'mongodb',
|
||||
},
|
||||
{
|
||||
value: 'mysql',
|
||||
text: 'mysql',
|
||||
},
|
||||
{
|
||||
value: 'nginx',
|
||||
text: 'nginx',
|
||||
},
|
||||
{
|
||||
value: 'osquery',
|
||||
text: 'osquery',
|
||||
},
|
||||
{
|
||||
value: 'postgresql',
|
||||
text: 'postgresql',
|
||||
},
|
||||
{
|
||||
value: 'redis',
|
||||
text: 'redis',
|
||||
},
|
||||
{
|
||||
value: 'system',
|
||||
text: 'system',
|
||||
},
|
||||
{
|
||||
value: 'traefik',
|
||||
text: 'traefik',
|
||||
},
|
||||
],
|
||||
error: 'filebeatModuleConfig.module.error',
|
||||
errorId: 'filebeatModuleConfig.module.error',
|
||||
required: true,
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
id: 'metricbeat.modules',
|
||||
name: 'Metricbeat Modules',
|
||||
version: 6.7,
|
||||
allowOtherConfigs: true,
|
||||
configs: [
|
||||
{
|
||||
id: '_sub_type',
|
||||
ui: {
|
||||
label: 'metricbeatModuleConfig.module.ui.label',
|
||||
labelId: 'metricbeatModuleConfig.module.ui.label',
|
||||
type: 'select',
|
||||
},
|
||||
options: [
|
||||
{
|
||||
value: 'aerospike',
|
||||
text: 'aerospike',
|
||||
},
|
||||
{
|
||||
value: 'apache',
|
||||
text: 'apache',
|
||||
},
|
||||
{
|
||||
value: 'ceph',
|
||||
text: 'ceph',
|
||||
},
|
||||
{
|
||||
value: 'couchbase',
|
||||
text: 'couchbase',
|
||||
},
|
||||
{
|
||||
value: 'docker',
|
||||
text: 'docker',
|
||||
},
|
||||
{
|
||||
value: 'dropwizard',
|
||||
text: 'dropwizard',
|
||||
},
|
||||
{
|
||||
value: 'elasticsearch',
|
||||
text: 'elasticsearch',
|
||||
},
|
||||
{
|
||||
value: 'envoyproxy',
|
||||
text: 'envoyproxy',
|
||||
},
|
||||
{
|
||||
value: 'etcd',
|
||||
text: 'etcd',
|
||||
},
|
||||
{
|
||||
value: 'golang',
|
||||
text: 'golang',
|
||||
},
|
||||
{
|
||||
value: 'graphite',
|
||||
text: 'graphite',
|
||||
},
|
||||
{
|
||||
value: 'haproxy',
|
||||
text: 'haproxy',
|
||||
},
|
||||
{
|
||||
value: 'http',
|
||||
text: 'http',
|
||||
},
|
||||
{
|
||||
value: 'jolokia',
|
||||
text: 'jolokia',
|
||||
},
|
||||
{
|
||||
value: 'kafka',
|
||||
text: 'kafka',
|
||||
},
|
||||
{
|
||||
value: 'kibana',
|
||||
text: 'kibana',
|
||||
},
|
||||
{
|
||||
value: 'kubernetes',
|
||||
text: 'kubernetes',
|
||||
},
|
||||
{
|
||||
value: 'kvm',
|
||||
text: 'kvm',
|
||||
},
|
||||
{
|
||||
value: 'logstash',
|
||||
text: 'logstash',
|
||||
},
|
||||
{
|
||||
value: 'memcached',
|
||||
text: 'memcached',
|
||||
},
|
||||
{
|
||||
value: 'mongodb',
|
||||
text: 'mongodb',
|
||||
},
|
||||
{
|
||||
value: 'munin',
|
||||
text: 'munin',
|
||||
},
|
||||
{
|
||||
value: 'mysql',
|
||||
text: 'mysql',
|
||||
},
|
||||
{
|
||||
value: 'nginx',
|
||||
text: 'nginx',
|
||||
},
|
||||
{
|
||||
value: 'php_fpm',
|
||||
text: 'php_fpm',
|
||||
},
|
||||
{
|
||||
value: 'postgresql',
|
||||
text: 'postgresql',
|
||||
},
|
||||
{
|
||||
value: 'prometheus',
|
||||
text: 'prometheus',
|
||||
},
|
||||
{
|
||||
value: 'rabbitmq',
|
||||
text: 'rabbitmq',
|
||||
},
|
||||
{
|
||||
value: 'redis',
|
||||
text: 'redis',
|
||||
},
|
||||
{
|
||||
value: 'system',
|
||||
text: 'system',
|
||||
},
|
||||
{
|
||||
value: 'traefik',
|
||||
text: 'traefik',
|
||||
},
|
||||
{
|
||||
value: 'uwsgi',
|
||||
text: 'uwsgi',
|
||||
},
|
||||
{
|
||||
value: 'vsphere',
|
||||
text: 'vsphere',
|
||||
},
|
||||
{
|
||||
value: 'windows',
|
||||
text: 'windows',
|
||||
},
|
||||
{
|
||||
value: 'zookeeper',
|
||||
text: 'zookeeper',
|
||||
},
|
||||
],
|
||||
error: 'metricbeatModuleConfig.module.error',
|
||||
errorId: 'metricbeatModuleConfig.module.error',
|
||||
required: true,
|
||||
},
|
||||
{
|
||||
id: 'hosts',
|
||||
ui: {
|
||||
label: 'metricbeatModuleConfig.hosts.ui.label',
|
||||
labelId: 'metricbeatModuleConfig.hosts.ui.label',
|
||||
type: 'multi-input',
|
||||
helpText: 'metricbeatModuleConfig.hosts.ui.helpText',
|
||||
helpTextId: 'metricbeatModuleConfig.hosts.ui.helpText',
|
||||
placeholder: `somehost.local otherhost.local`,
|
||||
},
|
||||
validation: 'isHosts',
|
||||
error: 'metricbeatModuleConfig.hosts.error',
|
||||
errorId: 'metricbeatModuleConfig.hosts.error',
|
||||
required: false,
|
||||
},
|
||||
{
|
||||
id: 'period',
|
||||
ui: {
|
||||
label: 'metricbeatModuleConfig.period.ui.label',
|
||||
labelId: 'metricbeatModuleConfig.period.ui.label',
|
||||
type: 'input',
|
||||
},
|
||||
defaultValue: '10s',
|
||||
validation: 'isPeriod',
|
||||
error: 'metricbeatModuleConfig.period.error',
|
||||
errorId: 'metricbeatModuleConfig.period.error',
|
||||
required: true,
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
id: 'output',
|
||||
name: 'Outputs',
|
||||
allowOtherConfigs: true,
|
||||
version: 6.7,
|
||||
configs: [
|
||||
{
|
||||
id: '_sub_type',
|
||||
ui: {
|
||||
label: 'outputConfig.output.ui.label',
|
||||
labelId: 'outputConfig.output.ui.label',
|
||||
type: 'select',
|
||||
},
|
||||
options: [
|
||||
{
|
||||
value: 'elasticsearch',
|
||||
text: 'Elasticsearch',
|
||||
},
|
||||
{
|
||||
value: 'logstash',
|
||||
text: 'Logstash',
|
||||
},
|
||||
{
|
||||
value: 'kafka',
|
||||
text: 'Kafka',
|
||||
},
|
||||
{
|
||||
value: 'redis',
|
||||
text: 'Redis',
|
||||
},
|
||||
],
|
||||
error: 'outputConfig.output.error',
|
||||
errorId: 'outputConfig.output.error',
|
||||
required: true,
|
||||
},
|
||||
{
|
||||
id: 'hosts',
|
||||
ui: {
|
||||
label: 'outputConfig.hosts.ui.label',
|
||||
labelId: 'outputConfig.hosts.ui.label',
|
||||
type: 'multi-input',
|
||||
},
|
||||
validation: 'isHosts',
|
||||
error: 'outputConfig.hosts.error',
|
||||
errorId: 'outputConfig.hosts.error',
|
||||
parseValidResult: (v) => v.split('\n'),
|
||||
},
|
||||
{
|
||||
id: 'username',
|
||||
ui: {
|
||||
label: 'outputConfig.username.ui.label',
|
||||
labelId: 'outputConfig.username.ui.label',
|
||||
type: 'input',
|
||||
},
|
||||
validation: 'isString',
|
||||
error: 'outputConfig.username.error',
|
||||
errorId: 'outputConfig.username.error',
|
||||
},
|
||||
{
|
||||
id: 'password',
|
||||
ui: {
|
||||
label: 'outputConfig.password.ui.label',
|
||||
labelId: 'outputConfig.password.ui.label',
|
||||
type: 'password',
|
||||
},
|
||||
validation: 'isString',
|
||||
error: 'outputConfig.password.error',
|
||||
errorId: 'outputConfig.password.error',
|
||||
},
|
||||
],
|
||||
},
|
||||
];
|
|
@ -1,243 +0,0 @@
|
|||
/*
|
||||
* Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
|
||||
* or more contributor license agreements. Licensed under the Elastic License
|
||||
* 2.0; you may not use this file except in compliance with the Elastic License
|
||||
* 2.0.
|
||||
*/
|
||||
|
||||
import { i18n } from '@kbn/i18n';
|
||||
import { ConfigBlockSchema } from './domain_types';
|
||||
|
||||
const supportedConfigLabelsMap = new Map<string, string>([
|
||||
[
|
||||
'filebeatInputConfig.paths.ui.label',
|
||||
i18n.translate('xpack.beatsManagement.filebeatInputConfig.pathsLabel', {
|
||||
defaultMessage: 'Paths',
|
||||
}),
|
||||
],
|
||||
[
|
||||
'filebeatInputConfig.paths.ui.helpText',
|
||||
i18n.translate('xpack.beatsManagement.filebeatInputConfig.pathsDescription', {
|
||||
defaultMessage: 'Put each of the paths on a separate line',
|
||||
}),
|
||||
],
|
||||
[
|
||||
'filebeatInputConfig.paths.error',
|
||||
i18n.translate('xpack.beatsManagement.filebeatInputConfig.pathsErrorMessage', {
|
||||
defaultMessage: 'One file path per line',
|
||||
}),
|
||||
],
|
||||
[
|
||||
'filebeatInputConfig.other.ui.label',
|
||||
i18n.translate('xpack.beatsManagement.filebeatInputConfig.otherConfigLabel', {
|
||||
defaultMessage: 'Other Config',
|
||||
}),
|
||||
],
|
||||
[
|
||||
'filebeatInputConfig.other.ui.helpText',
|
||||
i18n.translate('xpack.beatsManagement.filebeatInputConfig.otherConfigDescription', {
|
||||
defaultMessage: 'Use YAML format to specify other settings for the Filebeat Input',
|
||||
}),
|
||||
],
|
||||
[
|
||||
'filebeatInputConfig.other.error',
|
||||
i18n.translate('xpack.beatsManagement.filebeatInputConfig.otherConfigErrorMessage', {
|
||||
defaultMessage: 'Use valid YAML format',
|
||||
}),
|
||||
],
|
||||
[
|
||||
'filebeatModuleConfig.module.ui.label',
|
||||
i18n.translate('xpack.beatsManagement.filebeatModuleConfig.moduleLabel', {
|
||||
defaultMessage: 'Module',
|
||||
}),
|
||||
],
|
||||
[
|
||||
'filebeatModuleConfig.module.error',
|
||||
i18n.translate('xpack.beatsManagement.filebeatModuleConfig.moduleErrorMessage', {
|
||||
defaultMessage: 'Please select a module',
|
||||
}),
|
||||
],
|
||||
[
|
||||
'filebeatModuleConfig.other.ui.label',
|
||||
i18n.translate('xpack.beatsManagement.filebeatModuleConfig.otherConfigLabel', {
|
||||
defaultMessage: 'Other Config',
|
||||
}),
|
||||
],
|
||||
[
|
||||
'filebeatModuleConfig.other.ui.helpText',
|
||||
i18n.translate('xpack.beatsManagement.filebeatModuleConfig.moduleDescription', {
|
||||
defaultMessage: 'Use YAML format to specify other settings for the Filebeat Module',
|
||||
}),
|
||||
],
|
||||
[
|
||||
'filebeatModuleConfig.other.error',
|
||||
i18n.translate('xpack.beatsManagement.filebeatModuleConfig.otherConfigErrorMessage', {
|
||||
defaultMessage: 'Use valid YAML format',
|
||||
}),
|
||||
],
|
||||
|
||||
[
|
||||
'metricbeatModuleConfig.module.ui.label',
|
||||
i18n.translate('xpack.beatsManagement.metricbeatModuleConfig.moduleLabel', {
|
||||
defaultMessage: 'Module',
|
||||
}),
|
||||
],
|
||||
[
|
||||
'metricbeatModuleConfig.module.error',
|
||||
i18n.translate('xpack.beatsManagement.metricbeatModuleConfig.moduleErrorMessage', {
|
||||
defaultMessage: 'Please select a module',
|
||||
}),
|
||||
],
|
||||
[
|
||||
'metricbeatModuleConfig.hosts.ui.label',
|
||||
i18n.translate('xpack.beatsManagement.metricbeatModuleConfig.hostsLabel', {
|
||||
defaultMessage: 'Hosts',
|
||||
}),
|
||||
],
|
||||
[
|
||||
'metricbeatModuleConfig.hosts.ui.helpText',
|
||||
i18n.translate('xpack.beatsManagement.metricbeatModuleConfig.hostsDescription', {
|
||||
defaultMessage: 'Put each of the paths on a seperate line',
|
||||
}),
|
||||
],
|
||||
[
|
||||
'metricbeatModuleConfig.hosts.error',
|
||||
i18n.translate('xpack.beatsManagement.metricbeatModuleConfig.hostsErrorMessage', {
|
||||
defaultMessage: 'One file host per line',
|
||||
}),
|
||||
],
|
||||
[
|
||||
'metricbeatModuleConfig.period.ui.label',
|
||||
i18n.translate('xpack.beatsManagement.metricbeatModuleConfig.periodLabel', {
|
||||
defaultMessage: 'Period',
|
||||
}),
|
||||
],
|
||||
[
|
||||
'metricbeatModuleConfig.period.error',
|
||||
i18n.translate('xpack.beatsManagement.metricbeatModuleConfig.periodErrorMessage', {
|
||||
defaultMessage: 'Invalid Period, must be formatted as `10s` for 10 seconds',
|
||||
}),
|
||||
],
|
||||
[
|
||||
'metricbeatModuleConfig.other.ui.label',
|
||||
i18n.translate('xpack.beatsManagement.metricbeatModuleConfig.otherConfigLabel', {
|
||||
defaultMessage: 'Other Config',
|
||||
}),
|
||||
],
|
||||
[
|
||||
'metricbeatModuleConfig.other.ui.helpText',
|
||||
i18n.translate('xpack.beatsManagement.metricbeatModuleConfig.otherConfigDescription', {
|
||||
defaultMessage: 'Use YAML format to specify other settings for the Metricbeat Module',
|
||||
}),
|
||||
],
|
||||
[
|
||||
'metricbeatModuleConfig.other.error',
|
||||
i18n.translate('xpack.beatsManagement.metricbeatModuleConfig.otherConfigErrorMessage', {
|
||||
defaultMessage: 'Use valid YAML format',
|
||||
}),
|
||||
],
|
||||
|
||||
[
|
||||
'outputConfig.output.ui.label',
|
||||
i18n.translate('xpack.beatsManagement.outputConfig.outputTypeLabel', {
|
||||
defaultMessage: 'Output Type',
|
||||
}),
|
||||
],
|
||||
[
|
||||
'outputConfig.output.error',
|
||||
i18n.translate('xpack.beatsManagement.outputConfig.outputTypeErrorMessage', {
|
||||
defaultMessage: 'Please select an output type',
|
||||
}),
|
||||
],
|
||||
[
|
||||
'outputConfig.hosts.ui.label',
|
||||
i18n.translate('xpack.beatsManagement.outputConfig.hostsLabel', {
|
||||
defaultMessage: 'Hosts',
|
||||
}),
|
||||
],
|
||||
[
|
||||
'outputConfig.hosts.error',
|
||||
i18n.translate('xpack.beatsManagement.outputConfig.hostsErrorMessage', {
|
||||
defaultMessage: 'One file host per line',
|
||||
}),
|
||||
],
|
||||
[
|
||||
'outputConfig.username.ui.label',
|
||||
i18n.translate('xpack.beatsManagement.outputConfig.usernameLabel', {
|
||||
defaultMessage: 'Username',
|
||||
}),
|
||||
],
|
||||
[
|
||||
'outputConfig.username.error',
|
||||
i18n.translate('xpack.beatsManagement.outputConfig.usernameErrorMessage', {
|
||||
defaultMessage: 'Unprocessable username',
|
||||
}),
|
||||
],
|
||||
[
|
||||
'outputConfig.password.ui.label',
|
||||
i18n.translate('xpack.beatsManagement.outputConfig.passwordLabel', {
|
||||
defaultMessage: 'Password',
|
||||
}),
|
||||
],
|
||||
[
|
||||
'outputConfig.password.error',
|
||||
i18n.translate('xpack.beatsManagement.outputConfig.passwordErrorMessage', {
|
||||
defaultMessage: 'Unprocessable password',
|
||||
}),
|
||||
],
|
||||
|
||||
[
|
||||
'supportedConfigs.filebeat.input.text',
|
||||
i18n.translate('xpack.beatsManagement.tagConfig.filebeatInputLabel', {
|
||||
defaultMessage: 'Filebeat Input',
|
||||
}),
|
||||
],
|
||||
[
|
||||
'supportedConfigs.filebeat.modules.text',
|
||||
i18n.translate('xpack.beatsManagement.tagConfig.filebeatModuleLabel', {
|
||||
defaultMessage: 'Filebeat Module',
|
||||
}),
|
||||
],
|
||||
[
|
||||
'supportedConfigs.metricbeatModule.text',
|
||||
i18n.translate('xpack.beatsManagement.tagConfig.metricbeatModuleLabel', {
|
||||
defaultMessage: 'Metricbeat Module',
|
||||
}),
|
||||
],
|
||||
[
|
||||
'supportedConfigs.output.text',
|
||||
i18n.translate('xpack.beatsManagement.tagConfig.outputLabel', {
|
||||
defaultMessage: 'Output',
|
||||
}),
|
||||
],
|
||||
]);
|
||||
|
||||
export let translatedConfigs: ConfigBlockSchema[];
|
||||
export const translateConfigSchema = (schemas: ConfigBlockSchema[]) => {
|
||||
if (translatedConfigs) {
|
||||
return translatedConfigs;
|
||||
}
|
||||
|
||||
translatedConfigs = schemas.map((schema) => {
|
||||
schema.name = supportedConfigLabelsMap.get(`supportedConfigs.${schema.id}.text`) || schema.name;
|
||||
|
||||
schema.configs = schema.configs.map((configBlock) => {
|
||||
if (configBlock.ui.label) {
|
||||
configBlock.ui.label =
|
||||
supportedConfigLabelsMap.get(configBlock.ui.labelId || '') || configBlock.ui.label;
|
||||
}
|
||||
if (configBlock.ui.helpText) {
|
||||
configBlock.ui.helpText =
|
||||
supportedConfigLabelsMap.get(configBlock.ui.helpTextId || '') || configBlock.ui.helpText;
|
||||
}
|
||||
if (configBlock.error) {
|
||||
configBlock.error =
|
||||
supportedConfigLabelsMap.get(configBlock.errorId || '') || configBlock.error;
|
||||
}
|
||||
return configBlock;
|
||||
});
|
||||
return schema;
|
||||
});
|
||||
|
||||
return translatedConfigs;
|
||||
};
|
|
@ -1,8 +0,0 @@
|
|||
/*
|
||||
* Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
|
||||
* or more contributor license agreements. Licensed under the Elastic License
|
||||
* 2.0; you may not use this file except in compliance with the Elastic License
|
||||
* 2.0.
|
||||
*/
|
||||
|
||||
export const UNIQUENESS_ENFORCING_TYPES = ['output'];
|
|
@ -1,13 +0,0 @@
|
|||
/*
|
||||
* Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
|
||||
* or more contributor license agreements. Licensed under the Elastic License
|
||||
* 2.0; you may not use this file except in compliance with the Elastic License
|
||||
* 2.0.
|
||||
*/
|
||||
|
||||
export { UNIQUENESS_ENFORCING_TYPES } from './configuration_blocks';
|
||||
export { INDEX_NAMES } from './index_names';
|
||||
export { PLUGIN, MANAGEMENT_SECTION } from './plugin';
|
||||
export { LICENSES, REQUIRED_LICENSES, REQUIRED_ROLES } from './security';
|
||||
export { TABLE_CONFIG } from './table';
|
||||
export const BASE_PATH = '/management/ingest/beats_management';
|
|
@ -1,16 +0,0 @@
|
|||
/*
|
||||
* Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
|
||||
* or more contributor license agreements. Licensed under the Elastic License
|
||||
* 2.0; you may not use this file except in compliance with the Elastic License
|
||||
* 2.0.
|
||||
*/
|
||||
|
||||
export const INDEX_NAMES = {
|
||||
BEATS: '.management-beats',
|
||||
EVENTS: '.management-beats-events-*',
|
||||
EVENTS_ALIAS: '.management-beats-events',
|
||||
};
|
||||
|
||||
export const POLICY_NAMES = {
|
||||
EVENTS: '.beats-management-events-retention',
|
||||
};
|
|
@ -1,12 +0,0 @@
|
|||
/*
|
||||
* Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
|
||||
* or more contributor license agreements. Licensed under the Elastic License
|
||||
* 2.0; you may not use this file except in compliance with the Elastic License
|
||||
* 2.0.
|
||||
*/
|
||||
|
||||
export const PLUGIN = {
|
||||
ID: 'beats_management',
|
||||
};
|
||||
export const CONFIG_PREFIX = 'xpack.beats';
|
||||
export const MANAGEMENT_SECTION = 'beats_management';
|
|
@ -1,18 +0,0 @@
|
|||
/*
|
||||
* Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
|
||||
* or more contributor license agreements. Licensed under the Elastic License
|
||||
* 2.0; you may not use this file except in compliance with the Elastic License
|
||||
* 2.0.
|
||||
*/
|
||||
|
||||
export const REQUIRED_ROLES = ['beats_admin'];
|
||||
export const REQUIRED_LICENSES = ['standard', 'gold', 'trial', 'platinum', 'enterprise'];
|
||||
export const LICENSES = ['oss', 'basic', 'standard', 'gold', 'trial', 'platinum', 'enterprise'];
|
||||
export type LicenseType =
|
||||
| 'oss'
|
||||
| 'basic'
|
||||
| 'trial'
|
||||
| 'standard'
|
||||
| 'gold'
|
||||
| 'platinum'
|
||||
| 'enterprise';
|
|
@ -1,13 +0,0 @@
|
|||
/*
|
||||
* Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
|
||||
* or more contributor license agreements. Licensed under the Elastic License
|
||||
* 2.0; you may not use this file except in compliance with the Elastic License
|
||||
* 2.0.
|
||||
*/
|
||||
|
||||
export const TABLE_CONFIG = {
|
||||
INITIAL_ROW_SIZE: 5,
|
||||
PAGE_SIZE_OPTIONS: [3, 5, 10, 20],
|
||||
TRUNCATE_TAG_LENGTH: 33,
|
||||
TRUNCATE_TAG_LENGTH_SMALL: 20,
|
||||
};
|
|
@ -1,136 +0,0 @@
|
|||
/*
|
||||
* Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
|
||||
* or more contributor license agreements. Licensed under the Elastic License
|
||||
* 2.0; you may not use this file except in compliance with the Elastic License
|
||||
* 2.0.
|
||||
*/
|
||||
|
||||
import * as t from 'io-ts';
|
||||
import { configBlockSchemas } from './config_schemas';
|
||||
import { DateFromString } from './io_ts_types';
|
||||
|
||||
// Here we create the runtime check for a generic, unknown beat config type.
|
||||
// We can also pass in optional params to create spacific runtime checks that
|
||||
// can be used to validate blocs on the API and UI
|
||||
export const createConfigurationBlockInterface = (
|
||||
configType: t.LiteralType<string> | t.KeyofC<Record<string, null>> = t.keyof(
|
||||
Object.fromEntries(configBlockSchemas.map((s) => [s.id, null])) as Record<string, null>
|
||||
),
|
||||
beatConfigInterface: t.Mixed = t.Dictionary
|
||||
) =>
|
||||
t.interface(
|
||||
{
|
||||
id: t.union([t.undefined, t.string]),
|
||||
type: configType,
|
||||
description: t.union([t.undefined, t.string]),
|
||||
tag: t.string,
|
||||
config: beatConfigInterface,
|
||||
last_updated: t.union([t.undefined, t.number]),
|
||||
},
|
||||
'ConfigBlock'
|
||||
);
|
||||
const BaseConfigurationBlock = createConfigurationBlockInterface();
|
||||
export interface ConfigurationBlock
|
||||
extends Pick<
|
||||
t.TypeOf<typeof BaseConfigurationBlock>,
|
||||
Exclude<keyof t.TypeOf<typeof BaseConfigurationBlock>, 'id'>
|
||||
> {
|
||||
id: string;
|
||||
}
|
||||
|
||||
export interface CMBeat {
|
||||
id: string;
|
||||
status?: BeatEvent;
|
||||
enrollment_token: string;
|
||||
active: boolean;
|
||||
access_token?: string;
|
||||
verified_on?: string;
|
||||
type: string;
|
||||
version?: string;
|
||||
host_ip: string;
|
||||
host_name: string;
|
||||
ephemeral_id?: string;
|
||||
last_checkin?: Date;
|
||||
event_rate?: string;
|
||||
local_configuration_yml?: string;
|
||||
tags: string[];
|
||||
central_configuration_yml?: string;
|
||||
metadata?: {};
|
||||
name?: string;
|
||||
last_updated: number;
|
||||
}
|
||||
|
||||
export interface ConfigBlockSchema {
|
||||
id: string;
|
||||
name: string;
|
||||
version: number;
|
||||
allowOtherConfigs?: boolean;
|
||||
configs: BeatConfigSchema[];
|
||||
}
|
||||
|
||||
export interface BeatConfigSchema {
|
||||
id: string;
|
||||
ui: {
|
||||
label: string;
|
||||
labelId?: string;
|
||||
type: 'input' | 'multi-input' | 'select' | 'code' | 'password';
|
||||
helpText?: string;
|
||||
helpTextId?: string;
|
||||
placeholder?: string;
|
||||
};
|
||||
options?: Array<{ value: string; text: string }>;
|
||||
validation?: 'isHosts' | 'isString' | 'isPeriod' | 'isPath' | 'isPaths' | 'isYaml';
|
||||
error: string;
|
||||
errorId: string;
|
||||
defaultValue?: string;
|
||||
required?: boolean;
|
||||
parseValidResult?: (value: any) => any;
|
||||
}
|
||||
|
||||
export const RuntimeBeatTag = t.interface(
|
||||
{
|
||||
id: t.union([t.undefined, t.string]),
|
||||
name: t.string,
|
||||
color: t.string,
|
||||
hasConfigurationBlocksTypes: t.array(t.string),
|
||||
},
|
||||
'CMBeat'
|
||||
);
|
||||
export interface BeatTag
|
||||
extends Pick<
|
||||
t.TypeOf<typeof RuntimeBeatTag>,
|
||||
Exclude<keyof t.TypeOf<typeof RuntimeBeatTag>, 'id'>
|
||||
> {
|
||||
id: string;
|
||||
// Used by the UI and api when a tag exists but is an invalid option
|
||||
disabled?: boolean;
|
||||
}
|
||||
|
||||
export const RuntimeBeatEvent = t.interface(
|
||||
{
|
||||
type: t.union([t.literal('STATE'), t.literal('ERROR')]),
|
||||
beat: t.union([t.undefined, t.string]),
|
||||
timestamp: DateFromString,
|
||||
event: t.type({
|
||||
type: t.union([
|
||||
t.literal('RUNNING'),
|
||||
t.literal('STARTING'),
|
||||
t.literal('IN_PROGRESS'),
|
||||
t.literal('CONFIG'),
|
||||
t.literal('FAILED'),
|
||||
t.literal('STOPPED'),
|
||||
]),
|
||||
message: t.string,
|
||||
uuid: t.union([t.undefined, t.string]),
|
||||
}),
|
||||
},
|
||||
'BeatEvent'
|
||||
);
|
||||
export interface BeatEvent
|
||||
extends Pick<
|
||||
t.TypeOf<typeof RuntimeBeatEvent>,
|
||||
Exclude<keyof t.TypeOf<typeof RuntimeBeatEvent>, 'timestamp'>
|
||||
> {
|
||||
beat: string;
|
||||
timestamp: Date;
|
||||
}
|
|
@ -1,23 +0,0 @@
|
|||
/*
|
||||
* Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
|
||||
* or more contributor license agreements. Licensed under the Elastic License
|
||||
* 2.0; you may not use this file except in compliance with the Elastic License
|
||||
* 2.0.
|
||||
*/
|
||||
|
||||
import { schema, TypeOf } from '@kbn/config-schema';
|
||||
|
||||
const DEFAULT_ENROLLMENT_TOKENS_TTL_S = 10 * 60; // 10 minutes
|
||||
|
||||
export const beatsManagementConfigSchema = schema.object({
|
||||
enabled: schema.boolean({ defaultValue: true }),
|
||||
defaultUserRoles: schema.arrayOf(schema.string(), { defaultValue: ['superuser'] }),
|
||||
encryptionKey: schema.string({ defaultValue: 'xpack_beats_default_encryptionKey' }),
|
||||
enrollmentTokensTtlInSeconds: schema.number({
|
||||
min: 1,
|
||||
max: 10 * 60 * 14, // No more then 2 weeks for security reasons,
|
||||
defaultValue: DEFAULT_ENROLLMENT_TOKENS_TTL_S,
|
||||
}),
|
||||
});
|
||||
|
||||
export type BeatsManagementConfigType = TypeOf<typeof beatsManagementConfigSchema>;
|
|
@ -1,34 +0,0 @@
|
|||
/*
|
||||
* Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
|
||||
* or more contributor license agreements. Licensed under the Elastic License
|
||||
* 2.0; you may not use this file except in compliance with the Elastic License
|
||||
* 2.0.
|
||||
*/
|
||||
|
||||
import * as t from 'io-ts';
|
||||
import { isRight } from 'fp-ts/lib/Either';
|
||||
|
||||
class DateFromStringType extends t.Type<Date, string, t.mixed> {
|
||||
public readonly _tag: 'DateFromISOStringType' = 'DateFromISOStringType';
|
||||
constructor() {
|
||||
super(
|
||||
'DateFromString',
|
||||
(u): u is Date => u instanceof Date,
|
||||
(u, c) => {
|
||||
const validation = t.string.validate(u, c);
|
||||
if (!isRight(validation)) {
|
||||
return validation as any;
|
||||
} else {
|
||||
const s = validation.right;
|
||||
const d = new Date(s);
|
||||
return isNaN(d.getTime()) ? t.failure(s, c) : t.success(d);
|
||||
}
|
||||
},
|
||||
(a) => a.toISOString()
|
||||
);
|
||||
}
|
||||
}
|
||||
// eslint-disable-next-line
|
||||
export interface DateFromString extends DateFromStringType {}
|
||||
|
||||
export const DateFromString: DateFromString = new DateFromStringType();
|
|
@ -1,106 +0,0 @@
|
|||
/*
|
||||
* Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
|
||||
* or more contributor license agreements. Licensed under the Elastic License
|
||||
* 2.0; you may not use this file except in compliance with the Elastic License
|
||||
* 2.0.
|
||||
*/
|
||||
|
||||
export interface BaseReturnType {
|
||||
error?: {
|
||||
message: string;
|
||||
code?: number;
|
||||
};
|
||||
success: boolean;
|
||||
}
|
||||
|
||||
export interface ReturnTypeCreate<T> extends BaseReturnType {
|
||||
item: T;
|
||||
action: 'created';
|
||||
}
|
||||
|
||||
export interface ReturnTypeUpdate<T> extends BaseReturnType {
|
||||
item: T;
|
||||
action: 'updated';
|
||||
}
|
||||
|
||||
export interface ReturnTypeBulkCreate<T> extends BaseReturnType {
|
||||
results: Array<{
|
||||
item: T;
|
||||
success: boolean;
|
||||
action: 'created';
|
||||
error?: {
|
||||
message: string;
|
||||
code?: number;
|
||||
};
|
||||
}>;
|
||||
}
|
||||
|
||||
export interface ReturnTypeBulkDelete extends BaseReturnType {
|
||||
results: Array<{
|
||||
success: boolean;
|
||||
action: 'deleted';
|
||||
error?: {
|
||||
message: string;
|
||||
code?: number;
|
||||
};
|
||||
}>;
|
||||
}
|
||||
|
||||
// upsert
|
||||
export interface ReturnTypeUpsert<T> extends BaseReturnType {
|
||||
item: T;
|
||||
action: 'created' | 'updated';
|
||||
}
|
||||
|
||||
// upsert bulk
|
||||
export interface ReturnTypeBulkUpsert extends BaseReturnType {
|
||||
results: Array<{
|
||||
success: boolean;
|
||||
action: 'created' | 'updated';
|
||||
error?: {
|
||||
message: string;
|
||||
code?: number;
|
||||
};
|
||||
}>;
|
||||
}
|
||||
|
||||
// list
|
||||
export interface ReturnTypeList<T> extends BaseReturnType {
|
||||
list: T[];
|
||||
page: number;
|
||||
total: number;
|
||||
}
|
||||
|
||||
// get
|
||||
export interface ReturnTypeGet<T> extends BaseReturnType {
|
||||
item: T;
|
||||
}
|
||||
|
||||
export interface ReturnTypeBulkGet<T> extends BaseReturnType {
|
||||
items: T[];
|
||||
}
|
||||
|
||||
// e.g.
|
||||
// {
|
||||
// result: {
|
||||
// username: { valid: true },
|
||||
// password: { valid: false, error: 'something' },
|
||||
// hosts: [
|
||||
// { valid: false }, { valid: true },
|
||||
// ]
|
||||
// }
|
||||
// }
|
||||
|
||||
// bulk action -- e.g. assign tags to beats
|
||||
export interface ReturnTypeBulkAction extends BaseReturnType {
|
||||
results?: Array<{
|
||||
success: boolean;
|
||||
result?: {
|
||||
[key: string]: any;
|
||||
};
|
||||
error?: {
|
||||
message: string;
|
||||
code?: number;
|
||||
};
|
||||
}>;
|
||||
}
|
|
@ -1,12 +0,0 @@
|
|||
/*
|
||||
* Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
|
||||
* or more contributor license agreements. Licensed under the Elastic License
|
||||
* 2.0; you may not use this file except in compliance with the Elastic License
|
||||
* 2.0.
|
||||
*/
|
||||
|
||||
module.exports = {
|
||||
preset: '@kbn/test',
|
||||
rootDir: '../../..',
|
||||
roots: ['<rootDir>/x-pack/plugins/beats_management'],
|
||||
};
|
|
@ -1,16 +0,0 @@
|
|||
{
|
||||
"id": "beatsManagement",
|
||||
"configPath": ["xpack", "beats_management"],
|
||||
"ui": true,
|
||||
"server": true,
|
||||
"version": "kibana",
|
||||
"requiredPlugins": [
|
||||
"data",
|
||||
"licensing",
|
||||
"management",
|
||||
"features"
|
||||
],
|
||||
"optionalPlugins": [
|
||||
"security"
|
||||
]
|
||||
}
|
|
@ -1,89 +0,0 @@
|
|||
/*
|
||||
* Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
|
||||
* or more contributor license agreements. Licensed under the Elastic License
|
||||
* 2.0; you may not use this file except in compliance with the Elastic License
|
||||
* 2.0.
|
||||
*/
|
||||
|
||||
import * as euiVars from '@elastic/eui/dist/eui_theme_light.json';
|
||||
import { i18n } from '@kbn/i18n';
|
||||
import { FormattedMessage } from '@kbn/i18n/react';
|
||||
import React from 'react';
|
||||
import ReactDOM from 'react-dom';
|
||||
import { Router } from 'react-router-dom';
|
||||
import { ThemeProvider } from 'styled-components';
|
||||
import { Provider as UnstatedProvider, Subscribe } from 'unstated';
|
||||
import { EuiCallOut, EuiLink, EuiSpacer } from '@elastic/eui';
|
||||
import { Background } from './components/layouts/background';
|
||||
import { BreadcrumbProvider } from './components/navigation/breadcrumb';
|
||||
import { Breadcrumb } from './components/navigation/breadcrumb/breadcrumb';
|
||||
import { BeatsContainer } from './containers/beats';
|
||||
import { TagsContainer } from './containers/tags';
|
||||
import { FrontendLibs } from './lib/types';
|
||||
import { AppRouter } from './router';
|
||||
import { services } from './kbn_services';
|
||||
import { ManagementAppMountParams } from '../../../../src/plugins/management/public';
|
||||
|
||||
export const renderApp = ({ element, history }: ManagementAppMountParams, libs: FrontendLibs) => {
|
||||
ReactDOM.render(
|
||||
<ThemeProvider theme={{ eui: euiVars }}>
|
||||
<services.I18nContext>
|
||||
<Router history={history}>
|
||||
<UnstatedProvider inject={[new BeatsContainer(libs), new TagsContainer(libs)]}>
|
||||
<BreadcrumbProvider useGlobalBreadcrumbs={libs.framework.versionGreaterThen('6.7.0')}>
|
||||
<Subscribe to={[BeatsContainer, TagsContainer]}>
|
||||
{(beats: BeatsContainer, tags: TagsContainer) => (
|
||||
<Background>
|
||||
<Breadcrumb
|
||||
title={i18n.translate('xpack.beatsManagement.management.breadcrumb', {
|
||||
defaultMessage: 'Management',
|
||||
})}
|
||||
/>
|
||||
<EuiCallOut
|
||||
title={i18n.translate('xpack.beatsManagement.management.deprecationTitle', {
|
||||
defaultMessage: 'Beats central management has been deprecated',
|
||||
})}
|
||||
color="warning"
|
||||
iconType="help"
|
||||
>
|
||||
<p>
|
||||
<FormattedMessage
|
||||
id="xpack.beatsManagement.management.deprecationMessage"
|
||||
defaultMessage="We have ceased development on Beats central management and are working on a
|
||||
comprehensive solution to replace it. Thank you for participating in the
|
||||
beta and providing feedback. If you have any questions or concerns, please
|
||||
reach out to us on the {forumLink}."
|
||||
values={{
|
||||
forumLink: (
|
||||
<EuiLink
|
||||
href="https://discuss.elastic.co/c/beats"
|
||||
external
|
||||
target="_blank"
|
||||
>
|
||||
<FormattedMessage
|
||||
id="xpack.beatsManagement.management.forumLink"
|
||||
defaultMessage="Discuss forum"
|
||||
/>
|
||||
</EuiLink>
|
||||
),
|
||||
}}
|
||||
/>
|
||||
</p>
|
||||
</EuiCallOut>
|
||||
<EuiSpacer />
|
||||
<AppRouter libs={libs} beatsContainer={beats} tagsContainer={tags} />
|
||||
</Background>
|
||||
)}
|
||||
</Subscribe>
|
||||
</BreadcrumbProvider>
|
||||
</UnstatedProvider>
|
||||
</Router>
|
||||
</services.I18nContext>
|
||||
</ThemeProvider>,
|
||||
element
|
||||
);
|
||||
|
||||
return () => {
|
||||
ReactDOM.unmountComponentAtNode(element);
|
||||
};
|
||||
};
|
|
@ -1,69 +0,0 @@
|
|||
/*
|
||||
* Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
|
||||
* or more contributor license agreements. Licensed under the Elastic License
|
||||
* 2.0; you may not use this file except in compliance with the Elastic License
|
||||
* 2.0.
|
||||
*/
|
||||
|
||||
import { FrontendLibs } from './lib/types';
|
||||
import { compose } from './lib/compose/kibana';
|
||||
|
||||
import { setServices } from './kbn_services';
|
||||
import { ManagementSetup } from '../../../../src/plugins/management/public';
|
||||
import { SecurityPluginSetup } from '../../security/public';
|
||||
import { CoreSetup } from '../../../../src/core/public';
|
||||
import { DataPublicPluginStart } from '../../../../src/plugins/data/public';
|
||||
import { LicensingPluginSetup } from '../../licensing/public';
|
||||
import { BeatsManagementConfigType } from '../common';
|
||||
import { MANAGEMENT_SECTION } from '../common/constants';
|
||||
|
||||
async function startApp(libs: FrontendLibs, core: CoreSetup<StartDeps>) {
|
||||
const startServices = await core.getStartServices();
|
||||
|
||||
if (startServices[0].http.anonymousPaths.isAnonymous(window.location.pathname)) {
|
||||
return;
|
||||
}
|
||||
// Can't run until the `start` lifecycle, so we wait for start services to resolve above before calling this.
|
||||
await libs.framework.waitUntilFrameworkReady();
|
||||
|
||||
const capabilities = startServices[0].application.capabilities;
|
||||
const hasBeatsCapability = capabilities.management.ingest?.[MANAGEMENT_SECTION] ?? false;
|
||||
|
||||
if (libs.framework.licenseIsAtLeast('standard') && hasBeatsCapability) {
|
||||
const mount = async (params: any) => {
|
||||
const [coreStart, pluginsStart] = await core.getStartServices();
|
||||
setServices(coreStart, pluginsStart, params);
|
||||
const { renderApp } = await import('./application');
|
||||
return renderApp(params, libs);
|
||||
};
|
||||
|
||||
libs.framework.registerManagementUI(mount);
|
||||
}
|
||||
}
|
||||
|
||||
interface SetupDeps {
|
||||
management: ManagementSetup;
|
||||
licensing: LicensingPluginSetup;
|
||||
security?: SecurityPluginSetup;
|
||||
}
|
||||
|
||||
interface StartDeps {
|
||||
data: DataPublicPluginStart;
|
||||
}
|
||||
|
||||
export const bootstrap = (
|
||||
core: CoreSetup<StartDeps>,
|
||||
plugins: SetupDeps,
|
||||
config: BeatsManagementConfigType,
|
||||
version: string
|
||||
) => {
|
||||
startApp(
|
||||
compose({
|
||||
core,
|
||||
config,
|
||||
version,
|
||||
...plugins,
|
||||
}),
|
||||
core
|
||||
);
|
||||
};
|
|
@ -1,290 +0,0 @@
|
|||
/*
|
||||
* Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
|
||||
* or more contributor license agreements. Licensed under the Elastic License
|
||||
* 2.0; you may not use this file except in compliance with the Elastic License
|
||||
* 2.0.
|
||||
*/
|
||||
|
||||
import {
|
||||
EuiFieldSearch,
|
||||
EuiFieldSearchProps,
|
||||
EuiOutsideClickDetector,
|
||||
EuiPanel,
|
||||
} from '@elastic/eui';
|
||||
import React from 'react';
|
||||
import styled from 'styled-components';
|
||||
|
||||
import { QuerySuggestion } from '../../../../../../src/plugins/data/public';
|
||||
|
||||
import { composeStateUpdaters } from '../../utils/typed_react';
|
||||
import { SuggestionItem } from './suggestion_item';
|
||||
|
||||
interface AutocompleteFieldProps {
|
||||
isLoadingSuggestions: boolean;
|
||||
isValid: boolean;
|
||||
loadSuggestions: (value: string, cursorPosition: number, maxCount?: number) => void;
|
||||
onSubmit?: (value: string) => void;
|
||||
onChange?: (value: string) => void;
|
||||
placeholder?: string;
|
||||
suggestions: QuerySuggestion[];
|
||||
value: string;
|
||||
}
|
||||
|
||||
interface AutocompleteFieldState {
|
||||
areSuggestionsVisible: boolean;
|
||||
selectedIndex: number | null;
|
||||
}
|
||||
|
||||
export class AutocompleteField extends React.Component<
|
||||
AutocompleteFieldProps,
|
||||
AutocompleteFieldState
|
||||
> {
|
||||
public readonly state: AutocompleteFieldState = {
|
||||
areSuggestionsVisible: false,
|
||||
selectedIndex: null,
|
||||
};
|
||||
|
||||
private inputElement: HTMLInputElement | null = null;
|
||||
|
||||
public render() {
|
||||
const { suggestions, isLoadingSuggestions, isValid, placeholder, value } = this.props;
|
||||
const { areSuggestionsVisible, selectedIndex } = this.state;
|
||||
|
||||
return (
|
||||
<EuiOutsideClickDetector onOutsideClick={this.hideSuggestions}>
|
||||
<AutocompleteContainer>
|
||||
<FixedEuiFieldSearch
|
||||
fullWidth
|
||||
inputRef={this.handleChangeInputRef}
|
||||
isLoading={isLoadingSuggestions}
|
||||
isInvalid={!isValid}
|
||||
onChange={this.handleChange}
|
||||
onFocus={this.showSuggestions}
|
||||
onKeyDown={this.handleKeyDown}
|
||||
onKeyUp={this.handleKeyUp}
|
||||
onSearch={this.submit}
|
||||
placeholder={placeholder}
|
||||
value={value}
|
||||
/>
|
||||
{areSuggestionsVisible && !isLoadingSuggestions && suggestions.length > 0 ? (
|
||||
<SuggestionsPanel>
|
||||
{suggestions.map((suggestion, suggestionIndex) => (
|
||||
<SuggestionItem
|
||||
key={suggestion.text}
|
||||
suggestion={suggestion}
|
||||
isSelected={suggestionIndex === selectedIndex}
|
||||
onMouseEnter={this.selectSuggestionAt(suggestionIndex)}
|
||||
onClick={this.applySuggestionAt(suggestionIndex)}
|
||||
/>
|
||||
))}
|
||||
</SuggestionsPanel>
|
||||
) : null}
|
||||
</AutocompleteContainer>
|
||||
</EuiOutsideClickDetector>
|
||||
);
|
||||
}
|
||||
|
||||
public componentDidUpdate(prevProps: AutocompleteFieldProps, prevState: AutocompleteFieldState) {
|
||||
const hasNewSuggestions = prevProps.suggestions !== this.props.suggestions;
|
||||
const hasNewValue = prevProps.value !== this.props.value;
|
||||
|
||||
if (hasNewValue) {
|
||||
this.updateSuggestions();
|
||||
}
|
||||
|
||||
if (hasNewSuggestions) {
|
||||
this.showSuggestions();
|
||||
}
|
||||
}
|
||||
|
||||
private handleChangeInputRef = (element: HTMLInputElement | null) => {
|
||||
this.inputElement = element;
|
||||
};
|
||||
|
||||
private handleChange = (evt: React.ChangeEvent<HTMLInputElement>) => {
|
||||
this.changeValue(evt.currentTarget.value);
|
||||
};
|
||||
|
||||
private handleKeyDown = (evt: React.KeyboardEvent<HTMLInputElement>) => {
|
||||
const { suggestions } = this.props;
|
||||
|
||||
switch (evt.key) {
|
||||
case 'ArrowUp':
|
||||
evt.preventDefault();
|
||||
if (suggestions.length > 0) {
|
||||
this.setState(
|
||||
composeStateUpdaters(withSuggestionsVisible, withPreviousSuggestionSelected)
|
||||
);
|
||||
}
|
||||
break;
|
||||
case 'ArrowDown':
|
||||
evt.preventDefault();
|
||||
if (suggestions.length > 0) {
|
||||
this.setState(composeStateUpdaters(withSuggestionsVisible, withNextSuggestionSelected));
|
||||
} else {
|
||||
this.updateSuggestions();
|
||||
}
|
||||
break;
|
||||
case 'Enter':
|
||||
evt.preventDefault();
|
||||
if (this.state.selectedIndex !== null) {
|
||||
this.applySelectedSuggestion();
|
||||
} else {
|
||||
this.submit();
|
||||
}
|
||||
break;
|
||||
case 'Escape':
|
||||
evt.preventDefault();
|
||||
this.setState(withSuggestionsHidden);
|
||||
break;
|
||||
}
|
||||
};
|
||||
|
||||
private handleKeyUp = (evt: React.KeyboardEvent<HTMLInputElement>) => {
|
||||
switch (evt.key) {
|
||||
case 'ArrowLeft':
|
||||
case 'ArrowRight':
|
||||
case 'Home':
|
||||
case 'End':
|
||||
this.updateSuggestions();
|
||||
break;
|
||||
}
|
||||
};
|
||||
|
||||
private selectSuggestionAt = (index: number) => () => {
|
||||
this.setState(withSuggestionAtIndexSelected(index));
|
||||
};
|
||||
|
||||
private applySelectedSuggestion = () => {
|
||||
if (this.state.selectedIndex !== null) {
|
||||
this.applySuggestionAt(this.state.selectedIndex)();
|
||||
}
|
||||
};
|
||||
|
||||
private applySuggestionAt = (index: number) => () => {
|
||||
const { value, suggestions } = this.props;
|
||||
const selectedSuggestion = suggestions[index];
|
||||
|
||||
if (!selectedSuggestion) {
|
||||
return;
|
||||
}
|
||||
|
||||
const newValue =
|
||||
value.substr(0, selectedSuggestion.start) +
|
||||
selectedSuggestion.text +
|
||||
value.substr(selectedSuggestion.end);
|
||||
|
||||
this.setState(withSuggestionsHidden);
|
||||
this.changeValue(newValue);
|
||||
this.focusInputElement();
|
||||
};
|
||||
|
||||
private changeValue = (value: string) => {
|
||||
const { onChange } = this.props;
|
||||
if (onChange) {
|
||||
onChange(value);
|
||||
}
|
||||
};
|
||||
|
||||
private focusInputElement = () => {
|
||||
if (this.inputElement) {
|
||||
this.inputElement.focus();
|
||||
}
|
||||
};
|
||||
|
||||
private showSuggestions = () => {
|
||||
this.setState(withSuggestionsVisible);
|
||||
};
|
||||
|
||||
private hideSuggestions = () => {
|
||||
this.setState(withSuggestionsHidden);
|
||||
};
|
||||
|
||||
private submit = () => {
|
||||
const { isValid, onSubmit, value } = this.props;
|
||||
|
||||
if (isValid && onSubmit) {
|
||||
onSubmit(value);
|
||||
}
|
||||
|
||||
this.setState(withSuggestionsHidden);
|
||||
};
|
||||
|
||||
private updateSuggestions = (value?: string) => {
|
||||
const inputCursorPosition = this.inputElement ? this.inputElement.selectionStart || 0 : 0;
|
||||
this.props.loadSuggestions(value || this.props.value, inputCursorPosition, 10);
|
||||
};
|
||||
}
|
||||
|
||||
const withPreviousSuggestionSelected = (
|
||||
state: AutocompleteFieldState,
|
||||
props: AutocompleteFieldProps
|
||||
): AutocompleteFieldState => ({
|
||||
...state,
|
||||
selectedIndex:
|
||||
props.suggestions.length === 0
|
||||
? null
|
||||
: state.selectedIndex !== null
|
||||
? (state.selectedIndex + props.suggestions.length - 1) % props.suggestions.length
|
||||
: Math.max(props.suggestions.length - 1, 0),
|
||||
});
|
||||
|
||||
const withNextSuggestionSelected = (
|
||||
state: AutocompleteFieldState,
|
||||
props: AutocompleteFieldProps
|
||||
): AutocompleteFieldState => ({
|
||||
...state,
|
||||
selectedIndex:
|
||||
props.suggestions.length === 0
|
||||
? null
|
||||
: state.selectedIndex !== null
|
||||
? (state.selectedIndex + 1) % props.suggestions.length
|
||||
: 0,
|
||||
});
|
||||
|
||||
const withSuggestionAtIndexSelected = (suggestionIndex: number) => (
|
||||
state: AutocompleteFieldState,
|
||||
props: AutocompleteFieldProps
|
||||
): AutocompleteFieldState => ({
|
||||
...state,
|
||||
selectedIndex:
|
||||
props.suggestions.length === 0
|
||||
? null
|
||||
: suggestionIndex >= 0 && suggestionIndex < props.suggestions.length
|
||||
? suggestionIndex
|
||||
: 0,
|
||||
});
|
||||
|
||||
const withSuggestionsVisible = (state: AutocompleteFieldState) => ({
|
||||
...state,
|
||||
areSuggestionsVisible: true,
|
||||
});
|
||||
|
||||
const withSuggestionsHidden = (state: AutocompleteFieldState) => ({
|
||||
...state,
|
||||
areSuggestionsVisible: false,
|
||||
selectedIndex: null,
|
||||
});
|
||||
|
||||
const FixedEuiFieldSearch: React.FC<
|
||||
React.InputHTMLAttributes<HTMLInputElement> &
|
||||
EuiFieldSearchProps & {
|
||||
inputRef?: (element: HTMLInputElement | null) => void;
|
||||
onSearch: (value: string) => void;
|
||||
}
|
||||
> = EuiFieldSearch as any;
|
||||
|
||||
const AutocompleteContainer = styled.div`
|
||||
position: relative;
|
||||
`;
|
||||
|
||||
const SuggestionsPanel = styled(EuiPanel).attrs(() => ({
|
||||
paddingSize: 'none',
|
||||
hasShadow: true,
|
||||
}))`
|
||||
position: absolute;
|
||||
width: 100%;
|
||||
margin-top: 2px;
|
||||
overflow: hidden;
|
||||
z-index: 1000;
|
||||
`;
|
|
@ -1,119 +0,0 @@
|
|||
/*
|
||||
* Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
|
||||
* or more contributor license agreements. Licensed under the Elastic License
|
||||
* 2.0; you may not use this file except in compliance with the Elastic License
|
||||
* 2.0.
|
||||
*/
|
||||
|
||||
import { EuiIcon } from '@elastic/eui';
|
||||
import { tint } from 'polished';
|
||||
import React from 'react';
|
||||
import styled from 'styled-components';
|
||||
|
||||
import { QuerySuggestion } from '../../../../../../src/plugins/data/public';
|
||||
|
||||
interface SuggestionItemProps {
|
||||
isSelected?: boolean;
|
||||
onClick?: React.MouseEventHandler<HTMLDivElement>;
|
||||
onMouseEnter?: React.MouseEventHandler<HTMLDivElement>;
|
||||
suggestion: QuerySuggestion;
|
||||
}
|
||||
|
||||
export const SuggestionItem: React.FC<SuggestionItemProps> = (props) => {
|
||||
const { isSelected, onClick, onMouseEnter, suggestion } = props;
|
||||
|
||||
return (
|
||||
<SuggestionItemContainer isSelected={isSelected} onClick={onClick} onMouseEnter={onMouseEnter}>
|
||||
<SuggestionItemIconField suggestionType={suggestion.type}>
|
||||
<EuiIcon type={getEuiIconType(suggestion.type)} />
|
||||
</SuggestionItemIconField>
|
||||
<SuggestionItemTextField>{suggestion.text}</SuggestionItemTextField>
|
||||
<SuggestionItemDescriptionField>{suggestion.description}</SuggestionItemDescriptionField>
|
||||
</SuggestionItemContainer>
|
||||
);
|
||||
};
|
||||
|
||||
SuggestionItem.defaultProps = {
|
||||
isSelected: false,
|
||||
};
|
||||
|
||||
const SuggestionItemContainer = styled.div<{
|
||||
isSelected?: boolean;
|
||||
}>`
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
font-size: ${(props) => props.theme.eui.default.euiFontSizeS};
|
||||
height: ${(props) => props.theme.eui.default.euiSizeXl};
|
||||
white-space: nowrap;
|
||||
background-color: ${(props) =>
|
||||
props.isSelected ? props.theme.eui.default.euiColorLightestShade : 'transparent'};
|
||||
`;
|
||||
|
||||
const SuggestionItemField = styled.div`
|
||||
align-items: center;
|
||||
cursor: pointer;
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
height: ${(props) => props.theme.eui.default.euiSizeXl};
|
||||
padding: ${(props) => props.theme.eui.default.euiSizeXs};
|
||||
`;
|
||||
|
||||
const SuggestionItemIconField = styled(SuggestionItemField)<{ suggestionType: string }>`
|
||||
background-color: ${(props) => {
|
||||
return tint(0.1, getEuiIconColor(props.theme, props.suggestionType));
|
||||
}};
|
||||
color: ${(props) => {
|
||||
return getEuiIconColor(props.theme, props.suggestionType);
|
||||
}};
|
||||
flex: 0 0 auto;
|
||||
justify-content: center;
|
||||
width: ${(props) => props.theme.eui.default.euiSizeXl};
|
||||
`;
|
||||
|
||||
const SuggestionItemTextField = styled(SuggestionItemField)`
|
||||
flex: 2 0 0;
|
||||
font-family: ${(props) => props.theme.eui.default.euiCodeFontFamily};
|
||||
`;
|
||||
|
||||
const SuggestionItemDescriptionField = styled(SuggestionItemField)`
|
||||
flex: 3 0 0;
|
||||
p {
|
||||
display: inline;
|
||||
span {
|
||||
font-family: ${(props) => props.theme.eui.default.euiCodeFontFamily};
|
||||
}
|
||||
}
|
||||
`;
|
||||
|
||||
const getEuiIconType = (suggestionType: string) => {
|
||||
switch (suggestionType) {
|
||||
case 'field':
|
||||
return 'kqlField';
|
||||
case 'value':
|
||||
return 'kqlValue';
|
||||
case 'recentSearch':
|
||||
return 'search';
|
||||
case 'conjunction':
|
||||
return 'kqlSelector';
|
||||
case 'operator':
|
||||
return 'kqlOperand';
|
||||
default:
|
||||
return 'empty';
|
||||
}
|
||||
};
|
||||
|
||||
const getEuiIconColor = (theme: any, suggestionType: string): string => {
|
||||
switch (suggestionType) {
|
||||
case 'field':
|
||||
return theme.eui.default.euiColorVis7;
|
||||
case 'value':
|
||||
return theme.eui.default.euiColorVis0;
|
||||
case 'operator':
|
||||
return theme.eui.default.euiColorVis1;
|
||||
case 'conjunction':
|
||||
return theme.eui.default.euiColorVis2;
|
||||
case 'recentSearch':
|
||||
default:
|
||||
return theme.eui.default.euiColorMediumShade;
|
||||
}
|
||||
};
|
|
@ -1,117 +0,0 @@
|
|||
/*
|
||||
* Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
|
||||
* or more contributor license agreements. Licensed under the Elastic License
|
||||
* 2.0; you may not use this file except in compliance with the Elastic License
|
||||
* 2.0.
|
||||
*/
|
||||
|
||||
// @ts-ignore
|
||||
import { EuiBasicTable, EuiLink } from '@elastic/eui';
|
||||
import { InjectedIntl, injectI18n } from '@kbn/i18n/react';
|
||||
import React from 'react';
|
||||
import { configBlockSchemas } from '../../common/config_schemas';
|
||||
import { translateConfigSchema } from '../../common/config_schemas_translations_map';
|
||||
import { ConfigurationBlock } from '../../common/domain_types';
|
||||
|
||||
interface ComponentProps {
|
||||
configs: {
|
||||
error?: string | undefined;
|
||||
list: ConfigurationBlock[];
|
||||
page: number;
|
||||
total: number;
|
||||
};
|
||||
onConfigClick: (action: 'edit' | 'delete', config: ConfigurationBlock) => any;
|
||||
onTableChange: (index: number, size: number) => void;
|
||||
intl: InjectedIntl;
|
||||
}
|
||||
const pagination = {
|
||||
pageSize: 5,
|
||||
hidePerPageOptions: true,
|
||||
};
|
||||
|
||||
const ConfigListUi: React.FC<ComponentProps> = (props) => (
|
||||
<EuiBasicTable
|
||||
items={props.configs.list || []}
|
||||
itemId="id"
|
||||
pagination={{
|
||||
...pagination,
|
||||
totalItemCount: props.configs.total,
|
||||
pageIndex: props.configs.page,
|
||||
}}
|
||||
onChange={(
|
||||
table: { page: { index: number; size: number } } = { page: { index: 0, size: 5 } }
|
||||
) => {
|
||||
if (props.onTableChange) {
|
||||
props.onTableChange(table.page.index, table.page.size);
|
||||
}
|
||||
}}
|
||||
columns={[
|
||||
{
|
||||
field: 'type',
|
||||
name: props.intl.formatMessage({
|
||||
id: 'xpack.beatsManagement.tagTable.typeColumnName',
|
||||
defaultMessage: 'Type',
|
||||
}),
|
||||
truncateText: false,
|
||||
render: (type: string, config: ConfigurationBlock) => {
|
||||
const translatedConfig = translateConfigSchema(configBlockSchemas).find(
|
||||
(sc) => sc.id === type
|
||||
);
|
||||
|
||||
return (
|
||||
<EuiLink onClick={() => props.onConfigClick('edit', config)}>
|
||||
{translatedConfig ? translatedConfig.name : type}
|
||||
</EuiLink>
|
||||
);
|
||||
},
|
||||
},
|
||||
{
|
||||
field: 'module',
|
||||
name: props.intl.formatMessage({
|
||||
id: 'xpack.beatsManagement.tagTable.moduleColumnName',
|
||||
defaultMessage: 'Module',
|
||||
}),
|
||||
truncateText: false,
|
||||
render: (value: string, config: ConfigurationBlock) => {
|
||||
return (
|
||||
config.config._sub_type ||
|
||||
props.intl.formatMessage({
|
||||
id: 'xpack.beatsManagement.tagTable.moduleColumn.notAvailibaleLabel',
|
||||
defaultMessage: 'N/A',
|
||||
})
|
||||
);
|
||||
},
|
||||
},
|
||||
{
|
||||
field: 'description',
|
||||
name: props.intl.formatMessage({
|
||||
id: 'xpack.beatsManagement.tagTable.descriptionColumnName',
|
||||
defaultMessage: 'Description',
|
||||
}),
|
||||
},
|
||||
{
|
||||
name: props.intl.formatMessage({
|
||||
id: 'xpack.beatsManagement.tagTable.actionsColumnName',
|
||||
defaultMessage: 'Actions',
|
||||
}),
|
||||
actions: [
|
||||
{
|
||||
name: props.intl.formatMessage({
|
||||
id: 'xpack.beatsManagement.tagTable.actions.removeButtonAriaLabel',
|
||||
defaultMessage: 'Remove',
|
||||
}),
|
||||
description: props.intl.formatMessage({
|
||||
id: 'xpack.beatsManagement.tagTable.actions.removeTooltip',
|
||||
defaultMessage: 'Remove this config from tag',
|
||||
}),
|
||||
type: 'icon',
|
||||
icon: 'trash',
|
||||
onClick: (item: ConfigurationBlock) => props.onConfigClick('delete', item),
|
||||
},
|
||||
],
|
||||
},
|
||||
]}
|
||||
/>
|
||||
);
|
||||
|
||||
export const ConfigList = injectI18n(ConfigListUi);
|
|
@ -1,292 +0,0 @@
|
|||
/*
|
||||
* Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
|
||||
* or more contributor license agreements. Licensed under the Elastic License
|
||||
* 2.0; you may not use this file except in compliance with the Elastic License
|
||||
* 2.0.
|
||||
*/
|
||||
|
||||
import {
|
||||
EuiBasicTable,
|
||||
EuiButton,
|
||||
EuiCodeBlock,
|
||||
EuiCopy,
|
||||
EuiFlexGroup,
|
||||
EuiFlexItem,
|
||||
EuiLoadingSpinner,
|
||||
EuiModalBody,
|
||||
// @ts-ignore
|
||||
EuiSelect,
|
||||
EuiSpacer,
|
||||
EuiTitle,
|
||||
} from '@elastic/eui';
|
||||
import { FormattedMessage } from '@kbn/i18n/react';
|
||||
import { upperFirst } from 'lodash';
|
||||
import React from 'react';
|
||||
import { CMBeat } from '../../common/domain_types';
|
||||
|
||||
interface ComponentProps {
|
||||
/** Such as kibanas basePath, for use to generate command */
|
||||
frameworkBasePath?: string;
|
||||
enrollmentToken?: string;
|
||||
getBeatWithToken(token: string): Promise<CMBeat | null>;
|
||||
createEnrollmentToken(): Promise<void>;
|
||||
onBeatEnrolled(enrolledBeat: CMBeat): void;
|
||||
}
|
||||
|
||||
interface ComponentState {
|
||||
enrolledBeat: CMBeat | null;
|
||||
hasPolledForBeat: boolean;
|
||||
command: string;
|
||||
beatType: string;
|
||||
}
|
||||
|
||||
export class EnrollBeat extends React.Component<ComponentProps, ComponentState> {
|
||||
private pinging = false;
|
||||
constructor(props: ComponentProps) {
|
||||
super(props);
|
||||
|
||||
this.state = {
|
||||
enrolledBeat: null,
|
||||
hasPolledForBeat: false,
|
||||
command: 'sudo {{beatType}}',
|
||||
beatType: 'filebeat',
|
||||
};
|
||||
}
|
||||
public pingForBeatWithToken = async (token: string): Promise<CMBeat | void> => {
|
||||
try {
|
||||
const beats = await this.props.getBeatWithToken(token);
|
||||
|
||||
if (!beats) {
|
||||
throw new Error('no beats');
|
||||
}
|
||||
return beats;
|
||||
} catch (err) {
|
||||
if (this.pinging) {
|
||||
const timeout = (ms: number) => new Promise((res) => setTimeout(res, ms));
|
||||
await timeout(5000);
|
||||
return await this.pingForBeatWithToken(token);
|
||||
}
|
||||
}
|
||||
};
|
||||
public async componentDidMount() {
|
||||
if (!this.props.enrollmentToken) {
|
||||
await this.props.createEnrollmentToken();
|
||||
}
|
||||
}
|
||||
public waitForTokenToEnrollBeat = async () => {
|
||||
if (this.pinging || !this.props.enrollmentToken) {
|
||||
return;
|
||||
}
|
||||
this.pinging = true;
|
||||
const enrolledBeat = (await this.pingForBeatWithToken(this.props.enrollmentToken)) as CMBeat;
|
||||
|
||||
this.setState({
|
||||
enrolledBeat,
|
||||
});
|
||||
this.props.onBeatEnrolled(enrolledBeat);
|
||||
this.pinging = false;
|
||||
};
|
||||
public render() {
|
||||
if (!this.props.enrollmentToken && !this.state.enrolledBeat) {
|
||||
return null;
|
||||
}
|
||||
if (this.props.enrollmentToken && !this.state.enrolledBeat) {
|
||||
this.waitForTokenToEnrollBeat();
|
||||
}
|
||||
const cmdText = `${this.state.command
|
||||
.replace('{{beatType}}', this.state.beatType)
|
||||
.replace('{{beatTypeInCaps}}', upperFirst(this.state.beatType))} enroll ${
|
||||
window.location.protocol
|
||||
}//${window.location.host}${this.props.frameworkBasePath} ${this.props.enrollmentToken}`;
|
||||
|
||||
return (
|
||||
<React.Fragment>
|
||||
{!this.state.enrolledBeat && (
|
||||
<React.Fragment>
|
||||
<EuiFlexGroup>
|
||||
<EuiFlexItem>
|
||||
<EuiFlexGroup gutterSize="s" alignItems="center">
|
||||
<EuiFlexItem grow={false}>
|
||||
<EuiTitle size="xs">
|
||||
<h3>
|
||||
<FormattedMessage
|
||||
id="xpack.beatsManagement.enrollBeat.beatTypeTitle"
|
||||
defaultMessage="Beat type:"
|
||||
/>
|
||||
</h3>
|
||||
</EuiTitle>
|
||||
</EuiFlexItem>
|
||||
</EuiFlexGroup>
|
||||
<EuiSelect
|
||||
value={this.state.beatType}
|
||||
options={[
|
||||
{
|
||||
value: 'filebeat',
|
||||
text: 'Filebeat',
|
||||
},
|
||||
{
|
||||
value: 'metricbeat',
|
||||
text: 'Metricbeat',
|
||||
},
|
||||
]}
|
||||
onChange={(e: any) => this.setState({ beatType: e.target.value })}
|
||||
fullWidth={true}
|
||||
/>
|
||||
</EuiFlexItem>
|
||||
</EuiFlexGroup>
|
||||
|
||||
<br />
|
||||
<br />
|
||||
<EuiFlexGroup>
|
||||
<EuiFlexItem>
|
||||
<EuiFlexGroup gutterSize="s" alignItems="center">
|
||||
<EuiFlexItem grow={false}>
|
||||
<EuiTitle size="xs">
|
||||
<h3>
|
||||
<FormattedMessage
|
||||
id="xpack.beatsManagement.enrollBeat.platformTitle"
|
||||
defaultMessage="Platform:"
|
||||
/>
|
||||
</h3>
|
||||
</EuiTitle>
|
||||
</EuiFlexItem>
|
||||
</EuiFlexGroup>
|
||||
<EuiSelect
|
||||
value={this.state.command}
|
||||
options={[
|
||||
{
|
||||
value: `sudo {{beatType}}`,
|
||||
text: 'DEB / RPM',
|
||||
},
|
||||
{
|
||||
value: `PS C:\\Program Files\\{{beatTypeInCaps}}> {{beatType}}.exe`,
|
||||
text: 'Windows',
|
||||
},
|
||||
{
|
||||
value: `./{{beatType}}`,
|
||||
text: 'MacOS',
|
||||
},
|
||||
]}
|
||||
onChange={(e: any) => this.setState({ command: e.target.value })}
|
||||
fullWidth={true}
|
||||
/>
|
||||
</EuiFlexItem>
|
||||
</EuiFlexGroup>
|
||||
<br />
|
||||
<br />
|
||||
{this.state.command && (
|
||||
<EuiFlexGroup>
|
||||
<EuiFlexItem>
|
||||
<EuiFlexGroup justifyContent="spaceBetween" alignItems="flexEnd">
|
||||
<EuiFlexItem grow={false}>
|
||||
<EuiTitle size="xs">
|
||||
<h3>
|
||||
<FormattedMessage
|
||||
id="xpack.beatsManagement.enrollBeat.yourBeatTypeHostTitle"
|
||||
defaultMessage="On the host where your {beatType} is installed, run:"
|
||||
values={{
|
||||
beatType: upperFirst(this.state.beatType),
|
||||
}}
|
||||
/>
|
||||
</h3>
|
||||
</EuiTitle>
|
||||
</EuiFlexItem>
|
||||
<EuiFlexItem className="homTutorial__instruction" grow={false}>
|
||||
<EuiCopy textToCopy={cmdText}>
|
||||
{(copy: any) => (
|
||||
<EuiButton size="s" onClick={copy}>
|
||||
<FormattedMessage
|
||||
id="xpack.beatsManagement.enrollBeat.copyButtonLabel"
|
||||
defaultMessage="Copy command"
|
||||
/>
|
||||
</EuiButton>
|
||||
)}
|
||||
</EuiCopy>
|
||||
</EuiFlexItem>
|
||||
</EuiFlexGroup>
|
||||
|
||||
<div className="eui-textBreakAll">
|
||||
<EuiSpacer size="m" />
|
||||
<EuiCodeBlock language="sh">{`$ ${cmdText}`}</EuiCodeBlock>
|
||||
</div>
|
||||
|
||||
<EuiSpacer size="m" />
|
||||
|
||||
<EuiFlexGroup>
|
||||
<EuiFlexItem>
|
||||
<EuiFlexGroup gutterSize="s" alignItems="center">
|
||||
<EuiFlexItem grow={false}>
|
||||
<EuiTitle size="xs">
|
||||
<h3>
|
||||
<FormattedMessage
|
||||
id="xpack.beatsManagement.enrollBeat.waitingBeatTypeToEnrollTitle"
|
||||
defaultMessage="Waiting for {beatType} to enroll…"
|
||||
values={{
|
||||
beatType: upperFirst(this.state.beatType),
|
||||
}}
|
||||
/>
|
||||
</h3>
|
||||
</EuiTitle>
|
||||
</EuiFlexItem>
|
||||
</EuiFlexGroup>
|
||||
</EuiFlexItem>
|
||||
</EuiFlexGroup>
|
||||
<br />
|
||||
<EuiLoadingSpinner size="l" />
|
||||
</EuiFlexItem>
|
||||
</EuiFlexGroup>
|
||||
)}
|
||||
</React.Fragment>
|
||||
)}
|
||||
{this.state.enrolledBeat && (
|
||||
<EuiModalBody>
|
||||
<FormattedMessage
|
||||
id="xpack.beatsManagement.enrollBeat.beatEnrolledTitle"
|
||||
defaultMessage="The Beat is now enrolled in central management:"
|
||||
/>
|
||||
<br />
|
||||
<br />
|
||||
<br />
|
||||
<EuiBasicTable
|
||||
items={[this.state.enrolledBeat]}
|
||||
columns={[
|
||||
{
|
||||
field: 'type',
|
||||
name: (
|
||||
<FormattedMessage
|
||||
id="xpack.beatsManagement.enrollBeat.beatTypeColumnName"
|
||||
defaultMessage="Beat Type"
|
||||
/>
|
||||
),
|
||||
sortable: false,
|
||||
},
|
||||
{
|
||||
field: 'version',
|
||||
name: (
|
||||
<FormattedMessage
|
||||
id="xpack.beatsManagement.enrollBeat.versionColumnName"
|
||||
defaultMessage="Version"
|
||||
/>
|
||||
),
|
||||
sortable: false,
|
||||
},
|
||||
{
|
||||
field: 'host_name',
|
||||
name: (
|
||||
<FormattedMessage
|
||||
id="xpack.beatsManagement.enrollBeat.hostnameColumnName"
|
||||
defaultMessage="Hostname"
|
||||
/>
|
||||
),
|
||||
sortable: false,
|
||||
},
|
||||
]}
|
||||
/>
|
||||
<br />
|
||||
<br />
|
||||
</EuiModalBody>
|
||||
)}
|
||||
</React.Fragment>
|
||||
);
|
||||
}
|
||||
}
|
|
@ -1,114 +0,0 @@
|
|||
/*
|
||||
* Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
|
||||
* or more contributor license agreements. Licensed under the Elastic License
|
||||
* 2.0; you may not use this file except in compliance with the Elastic License
|
||||
* 2.0.
|
||||
*/
|
||||
|
||||
// @ts-ignore
|
||||
import { CommonProps, EuiCodeEditor, EuiCodeEditorProps, EuiFormRow } from '@elastic/eui';
|
||||
// @ts-ignore
|
||||
import { FormsyInputProps, withFormsy } from 'formsy-react';
|
||||
import React, { Component, InputHTMLAttributes } from 'react';
|
||||
|
||||
interface ComponentProps extends FormsyInputProps, CommonProps, EuiCodeEditorProps {
|
||||
instantValidation: boolean;
|
||||
label: string;
|
||||
isReadOnly: boolean;
|
||||
mode: 'javascript' | 'yaml';
|
||||
errorText: string;
|
||||
fullWidth: boolean;
|
||||
helpText: React.ReactElement<any>;
|
||||
compressed: boolean;
|
||||
onChange(value: string): void;
|
||||
onBlur(): void;
|
||||
}
|
||||
|
||||
interface ComponentState {
|
||||
allowError: boolean;
|
||||
}
|
||||
|
||||
class CodeEditor extends Component<
|
||||
InputHTMLAttributes<HTMLTextAreaElement> & ComponentProps,
|
||||
ComponentState
|
||||
> {
|
||||
public static defaultProps = {
|
||||
passRequiredToField: true,
|
||||
};
|
||||
|
||||
public state = { allowError: false };
|
||||
|
||||
public componentDidMount() {
|
||||
const { defaultValue, setValue } = this.props;
|
||||
setValue(defaultValue || '');
|
||||
}
|
||||
|
||||
public UNSAFE_componentWillReceiveProps(nextProps: ComponentProps) {
|
||||
if (nextProps.isFormSubmitted()) {
|
||||
this.showError();
|
||||
}
|
||||
}
|
||||
|
||||
public handleChange = (value: string) => {
|
||||
this.props.setValue(value);
|
||||
if (this.props.onChange) {
|
||||
this.props.onChange(value);
|
||||
}
|
||||
if (this.props.instantValidation) {
|
||||
this.showError();
|
||||
}
|
||||
};
|
||||
|
||||
public handleBlur = () => {
|
||||
this.showError();
|
||||
if (this.props.onBlur) {
|
||||
this.props.onBlur();
|
||||
}
|
||||
};
|
||||
|
||||
public showError = () => this.setState({ allowError: true });
|
||||
|
||||
public render() {
|
||||
const {
|
||||
name,
|
||||
id,
|
||||
label,
|
||||
isReadOnly,
|
||||
isValid,
|
||||
getValue,
|
||||
isPristine,
|
||||
getErrorMessage,
|
||||
mode,
|
||||
fullWidth,
|
||||
className,
|
||||
helpText,
|
||||
} = this.props;
|
||||
|
||||
const { allowError } = this.state;
|
||||
const error = !isPristine() && !isValid() && allowError;
|
||||
|
||||
return (
|
||||
<EuiFormRow
|
||||
id={id}
|
||||
label={label}
|
||||
helpText={helpText}
|
||||
isInvalid={error}
|
||||
error={error ? getErrorMessage() : []}
|
||||
>
|
||||
<EuiCodeEditor
|
||||
name={name}
|
||||
mode={mode}
|
||||
theme="github"
|
||||
value={getValue() || ''}
|
||||
isReadOnly={isReadOnly || false}
|
||||
onChange={this.handleChange}
|
||||
onBlur={this.handleBlur}
|
||||
width={fullWidth ? '100%' : undefined}
|
||||
className={className}
|
||||
/>
|
||||
</EuiFormRow>
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
export const FormsyEuiCodeEditor = withFormsy(CodeEditor);
|
|
@ -1,12 +0,0 @@
|
|||
/*
|
||||
* Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
|
||||
* or more contributor license agreements. Licensed under the Elastic License
|
||||
* 2.0; you may not use this file except in compliance with the Elastic License
|
||||
* 2.0.
|
||||
*/
|
||||
|
||||
export { FormsyEuiCodeEditor } from './code_editor';
|
||||
export { FormsyEuiFieldText } from './input';
|
||||
export { FormsyEuiPasswordText } from './password_input';
|
||||
export { FormsyEuiMultiFieldText } from './multi_input';
|
||||
export { FormsyEuiSelect } from './select';
|
|
@ -1,120 +0,0 @@
|
|||
/*
|
||||
* Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
|
||||
* or more contributor license agreements. Licensed under the Elastic License
|
||||
* 2.0; you may not use this file except in compliance with the Elastic License
|
||||
* 2.0.
|
||||
*/
|
||||
|
||||
import { EuiFieldText, EuiFormRow } from '@elastic/eui';
|
||||
import { CommonProps } from '@elastic/eui/src/components/common';
|
||||
import { FormsyInputProps, withFormsy } from 'formsy-react';
|
||||
import React, { Component, InputHTMLAttributes } from 'react';
|
||||
|
||||
interface ComponentProps
|
||||
extends FormsyInputProps,
|
||||
CommonProps,
|
||||
Omit<React.ComponentProps<typeof EuiFieldText>, 'onChange' | 'onBlur'> {
|
||||
instantValidation?: boolean;
|
||||
label: string;
|
||||
errorText: string;
|
||||
fullWidth: boolean;
|
||||
helpText: React.ReactElement<any>;
|
||||
compressed: boolean;
|
||||
onChange?(e: React.ChangeEvent<HTMLInputElement>, value: any): void;
|
||||
onBlur?(e: React.ChangeEvent<HTMLInputElement>, value: any): void;
|
||||
}
|
||||
|
||||
interface ComponentState {
|
||||
allowError: boolean;
|
||||
}
|
||||
|
||||
class FieldText extends Component<
|
||||
InputHTMLAttributes<HTMLInputElement> & ComponentProps,
|
||||
ComponentState
|
||||
> {
|
||||
public static defaultProps = {
|
||||
passRequiredToField: true,
|
||||
};
|
||||
|
||||
public state = { allowError: false };
|
||||
|
||||
public componentDidMount() {
|
||||
const { defaultValue, setValue } = this.props;
|
||||
if (defaultValue) {
|
||||
setValue(defaultValue);
|
||||
}
|
||||
}
|
||||
|
||||
public UNSAFE_componentWillReceiveProps(nextProps: ComponentProps) {
|
||||
if (nextProps.isFormSubmitted()) {
|
||||
this.showError();
|
||||
}
|
||||
}
|
||||
|
||||
public handleChange = (e: React.ChangeEvent<HTMLInputElement>) => {
|
||||
const { value } = e.currentTarget;
|
||||
this.props.setValue(value);
|
||||
if (this.props.onChange) {
|
||||
this.props.onChange(e, e.currentTarget.value);
|
||||
}
|
||||
if (this.props.instantValidation) {
|
||||
this.showError();
|
||||
}
|
||||
};
|
||||
|
||||
public handleBlur = (e: React.ChangeEvent<HTMLInputElement>) => {
|
||||
this.showError();
|
||||
if (this.props.onBlur) {
|
||||
this.props.onBlur(e, e.currentTarget.value);
|
||||
}
|
||||
};
|
||||
|
||||
public showError = () => this.setState({ allowError: true });
|
||||
|
||||
public render() {
|
||||
const {
|
||||
name,
|
||||
id,
|
||||
required,
|
||||
label,
|
||||
getValue,
|
||||
isValid,
|
||||
isPristine,
|
||||
getErrorMessage,
|
||||
fullWidth,
|
||||
className,
|
||||
disabled,
|
||||
helpText,
|
||||
placeholder,
|
||||
} = this.props;
|
||||
|
||||
const { allowError } = this.state;
|
||||
const error = !isPristine() && !isValid() && allowError;
|
||||
|
||||
return (
|
||||
<EuiFormRow
|
||||
id={id}
|
||||
label={label}
|
||||
helpText={helpText}
|
||||
isInvalid={!disabled && error}
|
||||
error={!disabled && error ? getErrorMessage() : []}
|
||||
>
|
||||
<EuiFieldText
|
||||
id={id}
|
||||
name={name}
|
||||
placeholder={placeholder}
|
||||
value={getValue() || ''}
|
||||
isInvalid={!disabled && error}
|
||||
onChange={this.handleChange}
|
||||
onBlur={this.handleBlur}
|
||||
fullWidth={fullWidth}
|
||||
disabled={disabled}
|
||||
required={required}
|
||||
className={className}
|
||||
/>
|
||||
</EuiFormRow>
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
export const FormsyEuiFieldText = withFormsy(FieldText);
|
|
@ -1,122 +0,0 @@
|
|||
/*
|
||||
* Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
|
||||
* or more contributor license agreements. Licensed under the Elastic License
|
||||
* 2.0; you may not use this file except in compliance with the Elastic License
|
||||
* 2.0.
|
||||
*/
|
||||
|
||||
import { EuiFormRow, EuiTextArea, EuiTextAreaProps } from '@elastic/eui';
|
||||
import { CommonProps } from '@elastic/eui/src/components/common';
|
||||
// @ts-ignore
|
||||
import { FormsyInputProps, withFormsy } from 'formsy-react';
|
||||
import React, { Component, InputHTMLAttributes } from 'react';
|
||||
|
||||
interface ComponentProps
|
||||
extends FormsyInputProps,
|
||||
CommonProps,
|
||||
Omit<EuiTextAreaProps, 'onChange' | 'onBlur'> {
|
||||
instantValidation: boolean;
|
||||
label: string;
|
||||
errorText: string;
|
||||
fullWidth: boolean;
|
||||
helpText: React.ReactElement<any>;
|
||||
compressed: boolean;
|
||||
onChange(e: React.ChangeEvent<HTMLTextAreaElement>, value: any): void;
|
||||
onBlur(e: React.ChangeEvent<HTMLTextAreaElement>, value: any): void;
|
||||
}
|
||||
|
||||
interface ComponentState {
|
||||
allowError: boolean;
|
||||
}
|
||||
|
||||
class MultiFieldText extends Component<
|
||||
InputHTMLAttributes<HTMLTextAreaElement> & ComponentProps,
|
||||
ComponentState
|
||||
> {
|
||||
public static defaultProps = {
|
||||
passRequiredToField: true,
|
||||
};
|
||||
|
||||
public state = { allowError: false };
|
||||
|
||||
public componentDidMount() {
|
||||
const { defaultValue, setValue } = this.props;
|
||||
|
||||
if (defaultValue) {
|
||||
setValue(defaultValue);
|
||||
}
|
||||
}
|
||||
|
||||
public UNSAFE_componentWillReceiveProps(nextProps: ComponentProps) {
|
||||
if (nextProps.isFormSubmitted()) {
|
||||
this.showError();
|
||||
}
|
||||
}
|
||||
|
||||
public handleChange = (e: React.ChangeEvent<HTMLTextAreaElement>) => {
|
||||
const value = e.currentTarget.value.split('\n');
|
||||
this.props.setValue(value);
|
||||
if (this.props.onChange) {
|
||||
this.props.onChange(e, value);
|
||||
}
|
||||
if (this.props.instantValidation) {
|
||||
this.showError();
|
||||
}
|
||||
};
|
||||
|
||||
public handleBlur = (e: React.ChangeEvent<HTMLTextAreaElement>) => {
|
||||
this.showError();
|
||||
if (this.props.onBlur) {
|
||||
this.props.onBlur(e, e.currentTarget.value);
|
||||
}
|
||||
};
|
||||
|
||||
public showError = () => this.setState({ allowError: true });
|
||||
|
||||
public render() {
|
||||
const {
|
||||
name,
|
||||
id,
|
||||
required,
|
||||
label,
|
||||
getValue,
|
||||
isValid,
|
||||
isPristine,
|
||||
getErrorMessage,
|
||||
fullWidth,
|
||||
className,
|
||||
disabled,
|
||||
helpText,
|
||||
placeholder,
|
||||
} = this.props;
|
||||
|
||||
const { allowError } = this.state;
|
||||
const error = !isPristine() && !isValid() && allowError;
|
||||
|
||||
return (
|
||||
<EuiFormRow
|
||||
id={id}
|
||||
label={label}
|
||||
helpText={helpText}
|
||||
isInvalid={!disabled && error}
|
||||
error={!disabled && error ? getErrorMessage() : []}
|
||||
>
|
||||
<EuiTextArea
|
||||
id={id}
|
||||
name={name}
|
||||
value={getValue() ? getValue().join('\n') : ''}
|
||||
isInvalid={!disabled && error}
|
||||
placeholder={placeholder}
|
||||
onChange={this.handleChange}
|
||||
onBlur={this.handleBlur}
|
||||
fullWidth={fullWidth}
|
||||
disabled={disabled}
|
||||
required={required}
|
||||
className={className}
|
||||
/>
|
||||
</EuiFormRow>
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
export const FormsyEuiMultiFieldText = withFormsy(MultiFieldText);
|
|
@ -1,114 +0,0 @@
|
|||
/*
|
||||
* Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
|
||||
* or more contributor license agreements. Licensed under the Elastic License
|
||||
* 2.0; you may not use this file except in compliance with the Elastic License
|
||||
* 2.0.
|
||||
*/
|
||||
|
||||
import { CommonProps, EuiFieldPassword, EuiFieldPasswordProps, EuiFormRow } from '@elastic/eui';
|
||||
import { FormsyInputProps, withFormsy } from 'formsy-react';
|
||||
import React, { Component, InputHTMLAttributes } from 'react';
|
||||
|
||||
interface ComponentProps
|
||||
extends FormsyInputProps,
|
||||
CommonProps,
|
||||
Omit<EuiFieldPasswordProps, 'onChange' | 'onBlur'> {
|
||||
instantValidation?: boolean;
|
||||
label: string;
|
||||
errorText: string;
|
||||
fullWidth: boolean;
|
||||
helpText: React.ReactElement<any>;
|
||||
compressed: boolean;
|
||||
onChange?(e: React.ChangeEvent<HTMLInputElement>, value: any): void;
|
||||
onBlur?(e: React.ChangeEvent<HTMLInputElement>, value: any): void;
|
||||
}
|
||||
|
||||
interface ComponentState {
|
||||
allowError: boolean;
|
||||
}
|
||||
|
||||
class FieldPassword extends Component<
|
||||
InputHTMLAttributes<HTMLInputElement> & ComponentProps,
|
||||
ComponentState
|
||||
> {
|
||||
constructor(props: any) {
|
||||
super(props);
|
||||
|
||||
this.state = {
|
||||
allowError: false,
|
||||
};
|
||||
}
|
||||
|
||||
public componentDidMount() {
|
||||
const { defaultValue, setValue } = this.props;
|
||||
if (defaultValue) {
|
||||
setValue(defaultValue);
|
||||
}
|
||||
}
|
||||
|
||||
public handleChange = (e: React.ChangeEvent<HTMLInputElement>) => {
|
||||
const { value } = e.currentTarget;
|
||||
this.props.setValue(value);
|
||||
if (this.props.onChange) {
|
||||
this.props.onChange(e, value);
|
||||
}
|
||||
if (this.props.instantValidation) {
|
||||
this.showError();
|
||||
}
|
||||
};
|
||||
|
||||
public handleBlur = (e: React.ChangeEvent<HTMLInputElement>) => {
|
||||
this.showError();
|
||||
if (this.props.onBlur) {
|
||||
this.props.onBlur(e, e.currentTarget.value);
|
||||
}
|
||||
};
|
||||
|
||||
public showError = () => this.setState({ allowError: true });
|
||||
|
||||
public render() {
|
||||
const {
|
||||
name,
|
||||
id,
|
||||
required,
|
||||
label,
|
||||
getValue,
|
||||
isValid,
|
||||
isPristine,
|
||||
getErrorMessage,
|
||||
fullWidth,
|
||||
className,
|
||||
disabled,
|
||||
helpText,
|
||||
onBlur,
|
||||
} = this.props;
|
||||
|
||||
const { allowError } = this.state;
|
||||
const error = !isPristine() && !isValid() && allowError;
|
||||
|
||||
return (
|
||||
<EuiFormRow
|
||||
id={id}
|
||||
label={label}
|
||||
helpText={helpText}
|
||||
isInvalid={!disabled && error}
|
||||
error={!disabled && error ? getErrorMessage() : []}
|
||||
>
|
||||
<EuiFieldPassword
|
||||
id={id}
|
||||
name={name}
|
||||
value={getValue() || ''}
|
||||
isInvalid={!disabled && error}
|
||||
onChange={this.handleChange}
|
||||
onBlur={onBlur}
|
||||
fullWidth={fullWidth}
|
||||
disabled={disabled}
|
||||
required={required}
|
||||
className={className}
|
||||
/>
|
||||
</EuiFormRow>
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
export const FormsyEuiPasswordText = withFormsy(FieldPassword);
|
|
@ -1,125 +0,0 @@
|
|||
/*
|
||||
* Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
|
||||
* or more contributor license agreements. Licensed under the Elastic License
|
||||
* 2.0; you may not use this file except in compliance with the Elastic License
|
||||
* 2.0.
|
||||
*/
|
||||
|
||||
import {
|
||||
EuiFormRow,
|
||||
// @ts-ignore
|
||||
EuiSelect,
|
||||
} from '@elastic/eui';
|
||||
import { CommonProps } from '@elastic/eui/src/components/common';
|
||||
// @ts-ignore
|
||||
import { FormsyInputProps, withFormsy } from 'formsy-react';
|
||||
import React, { Component, InputHTMLAttributes } from 'react';
|
||||
|
||||
const FixedSelect = EuiSelect as React.FC<any>;
|
||||
|
||||
interface ComponentProps extends FormsyInputProps, CommonProps {
|
||||
instantValidation: boolean;
|
||||
options: Array<{ value: string; text: string }>;
|
||||
label: string;
|
||||
errorText: string;
|
||||
fullWidth: boolean;
|
||||
helpText: React.ReactElement<any>;
|
||||
compressed: boolean;
|
||||
onChange(e: React.ChangeEvent<HTMLInputElement>, value: any): void;
|
||||
onBlur(e: React.ChangeEvent<HTMLInputElement>, value: any): void;
|
||||
}
|
||||
|
||||
interface ComponentState {
|
||||
allowError: boolean;
|
||||
}
|
||||
|
||||
class FieldSelect extends Component<
|
||||
InputHTMLAttributes<HTMLInputElement> & ComponentProps,
|
||||
ComponentState
|
||||
> {
|
||||
public static defaultProps = {
|
||||
passRequiredToField: true,
|
||||
};
|
||||
|
||||
public state = { allowError: false };
|
||||
|
||||
public componentDidMount() {
|
||||
const { defaultValue, setValue } = this.props;
|
||||
if (defaultValue) {
|
||||
setValue(defaultValue);
|
||||
}
|
||||
}
|
||||
|
||||
public UNSAFE_componentWillReceiveProps(nextProps: ComponentProps) {
|
||||
if (nextProps.isFormSubmitted()) {
|
||||
this.showError();
|
||||
}
|
||||
}
|
||||
|
||||
public handleChange = (e: React.ChangeEvent<HTMLInputElement>) => {
|
||||
const { value } = e.currentTarget;
|
||||
|
||||
this.props.setValue(value);
|
||||
if (this.props.onChange) {
|
||||
this.props.onChange(e, e.currentTarget.value);
|
||||
}
|
||||
if (this.props.instantValidation) {
|
||||
this.showError();
|
||||
}
|
||||
};
|
||||
|
||||
public handleBlur = (e: React.ChangeEvent<HTMLInputElement>) => {
|
||||
this.showError();
|
||||
if (this.props.onBlur) {
|
||||
this.props.onBlur(e, e.currentTarget.value);
|
||||
}
|
||||
};
|
||||
|
||||
public showError = () => this.setState({ allowError: true });
|
||||
|
||||
public render() {
|
||||
const {
|
||||
id,
|
||||
required,
|
||||
label,
|
||||
options,
|
||||
getValue,
|
||||
isValid,
|
||||
isPristine,
|
||||
getErrorMessage,
|
||||
fullWidth,
|
||||
className,
|
||||
disabled,
|
||||
helpText,
|
||||
} = this.props;
|
||||
|
||||
const { allowError } = this.state;
|
||||
const error = !isPristine() && !isValid() && allowError;
|
||||
|
||||
return (
|
||||
<EuiFormRow
|
||||
id={id}
|
||||
label={label}
|
||||
helpText={helpText}
|
||||
isInvalid={!disabled && error}
|
||||
error={!disabled && error ? getErrorMessage() : []}
|
||||
>
|
||||
<FixedSelect
|
||||
id={id}
|
||||
name={name}
|
||||
value={getValue() || ''}
|
||||
options={options}
|
||||
isInvalid={!disabled && error}
|
||||
onChange={this.handleChange}
|
||||
onBlur={this.handleBlur}
|
||||
fullWidth={fullWidth}
|
||||
disabled={disabled}
|
||||
required={required}
|
||||
className={className}
|
||||
/>
|
||||
</EuiFormRow>
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
export const FormsyEuiSelect = withFormsy(FieldSelect);
|
|
@ -1,12 +0,0 @@
|
|||
/*
|
||||
* Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
|
||||
* or more contributor license agreements. Licensed under the Elastic License
|
||||
* 2.0; you may not use this file except in compliance with the Elastic License
|
||||
* 2.0.
|
||||
*/
|
||||
|
||||
import styled from 'styled-components';
|
||||
|
||||
export const Background = styled.div`
|
||||
flex-grow: 1;
|
||||
`;
|
|
@ -1,31 +0,0 @@
|
|||
/*
|
||||
* Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
|
||||
* or more contributor license agreements. Licensed under the Elastic License
|
||||
* 2.0; you may not use this file except in compliance with the Elastic License
|
||||
* 2.0.
|
||||
*/
|
||||
|
||||
import { EuiEmptyPrompt, EuiFlexGroup, EuiFlexItem, EuiPageContent } from '@elastic/eui';
|
||||
import React from 'react';
|
||||
import { withRouter, RouteComponentProps } from 'react-router-dom';
|
||||
|
||||
interface LayoutProps extends RouteComponentProps {
|
||||
children: React.ReactNode;
|
||||
title: string | React.ReactNode;
|
||||
actionSection?: React.ReactNode;
|
||||
}
|
||||
|
||||
export const NoDataLayout = withRouter(({ actionSection, title, children }: LayoutProps) => (
|
||||
<EuiFlexGroup justifyContent="spaceAround">
|
||||
<EuiFlexItem grow={false}>
|
||||
<EuiPageContent>
|
||||
<EuiEmptyPrompt
|
||||
iconType="logoBeats"
|
||||
title={<h2>{title}</h2>}
|
||||
body={children}
|
||||
actions={actionSection}
|
||||
/>
|
||||
</EuiPageContent>
|
||||
</EuiFlexItem>
|
||||
</EuiFlexGroup>
|
||||
));
|
|
@ -1,84 +0,0 @@
|
|||
/*
|
||||
* Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
|
||||
* or more contributor license agreements. Licensed under the Elastic License
|
||||
* 2.0; you may not use this file except in compliance with the Elastic License
|
||||
* 2.0.
|
||||
*/
|
||||
|
||||
import {
|
||||
EuiHeader,
|
||||
EuiHeaderBreadcrumbs,
|
||||
EuiHeaderSection,
|
||||
EuiPage,
|
||||
EuiPageBody,
|
||||
EuiPageContent,
|
||||
EuiPageContentBody,
|
||||
EuiPageHeader,
|
||||
EuiPageHeaderSection,
|
||||
EuiTitle,
|
||||
} from '@elastic/eui';
|
||||
import React, { Component, ReactNode } from 'react';
|
||||
import styled from 'styled-components';
|
||||
import { BreadcrumbConsumer } from '../navigation/breadcrumb';
|
||||
|
||||
type RenderCallback = (component: () => JSX.Element) => void;
|
||||
interface PrimaryLayoutProps {
|
||||
title: string | React.ReactNode;
|
||||
actionSection?: React.ReactNode;
|
||||
hideBreadcrumbs?: boolean;
|
||||
}
|
||||
export class PrimaryLayout extends Component<PrimaryLayoutProps> {
|
||||
private actionSection: (() => JSX.Element) | null = null;
|
||||
constructor(props: PrimaryLayoutProps) {
|
||||
super(props);
|
||||
}
|
||||
|
||||
public render() {
|
||||
const children: (callback: RenderCallback) => void | ReactNode = this.props.children as any;
|
||||
return (
|
||||
<React.Fragment>
|
||||
{!this.props.hideBreadcrumbs && (
|
||||
<BreadcrumbConsumer>
|
||||
{({ breadcrumbs }) => (
|
||||
<HeaderWrapper>
|
||||
<EuiHeaderSection>
|
||||
<EuiHeaderBreadcrumbs breadcrumbs={breadcrumbs} />
|
||||
</EuiHeaderSection>
|
||||
</HeaderWrapper>
|
||||
)}
|
||||
</BreadcrumbConsumer>
|
||||
)}
|
||||
<EuiPage>
|
||||
<EuiPageBody>
|
||||
<EuiPageHeader>
|
||||
<EuiPageHeaderSection>
|
||||
<EuiTitle>
|
||||
<h1>{this.props.title}</h1>
|
||||
</EuiTitle>
|
||||
</EuiPageHeaderSection>
|
||||
<EuiPageHeaderSection>
|
||||
{(this.actionSection && this.actionSection()) || this.props.actionSection}
|
||||
</EuiPageHeaderSection>
|
||||
</EuiPageHeader>
|
||||
<EuiPageContent>
|
||||
<EuiPageContentBody>
|
||||
{(children && typeof children === 'function'
|
||||
? children(this.renderAction)
|
||||
: children) || <span />}
|
||||
</EuiPageContentBody>
|
||||
</EuiPageContent>
|
||||
</EuiPageBody>
|
||||
</EuiPage>
|
||||
</React.Fragment>
|
||||
);
|
||||
}
|
||||
|
||||
private renderAction = (component: () => JSX.Element) => {
|
||||
this.actionSection = component;
|
||||
this.forceUpdate();
|
||||
};
|
||||
}
|
||||
|
||||
const HeaderWrapper = styled(EuiHeader)`
|
||||
height: 29px;
|
||||
`;
|
|
@ -1,49 +0,0 @@
|
|||
/*
|
||||
* Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
|
||||
* or more contributor license agreements. Licensed under the Elastic License
|
||||
* 2.0; you may not use this file except in compliance with the Elastic License
|
||||
* 2.0.
|
||||
*/
|
||||
|
||||
import React from 'react';
|
||||
|
||||
import { EuiPageContent, EuiPageContentBody, EuiStepsHorizontal, EuiTitle } from '@elastic/eui';
|
||||
|
||||
interface LayoutProps {
|
||||
title: string;
|
||||
goTo: (path: string) => any;
|
||||
walkthroughSteps: Array<{
|
||||
id: string;
|
||||
name: string;
|
||||
}>;
|
||||
activePath: string;
|
||||
}
|
||||
|
||||
export const WalkthroughLayout: React.FC<LayoutProps> = ({
|
||||
walkthroughSteps,
|
||||
title,
|
||||
activePath,
|
||||
goTo,
|
||||
children,
|
||||
}) => {
|
||||
const indexOfCurrent = walkthroughSteps.findIndex((step) => activePath === step.id);
|
||||
return (
|
||||
<EuiPageContent>
|
||||
<EuiTitle>
|
||||
<h1 style={{ textAlign: 'center' }}>{title}</h1>
|
||||
</EuiTitle>
|
||||
<br />
|
||||
<br />
|
||||
<EuiStepsHorizontal
|
||||
steps={walkthroughSteps.map((step, i) => ({
|
||||
title: step.name,
|
||||
isComplete: i <= indexOfCurrent,
|
||||
onClick: () => goTo(step.id),
|
||||
}))}
|
||||
/>
|
||||
<br />
|
||||
<br />
|
||||
<EuiPageContentBody>{children}</EuiPageContentBody>
|
||||
</EuiPageContent>
|
||||
);
|
||||
};
|
|
@ -1,17 +0,0 @@
|
|||
/*
|
||||
* Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
|
||||
* or more contributor license agreements. Licensed under the Elastic License
|
||||
* 2.0; you may not use this file except in compliance with the Elastic License
|
||||
* 2.0.
|
||||
*/
|
||||
|
||||
import { EuiFlexGroup, EuiFlexItem, EuiLoadingSpinner } from '@elastic/eui';
|
||||
import * as React from 'react';
|
||||
|
||||
export const Loading: React.FC<{}> = () => (
|
||||
<EuiFlexGroup justifyContent="spaceAround">
|
||||
<EuiFlexItem grow={false}>
|
||||
<EuiLoadingSpinner size="xl" />
|
||||
</EuiFlexItem>
|
||||
</EuiFlexGroup>
|
||||
);
|
|
@ -1,64 +0,0 @@
|
|||
/*
|
||||
* Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
|
||||
* or more contributor license agreements. Licensed under the Elastic License
|
||||
* 2.0; you may not use this file except in compliance with the Elastic License
|
||||
* 2.0.
|
||||
*/
|
||||
|
||||
import React, { Component } from 'react';
|
||||
import { RouteProps } from 'react-router-dom';
|
||||
import { BASE_PATH } from '../../../../common/constants';
|
||||
import { BreadcrumbConsumer } from './consumer';
|
||||
import { Breadcrumb as BreadcrumbData, BreadcrumbContext } from './types';
|
||||
|
||||
interface BreadcrumbManagerProps extends RouteProps {
|
||||
text: string;
|
||||
href?: string;
|
||||
parents?: BreadcrumbData[];
|
||||
context: BreadcrumbContext;
|
||||
}
|
||||
|
||||
class BreadcrumbManager extends Component<BreadcrumbManagerProps, {}, BreadcrumbContext> {
|
||||
public componentWillUnmount() {
|
||||
const { text, href, context } = this.props;
|
||||
|
||||
context.removeCrumb({
|
||||
text,
|
||||
href,
|
||||
});
|
||||
}
|
||||
|
||||
public componentDidMount() {
|
||||
const { text, href, parents, context } = this.props;
|
||||
context.addCrumb(
|
||||
{
|
||||
text,
|
||||
href,
|
||||
},
|
||||
parents
|
||||
);
|
||||
}
|
||||
|
||||
public render() {
|
||||
return <span />;
|
||||
}
|
||||
}
|
||||
|
||||
interface BreadcrumbProps extends RouteProps {
|
||||
title: string;
|
||||
path?: string;
|
||||
parentBreadcrumbs?: BreadcrumbData[];
|
||||
}
|
||||
|
||||
export const Breadcrumb: React.FC<BreadcrumbProps> = ({ title, path, parentBreadcrumbs }) => (
|
||||
<BreadcrumbConsumer>
|
||||
{(context) => (
|
||||
<BreadcrumbManager
|
||||
text={title}
|
||||
href={path ? `#${BASE_PATH}${path}` : `#${BASE_PATH}`}
|
||||
parents={parentBreadcrumbs}
|
||||
context={context}
|
||||
/>
|
||||
)}
|
||||
</BreadcrumbConsumer>
|
||||
);
|
|
@ -1,8 +0,0 @@
|
|||
/*
|
||||
* Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
|
||||
* or more contributor license agreements. Licensed under the Elastic License
|
||||
* 2.0; you may not use this file except in compliance with the Elastic License
|
||||
* 2.0.
|
||||
*/
|
||||
|
||||
export { Consumer as BreadcrumbConsumer } from './context';
|
|
@ -1,19 +0,0 @@
|
|||
/*
|
||||
* Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
|
||||
* or more contributor license agreements. Licensed under the Elastic License
|
||||
* 2.0; you may not use this file except in compliance with the Elastic License
|
||||
* 2.0.
|
||||
*/
|
||||
|
||||
import React from 'react';
|
||||
|
||||
import { Breadcrumb, BreadcrumbContext } from './types';
|
||||
|
||||
/* istanbul ignore next */
|
||||
const defaultContext: BreadcrumbContext = {
|
||||
breadcrumbs: [],
|
||||
addCrumb: (crumb: Breadcrumb) => null,
|
||||
removeCrumb: (crumb: Breadcrumb) => null,
|
||||
};
|
||||
|
||||
export const { Provider, Consumer } = React.createContext(defaultContext);
|
|
@ -1,10 +0,0 @@
|
|||
/*
|
||||
* Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
|
||||
* or more contributor license agreements. Licensed under the Elastic License
|
||||
* 2.0; you may not use this file except in compliance with the Elastic License
|
||||
* 2.0.
|
||||
*/
|
||||
|
||||
export { BreadcrumbProvider } from './provider';
|
||||
export { BreadcrumbConsumer } from './consumer';
|
||||
export { Breadcrumb } from './breadcrumb';
|
|
@ -1,73 +0,0 @@
|
|||
/*
|
||||
* Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
|
||||
* or more contributor license agreements. Licensed under the Elastic License
|
||||
* 2.0; you may not use this file except in compliance with the Elastic License
|
||||
* 2.0.
|
||||
*/
|
||||
|
||||
import React, { Component, ReactElement } from 'react';
|
||||
import { Provider } from './context';
|
||||
import { Breadcrumb } from './types';
|
||||
import { services } from '../../../kbn_services';
|
||||
|
||||
interface ComponentProps {
|
||||
useGlobalBreadcrumbs: boolean;
|
||||
children: ReactElement<any> | Array<ReactElement<any>>;
|
||||
}
|
||||
|
||||
interface ComponentState {
|
||||
breadcrumbs: Array<{
|
||||
href?: string;
|
||||
breadcrumb: Breadcrumb;
|
||||
parents?: Breadcrumb[];
|
||||
}>;
|
||||
}
|
||||
|
||||
export class BreadcrumbProvider extends Component<ComponentProps, ComponentState> {
|
||||
public state = {
|
||||
breadcrumbs: [] as ComponentState['breadcrumbs'],
|
||||
};
|
||||
|
||||
public addCrumb = (breadcrumb: Breadcrumb, parents?: Breadcrumb[]) => {
|
||||
this.setState(({ breadcrumbs: prevCrumbs }) => ({
|
||||
breadcrumbs: [
|
||||
...prevCrumbs,
|
||||
{
|
||||
href: breadcrumb.href,
|
||||
breadcrumb,
|
||||
parents,
|
||||
},
|
||||
],
|
||||
}));
|
||||
};
|
||||
|
||||
public removeCrumb = (crumbToRemove: Breadcrumb) => {
|
||||
this.setState(({ breadcrumbs: prevCrumbs }) => {
|
||||
const breadcrumbs = prevCrumbs.filter((prevCrumb) => {
|
||||
const { href } = prevCrumb;
|
||||
return !(crumbToRemove.href === href);
|
||||
});
|
||||
return { breadcrumbs };
|
||||
});
|
||||
};
|
||||
|
||||
public render() {
|
||||
const { breadcrumbs } = this.state;
|
||||
|
||||
const context = {
|
||||
breadcrumbs: breadcrumbs.reduce((crumbs, crumbStorageItem) => {
|
||||
if (crumbStorageItem.parents) {
|
||||
crumbs = crumbs.concat(crumbStorageItem.parents);
|
||||
}
|
||||
crumbs.push(crumbStorageItem.breadcrumb);
|
||||
return crumbs;
|
||||
}, [] as Breadcrumb[]),
|
||||
addCrumb: this.addCrumb,
|
||||
removeCrumb: this.removeCrumb,
|
||||
};
|
||||
if (this.props.useGlobalBreadcrumbs) {
|
||||
services.setBreadcrumbs(context.breadcrumbs);
|
||||
}
|
||||
return <Provider value={context}>{this.props.children}</Provider>;
|
||||
}
|
||||
}
|
|
@ -1,16 +0,0 @@
|
|||
/*
|
||||
* Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
|
||||
* or more contributor license agreements. Licensed under the Elastic License
|
||||
* 2.0; you may not use this file except in compliance with the Elastic License
|
||||
* 2.0.
|
||||
*/
|
||||
|
||||
export interface BreadcrumbContext {
|
||||
breadcrumbs: Breadcrumb[];
|
||||
addCrumb: (crumb: Breadcrumb, parents?: Breadcrumb[]) => void;
|
||||
removeCrumb: (crumb: Breadcrumb) => void;
|
||||
}
|
||||
export interface Breadcrumb {
|
||||
text: string;
|
||||
href?: string;
|
||||
}
|
|
@ -1,40 +0,0 @@
|
|||
/*
|
||||
* Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
|
||||
* or more contributor license agreements. Licensed under the Elastic License
|
||||
* 2.0; you may not use this file except in compliance with the Elastic License
|
||||
* 2.0.
|
||||
*/
|
||||
|
||||
import React, { FC } from 'react';
|
||||
import { Route, Switch } from 'react-router-dom';
|
||||
|
||||
export interface RouteConfig {
|
||||
path: string;
|
||||
component: React.ComponentType<any>;
|
||||
routes?: RouteConfig[];
|
||||
}
|
||||
|
||||
export const ChildRoutes: FC<{
|
||||
routes?: RouteConfig[];
|
||||
useSwitch?: boolean;
|
||||
[other: string]: any;
|
||||
}> = ({ routes, useSwitch = true, ...rest }) => {
|
||||
if (!routes) {
|
||||
return null;
|
||||
}
|
||||
const Parent = useSwitch ? Switch : React.Fragment;
|
||||
return (
|
||||
<Parent>
|
||||
{routes.map((route) => (
|
||||
<Route
|
||||
key={route.path}
|
||||
path={route.path}
|
||||
render={(routeProps) => {
|
||||
const Component = route.component;
|
||||
return <Component {...routeProps} routes={route.routes} {...rest} />;
|
||||
}}
|
||||
/>
|
||||
))}
|
||||
</Parent>
|
||||
);
|
||||
};
|
|
@ -1,46 +0,0 @@
|
|||
/*
|
||||
* Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
|
||||
* or more contributor license agreements. Licensed under the Elastic License
|
||||
* 2.0; you may not use this file except in compliance with the Elastic License
|
||||
* 2.0.
|
||||
*/
|
||||
|
||||
import { get } from 'lodash';
|
||||
import React from 'react';
|
||||
|
||||
import { EuiLink } from '@elastic/eui';
|
||||
import { Link, withRouter, RouteComponentProps } from 'react-router-dom';
|
||||
|
||||
interface ConnectedLinkComponent extends RouteComponentProps {
|
||||
location: any;
|
||||
path: string;
|
||||
disabled: boolean;
|
||||
query: any;
|
||||
[key: string]: any;
|
||||
}
|
||||
|
||||
export const ConnectedLinkComponent = ({
|
||||
location,
|
||||
path,
|
||||
query,
|
||||
disabled,
|
||||
children,
|
||||
...props
|
||||
}: ConnectedLinkComponent) => {
|
||||
if (disabled) {
|
||||
return <EuiLink aria-disabled="true" {...props} />;
|
||||
}
|
||||
|
||||
// Shorthand for pathname
|
||||
const pathname = path || get(props.to, 'pathname') || location.pathname;
|
||||
|
||||
return (
|
||||
<Link
|
||||
children={children}
|
||||
to={{ ...location, ...props.to, pathname, query }}
|
||||
className={`euiLink euiLink--primary ${props.className || ''}`}
|
||||
/>
|
||||
);
|
||||
};
|
||||
|
||||
export const ConnectedLink = withRouter(ConnectedLinkComponent);
|
|
@ -1,101 +0,0 @@
|
|||
/*
|
||||
* Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
|
||||
* or more contributor license agreements. Licensed under the Elastic License
|
||||
* 2.0; you may not use this file except in compliance with the Elastic License
|
||||
* 2.0.
|
||||
*/
|
||||
|
||||
import { i18n } from '@kbn/i18n';
|
||||
import { AssignmentActionType } from './table';
|
||||
|
||||
export enum ActionComponentType {
|
||||
Action,
|
||||
Popover,
|
||||
SelectionCount,
|
||||
TagBadgeList,
|
||||
}
|
||||
export interface ControlSchema {
|
||||
id?: number;
|
||||
name: string;
|
||||
danger?: boolean;
|
||||
type: ActionComponentType;
|
||||
action?: AssignmentActionType;
|
||||
actionDataKey?: string;
|
||||
showWarning?: boolean;
|
||||
warningHeading?: string;
|
||||
warningMessage?: string;
|
||||
lazyLoad?: boolean;
|
||||
grow?: boolean;
|
||||
}
|
||||
|
||||
export const beatsListActions: ControlSchema[] = [
|
||||
{
|
||||
grow: false,
|
||||
name: i18n.translate('xpack.beatsManagement.beatsListAssignmentOptions.unenrollButtonLabel', {
|
||||
defaultMessage: 'Unenroll selected',
|
||||
}),
|
||||
showWarning: true,
|
||||
type: ActionComponentType.Action,
|
||||
warningHeading: i18n.translate(
|
||||
'xpack.beatsManagement.beatsListAssignmentOptions.unenrollBeatsWarninigTitle',
|
||||
{ defaultMessage: 'Unenroll selected beats?' }
|
||||
),
|
||||
warningMessage: i18n.translate(
|
||||
'xpack.beatsManagement.beatsListAssignmentOptions.unenrollBeatsWarninigMessage',
|
||||
{ defaultMessage: 'The selected Beats will no longer use central management' }
|
||||
),
|
||||
action: AssignmentActionType.Delete,
|
||||
danger: true,
|
||||
},
|
||||
{
|
||||
name: i18n.translate('xpack.beatsManagement.beatsListAssignmentOptions.setTagsButtonLabel', {
|
||||
defaultMessage: 'Set tags',
|
||||
}),
|
||||
grow: false,
|
||||
type: ActionComponentType.TagBadgeList,
|
||||
actionDataKey: 'tags',
|
||||
lazyLoad: true,
|
||||
},
|
||||
];
|
||||
|
||||
export const tagListActions: ControlSchema[] = [
|
||||
{
|
||||
danger: true,
|
||||
grow: false,
|
||||
name: i18n.translate('xpack.beatsManagement.tagListAssignmentOptions.removeTagsButtonLabel', {
|
||||
defaultMessage: 'Remove selected',
|
||||
}),
|
||||
type: ActionComponentType.Action,
|
||||
showWarning: true,
|
||||
warningHeading: i18n.translate(
|
||||
'xpack.beatsManagement.tagListAssignmentOptions.removeTagsWarninigTitle',
|
||||
{ defaultMessage: 'Remove tag(s)' }
|
||||
),
|
||||
warningMessage: i18n.translate(
|
||||
'xpack.beatsManagement.tagListAssignmentOptions.removeTagWarninigMessage',
|
||||
{ defaultMessage: 'Remove the tag?' }
|
||||
),
|
||||
action: AssignmentActionType.Delete,
|
||||
},
|
||||
];
|
||||
|
||||
export const tagConfigActions: ControlSchema[] = [
|
||||
{
|
||||
danger: true,
|
||||
grow: false,
|
||||
name: i18n.translate('xpack.beatsManagement.tagConfigAssignmentOptions.removeTagsButtonLabel', {
|
||||
defaultMessage: 'Remove tag(s)',
|
||||
}),
|
||||
type: ActionComponentType.Action,
|
||||
showWarning: true,
|
||||
warningHeading: i18n.translate(
|
||||
'xpack.beatsManagement.tagConfigAssignmentOptions.removeTagsWarninigTitle',
|
||||
{ defaultMessage: 'Remove tag(s)' }
|
||||
),
|
||||
warningMessage: i18n.translate(
|
||||
'xpack.beatsManagement.tagConfigAssignmentOptions.removeTagsWarninigMessage',
|
||||
{ defaultMessage: 'Remove the tag from the selected beat(s)?' }
|
||||
),
|
||||
action: AssignmentActionType.Delete,
|
||||
},
|
||||
];
|
|
@ -1,97 +0,0 @@
|
|||
/*
|
||||
* Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
|
||||
* or more contributor license agreements. Licensed under the Elastic License
|
||||
* 2.0; you may not use this file except in compliance with the Elastic License
|
||||
* 2.0.
|
||||
*/
|
||||
|
||||
import { EuiButton, EuiConfirmModal } from '@elastic/eui';
|
||||
import { FormattedMessage } from '@kbn/i18n/react';
|
||||
import React from 'react';
|
||||
import { AssignmentActionType } from '../table';
|
||||
|
||||
interface ActionControlProps {
|
||||
action: AssignmentActionType;
|
||||
disabled: boolean;
|
||||
danger?: boolean;
|
||||
name: string;
|
||||
showWarning?: boolean;
|
||||
warningHeading?: string;
|
||||
warningMessage?: string;
|
||||
actionHandler(action: AssignmentActionType, payload?: any): void;
|
||||
}
|
||||
|
||||
interface ActionControlState {
|
||||
showModal: boolean;
|
||||
}
|
||||
|
||||
export class ActionControl extends React.PureComponent<ActionControlProps, ActionControlState> {
|
||||
constructor(props: ActionControlProps) {
|
||||
super(props);
|
||||
|
||||
this.state = {
|
||||
showModal: false,
|
||||
};
|
||||
}
|
||||
|
||||
public render() {
|
||||
const {
|
||||
action,
|
||||
actionHandler,
|
||||
danger,
|
||||
name,
|
||||
showWarning,
|
||||
warningHeading,
|
||||
warningMessage,
|
||||
} = this.props;
|
||||
|
||||
return (
|
||||
<div>
|
||||
<EuiButton
|
||||
size="s"
|
||||
color={danger ? 'danger' : 'primary'}
|
||||
disabled={this.props.disabled}
|
||||
onClick={
|
||||
showWarning ? () => this.setState({ showModal: true }) : () => actionHandler(action)
|
||||
}
|
||||
>
|
||||
{name}
|
||||
</EuiButton>
|
||||
{this.state.showModal && (
|
||||
<EuiConfirmModal
|
||||
buttonColor={danger ? 'danger' : 'primary'}
|
||||
cancelButtonText={
|
||||
<FormattedMessage
|
||||
id="xpack.beatsManagement.confirmModal.cancelButtonLabel"
|
||||
defaultMessage="Cancel"
|
||||
/>
|
||||
}
|
||||
confirmButtonText={
|
||||
<FormattedMessage
|
||||
id="xpack.beatsManagement.confirmModal.confirmButtonLabel"
|
||||
defaultMessage="Confirm"
|
||||
/>
|
||||
}
|
||||
onConfirm={() => {
|
||||
actionHandler(action);
|
||||
this.setState({ showModal: false });
|
||||
}}
|
||||
onCancel={() => this.setState({ showModal: false })}
|
||||
title={
|
||||
warningHeading ? (
|
||||
warningHeading
|
||||
) : (
|
||||
<FormattedMessage
|
||||
id="xpack.beatsManagement.confirmModal.confirmWarningTitle"
|
||||
defaultMessage="Confirm"
|
||||
/>
|
||||
)
|
||||
}
|
||||
>
|
||||
{warningMessage}
|
||||
</EuiConfirmModal>
|
||||
)}
|
||||
</div>
|
||||
);
|
||||
}
|
||||
}
|
|
@ -1,8 +0,0 @@
|
|||
/*
|
||||
* Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
|
||||
* or more contributor license agreements. Licensed under the Elastic License
|
||||
* 2.0; you may not use this file except in compliance with the Elastic License
|
||||
* 2.0.
|
||||
*/
|
||||
|
||||
export { OptionControl } from './option_control';
|
|
@ -1,58 +0,0 @@
|
|||
/*
|
||||
* Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
|
||||
* or more contributor license agreements. Licensed under the Elastic License
|
||||
* 2.0; you may not use this file except in compliance with the Elastic License
|
||||
* 2.0.
|
||||
*/
|
||||
|
||||
import React from 'react';
|
||||
import { ActionComponentType, ControlSchema } from '../action_schema';
|
||||
import { AssignmentActionType } from '../table';
|
||||
import { ActionControl } from './action_control';
|
||||
import { TagBadgeList } from './tag_badge_list';
|
||||
|
||||
interface ComponentProps extends ControlSchema {
|
||||
actionData?: {
|
||||
[key: string]: any;
|
||||
};
|
||||
disabled: boolean;
|
||||
actionHandler(action: AssignmentActionType, payload?: any): void;
|
||||
}
|
||||
|
||||
export const OptionControl: React.FC<ComponentProps> = (props: ComponentProps) => {
|
||||
switch (props.type) {
|
||||
case ActionComponentType.Action:
|
||||
if (!props.action) {
|
||||
throw Error('Action cannot be undefined');
|
||||
}
|
||||
return (
|
||||
<ActionControl
|
||||
actionHandler={props.actionHandler}
|
||||
action={props.action}
|
||||
danger={props.danger}
|
||||
name={props.name}
|
||||
showWarning={props.showWarning}
|
||||
warningHeading={props.warningHeading}
|
||||
warningMessage={props.warningMessage}
|
||||
disabled={props.disabled}
|
||||
/>
|
||||
);
|
||||
case ActionComponentType.TagBadgeList:
|
||||
if (!props.actionDataKey) {
|
||||
throw Error('actionDataKey cannot be undefined');
|
||||
}
|
||||
if (!props.actionData) {
|
||||
throw Error('actionData cannot be undefined');
|
||||
}
|
||||
return (
|
||||
<TagBadgeList
|
||||
actionHandler={props.actionHandler}
|
||||
action={props.action}
|
||||
name={props.name}
|
||||
items={props.actionData[props.actionDataKey]}
|
||||
disabled={props.disabled}
|
||||
/>
|
||||
);
|
||||
}
|
||||
return <div>Invalid config</div>;
|
||||
};
|
|
@ -1,110 +0,0 @@
|
|||
/*
|
||||
* Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
|
||||
* or more contributor license agreements. Licensed under the Elastic License
|
||||
* 2.0; you may not use this file except in compliance with the Elastic License
|
||||
* 2.0.
|
||||
*/
|
||||
|
||||
import {
|
||||
EuiButton,
|
||||
EuiContextMenuPanel,
|
||||
EuiFlexGroup,
|
||||
EuiFlexItem,
|
||||
EuiLoadingSpinner,
|
||||
EuiPopover,
|
||||
} from '@elastic/eui';
|
||||
import React from 'react';
|
||||
import { TABLE_CONFIG } from '../../../../common/constants/table';
|
||||
import { TagBadge } from '../../tag/tag_badge';
|
||||
import { AssignmentActionType } from '../index';
|
||||
|
||||
interface TagBadgeListProps {
|
||||
items: object[];
|
||||
disabled: boolean;
|
||||
name: string;
|
||||
action?: AssignmentActionType;
|
||||
actionHandler(action: AssignmentActionType, payload?: any): void;
|
||||
}
|
||||
|
||||
interface ComponentState {
|
||||
isPopoverOpen: boolean;
|
||||
items: object[];
|
||||
}
|
||||
|
||||
export class TagBadgeList extends React.Component<TagBadgeListProps, ComponentState> {
|
||||
constructor(props: TagBadgeListProps) {
|
||||
super(props);
|
||||
|
||||
this.state = {
|
||||
isPopoverOpen: false,
|
||||
items: [],
|
||||
};
|
||||
}
|
||||
|
||||
public render() {
|
||||
const button = (
|
||||
<EuiButton
|
||||
size="s"
|
||||
iconType="arrowDown"
|
||||
iconSide="right"
|
||||
onClick={this.onButtonClick}
|
||||
disabled={this.props.disabled}
|
||||
>
|
||||
{this.props.name}
|
||||
</EuiButton>
|
||||
);
|
||||
|
||||
return (
|
||||
<EuiPopover
|
||||
id="contentPanel"
|
||||
button={button}
|
||||
isOpen={this.state.isPopoverOpen}
|
||||
closePopover={this.closePopover}
|
||||
panelPaddingSize="none"
|
||||
anchorPosition="downLeft"
|
||||
>
|
||||
<EuiContextMenuPanel>
|
||||
<EuiFlexGroup direction="column" gutterSize="xs" style={{ margin: 10 }}>
|
||||
{!this.props.items && <EuiLoadingSpinner size="l" />}
|
||||
{this.props.items && this.props.items.length === 0 && (
|
||||
<EuiFlexItem>
|
||||
<EuiFlexGroup gutterSize="xs">
|
||||
<EuiFlexItem>No options avaliable</EuiFlexItem>
|
||||
</EuiFlexGroup>
|
||||
</EuiFlexItem>
|
||||
)}
|
||||
{this.props.items &&
|
||||
this.props.items.map((tag: any) => (
|
||||
<EuiFlexItem key={`${tag.id}`}>
|
||||
<EuiFlexGroup gutterSize="xs">
|
||||
<EuiFlexItem>
|
||||
<TagBadge
|
||||
maxIdRenderSize={TABLE_CONFIG.TRUNCATE_TAG_LENGTH_SMALL}
|
||||
onClick={() =>
|
||||
this.props.actionHandler(AssignmentActionType.Assign, tag.id)
|
||||
}
|
||||
onClickAriaLabel={tag.id}
|
||||
tag={tag}
|
||||
/>
|
||||
</EuiFlexItem>
|
||||
</EuiFlexGroup>
|
||||
</EuiFlexItem>
|
||||
))}
|
||||
</EuiFlexGroup>
|
||||
</EuiContextMenuPanel>
|
||||
</EuiPopover>
|
||||
);
|
||||
}
|
||||
private onButtonClick = async () => {
|
||||
this.props.actionHandler(AssignmentActionType.Reload);
|
||||
this.setState((prevState) => ({
|
||||
isPopoverOpen: !prevState.isPopoverOpen,
|
||||
}));
|
||||
};
|
||||
|
||||
private closePopover = () => {
|
||||
this.setState({
|
||||
isPopoverOpen: false,
|
||||
});
|
||||
};
|
||||
}
|
|
@ -1,16 +0,0 @@
|
|||
/*
|
||||
* Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
|
||||
* or more contributor license agreements. Licensed under the Elastic License
|
||||
* 2.0; you may not use this file except in compliance with the Elastic License
|
||||
* 2.0.
|
||||
*/
|
||||
|
||||
export { beatsListActions, tagConfigActions } from './action_schema';
|
||||
export { AssignmentActionType, KueryBarProps, Table } from './table';
|
||||
export {
|
||||
ActionDefinition,
|
||||
BeatDetailTagsTable,
|
||||
BeatsTableType,
|
||||
FilterDefinition,
|
||||
TagsTableType,
|
||||
} from './table_type_configs';
|
|
@ -1,160 +0,0 @@
|
|||
/*
|
||||
* Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
|
||||
* or more contributor license agreements. Licensed under the Elastic License
|
||||
* 2.0; you may not use this file except in compliance with the Elastic License
|
||||
* 2.0.
|
||||
*/
|
||||
|
||||
import { EuiBasicTable, EuiFlexGroup, EuiFlexItem, EuiSpacer } from '@elastic/eui';
|
||||
import { i18n } from '@kbn/i18n';
|
||||
import React from 'react';
|
||||
import styled from 'styled-components';
|
||||
import { QuerySuggestion } from '../../../../../../src/plugins/data/public';
|
||||
import { TABLE_CONFIG } from '../../../common/constants';
|
||||
import { AutocompleteField } from '../autocomplete_field/index';
|
||||
import { ControlSchema } from './action_schema';
|
||||
import { OptionControl } from './controls/option_control';
|
||||
import { TableType } from './table_type_configs';
|
||||
|
||||
export enum AssignmentActionType {
|
||||
Add,
|
||||
Assign,
|
||||
Delete,
|
||||
Edit,
|
||||
Reload,
|
||||
Search,
|
||||
}
|
||||
|
||||
export interface KueryBarProps {
|
||||
filterQueryDraft: string;
|
||||
isLoadingSuggestions: boolean;
|
||||
isValid: boolean;
|
||||
loadSuggestions: (value: string, cursorPosition: number, maxCount?: number) => void;
|
||||
onChange?: (value: string) => void;
|
||||
onSubmit?: (value: string) => void;
|
||||
suggestions: QuerySuggestion[];
|
||||
value: string;
|
||||
}
|
||||
|
||||
interface TableProps {
|
||||
actions?: ControlSchema[];
|
||||
actionData?: {
|
||||
[key: string]: any;
|
||||
};
|
||||
hideTableControls?: boolean;
|
||||
kueryBarProps?: KueryBarProps;
|
||||
items: any[];
|
||||
onTableChange?: (index: number, size: number) => void;
|
||||
type: TableType;
|
||||
actionHandler?(action: AssignmentActionType, payload?: any): void;
|
||||
}
|
||||
|
||||
interface TableState {
|
||||
selection: any[];
|
||||
pageIndex: number;
|
||||
}
|
||||
|
||||
const TableContainer = styled.div`
|
||||
padding: 16px;
|
||||
`;
|
||||
|
||||
export class Table extends React.Component<TableProps, TableState> {
|
||||
constructor(props: any) {
|
||||
super(props);
|
||||
|
||||
this.state = {
|
||||
selection: [],
|
||||
pageIndex: 0,
|
||||
};
|
||||
}
|
||||
|
||||
public resetSelection = () => {
|
||||
this.setSelection([]);
|
||||
};
|
||||
|
||||
public setSelection = (selection: any[]) => {
|
||||
this.setState({
|
||||
selection,
|
||||
});
|
||||
};
|
||||
|
||||
public actionHandler = (action: AssignmentActionType, payload?: any): void => {
|
||||
if (this.props.actionHandler) {
|
||||
this.props.actionHandler(action, payload);
|
||||
}
|
||||
};
|
||||
|
||||
public render() {
|
||||
const { actionData, actions, hideTableControls, items, kueryBarProps, type } = this.props;
|
||||
|
||||
const pagination = {
|
||||
pageIndex: this.state.pageIndex,
|
||||
pageSize: TABLE_CONFIG.INITIAL_ROW_SIZE,
|
||||
pageSizeOptions: TABLE_CONFIG.PAGE_SIZE_OPTIONS,
|
||||
};
|
||||
|
||||
const selectionOptions = hideTableControls
|
||||
? undefined
|
||||
: {
|
||||
onSelectionChange: this.setSelection,
|
||||
selectable: () => true,
|
||||
selectableMessage: () =>
|
||||
i18n.translate('xpack.beatsManagement.table.selectThisBeatTooltip', {
|
||||
defaultMessage: 'Select this beat',
|
||||
}),
|
||||
selection: this.state.selection,
|
||||
};
|
||||
|
||||
return (
|
||||
<TableContainer>
|
||||
<EuiFlexGroup alignItems="center" justifyContent="spaceBetween">
|
||||
{actions &&
|
||||
actions.map((action) => (
|
||||
<EuiFlexItem grow={false} key={action.name}>
|
||||
<OptionControl
|
||||
{...action}
|
||||
actionData={actionData}
|
||||
actionHandler={this.actionHandler}
|
||||
disabled={this.state.selection.length === 0}
|
||||
/>
|
||||
</EuiFlexItem>
|
||||
))}
|
||||
|
||||
{kueryBarProps && (
|
||||
<EuiFlexItem>
|
||||
<AutocompleteField
|
||||
{...kueryBarProps}
|
||||
placeholder={i18n.translate(
|
||||
'xpack.beatsManagement.table.filterResultsPlaceholder',
|
||||
{
|
||||
defaultMessage: 'Filter results',
|
||||
}
|
||||
)}
|
||||
/>
|
||||
</EuiFlexItem>
|
||||
)}
|
||||
</EuiFlexGroup>
|
||||
<EuiSpacer size="m" />
|
||||
|
||||
<EuiBasicTable
|
||||
items={items}
|
||||
itemId="id"
|
||||
isSelectable={true}
|
||||
selection={selectionOptions}
|
||||
columns={type.columnDefinitions}
|
||||
pagination={{ ...pagination, totalItemCount: items.length }}
|
||||
onChange={this.onTableChange}
|
||||
/>
|
||||
</TableContainer>
|
||||
);
|
||||
}
|
||||
|
||||
private onTableChange = ({ page }: { page: { index: number; size: number } }) => {
|
||||
if (this.props.onTableChange) {
|
||||
this.props.onTableChange(page.index, page.size);
|
||||
}
|
||||
this.setState({
|
||||
pageIndex: page.index,
|
||||
});
|
||||
};
|
||||
}
|
|
@ -1,345 +0,0 @@
|
|||
/*
|
||||
* Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
|
||||
* or more contributor license agreements. Licensed under the Elastic License
|
||||
* 2.0; you may not use this file except in compliance with the Elastic License
|
||||
* 2.0.
|
||||
*/
|
||||
|
||||
import { EuiFlexGroup, EuiFlexItem, EuiHealth, EuiToolTip, IconColor } from '@elastic/eui';
|
||||
import { i18n } from '@kbn/i18n';
|
||||
import { sortBy, uniqBy } from 'lodash';
|
||||
import moment from 'moment';
|
||||
import React from 'react';
|
||||
import { BeatTag, CMBeat } from '../../../common/domain_types';
|
||||
import { ConnectedLink } from '../navigation/connected_link';
|
||||
import { TagBadge } from '../tag';
|
||||
|
||||
export interface ColumnDefinition {
|
||||
align?: 'left' | 'right' | 'center' | undefined;
|
||||
field: string;
|
||||
name: string;
|
||||
sortable?: boolean;
|
||||
width?: string;
|
||||
render?(value: any, object?: any): any;
|
||||
}
|
||||
|
||||
export interface ActionDefinition {
|
||||
action: string;
|
||||
danger?: boolean;
|
||||
icon?: any;
|
||||
name: string;
|
||||
}
|
||||
|
||||
interface FilterOption {
|
||||
value: string;
|
||||
}
|
||||
|
||||
export interface FilterDefinition {
|
||||
field: string;
|
||||
name: string;
|
||||
options?: FilterOption[];
|
||||
type: string;
|
||||
}
|
||||
|
||||
export interface ControlDefinitions {
|
||||
actions: ActionDefinition[];
|
||||
filters: FilterDefinition[];
|
||||
primaryActions?: ActionDefinition[];
|
||||
}
|
||||
|
||||
export interface TableType {
|
||||
itemType: 'Beats' | 'Tags';
|
||||
columnDefinitions: ColumnDefinition[];
|
||||
controlDefinitions(items: any[]): ControlDefinitions;
|
||||
}
|
||||
|
||||
const dynamicStatuses = {
|
||||
STARTING: {
|
||||
color: 'success',
|
||||
status: i18n.translate('xpack.beatsManagement.beatsTable.startingStatusLabel', {
|
||||
defaultMessage: 'Starting',
|
||||
}),
|
||||
details: i18n.translate('xpack.beatsManagement.beatsTable.configStatus.startingTooltip', {
|
||||
defaultMessage: 'This Beat is starting.',
|
||||
}),
|
||||
},
|
||||
IN_PROGRESS: {
|
||||
color: 'warning',
|
||||
status: i18n.translate('xpack.beatsManagement.beatsTable.updatingStatusLabel', {
|
||||
defaultMessage: 'Updating',
|
||||
}),
|
||||
details: i18n.translate('xpack.beatsManagement.beatsTable.configStatus.progressTooltip', {
|
||||
defaultMessage: 'This Beat is currently reloading config from CM.',
|
||||
}),
|
||||
},
|
||||
RUNNING: {
|
||||
color: 'success',
|
||||
status: i18n.translate('xpack.beatsManagement.beatsTable.runningStatusLabel', {
|
||||
defaultMessage: 'Running',
|
||||
}),
|
||||
details: i18n.translate('xpack.beatsManagement.beatsTable.configStatus.runningTooltip', {
|
||||
defaultMessage: 'This Beat is running without issues.',
|
||||
}),
|
||||
},
|
||||
CONFIG: {
|
||||
color: 'danger',
|
||||
status: i18n.translate('xpack.beatsManagement.beatsTable.configErrorStatusLabel', {
|
||||
defaultMessage: 'Config error',
|
||||
}),
|
||||
},
|
||||
FAILED: {
|
||||
color: 'danger',
|
||||
status: i18n.translate('xpack.beatsManagement.beatsTable.failedStatusLabel', {
|
||||
defaultMessage: 'Error',
|
||||
}),
|
||||
details: i18n.translate('xpack.beatsManagement.beatsTable.configStatus.errorTooltip', {
|
||||
defaultMessage: 'There is an error on this beat, please check the logs for this host.',
|
||||
}),
|
||||
},
|
||||
STOPPED: {
|
||||
color: 'danger',
|
||||
status: i18n.translate('xpack.beatsManagement.beatsTable.stoppedStatusLabel', {
|
||||
defaultMessage: 'stopped',
|
||||
}),
|
||||
details: i18n.translate('xpack.beatsManagement.beatsTable.configStatus.errorTooltip', {
|
||||
defaultMessage: 'There is an error on this beat, please check the logs for this host.',
|
||||
}),
|
||||
},
|
||||
};
|
||||
|
||||
export const BeatsTableType: TableType = {
|
||||
itemType: 'Beats',
|
||||
columnDefinitions: [
|
||||
{
|
||||
field: 'name',
|
||||
name: i18n.translate('xpack.beatsManagement.beatsTable.beatNameTitle', {
|
||||
defaultMessage: 'Beat name',
|
||||
}),
|
||||
render: (name: string, beat: CMBeat) => (
|
||||
<ConnectedLink path={`/beat/${beat.id}/details`}>{name}</ConnectedLink>
|
||||
),
|
||||
sortable: true,
|
||||
},
|
||||
{
|
||||
field: 'type',
|
||||
name: i18n.translate('xpack.beatsManagement.beatsTable.typeTitle', {
|
||||
defaultMessage: 'Type',
|
||||
}),
|
||||
sortable: true,
|
||||
},
|
||||
{
|
||||
field: 'full_tags',
|
||||
name: i18n.translate('xpack.beatsManagement.beatsTable.tagsTitle', {
|
||||
defaultMessage: 'Tags',
|
||||
}),
|
||||
render: (value: string, beat: CMBeat & { tags: BeatTag[] }) => (
|
||||
<EuiFlexGroup wrap responsive={true} gutterSize="xs">
|
||||
{(sortBy(beat.tags, 'id') || []).map((tag) => (
|
||||
<EuiFlexItem key={tag.id} grow={false}>
|
||||
<ConnectedLink path={`/tag/edit/${tag.id}`}>
|
||||
<TagBadge tag={tag} />
|
||||
</ConnectedLink>
|
||||
</EuiFlexItem>
|
||||
))}
|
||||
</EuiFlexGroup>
|
||||
),
|
||||
sortable: false,
|
||||
},
|
||||
{
|
||||
field: 'config_status',
|
||||
name: i18n.translate('xpack.beatsManagement.beatsTable.configStatusTitle', {
|
||||
defaultMessage: 'Config Status',
|
||||
}),
|
||||
render: (value: string, beat: CMBeat) => {
|
||||
let color: IconColor = 'success';
|
||||
let statusText = i18n.translate('xpack.beatsManagement.beatsTable.configStatus.okLabel', {
|
||||
defaultMessage: 'OK',
|
||||
});
|
||||
let tooltipText = i18n.translate(
|
||||
'xpack.beatsManagement.beatsTable.configStatus.okTooltip',
|
||||
{
|
||||
defaultMessage: 'Beat successfully applied latest config',
|
||||
}
|
||||
);
|
||||
|
||||
if (beat.status && moment().diff(beat.last_checkin, 'minutes') < 10) {
|
||||
color = dynamicStatuses[beat.status.event.type].color;
|
||||
statusText = dynamicStatuses[beat.status.event.type].status;
|
||||
tooltipText =
|
||||
(dynamicStatuses[beat.status.event.type] as any).details || beat.status.event.message;
|
||||
} else if (!beat.status && moment().diff(beat.last_checkin, 'minutes') >= 10) {
|
||||
color = 'danger';
|
||||
statusText = i18n.translate(
|
||||
'xpack.beatsManagement.beatsTable.configStatus.offlineLabel',
|
||||
{
|
||||
defaultMessage: 'Offline',
|
||||
}
|
||||
);
|
||||
tooltipText = i18n.translate(
|
||||
'xpack.beatsManagement.beatsTable.configStatus.noConnectionTooltip',
|
||||
{
|
||||
defaultMessage: 'This Beat has not connected to kibana in over 10min',
|
||||
}
|
||||
);
|
||||
} else if (beat.status && moment().diff(beat.last_checkin, 'minutes') >= 10) {
|
||||
color = 'subdued';
|
||||
|
||||
tooltipText = i18n.translate(
|
||||
'xpack.beatsManagement.beatsTable.configStatus.notStartedTooltip',
|
||||
{
|
||||
defaultMessage: 'This Beat has not yet been started.',
|
||||
}
|
||||
);
|
||||
statusText = i18n.translate(
|
||||
'xpack.beatsManagement.beatsTable.configStatus.notStartedLabel',
|
||||
{
|
||||
defaultMessage: 'Not started',
|
||||
}
|
||||
);
|
||||
} else {
|
||||
color = 'subdued';
|
||||
statusText = i18n.translate(
|
||||
'xpack.beatsManagement.beatsTable.configStatus.offlineLabel',
|
||||
{
|
||||
defaultMessage: 'Offline',
|
||||
}
|
||||
);
|
||||
}
|
||||
|
||||
return (
|
||||
<EuiFlexGroup wrap responsive={true} gutterSize="xs">
|
||||
<EuiToolTip content={tooltipText}>
|
||||
<EuiHealth color={color}>{statusText}</EuiHealth>
|
||||
</EuiToolTip>
|
||||
</EuiFlexGroup>
|
||||
);
|
||||
},
|
||||
sortable: false,
|
||||
},
|
||||
// {
|
||||
// field: 'full_tags',
|
||||
// name: i18n.translate('xpack.beatsManagement.beatsTable.lastConfigUpdateTitle', {
|
||||
// defaultMessage: 'Last config update',
|
||||
// }),
|
||||
// render: (tags?: BeatTag[]) =>
|
||||
// tags && tags.length ? (
|
||||
// <span>
|
||||
// {moment(first(orderBy(tags, ['last_updated'], ['desc'])).last_updated).fromNow()}
|
||||
// </span>
|
||||
// ) : null,
|
||||
// sortable: true,
|
||||
// },
|
||||
],
|
||||
controlDefinitions: (data: any[]) => ({
|
||||
actions: [
|
||||
{
|
||||
name: i18n.translate('xpack.beatsManagement.beatsTable.disenrollSelectedLabel', {
|
||||
defaultMessage: 'Unenroll Selected',
|
||||
}),
|
||||
action: 'delete',
|
||||
danger: true,
|
||||
},
|
||||
],
|
||||
filters: [
|
||||
{
|
||||
type: 'field_value_selection',
|
||||
field: 'type',
|
||||
name: i18n.translate('xpack.beatsManagement.beatsTable.typeLabel', {
|
||||
defaultMessage: 'Type',
|
||||
}),
|
||||
options: uniqBy(
|
||||
data.map(({ type }: { type: any }) => ({ value: type })),
|
||||
'value'
|
||||
),
|
||||
},
|
||||
],
|
||||
}),
|
||||
};
|
||||
|
||||
export const TagsTableType: TableType = {
|
||||
itemType: 'Tags',
|
||||
columnDefinitions: [
|
||||
{
|
||||
field: 'id',
|
||||
name: i18n.translate('xpack.beatsManagement.tagsTable.tagNameTitle', {
|
||||
defaultMessage: 'Tag name',
|
||||
}),
|
||||
render: (id: string, tag: BeatTag) => (
|
||||
<ConnectedLink path={`/tag/edit/${tag.id}`}>
|
||||
<TagBadge tag={tag} />
|
||||
</ConnectedLink>
|
||||
),
|
||||
sortable: true,
|
||||
width: '45%',
|
||||
},
|
||||
{
|
||||
align: 'right',
|
||||
field: 'last_updated',
|
||||
name: i18n.translate('xpack.beatsManagement.tagsTable.lastUpdateTitle', {
|
||||
defaultMessage: 'Last update',
|
||||
}),
|
||||
render: (lastUpdate: Date) => <div>{moment(lastUpdate).fromNow()}</div>,
|
||||
sortable: true,
|
||||
},
|
||||
],
|
||||
controlDefinitions: (data: any) => ({
|
||||
actions: [
|
||||
{
|
||||
name: i18n.translate('xpack.beatsManagement.tagsTable.removeSelectedLabel', {
|
||||
defaultMessage: 'Remove Selected',
|
||||
}),
|
||||
action: 'delete',
|
||||
danger: true,
|
||||
},
|
||||
],
|
||||
filters: [],
|
||||
}),
|
||||
};
|
||||
|
||||
export const BeatDetailTagsTable: TableType = {
|
||||
itemType: 'Tags',
|
||||
columnDefinitions: [
|
||||
{
|
||||
field: 'id',
|
||||
name: i18n.translate('xpack.beatsManagement.beatTagsTable.tagNameTitle', {
|
||||
defaultMessage: 'Tag name',
|
||||
}),
|
||||
render: (id: string, tag: BeatTag) => (
|
||||
<ConnectedLink path={`/tag/edit/${tag.id}`}>
|
||||
<TagBadge tag={tag} />
|
||||
</ConnectedLink>
|
||||
),
|
||||
sortable: true,
|
||||
width: '55%',
|
||||
},
|
||||
{
|
||||
align: 'right',
|
||||
field: 'last_updated',
|
||||
name: i18n.translate('xpack.beatsManagement.beatTagsTable.lastUpdateTitle', {
|
||||
defaultMessage: 'Last update',
|
||||
}),
|
||||
render: (lastUpdate: string) => <span>{moment(lastUpdate).fromNow()}</span>,
|
||||
sortable: true,
|
||||
},
|
||||
],
|
||||
controlDefinitions: (data: any) => ({
|
||||
actions: [],
|
||||
filters: [],
|
||||
primaryActions: [
|
||||
{
|
||||
name: i18n.translate('xpack.beatsManagement.beatTagsTable.addTagLabel', {
|
||||
defaultMessage: 'Add Tag',
|
||||
}),
|
||||
action: 'add',
|
||||
danger: false,
|
||||
},
|
||||
{
|
||||
name: i18n.translate('xpack.beatsManagement.beatTagsTable.removeSelectedLabel', {
|
||||
defaultMessage: 'Remove Selected',
|
||||
}),
|
||||
action: 'remove',
|
||||
danger: true,
|
||||
},
|
||||
],
|
||||
}),
|
||||
};
|
|
@ -1,216 +0,0 @@
|
|||
/*
|
||||
* Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
|
||||
* or more contributor license agreements. Licensed under the Elastic License
|
||||
* 2.0; you may not use this file except in compliance with the Elastic License
|
||||
* 2.0.
|
||||
*/
|
||||
|
||||
// @ts-ignore
|
||||
import { i18n } from '@kbn/i18n';
|
||||
import Formsy from 'formsy-react';
|
||||
import { get } from 'lodash';
|
||||
import React from 'react';
|
||||
import { ConfigBlockSchema, ConfigurationBlock } from '../../../../common/domain_types';
|
||||
import {
|
||||
FormsyEuiCodeEditor,
|
||||
FormsyEuiFieldText,
|
||||
FormsyEuiMultiFieldText,
|
||||
FormsyEuiPasswordText,
|
||||
FormsyEuiSelect,
|
||||
} from '../../inputs';
|
||||
|
||||
interface ComponentProps {
|
||||
values: ConfigurationBlock;
|
||||
schema: ConfigBlockSchema;
|
||||
id: string;
|
||||
onSubmit?: (modal: any) => any;
|
||||
canSubmit(canIt: boolean): any;
|
||||
}
|
||||
|
||||
interface ComponentState {
|
||||
canSubmit: boolean;
|
||||
}
|
||||
|
||||
class ConfigFormUi extends React.Component<ComponentProps, ComponentState> {
|
||||
private form = React.createRef<HTMLButtonElement>();
|
||||
constructor(props: ComponentProps) {
|
||||
super(props);
|
||||
|
||||
this.state = {
|
||||
canSubmit: false,
|
||||
};
|
||||
}
|
||||
|
||||
public enableButton = () => {
|
||||
this.setState({
|
||||
canSubmit: true,
|
||||
});
|
||||
this.props.canSubmit(true);
|
||||
};
|
||||
public disableButton = () => {
|
||||
this.setState({
|
||||
canSubmit: false,
|
||||
});
|
||||
this.props.canSubmit(false);
|
||||
};
|
||||
public submit = () => {
|
||||
if (this.form.current && this.props.onSubmit) {
|
||||
this.form.current.click();
|
||||
}
|
||||
};
|
||||
public onValidSubmit = <ModelType extends any>(model: ModelType) => {
|
||||
if (!this.props.onSubmit) {
|
||||
return;
|
||||
}
|
||||
|
||||
this.props.onSubmit(model);
|
||||
};
|
||||
public render() {
|
||||
return (
|
||||
<div>
|
||||
<br />
|
||||
<Formsy
|
||||
onValidSubmit={this.onValidSubmit}
|
||||
onValid={this.enableButton}
|
||||
onInvalid={this.disableButton}
|
||||
>
|
||||
{this.props.schema.configs.map((schema) => {
|
||||
switch (schema.ui.type) {
|
||||
case 'input':
|
||||
return (
|
||||
<FormsyEuiFieldText
|
||||
key={schema.id}
|
||||
id={schema.id}
|
||||
defaultValue={get(
|
||||
this.props,
|
||||
`values.config.${schema.id}`,
|
||||
schema.defaultValue
|
||||
)}
|
||||
name={schema.id}
|
||||
disabled={!this.props.onSubmit}
|
||||
helpText={schema.ui.helpText}
|
||||
placeholder={schema.ui.placeholder}
|
||||
label={schema.ui.label}
|
||||
validationError={schema.error}
|
||||
required={schema.required || false}
|
||||
/>
|
||||
);
|
||||
case 'password':
|
||||
return (
|
||||
<FormsyEuiPasswordText
|
||||
key={schema.id}
|
||||
id={schema.id}
|
||||
disabled={!this.props.onSubmit}
|
||||
defaultValue={get(
|
||||
this.props,
|
||||
`values.config.${schema.id}`,
|
||||
schema.defaultValue
|
||||
)}
|
||||
name={schema.id}
|
||||
placeholder={schema.ui.placeholder}
|
||||
helpText={schema.ui.helpText}
|
||||
label={schema.ui.label}
|
||||
validationError={schema.error}
|
||||
required={schema.required || false}
|
||||
/>
|
||||
);
|
||||
case 'multi-input':
|
||||
return (
|
||||
<FormsyEuiMultiFieldText
|
||||
key={schema.id}
|
||||
id={schema.id}
|
||||
disabled={!this.props.onSubmit}
|
||||
defaultValue={get(
|
||||
this.props,
|
||||
`values.config.${schema.id}`,
|
||||
schema.defaultValue
|
||||
)}
|
||||
name={schema.id}
|
||||
placeholder={schema.ui.placeholder}
|
||||
helpText={schema.ui.helpText}
|
||||
label={schema.ui.label}
|
||||
validationError={schema.error}
|
||||
required={schema.required}
|
||||
/>
|
||||
);
|
||||
case 'select':
|
||||
return (
|
||||
<FormsyEuiSelect
|
||||
key={schema.id}
|
||||
id={schema.id}
|
||||
name={schema.id}
|
||||
disabled={!this.props.onSubmit}
|
||||
defaultValue={get(
|
||||
this.props,
|
||||
`values.config.${schema.id}`,
|
||||
schema.defaultValue
|
||||
)}
|
||||
helpText={schema.ui.helpText}
|
||||
label={schema.ui.label}
|
||||
options={[
|
||||
{
|
||||
value: '',
|
||||
text: i18n.translate('xpack.beatsManagement.table.selectOptionLabel', {
|
||||
defaultMessage: 'Please Select An Option',
|
||||
}),
|
||||
},
|
||||
].concat(schema.options || [])}
|
||||
validationError={schema.error}
|
||||
required={schema.required}
|
||||
/>
|
||||
);
|
||||
case 'code':
|
||||
return (
|
||||
<FormsyEuiCodeEditor
|
||||
key={`${schema.id}-${this.props.id}`}
|
||||
mode="yaml"
|
||||
disabled={!this.props.onSubmit}
|
||||
id={schema.id}
|
||||
defaultValue={get(
|
||||
this.props,
|
||||
`values.config.${schema.id}`,
|
||||
schema.defaultValue
|
||||
)}
|
||||
name={schema.id}
|
||||
helpText={schema.ui.helpText}
|
||||
label={schema.ui.label}
|
||||
options={schema.options ? schema.options : []}
|
||||
validationError={schema.error}
|
||||
required={schema.required}
|
||||
/>
|
||||
);
|
||||
}
|
||||
})}
|
||||
{this.props.schema && (
|
||||
<FormsyEuiCodeEditor
|
||||
mode="yaml"
|
||||
disabled={!this.props.onSubmit}
|
||||
id={'other'}
|
||||
defaultValue={get(this.props, `values.config.other`, '')}
|
||||
name={'other'}
|
||||
helpText={i18n.translate('xpack.beatsManagement.config.otherConfigDescription', {
|
||||
defaultMessage: 'Use YAML format to specify other settings for the Filebeat Input',
|
||||
})}
|
||||
label={i18n.translate('xpack.beatsManagement.config.otherConfigLabel', {
|
||||
defaultMessage: 'Other Config',
|
||||
})}
|
||||
validationError={i18n.translate('xpack.beatsManagement.config.other.error', {
|
||||
defaultMessage: 'Use valid YAML format',
|
||||
})}
|
||||
required={false}
|
||||
/>
|
||||
)}
|
||||
{this.props.onSubmit && (
|
||||
<button
|
||||
type="submit"
|
||||
style={{ display: 'none' }}
|
||||
disabled={!this.state.canSubmit}
|
||||
ref={this.form}
|
||||
/>
|
||||
)}
|
||||
</Formsy>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
}
|
||||
export const ConfigForm = ConfigFormUi;
|
|
@ -1,189 +0,0 @@
|
|||
/*
|
||||
* Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
|
||||
* or more contributor license agreements. Licensed under the Elastic License
|
||||
* 2.0; you may not use this file except in compliance with the Elastic License
|
||||
* 2.0.
|
||||
*/
|
||||
|
||||
import {
|
||||
EuiButton,
|
||||
EuiButtonEmpty,
|
||||
EuiFieldText,
|
||||
EuiFlexGroup,
|
||||
EuiFlexItem,
|
||||
EuiFlyout,
|
||||
EuiFlyoutBody,
|
||||
EuiFlyoutFooter,
|
||||
EuiFlyoutHeader,
|
||||
EuiFormRow,
|
||||
EuiHorizontalRule,
|
||||
EuiSelect,
|
||||
EuiSpacer,
|
||||
EuiTitle,
|
||||
} from '@elastic/eui';
|
||||
import { i18n } from '@kbn/i18n';
|
||||
import React from 'react';
|
||||
import { configBlockSchemas } from '../../../../common/config_schemas';
|
||||
import { translateConfigSchema } from '../../../../common/config_schemas_translations_map';
|
||||
import { ConfigurationBlock } from '../../../../common/domain_types';
|
||||
import { ConfigForm } from './config_form';
|
||||
|
||||
interface ComponentProps {
|
||||
configBlock?: ConfigurationBlock;
|
||||
onClose(): any;
|
||||
onSave?(config: ConfigurationBlock): any;
|
||||
}
|
||||
|
||||
interface ComponentState {
|
||||
valid: boolean;
|
||||
configBlock: ConfigurationBlock;
|
||||
}
|
||||
|
||||
class ConfigViewUi extends React.Component<ComponentProps, ComponentState> {
|
||||
private form = React.createRef<any>();
|
||||
private editMode: boolean;
|
||||
private schema = translateConfigSchema(configBlockSchemas);
|
||||
constructor(props: any) {
|
||||
super(props);
|
||||
this.editMode = props.configBlock !== undefined;
|
||||
|
||||
this.state = {
|
||||
valid: false,
|
||||
configBlock: props.configBlock || {
|
||||
type: this.schema[0].id,
|
||||
},
|
||||
};
|
||||
}
|
||||
public onValueChange = (field: string) => (e: any) => {
|
||||
const value = e.currentTarget ? e.currentTarget.value : e;
|
||||
this.setState((state: any) => ({
|
||||
configBlock: {
|
||||
...state.configBlock,
|
||||
[field]: value,
|
||||
},
|
||||
}));
|
||||
};
|
||||
public render() {
|
||||
const thisConfigSchema = this.schema.find((s) => this.state.configBlock.type === s.id);
|
||||
|
||||
if (!thisConfigSchema) {
|
||||
return i18n.translate('xpack.beatsManagement.tagConfig.invalidSchema', {
|
||||
defaultMessage:
|
||||
'Error: This config is invalid, it is not supported by Beats and should be removed',
|
||||
});
|
||||
}
|
||||
return (
|
||||
<EuiFlyout onClose={this.props.onClose}>
|
||||
<EuiFlyoutHeader hasBorder>
|
||||
<EuiTitle size="m">
|
||||
<h2>
|
||||
{this.editMode
|
||||
? this.props.onSave
|
||||
? i18n.translate('xpack.beatsManagement.tagConfig.editConfigurationTitle', {
|
||||
defaultMessage: 'Edit configuration block',
|
||||
})
|
||||
: i18n.translate('xpack.beatsManagement.tagConfig.viewConfigurationTitle"', {
|
||||
defaultMessage: 'View configuration block',
|
||||
})
|
||||
: i18n.translate('xpack.beatsManagement.tagConfig.addConfigurationTitle"', {
|
||||
defaultMessage: 'Add configuration block',
|
||||
})}
|
||||
</h2>
|
||||
</EuiTitle>
|
||||
</EuiFlyoutHeader>
|
||||
<EuiFlyoutBody>
|
||||
<EuiFormRow
|
||||
label={i18n.translate('xpack.beatsManagement.tagConfig.typeLabel', {
|
||||
defaultMessage: 'Type',
|
||||
})}
|
||||
>
|
||||
<EuiSelect
|
||||
options={this.schema.map((s) => ({ value: s.id, text: s.name }))}
|
||||
value={this.state.configBlock.type}
|
||||
disabled={this.editMode}
|
||||
onChange={this.onValueChange('type')}
|
||||
/>
|
||||
</EuiFormRow>
|
||||
<EuiFormRow
|
||||
label={i18n.translate('xpack.beatsManagement.tagConfig.descriptionLabel', {
|
||||
defaultMessage: 'Description',
|
||||
})}
|
||||
>
|
||||
<EuiFieldText
|
||||
value={this.state.configBlock.description}
|
||||
disabled={!this.props.onSave}
|
||||
onChange={this.onValueChange('description')}
|
||||
placeholder={i18n.translate(
|
||||
'xpack.beatsManagement.tagConfig.descriptionPlaceholder',
|
||||
{
|
||||
defaultMessage: 'Description (optional)',
|
||||
}
|
||||
)}
|
||||
/>
|
||||
</EuiFormRow>
|
||||
<EuiSpacer />
|
||||
<h3>
|
||||
{i18n.translate('xpack.beatsManagement.tagConfig.configurationTypeText', {
|
||||
defaultMessage: '{configType} configuration',
|
||||
values: {
|
||||
configType: thisConfigSchema ? thisConfigSchema.name : 'Unknown',
|
||||
},
|
||||
})}
|
||||
</h3>
|
||||
<EuiHorizontalRule />
|
||||
|
||||
<ConfigForm
|
||||
onSubmit={
|
||||
this.props.onSave
|
||||
? (data) => {
|
||||
if (this.props.onSave) {
|
||||
this.props.onSave({
|
||||
...this.state.configBlock,
|
||||
config: data,
|
||||
});
|
||||
}
|
||||
this.props.onClose();
|
||||
}
|
||||
: undefined
|
||||
}
|
||||
canSubmit={(canIt) => this.setState({ valid: canIt })}
|
||||
ref={this.form}
|
||||
values={this.state.configBlock}
|
||||
id={thisConfigSchema ? thisConfigSchema.name : 'Undefined'}
|
||||
schema={thisConfigSchema}
|
||||
/>
|
||||
</EuiFlyoutBody>
|
||||
<EuiFlyoutFooter>
|
||||
<EuiFlexGroup justifyContent="spaceBetween">
|
||||
<EuiFlexItem grow={false}>
|
||||
<EuiButtonEmpty iconType="cross" onClick={this.props.onClose}>
|
||||
{i18n.translate('xpack.beatsManagement.tagConfig.closeButtonLabel', {
|
||||
defaultMessage: 'Close',
|
||||
})}
|
||||
</EuiButtonEmpty>
|
||||
</EuiFlexItem>
|
||||
{this.props.onSave && (
|
||||
<EuiFlexItem grow={false}>
|
||||
<EuiButton
|
||||
disabled={!this.state.valid}
|
||||
fill
|
||||
onClick={() => {
|
||||
if (this.form.current) {
|
||||
this.form.current.submit();
|
||||
}
|
||||
}}
|
||||
>
|
||||
{i18n.translate('xpack.beatsManagement.tagConfig.saveButtonLabel', {
|
||||
defaultMessage: 'Save',
|
||||
})}
|
||||
</EuiButton>
|
||||
</EuiFlexItem>
|
||||
)}
|
||||
</EuiFlexGroup>
|
||||
</EuiFlyoutFooter>
|
||||
</EuiFlyout>
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
export const ConfigView = ConfigViewUi;
|
|
@ -1,9 +0,0 @@
|
|||
/*
|
||||
* Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
|
||||
* or more contributor license agreements. Licensed under the Elastic License
|
||||
* 2.0; you may not use this file except in compliance with the Elastic License
|
||||
* 2.0.
|
||||
*/
|
||||
|
||||
export { TagBadge } from './tag_badge';
|
||||
export { TagEdit } from './tag_edit';
|
|
@ -1,48 +0,0 @@
|
|||
/*
|
||||
* Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
|
||||
* or more contributor license agreements. Licensed under the Elastic License
|
||||
* 2.0; you may not use this file except in compliance with the Elastic License
|
||||
* 2.0.
|
||||
*/
|
||||
|
||||
import { EuiBadge, EuiBadgeProps } from '@elastic/eui';
|
||||
import React from 'react';
|
||||
import { TABLE_CONFIG } from '../../../common/constants';
|
||||
|
||||
type TagBadgeProps = EuiBadgeProps & {
|
||||
maxIdRenderSize?: number;
|
||||
tag: { name: string; color: string; disabled?: boolean; id: string };
|
||||
};
|
||||
|
||||
export const TagBadge = (props: TagBadgeProps) => {
|
||||
const { iconType, onClick, onClickAriaLabel, tag } = props;
|
||||
const maxIdRenderSize = props.maxIdRenderSize || TABLE_CONFIG.TRUNCATE_TAG_LENGTH;
|
||||
const idToRender = `${tag.name.substring(0, maxIdRenderSize)}${
|
||||
tag.name.length > maxIdRenderSize ? '...' : ''
|
||||
}`;
|
||||
|
||||
if (tag.disabled) {
|
||||
return (
|
||||
<EuiBadge color="default" iconType="cross">
|
||||
{idToRender}
|
||||
</EuiBadge>
|
||||
);
|
||||
} else if (onClick && onClickAriaLabel) {
|
||||
return (
|
||||
<EuiBadge
|
||||
color={tag.color || 'primary'}
|
||||
iconType={iconType}
|
||||
onClick={onClick as React.MouseEventHandler<HTMLButtonElement>}
|
||||
onClickAriaLabel={onClickAriaLabel}
|
||||
>
|
||||
{idToRender}
|
||||
</EuiBadge>
|
||||
);
|
||||
} else {
|
||||
return (
|
||||
<EuiBadge color={tag.color || 'primary'} iconType={iconType}>
|
||||
{idToRender}
|
||||
</EuiBadge>
|
||||
);
|
||||
}
|
||||
};
|
|
@ -1,238 +0,0 @@
|
|||
/*
|
||||
* Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
|
||||
* or more contributor license agreements. Licensed under the Elastic License
|
||||
* 2.0; you may not use this file except in compliance with the Elastic License
|
||||
* 2.0.
|
||||
*/
|
||||
|
||||
import {
|
||||
EuiButton,
|
||||
// @ts-ignore
|
||||
EuiColorPicker,
|
||||
EuiFieldText,
|
||||
EuiFlexGroup,
|
||||
EuiFlexItem,
|
||||
// @ts-ignore
|
||||
EuiForm,
|
||||
EuiFormRow,
|
||||
EuiHorizontalRule,
|
||||
EuiSpacer,
|
||||
EuiText,
|
||||
EuiTitle,
|
||||
} from '@elastic/eui';
|
||||
import { i18n } from '@kbn/i18n';
|
||||
import { FormattedMessage } from '@kbn/i18n/react';
|
||||
import 'brace/mode/yaml';
|
||||
import 'brace/theme/github';
|
||||
import React from 'react';
|
||||
import { BeatTag, CMBeat, ConfigurationBlock } from '../../../common/domain_types';
|
||||
import { ConfigList } from '../config_list';
|
||||
import { AssignmentActionType, BeatsTableType, Table, tagConfigActions } from '../table';
|
||||
import { ConfigView } from './config_view';
|
||||
import { TagBadge } from './tag_badge';
|
||||
|
||||
interface TagEditProps {
|
||||
tag: BeatTag;
|
||||
configuration_blocks: {
|
||||
error?: string | undefined;
|
||||
list: ConfigurationBlock[];
|
||||
page: number;
|
||||
total: number;
|
||||
};
|
||||
onConfigListChange: (index: number, size: number) => void;
|
||||
onDetachBeat?: (beatIds: string[]) => void;
|
||||
onTagChange: (field: keyof BeatTag, value: string) => any;
|
||||
onConfigAddOrEdit: (block: ConfigurationBlock) => any;
|
||||
onConfigRemoved: (block: ConfigurationBlock) => any;
|
||||
attachedBeats?: CMBeat[];
|
||||
}
|
||||
|
||||
interface TagEditState {
|
||||
showFlyout: boolean;
|
||||
tableRef: any;
|
||||
selectedConfig?: ConfigurationBlock;
|
||||
}
|
||||
|
||||
export class TagEdit extends React.PureComponent<TagEditProps, TagEditState> {
|
||||
constructor(props: TagEditProps) {
|
||||
super(props);
|
||||
|
||||
this.state = {
|
||||
showFlyout: false,
|
||||
tableRef: React.createRef(),
|
||||
};
|
||||
}
|
||||
|
||||
public render() {
|
||||
// eslint-disable-next-line @typescript-eslint/naming-convention
|
||||
const { tag, attachedBeats, configuration_blocks } = this.props;
|
||||
|
||||
return (
|
||||
<div>
|
||||
<EuiFlexGroup>
|
||||
<EuiFlexItem>
|
||||
<EuiTitle size="xs">
|
||||
<h3>
|
||||
<FormattedMessage
|
||||
id="xpack.beatsManagement.tag.tagDetailsTitle"
|
||||
defaultMessage="Tag details"
|
||||
/>
|
||||
</h3>
|
||||
</EuiTitle>
|
||||
<EuiText color="subdued">
|
||||
<p>
|
||||
<FormattedMessage
|
||||
id="xpack.beatsManagement.tag.tagDetailsDescription"
|
||||
defaultMessage="A tag is a group of configuration blocks that you can apply to one or more Beats."
|
||||
/>
|
||||
</p>
|
||||
</EuiText>
|
||||
<div>
|
||||
<TagBadge tag={tag} />
|
||||
</div>
|
||||
</EuiFlexItem>
|
||||
<EuiFlexItem>
|
||||
<EuiForm>
|
||||
<EuiFormRow
|
||||
label={
|
||||
<FormattedMessage
|
||||
id="xpack.beatsManagement.tag.tagNameLabel"
|
||||
defaultMessage="Tag Name"
|
||||
/>
|
||||
}
|
||||
isInvalid={!!this.getNameError(tag.name)}
|
||||
error={this.getNameError(tag.name) || undefined}
|
||||
>
|
||||
<EuiFieldText
|
||||
name="name"
|
||||
isInvalid={!!this.getNameError(tag.name)}
|
||||
onChange={this.updateTag('name')}
|
||||
value={tag.name}
|
||||
placeholder={i18n.translate('xpack.beatsManagement.tag.tagNamePlaceholder', {
|
||||
defaultMessage: 'Tag name (required)',
|
||||
})}
|
||||
/>
|
||||
</EuiFormRow>
|
||||
<EuiFormRow
|
||||
label={i18n.translate('xpack.beatsManagement.tag.tagColorLabel', {
|
||||
defaultMessage: 'Tag Color',
|
||||
})}
|
||||
>
|
||||
<EuiColorPicker color={tag.color} onChange={this.updateTag('color')} />
|
||||
</EuiFormRow>
|
||||
</EuiForm>
|
||||
</EuiFlexItem>
|
||||
</EuiFlexGroup>
|
||||
<EuiSpacer />
|
||||
<EuiHorizontalRule />
|
||||
<EuiFlexGroup alignItems="stretch">
|
||||
<EuiFlexItem>
|
||||
<EuiTitle size="xs">
|
||||
<h3>
|
||||
<FormattedMessage
|
||||
id="xpack.beatsManagement.tag.tagConfigurationsTitle"
|
||||
defaultMessage="Configuration blocks"
|
||||
/>
|
||||
</h3>
|
||||
</EuiTitle>
|
||||
<EuiText color="subdued">
|
||||
<p>
|
||||
<FormattedMessage
|
||||
id="xpack.beatsManagement.tag.tagConfigurationsDescription"
|
||||
defaultMessage="A tag can have configuration blocks for different types of Beats. For example, a tag
|
||||
can have two Metricbeat configuration blocks and one Filebeat input configuration block."
|
||||
/>
|
||||
</p>
|
||||
</EuiText>
|
||||
</EuiFlexItem>
|
||||
<EuiFlexItem>
|
||||
<div>
|
||||
<ConfigList
|
||||
onTableChange={this.props.onConfigListChange}
|
||||
configs={configuration_blocks}
|
||||
onConfigClick={(action: string, block: ConfigurationBlock) => {
|
||||
if (action === 'delete') {
|
||||
this.props.onConfigRemoved(block);
|
||||
} else {
|
||||
this.setState({
|
||||
showFlyout: true,
|
||||
selectedConfig: block,
|
||||
});
|
||||
}
|
||||
}}
|
||||
/>
|
||||
<br />
|
||||
<EuiButton
|
||||
onClick={() => {
|
||||
this.setState({ showFlyout: true });
|
||||
}}
|
||||
>
|
||||
<FormattedMessage
|
||||
id="xpack.beatsManagement.tag.addConfigurationButtonLabel"
|
||||
defaultMessage="Add configuration block"
|
||||
/>
|
||||
</EuiButton>
|
||||
</div>
|
||||
</EuiFlexItem>
|
||||
</EuiFlexGroup>
|
||||
<EuiSpacer />
|
||||
{attachedBeats && (
|
||||
<div>
|
||||
<EuiHorizontalRule />
|
||||
|
||||
<EuiTitle size="xs">
|
||||
<h3>
|
||||
<FormattedMessage
|
||||
id="xpack.beatsManagement.tag.beatsAssignedToTagTitle"
|
||||
defaultMessage="Beats with this tag"
|
||||
/>
|
||||
</h3>
|
||||
</EuiTitle>
|
||||
<Table
|
||||
actions={tagConfigActions}
|
||||
actionHandler={this.handleAssignmentActions}
|
||||
items={attachedBeats}
|
||||
ref={this.state.tableRef}
|
||||
type={BeatsTableType}
|
||||
/>
|
||||
</div>
|
||||
)}
|
||||
{this.state.showFlyout && (
|
||||
<ConfigView
|
||||
configBlock={this.state.selectedConfig}
|
||||
onClose={() => this.setState({ showFlyout: false, selectedConfig: undefined })}
|
||||
onSave={(config: ConfigurationBlock) => {
|
||||
this.setState({ showFlyout: false, selectedConfig: undefined });
|
||||
this.props.onConfigAddOrEdit(config);
|
||||
}}
|
||||
/>
|
||||
)}
|
||||
</div>
|
||||
);
|
||||
}
|
||||
|
||||
private getNameError = (name: string) => {
|
||||
if (name && name !== '' && name.search(/^[a-zA-Z0-9-]+$/) === -1) {
|
||||
return i18n.translate('xpack.beatsManagement.tag.tagName.validationErrorMessage', {
|
||||
defaultMessage: 'Tag name must consist of letters, numbers, and dashes only',
|
||||
});
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
};
|
||||
|
||||
private handleAssignmentActions = (action: AssignmentActionType) => {
|
||||
switch (action) {
|
||||
case AssignmentActionType.Delete:
|
||||
const { selection } = this.state.tableRef.current.state;
|
||||
if (this.props.onDetachBeat) {
|
||||
this.props.onDetachBeat(selection.map((beat: any) => beat.id));
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
private updateTag = (key: keyof BeatTag, value?: any) =>
|
||||
value !== undefined
|
||||
? this.props.onTagChange(key, value)
|
||||
: (e: any) => this.props.onTagChange(key, e.target ? e.target.value : e);
|
||||
}
|
|
@ -1,104 +0,0 @@
|
|||
/*
|
||||
* Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
|
||||
* or more contributor license agreements. Licensed under the Elastic License
|
||||
* 2.0; you may not use this file except in compliance with the Elastic License
|
||||
* 2.0.
|
||||
*/
|
||||
|
||||
import { Container } from 'unstated';
|
||||
import { CMBeat } from '../../common/domain_types';
|
||||
// eslint-disable-next-line @kbn/eslint/no-restricted-paths
|
||||
import type { BeatsTagAssignment } from '../../server/lib/adapters/beats/adapter_types';
|
||||
import { FrontendLibs } from './../lib/types';
|
||||
|
||||
interface ContainerState {
|
||||
list: CMBeat[];
|
||||
}
|
||||
|
||||
export class BeatsContainer extends Container<ContainerState> {
|
||||
private query?: string;
|
||||
constructor(private readonly libs: FrontendLibs) {
|
||||
super();
|
||||
this.state = {
|
||||
list: [],
|
||||
};
|
||||
}
|
||||
|
||||
public getBeatWithToken = async (token: string) => {
|
||||
const beat = await this.libs.beats.getBeatWithToken(token);
|
||||
|
||||
if (beat) {
|
||||
this.setState({
|
||||
list: [beat as CMBeat, ...this.state.list],
|
||||
});
|
||||
return beat as CMBeat;
|
||||
}
|
||||
return null;
|
||||
};
|
||||
|
||||
public reload = async (kuery?: string) => {
|
||||
if (kuery) {
|
||||
this.query = kuery;
|
||||
} else {
|
||||
this.query = undefined;
|
||||
}
|
||||
const beats = await this.libs.beats.getAll(this.query);
|
||||
|
||||
this.setState({
|
||||
list: beats,
|
||||
});
|
||||
};
|
||||
|
||||
public deactivate = async (beats: CMBeat[]) => {
|
||||
for (const beat of beats) {
|
||||
await this.libs.beats.update(beat.id, { active: false });
|
||||
}
|
||||
|
||||
// because the compile code above has a very minor race condition, we wait,
|
||||
// the max race condition time is really 10ms but doing 100 to be safe
|
||||
setTimeout(async () => {
|
||||
await this.reload(this.query);
|
||||
}, 100);
|
||||
};
|
||||
|
||||
public toggleTagAssignment = async (tagId: string, beats: CMBeat[]) => {
|
||||
if (beats.some((beat) => beat.tags !== undefined && beat.tags.some((id) => id === tagId))) {
|
||||
await this.removeTagsFromBeats(beats, tagId);
|
||||
return 'removed';
|
||||
}
|
||||
await this.assignTagsToBeats(beats, tagId);
|
||||
return 'added';
|
||||
};
|
||||
|
||||
public removeTagsFromBeats = async (beats: CMBeat[] | string[], tagId: string) => {
|
||||
if (!beats.length) {
|
||||
return false;
|
||||
}
|
||||
const assignments = createBeatTagAssignments(beats, tagId);
|
||||
await this.libs.beats.removeTagsFromBeats(assignments);
|
||||
// ES responds incorrectly when we call too soon
|
||||
setTimeout(async () => {
|
||||
await this.reload(this.query);
|
||||
}, 150);
|
||||
};
|
||||
|
||||
public assignTagsToBeats = async (beats: CMBeat[] | string[], tagId: string) => {
|
||||
if (!beats.length) {
|
||||
return false;
|
||||
}
|
||||
const assignments = createBeatTagAssignments(beats, tagId);
|
||||
await this.libs.beats.assignTagsToBeats(assignments);
|
||||
// ES responds incorrectly when we call too soon
|
||||
setTimeout(async () => {
|
||||
await this.reload(this.query);
|
||||
}, 150);
|
||||
};
|
||||
}
|
||||
|
||||
function createBeatTagAssignments(beats: CMBeat[] | string[], tagId: string): BeatsTagAssignment[] {
|
||||
if (typeof beats[0] === 'string') {
|
||||
return (beats as string[]).map((id) => ({ beatId: id, tag: tagId }));
|
||||
} else {
|
||||
return (beats as CMBeat[]).map(({ id }) => ({ beatId: id, tag: tagId }));
|
||||
}
|
||||
}
|
|
@ -1,54 +0,0 @@
|
|||
/*
|
||||
* Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
|
||||
* or more contributor license agreements. Licensed under the Elastic License
|
||||
* 2.0; you may not use this file except in compliance with the Elastic License
|
||||
* 2.0.
|
||||
*/
|
||||
|
||||
import { Container } from 'unstated';
|
||||
import { BeatTag } from '../../common/domain_types';
|
||||
import { FrontendLibs } from '../lib/types';
|
||||
|
||||
interface ContainerState {
|
||||
list: BeatTag[];
|
||||
}
|
||||
|
||||
export class TagsContainer extends Container<ContainerState> {
|
||||
private query?: string;
|
||||
constructor(private readonly libs: FrontendLibs) {
|
||||
super();
|
||||
this.state = {
|
||||
list: [],
|
||||
};
|
||||
}
|
||||
public reload = async (kuery?: string) => {
|
||||
if (kuery) {
|
||||
this.query = kuery;
|
||||
} else {
|
||||
this.query = undefined;
|
||||
}
|
||||
|
||||
const tags = await this.libs.tags.getAll(this.query);
|
||||
|
||||
this.setState({
|
||||
list: tags,
|
||||
});
|
||||
};
|
||||
|
||||
public delete = async (tags: BeatTag[]) => {
|
||||
const tagIds = tags.map((tag: BeatTag) => tag.id);
|
||||
const success = await this.libs.tags.delete(tagIds);
|
||||
if (success) {
|
||||
this.setState({
|
||||
list: this.state.list.filter((tag) => tagIds.includes(tag.id)),
|
||||
});
|
||||
}
|
||||
return success;
|
||||
};
|
||||
|
||||
public upsertTag = async (tag: BeatTag) => {
|
||||
const beatTag = await this.libs.tags.upsertTag(tag);
|
||||
await this.reload();
|
||||
return beatTag !== null;
|
||||
};
|
||||
}
|
|
@ -1,89 +0,0 @@
|
|||
/*
|
||||
* Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
|
||||
* or more contributor license agreements. Licensed under the Elastic License
|
||||
* 2.0; you may not use this file except in compliance with the Elastic License
|
||||
* 2.0.
|
||||
*/
|
||||
|
||||
import React from 'react';
|
||||
|
||||
import { QuerySuggestion } from '../../../../../src/plugins/data/public';
|
||||
|
||||
import { FrontendLibs } from '../lib/types';
|
||||
import { RendererFunction } from '../utils/typed_react';
|
||||
|
||||
interface WithKueryAutocompletionLifecycleProps {
|
||||
libs: FrontendLibs;
|
||||
fieldPrefix?: string;
|
||||
children: RendererFunction<{
|
||||
isLoadingSuggestions: boolean;
|
||||
loadSuggestions: (expression: string, cursorPosition: number, maxSuggestions?: number) => void;
|
||||
suggestions: QuerySuggestion[];
|
||||
}>;
|
||||
}
|
||||
|
||||
interface WithKueryAutocompletionLifecycleState {
|
||||
// lacking cancellation support in the autocompletion api,
|
||||
// this is used to keep older, slower requests from clobbering newer ones
|
||||
currentRequest: {
|
||||
expression: string;
|
||||
cursorPosition: number;
|
||||
} | null;
|
||||
suggestions: QuerySuggestion[];
|
||||
}
|
||||
|
||||
export class WithKueryAutocompletion extends React.Component<
|
||||
WithKueryAutocompletionLifecycleProps,
|
||||
WithKueryAutocompletionLifecycleState
|
||||
> {
|
||||
public readonly state: WithKueryAutocompletionLifecycleState = {
|
||||
currentRequest: null,
|
||||
suggestions: [],
|
||||
};
|
||||
|
||||
public render() {
|
||||
const { currentRequest, suggestions } = this.state;
|
||||
|
||||
return this.props.children({
|
||||
isLoadingSuggestions: currentRequest !== null,
|
||||
loadSuggestions: this.loadSuggestions,
|
||||
suggestions,
|
||||
});
|
||||
}
|
||||
|
||||
private loadSuggestions = async (
|
||||
expression: string,
|
||||
cursorPosition: number,
|
||||
maxSuggestions?: number
|
||||
) => {
|
||||
this.setState({
|
||||
currentRequest: {
|
||||
expression,
|
||||
cursorPosition,
|
||||
},
|
||||
suggestions: [],
|
||||
});
|
||||
let suggestions: any[] = [];
|
||||
try {
|
||||
suggestions = await this.props.libs.elasticsearch.getSuggestions(
|
||||
expression,
|
||||
cursorPosition,
|
||||
this.props.fieldPrefix
|
||||
);
|
||||
} catch (e) {
|
||||
suggestions = [];
|
||||
}
|
||||
|
||||
this.setState((state) =>
|
||||
state.currentRequest &&
|
||||
state.currentRequest.expression !== expression &&
|
||||
state.currentRequest.cursorPosition !== cursorPosition
|
||||
? state // ignore this result, since a newer request is in flight
|
||||
: {
|
||||
...state,
|
||||
currentRequest: null,
|
||||
suggestions: maxSuggestions ? suggestions.slice(0, maxSuggestions) : suggestions,
|
||||
}
|
||||
);
|
||||
};
|
||||
}
|
|
@ -1,101 +0,0 @@
|
|||
/*
|
||||
* Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
|
||||
* or more contributor license agreements. Licensed under the Elastic License
|
||||
* 2.0; you may not use this file except in compliance with the Elastic License
|
||||
* 2.0.
|
||||
*/
|
||||
|
||||
import { parse, stringify } from 'query-string';
|
||||
import React from 'react';
|
||||
import { withRouter, RouteComponentProps } from 'react-router-dom';
|
||||
import { FlatObject } from '../frontend_types';
|
||||
import { RendererFunction } from '../utils/typed_react';
|
||||
|
||||
type StateCallback<T> = (previousState: T) => T;
|
||||
|
||||
export interface URLStateProps<URLState = object> {
|
||||
goTo: (path: string) => void;
|
||||
setUrlState: (
|
||||
newState:
|
||||
| Partial<FlatObject<URLState>>
|
||||
| StateCallback<URLState>
|
||||
| Promise<StateCallback<URLState>>
|
||||
) => void;
|
||||
urlState: URLState;
|
||||
}
|
||||
interface ComponentProps<URLState extends object> extends RouteComponentProps {
|
||||
children: RendererFunction<URLStateProps<URLState>>;
|
||||
}
|
||||
|
||||
export class WithURLStateComponent<URLState extends object> extends React.Component<
|
||||
ComponentProps<URLState>
|
||||
> {
|
||||
private get URLState(): URLState {
|
||||
// slice because parse does not account for the initial ? in the search string
|
||||
return parse(decodeURIComponent(this.props.history.location.search).substring(1), {
|
||||
sort: false,
|
||||
}) as URLState;
|
||||
}
|
||||
|
||||
private historyListener: (() => void) | null = null;
|
||||
|
||||
public componentWillUnmount() {
|
||||
if (this.historyListener) {
|
||||
this.historyListener();
|
||||
}
|
||||
}
|
||||
public render() {
|
||||
return this.props.children({
|
||||
goTo: this.goTo,
|
||||
setUrlState: this.setURLState,
|
||||
urlState: this.URLState || {},
|
||||
});
|
||||
}
|
||||
|
||||
private setURLState = async (
|
||||
state:
|
||||
| Partial<FlatObject<URLState>>
|
||||
| StateCallback<URLState>
|
||||
| Promise<StateCallback<URLState>>
|
||||
) => {
|
||||
let newState;
|
||||
const pastState = this.URLState;
|
||||
if (typeof state === 'function') {
|
||||
newState = await state(pastState);
|
||||
} else {
|
||||
newState = state;
|
||||
}
|
||||
|
||||
const search: string = stringify(
|
||||
{
|
||||
...pastState,
|
||||
...newState,
|
||||
},
|
||||
{ sort: false }
|
||||
);
|
||||
|
||||
const newLocation = {
|
||||
...this.props.history.location,
|
||||
search,
|
||||
};
|
||||
|
||||
this.props.history.replace(newLocation);
|
||||
this.forceUpdate();
|
||||
};
|
||||
|
||||
private goTo = (path: string) => {
|
||||
this.props.history.push({
|
||||
pathname: path,
|
||||
search: this.props.history.location.search,
|
||||
});
|
||||
};
|
||||
}
|
||||
export const WithURLState = withRouter(WithURLStateComponent);
|
||||
|
||||
export function withUrlState<OP>(UnwrappedComponent: React.ComponentType<OP & URLStateProps>) {
|
||||
return (origProps: OP) => (
|
||||
<WithURLState>
|
||||
{(URLProps: URLStateProps) => <UnwrappedComponent {...URLProps} {...origProps} />}
|
||||
</WithURLState>
|
||||
);
|
||||
}
|
|
@ -1,36 +0,0 @@
|
|||
/*
|
||||
* Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
|
||||
* or more contributor license agreements. Licensed under the Elastic License
|
||||
* 2.0; you may not use this file except in compliance with the Elastic License
|
||||
* 2.0.
|
||||
*/
|
||||
|
||||
import { RouteComponentProps } from 'react-router-dom';
|
||||
import { BeatsContainer } from './containers/beats';
|
||||
import { TagsContainer } from './containers/tags';
|
||||
import { URLStateProps } from './containers/with_url_state';
|
||||
import { FrontendLibs } from './lib/types';
|
||||
|
||||
export type FlatObject<T> = { [Key in keyof T]: string };
|
||||
|
||||
export interface AppURLState {
|
||||
beatsKBar?: string;
|
||||
tagsKBar?: string;
|
||||
enrollmentToken?: string;
|
||||
createdTag?: string;
|
||||
}
|
||||
|
||||
export interface RouteConfig {
|
||||
path: string;
|
||||
component: React.ComponentType<any>;
|
||||
routes?: RouteConfig[];
|
||||
}
|
||||
|
||||
export interface AppPageProps extends URLStateProps<AppURLState>, RouteComponentProps<any> {
|
||||
libs: FrontendLibs;
|
||||
containers: {
|
||||
beats: BeatsContainer;
|
||||
tags: TagsContainer;
|
||||
};
|
||||
routes?: RouteConfig[];
|
||||
}
|
|
@ -1,40 +0,0 @@
|
|||
/*
|
||||
* Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
|
||||
* or more contributor license agreements. Licensed under the Elastic License
|
||||
* 2.0; you may not use this file except in compliance with the Elastic License
|
||||
* 2.0.
|
||||
*/
|
||||
|
||||
import { CoreSetup, Plugin, PluginInitializerContext } from '../../../../src/core/public';
|
||||
|
||||
import { ManagementSetup } from '../../../../src/plugins/management/public';
|
||||
import { SecurityPluginSetup } from '../../security/public';
|
||||
import { DataPublicPluginStart } from '../../../../src/plugins/data/public';
|
||||
import { LicensingPluginSetup } from '../../licensing/public';
|
||||
|
||||
import { bootstrap } from './bootstrap';
|
||||
import { BeatsManagementConfigType } from '../common';
|
||||
|
||||
interface SetupDeps {
|
||||
management: ManagementSetup;
|
||||
licensing: LicensingPluginSetup;
|
||||
security?: SecurityPluginSetup;
|
||||
}
|
||||
|
||||
interface StartDeps {
|
||||
data: DataPublicPluginStart;
|
||||
}
|
||||
|
||||
class BeatsManagementPlugin implements Plugin<void, void, SetupDeps, StartDeps> {
|
||||
constructor(private readonly initContext: PluginInitializerContext<BeatsManagementConfigType>) {}
|
||||
|
||||
public setup(core: CoreSetup<StartDeps>, plugins: SetupDeps) {
|
||||
const config = this.initContext.config.get();
|
||||
bootstrap(core, plugins, config, this.initContext.env.packageInfo.version);
|
||||
}
|
||||
|
||||
public start() {}
|
||||
public stop() {}
|
||||
}
|
||||
|
||||
export const plugin = (init: PluginInitializerContext) => new BeatsManagementPlugin(init);
|
|
@ -1,26 +0,0 @@
|
|||
/*
|
||||
* Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
|
||||
* or more contributor license agreements. Licensed under the Elastic License
|
||||
* 2.0; you may not use this file except in compliance with the Elastic License
|
||||
* 2.0.
|
||||
*/
|
||||
|
||||
import { CoreStart } from '../../../../src/core/public';
|
||||
import { DataPublicPluginStart } from '../../../../src/plugins/data/public';
|
||||
import { ManagementAppMountParams } from '../../../../src/plugins/management/public';
|
||||
|
||||
export const services = {
|
||||
I18nContext: (null as any) as CoreStart['i18n']['Context'],
|
||||
setBreadcrumbs: (null as any) as ManagementAppMountParams['setBreadcrumbs'],
|
||||
dataStart: (null as any) as DataPublicPluginStart,
|
||||
};
|
||||
|
||||
export const setServices = (
|
||||
core: CoreStart,
|
||||
plugins: { data: DataPublicPluginStart },
|
||||
params: ManagementAppMountParams
|
||||
) => {
|
||||
services.I18nContext = core.i18n.Context;
|
||||
services.setBreadcrumbs = params.setBreadcrumbs;
|
||||
services.dataStart = plugins.data;
|
||||
};
|
|
@ -1,38 +0,0 @@
|
|||
/*
|
||||
* Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
|
||||
* or more contributor license agreements. Licensed under the Elastic License
|
||||
* 2.0; you may not use this file except in compliance with the Elastic License
|
||||
* 2.0.
|
||||
*/
|
||||
|
||||
import { CMBeat } from '../../../../common/domain_types';
|
||||
import { ReturnTypeBulkAction } from '../../../../common/return_types';
|
||||
|
||||
export interface CMBeatsAdapter {
|
||||
get(id: string): Promise<CMBeat | null>;
|
||||
update(id: string, beatData: Partial<CMBeat>): Promise<boolean>;
|
||||
getBeatsWithTag(tagId: string): Promise<CMBeat[]>;
|
||||
getAll(ESQuery?: any): Promise<CMBeat[]>;
|
||||
removeTagsFromBeats(removals: BeatsTagAssignment[]): Promise<ReturnTypeBulkAction['results']>;
|
||||
assignTagsToBeats(assignments: BeatsTagAssignment[]): Promise<ReturnTypeBulkAction['results']>;
|
||||
getBeatWithToken(enrollmentToken: string): Promise<CMBeat | null>;
|
||||
}
|
||||
|
||||
export interface BeatsTagAssignment {
|
||||
beatId: string;
|
||||
tag: string;
|
||||
idxInRequest?: number;
|
||||
}
|
||||
|
||||
interface BeatsReturnedTagAssignment {
|
||||
status: number | null;
|
||||
result?: string;
|
||||
}
|
||||
|
||||
export interface CMAssignmentReturn {
|
||||
assignments: BeatsReturnedTagAssignment[];
|
||||
}
|
||||
|
||||
export interface BeatsRemovalReturn {
|
||||
removals: BeatsReturnedTagAssignment[];
|
||||
}
|
|
@ -1,109 +0,0 @@
|
|||
/*
|
||||
* Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
|
||||
* or more contributor license agreements. Licensed under the Elastic License
|
||||
* 2.0; you may not use this file except in compliance with the Elastic License
|
||||
* 2.0.
|
||||
*/
|
||||
|
||||
import { omit } from 'lodash';
|
||||
import { CMBeat } from '../../../../common/domain_types';
|
||||
import { ReturnTypeBulkAction } from '../../../../common/return_types';
|
||||
import { BeatsTagAssignment, CMBeatsAdapter } from './adapter_types';
|
||||
|
||||
export class MemoryBeatsAdapter implements CMBeatsAdapter {
|
||||
private beatsDB: CMBeat[];
|
||||
|
||||
constructor(beatsDB: CMBeat[]) {
|
||||
this.beatsDB = beatsDB;
|
||||
}
|
||||
|
||||
public async get(id: string) {
|
||||
return this.beatsDB.find((beat) => beat.id === id) || null;
|
||||
}
|
||||
|
||||
public async update(id: string, beatData: Partial<CMBeat>): Promise<boolean> {
|
||||
const index = this.beatsDB.findIndex((beat) => beat.id === id);
|
||||
|
||||
if (index === -1) {
|
||||
return false;
|
||||
}
|
||||
|
||||
this.beatsDB[index] = { ...this.beatsDB[index], ...beatData };
|
||||
return true;
|
||||
}
|
||||
|
||||
public async getAll() {
|
||||
return this.beatsDB.map((beat: any) => omit(beat, ['access_token'])) as CMBeat[];
|
||||
}
|
||||
public async getBeatsWithTag(tagId: string): Promise<CMBeat[]> {
|
||||
return this.beatsDB.map((beat: any) => omit(beat, ['access_token'])) as CMBeat[];
|
||||
}
|
||||
|
||||
public async getBeatWithToken(enrollmentToken: string): Promise<CMBeat | null> {
|
||||
return this.beatsDB.map((beat: any) => omit(beat, ['access_token']))[0] as CMBeat | null;
|
||||
}
|
||||
public async removeTagsFromBeats(
|
||||
removals: BeatsTagAssignment[]
|
||||
): Promise<ReturnTypeBulkAction['results']> {
|
||||
const beatIds = removals.map((r) => r.beatId);
|
||||
|
||||
const response = this.beatsDB
|
||||
.filter((beat) => beatIds.includes(beat.id))
|
||||
.map((beat) => {
|
||||
const tagData = removals.find((r) => r.beatId === beat.id);
|
||||
if (tagData) {
|
||||
if (beat.tags) {
|
||||
beat.tags = beat.tags.filter((tag) => tag !== tagData.tag);
|
||||
}
|
||||
}
|
||||
const removalsForBeat = removals.filter((r) => r.beatId === beat.id);
|
||||
if (removalsForBeat.length) {
|
||||
removalsForBeat.forEach((assignment: BeatsTagAssignment) => {
|
||||
if (beat.tags) {
|
||||
beat.tags = beat.tags.filter((tag) => tag !== assignment.tag);
|
||||
}
|
||||
});
|
||||
}
|
||||
return beat;
|
||||
});
|
||||
|
||||
return response.map((item: CMBeat, resultIdx: number) => ({
|
||||
idxInRequest: removals[resultIdx].idxInRequest,
|
||||
result: 'updated',
|
||||
status: 200,
|
||||
})) as any;
|
||||
}
|
||||
|
||||
public async assignTagsToBeats(
|
||||
assignments: BeatsTagAssignment[]
|
||||
): Promise<ReturnTypeBulkAction['results']> {
|
||||
const beatIds = assignments.map((r) => r.beatId);
|
||||
|
||||
this.beatsDB
|
||||
.filter((beat) => beatIds.includes(beat.id))
|
||||
.map((beat) => {
|
||||
// get tags that need to be assigned to this beat
|
||||
const tags = assignments
|
||||
.filter((a) => a.beatId === beat.id)
|
||||
.map((t: BeatsTagAssignment) => t.tag);
|
||||
|
||||
if (tags.length > 0) {
|
||||
if (!beat.tags) {
|
||||
beat.tags = [];
|
||||
}
|
||||
const nonExistingTags = tags.filter((t: string) => beat.tags && !beat.tags.includes(t));
|
||||
|
||||
if (nonExistingTags.length > 0) {
|
||||
beat.tags = beat.tags.concat(nonExistingTags);
|
||||
}
|
||||
}
|
||||
return beat;
|
||||
});
|
||||
|
||||
return assignments.map<any>((item: BeatsTagAssignment, resultIdx: number) => ({
|
||||
idxInRequest: assignments[resultIdx].idxInRequest,
|
||||
result: 'updated',
|
||||
status: 200,
|
||||
}));
|
||||
}
|
||||
}
|
|
@ -1,80 +0,0 @@
|
|||
/*
|
||||
* Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
|
||||
* or more contributor license agreements. Licensed under the Elastic License
|
||||
* 2.0; you may not use this file except in compliance with the Elastic License
|
||||
* 2.0.
|
||||
*/
|
||||
|
||||
import { CMBeat } from '../../../../common/domain_types';
|
||||
import {
|
||||
ReturnTypeBulkAction,
|
||||
ReturnTypeGet,
|
||||
ReturnTypeList,
|
||||
ReturnTypeUpdate,
|
||||
} from '../../../../common/return_types';
|
||||
import { RestAPIAdapter } from '../rest_api/adapter_types';
|
||||
import { BeatsTagAssignment, CMBeatsAdapter } from './adapter_types';
|
||||
|
||||
export class RestBeatsAdapter implements CMBeatsAdapter {
|
||||
constructor(private readonly REST: RestAPIAdapter) {}
|
||||
|
||||
public async get(id: string): Promise<CMBeat | null> {
|
||||
try {
|
||||
return (await this.REST.get<ReturnTypeGet<CMBeat>>(`/api/beats/agent/${id}`)).item;
|
||||
} catch (e) {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
public async getBeatWithToken(enrollmentToken: string): Promise<CMBeat | null> {
|
||||
try {
|
||||
return (
|
||||
await this.REST.get<ReturnTypeGet<CMBeat>>(`/api/beats/agent/unknown/${enrollmentToken}`)
|
||||
).item;
|
||||
} catch (e) {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
public async getAll(ESQuery?: string): Promise<CMBeat[]> {
|
||||
try {
|
||||
return (await this.REST.get<ReturnTypeList<CMBeat>>('/api/beats/agents/all', { ESQuery }))
|
||||
.list;
|
||||
} catch (e) {
|
||||
return [];
|
||||
}
|
||||
}
|
||||
|
||||
public async getBeatsWithTag(tagId: string): Promise<CMBeat[]> {
|
||||
try {
|
||||
return (await this.REST.get<ReturnTypeList<CMBeat>>(`/api/beats/agents/tag/${tagId}`)).list;
|
||||
} catch (e) {
|
||||
return [];
|
||||
}
|
||||
}
|
||||
|
||||
public async update(id: string, beatData: Partial<CMBeat>): Promise<boolean> {
|
||||
await this.REST.put<ReturnTypeUpdate<CMBeat>>(`/api/beats/agent/${id}`, beatData);
|
||||
return true;
|
||||
}
|
||||
|
||||
public async removeTagsFromBeats(
|
||||
removals: BeatsTagAssignment[]
|
||||
): Promise<ReturnTypeBulkAction['results']> {
|
||||
return (
|
||||
await this.REST.post<ReturnTypeBulkAction>(`/api/beats/agents_tags/removals`, {
|
||||
removals,
|
||||
})
|
||||
).results;
|
||||
}
|
||||
|
||||
public async assignTagsToBeats(
|
||||
assignments: BeatsTagAssignment[]
|
||||
): Promise<ReturnTypeBulkAction['results']> {
|
||||
return (
|
||||
await this.REST.post<ReturnTypeBulkAction>(`/api/beats/agents_tags/assignments`, {
|
||||
assignments,
|
||||
})
|
||||
).results;
|
||||
}
|
||||
}
|
|
@ -1,15 +0,0 @@
|
|||
/*
|
||||
* Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
|
||||
* or more contributor license agreements. Licensed under the Elastic License
|
||||
* 2.0; you may not use this file except in compliance with the Elastic License
|
||||
* 2.0.
|
||||
*/
|
||||
|
||||
import { ConfigurationBlock } from '../../../../common/domain_types';
|
||||
import { ReturnTypeBulkUpsert, ReturnTypeList } from '../../../../common/return_types';
|
||||
|
||||
export interface FrontendConfigBlocksAdapter {
|
||||
upsert(blocks: ConfigurationBlock[]): Promise<ReturnTypeBulkUpsert>;
|
||||
getForTags(tagIds: string[], page: number): Promise<ReturnTypeList<ConfigurationBlock>>;
|
||||
delete(id: string): Promise<boolean>;
|
||||
}
|
|
@ -1,42 +0,0 @@
|
|||
/*
|
||||
* Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
|
||||
* or more contributor license agreements. Licensed under the Elastic License
|
||||
* 2.0; you may not use this file except in compliance with the Elastic License
|
||||
* 2.0.
|
||||
*/
|
||||
|
||||
import { ConfigurationBlock } from '../../../../common/domain_types';
|
||||
import { ReturnTypeBulkUpsert, ReturnTypeList } from '../../../../common/return_types';
|
||||
import { FrontendConfigBlocksAdapter } from './adapter_types';
|
||||
|
||||
export class MemoryConfigBlocksAdapter implements FrontendConfigBlocksAdapter {
|
||||
constructor(private db: ConfigurationBlock[]) {}
|
||||
|
||||
public async upsert(blocks: ConfigurationBlock[]): Promise<ReturnTypeBulkUpsert> {
|
||||
this.db = this.db.concat(blocks);
|
||||
return {
|
||||
success: true,
|
||||
results: blocks.map(() => ({
|
||||
success: true,
|
||||
action: 'created',
|
||||
})),
|
||||
} as ReturnTypeBulkUpsert;
|
||||
}
|
||||
public async getForTags(tagIds: string[]): Promise<ReturnTypeList<ConfigurationBlock>> {
|
||||
return {
|
||||
success: true,
|
||||
list: this.db.filter((block) => tagIds.includes(block.tag)),
|
||||
page: 0,
|
||||
total: this.db.filter((block) => tagIds.includes(block.tag)).length,
|
||||
};
|
||||
}
|
||||
public async delete(id: string): Promise<boolean> {
|
||||
this.db = this.db.reduce((newDB: ConfigurationBlock[], block) => {
|
||||
if (block.id !== id) {
|
||||
newDB.push(block);
|
||||
}
|
||||
return newDB;
|
||||
}, []);
|
||||
return !!this.db.find((block) => block.id === id);
|
||||
}
|
||||
}
|
|
@ -1,36 +0,0 @@
|
|||
/*
|
||||
* Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
|
||||
* or more contributor license agreements. Licensed under the Elastic License
|
||||
* 2.0; you may not use this file except in compliance with the Elastic License
|
||||
* 2.0.
|
||||
*/
|
||||
|
||||
import { ConfigurationBlock } from '../../../../common/domain_types';
|
||||
import {
|
||||
ReturnTypeBulkDelete,
|
||||
ReturnTypeBulkUpsert,
|
||||
ReturnTypeList,
|
||||
} from '../../../../common/return_types';
|
||||
import { RestAPIAdapter } from '../rest_api/adapter_types';
|
||||
import { FrontendConfigBlocksAdapter } from './adapter_types';
|
||||
|
||||
export class RestConfigBlocksAdapter implements FrontendConfigBlocksAdapter {
|
||||
constructor(private readonly REST: RestAPIAdapter) {}
|
||||
|
||||
public async upsert(blocks: ConfigurationBlock[]) {
|
||||
const result = await this.REST.put<ReturnTypeBulkUpsert>(`/api/beats/configurations`, blocks);
|
||||
return result;
|
||||
}
|
||||
public async getForTags(
|
||||
tagIds: string[],
|
||||
page: number
|
||||
): Promise<ReturnTypeList<ConfigurationBlock>> {
|
||||
return await this.REST.get<ReturnTypeList<ConfigurationBlock>>(
|
||||
`/api/beats/configurations/${tagIds.join(',')}/${page}`
|
||||
);
|
||||
}
|
||||
public async delete(id: string): Promise<boolean> {
|
||||
return (await this.REST.delete<ReturnTypeBulkDelete>(`/api/beats/configurations/${id}`))
|
||||
.success;
|
||||
}
|
||||
}
|
|
@ -1,14 +0,0 @@
|
|||
/*
|
||||
* Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
|
||||
* or more contributor license agreements. Licensed under the Elastic License
|
||||
* 2.0; you may not use this file except in compliance with the Elastic License
|
||||
* 2.0.
|
||||
*/
|
||||
|
||||
import { QuerySuggestion } from '../../../../../../../src/plugins/data/public';
|
||||
|
||||
export interface ElasticsearchAdapter {
|
||||
convertKueryToEsQuery: (kuery: string) => Promise<string>;
|
||||
getSuggestions: (kuery: string, selectionStart: any) => Promise<QuerySuggestion[]>;
|
||||
isKueryValid(kuery: string): boolean;
|
||||
}
|
|
@ -1,27 +0,0 @@
|
|||
/*
|
||||
* Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
|
||||
* or more contributor license agreements. Licensed under the Elastic License
|
||||
* 2.0; you may not use this file except in compliance with the Elastic License
|
||||
* 2.0.
|
||||
*/
|
||||
|
||||
import { QuerySuggestion } from '../../../../../../../src/plugins/data/public';
|
||||
import { ElasticsearchAdapter } from './adapter_types';
|
||||
|
||||
export class MemoryElasticsearchAdapter implements ElasticsearchAdapter {
|
||||
constructor(
|
||||
private readonly mockIsKueryValid: (kuery: string) => boolean,
|
||||
private readonly mockKueryToEsQuery: (kuery: string) => string,
|
||||
private readonly suggestions: QuerySuggestion[]
|
||||
) {}
|
||||
|
||||
public isKueryValid(kuery: string): boolean {
|
||||
return this.mockIsKueryValid(kuery);
|
||||
}
|
||||
public async convertKueryToEsQuery(kuery: string): Promise<string> {
|
||||
return this.mockKueryToEsQuery(kuery);
|
||||
}
|
||||
public async getSuggestions(kuery: string, selectionStart: any): Promise<QuerySuggestion[]> {
|
||||
return this.suggestions;
|
||||
}
|
||||
}
|
|
@ -1,66 +0,0 @@
|
|||
/*
|
||||
* Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
|
||||
* or more contributor license agreements. Licensed under the Elastic License
|
||||
* 2.0; you may not use this file except in compliance with the Elastic License
|
||||
* 2.0.
|
||||
*/
|
||||
|
||||
import { isEmpty } from 'lodash';
|
||||
import { ElasticsearchAdapter } from './adapter_types';
|
||||
import { QuerySuggestion, esKuery } from '../../../../../../../src/plugins/data/public';
|
||||
import { services } from '../../../kbn_services';
|
||||
|
||||
export class RestElasticsearchAdapter implements ElasticsearchAdapter {
|
||||
private cachedIndexPattern: any = null;
|
||||
constructor(private readonly indexPatternName: string) {}
|
||||
|
||||
public isKueryValid(kuery: string): boolean {
|
||||
try {
|
||||
esKuery.fromKueryExpression(kuery);
|
||||
} catch (err) {
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
public async convertKueryToEsQuery(kuery: string): Promise<string> {
|
||||
if (!this.isKueryValid(kuery)) {
|
||||
return '';
|
||||
}
|
||||
const ast = esKuery.fromKueryExpression(kuery);
|
||||
const indexPattern = await this.getIndexPattern();
|
||||
return JSON.stringify(esKuery.toElasticsearchQuery(ast, indexPattern));
|
||||
}
|
||||
|
||||
public async getSuggestions(kuery: string, selectionStart: any): Promise<QuerySuggestion[]> {
|
||||
const indexPattern = await this.getIndexPattern();
|
||||
|
||||
return (
|
||||
(await services.dataStart.autocomplete.getQuerySuggestions({
|
||||
language: 'kuery',
|
||||
indexPatterns: [indexPattern],
|
||||
boolFilter: [],
|
||||
query: kuery || '',
|
||||
selectionStart,
|
||||
selectionEnd: selectionStart,
|
||||
})) || []
|
||||
);
|
||||
}
|
||||
|
||||
private async getIndexPattern() {
|
||||
if (this.cachedIndexPattern) {
|
||||
return this.cachedIndexPattern;
|
||||
}
|
||||
const res = await services.dataStart.indexPatterns.getFieldsForWildcard({
|
||||
pattern: this.indexPatternName,
|
||||
});
|
||||
if (isEmpty(res.fields)) {
|
||||
return;
|
||||
}
|
||||
this.cachedIndexPattern = {
|
||||
fields: res.fields,
|
||||
title: `${this.indexPatternName}`,
|
||||
};
|
||||
return this.cachedIndexPattern;
|
||||
}
|
||||
}
|
|
@ -1,54 +0,0 @@
|
|||
/*
|
||||
* Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
|
||||
* or more contributor license agreements. Licensed under the Elastic License
|
||||
* 2.0; you may not use this file except in compliance with the Elastic License
|
||||
* 2.0.
|
||||
*/
|
||||
|
||||
/* eslint-disable @typescript-eslint/no-empty-interface */
|
||||
|
||||
import * as t from 'io-ts';
|
||||
import { LICENSES } from '../../../../common/constants/security';
|
||||
import { RegisterManagementAppArgs } from '../../../../../../../src/plugins/management/public';
|
||||
|
||||
export interface FrameworkAdapter {
|
||||
// Instance vars
|
||||
info: FrameworkInfo;
|
||||
version: string;
|
||||
currentUser: FrameworkUser;
|
||||
// Methods
|
||||
waitUntilFrameworkReady(): Promise<void>;
|
||||
registerManagementUI(mount: RegisterManagementAppArgs['mount']): void;
|
||||
}
|
||||
|
||||
export const RuntimeFrameworkInfo = t.type({
|
||||
basePath: t.string,
|
||||
license: t.type({
|
||||
type: t.keyof(Object.fromEntries(LICENSES.map((s) => [s, null])) as Record<string, null>),
|
||||
expired: t.boolean,
|
||||
expiry_date_in_millis: t.number,
|
||||
}),
|
||||
security: t.type({
|
||||
enabled: t.boolean,
|
||||
available: t.boolean,
|
||||
}),
|
||||
settings: t.type({
|
||||
encryptionKey: t.string,
|
||||
enrollmentTokensTtlInSeconds: t.number,
|
||||
defaultUserRoles: t.array(t.string),
|
||||
}),
|
||||
});
|
||||
|
||||
export interface FrameworkInfo extends t.TypeOf<typeof RuntimeFrameworkInfo> {}
|
||||
|
||||
export const RuntimeFrameworkUser = t.interface(
|
||||
{
|
||||
username: t.string,
|
||||
roles: t.readonlyArray(t.string),
|
||||
full_name: t.union([t.null, t.string]),
|
||||
email: t.union([t.null, t.string]),
|
||||
enabled: t.boolean,
|
||||
},
|
||||
'FrameworkUser'
|
||||
);
|
||||
export interface FrameworkUser extends t.TypeOf<typeof RuntimeFrameworkUser> {}
|
|
@ -1,160 +0,0 @@
|
|||
/*
|
||||
* Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
|
||||
* or more contributor license agreements. Licensed under the Elastic License
|
||||
* 2.0; you may not use this file except in compliance with the Elastic License
|
||||
* 2.0.
|
||||
*/
|
||||
|
||||
/* eslint-disable max-classes-per-file */
|
||||
import { IScope } from 'angular';
|
||||
import { PathReporter } from 'io-ts/lib/PathReporter';
|
||||
import { isLeft } from 'fp-ts/lib/Either';
|
||||
import { first } from 'rxjs/operators';
|
||||
import { i18n } from '@kbn/i18n';
|
||||
import { MANAGEMENT_SECTION } from '../../../../common/constants';
|
||||
import { SecurityPluginSetup } from '../../../../../security/public';
|
||||
import { BufferedKibanaServiceCall, KibanaAdapterServiceRefs, KibanaUIConfig } from '../../types';
|
||||
import {
|
||||
FrameworkAdapter,
|
||||
FrameworkInfo,
|
||||
FrameworkUser,
|
||||
RuntimeFrameworkInfo,
|
||||
RuntimeFrameworkUser,
|
||||
} from './adapter_types';
|
||||
import {
|
||||
ManagementSetup,
|
||||
RegisterManagementAppArgs,
|
||||
} from '../../../../../../../src/plugins/management/public';
|
||||
import { LicensingPluginSetup } from '../../../../../licensing/public';
|
||||
import { BeatsManagementConfigType } from '../../../../common';
|
||||
|
||||
export class KibanaFrameworkAdapter implements FrameworkAdapter {
|
||||
public get info() {
|
||||
if (this.xpackInfo) {
|
||||
return this.xpackInfo;
|
||||
} else {
|
||||
throw new Error('framework adapter must have init called before anything else');
|
||||
}
|
||||
}
|
||||
|
||||
public get currentUser() {
|
||||
return this.shieldUser!;
|
||||
}
|
||||
private xpackInfo: FrameworkInfo | null = null;
|
||||
private adapterService: KibanaAdapterServiceProvider;
|
||||
private shieldUser: FrameworkUser | null = null;
|
||||
constructor(
|
||||
private readonly PLUGIN_ID: string,
|
||||
private readonly management: ManagementSetup,
|
||||
private readonly getBasePath: () => string,
|
||||
private readonly licensing: LicensingPluginSetup,
|
||||
private readonly securitySetup: SecurityPluginSetup | undefined,
|
||||
private readonly config: BeatsManagementConfigType,
|
||||
public readonly version: string
|
||||
) {
|
||||
this.adapterService = new KibanaAdapterServiceProvider();
|
||||
}
|
||||
|
||||
public setUISettings = (key: string, value: any) => {
|
||||
this.adapterService.callOrBuffer(({ config }) => {
|
||||
config.set(key, value);
|
||||
});
|
||||
};
|
||||
|
||||
public async waitUntilFrameworkReady(): Promise<void> {
|
||||
const license = await this.licensing.license$.pipe(first()).toPromise();
|
||||
let xpackInfoUnpacked: FrameworkInfo;
|
||||
|
||||
try {
|
||||
xpackInfoUnpacked = {
|
||||
basePath: this.getBasePath(),
|
||||
license: {
|
||||
type: license.type ?? 'oss',
|
||||
expired: !license.isActive,
|
||||
expiry_date_in_millis: license.expiryDateInMillis ?? -1,
|
||||
},
|
||||
security: {
|
||||
enabled: license.getFeature('security').isEnabled,
|
||||
available: license.getFeature('security').isAvailable,
|
||||
},
|
||||
settings: this.config,
|
||||
};
|
||||
} catch (e) {
|
||||
throw new Error(`Unexpected data structure from xpackInfoService, ${JSON.stringify(e)}`);
|
||||
}
|
||||
|
||||
const assertData = RuntimeFrameworkInfo.decode(xpackInfoUnpacked);
|
||||
if (isLeft(assertData)) {
|
||||
throw new Error(
|
||||
`Error parsing xpack info in ${this.PLUGIN_ID}, ${PathReporter.report(assertData)[0]}`
|
||||
);
|
||||
}
|
||||
this.xpackInfo = xpackInfoUnpacked;
|
||||
|
||||
try {
|
||||
this.shieldUser = (await this.securitySetup?.authc.getCurrentUser()) || null;
|
||||
const assertUser = RuntimeFrameworkUser.decode(this.shieldUser);
|
||||
|
||||
if (isLeft(assertUser)) {
|
||||
throw new Error(
|
||||
`Error parsing user info in ${this.PLUGIN_ID}, ${PathReporter.report(assertUser)[0]}`
|
||||
);
|
||||
}
|
||||
} catch (e) {
|
||||
this.shieldUser = null;
|
||||
}
|
||||
}
|
||||
|
||||
public registerManagementUI(mount: RegisterManagementAppArgs['mount']) {
|
||||
const section = this.management.sections.section.ingest;
|
||||
section.registerApp({
|
||||
id: MANAGEMENT_SECTION,
|
||||
title: i18n.translate('xpack.beatsManagement.centralManagementLinkLabel', {
|
||||
defaultMessage: 'Beats Central Management',
|
||||
}),
|
||||
order: 2,
|
||||
mount,
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
class KibanaAdapterServiceProvider {
|
||||
public serviceRefs: KibanaAdapterServiceRefs | null = null;
|
||||
public bufferedCalls: Array<BufferedKibanaServiceCall<KibanaAdapterServiceRefs>> = [];
|
||||
|
||||
public $get($rootScope: IScope, config: KibanaUIConfig) {
|
||||
this.serviceRefs = {
|
||||
config,
|
||||
rootScope: $rootScope,
|
||||
};
|
||||
|
||||
this.applyBufferedCalls(this.bufferedCalls);
|
||||
|
||||
return this;
|
||||
}
|
||||
|
||||
public callOrBuffer(serviceCall: (serviceRefs: KibanaAdapterServiceRefs) => void) {
|
||||
if (this.serviceRefs !== null) {
|
||||
this.applyBufferedCalls([serviceCall]);
|
||||
} else {
|
||||
this.bufferedCalls.push(serviceCall);
|
||||
}
|
||||
}
|
||||
|
||||
public applyBufferedCalls(
|
||||
bufferedCalls: Array<BufferedKibanaServiceCall<KibanaAdapterServiceRefs>>
|
||||
) {
|
||||
if (!this.serviceRefs) {
|
||||
return;
|
||||
}
|
||||
|
||||
this.serviceRefs.rootScope.$apply(() => {
|
||||
bufferedCalls.forEach((serviceCall) => {
|
||||
if (!this.serviceRefs) {
|
||||
return;
|
||||
}
|
||||
return serviceCall(this.serviceRefs);
|
||||
});
|
||||
});
|
||||
}
|
||||
}
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Add table
Add a link
Reference in a new issue