Error
| The reason why the peer's certificate has not been verified. This property becomes available only when authorized
is false
. |
+| [authorized](./kibana-plugin-server.ikibanasocket.authorized.md) | boolean
| Indicates whether or not the peer certificate was signed by one of the specified CAs. When TLS isn't used the value is undefined
. |
+
## Methods
| Method | Description |
diff --git a/docs/development/plugin/development-plugin-feature-registration.asciidoc b/docs/development/plugin/development-plugin-feature-registration.asciidoc
index 7505b018c6fbd8..5a852515148614 100644
--- a/docs/development/plugin/development-plugin-feature-registration.asciidoc
+++ b/docs/development/plugin/development-plugin-feature-registration.asciidoc
@@ -1,15 +1,15 @@
[[development-plugin-feature-registration]]
=== Plugin feature registration
-If your plugin will be used with {kib}’s default distribution, then you have the ability to register the features that your plugin provides. Features are typically apps in {kib}; once registered, you can toggle them via Spaces, and secure them via Roles when security is enabled.
+If your plugin will be used with {kib}'s default distribution, then you have the ability to register the features that your plugin provides. Features are typically apps in {kib}; once registered, you can toggle them via Spaces, and secure them via Roles when security is enabled.
==== UI Capabilities
-Registering features also gives your plugin access to “UI Capabilities”. These capabilities are boolean flags that you can use to conditionally render your interface, based on the current user’s permissions. For example, you can hide or disable a Save button if the current user is not authorized.
+Registering features also gives your plugin access to “UI Capabilities”. These capabilities are boolean flags that you can use to conditionally render your interface, based on the current user's permissions. For example, you can hide or disable a Save button if the current user is not authorized.
==== Registering a feature
-Feature registration is controlled via the built-in `xpack_main` plugin. To register a feature, call `xpack_main`'s `registerFeature` function from your plugin’s `init` function, and provide the appropriate details:
+Feature registration is controlled via the built-in `xpack_main` plugin. To register a feature, call `xpack_main`'s `registerFeature` function from your plugin's `init` function, and provide the appropriate details:
["source","javascript"]
-----------
@@ -42,7 +42,7 @@ Registering a feature consists of the following fields. For more information, co
|`app` (required)
|`string[]`
|`["sample_app", "kibana"]`
-|An array of applications this feature enables. Typically, all of your plugin’s apps (from `uiExports`) will be included here.
+|An array of applications this feature enables. Typically, all of your plugin's apps (from `uiExports`) will be included here.
|`privileges` (required)
|{repo}blob/{branch}/x-pack/legacy/plugins/xpack_main/server/lib/feature_registry/feature_registry.ts[`FeatureWithAllOrReadPrivileges`].
@@ -72,7 +72,7 @@ To access capabilities, import them from `ui/capabilities`:
["source","javascript"]
-----------
-import { uiCapabilities } from ‘ui/capabilities’;
+import { uiCapabilities } from 'ui/capabilities';
const canUserSave = uiCapabilities.foo.save;
if (canUserSave) {
@@ -124,7 +124,7 @@ The `all` privilege defines a single “save” UI Capability. To access this in
["source","javascript"]
-----------
-import { uiCapabilities } from ‘ui/capabilities’;
+import { uiCapabilities } from 'ui/capabilities';
const canUserSave = uiCapabilities.canvas.save;
if (canUserSave) {
diff --git a/docs/infrastructure/getting-started.asciidoc b/docs/infrastructure/getting-started.asciidoc
new file mode 100644
index 00000000000000..510d53ccdccc07
--- /dev/null
+++ b/docs/infrastructure/getting-started.asciidoc
@@ -0,0 +1,11 @@
+[role="xpack"]
+[[xpack-metrics-getting-started]]
+== Getting started with infrastructure monitoring
+
+To get started with the Infrastructure app in Kibana, you need to start collecting metrics data for your infrastructure.
+
+Kibana provides step-by-step instructions to help you add metrics data.
+The {infra-guide}[Infrastructure Monitoring Guide] is a good source for more detailed information and instructions.
+
+[role="screenshot"]
+image::infrastructure/images/metrics-add-data.png[Screenshot showing Add metric data to Kibana UI]
diff --git a/docs/infrastructure/images/infra-sysmon.jpg b/docs/infrastructure/images/infra-sysmon.jpg
deleted file mode 100644
index 36afcb82061cc9..00000000000000
Binary files a/docs/infrastructure/images/infra-sysmon.jpg and /dev/null differ
diff --git a/docs/infrastructure/images/infra-sysmon.png b/docs/infrastructure/images/infra-sysmon.png
new file mode 100644
index 00000000000000..5b82d8c9b4e194
Binary files /dev/null and b/docs/infrastructure/images/infra-sysmon.png differ
diff --git a/docs/infrastructure/images/infra-view-metrics.png b/docs/infrastructure/images/infra-view-metrics.png
new file mode 100644
index 00000000000000..d4ee287c234be6
Binary files /dev/null and b/docs/infrastructure/images/infra-view-metrics.png differ
diff --git a/docs/infrastructure/images/metrics-add-data.png b/docs/infrastructure/images/metrics-add-data.png
new file mode 100644
index 00000000000000..d9640e0d9f5da1
Binary files /dev/null and b/docs/infrastructure/images/metrics-add-data.png differ
diff --git a/docs/infrastructure/images/time-filter-calendar.png b/docs/infrastructure/images/time-filter-calendar.png
new file mode 100644
index 00000000000000..d0019c99fe8933
Binary files /dev/null and b/docs/infrastructure/images/time-filter-calendar.png differ
diff --git a/docs/infrastructure/images/time-filter-clock.png b/docs/infrastructure/images/time-filter-clock.png
new file mode 100644
index 00000000000000..fe8542aad41de0
Binary files /dev/null and b/docs/infrastructure/images/time-filter-clock.png differ
diff --git a/docs/infrastructure/index.asciidoc b/docs/infrastructure/index.asciidoc
index c48d78d6cf3861..33389345fff770 100644
--- a/docs/infrastructure/index.asciidoc
+++ b/docs/infrastructure/index.asciidoc
@@ -4,83 +4,31 @@
[partintro]
--
-Use the interactive Infrastructure UI to monitor your infrastructure and
-identify problems in real time. You can explore metrics and logs for common
-servers, containers, and services.
+The Infrastructure app enables you to monitor your infrastructure and identify problems in real time.
+You start with a visual summary of your infrastructure where you can view basic metrics for common servers, containers, and services.
+Then you can drill down to view more detailed metrics or other information for that component.
-[role="screenshot"]
-image::infrastructure/images/infra-sysmon.jpg[Infrastructure Overview in Kibana]
-
-
-[float]
-== Add data
-
-Kibana provides step-by-step instructions to help you add log data. The
-{infra-guide}[Infrastructure Monitoring Guide] is a good source for more
-detailed information and instructions.
+You can:
-[float]
-== Configure data sources
+* View an inventory of your infrastructure by hosts, Kubernetes pod or Docker containers.
+You can group and filter the data in various ways to help you identify the items that interest you.
-The `metricbeat-*` index pattern is used to query the data by default.
-If your metrics are located in a different set of indices, or use a
-different timestamp field, you can adjust the source configuration via the user
-interface or the {kib} configuration file.
+* View current and historic values for metrics such as CPU usage, memory usage, and network traffic for each component.
+The available metrics depend on the kind of component being inspected.
-NOTE: Logs and Infrastructure share a common data source definition in
-each space. Changes in one of them can influence the data displayed in the
-other.
-
-[float]
-=== Configure source
-
-Configure source can be accessed via the corresponding
-image:logs/images/logs-configure-source-gear-icon.png[Configure source icon]
-button in the toolbar:
-
-[role="screenshot"]
-image::infrastructure/images/infrastructure-configure-source.png[Configure Infrastructure UI source button in Kibana]
+* Use *Metrics Explorer* to group and visualize multiple customizable metrics for one or more components in a graphical format.
+You can optionally save these views and add them to {kibana-ref}/dashboard.html[dashboards].
-This opens the source configuration fly-out dialog, in which the following
-configuration items can be inspected and adjusted:
+* Seamlessly switch to view the corresponding logs, application traces or uptime information for a component.
-* *Name*: The name of the source configuration.
-* *Indices*: The patterns of the elasticsearch indices to read metrics and logs
- from.
-* *Fields*: The names of particular fields in the indices that need to be known
- to the Infrastructure and Logs UIs in order to query and interpret the data
- correctly.
+To get started, you need to <(props: P, options?: ObjectTypeOptions
): ObjectType
{
diff --git a/packages/kbn-config-schema/src/types/__snapshots__/nullable_type.test.ts.snap b/packages/kbn-config-schema/src/types/__snapshots__/nullable_type.test.ts.snap
index ae1a34c00d3a80..96ab664921fdfb 100644
--- a/packages/kbn-config-schema/src/types/__snapshots__/nullable_type.test.ts.snap
+++ b/packages/kbn-config-schema/src/types/__snapshots__/nullable_type.test.ts.snap
@@ -1,7 +1,25 @@
// Jest Snapshot v1, https://goo.gl/fbAQLP
-exports[`includes namespace in failure 1`] = `"[foo-namespace]: value is [foo] but it must have a maximum length of [1]."`;
+exports[`includes namespace in failure 1`] = `
+"[foo-namespace]: types that failed validation:
+- [foo-namespace.0]: value is [foo] but it must have a maximum length of [1].
+- [foo-namespace.1]: expected value to equal [null] but got [foo]"
+`;
-exports[`validates basic type 1`] = `"expected value of type [string] but got [number]"`;
+exports[`validates basic type 1`] = `
+"types that failed validation:
+- [0]: expected value of type [string] but got [number]
+- [1]: expected value to equal [null] but got [666]"
+`;
-exports[`validates contained type 1`] = `"value is [foo] but it must have a maximum length of [1]."`;
+exports[`validates contained type 1`] = `
+"types that failed validation:
+- [0]: value is [foo] but it must have a maximum length of [1].
+- [1]: expected value to equal [null] but got [foo]"
+`;
+
+exports[`validates type errors in object 1`] = `
+"[foo]: types that failed validation:
+- [foo.0]: value is [ab] but it must have a maximum length of [1].
+- [foo.1]: expected value to equal [null] but got [ab]"
+`;
diff --git a/packages/kbn-config-schema/src/types/index.ts b/packages/kbn-config-schema/src/types/index.ts
index 4c25cade2ec61d..cfa8cc4b7553d5 100644
--- a/packages/kbn-config-schema/src/types/index.ts
+++ b/packages/kbn-config-schema/src/types/index.ts
@@ -26,7 +26,6 @@ export { ConditionalType, ConditionalTypeValue } from './conditional_type';
export { DurationOptions, DurationType } from './duration_type';
export { LiteralType } from './literal_type';
export { MaybeType } from './maybe_type';
-export { NullableType } from './nullable_type';
export { MapOfOptions, MapOfType } from './map_type';
export { NumberOptions, NumberType } from './number_type';
export { ObjectType, ObjectTypeOptions, Props, TypeOf } from './object_type';
diff --git a/packages/kbn-config-schema/src/types/nullable_type.test.ts b/packages/kbn-config-schema/src/types/nullable_type.test.ts
index e9d6f3ca2fe35e..ed04202950a2c9 100644
--- a/packages/kbn-config-schema/src/types/nullable_type.test.ts
+++ b/packages/kbn-config-schema/src/types/nullable_type.test.ts
@@ -19,19 +19,66 @@
import { schema } from '..';
-test('returns value if specified', () => {
+test('returns string value when passed string', () => {
const type = schema.nullable(schema.string());
- expect(type.validate('test')).toEqual('test');
+ expect(type.validate('test')).toBe('test');
});
-test('returns null if null', () => {
+test('returns number value when passed number', () => {
+ const type = schema.nullable(schema.number());
+ expect(type.validate(42)).toBe(42);
+});
+
+test('returns boolean value when passed boolean', () => {
+ const type = schema.nullable(schema.boolean());
+ expect(type.validate(true)).toBe(true);
+});
+
+test('returns object value when passed object', () => {
+ const type = schema.nullable(
+ schema.object({
+ foo: schema.number(),
+ bar: schema.boolean(),
+ baz: schema.string(),
+ })
+ );
+ const object = {
+ foo: 666,
+ bar: true,
+ baz: 'foo bar baz',
+ };
+
+ expect(type.validate(object)).toEqual(object);
+});
+
+test('returns null if null for string', () => {
const type = schema.nullable(schema.string());
- expect(type.validate(null)).toEqual(null);
+ expect(type.validate(null)).toBe(null);
+});
+
+test('returns null if null for number', () => {
+ const type = schema.nullable(schema.number());
+ expect(type.validate(null)).toBe(null);
});
-test('returns null if undefined', () => {
+test('returns null if null for boolean', () => {
+ const type = schema.nullable(schema.boolean());
+ expect(type.validate(null)).toBe(null);
+});
+
+test('returns null if undefined for string', () => {
const type = schema.nullable(schema.string());
- expect(type.validate(undefined)).toEqual(null);
+ expect(type.validate(undefined)).toBe(null);
+});
+
+test('returns null if undefined for number', () => {
+ const type = schema.nullable(schema.number());
+ expect(type.validate(undefined)).toBe(null);
+});
+
+test('returns null if undefined for boolean', () => {
+ const type = schema.nullable(schema.boolean());
+ expect(type.validate(undefined)).toBe(null);
});
test('returns null even if contained type has a default value', () => {
@@ -41,7 +88,7 @@ test('returns null even if contained type has a default value', () => {
})
);
- expect(type.validate(undefined)).toEqual(null);
+ expect(type.validate(undefined)).toBe(null);
});
test('validates contained type', () => {
@@ -56,6 +103,27 @@ test('validates basic type', () => {
expect(() => type.validate(666)).toThrowErrorMatchingSnapshot();
});
+test('validates type in object', () => {
+ const type = schema.object({
+ foo: schema.nullable(schema.string({ maxLength: 1 })),
+ bar: schema.nullable(schema.boolean()),
+ });
+
+ expect(type.validate({ foo: 'a' })).toEqual({ foo: 'a', bar: null });
+ expect(type.validate({ foo: null })).toEqual({ foo: null, bar: null });
+ expect(type.validate({})).toEqual({ foo: null, bar: null });
+ expect(type.validate({ bar: null })).toEqual({ foo: null, bar: null });
+});
+
+test('validates type errors in object', () => {
+ const type = schema.object({
+ foo: schema.nullable(schema.string({ maxLength: 1 })),
+ bar: schema.nullable(schema.boolean()),
+ });
+
+ expect(() => type.validate({ foo: 'ab' })).toThrowErrorMatchingSnapshot();
+});
+
test('includes namespace in failure', () => {
const type = schema.nullable(schema.string({ maxLength: 1 }));
diff --git a/packages/kbn-config-schema/src/types/nullable_type.ts b/packages/kbn-config-schema/src/types/nullable_type.ts
deleted file mode 100644
index c89f3e44c37c4f..00000000000000
--- a/packages/kbn-config-schema/src/types/nullable_type.ts
+++ /dev/null
@@ -1,32 +0,0 @@
-/*
- * Licensed to Elasticsearch B.V. under one or more contributor
- * license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright
- * ownership. Elasticsearch B.V. licenses this file to you under
- * the Apache License, Version 2.0 (the "License"); you may
- * not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-import { Type } from './type';
-
-export class NullableType
+
+
+
+
-
diff --git a/src/legacy/ui/public/vis/components/tooltip/_pointseries_tooltip.html b/src/legacy/ui/public/vis/components/tooltip/_pointseries_tooltip.html
index d6054594ec776f..9e82739a57f0f2 100644
--- a/src/legacy/ui/public/vis/components/tooltip/_pointseries_tooltip.html
+++ b/src/legacy/ui/public/vis/components/tooltip/_pointseries_tooltip.html
@@ -1,10 +1,11 @@
{{row.field}}
- {{row.bucket}}
+
+
+
+
{{row.metric}}
-
diff --git a/src/legacy/ui/public/vis/components/tooltip/_tooltip.scss b/src/legacy/ui/public/vis/components/tooltip/_tooltip.scss
index 280c843247bd58..451ecc80844dde 100644
--- a/src/legacy/ui/public/vis/components/tooltip/_tooltip.scss
+++ b/src/legacy/ui/public/vis/components/tooltip/_tooltip.scss
@@ -22,7 +22,10 @@
table {
td,
th {
+ text-align: left;
padding: $euiSizeXS;
+ overflow-wrap: break-word;
+ word-wrap: break-word;
}
}
}
@@ -41,6 +44,11 @@
margin-top: $euiSizeS;
}
}
+.visTooltip__labelContainer,
+.visTooltip__valueContainer {
+ overflow-wrap: break-word;
+ word-wrap: break-word;
+}
.visTooltip__headerIcon {
flex: 0 0 auto;
diff --git a/src/legacy/ui/public/vis/components/tooltip/tooltip.js b/src/legacy/ui/public/vis/components/tooltip/tooltip.js
index 6008d5cf7961ab..7c395a2f4dc0e4 100644
--- a/src/legacy/ui/public/vis/components/tooltip/tooltip.js
+++ b/src/legacy/ui/public/vis/components/tooltip/tooltip.js
@@ -22,9 +22,14 @@ import _ from 'lodash';
import { Binder } from '../../../binder';
import { positionTooltip } from './position_tooltip';
import $ from 'jquery';
+import theme from '@elastic/eui/dist/eui_theme_light.json';
let allContents = [];
+const tooltipColumnPadding = parseInt(theme.euiSizeXS || 0, 10) * 2;
+const tooltipTableMargin = parseInt(theme.euiSizeS || 0, 10) * 2;
+const tooltipMaxWidth = parseInt(theme.euiSizeXL || 0, 10) * 10;
+
/**
* Add tooltip and listeners to visualization elements
*
@@ -97,6 +102,46 @@ Tooltip.prototype.show = function () {
left: placement.left,
top: placement.top
});
+ // The number of columns on the tooltip is currently the only
+ // thing that differenciate one tooltip; from another
+ const tooltipColumns = $tooltip.find('tbody > tr:nth-of-type(1) > td').length;
+ if (tooltipColumns === 2) {
+ // on pointseries tooltip
+ const tooltipWidth = $tooltip.outerWidth();
+ // get the last column to the right
+ const valueColumn = $tooltip.find('tr:nth-of-type(1) > td:nth-child(2)');
+ if (valueColumn.length !== 1) {
+ return;
+ }
+ const valueColumnSize = valueColumn.outerWidth();
+ const isGratherThanHalf = valueColumnSize > tooltipWidth / 2;
+ const containerMaxWidth = isGratherThanHalf
+ ? tooltipWidth / 2 - tooltipTableMargin - tooltipColumnPadding * 2
+ : tooltipWidth - valueColumnSize - tooltipTableMargin - tooltipColumnPadding;
+
+ $tooltip.find('.visTooltip__labelContainer').css({
+ 'max-width': containerMaxWidth,
+ });
+ if (isGratherThanHalf && tooltipWidth === tooltipMaxWidth) {
+ $tooltip.find('.visTooltip__valueContainer').css({
+ 'max-width': containerMaxWidth,
+ });
+ }
+ } else if(tooltipColumns === 3) {
+ // on hierarchical tooltip
+ const tooltipWidth = $tooltip.outerWidth();
+ // get the last column to the right (3rd column)
+ const valueColumn = $tooltip.find('tr:nth-of-type(1) > td:nth-child(3)');
+ if (valueColumn.length !== 1) {
+ return;
+ }
+ const valueColumnSize = valueColumn.outerWidth();
+ const containerMaxWidth = (tooltipWidth - valueColumnSize - tooltipTableMargin) / 2 - tooltipColumnPadding;
+
+ $tooltip.find('.visTooltip__labelContainer').css({
+ 'max-width': containerMaxWidth
+ });
+ }
};
/**
diff --git a/src/legacy/ui/public/vis/editors/default/default.js b/src/legacy/ui/public/vis/editors/default/default.js
index da8ab50b7805ce..af0ebc65680c39 100644
--- a/src/legacy/ui/public/vis/editors/default/default.js
+++ b/src/legacy/ui/public/vis/editors/default/default.js
@@ -126,7 +126,9 @@ const defaultEditor = function ($rootScope, $compile) {
return $scope.vis.getSerializableState($scope.state);
}, function (newState) {
$scope.vis.dirty = !angular.equals(newState, $scope.oldState);
- $scope.metricAggs = $scope.state.aggs.getResponseAggs().filter(agg =>
+ const responseAggs = $scope.state.aggs.getResponseAggs();
+ $scope.hasHistogramAgg = responseAggs.some(agg => agg.type.name === 'histogram');
+ $scope.metricAggs = responseAggs.filter(agg =>
_.get(agg, 'schema.group') === AggGroupNames.Metrics);
const lastParentPipelineAgg = _.findLast($scope.metricAggs, ({ type }) => type.subtype === parentPipelineAggHelper.subtype);
$scope.lastParentPipelineAggTitle = lastParentPipelineAgg && lastParentPipelineAgg.type.title;
diff --git a/src/legacy/ui/public/vis/editors/default/sidebar.html b/src/legacy/ui/public/vis/editors/default/sidebar.html
index 14e9bd46c376d8..07c2e2b1730ee3 100644
--- a/src/legacy/ui/public/vis/editors/default/sidebar.html
+++ b/src/legacy/ui/public/vis/editors/default/sidebar.html
@@ -175,6 +175,7 @@
{{detail.label}}
+
+
- {{detail.value}}
- ({{detail.percent}})
+
**NOTE**: This currently authenticates as the Kibana internal user, but will change in a future PR.|
|services.savedObjectsClient|This is an instance of the saved objects client. This provides the ability to do CRUD on any saved objects within the same space the alert lives in.
**NOTE**: This currently only works when security is disabled. A future PR will add support for enabling security using Elasticsearch API tokens.|
|services.log(tags, [data], [timestamp])|Use this to create server logs. (This is the same function as server.log)|
@@ -119,13 +119,13 @@ Payload:
|config|The configuration the action type expects. See related action type to see what attributes are expected. This will also validate against the action type if config validation is defined.|object|
|secrets|The secrets the action type expects. See related action type to see what attributes are expected. This will also validate against the action type if secrets validation is defined.|object|
-#### `POST /api/action/{id}/_fire`: Fire action
+#### `POST /api/action/{id}/_execute`: Execute action
Params:
|Property|Description|Type|
|---|---|---|
-|id|The id of the action you're trying to fire.|string|
+|id|The id of the action you're trying to execute.|string|
Payload:
@@ -135,24 +135,24 @@ Payload:
## Firing actions
-The plugin exposes a fire function that you can use to fire actions.
+The plugin exposes an execute function that you can use to run actions.
-**server.plugins.actions.fire(options)**
+**server.plugins.actions.execute(options)**
The following table describes the properties of the `options` object.
|Property|Description|Type|
|---|---|---|
-|id|The id of the action you want to fire.|string|
+|id|The id of the action you want to execute.|string|
|params|The `params` value to give the action type executor.|object|
|spaceId|The space id the action is within.|string|
### Example
-This example makes action `3c5b2bd4-5424-4e4b-8cf5-c0a58c762cc5` fire an email. The action plugin will load the saved object and find what action type to call with `params`.
+This example makes action `3c5b2bd4-5424-4e4b-8cf5-c0a58c762cc5` send an email. The action plugin will load the saved object and find what action type to call with `params`.
```
-server.plugins.actions.fire({
+server.plugins.actions.execute({
id: '3c5b2bd4-5424-4e4b-8cf5-c0a58c762cc5',
spaceId: 'default', // The spaceId of the action
params: {
diff --git a/x-pack/legacy/plugins/actions/server/create_fire_function.test.ts b/x-pack/legacy/plugins/actions/server/create_execute_function.test.ts
similarity index 92%
rename from x-pack/legacy/plugins/actions/server/create_fire_function.test.ts
rename to x-pack/legacy/plugins/actions/server/create_execute_function.test.ts
index 1f286d371e6333..176eb7d1c855ab 100644
--- a/x-pack/legacy/plugins/actions/server/create_fire_function.test.ts
+++ b/x-pack/legacy/plugins/actions/server/create_execute_function.test.ts
@@ -5,7 +5,7 @@
*/
import { taskManagerMock } from '../../task_manager/task_manager.mock';
-import { createFireFunction } from './create_fire_function';
+import { createExecuteFunction } from './create_execute_function';
import { SavedObjectsClientMock } from '../../../../../src/core/server/mocks';
const mockTaskManager = taskManagerMock.create();
@@ -14,9 +14,9 @@ const spaceIdToNamespace = jest.fn();
beforeEach(() => jest.resetAllMocks());
-describe('fire()', () => {
+describe('execute()', () => {
test('schedules the action with all given parameters', async () => {
- const fireFn = createFireFunction({
+ const executeFn = createExecuteFunction({
taskManager: mockTaskManager,
internalSavedObjectsRepository: savedObjectsClient,
spaceIdToNamespace,
@@ -30,7 +30,7 @@ describe('fire()', () => {
references: [],
});
spaceIdToNamespace.mockReturnValueOnce('namespace1');
- await fireFn({
+ await executeFn({
id: '123',
params: { baz: false },
spaceId: 'default',
diff --git a/x-pack/legacy/plugins/actions/server/create_fire_function.ts b/x-pack/legacy/plugins/actions/server/create_execute_function.ts
similarity index 82%
rename from x-pack/legacy/plugins/actions/server/create_fire_function.ts
rename to x-pack/legacy/plugins/actions/server/create_execute_function.ts
index 0bf11cbf5dd408..5f4f568c7e3fb4 100644
--- a/x-pack/legacy/plugins/actions/server/create_fire_function.ts
+++ b/x-pack/legacy/plugins/actions/server/create_execute_function.ts
@@ -8,24 +8,24 @@ import { SavedObjectsClientContract } from 'src/core/server';
import { TaskManager } from '../../task_manager';
import { SpacesPlugin } from '../../spaces';
-interface CreateFireFunctionOptions {
+interface CreateExecuteFunctionOptions {
taskManager: TaskManager;
internalSavedObjectsRepository: SavedObjectsClientContract;
spaceIdToNamespace: SpacesPlugin['spaceIdToNamespace'];
}
-export interface FireOptions {
+export interface ExecuteOptions {
id: string;
params: RecordErrors
- Errors
+ Transactions
- Transactions
+
+ {i18n.translate('xpack.apm.applyFilter', {
+ defaultMessage: 'Apply {title} filter',
+ values: { title }
+ })}
+
+
+ {i18n.translate('xpack.apm.localFilters.titles.transactionType', {
+ defaultMessage: 'Transaction type'
+ })}
+
+
+ {i18n.translate('xpack.apm.localFiltersTitle', {
+ defaultMessage: 'Filters'
+ })}
+
+