diff --git a/docs/settings/ssl-settings.asciidoc b/docs/settings/ssl-settings.asciidoc
deleted file mode 100644
index 3a0a474d9d597..0000000000000
--- a/docs/settings/ssl-settings.asciidoc
+++ /dev/null
@@ -1,99 +0,0 @@
-[float]
-=== {component} TLS/SSL settings
-You can configure the following TLS/SSL settings. If the settings are not
-configured, the default values are used. See
-{ref}/security-settings.html[Default TLS/SSL Settings].
-
-ifdef::server[]
-+{ssl-prefix}.ssl.enabled+::
-Used to enable or disable TLS/SSL. The default is `false`.
-endif::server[]
-
-+{ssl-prefix}.ssl.supported_protocols+::
-Supported protocols with versions. Valid protocols: `SSLv2Hello`,
-`SSLv3`, `TLSv1`, `TLSv1.1`, `TLSv1.2`. Defaults to `TLSv1.2`, `TLSv1.1`,
-`TLSv1`. Defaults to the value of `xpack.ssl.supported_protocols`.
-
-ifdef::server[]
-+{ssl-prefix}.ssl.client_authentication+::
-Controls the server's behavior in regard to requesting a certificate
-from client connections. Valid values are `required`, `optional`, and `none`.
-`required` forces a client to present a certificate, while `optional`
-requests a client certificate but the client is not required to present one.
-ifndef::client-auth-default[]
-Defaults to the value of `xpack.ssl.client_authentication`.
-endif::client-auth-default[]
-ifdef::client-auth-default[]
-Defaults to +{client-auth-default}+.
-endif::client-auth-default[]
-endif::server[]
-
-ifdef::verifies[]
-+{ssl-prefix}.ssl.verification_mode+::
-Controls the verification of certificates. Valid values are `none`,
-`certificate`, and `full`. Defaults to the value of `xpack.ssl.verification_mode`.
-endif::verifies[]
-
-+{ssl-prefix}.ssl.cipher_suites+::
-Supported cipher suites can be found in Oracle's http://docs.oracle.com/javase/8/docs/technotes/guides/security/SunProviders.html[
-Java Cryptography Architecture documentation]. Defaults to the value of
-`xpack.ssl.cipher_suites`.
-
-[float]
-==== {component} TLS/SSL key and trusted certificate settings
-
-The following settings are used to specify a private key, certificate, and the
-trusted certificates that should be used when communicating over an SSL/TLS connection.
-If none of the settings are specified, the default values are used.
-See {ref}/security-settings.html[Default TLS/SSL settings].
-
-ifdef::server[]
-A private key and certificate must be configured.
-endif::server[]
-ifndef::server[]
-A private key and certificate are optional and would be used if the server requires client authentication for PKI
-authentication.
-endif::server[]
-If none of the settings bare specified, the defaults values are used.
-See {ref}/security-settings.html[Default TLS/SSL settings].
-
-[float]
-===== PEM encoded files
-
-When using PEM encoded files, use the following settings:
-
-+{ssl-prefix}.ssl.key+::
-Path to a PEM encoded file containing the private key.
-
-+{ssl-prefix}.ssl.key_passphrase+::
-The passphrase that will be used to decrypt the private key. This value is
-optional as the key may not be encrypted.
-
-+{ssl-prefix}.ssl.certificate+::
-Path to a PEM encoded file containing the certificate (or certificate chain)
-that will be presented when requested.
-
-+{ssl-prefix}.ssl.certificate_authorities+::
-List of paths to the PEM encoded certificate files that should be trusted.
-
-[float]
-===== Java keystore files
-
-When using Java keystore files (JKS), which contain the private key, certificate
-and certificates that should be trusted, use the following settings:
-
-+{ssl-prefix}.ssl.keystore.path+::
-Path to the keystore that holds the private key and certificate.
-
-+{ssl-prefix}.ssl.keystore.password+::
-Password to the keystore.
-
-+{ssl-prefix}.ssl.keystore.key_password+::
-Password for the private key in the keystore. Defaults to the
-same value as +{ssl-prefix}.ssl.keystore.password+.
-
-+{ssl-prefix}.ssl.truststore.path+::
-Path to the truststore file.
-
-+{ssl-prefix}.ssl.truststore.password+::
-Password to the truststore.
diff --git a/src/core/public/chrome/ui/header/header_breadcrumbs.tsx b/src/core/public/chrome/ui/header/header_breadcrumbs.tsx
index d52faa87cfecd..ee3311a94a202 100644
--- a/src/core/public/chrome/ui/header/header_breadcrumbs.tsx
+++ b/src/core/public/chrome/ui/header/header_breadcrumbs.tsx
@@ -17,7 +17,7 @@
* under the License.
*/
-import { EuiHeaderBreadcrumbs } from '@elastic/eui';
+import { EuiFlexGroup, EuiHeaderBreadcrumbs } from '@elastic/eui';
import classNames from 'classnames';
import React from 'react';
import useObservable from 'react-use/lib/useObservable';
@@ -51,15 +51,14 @@ export function HeaderBreadcrumbs({ appTitle$, breadcrumbs$, breadcrumbsAppendEx
),
}));
- if (breadcrumbsAppendExtension) {
+ if (breadcrumbsAppendExtension && crumbs[crumbs.length - 1]) {
const lastCrumb = crumbs[crumbs.length - 1];
lastCrumb.text = (
- <>
- {lastCrumb.text}
-
- >
+
+ {lastCrumb.text}
+
+
);
}
-
return ;
}
diff --git a/test/functional/apps/discover/_doc_navigation.js b/test/functional/apps/discover/_doc_navigation.js
index 31aef96918ffa..59c4371b95d80 100644
--- a/test/functional/apps/discover/_doc_navigation.js
+++ b/test/functional/apps/discover/_doc_navigation.js
@@ -20,7 +20,6 @@
import expect from '@kbn/expect';
export default function ({ getService, getPageObjects }) {
- const log = getService('log');
const docTable = getService('docTable');
const filterBar = getService('filterBar');
const testSubjects = getService('testSubjects');
@@ -28,15 +27,12 @@ export default function ({ getService, getPageObjects }) {
const esArchiver = getService('esArchiver');
const retry = getService('retry');
- // FLAKY: https://github.com/elastic/kibana/issues/78373
- describe.skip('doc link in discover', function contextSize() {
+ describe('doc link in discover', function contextSize() {
beforeEach(async function () {
- log.debug('load kibana index with default index pattern');
- await esArchiver.loadIfNeeded('discover');
-
await esArchiver.loadIfNeeded('logstash_functional');
+ await esArchiver.loadIfNeeded('discover');
+ await PageObjects.timePicker.setDefaultAbsoluteRangeViaUiSettings();
await PageObjects.common.navigateToApp('discover');
- await PageObjects.timePicker.setDefaultAbsoluteRange();
await PageObjects.discover.waitForDocTableLoadingComplete();
});
diff --git a/test/functional/apps/discover/_field_data.js b/test/functional/apps/discover/_field_data.js
index 118234d54626c..d45b8f4841cb6 100644
--- a/test/functional/apps/discover/_field_data.js
+++ b/test/functional/apps/discover/_field_data.js
@@ -27,8 +27,7 @@ export default function ({ getService, getPageObjects }) {
const queryBar = getService('queryBar');
const PageObjects = getPageObjects(['common', 'header', 'discover', 'visualize', 'timePicker']);
- // FLAKY: https://github.com/elastic/kibana/issues/78689
- describe.skip('discover tab', function describeIndexTests() {
+ describe('discover tab', function describeIndexTests() {
this.tags('includeFirefox');
before(async function () {
await esArchiver.loadIfNeeded('logstash_functional');
diff --git a/test/functional/apps/discover/_inspector.js b/test/functional/apps/discover/_inspector.js
index fcb66fbd52cf7..900ad28e14e69 100644
--- a/test/functional/apps/discover/_inspector.js
+++ b/test/functional/apps/discover/_inspector.js
@@ -34,8 +34,7 @@ export default function ({ getService, getPageObjects }) {
return hitsCountStatsRow[STATS_ROW_VALUE_INDEX];
}
- // FLAKY: https://github.com/elastic/kibana/issues/39842
- describe.skip('inspect', () => {
+ describe('inspect', () => {
before(async () => {
await esArchiver.loadIfNeeded('logstash_functional');
await esArchiver.load('discover');
diff --git a/test/functional/fixtures/es_archiver/discover/data.json b/test/functional/fixtures/es_archiver/discover/data.json
new file mode 100644
index 0000000000000..9158a3023fc5e
--- /dev/null
+++ b/test/functional/fixtures/es_archiver/discover/data.json
@@ -0,0 +1,42 @@
+{
+ "type": "doc",
+ "value": {
+ "id": "index-pattern:logstash-*",
+ "index": ".kibana",
+ "source": {
+ "index-pattern": {
+ "fields": "[{\"name\":\"@message\",\"type\":\"string\",\"esTypes\":[\"text\"],\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"@message.raw\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"subType\":{\"multi\":{\"parent\":\"@message\"}}},{\"name\":\"@tags\",\"type\":\"string\",\"esTypes\":[\"text\"],\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"@tags.raw\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"subType\":{\"multi\":{\"parent\":\"@tags\"}}},{\"name\":\"@timestamp\",\"type\":\"date\",\"esTypes\":[\"date\"],\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"_id\",\"type\":\"string\",\"esTypes\":[\"_id\"],\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"_index\",\"type\":\"string\",\"esTypes\":[\"_index\"],\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":false},{\"name\":\"_score\",\"type\":\"number\",\"searchable\":false,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"_source\",\"type\":\"_source\",\"esTypes\":[\"_source\"],\"searchable\":false,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"_type\",\"type\":\"string\",\"searchable\":false,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"agent\",\"type\":\"string\",\"esTypes\":[\"text\"],\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"agent.raw\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"subType\":{\"multi\":{\"parent\":\"agent\"}}},{\"name\":\"bytes\",\"type\":\"number\",\"esTypes\":[\"long\"],\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"clientip\",\"type\":\"ip\",\"esTypes\":[\"ip\"],\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"extension\",\"type\":\"string\",\"esTypes\":[\"text\"],\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"extension.raw\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"subType\":{\"multi\":{\"parent\":\"extension\"}}},{\"name\":\"geo.coordinates\",\"type\":\"geo_point\",\"esTypes\":[\"geo_point\"],\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"geo.dest\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"geo.src\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"geo.srcdest\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"headings\",\"type\":\"string\",\"esTypes\":[\"text\"],\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"headings.raw\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"subType\":{\"multi\":{\"parent\":\"headings\"}}},{\"name\":\"host\",\"type\":\"string\",\"esTypes\":[\"text\"],\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"host.raw\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"subType\":{\"multi\":{\"parent\":\"host\"}}},{\"name\":\"id\",\"type\":\"number\",\"esTypes\":[\"integer\"],\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"index\",\"type\":\"string\",\"esTypes\":[\"text\"],\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"index.raw\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"subType\":{\"multi\":{\"parent\":\"index\"}}},{\"name\":\"ip\",\"type\":\"ip\",\"esTypes\":[\"ip\"],\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"links\",\"type\":\"string\",\"esTypes\":[\"text\"],\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"links.raw\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"subType\":{\"multi\":{\"parent\":\"links\"}}},{\"name\":\"machine.os\",\"type\":\"string\",\"esTypes\":[\"text\"],\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"machine.os.raw\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"subType\":{\"multi\":{\"parent\":\"machine.os\"}}},{\"name\":\"machine.ram\",\"type\":\"number\",\"esTypes\":[\"long\"],\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"memory\",\"type\":\"number\",\"esTypes\":[\"double\"],\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"meta.char\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"meta.related\",\"type\":\"string\",\"esTypes\":[\"text\"],\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"meta.user.firstname\",\"type\":\"string\",\"esTypes\":[\"text\"],\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"meta.user.lastname\",\"type\":\"number\",\"esTypes\":[\"integer\"],\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"nestedField.child\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"subType\":{\"nested\":{\"path\":\"nestedField\"}}},{\"name\":\"phpmemory\",\"type\":\"number\",\"esTypes\":[\"long\"],\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"referer\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"relatedContent.article:modified_time\",\"type\":\"date\",\"esTypes\":[\"date\"],\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"relatedContent.article:published_time\",\"type\":\"date\",\"esTypes\":[\"date\"],\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"relatedContent.article:section\",\"type\":\"string\",\"esTypes\":[\"text\"],\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"relatedContent.article:section.raw\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"subType\":{\"multi\":{\"parent\":\"relatedContent.article:section\"}}},{\"name\":\"relatedContent.article:tag\",\"type\":\"string\",\"esTypes\":[\"text\"],\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"relatedContent.article:tag.raw\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"subType\":{\"multi\":{\"parent\":\"relatedContent.article:tag\"}}},{\"name\":\"relatedContent.og:description\",\"type\":\"string\",\"esTypes\":[\"text\"],\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"relatedContent.og:description.raw\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"subType\":{\"multi\":{\"parent\":\"relatedContent.og:description\"}}},{\"name\":\"relatedContent.og:image\",\"type\":\"string\",\"esTypes\":[\"text\"],\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"relatedContent.og:image.raw\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"subType\":{\"multi\":{\"parent\":\"relatedContent.og:image\"}}},{\"name\":\"relatedContent.og:image:height\",\"type\":\"string\",\"esTypes\":[\"text\"],\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"relatedContent.og:image:height.raw\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"subType\":{\"multi\":{\"parent\":\"relatedContent.og:image:height\"}}},{\"name\":\"relatedContent.og:image:width\",\"type\":\"string\",\"esTypes\":[\"text\"],\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"relatedContent.og:image:width.raw\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"subType\":{\"multi\":{\"parent\":\"relatedContent.og:image:width\"}}},{\"name\":\"relatedContent.og:site_name\",\"type\":\"string\",\"esTypes\":[\"text\"],\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"relatedContent.og:site_name.raw\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"subType\":{\"multi\":{\"parent\":\"relatedContent.og:site_name\"}}},{\"name\":\"relatedContent.og:title\",\"type\":\"string\",\"esTypes\":[\"text\"],\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"relatedContent.og:title.raw\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"subType\":{\"multi\":{\"parent\":\"relatedContent.og:title\"}}},{\"name\":\"relatedContent.og:type\",\"type\":\"string\",\"esTypes\":[\"text\"],\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"relatedContent.og:type.raw\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"subType\":{\"multi\":{\"parent\":\"relatedContent.og:type\"}}},{\"name\":\"relatedContent.og:url\",\"type\":\"string\",\"esTypes\":[\"text\"],\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"relatedContent.og:url.raw\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"subType\":{\"multi\":{\"parent\":\"relatedContent.og:url\"}}},{\"name\":\"relatedContent.twitter:card\",\"type\":\"string\",\"esTypes\":[\"text\"],\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"relatedContent.twitter:card.raw\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"subType\":{\"multi\":{\"parent\":\"relatedContent.twitter:card\"}}},{\"name\":\"relatedContent.twitter:description\",\"type\":\"string\",\"esTypes\":[\"text\"],\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"relatedContent.twitter:description.raw\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"subType\":{\"multi\":{\"parent\":\"relatedContent.twitter:description\"}}},{\"name\":\"relatedContent.twitter:image\",\"type\":\"string\",\"esTypes\":[\"text\"],\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"relatedContent.twitter:image.raw\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"subType\":{\"multi\":{\"parent\":\"relatedContent.twitter:image\"}}},{\"name\":\"relatedContent.twitter:site\",\"type\":\"string\",\"esTypes\":[\"text\"],\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"relatedContent.twitter:site.raw\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"subType\":{\"multi\":{\"parent\":\"relatedContent.twitter:site\"}}},{\"name\":\"relatedContent.twitter:title\",\"type\":\"string\",\"esTypes\":[\"text\"],\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"relatedContent.twitter:title.raw\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"subType\":{\"multi\":{\"parent\":\"relatedContent.twitter:title\"}}},{\"name\":\"relatedContent.url\",\"type\":\"string\",\"esTypes\":[\"text\"],\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"relatedContent.url.raw\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"subType\":{\"multi\":{\"parent\":\"relatedContent.url\"}}},{\"name\":\"request\",\"type\":\"string\",\"esTypes\":[\"text\"],\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"request.raw\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"subType\":{\"multi\":{\"parent\":\"request\"}}},{\"name\":\"response\",\"type\":\"string\",\"esTypes\":[\"text\"],\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"response.raw\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"subType\":{\"multi\":{\"parent\":\"response\"}}},{\"name\":\"spaces\",\"type\":\"string\",\"esTypes\":[\"text\"],\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"spaces.raw\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"subType\":{\"multi\":{\"parent\":\"spaces\"}}},{\"name\":\"type\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"url\",\"type\":\"string\",\"esTypes\":[\"text\"],\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"url.raw\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"subType\":{\"multi\":{\"parent\":\"url\"}}},{\"name\":\"utc_time\",\"type\":\"date\",\"esTypes\":[\"date\"],\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"xss\",\"type\":\"string\",\"esTypes\":[\"text\"],\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"xss.raw\",\"type\":\"string\",\"esTypes\":[\"keyword\"],\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true,\"subType\":{\"multi\":{\"parent\":\"xss\"}}}]",
+ "timeFieldName": "@timestamp",
+ "title": "logstash-*"
+ },
+ "type": "index-pattern"
+ }
+ }
+}
+
+{
+ "type": "doc",
+ "value": {
+ "id": "search:ab12e3c0-f231-11e6-9486-733b1ac9221a",
+ "index": ".kibana",
+ "source": {
+ "search": {
+ "columns": [
+ "_source"
+ ],
+ "description": "A Saved Search Description",
+ "hits": 0,
+ "kibanaSavedObjectMeta": {
+ "searchSourceJSON": "{\n \"index\": \"logstash-*\",\n \"highlightAll\": true,\n \"filter\": [],\n \"query\": {\n \"query_string\": {\n \"query\": \"*\",\n \"analyze_wildcard\": true\n }\n }\n}"
+ },
+ "sort": [
+ "@timestamp",
+ "desc"
+ ],
+ "title": "A Saved Search",
+ "version": 1
+ },
+ "type": "search"
+ }
+ }
+}
diff --git a/test/functional/fixtures/es_archiver/discover/data.json.gz b/test/functional/fixtures/es_archiver/discover/data.json.gz
deleted file mode 100644
index 047d890f6d410..0000000000000
Binary files a/test/functional/fixtures/es_archiver/discover/data.json.gz and /dev/null differ
diff --git a/x-pack/plugins/fleet/server/services/epm/archive/index.ts b/x-pack/plugins/fleet/server/services/epm/archive/index.ts
index 28f635e9412ae..810740d697fcb 100644
--- a/x-pack/plugins/fleet/server/services/epm/archive/index.ts
+++ b/x-pack/plugins/fleet/server/services/epm/archive/index.ts
@@ -4,9 +4,10 @@
* you may not use this file except in compliance with the Elastic License.
*/
-import { ArchivePackage } from '../../../../common/types';
+import { ArchivePackage, AssetParts } from '../../../../common/types';
import { PackageInvalidArchiveError, PackageUnsupportedMediaTypeError } from '../../../errors';
import {
+ cacheGet,
cacheSet,
cacheDelete,
getArchiveFilelist,
@@ -100,3 +101,40 @@ export const deletePackageCache = (name: string, version: string) => {
// this has been populated in unpackArchiveToCache()
paths?.forEach((path) => cacheDelete(path));
};
+
+export function getPathParts(path: string): AssetParts {
+ let dataset;
+
+ let [pkgkey, service, type, file] = path.split('/');
+
+ // if it's a data stream
+ if (service === 'data_stream') {
+ // save the dataset name
+ dataset = type;
+ // drop the `data_stream/dataset-name` portion & re-parse
+ [pkgkey, service, type, file] = path.replace(`data_stream/${dataset}/`, '').split('/');
+ }
+
+ // This is to cover for the fields.yml files inside the "fields" directory
+ if (file === undefined) {
+ file = type;
+ type = 'fields';
+ service = '';
+ }
+
+ return {
+ pkgkey,
+ service,
+ type,
+ file,
+ dataset,
+ path,
+ } as AssetParts;
+}
+
+export function getAsset(key: string) {
+ const buffer = cacheGet(key);
+ if (buffer === undefined) throw new Error(`Cannot find asset ${key}`);
+
+ return buffer;
+}
diff --git a/x-pack/plugins/fleet/server/services/epm/elasticsearch/ilm/install.ts b/x-pack/plugins/fleet/server/services/epm/elasticsearch/ilm/install.ts
index c5253e4902cab..46c0729a650d0 100644
--- a/x-pack/plugins/fleet/server/services/epm/elasticsearch/ilm/install.ts
+++ b/x-pack/plugins/fleet/server/services/epm/elasticsearch/ilm/install.ts
@@ -5,15 +5,15 @@
*/
import { CallESAsCurrentUser, ElasticsearchAssetType } from '../../../../types';
-import * as Registry from '../../registry';
+import { getAsset, getPathParts } from '../../archive';
export async function installILMPolicy(paths: string[], callCluster: CallESAsCurrentUser) {
const ilmPaths = paths.filter((path) => isILMPolicy(path));
if (!ilmPaths.length) return;
await Promise.all(
ilmPaths.map(async (path) => {
- const body = Registry.getAsset(path).toString('utf-8');
- const { file } = Registry.pathParts(path);
+ const body = getAsset(path).toString('utf-8');
+ const { file } = getPathParts(path);
const name = file.substr(0, file.lastIndexOf('.'));
try {
await callCluster('transport.request', {
@@ -28,7 +28,7 @@ export async function installILMPolicy(paths: string[], callCluster: CallESAsCur
);
}
const isILMPolicy = (path: string) => {
- const pathParts = Registry.pathParts(path);
+ const pathParts = getPathParts(path);
return pathParts.type === ElasticsearchAssetType.ilmPolicy;
};
export async function policyExists(
diff --git a/x-pack/plugins/fleet/server/services/epm/elasticsearch/ingest_pipeline/install.ts b/x-pack/plugins/fleet/server/services/epm/elasticsearch/ingest_pipeline/install.ts
index 58abdeb0d443d..c5c9e8ac2c01b 100644
--- a/x-pack/plugins/fleet/server/services/epm/elasticsearch/ingest_pipeline/install.ts
+++ b/x-pack/plugins/fleet/server/services/epm/elasticsearch/ingest_pipeline/install.ts
@@ -11,7 +11,8 @@ import {
ElasticsearchAssetType,
InstallablePackage,
} from '../../../../types';
-import * as Registry from '../../registry';
+import { ArchiveEntry } from '../../registry';
+import { getAsset, getPathParts } from '../../archive';
import { CallESAsCurrentUser } from '../../../../types';
import { saveInstalledEsRefs } from '../../packages/install';
import { getInstallationObject } from '../../packages';
@@ -127,7 +128,7 @@ export async function installPipelinesForDataStream({
dataStream,
packageVersion: pkgVersion,
});
- const content = Registry.getAsset(path).toString('utf-8');
+ const content = getAsset(path).toString('utf-8');
pipelines.push({
name,
nameForInstallation,
@@ -192,10 +193,10 @@ async function installPipeline({
return { id: pipeline.nameForInstallation, type: ElasticsearchAssetType.ingestPipeline };
}
-const isDirectory = ({ path }: Registry.ArchiveEntry) => path.endsWith('/');
+const isDirectory = ({ path }: ArchiveEntry) => path.endsWith('/');
const isDataStreamPipeline = (path: string, dataStreamDataset: string) => {
- const pathParts = Registry.pathParts(path);
+ const pathParts = getPathParts(path);
return (
!isDirectory({ path }) &&
pathParts.type === ElasticsearchAssetType.ingestPipeline &&
@@ -204,7 +205,7 @@ const isDataStreamPipeline = (path: string, dataStreamDataset: string) => {
);
};
const isPipeline = (path: string) => {
- const pathParts = Registry.pathParts(path);
+ const pathParts = getPathParts(path);
return pathParts.type === ElasticsearchAssetType.ingestPipeline;
};
diff --git a/x-pack/plugins/fleet/server/services/epm/elasticsearch/template/install.ts b/x-pack/plugins/fleet/server/services/epm/elasticsearch/template/install.ts
index 25d412b685904..199026da30c11 100644
--- a/x-pack/plugins/fleet/server/services/epm/elasticsearch/template/install.ts
+++ b/x-pack/plugins/fleet/server/services/epm/elasticsearch/template/install.ts
@@ -17,7 +17,7 @@ import { CallESAsCurrentUser } from '../../../../types';
import { Field, loadFieldsFromYaml, processFields } from '../../fields/field';
import { getPipelineNameForInstallation } from '../ingest_pipeline/install';
import { generateMappings, generateTemplateName, getTemplate } from './template';
-import * as Registry from '../../registry';
+import { getAsset, getPathParts } from '../../archive';
import { removeAssetsFromInstalledEsByType, saveInstalledEsRefs } from '../../packages/install';
export const installTemplates = async (
@@ -76,9 +76,9 @@ export const installTemplates = async (
const installPreBuiltTemplates = async (paths: string[], callCluster: CallESAsCurrentUser) => {
const templatePaths = paths.filter((path) => isTemplate(path));
const templateInstallPromises = templatePaths.map(async (path) => {
- const { file } = Registry.pathParts(path);
+ const { file } = getPathParts(path);
const templateName = file.substr(0, file.lastIndexOf('.'));
- const content = JSON.parse(Registry.getAsset(path).toString('utf8'));
+ const content = JSON.parse(getAsset(path).toString('utf8'));
let templateAPIPath = '_template';
// v2 index templates need to be installed through the new API endpoint.
@@ -121,9 +121,9 @@ const installPreBuiltComponentTemplates = async (
) => {
const templatePaths = paths.filter((path) => isComponentTemplate(path));
const templateInstallPromises = templatePaths.map(async (path) => {
- const { file } = Registry.pathParts(path);
+ const { file } = getPathParts(path);
const templateName = file.substr(0, file.lastIndexOf('.'));
- const content = JSON.parse(Registry.getAsset(path).toString('utf8'));
+ const content = JSON.parse(getAsset(path).toString('utf8'));
const callClusterParams: {
method: string;
@@ -151,12 +151,12 @@ const installPreBuiltComponentTemplates = async (
};
const isTemplate = (path: string) => {
- const pathParts = Registry.pathParts(path);
+ const pathParts = getPathParts(path);
return pathParts.type === ElasticsearchAssetType.indexTemplate;
};
const isComponentTemplate = (path: string) => {
- const pathParts = Registry.pathParts(path);
+ const pathParts = getPathParts(path);
return pathParts.type === ElasticsearchAssetType.componentTemplate;
};
diff --git a/x-pack/plugins/fleet/server/services/epm/elasticsearch/transform/common.ts b/x-pack/plugins/fleet/server/services/epm/elasticsearch/transform/common.ts
index 46f36dba96747..764e1b51f1bca 100644
--- a/x-pack/plugins/fleet/server/services/epm/elasticsearch/transform/common.ts
+++ b/x-pack/plugins/fleet/server/services/epm/elasticsearch/transform/common.ts
@@ -4,8 +4,4 @@
* you may not use this file except in compliance with the Elastic License.
*/
-import * as Registry from '../../registry';
-
-export const getAsset = (path: string): Buffer => {
- return Registry.getAsset(path);
-};
+export { getAsset } from '../../archive';
diff --git a/x-pack/plugins/fleet/server/services/epm/elasticsearch/transform/install.ts b/x-pack/plugins/fleet/server/services/epm/elasticsearch/transform/install.ts
index 1002eedc48740..9da5e8cd0a937 100644
--- a/x-pack/plugins/fleet/server/services/epm/elasticsearch/transform/install.ts
+++ b/x-pack/plugins/fleet/server/services/epm/elasticsearch/transform/install.ts
@@ -7,7 +7,7 @@
import { SavedObjectsClientContract } from 'kibana/server';
import { saveInstalledEsRefs } from '../../packages/install';
-import * as Registry from '../../registry';
+import { getPathParts } from '../../archive';
import {
ElasticsearchAssetType,
EsAssetReference,
@@ -104,7 +104,7 @@ export const installTransform = async (
};
const isTransform = (path: string) => {
- const pathParts = Registry.pathParts(path);
+ const pathParts = getPathParts(path);
return !path.endsWith('/') && pathParts.type === ElasticsearchAssetType.transform;
};
diff --git a/x-pack/plugins/fleet/server/services/epm/kibana/assets/install.ts b/x-pack/plugins/fleet/server/services/epm/kibana/assets/install.ts
index e7b251ef133c5..fe93ed84b32f2 100644
--- a/x-pack/plugins/fleet/server/services/epm/kibana/assets/install.ts
+++ b/x-pack/plugins/fleet/server/services/epm/kibana/assets/install.ts
@@ -10,7 +10,7 @@ import {
SavedObjectsClientContract,
} from 'src/core/server';
import { PACKAGES_SAVED_OBJECT_TYPE } from '../../../../../common';
-import * as Registry from '../../registry';
+import { getAsset, getPathParts } from '../../archive';
import {
AssetType,
KibanaAssetType,
@@ -57,7 +57,7 @@ const AssetInstallers: Record<
};
export async function getKibanaAsset(key: string): Promise {
- const buffer = Registry.getAsset(key);
+ const buffer = getAsset(key);
// cache values are buffers. convert to string / JSON
return JSON.parse(buffer.toString('utf8'));
@@ -117,14 +117,14 @@ export async function getKibanaAssets(
): Promise> {
const kibanaAssetTypes = Object.values(KibanaAssetType);
const isKibanaAssetType = (path: string) => {
- const parts = Registry.pathParts(path);
+ const parts = getPathParts(path);
return parts.service === 'kibana' && (kibanaAssetTypes as string[]).includes(parts.type);
};
const filteredPaths = paths
.filter(isKibanaAssetType)
- .map<[string, AssetParts]>((path) => [path, Registry.pathParts(path)]);
+ .map<[string, AssetParts]>((path) => [path, getPathParts(path)]);
const assetArrays: Array> = [];
for (const assetType of kibanaAssetTypes) {
diff --git a/x-pack/plugins/fleet/server/services/epm/packages/assets.ts b/x-pack/plugins/fleet/server/services/epm/packages/assets.ts
index 2e2090312c9ae..50d8f2f4d2fb2 100644
--- a/x-pack/plugins/fleet/server/services/epm/packages/assets.ts
+++ b/x-pack/plugins/fleet/server/services/epm/packages/assets.ts
@@ -6,7 +6,7 @@
import { InstallablePackage } from '../../../types';
import * as Registry from '../registry';
-import { getArchiveFilelist } from '../archive/cache';
+import { getArchiveFilelist, getAsset } from '../archive';
// paths from RegistryPackage are routes to the assets on EPR
// e.g. `/package/nginx/1.2.0/data_stream/access/fields/fields.yml`
@@ -59,7 +59,7 @@ export async function getAssetsData(
// Gather all asset data
const assets = getAssets(packageInfo, filter, datasetName);
const entries: Registry.ArchiveEntry[] = assets.map((path) => {
- const buffer = Registry.getAsset(path);
+ const buffer = getAsset(path);
return { path, buffer };
});
diff --git a/x-pack/plugins/fleet/server/services/epm/registry/index.test.ts b/x-pack/plugins/fleet/server/services/epm/registry/index.test.ts
index a2d5c8147002d..1208ffdaefe4a 100644
--- a/x-pack/plugins/fleet/server/services/epm/registry/index.test.ts
+++ b/x-pack/plugins/fleet/server/services/epm/registry/index.test.ts
@@ -5,7 +5,8 @@
*/
import { AssetParts } from '../../../types';
-import { getBufferExtractor, pathParts, splitPkgKey } from './index';
+import { getPathParts } from '../archive';
+import { getBufferExtractor, splitPkgKey } from './index';
import { untarBuffer, unzipBuffer } from './extract';
const testPaths = [
@@ -46,7 +47,7 @@ const testPaths = [
test('testPathParts', () => {
for (const value of testPaths) {
- expect(pathParts(value.path)).toStrictEqual(value.assetParts as AssetParts);
+ expect(getPathParts(value.path)).toStrictEqual(value.assetParts as AssetParts);
}
});
diff --git a/x-pack/plugins/fleet/server/services/epm/registry/index.ts b/x-pack/plugins/fleet/server/services/epm/registry/index.ts
index 52a1894570b2a..c35e91bdf580b 100644
--- a/x-pack/plugins/fleet/server/services/epm/registry/index.ts
+++ b/x-pack/plugins/fleet/server/services/epm/registry/index.ts
@@ -8,7 +8,6 @@ import semver from 'semver';
import { Response } from 'node-fetch';
import { URL } from 'url';
import {
- AssetParts,
AssetsGroupedByServiceByType,
CategoryId,
CategorySummaryList,
@@ -18,8 +17,12 @@ import {
RegistrySearchResults,
RegistrySearchResult,
} from '../../../types';
-import { unpackArchiveToCache } from '../archive';
-import { cacheGet, getArchiveFilelist, setArchiveFilelist } from '../archive';
+import {
+ getArchiveFilelist,
+ getPathParts,
+ setArchiveFilelist,
+ unpackArchiveToCache,
+} from '../archive';
import { fetchUrl, getResponse, getResponseStream } from './requests';
import { streamToBuffer } from './streams';
import { getRegistryUrl } from './registry_url';
@@ -146,36 +149,6 @@ export async function getRegistryPackage(
return { paths, registryPackageInfo };
}
-export function pathParts(path: string): AssetParts {
- let dataset;
-
- let [pkgkey, service, type, file] = path.split('/');
-
- // if it's a data stream
- if (service === 'data_stream') {
- // save the dataset name
- dataset = type;
- // drop the `data_stream/dataset-name` portion & re-parse
- [pkgkey, service, type, file] = path.replace(`data_stream/${dataset}/`, '').split('/');
- }
-
- // This is to cover for the fields.yml files inside the "fields" directory
- if (file === undefined) {
- file = type;
- type = 'fields';
- service = '';
- }
-
- return {
- pkgkey,
- service,
- type,
- file,
- dataset,
- path,
- } as AssetParts;
-}
-
export async function ensureCachedArchiveInfo(
name: string,
version: string,
@@ -204,19 +177,12 @@ async function fetchArchiveBuffer(
return { archiveBuffer, archivePath };
}
-export function getAsset(key: string) {
- const buffer = cacheGet(key);
- if (buffer === undefined) throw new Error(`Cannot find asset ${key}`);
-
- return buffer;
-}
-
export function groupPathsByService(paths: string[]): AssetsGroupedByServiceByType {
const kibanaAssetTypes = Object.values(KibanaAssetType);
// ASK: best way, if any, to avoid `any`?
const assets = paths.reduce((map: any, path) => {
- const parts = pathParts(path.replace(/^\/package\//, ''));
+ const parts = getPathParts(path.replace(/^\/package\//, ''));
if (parts.service === 'kibana' && kibanaAssetTypes.includes(parts.type)) {
if (!map[parts.service]) map[parts.service] = {};
if (!map[parts.service][parts.type]) map[parts.service][parts.type] = [];
diff --git a/x-pack/plugins/lens/public/pie_visualization/render_function.tsx b/x-pack/plugins/lens/public/pie_visualization/render_function.tsx
index eec351cfbb27e..39743a355fd78 100644
--- a/x-pack/plugins/lens/public/pie_visualization/render_function.tsx
+++ b/x-pack/plugins/lens/public/pie_visualization/render_function.tsx
@@ -253,7 +253,12 @@ export function PieComponent(
onClickValue(desanitizeFilterContext(context));
}}
- theme={chartTheme}
+ theme={{
+ ...chartTheme,
+ background: {
+ color: undefined, // removes background for embeddables
+ },
+ }}
baseTheme={chartBaseTheme}
/>
,
- valuesLabelMode: string = 'hide',
- isHorizontal: boolean
-) {
+function getValueLabelsStyling(isHorizontal: boolean) {
const VALUE_LABELS_MAX_FONTSIZE = 15;
const VALUE_LABELS_MIN_FONTSIZE = 10;
const VALUE_LABELS_VERTICAL_OFFSET = -10;
const VALUE_LABELS_HORIZONTAL_OFFSET = 10;
- if (valuesLabelMode === 'hide') {
- return theme;
- }
return {
- ...theme,
- ...{
- barSeriesStyle: {
- ...theme.barSeriesStyle,
- displayValue: {
- fontSize: { min: VALUE_LABELS_MIN_FONTSIZE, max: VALUE_LABELS_MAX_FONTSIZE },
- fill: { textInverted: true, textBorder: 2 },
- alignment: isHorizontal
- ? {
- vertical: VerticalAlignment.Middle,
- }
- : { horizontal: HorizontalAlignment.Center },
- offsetX: isHorizontal ? VALUE_LABELS_HORIZONTAL_OFFSET : 0,
- offsetY: isHorizontal ? 0 : VALUE_LABELS_VERTICAL_OFFSET,
- },
- },
+ displayValue: {
+ fontSize: { min: VALUE_LABELS_MIN_FONTSIZE, max: VALUE_LABELS_MAX_FONTSIZE },
+ fill: { textInverted: true, textBorder: 2 },
+ alignment: isHorizontal
+ ? {
+ vertical: VerticalAlignment.Middle,
+ }
+ : { horizontal: HorizontalAlignment.Center },
+ offsetX: isHorizontal ? VALUE_LABELS_HORIZONTAL_OFFSET : 0,
+ offsetY: isHorizontal ? 0 : VALUE_LABELS_VERTICAL_OFFSET,
},
};
}
@@ -445,9 +430,8 @@ export function XYChart({
// No histogram charts
!isHistogramViz;
- const baseThemeWithMaybeValueLabels = !shouldShowValueLabels
- ? chartTheme
- : mergeThemeWithValueLabelsStyling(chartTheme, valueLabels, shouldRotate);
+ const valueLabelsStyling =
+ shouldShowValueLabels && valueLabels !== 'hide' && getValueLabelsStyling(shouldRotate);
const colorAssignments = getColorAssignments(args.layers, data, formatFactory);
@@ -461,7 +445,16 @@ export function XYChart({
}
legendPosition={legend.position}
showLegendExtra={false}
- theme={baseThemeWithMaybeValueLabels}
+ theme={{
+ ...chartTheme,
+ barSeriesStyle: {
+ ...chartTheme.barSeriesStyle,
+ ...valueLabelsStyling,
+ },
+ background: {
+ color: undefined, // removes background for embeddables
+ },
+ }}
baseTheme={chartBaseTheme}
tooltip={{
headerFormatter: (d) => safeXAccessorLabelRenderer(d.value),