mirror of
https://github.com/elastic/kibana.git
synced 2025-04-24 17:59:23 -04:00
Merge remote-tracking branch 'upstream/6.x' into 6.x
This commit is contained in:
commit
48918aed2e
4205 changed files with 311575 additions and 15169 deletions
|
@ -1,5 +1,5 @@
|
|||
{
|
||||
"upstream": "elastic/kibana",
|
||||
"branches": [{ "name": "6.x", "checked": true }, "6.1", "6.0", "5.6"],
|
||||
"branches": [{ "name": "6.x", "checked": true }, "6.3", "6.2", "6.1", "6.0", "5.6"],
|
||||
"labels": ["backport"]
|
||||
}
|
||||
|
|
|
@ -1,3 +1,9 @@
|
|||
node_modules
|
||||
bower_components
|
||||
/data
|
||||
/build
|
||||
/.es
|
||||
/plugins
|
||||
/optimize
|
||||
/src/fixtures/vislib/mock_data
|
||||
/src/ui/public/angular-bootstrap
|
||||
|
@ -9,8 +15,6 @@
|
|||
/src/core_plugins/console/public/tests/webpackShims
|
||||
/src/ui/public/utils/decode_geo_hash.js
|
||||
/src/core_plugins/timelion/public/webpackShims/jquery.flot.*
|
||||
/tasks/vendor
|
||||
/packages/*/node_modules
|
||||
/packages/*/target
|
||||
/packages/eslint-config-kibana
|
||||
/packages/eslint-plugin-kibana-custom
|
||||
|
@ -19,5 +23,8 @@
|
|||
/packages/kbn-ui-framework/dist
|
||||
/packages/kbn-ui-framework/doc_site/build
|
||||
/packages/kbn-ui-framework/generator-kui/*/templates/
|
||||
!/.eslintrc.js
|
||||
/x-pack/coverage
|
||||
/x-pack/build
|
||||
/x-pack/plugins/**/__tests__/fixtures/**
|
||||
**/*.js.snap
|
||||
!/.eslintrc.js
|
||||
|
|
208
.eslintrc.js
208
.eslintrc.js
|
@ -1,3 +1,7 @@
|
|||
const { resolve } = require('path');
|
||||
const { readdirSync } = require('fs');
|
||||
const dedent = require('dedent');
|
||||
|
||||
module.exports = {
|
||||
extends: [
|
||||
'@elastic/eslint-config-kibana',
|
||||
|
@ -5,16 +9,13 @@ module.exports = {
|
|||
],
|
||||
|
||||
settings: {
|
||||
'import/resolver': {
|
||||
'@kbn/eslint-import-resolver-kibana': {
|
||||
rootPackageName: 'kibana',
|
||||
kibanaPath: '.',
|
||||
},
|
||||
},
|
||||
'import/resolver': 'eslint-import-resolver-node',
|
||||
},
|
||||
|
||||
overrides: [
|
||||
// Enable Prettier
|
||||
/**
|
||||
* Prettier
|
||||
*/
|
||||
{
|
||||
files: [
|
||||
'.eslintrc.js',
|
||||
|
@ -23,36 +24,68 @@ module.exports = {
|
|||
'packages/kbn-datemath/**/*.js',
|
||||
'packages/kbn-plugin-generator/**/*',
|
||||
'packages/kbn-eslint-import-resolver-kibana/**/*',
|
||||
'x-pack/plugins/apm/**/*',
|
||||
],
|
||||
plugins: ['prettier'],
|
||||
rules: Object.assign(
|
||||
{ 'prettier/prettier': 'error' },
|
||||
{
|
||||
'prettier/prettier': ['error'],
|
||||
},
|
||||
require('eslint-config-prettier').rules,
|
||||
require('eslint-config-prettier/react').rules
|
||||
),
|
||||
},
|
||||
|
||||
// files not transpiled by babel can't using things like object-spread
|
||||
/**
|
||||
* Allow default exports
|
||||
*/
|
||||
{
|
||||
files: [
|
||||
'.eslintrc.js',
|
||||
'packages/kbn-plugin-helpers/**/*',
|
||||
'packages/kbn-plugin-generator/**/*',
|
||||
],
|
||||
files: ['x-pack/test/functional/apps/**/*', 'x-pack/plugins/apm/**/*'],
|
||||
rules: {
|
||||
'prefer-object-spread/prefer-object-spread': 'off',
|
||||
'kibana-custom/no-default-export': 'off',
|
||||
'import/no-named-as-default': 'off',
|
||||
},
|
||||
},
|
||||
|
||||
// files that are not allowed to use devDepenedncies
|
||||
/**
|
||||
* Files that are allowed to import webpack-specific stuff
|
||||
*/
|
||||
{
|
||||
files: ['packages/kbn-ui-framework/**/*'],
|
||||
excludedFiles: [
|
||||
'packages/kbn-ui-framework/**/*.test.js',
|
||||
'packages/kbn-ui-framework/doc_site/**/*',
|
||||
'packages/kbn-ui-framework/generator-kui/**/*',
|
||||
'packages/kbn-ui-framework/Gruntfile.js',
|
||||
files: [
|
||||
'**/public/**',
|
||||
'**/webpackShims/**',
|
||||
'packages/kbn-ui-framework/doc_site/src/**',
|
||||
'src/fixtures/**', // TODO: this directory needs to be more obviously "public" (or go away)
|
||||
],
|
||||
settings: {
|
||||
// instructs import/no-extraneous-dependencies to treat modules
|
||||
// in plugins/ or ui/ namespace as "core modules" so they don't
|
||||
// trigger failures for not being listed in package.json
|
||||
'import/core-modules': ['plugins', 'ui', 'uiExports'],
|
||||
|
||||
'import/resolver': {
|
||||
'@kbn/eslint-import-resolver-kibana': {
|
||||
rootPackageName: 'kibana',
|
||||
kibanaPath: '.',
|
||||
pluginMap: readdirSync(resolve(__dirname, 'x-pack/plugins')).reduce(
|
||||
(acc, name) => {
|
||||
if (!name.startsWith('_')) {
|
||||
acc[name] = `x-pack/plugins/${name}`;
|
||||
}
|
||||
return acc;
|
||||
},
|
||||
{}
|
||||
),
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
|
||||
/**
|
||||
* files that ARE NOT allowed to use devDepenedncies
|
||||
*/
|
||||
{
|
||||
files: ['packages/kbn-ui-framework/**/*', 'x-pack/**/*'],
|
||||
rules: {
|
||||
'import/no-extraneous-dependencies': [
|
||||
'error',
|
||||
|
@ -64,13 +97,20 @@ module.exports = {
|
|||
},
|
||||
},
|
||||
|
||||
// files that are allowed to use devDepenedncies
|
||||
/**
|
||||
* files that ARE allowed to use devDepenedncies
|
||||
*/
|
||||
{
|
||||
files: [
|
||||
'packages/kbn-ui-framework/**/*.test.js',
|
||||
'packages/kbn-ui-framework/doc_site/**/*',
|
||||
'packages/kbn-ui-framework/generator-kui/**/*',
|
||||
'packages/kbn-ui-framework/Gruntfile.js',
|
||||
'x-pack/{dev-tools,gulp_helpers,scripts,test,build_chromium}/**/*',
|
||||
'x-pack/**/{__tests__,__test__,__jest__,__fixtures__,__mocks__}/**/*',
|
||||
'x-pack/**/*.test.js',
|
||||
'x-pack/gulpfile.js',
|
||||
'x-pack/plugins/apm/public/utils/testHelpers.js',
|
||||
],
|
||||
rules: {
|
||||
'import/no-extraneous-dependencies': [
|
||||
|
@ -82,5 +122,127 @@ module.exports = {
|
|||
],
|
||||
},
|
||||
},
|
||||
|
||||
/**
|
||||
* Files that are not transpiled with babel
|
||||
*/
|
||||
{
|
||||
files: [
|
||||
'.eslintrc.js',
|
||||
'**/webpackShims/**/*',
|
||||
'packages/kbn-plugin-generator/**/*',
|
||||
'packages/kbn-plugin-helpers/**/*',
|
||||
'packages/kbn-eslint-import-resolver-kibana/**/*',
|
||||
'packages/kbn-eslint-plugin-license-header/**/*',
|
||||
'x-pack/gulpfile.js',
|
||||
'x-pack/dev-tools/mocha/setup_mocha.js',
|
||||
'x-pack/scripts/*',
|
||||
],
|
||||
rules: {
|
||||
'import/no-commonjs': 'off',
|
||||
'prefer-object-spread/prefer-object-spread': 'off',
|
||||
'no-restricted-syntax': [
|
||||
'error',
|
||||
'ImportDeclaration',
|
||||
'ExportNamedDeclaration',
|
||||
'ExportDefaultDeclaration',
|
||||
'ExportAllDeclaration',
|
||||
],
|
||||
},
|
||||
},
|
||||
|
||||
/**
|
||||
* X-Pack global overrides
|
||||
*/
|
||||
{
|
||||
files: ['x-pack/**/*'],
|
||||
rules: {
|
||||
quotes: 'off',
|
||||
},
|
||||
},
|
||||
|
||||
/**
|
||||
* Files that require the license headers
|
||||
*/
|
||||
{
|
||||
files: ['x-pack/**/*.js'],
|
||||
plugins: ['@kbn/eslint-plugin-license-header'],
|
||||
rules: {
|
||||
'@kbn/license-header/require-license-header': [
|
||||
'error',
|
||||
{
|
||||
license: dedent`
|
||||
/*
|
||||
* Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
|
||||
* or more contributor license agreements. Licensed under the Elastic License;
|
||||
* you may not use this file except in compliance with the Elastic License.
|
||||
*/
|
||||
`,
|
||||
},
|
||||
],
|
||||
},
|
||||
},
|
||||
|
||||
/**
|
||||
* APM overrides
|
||||
*/
|
||||
{
|
||||
files: ['x-pack/plugins/apm/**/*'],
|
||||
rules: {
|
||||
'no-unused-vars': ['error', { ignoreRestSiblings: true }],
|
||||
'no-console': ['warn', { allow: ['error'] }],
|
||||
},
|
||||
},
|
||||
|
||||
/**
|
||||
* Graph overrides
|
||||
*/
|
||||
{
|
||||
files: ['x-pack/plugins/graph/**/*'],
|
||||
globals: {
|
||||
angular: true,
|
||||
$: true,
|
||||
},
|
||||
rules: {
|
||||
'block-scoped-var': 'off',
|
||||
camelcase: 'off',
|
||||
eqeqeq: 'off',
|
||||
'guard-for-in': 'off',
|
||||
'new-cap': 'off',
|
||||
'no-loop-func': 'off',
|
||||
'no-redeclare': 'off',
|
||||
'no-shadow': 'off',
|
||||
'no-unused-vars': 'off',
|
||||
'one-var': 'off',
|
||||
},
|
||||
},
|
||||
|
||||
/**
|
||||
* ML overrides
|
||||
*/
|
||||
{
|
||||
files: ['x-pack/plugins/ml/**/*'],
|
||||
rules: {
|
||||
quotes: 'error',
|
||||
'no-shadow': 'error',
|
||||
},
|
||||
},
|
||||
|
||||
/**
|
||||
* Monitoring overrides
|
||||
*/
|
||||
{
|
||||
files: ['x-pack/plugins/monitoring/**/*'],
|
||||
rules: {
|
||||
'block-spacing': ['error', 'always'],
|
||||
curly: ['error', 'all'],
|
||||
'no-unused-vars': ['error', { args: 'all', argsIgnorePattern: '^_' }],
|
||||
'no-else-return': 'error',
|
||||
},
|
||||
},
|
||||
{
|
||||
files: ['x-pack/plugins/monitoring/public/**/*'],
|
||||
env: { browser: true },
|
||||
},
|
||||
],
|
||||
};
|
||||
|
|
7
.gitignore
vendored
7
.gitignore
vendored
|
@ -5,7 +5,8 @@
|
|||
.DS_Store
|
||||
.node_binaries
|
||||
node_modules
|
||||
!/tasks/lib/packages/__tests__/fixtures/fixture1/node_modules
|
||||
!/src/dev/npm/__tests__/fixtures/fixture1/node_modules
|
||||
!/src/dev/notice/__fixtures__/node_modules
|
||||
trash
|
||||
/optimize
|
||||
target
|
||||
|
@ -20,7 +21,6 @@ target
|
|||
/test/*/screenshots/session
|
||||
/test/*/screenshots/visual_regression_gallery.html
|
||||
/html_docs
|
||||
.htpasswd
|
||||
.eslintcache
|
||||
/plugins/
|
||||
/data
|
||||
|
@ -39,5 +39,6 @@ selenium
|
|||
!/packages/kbn-ui-framework/doc_site/build/index.html
|
||||
package-lock.json
|
||||
.yo-rc.json
|
||||
/.vscode
|
||||
.vscode
|
||||
npm-debug.log*
|
||||
.tern-project
|
||||
|
|
|
@ -174,7 +174,7 @@ Start elasticsearch from a nightly snapshot.
|
|||
yarn es snapshot
|
||||
```
|
||||
|
||||
Additional options are available, pass `--help` for more information.
|
||||
This will run Elasticsearch with a `basic` license. Additional options are available, pass `--help` for more information.
|
||||
|
||||
> You'll need to have a `java` binary in `PATH` or set `JAVA_HOME`.
|
||||
|
||||
|
@ -193,7 +193,21 @@ Start the development server.
|
|||
|
||||
> On Windows, you'll need you use Git Bash, Cygwin, or a similar shell that exposes the `sh` command. And to successfully build you'll need Cygwin optional packages zip, tar, and shasum.
|
||||
|
||||
Now you can point your web browser to https://localhost:5601 and start using Kibana! When running `yarn start`, Kibana will also log that it is listening on port 5603 due to the base path proxy, but you should still access Kibana on port 5601.
|
||||
Now you can point your web browser to http://localhost:5601 and start using Kibana! When running `yarn start`, Kibana will also log that it is listening on port 5603 due to the base path proxy, but you should still access Kibana on port 5601.
|
||||
|
||||
#### Running Kibana in Open-Source mode
|
||||
|
||||
If you're looking to only work with the open-source software, supply the license type to `yarn es`:
|
||||
|
||||
```bash
|
||||
yarn es snapshot --license oss
|
||||
```
|
||||
|
||||
And start Kibana with only open-source code:
|
||||
|
||||
```bash
|
||||
yarn start --oss
|
||||
```
|
||||
|
||||
#### Unsupported URL Type
|
||||
|
||||
|
@ -249,6 +263,24 @@ Once that's done, just run:
|
|||
yarn test && yarn build --skip-os-packages
|
||||
```
|
||||
|
||||
### Debugging Server Code
|
||||
`yarn debug` will start the server with Node's inspect and debug-brk flags. Kibana's development mode will start three processes. Chrome's developer tools can be configured to connect to all three under the connection tab.
|
||||
|
||||
### Unit testing frameworks
|
||||
Kibana is migrating unit testing from Mocha to Jest. Legacy unit tests still exist in Mocha but all new unit tests should be written in Jest.
|
||||
|
||||
#### Mocha (legacy)
|
||||
Mocha tests are contained in `__tests__` directories.
|
||||
|
||||
#### Jest
|
||||
Jest tests are stored in the same directory as source code files with the `.test.js` suffix.
|
||||
|
||||
### Running Jest Unit Tests
|
||||
|
||||
```bash
|
||||
node scripts/jest
|
||||
```
|
||||
|
||||
### Debugging Unit Tests
|
||||
|
||||
The standard `yarn test` task runs several sub tasks and can take several minutes to complete, making debugging failures pretty painful. In order to ease the pain specialized tasks provide alternate methods for running the tests.
|
||||
|
@ -326,12 +358,11 @@ yarn test:browser --dev # remove the --dev flag to run them once and close
|
|||
|
||||
### Building OS packages
|
||||
|
||||
Packages are built using fpm, pleaserun, dpkg, and rpm. fpm and pleaserun can be installed using gem. Package building has only been tested on Linux and is not supported on any other platform.
|
||||
Packages are built using fpm, dpkg, and rpm. Package building has only been tested on Linux and is not supported on any other platform.
|
||||
|
||||
```bash
|
||||
apt-get install ruby-dev rpm
|
||||
gem install fpm -v 1.5.0
|
||||
gem install pleaserun -v 0.0.24
|
||||
yarn build --skip-archives
|
||||
```
|
||||
|
||||
|
@ -382,20 +413,6 @@ After a pull is submitted, it needs to get to review. If you have commit permiss
|
|||
|
||||
### Reviewing Pull Requests
|
||||
|
||||
So, you've been assigned a pull to review. What's that look like?
|
||||
|
||||
Remember, someone is blocked by a pull awaiting review, make it count. Be thorough, the more action items you catch in the first review, the less back and forth will be required, and the better chance the pull has of being successful.
|
||||
|
||||
1. **Understand the issue** that is being fixed, or the feature being added. Check the description on the pull, and check out the related issue. If you don't understand something, ask the submitter for clarification.
|
||||
1. **Reproduce the bug** (or the lack of feature I guess?) in the destination branch, usually `master`. The referenced issue will help you here. If you're unable to reproduce the issue, contact the issue submitter for clarification
|
||||
1. **Check out the pull** and test it. Is the issue fixed? Does it have nasty side effects? Try to create suspect inputs. If it operates on the value of a field try things like: strings (including an empty string), null, numbers, dates. Try to think of edge cases that might break the code.
|
||||
1. **Merge the target branch**. It is possible that tests or the linter have been updated in the target branch since the pull was submitted. Merging the pull could cause core to start failing.
|
||||
1. **Read the code**. Understanding the changes will help you find additional things to test. Contact the submitter if you don't understand something.
|
||||
1. **Go line-by-line**. Are there [style guide](https://github.com/elastic/kibana/blob/master/STYLEGUIDE.md) violations? Strangely named variables? Magic numbers? Do the abstractions make sense to you? Are things arranged in a testable way?
|
||||
1. **Speaking of tests** Are they there? If a new function was added does it have tests? Do the tests, well, TEST anything? Do they just run the function or do they properly check the output?
|
||||
1. **Suggest improvements** If there are changes needed, be explicit, comment on the lines in the code that you'd like changed. You might consider suggesting fixes. If you can't identify the problem, animated screenshots can help the review understand what's going on.
|
||||
1. **Hand it back** If you found issues, re-assign the submitter to the pull to address them. Repeat until mergable.
|
||||
1. **Hand it off** If you're the first reviewer and everything looks good but the changes are more than a few lines, hand the pull to someone else to take a second look. Again, try to find the right person to assign it to.
|
||||
1. **Merge the code** When everything looks good, put in a `LGTM` (looks good to me) comment. Merge into the target branch. Check the labels on the pull to see if backporting is required, and perform the backport if so.
|
||||
So, you've been assigned a pull to review. Check out our [pull request review guidelines](https://www.elastic.co/guide/en/kibana/master/pr-review.html) for our general philosophy for pull request reviewers.
|
||||
|
||||
Thank you so much for reading our guidelines! :tada:
|
||||
|
|
41
Gruntfile.js
41
Gruntfile.js
|
@ -5,51 +5,11 @@ module.exports = function (grunt) {
|
|||
// and once during so that we have access to it via
|
||||
// grunt.config.get() within the config files
|
||||
const config = {
|
||||
pkg: grunt.file.readJSON('package.json'),
|
||||
root: __dirname,
|
||||
src: __dirname + '/src',
|
||||
buildDir: __dirname + '/build', // temporary build directory
|
||||
plugins: __dirname + '/src/core_plugins',
|
||||
server: __dirname + '/src/server',
|
||||
target: __dirname + '/target', // location of the compressed build targets
|
||||
configFile: __dirname + '/src/config/kibana.yml',
|
||||
|
||||
karmaBrowser: (function () {
|
||||
if (grunt.option('browser')) {
|
||||
return grunt.option('browser');
|
||||
}
|
||||
|
||||
switch (require('os').platform()) {
|
||||
case 'win32':
|
||||
return 'IE';
|
||||
default:
|
||||
return 'Chrome';
|
||||
}
|
||||
}()),
|
||||
|
||||
nodeVersion: grunt.file.read('.node-version').trim(),
|
||||
|
||||
meta: {
|
||||
banner: '/*! <%= package.name %> - v<%= package.version %> - ' +
|
||||
'<%= grunt.template.today("yyyy-mm-dd") %>\n' +
|
||||
'<%= package.homepage ? " * " + package.homepage + "\\n" : "" %>' +
|
||||
' * Copyright (c) <%= grunt.template.today("yyyy") %> <%= package.author.company %>;' +
|
||||
' Licensed <%= package.license %> */\n'
|
||||
},
|
||||
};
|
||||
|
||||
grunt.config.merge(config);
|
||||
|
||||
// must run before even services/platforms
|
||||
grunt.config.set('build', require('./tasks/config/build')(grunt));
|
||||
|
||||
config.packageScriptsDir = __dirname + '/tasks/build/package_scripts';
|
||||
// ensure that these run first, other configs need them
|
||||
config.services = require('./tasks/config/services')(grunt);
|
||||
config.platforms = require('./tasks/config/platforms')(grunt);
|
||||
|
||||
grunt.config.merge(config);
|
||||
|
||||
// load plugins
|
||||
require('load-grunt-config')(grunt, {
|
||||
configPath: __dirname + '/tasks/config',
|
||||
|
@ -62,5 +22,4 @@ module.exports = function (grunt) {
|
|||
|
||||
// load task definitions
|
||||
grunt.task.loadTasks('tasks');
|
||||
grunt.task.loadTasks('tasks/build');
|
||||
};
|
||||
|
|
|
@ -1,7 +0,0 @@
|
|||
Copyright 2012–2017 Elasticsearch BV
|
||||
|
||||
Licensed 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.
|
13
LICENSE.txt
Normal file
13
LICENSE.txt
Normal file
|
@ -0,0 +1,13 @@
|
|||
Source code in this repository is variously licensed under the Apache License
|
||||
Version 2.0, an Apache compatible license, or the Elastic License. Outside of
|
||||
the "x-pack" folder, source code in a given file is licensed under the Apache
|
||||
License Version 2.0, unless otherwise noted at the beginning of the file or a
|
||||
LICENSE file present in the directory subtree declares a separate license.
|
||||
Within the "x-pack" folder, source code in a given file is licensed under the
|
||||
Elastic License, unless otherwise noted at the beginning of the file or a
|
||||
LICENSE file present in the directory subtree declares a separate license.
|
||||
|
||||
The build produces two sets of binaries - one set that falls under the Elastic
|
||||
License and another set that falls under Apache License Version 2.0. The
|
||||
binaries that contain `-oss` in the artifact name are licensed under the Apache
|
||||
License Version 2.0.
|
99
NOTICE.txt
99
NOTICE.txt
|
@ -1,6 +1,56 @@
|
|||
Kibana
|
||||
Kibana source code with Kibana X-Pack source code
|
||||
Copyright 2012-2018 Elasticsearch B.V.
|
||||
|
||||
---
|
||||
This product includes code that was extracted from angular-ui-bootstrap@0.13.1
|
||||
which is available under an "MIT" license
|
||||
|
||||
The MIT License
|
||||
|
||||
Copyright (c) 2012-2016 the AngularUI Team, http://angular-ui.github.io/bootstrap/
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in
|
||||
all copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
THE SOFTWARE.
|
||||
|
||||
---
|
||||
This product uses Noto fonts that are licensed under the SIL Open
|
||||
Font License, Version 1.1.
|
||||
|
||||
---
|
||||
Pretty handling of logarithmic axes.
|
||||
Copyright (c) 2007-2014 IOLA and Ole Laursen.
|
||||
Licensed under the MIT license.
|
||||
Created by Arne de Laat
|
||||
Set axis.mode to "log" and make the axis logarithmic using transform:
|
||||
axis: {
|
||||
mode: 'log',
|
||||
transform: function(v) {v <= 0 ? Math.log(v) / Math.LN10 : null},
|
||||
inverseTransform: function(v) {Math.pow(10, v)}
|
||||
}
|
||||
The transform filters negative and zero values, because those are
|
||||
invalid on logarithmic scales.
|
||||
This plugin tries to create good looking logarithmic ticks, using
|
||||
unicode superscript characters. If all data to be plotted is between two
|
||||
powers of ten then the default flot tick generator and renderer are
|
||||
used. Logarithmic ticks are places at powers of ten and at half those
|
||||
values if there are not to many ticks already (e.g. [1, 5, 10, 50, 100]).
|
||||
For details, see https://github.com/flot/flot/pull/1328
|
||||
|
||||
---
|
||||
This product bundles angular-ui-bootstrap@0.12.1 which is available under a
|
||||
"MIT" license.
|
||||
|
@ -83,3 +133,50 @@ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
THE SOFTWARE.
|
||||
|
||||
---
|
||||
This product includes code that was extracted from angular@1.3.
|
||||
Original license:
|
||||
The MIT License
|
||||
|
||||
Copyright (c) 2010-2014 Google, Inc. http://angularjs.org
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in
|
||||
all copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
THE SOFTWARE.
|
||||
|
||||
---
|
||||
This product uses "radioactive button" styles that were published on
|
||||
https://zurb.com/playground/radioactive-buttons under an "MIT" License.
|
||||
|
||||
Copyright (c) ZURB
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy of
|
||||
this software and associated documentation files (the "Software"), to deal in the
|
||||
Software without restriction, including without limitation the rights to use, copy,
|
||||
modify, merge, publish, distribute, sublicense, and/or sell copies of the Software,
|
||||
and to permit persons to whom the Software is furnished to do so, subject to the
|
||||
following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,
|
||||
INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
|
||||
PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
|
||||
HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
||||
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
|
||||
SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
|
||||
|
|
16
README.md
16
README.md
|
@ -1,8 +1,6 @@
|
|||
# Kibana 6.3.0
|
||||
# Kibana 6.4.0
|
||||
|
||||
Kibana is your window into the [Elastic Stack](https://www.elastic.co/products). Specifically, it's
|
||||
an open source ([Apache Licensed](LICENSE.md)),
|
||||
browser-based analytics and search dashboard for Elasticsearch.
|
||||
Kibana is your window into the [Elastic Stack](https://www.elastic.co/products). Specifically, it's a browser-based analytics and search dashboard for Elasticsearch.
|
||||
|
||||
- [Getting Started](#getting-started)
|
||||
- [Using a Kibana Release](#using-a-kibana-release)
|
||||
|
@ -43,11 +41,11 @@ out an open PR:
|
|||
|
||||
For the daring, snapshot builds are available. These builds are created nightly and have undergone no formal QA, so they should never be run in production. All builds are 64 bit.
|
||||
|
||||
| platform | |
|
||||
| --- | --- |
|
||||
| OSX | [tar](https://snapshots.elastic.co/downloads/kibana/kibana-6.3.0-SNAPSHOT-darwin-x86_64.tar.gz) |
|
||||
| Linux | [tar](https://snapshots.elastic.co/downloads/kibana/kibana-6.3.0-SNAPSHOT-linux-x86_64.tar.gz) [deb](https://snapshots.elastic.co/downloads/kibana/kibana-6.3.0-SNAPSHOT-amd64.deb) [rpm](https://snapshots.elastic.co/downloads/kibana/kibana-6.3.0-SNAPSHOT-x86_64.rpm) |
|
||||
| Windows | [zip](https://snapshots.elastic.co/downloads/kibana/kibana-6.3.0-SNAPSHOT-windows-x86_64.zip) |
|
||||
| platform | default | OSS |
|
||||
| --- | --- | --- |
|
||||
| OSX | [tar](https://snapshots.elastic.co/downloads/kibana/kibana-6.4.0-SNAPSHOT-darwin-x86_64.tar.gz) | [tar](https://snapshots.elastic.co/downloads/kibana/kibana-oss-7.0.0-alpha1-SNAPSHOT-darwin-x86_64.tar.gz) |
|
||||
| Linux | [tar](https://snapshots.elastic.co/downloads/kibana/kibana-6.4.0-SNAPSHOT-linux-x86_64.tar.gz) [deb](https://snapshots.elastic.co/downloads/kibana/kibana-6.4.0-SNAPSHOT-amd64.deb) [rpm](https://snapshots.elastic.co/downloads/kibana/kibana-6.4.0-SNAPSHOT-x86_64.rpm) | [tar](https://snapshots.elastic.co/downloads/kibana/kibana-oss-7.0.0-alpha1-SNAPSHOT-linux-x86_64.tar.gz) [deb](https://snapshots.elastic.co/downloads/kibana/kibana-oss-7.0.0-alpha1-SNAPSHOT-amd64.deb) [rpm](https://snapshots.elastic.co/downloads/kibana/kibana-oss-7.0.0-alpha1-SNAPSHOT-x86_64.rpm) |
|
||||
| Windows | [zip](https://snapshots.elastic.co/downloads/kibana/kibana-6.4.0-SNAPSHOT-windows-x86_64.zip) | [zip](https://snapshots.elastic.co/downloads/kibana/kibana-oss-7.0.0-alpha1-SNAPSHOT-windows-x86_64.zip) |
|
||||
|
||||
## Documentation
|
||||
|
||||
|
|
2441
docs/CHANGELOG.asciidoc
Normal file
2441
docs/CHANGELOG.asciidoc
Normal file
File diff suppressed because it is too large
Load diff
|
@ -14,3 +14,5 @@ If you'd prefer to use Kibana's internal plugin API, then check out
|
|||
include::development/core-development.asciidoc[]
|
||||
|
||||
include::development/plugin-development.asciidoc[]
|
||||
|
||||
include::development/pr-review.asciidoc[]
|
||||
|
|
133
docs/development/pr-review.asciidoc
Normal file
133
docs/development/pr-review.asciidoc
Normal file
|
@ -0,0 +1,133 @@
|
|||
[[pr-review]]
|
||||
== Pull request review guidelines
|
||||
|
||||
Every change made to Kibana must be held to a high standard, and while the responsibility for quality in a pull request ultimately lies with the author, Kibana team members have the responsibility as reviewers to verify during their review process.
|
||||
|
||||
Frankly, it's impossible to build a concrete list of requirements that encompass all of the possible situations we'll encounter when reviewing pull requests, so instead this document tries to lay out a common set of the few obvious requirements while also outlining a general philosophy that we should have when approaching any PR review.
|
||||
|
||||
It is not expected nor intended for a PR review to take the shape of this document, where the topmost guidelines are always applied first and the bottommost guidelines are always applied last. This entire document should be considered as a whole rather than as a series of consecutive todos that must be completed in order.
|
||||
|
||||
While the review process is always done by Elastic staff members, these guidelines apply to all pull requests regardless of whether they are authored by community members or Elastic staff.
|
||||
|
||||
|
||||
[float]
|
||||
=== Target audience
|
||||
|
||||
The target audience for this document are pull request reviewers. For Kibana maintainers, the PR review is the only part of the contributing process in which we have complete control. The author of any given pull request may not be up to speed on the latest expectations we have for pull requests, and they may have never read our guidelines at all. It's our responsibility as reviewers to guide folks through this process, but it's hard to do that consistently without a common set of documented principles.
|
||||
|
||||
Pull request authors can benefit from reading this document as well because it'll help establish a common set of expectations between authors and reviewers early.
|
||||
|
||||
|
||||
[float]
|
||||
=== Reject fast
|
||||
|
||||
Every pull request is different, and before reviewing any given PR, reviewers should consider the optimal way to approach the PR review so that if the change is ultimately rejected, it is done so as early in the process as possible.
|
||||
|
||||
For example, a reviewer may want to do a product level review as early as possible for a PR that includes a new UI feature. On the other hand, perhaps the author is submitting a new feature that has been rejected in the past due to key architectural decisions, in which case it may be appropriate for the reviewer to focus on the soundness of the architecture before diving into anything else.
|
||||
|
||||
|
||||
[float]
|
||||
=== The big three
|
||||
|
||||
There are a lot of discrete requirements and guidelines we want to follow in all of our pull requests, but three things in particular stand out as important above all the rest.
|
||||
|
||||
. *Do we want this change in the product?*
|
||||
+
|
||||
--
|
||||
Just because a person spent time building something doesn't mean we want that change to exist in the product, which is why we encourage everyone to open issues describing what they want to do before going off and doing it.
|
||||
|
||||
Every feature we add permanently takes a portion of our attention away from building and supporting other features. We literally have a finite capacity of the number of features we can maintain since they all require a little bit of our time and focus, so it's important that enhancements to the project are scrutinized not just for their quality but also for the value they add, the maintenance burden they add, and how closely they align to our long term goals for the project.
|
||||
|
||||
The landscape can change over time as well, so it's important that continuously reevaluate decisions we've made around whether or not we want certain changes in the project. Some changes take a significant amount of time to build, and it's possible that by the time we're wrapping them up, the situation has changed enough that we no longer want the change in the project.
|
||||
--
|
||||
. *Is this change architecturally sound?*
|
||||
+
|
||||
--
|
||||
Making poor decisions around how a change is technically architected means we immediately have taken on technical debt, which is going to unnecessarily distract us from our future efforts to improve the project as we need to maintain that existing change, chase down bugs, and ultimately re-architect that area in the future.
|
||||
|
||||
There is no one-size-fits-all way to evaluate whether a given change is technically sound, so instead we must rely on our concrete knowledge and experience building software. This is an especially hard thing to do when two experienced developers have differing opinions about what is and is not architecturally sound, so it requires both the author and reviewer to show empathy, to go out of their way to understand each other, and to come to a consensus about a path forward.
|
||||
|
||||
The goal here isn't finding the one best architecture as it's unlikely this could ever be qualified. There are usually many architecturally sound solutions to any problem, so reviewers should be focused on that goal objectively rather than whether or not their own vision for how the change should be architected is "better".
|
||||
--
|
||||
. *Are there sufficient tests to ensure this change doesn't break in the future?*
|
||||
+
|
||||
--
|
||||
We cannot scale our development efforts and continue to be effective at improving and maintaining the product if we're relying on manual testing to catch bugs. Manual testing is our last line of defense, and it's the least effective and most expensive way to ensure a stable product. This means that every change we make to the product needs to have sufficient test coverage.
|
||||
|
||||
This isn't simply a question of enough test files. The code in the tests themselves is just as important as the code in the product.
|
||||
|
||||
All of our code should have unit tests that verify its behaviors, including not only the "happy path", but also edge cases, error handling, etc. When you change an existing API of a module, then there should always be at least one failing unit test, which in turn means we need to verify that all code consuming that API properly handles the change if necessary. For modules at a high enough level, this will mean we have breaking change in the product, which we'll need to handle accordingly.
|
||||
|
||||
In addition to extensive unit test coverage, PRs should include relevant functional and integration tests. In some cases, we may simply be testing a programmatic interface (e.g. a service) that is integrating with the file system, the network, Elasticsearch, etc. In other cases, we'll be testing REST APIs over HTTP or comparing screenshots/snapshots with prior known acceptable state. In the worst case, we are doing browser-based functional testing on a running instance of Kibana using selenium.
|
||||
|
||||
Enhancements are pretty much always going to have extensive unit tests as a base as well as functional and integration testing. Bug fixes should always include regression tests to ensure that same bug does not manifest again in the future.
|
||||
--
|
||||
|
||||
|
||||
[float]
|
||||
=== Product level review
|
||||
|
||||
Reviewers are not simply evaluating the code itself, they are also evaluating the quality of the user-facing change in the product. This generally means they need to check out the branch locally and "play around" with it. In addition to the "do we want this change in the product" details from above, the reviewer should be looking for bugs and evaluating how approachable and useful the feature is as implemented. Special attention should be given to error scenarios and edge cases to ensure they are all handled well within the product.
|
||||
|
||||
|
||||
[float]
|
||||
=== Consistency, style, readability
|
||||
|
||||
Having a relatively consistent codebase is an important part of us building a sustainable project. With dozens of active contributors at any given time, we rely on automation to help ensure consistency - we enforce a comprehensive set of linting rules through CI. We're also rolling out prettier to make this even more automatic.
|
||||
|
||||
For things that can't be easily automated, we maintain various link:https://github.com/elastic/kibana/tree/master/style_guides[styleguides] that authors should adhere to and reviewers should keep in mind when they review a pull request.
|
||||
|
||||
Beyond that, we're into subjective territory. Statements like "this isn't very readable" are hardly helpful since they can't be qualified, but that doesn't mean a reviewer should outright ignore code that is hard to understand due to how it is written. There isn't one definitively "best" way to write any particular code, so pursuing such shouldn't be our goal. Instead, reviewers and authors alike must accept that there are likely many different appropriate ways to accomplish the same thing with code, and so long as the contribution is utilizing one of those ways, then we're in good shape.
|
||||
|
||||
On the other hand, if a reviewer calls out a specific chunk of code as being hard to understand, then one of the first people to look at the code is having a hard time understanding it. If the reviewer feels strongly that this is a problem, they should raise the issue for the author's consideration and potentially propose alternatives. The reviewer must be pragmatic, and their goal should be to propel the discussion forward rather than simply throwing up obstacles.
|
||||
|
||||
When in doubt, relying on "prior art" in the codebase, especially in and around the area of the codebase that is being contributed to, is generally a good idea.
|
||||
|
||||
There may also be times when a person is inspired by a particular contribution to introduce a new way to style code that we already have different style guidelines or "prior art" for. It's OK to bring this up in a pull request, but ultimately that discussion should branch off into a separate issue or pull request to update the appropriate guide. If this change is prompted by a reviewer, then the original PR should not be blocked on this. If the change is prompted by the author, then they can either update the PR to be consistent with our existing guidelines (preferred) or they can choose to block the PR entirely on that separate styleguide discussion.
|
||||
|
||||
|
||||
[float]
|
||||
=== Nitpicking
|
||||
|
||||
Nitpicking is when a reviewer identifies trivial and unimportant details in a pull request and asks the author to change them. This is a completely subjective category that is impossible to define universally, and it's equally impractical to define a blanket policy on nitpicking that everyone will be happy with.
|
||||
|
||||
Reviewers should feel comfortable giving any feedback they have on a pull request regardless of how trivial it is. Authors should feel equally comfortable passing on feedback that they think is trivial and inconsequential.
|
||||
|
||||
Often, reviewers have an opinion about whether the feedback they are about to give is a nitpick or not. While not required, it can be really helpful to identify that feedback as such, for example "nit: a newline after this would be helpful". This helps the author understand your intention.
|
||||
|
||||
|
||||
[float]
|
||||
=== Handling disagreements
|
||||
|
||||
Conflicting opinions between reviewers and authors happen, and sometimes it is hard to reconcile those opinions. Ideally folks can work together in the spirit of these guidelines toward a consensus, but if that doesn't work out it may be best to bring a third person into the discussion. Our pull requests generally have two reviewers, so an appropriate third person may already be obvious. Otherwise, reach out to the functional area that is most appropriate or to technical leadership if an area isn't obvious.
|
||||
|
||||
|
||||
[float]
|
||||
=== Inappropriate review feedback
|
||||
|
||||
Whether or not a bit of feedback is appropriate for a pull request is often dependent on the motivation for giving the feedback in the first place.
|
||||
|
||||
_Demanding_ an author make changes based primarily on the mindset of "how would I write this code?" isn't appropriate. The reviewer didn't write the code, and their critical purpose in the review process is not to craft the contribution into a form that is simply whatever they would have written if they had. If a reviewer wants to provide this type of feedback, they should qualify it as a "nit" as mentioned in the nitpicking section above to make it clear that the author can take it or leave it.
|
||||
|
||||
Inflammatory feedback such as "this is crap" isn't feedback at all. It's both mean and unhelpful, and it is never appropriate.
|
||||
|
||||
|
||||
[float]
|
||||
=== A checklist
|
||||
|
||||
Establishing a comprehensive checklist for all of the things that should happen in all possible pull requests is impractical, but that doesn't mean we lack a concrete set of minimum requirements that we can enumerate. The following items should be double checked for any pull request:
|
||||
|
||||
* CLA check passes
|
||||
* Jenkins job runs and passes
|
||||
* Adheres to the spirit of our various styleguides
|
||||
* Has thorough unit test coverage
|
||||
* Automated tests provide high confidence the change continues to work without manual verification
|
||||
* Appropriate product documentation is included (asciidocs)
|
||||
* Any new UI changes are accessible to differently abled persons, including but not limited to sufficient contrasts in colors, keyboard navigation, and aria tags
|
||||
* Sufficient security protections are in place where appropriate, particularly when rendering API responses, parsing expressions, compiling URLs, loading external content, or redirecting
|
||||
* PR title summarizes the change (no "fixes bug number 123")
|
||||
* PR description includes:
|
||||
** A detailed summary of what changed
|
||||
** The motivation for the change
|
||||
** Screenshot(s) if the UI is changing
|
||||
** A link to each issue that is closed by the PR (e.g. Closes #123)
|
|
@ -19,4 +19,4 @@ set, make sure the *Index contains time-based events* box is checked and select
|
|||
*Time-field name* drop-down.
|
||||
|
||||
NOTE: When you define an index pattern, indices that match that pattern must exist in Elasticsearch. Those indices must
|
||||
contain data.
|
||||
contain data. You can check what indices exist by using `GET _cat/indices` in <<console-kibana>>, under Dev Tools, or `curl -XGET "http://localhost:9200/_cat/indices"`.
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
|
||||
include::{asciidoc-dir}/../../shared/versions63.asciidoc[]
|
||||
include::{asciidoc-dir}/../../shared/versions64.asciidoc[]
|
||||
|
||||
:docker-repo: docker.elastic.co/kibana/kibana
|
||||
:docker-image: docker.elastic.co/kibana/kibana:{version}
|
||||
|
|
|
@ -5,4 +5,4 @@ include::development.asciidoc[]
|
|||
|
||||
include::limitations.asciidoc[]
|
||||
|
||||
include::release-notes.asciidoc[]
|
||||
include::CHANGELOG.asciidoc[]
|
||||
|
|
|
@ -4,7 +4,6 @@
|
|||
:include-xpack: true
|
||||
:lang: en
|
||||
:kib-repo-dir: {docdir}
|
||||
:xes-repo-dir: {docdir}/../../elasticsearch-extra/x-pack-elasticsearch/docs/{lang}
|
||||
:xkb-repo-dir: {docdir}/../../kibana-extra/x-pack-kibana/docs/{lang}
|
||||
:xkb-repo-dir: {docdir}/../x-pack/docs/{lang}
|
||||
|
||||
include::{xkb-repo-dir}/index.asciidoc[]
|
||||
|
|
|
@ -8,7 +8,7 @@ for displayed decimal values.
|
|||
To set advanced options:
|
||||
|
||||
. Go to *Settings > Advanced*.
|
||||
. Click the *Edit* button for the option you want to modify.
|
||||
. Scroll or use the search bar to find the option you want to modify.
|
||||
. Enter a new value for the option.
|
||||
. Click the *Save* button.
|
||||
|
||||
|
@ -47,7 +47,7 @@ increase request processing time.
|
|||
`histogram:barTarget`:: When date histograms use the `auto` interval, Kibana attempts to generate this number of bars.
|
||||
`histogram:maxBars`:: Date histograms are not generated with more bars than the value of this property, scaling values
|
||||
when necessary.
|
||||
`visualize:enableLabs`:: Enables experimental visualizations. Default is `true`. If this is turned off, users will not be able to create visualizations that are considered experimental. They will also not be able to add or view these visualizations on a dashboard.
|
||||
`visualize:enableLabs`:: Enables experimental visualizations. Default is `true`. If this is turned off, users will not be able to create visualizations that are considered experimental. They will also not be able to add or view these visualizations on a dashboard.
|
||||
`visualization:tileMap:maxPrecision`:: The maximum geoHash precision displayed on tile maps: 7 is high, 10 is very high,
|
||||
12 is the maximum. {ref}/search-aggregations-bucket-geohashgrid-aggregation.html#_cell_dimensions_at_the_equator[Explanation of cell dimensions].
|
||||
`visualization:tileMap:WMSdefaults`:: Default properties for the WMS map server support in the coordinate map.
|
||||
|
@ -62,8 +62,6 @@ values are shown.
|
|||
`shortDots:enable`:: Set this property to `true` to shorten long field names in visualizations. For example, instead of `foo.bar.baz`, show `f.b.baz`.
|
||||
`truncate:maxHeight`:: This property specifies the maximum height that a cell occupies in a table. A value of 0 disables
|
||||
truncation.
|
||||
`indexPattern:fieldMapping:lookBack`:: The value of this property sets the number of recent matching patterns to query the
|
||||
field mapping for index patterns with names that contain timestamps.
|
||||
`indexPattern:placeholder`:: The default placeholder value used when adding a new index pattern to Kibana.
|
||||
`format:defaultTypeMap`:: A map of the default format name for each field type. Field types that are not explicitly
|
||||
mentioned use "_default_".
|
||||
|
|
|
@ -93,3 +93,25 @@ This is no longer the case. Now, only commas are a valid query separator: e.g. `
|
|||
*Details:* Replaced `Coordinate Map - Heatmap` configuration controls `Radius`, `Blur`, `Maximum Zoom`, and `Minimum opacity` with a single control, `Cluster size`.
|
||||
|
||||
*Impact:* No change is required for existing Coordinate Map visualizations, `Cluster size` will be set to the default value. `Cluster size` may need to be adjusted as needed.
|
||||
|
||||
[float]
|
||||
=== {reporting}
|
||||
|
||||
* When {security} is enabled, reports will only be accessible to the user that created them.
|
||||
* When {security} is enabled, user authorization is controlled by the
|
||||
`xpack.reporting.roles.allow` setting in the `kibana.yml` which defaults to
|
||||
`['reporting_user']`. Users will no longer have access to the underlying {reporting}
|
||||
indices in {es} when assigned to the built-in `reporting_user` role. If using
|
||||
custom reporting roles, the privileges to the indices will need to be removed, and the
|
||||
role will need to be added to the `xpack-reporting.roles.allow` setting.
|
||||
|
||||
[float]
|
||||
=== {watcher}
|
||||
|
||||
* The watch `_status` field has been renamed to `status`, as underscores in
|
||||
field names will not be allowed.
|
||||
* The built-in HTTP client used in webhooks, the http input and the http email
|
||||
attachment has been replaced. This results in the need to always escape all
|
||||
parts of an URL.
|
||||
* The new built-in HTTP client also enforces a maximum request size, which
|
||||
defaults to 10mb.
|
||||
|
|
|
@ -9,10 +9,6 @@ The Kibana plugin interfaces are in a state of constant development. We cannot
|
|||
|
||||
This list of plugins is not guaranteed to work on your version of Kibana. Instead, these are plugins that were known to work at some point with Kibana *5.x*. The Kibana installer will reject any plugins that haven't been published for your specific version of Kibana.
|
||||
|
||||
[float]
|
||||
=== Packs
|
||||
* https://www.elastic.co/downloads/x-pack[X-Pack] - security, monitoring, reporting, alerts, graph
|
||||
|
||||
[float]
|
||||
=== Apps
|
||||
* https://github.com/sivasamyk/logtrail[LogTrail] - View, analyze, search and tail log events in realtime with a developer/sysadmin friendly interface
|
||||
|
@ -30,6 +26,7 @@ This list of plugins is not guaranteed to work on your version of Kibana. Instea
|
|||
=== Visualizations
|
||||
* https://github.com/virusu/3D_kibana_charts_vis[3D Charts] (virusu)
|
||||
* https://github.com/JuanCarniglia/area3d_vis[3D Graph] (JuanCarniglia)
|
||||
* https://github.com/TrumanDu/bmap[Bmap](TrumanDu) - integrated echarts for map visualization
|
||||
* https://github.com/mstoyano/kbn_c3js_vis[C3JS Visualizations] (mstoyano)
|
||||
* https://github.com/elo7/cohort[Cohort analysis] (elo7)
|
||||
* https://github.com/DeanF/health_metric_vis[Colored Metric Visualization] (deanf)
|
||||
|
|
|
@ -1,78 +0,0 @@
|
|||
[[release-notes-6.0.0-alpha1]]
|
||||
== 6.0.0-alpha1 Release Notes
|
||||
|
||||
Also see <<breaking-changes-6.0>>.
|
||||
|
||||
[float]
|
||||
[[enhancement-6.0.0-alpha1]]
|
||||
=== Enhancements
|
||||
Core::
|
||||
* Deprecate Bootstrap buttons {pull}11352[#11352]
|
||||
* Fix missing border of PaginatedTable rows in Firefox {pull}11452[#11452]
|
||||
* Reinstate a few Bootstrap btn classes to support angular-ui-select. {pull}11569[#11569]
|
||||
* Remove Bootstrap btn classes. {pull}11353[#11353]
|
||||
* [UI Framework] Add AssistedInput. {pull}11343[#11343]
|
||||
* [UI Framework] Add example of disabled kuiSelect. {pull}11345[#11345]
|
||||
* [UI Framework] Add example of spinner Icon. {pull}11424[#11424]
|
||||
* [UI Framework] Add kuiButton--fullWidth kuiButton--small, and kuiButtonGroup--fullWidth modifiers. {pull}11365[#11365]
|
||||
* [UI Framework] Add support for dark theme links. {pull}11344[#11344]
|
||||
* [UI Framework] Add support for selects and secondary inputs to LocalNavSearch component of UI Framework. {pull}11287[#11287]
|
||||
* [UI Framework] Apply elastic.co look and feel to UI Framework docs site. {pull}11174[#11174]
|
||||
* [UI Framework] Fix appearance of some form components in Firefox {pull}11589[#11589]
|
||||
* [UI Framework] Make CardGroup split apart by default. Add kuiCardGroup--united modifier. {pull}11580[#11580]
|
||||
* [UI Framework] Vertical align children in a FieldGroup. {pull}11374[#11374]
|
||||
* Add small text input to UI framework {pull}11354[#11354]
|
||||
* [UI Framework] Add uiFramework:build task. {pull}11402[#11402]
|
||||
* Updates to status API, re-align status page {pull}10180[#10180]
|
||||
* [status] 15m load average should use the 3rd index {pull}11202[#11202]
|
||||
* Sets ES mapping to single_type=false {pull}11451[#11451]
|
||||
Dev Tools::
|
||||
* Adding autocomplete rules for reindex API to Console {pull}10150[#10150]
|
||||
* minimum_number_should_match was deprecated {pull}11316[#11316]
|
||||
Dashboard::
|
||||
* Improve Dashboard screen-reader accessibility. {pull}11600[#11600]
|
||||
* Update angular-bootstrap DatePicker with UI Framework classes. {pull}11378[#11378]
|
||||
* Finish loading a dashboard even if some visualizations throw errors {pull}11324[#11324]
|
||||
* React search box tool bar {pull}10821[#10821]
|
||||
* Don't kill an entire dashboard because of one bad request {pull}11337[#11337]
|
||||
* Add back dashboard descriptions {pull}11552[#11552]
|
||||
* Hide the second toast when adding a new visualization straight from dashboard {pull}11621[#11621]
|
||||
Discover::
|
||||
* Add ignore_unmapped to geo filters to prevent exceptions {pull}11461[#11461]
|
||||
* Create CollapseButton component class to standardize appearance of this button. {pull}11462[#11462]
|
||||
* Migrate deprecated match query syntax {pull}11554[#11554]
|
||||
* Remove the _source field toggle button which was accidentally reinstated {pull}11485[#11485]
|
||||
* Search bar drop-down for managing filters {pull}10976[#10976]
|
||||
Management::
|
||||
* Convert Index Pattern Creation form UI to use UI Framework components. {pull}11419[#11419]
|
||||
* Convert ScriptedFieldsTable and SourceFiltersTable to UI Framework components. {pull}11401[#11401]
|
||||
* Removes the "Index contains time-based events" checkbox {pull}11409[#11409]
|
||||
* Update Settings page with UI Framework components. {pull}11272[#11272]
|
||||
* Report shard failures in the field_capabilities response {pull}11450[#11450]
|
||||
Visualize::
|
||||
* Fix spelling in time series visual builder {pull}11212[#11212]
|
||||
* Adding label templates to legend keys for TSVB {pull}11266[#11266]
|
||||
* Fix missing icons in Visualize listing. {pull}11243[#11243]
|
||||
* Update illegible vis type icons with legible ones. {pull}11317[#11317]
|
||||
* Fixing the fields for the numbers for percentile aggs for Time Series Visual Builder {pull}11169[#11169]
|
||||
* using ui-select for field selection in visualize {pull}10998[#10998]
|
||||
* add polygon drawing tool {pull}11578[#11578]
|
||||
* Fix timelion's flot when neither thor nor monitoring are installed {pull}10412[#10412]
|
||||
|
||||
[float]
|
||||
[[bug-6.0.0-alpha1]]
|
||||
=== Bug fixes
|
||||
Core::
|
||||
* [Fix for #4964] Disable dynamic/Implement static mappings {pull}10638[#10638]
|
||||
* Fix visualize sort icon bug {pull}11568[#11568]
|
||||
Visualize::
|
||||
* Fixes #11232 - Add option for panel and global filters to annotations for TSVB {pull}11260[#11260]
|
||||
* Fixes #11289 - Change top_n to not use split colors for TSVB {pull}11342[#11342]
|
||||
* [Fix for #10907] allows more flexible timelion queries {pull}10961[#10961]
|
||||
* [Fix for #10292] fixing heatmap black squares {pull}11489[#11489]
|
||||
* [Fix for #4599] Add "Sum of series in legend" option {pull}7970[#7970]
|
||||
* [Fix for #9053] [timelion/fit/carry] do nothing if there is not any data {pull}9054[#9054]
|
||||
* [Fix for #8763] [vislib/tilemap/heatmap] scale the heatmap maxZoom with map zoom {pull}8765[#8765]
|
||||
* [Fix for #9184] fixes error with custom interval in datetime aggregation {pull}9427[#9427]
|
||||
|
||||
|
|
@ -1,52 +0,0 @@
|
|||
[[release-notes-6.0.0-alpha2]]
|
||||
== 6.0.0-alpha2 Release Notes
|
||||
|
||||
Also see <<breaking-changes-6.0>>.
|
||||
|
||||
|
||||
[float]
|
||||
[[breaking-6.0.0-alpha2]]
|
||||
=== Breaking changes
|
||||
Core::
|
||||
* Remove legacy pre-4.2 configurations {pull}12013[#12013]
|
||||
* NODE_ENV no longer has an impact on Kibana {pull}12010[#12010]
|
||||
* Only support 64 bit operating systems {pull}11941[#11941]
|
||||
|
||||
|
||||
[float]
|
||||
[[feature-6.0.0-alpha2]]
|
||||
=== New features
|
||||
Core::
|
||||
* Getting started page {pull}11805[#11805]
|
||||
Dashboard::
|
||||
* Clone dashboard from view mode {pull}10925[#10925]
|
||||
Visualize::
|
||||
* Region map {pull}10937[#10937]
|
||||
* Gauge chart {pull}10336[#10336]
|
||||
|
||||
|
||||
[float]
|
||||
[[enhancement-6.0.0-alpha2]]
|
||||
=== Enhancements
|
||||
Core::
|
||||
* Add new UI setting to control the amount of items in listing pages {pull}11674[#11674]
|
||||
Discover::
|
||||
* Apply filters to the event context view {pull}11466[#11466]
|
||||
Timelion::
|
||||
* Support multiline Timelion queries {pull}11972[#11972]
|
||||
Time series visual builder::
|
||||
* Help text for writing painless scripts {pull}11936[#11936]
|
||||
* Toggle for automatically applying changes to visualization {pull}11460[#11460]
|
||||
Timepicker::
|
||||
* Improve accessibility of the datepicker {pull}11753[#11753]
|
||||
|
||||
|
||||
[float]
|
||||
[[bug-6.0.0-alpha2]]
|
||||
=== Bug fixes
|
||||
Timelion::
|
||||
* Timelion tutorial now persists until you close it {pull}11962[#11962]
|
||||
Time series visual builder::
|
||||
* No longer trigger error in certain circumstances when using using percentiles {pull}11772[#11772]
|
||||
Visualize::
|
||||
* Disable save button if visualization is dirty {pull}11576[#11576]
|
|
@ -1,244 +0,0 @@
|
|||
[[release-notes-6.0.0-beta1]]
|
||||
== 6.0.0-beta1 Release Notes
|
||||
|
||||
Also see <<breaking-changes-6.0>>.
|
||||
|
||||
|
||||
[float]
|
||||
[[breaking-6.0.0-beta1]]
|
||||
=== Breaking changes
|
||||
Management::
|
||||
* [indexPatterns] remove support for time patterns {pull}12158[#12158]
|
||||
- - Removes ability to create index patterns based on time patterns/intervals - Adds a warning that informs users when they are using an index pattern that is now unsupported (disabled by default until #10442 is done, #12322) - Does not address editing/remapping index patterns, see last task in #12242
|
||||
Operations::
|
||||
* Updates to status API, re-align status page {pull}10180[#10180]
|
||||
* [Fix for #10181] Revert same port http -> https redirect {pull}10930[#10930]
|
||||
- Kibana 5.x redirected requests from http to https on the same port if TLS was configured. Starting in Kibana 6.0.0 Kibana no longer redirects basic http traffic to https.
|
||||
Platform::
|
||||
* [Fix for #12012] Fail to start if settings include unknown keys {pull}12554[#12554]
|
||||
- When a config file includes invalid keys or values, Kibana usually logs a message describing the issue and fails to start. There has been an exception to this rule since 4.2 that allowed top-level keys to be unknown/misspelled and only caused a warning to be logged. That exception has been removed and now any unknown or misspelled config key passed to Kibana (via the config file or command line flags) will prevent it from starting.
|
||||
* Remove the es_admin proxy {pull}13000[#13000]
|
||||
* Restrict ES data proxy to msearch and search {pull}13020[#13020]
|
||||
Visualization::
|
||||
* [Fix for #10907] allows more flexible timelion queries {pull}10961[#10961]
|
||||
|
||||
|
||||
[float]
|
||||
[[feature-6.0.0-beta1]]
|
||||
=== New features
|
||||
Discover::
|
||||
* Implement new Kibana query language {pull}12624[#12624]
|
||||
- This PR adds a new experimental query language to Kibana. The new language is turned off by default but can be enabled in the Management > Advanced Settings via the search:queryLanguage:switcher:enable option. Changing this setting to true will add a language selector to the query bar that allows users to choose the new language for their query. Details of the new query language can be found in the issue description (#12282).
|
||||
Sharing::
|
||||
* Full screen mode implementation for dashboard {pull}12265[#12265]
|
||||
- You can now enter full screen mode when viewing a dashboard. This hides the Chrome and the top nav bar. If you have any filters applied, you'll see the filter bar, otherwise that will be hidden as well. To exit full screen mode, hover over and click the Kibana button on the lower left side of the page, or simple press the ESC key.
|
||||
Visualization::
|
||||
* Visualize Refactor {pull}11786[#11786]
|
||||
- When creating new visualizations, developers are no longer restricted to using just Angular as a rendering technology. The changes now also enables developers to create custom editors that do not conform to the current sidebar-layout. Commonly used functionality - such as access to the query bar or timefilter - is now also exposed on the visualization object. This avoids the need to import individual modules from inside Kibana. These changes are a first step in a longer term effort to provide a robust long-lived programming interface for building visualizations in Kibana.
|
||||
|
||||
|
||||
[float]
|
||||
[[enhancement-6.0.0-beta1]]
|
||||
=== Enhancements
|
||||
Design::
|
||||
* We'd like to extend a special thanks to Arpad Popradi for his contributions to the UI Framework.
|
||||
* [UI Framework] Reactify menu {pull}12135[#12135]
|
||||
* Adding for and id attributes to labels and form elements {pull}12215[#12215]
|
||||
* [UI Framework] Reactify kuiEvent and related CSS components (#12226) {pull}12228[#12228]
|
||||
* [UI Framework] Reactify actionItem {pull}12142[#12142]
|
||||
* [UI Framework] Reactify kuiCollapseButton {pull}12225[#12225]
|
||||
* [UI Framework] Reactify kuiFieldGroup and related CSS components {pull}12260[#12260]
|
||||
* [UI Framework] Update LocalNav examples to use tabIndex instead of tabindex, to eliminate React console warnings. {pull}12284[#12284]
|
||||
* [UI Framework] Reactify kuiCard and related CSS components {pull}12197[#12197]
|
||||
* [UI Framework] Reactify kuiBar {pull}12167[#12167]
|
||||
* [UI Framework] Reactify kuiGallery and related CSS components {pull}12277[#12277]
|
||||
* [UI Framework] Fix examples of Table component with ToolBar. {pull}12326[#12326]
|
||||
* [UI Framework] Improve Warning Button contrast {pull}12327[#12327]
|
||||
* [UI Framework] Reactify kuiHeaderBar and related CSS components {pull}12280[#12280]
|
||||
* [UI Framework] Define consistent default, small, and wide sizing for form fields, and support them within ExpressionItems. {pull}12190[#12190]
|
||||
* [UI Framework] Order UI Framework React component exports to be alphabetical {pull}12526[#12526]
|
||||
* [UI Framework] Reactify kuiTabs and related CSS components {pull}12302[#12302]
|
||||
* Replace brand-danger color with new global red color. {pull}12654[#12654]
|
||||
* Make ui-select appearance match other inputs. {pull}12652[#12652]
|
||||
* [UI Framework] remove check for ng-untouched class from formControlInvalid mixin {pull}12153[#12153]
|
||||
* [UI Framework] reactify prompt for items {pull}12151[#12151]
|
||||
* [UI Framework] Allow custom placeholder for Tool Bar Search Box {pull}12959[#12959]
|
||||
* Palette swap for accessibility / kibana 6 {pull}12085[#12085]
|
||||
- We re-skinned a decent portion of Kibana to be mostly AA accessibility compatible in regards to coloring of major navigation elements.
|
||||
* [Design] Use alpha logo, retain branding in fullscreen mode {pull}12735[#12735]
|
||||
* [Fix for #12622] [Design] Update favicons {pull}12774[#12774]
|
||||
Dev Tools::
|
||||
* Respects ES customHeaders config for Console {pull}13033[#13033]
|
||||
Discover::
|
||||
* Accessible sort buttons {pull}12217[#12217]
|
||||
* [Accessibility] Avoid empty th in doc-table header row {pull}12364[#12364]
|
||||
- The discover document table header cells provide appropriate hints to screen-readers.
|
||||
* [Accessibility] Add button to skip past the discover doc table {pull}12539[#12539]
|
||||
- The new "Skip to bottom"-button in Discover is invisible unless focused. When activated it displays all remaining rows that were already loaded and focuses an anchor located below the table.
|
||||
* Timepicker on the right {pull}11980[#11980]
|
||||
Management::
|
||||
* Uses SavedObjectsClient for UI Settings {pull}12747[#12747]
|
||||
* [Management] Provide a way to fetch indices and template index patterns {pull}12200[#12200]
|
||||
* [Management] More universal solution for fetching indices and aliases {pull}12405[#12405]
|
||||
* [Management] Provide a way to fetch index pattern titles {pull}13030[#13030]
|
||||
- This PR adds another method to the indexPatterns service to fetch index patterns titles. Since the code was nearly identical to how index pattern ids are fetched, I decided to slightly refactor the function to accept a parameter for which property to fetch from the index pattern. I've updated all usages to the new approach.
|
||||
* Add breadcrumb-page-title to management-app {pull}12765[#12765]
|
||||
- The bread-crumbs component allows for the consumer to pass in a page-title value which is appended as the final breadcrumb in the chain. This PR adds a scope argument to the management-app to take advantage of it.
|
||||
Operations::
|
||||
* Update mappings for kibana index {pull}9280[#9280]
|
||||
* Saved objects compatibility layer {pull}12648[#12648]
|
||||
* Support v6 mappings for saved objects import/export {pull}12792[#12792]
|
||||
* Use single ES document type {pull}12794[#12794]
|
||||
- Starting in Elasticsearch 6.0, you are no longer able to create new indices with multiple index types. To accomplish the same effect as index types, a new type field was added to identify the document and the value mapped under the index to allow for strict mapping.
|
||||
* Add eslint import resolution {pull}12025[#12025]
|
||||
* [eslint] Ignore ui_framework/doc_site/build {pull}12400[#12400]
|
||||
* [logging] Downgrade hapi connection errors when connecting with the w… {pull}11209[#11209]
|
||||
* [git] ignore extra files in the root config/ directory {pull}9296[#9296]
|
||||
* upgrade makelogs {pull}9295[#9295]
|
||||
* [Fix for #9436] [optimizer] remove support for .jsx extension {pull}12712[#12712]
|
||||
* [elasticsearch/migrateConfig] use server.savedObjectsClientFactory() {pull}12767[#12767]
|
||||
* [status] 15m load average should use the 3rd index {pull}11202[#11202]
|
||||
* Sets ES mapping to single_type=false {pull}11451[#11451]
|
||||
* Adds bulk_get to SavedObjects {pull}12426[#12426]
|
||||
* Uses SavedObjects API in Courier Saved Object {pull}12407[#12407]
|
||||
Platform::
|
||||
* Use SavedObjectsClient for Courier Index Pattern {pull}12719[#12719]
|
||||
* Document merge conflict resolution process in CONTRIBUTING.md. {pull}12212[#12212]
|
||||
* Update files_to_commit to find renamed files. {pull}12423[#12423]
|
||||
* Remove client-side management of Kibana index mappings {pull}12820[#12820]
|
||||
* Uses uuid for auto-generated ids and prepends type (#12834) {pull}12877[#12877]
|
||||
* Use node instead of webpack config for jest {pull}12974[#12974]
|
||||
* add api tag to api routes {pull}12948[#12948]
|
||||
* Move Jest config to json {pull}12402[#12402]
|
||||
* [uiSettings] support defining settings with uiExports {pull}12250[#12250]
|
||||
- - define a uiExports.uiSettingDefaults key your plugin definition to add uiSettingDefaults - uiSettingDefaults must be unique. If a key is already defined elsewhere then the server will not start. - defined settings will display in the advanced settings editor, along with the intended default value and description - the REST API is identical to before - the browser API is identical to before - defaults for timelion have been extracted to the timelion plugin definition and the existing defaults are defined in the kibana plugin definition
|
||||
* Refactor commaList filter logic into common util {pull}12553[#12553]
|
||||
* [kbnServer/extensions] formalize request factories with helper {pull}12697[#12697]
|
||||
* Allow plugins to turn off the “link to last URL” navigation helper {pull}13044[#13044]
|
||||
Sharing::
|
||||
* Uses SavedObjectsClient for Short URL Lookup {pull}12787[#12787]
|
||||
* Stats API {pull}11992[#11992]
|
||||
- We introduced a new api endpoint at api/stats which displays counts of saved objects in your kibana index: {"dashboard":{"total":1},"visualization":{"total":3},"search":{"total":1},"index_pattern":{"total":1},"index":".kibana"}
|
||||
* Add new react color picker to ui framework with tests {pull}12245[#12245]
|
||||
* Add label and clear link to color picker {pull}12422[#12422]
|
||||
* Expose the variables for dynamically building doc links {pull}12513[#12513]
|
||||
* Reactify stateless table components {pull}12349[#12349]
|
||||
Other::
|
||||
* ES Healthcheck v6 mapping compatibility {pull}12714[#12714]
|
||||
* Remove field_stats pre-flight option for index patterns {pull}12814[#12814]
|
||||
* Configurable custom response headers for server {pull}13045[#13045]
|
||||
Visualization::
|
||||
* Fix ui-select error border color and placeholder font color. {pull}12411[#12411]
|
||||
* Fix appearance of error indicator in Visualize sidebar. {pull}12410[#12410]
|
||||
* Adding ability to configure grid for TSVB {pull}12385[#12385]
|
||||
* Adding option for controlling if last bucket is dropped for TSVB {pull}12379[#12379]
|
||||
- This PR creates an option in "Panel Options" and the metric index pattern override to allow the user to control if the last bucket should be dropped. By default TSVB will drop the last bucket since most of the time it's incomplete. This also changes the method for dropping the last bucket to a more reliable method.
|
||||
* Fixes #12602 - Change TSVB Fields API to use fieldCaps API {pull}12611[#12611]
|
||||
* [Fix for #11193] hide current time marker when the timespan doesn't include the current time {pull}12266[#12266]
|
||||
- Only display current time marker on a visualization when the x-axis extent includes the current time.
|
||||
* [Fix for #7040] Add github-markdown.css to markdown visualization {pull}12377[#12377]
|
||||
* Filter geohash_grid aggregation to map view box with collar {pull}12806[#12806]
|
||||
* add font size control to markdown visualization {pull}12860[#12860]
|
||||
* [vis/resizeChecker] swap out implemenation with ResizeObserver polyfill {pull}9439[#9439]
|
||||
* Add imports for SavedObjectRegistryProvider.register, fixing Timelion {pull}12844[#12844]
|
||||
* [Fix for #7572] add polygon drawing tool {pull}11578[#11578]
|
||||
- On a coordinate map, users can now make a selection on the map by drawing a freehand polygon. Just like the earlier boundary selection, this adds a boundary filter to the filter bar.
|
||||
* Visualize refactor (bis) {pull}12715[#12715]
|
||||
|
||||
|
||||
[float]
|
||||
[[bug-6.0.0-beta1]]
|
||||
=== Bug fixes
|
||||
Design::
|
||||
* [UI Framework] Fix disappearing borders for LocalNav search select. {pull}12803[#12803]
|
||||
* [Accessibilty] Make kbn_accessible_click part of autoload/all {pull}13299[#13299]
|
||||
Discover::
|
||||
* Fix call to suggestions API to correctly use index pattern title {pull}12917[#12917]
|
||||
* Remove simple_query_string hack now that multi_match supports * properly {pull}13285[#13285]
|
||||
* Add documentation link to query bar when Kuery is selected {pull}13300[#13300]
|
||||
Management::
|
||||
* [Fix for #12728] Ensure conflicted fields can be searchable and/or aggregatable {pull}13070[#13070]
|
||||
* [Fix for #13186] [Management] Update saved objects client usage to `attributes` instead of `_source` {pull}13223[#13223]
|
||||
* [Fix for #12249] Fixes issue #12249 {pull}12254[#12254]
|
||||
* Refine getIndices() to return an empty array if there are no matching indices. {pull}12659[#12659]
|
||||
* Remove translations from management section {pull}13049[#13049]
|
||||
* [Fix for #9352] Change mapping of index-pattern fields to text {pull}9353[#9353]
|
||||
Operations::
|
||||
* Remove `@elastic` folder from `packages/` {pull}13089[#13089]
|
||||
* Fix jsonify license check (#12615) {pull}12619[#12619]
|
||||
* Use es6 exports, replace module.exports {pull}12084[#12084]
|
||||
* [es archiver] fix error causes when requesting multiple index feature… {pull}12473[#12473]
|
||||
* Bump makelogs to 4.0.2 {pull}13007[#13007]
|
||||
Platform::
|
||||
* Update HTML style guide with rule for camel casing attribute values. {pull}11653[#11653]
|
||||
* Add title and tooltip accessibility information to HTML style guide. {pull}11655[#11655]
|
||||
* [Fix for #12580] Update HTML style guide with rule about putting nested elements on multiple lines. {pull}12812[#12812]
|
||||
* Remove Version Check for Dashboard Import API {pull}12476[#12476]
|
||||
* Toast Notification should handle connection failed {pull}12609[#12609]
|
||||
* [Fix for #12047] [uiSettings] make service request based {pull}12243[#12243]
|
||||
- - removes server.uiSettings() (throws error with instructions) - Adds request.getUiSettingsService() which returns a unique instance of UiSettingsService per request - Methods on UiSettingsService no longer require a request object - Adds server.uiSettingsServiceFactory(options) which can be used to create an instance of UiSettingsService with a custom callCluster() function
|
||||
* [Fix for #12436] Fix stats permissions and use underscore instead of dash {pull}12478[#12478]
|
||||
* [server/indexPatterns] expose indexPatternService getter/factory {pull}13012[#13012]
|
||||
Sharing::
|
||||
* Restoring the dashboard-grid padding to appease Gridster {pull}12613[#12613]
|
||||
* [Fix for #11857] Accessibility: Sharing UI - associate labels with controls {pull}12143[#12143]
|
||||
* [Fix for #12600] Fix search issue on listing page + tests {pull}12618[#12618]
|
||||
* [Fix for #11860] Make add edit buttons accessible {pull}12320[#12320]
|
||||
* Need to trigger renderComplete when there are no results {pull}12380[#12380]
|
||||
* [Fix for #12987] Children of buttons won't capture hover events in firefox {pull}13015[#13015]
|
||||
Other::
|
||||
* Fixes #12757 - Fixing field fetching for index patterns for TSVB {pull}12771[#12771]
|
||||
* Limit scripted fields to painless and expression langs {pull}9172[#9172]
|
||||
* update logstash data and mappings for single type {pull}13001[#13001]
|
||||
* [Fix for #13032] TEST - Fix flaky map functional test {pull}13039[#13039]
|
||||
Visualization::
|
||||
* Fixes #11721 - Fix bug with axis updating when data format is changed in TSVB {pull}12386[#12386]
|
||||
- Axes in the Time Series Visual Builder now correctly update when changing a data formatter.
|
||||
* Fixes #12763 - Add show_grid to the default vis structure for TSVB {pull}12769[#12769]
|
||||
* Fixes #12777 - Add onBrush to Visualization component for TSVB {pull}12778[#12778]
|
||||
* [Fix for #12802, #12762] Fix TSVB Visualizations to honor darkTheme {pull}12804[#12804]
|
||||
* [Fix for #8076] Scaled date format for date histogram aggregation {pull}12384[#12384]
|
||||
- Format date_histogram aggregation bucket labels with format specified in Advanced Setting's "dateFormat:scaled"
|
||||
* [Fix for #3230] Make vertical bar chart gutter widths consistent {pull}12264[#12264]
|
||||
- Histogram intervals are not always equal widths (monthly time intervals). Keeping gutter widths consistent and reducing the bar width provides a more visually appealing bar chart.
|
||||
* [Fix for #3173] Date histogram brush - add range filter when field is not index pattern time field. {pull}12286[#12286]
|
||||
* Remove event listener for resizeChecker when directive is destroyed {pull}12734[#12734]
|
||||
* Date histogram axis label not getting updated when time interval changes {pull}12815[#12815]
|
||||
* [Fix for #9530] Don't declare empty properties in Timelion's bool query {pull}9573[#9573]
|
||||
* [Fix for #12782] visualize should send ready:vis event when done {pull}12796[#12796]
|
||||
* [Fix for #11490] fix range agg label on heatmap y axis {pull}12754[#12754]
|
||||
* [Fix for #12811] reload visualization on auto refresh trigger {pull}12823[#12823]
|
||||
* [Fix for #12882] changing query should update url state {pull}12912[#12912]
|
||||
* vis with saved search should not show query and filter panels {pull}12911[#12911]
|
||||
* [Fix for #12925] analyze wildcard should not be part of default query {pull}12938[#12938]
|
||||
* [Fix for #12838] fix gauge field formatters {pull}12913[#12913]
|
||||
- metric/goal/gauge now correctly respect the fieldFormatters when multiple metrics are defined.
|
||||
* [Fix for #12940] query queue should be cleared on failure {pull}12942[#12942]
|
||||
* Handle date histogram scaling for table vis and avg_buckets metric {pull}11929[#11929]
|
||||
* [Fix for #12724] by default metric should not define color {pull}12993[#12993]
|
||||
* [Fix for #11414] remove default WMS settings {pull}11573[#11573]
|
||||
* ensure spy panel obscures underlying visualization {pull}12502[#12502]
|
||||
* [Fix for #12497] allows to order percentiles freely {pull}12498[#12498]
|
||||
* [Fix for #12732] Should only run visualization on Discover page when the indexpattern is time based {pull}12741[#12741]
|
||||
* reload on global fetch event and emit vis:ready {pull}12805[#12805]
|
||||
* Use the customMetric's formatter for pipeline aggregations {pull}11933[#11933]
|
||||
* [Fix for #12919] Fix excessive redraw {pull}12931[#12931]
|
||||
* [Fix for #12220] Should only fit on shapes that are part of the result {pull}12881[#12881]
|
||||
* [Fix for #12172] Save layer setting in the region map UI {pull}12956[#12956]
|
||||
* [Fix for #12189] Region map should respect saved center and zoom {pull}12883[#12883]
|
||||
* [Fix for #13181, elastic/beats#4777] Add Checks to Dashboard Context {pull}13182[#13182]
|
||||
* [Fix for #13244] [visualize spy] Pull index title instead of id {pull}13254[#13254]
|
||||
* [Fix for #11586] Use ui-select for agg selector {pull}13292[#13292]
|
||||
* [Fix for #13227] Send map filters through $newFilters so they get picked up by both kuery and lucene {pull}13251[#13251]
|
||||
* [Fix for #12827] removes :filters from label {pull}12962[#12962]
|
||||
* [Fix for #12983] resize was not detected correctly {pull}13239[#13239]
|
||||
* [Fix for #13011] Should respect pinned filters {pull}13019[#13019]
|
||||
* [Fix for #13255] Ensure we are working with data-series to avoid tooltip errors {pull}13266[#13266]
|
||||
* [Fix for #12724] by default metric should not define color {pull}12993[#12993]
|
||||
* [Fix for #12391] in percentage mode tooltip should also show percentages {pull}13217[#13217]
|
||||
- Tooltips now correctly display the percentage-value in area charts where the Y-Axis is formatted in percentage mode.
|
||||
* [Fix for #12963] Exclude stacktrace from error response of Timelion backend {pull}12973[#12973]
|
||||
- the Timelion backend no longer includes the stacktrace as part of the server response. This stacktrace is now logged to the server console.
|
||||
* Visualization accessibility issues {pull}13226[#13226]
|
||||
|
||||
|
|
@ -1,99 +0,0 @@
|
|||
[[release-notes-6.0.0-beta2]]
|
||||
== 6.0.0-beta2 Release Notes
|
||||
|
||||
Also see <<breaking-changes-6.0>>.
|
||||
|
||||
[float]
|
||||
[[breaking-6.0.0-beta2]]
|
||||
=== Breaking changes
|
||||
Discover::
|
||||
* [Fix for #13096] Remove highlight query {pull}13231[#13231]
|
||||
Visualization::
|
||||
* [Fix for #13425] Replace "marked" with "markdown-it" {pull}13623[#13623]
|
||||
|
||||
|
||||
[float]
|
||||
[[enhancement-6.0.0-beta2]]
|
||||
=== Enhancements
|
||||
Discover::
|
||||
* [Fix for #12343] Remove custom keyboard navigation in datepicker {pull}13644[#13644]
|
||||
Management::
|
||||
* [Management] Provide a way to fetch index pattern titles {pull}13030[#13030]
|
||||
- This PR adds another method to the indexPatterns service to fetch index patterns titles. Since the code was nearly identical to how index pattern ids are fetched, I decided to slightly refactor the function to accept a parameter for which property to fetch from the index pattern. I've updated all usages to the new approach.
|
||||
* [Fix for #11526, #8225] Move build info from management section to status page {pull}13341[#13341]
|
||||
Platform::
|
||||
* [server/indexPatterns] expose indexPatternService getter/factory {pull}13012[#13012]
|
||||
Visualization::
|
||||
* Upgrade kibana to leaflet 1.x {pull}12367[#12367]
|
||||
* Duration Formatting for TSVB {pull}13337[#13337]
|
||||
|
||||
|
||||
[float]
|
||||
[[bug-6.0.0-beta2]]
|
||||
=== Bug fixes
|
||||
Design::
|
||||
* Make breadcrumb a heading for screen readers, fix #12885 {pull}13734[#13734]
|
||||
* [Accessibilty] Make kbn_accessible_click part of autoload/all {pull}13299[#13299]
|
||||
Discover::
|
||||
* [Fix for #12745] Handle booleans in filter editor {pull}13406[#13406]
|
||||
* [Fix for #12692] Re-enable filter editor suggestions {pull}13376[#13376]
|
||||
* Remove simple_query_string hack now that multi_match supports * properly {pull}13285[#13285]
|
||||
* Add documentation link to query bar when Kuery is selected {pull}13300[#13300]
|
||||
* [Fix for #12639] Make filter pills keyboard accessible {pull}13331[#13331]
|
||||
* [Fix for #12640] Make 'all filters' actions keyboard accessible {pull}13391[#13391]
|
||||
* [Fix for #12416] Fix fixed-scroll on Discover page {pull}13516[#13516]
|
||||
* [Fix for #12955] Improves dark theme support in the filter editor {pull}13522[#13522]
|
||||
* [Fix for #11830] Disable creation of "exists" filters for scripted fields {pull}13538[#13538]
|
||||
* [Fix for #13080] Fix blank index pattern selector in Discover {pull}13715[#13715]
|
||||
* Fix relative z-index of spy panel and filter editor {pull}13717[#13717]
|
||||
Management::
|
||||
* [Fix for #12861, #12862, #12863, #12865, #12868, #12870, #11526] [Management] Improve accessibility within management {pull}13364[#13364]
|
||||
* [Fix for #12864] [Management] Accessibility - continued {pull}13576[#13576]
|
||||
* [Fix for #13542] [Management] Fix breaking scope changes in the field format editor samples {pull}13549[#13549]
|
||||
* [Fix for #12872] Adds getAriaName function and applies it to advanced settings {pull}13448[#13448]
|
||||
* [Fix for #13072] Prevents default index pattern name when ID is provided {pull}13353[#13353]
|
||||
* [Fix for #13654] Changes verbage for opening an existing pattern {pull}13697[#13697]
|
||||
Operations::
|
||||
* Remove `@elastic` folder from `packages/` {pull}13089[#13089]
|
||||
Dev Tools::
|
||||
* [Fix for #10504] [console] Replace text/plain fallback with application/json {pull}12294[#12294]
|
||||
* [Fix for #10677] Keep top line in view when resizing Console to avoid losing user context {pull}13695[#13695]
|
||||
Sharing::
|
||||
* remove inline awaits {pull}13043[#13043]
|
||||
* Stabilize and bring back flaky tests {pull}13034[#13034]
|
||||
* [Fix for #12484, #12485, #12483] Fix accessibility issues with saved object finder {pull}13152[#13152]
|
||||
* [Fix for #12987] Children of buttons won't capture hover events in firefox {pull}13015[#13015]
|
||||
Platform::
|
||||
* [Fix for #12933] [chrome/nav/lastUrl] do not track redirect routes {pull}13432[#13432]
|
||||
- When you navigate to a URL that Kibana doesn't recognize it tries to be helpful and send you to discover. At the same time it tries to remember the URL you were last using in each app and bring back where you left off when you come back. Unfortunately, these two features recently collided. If you somehow ended up at an unknown URL that looked like the URL for an app other than discover Kibana would get confused and remember the bad URL and immediately redirect you to discover. If you didn't give up right away you would probably try to go back to the app, but since it Kibana is trying to be helpful it would send you right back to the bad URL and then back to discover... Stupid right?! Well, it won't happen anymore!
|
||||
Visualization::
|
||||
* Fixes #12685 - Improve error handling for TSVB {pull}12688[#12688]
|
||||
* [Fix for #13246] Fixes #13246 - Add checks for empty annotations {pull}13422[#13422]
|
||||
* [Fix for #12866] Use devicePixelRatio to scale up and down canvas values in TSVB for Tooltip {pull}13565[#13565]
|
||||
* [Fix for #13010] Fixes #13010 - Add dateFormat config to TSVB Visualizations {pull}13626[#13626]
|
||||
* [Fix for #13625] Map filter not set appropriately when spy panel is open {pull}13678[#13678]
|
||||
* don't hide metric if show labels is false {pull}13637[#13637]
|
||||
- goal/gauge show labels option should only hide the labels not the metric value
|
||||
* [Fix for #13156] fixing disabling aggregations {pull}13686[#13686]
|
||||
- Disabled aggregations are no longer removed on applying visualization configuration.
|
||||
* [Fix for #13546] custom value axis title should not be overiden {pull}13639[#13639]
|
||||
* Visualization accessibility issues {pull}13226[#13226]
|
||||
* [Fix for #12896, #12897, #12898, #12899] Visualize Accessibility Issues {pull}13428[#13428]
|
||||
* [Fix for #13267, #13517] fix available metric aggs {pull}13518[#13518]
|
||||
* [Fix for #12491, #12904, #12887] Improve accessibility of visualizations {pull}13507[#13507]
|
||||
* [Fix for #11856, #12888, #12900] Improve accessibility of visualization view {pull}13726[#13726]
|
||||
* Fix a bug with the interval label for TSVB {pull}13440[#13440]
|
||||
* [Fix for #12113] Fixes #12113 - Add timezone to date histogram aggregations for TSVB {pull}13378[#13378]
|
||||
* [Fix for #13471] Closes #13471 - Change split behavior of gauges and metrics vis {pull}13583[#13583]
|
||||
* [Fix for #13244] [visualize spy] Pull index title instead of id {pull}13254[#13254]
|
||||
* [Fix for #11586] Use ui-select for agg selector {pull}13292[#13292]
|
||||
* [Fix for #13227] Send map filters through $newFilters so they get picked up by both kuery and lucene {pull}13251[#13251]
|
||||
* [Fix for #12227] Fix discover sidebar Visualize button for geo_point fields {pull}13539[#13539]
|
||||
* [Fix for #12827] removes :filters from label {pull}12962[#12962]
|
||||
* [Fix for #12983] resize was not detected correctly {pull}13239[#13239]
|
||||
* Clamp the centroid to stay within the box boundaries {pull}13581[#13581]
|
||||
* [Fix for #13551] fix heatmap sizing on dashboard {pull}13636[#13636]
|
||||
* ensure editor mode propagates correctly {pull}13355[#13355]
|
||||
* [Fix for #13517] remove geo_bounds agg from visualizations {pull}13536[#13536]
|
||||
* [Fix for #13424] Exclude filter agg from visualizations {pull}13680[#13680]
|
||||
* [Fix for #13572] Show a warning for non accessible charts for screen readers {pull}13573[#13573]
|
|
@ -1,235 +0,0 @@
|
|||
[[release-notes-6.0.0-rc1]]
|
||||
== 6.0.0-rc1 Release Notes
|
||||
|
||||
Also see <<breaking-changes-6.0>>.
|
||||
|
||||
|
||||
[float]
|
||||
[[enhancement-6.0.0-rc1]]
|
||||
=== Enhancements
|
||||
Design::
|
||||
* [UI Framework] Reactify menu {pull}12135[#12135]
|
||||
* [UI Framework] reactify prompt for items {pull}12151[#12151]
|
||||
* [UI Framework] Allow custom placeholder for Tool Bar Search Box {pull}12959[#12959]
|
||||
* Palette swap for accessibility / kibana 6 {pull}12085[#12085]
|
||||
- We re-skinned a decent portion of Kibana to be mostly AA accessibility compatible in regards to coloring of major navigation elements.
|
||||
Discover::
|
||||
* [Fixes #4785] Timepicker on the right {pull}11980[#11980]
|
||||
* [Fixes #12635] Improve the accessibility of the Discover screen {pull}12681[#12681]
|
||||
* [Fixes #12343] Remove custom keyboard navigation in datepicker {pull}13644[#13644]
|
||||
Management::
|
||||
* [Management] Provide a way to fetch indices and template index patterns {pull}12200[#12200]
|
||||
* [Management] More universal solution for fetching indices and aliases {pull}12405[#12405]
|
||||
* [Fixes #11526, #8225] Move build info from management section to status page {pull}13341[#13341]
|
||||
Operations::
|
||||
* [eslint] Ignore ui_framework/doc_site/build {pull}12400[#12400]
|
||||
* [git] ignore extra files in the root config/ directory {pull}9296[#9296]
|
||||
* upgrade makelogs {pull}9295[#9295]
|
||||
* [Fixes #9436] [optimizer] remove support for .jsx extension {pull}12712[#12712]
|
||||
* [status] 15m load average should use the 3rd index {pull}11202[#11202]
|
||||
* Sets ES mapping to single_type=false {pull}11451[#11451]
|
||||
Platform::
|
||||
* [Fixes #10863] [uiSettings] support defining settings with uiExports {pull}12250[#12250]
|
||||
- - define a uiExports.uiSettingDefaults key your plugin definition to add uiSettingDefaults - uiSettingDefaults must be unique. If a key is already defined elsewhere then the server will not start. - defined settings will display in the advanced settings editor, along with the intended default value and description - the REST API is identical to before - the browser API is identical to before - defaults for timelion have been extracted to the timelion plugin definition and the existing defaults are defined in the kibana plugin definition
|
||||
* [Fixes #12012] Refactor commaList filter logic into common util {pull}12553[#12553]
|
||||
* [kbnServer/extensions] formalize request factories with helper {pull}12697[#12697]
|
||||
* Allow plugins to turn off the “link to last URL” navigation helper {pull}13044[#13044]
|
||||
Sharing::
|
||||
* Add new react color picker to ui framework with tests {pull}12245[#12245]
|
||||
* Reactify stateless table components {pull}12349[#12349]
|
||||
Visualization::
|
||||
* [Fixes #11193] hide current time marker when the timespan doesn't include the current time {pull}12266[#12266]
|
||||
- Only display current time marker on a visualization when the x-axis extent includes the current time.
|
||||
* add font size control to markdown visualization {pull}12860[#12860]
|
||||
* [vis/resizeChecker] swap out implemenation with ResizeObserver polyfill {pull}9439[#9439]
|
||||
* Add imports for SavedObjectRegistryProvider.register, fixing Timelion {pull}12844[#12844]
|
||||
* [Fixes #7572] add polygon drawing tool {pull}11578[#11578]
|
||||
- On a coordinate map, users can now make a selection on the map by drawing a freehand polygon. Just like the earlier boundary selection, this adds a boundary filter to the filter bar.
|
||||
* [Fixes #12491, #12904, #12887] Improve accessibility of visualizations {pull}13507[#13507]
|
||||
* [Fixes #11856, #12888, #12900] Improve accessibility of visualization view {pull}13726[#13726]
|
||||
|
||||
[float]
|
||||
[[bug-6.0.0-rc1]]
|
||||
=== Bug fixes
|
||||
Dev Tools::
|
||||
* [Fixes #10504] [console] Replace text/plain fallback with application/json {pull}12294[#12294]
|
||||
* [Fixes #13142] Allow console to send multiline strings with CRLF line endings {pull}14094[#14094]
|
||||
- Console will now allow sending multiline strings on Windows.
|
||||
Discover::
|
||||
* [Fixes #12970] Make 'time picker' button in Discover no results prompt keyboard and screen-reader accessible. {pull}13046[#13046]
|
||||
Management::
|
||||
* [Fixes #9352] Change mapping of index-pattern fields to text {pull}9353[#9353]
|
||||
Operations::
|
||||
* [es archiver] fix error causes when requesting multiple index feature… {pull}12473[#12473]
|
||||
* Bump makelogs to 4.0.2 {pull}13007[#13007]
|
||||
Other::
|
||||
* Limit scripted fields to painless and expression langs {pull}9172[#9172]
|
||||
* [6.0] update spy table headers when columns update {pull}13225[#13225]
|
||||
Platform::
|
||||
* [Fixes #12047] [uiSettings] make service request based {pull}12243[#12243]
|
||||
- - removes server.uiSettings() (throws error with instructions) - Adds request.getUiSettingsService() which returns a unique instance of UiSettingsService per request - Methods on UiSettingsService no longer require a request object - Adds server.uiSettingsServiceFactory(options) which can be used to create an instance of UiSettingsService with a custom callCluster() function
|
||||
Sharing::
|
||||
* [Fixes #13421] Dashboard dark-theme fixes {pull}13690[#13690]
|
||||
* [Fixes #12987] Children of buttons won't capture hover events in firefox {pull}13015[#13015]
|
||||
* [Fixes #12233] Be case insensitive when sorting on the visualize and dashboard landing pages {pull}13397[#13397]
|
||||
Visualization::
|
||||
* [Fixes #13010] Fixes #13010 - Add dateFormat config to TSVB Visualizations {pull}13626[#13626]
|
||||
* [Fixes #3173] Date histogram brush - add range filter when field is not index pattern time field. {pull}12286[#12286]
|
||||
* date_histogram: some bars are too big {pull}13068[#13068]
|
||||
* [Fixes #13625] Map filter not set appropriately when spy panel is open {pull}13678[#13678]
|
||||
* [Fixes #12782] visualize should send ready:vis event when done {pull}12796[#12796]
|
||||
* [Fixes #12811] reload visualization on auto refresh trigger {pull}12823[#12823]
|
||||
* [Fixes #12882] changing query should update url state {pull}12912[#12912]
|
||||
* vis with saved search should not show query and filter panels {pull}12911[#12911]
|
||||
* [Fixes #12925] analyze wildcard should not be part of default query {pull}12938[#12938]
|
||||
* [Fixes #12940] query queue should be cleared on failure {pull}12942[#12942]
|
||||
* Handle date histogram scaling for table vis and avg_buckets metric {pull}11929[#11929]
|
||||
* [Fixes #13156] fixing disabling aggregations {pull}13686[#13686]
|
||||
- Disabled aggregations are no longer removed on applying visualization configuration.
|
||||
* [Fixes #11414] remove default WMS settings {pull}11573[#11573]
|
||||
* [Fixes #12497] allows to order percentiles freely {pull}12498[#12498]
|
||||
* reload on global fetch event and emit vis:ready {pull}12805[#12805]
|
||||
* Visualization accessibility issues {pull}13226[#13226]
|
||||
* [Fixes #12896, #12897, #12898, #12899] Visualize Accessibility Issues {pull}13428[#13428]
|
||||
|
||||
[float]
|
||||
[[roadmap-6.0.0-rc1]]
|
||||
=== Roadmap
|
||||
Operations::
|
||||
* [Fixes #9276] Update mappings for kibana index {pull}9280[#9280]
|
||||
* Use single ES document type {pull}12794[#12794]
|
||||
- Starting in Elasticsearch 6.0, you are no longer able to create new indices with multiple index types. To accomplish the same effect as index types, a new type field was added to identify the document and the value mapped under the index to allow for strict mapping.
|
||||
|
||||
[float]
|
||||
[[breaking-6.0.0-rc1]]
|
||||
=== Breaking Changes
|
||||
Management::
|
||||
* [indexPatterns] remove support for time patterns {pull}12158[#12158]
|
||||
- - Removes ability to create index patterns based on time patterns/intervals - Adds a warning that informs users when they are using an index pattern that is now unsupported (disabled by default until #10442 is done, #12322) - Does not address editing/remapping index patterns, see last task in #12242
|
||||
Operations::
|
||||
* Updates to status API, re-align status page {pull}10180[#10180]
|
||||
* [Fixes #10181] Revert same port http -> https redirect {pull}10930[#10930]
|
||||
- Kibana 5.x redirected requests from http to https on the same port if TLS was configured. Starting in Kibana 6.0.0 Kibana no longer redirects basic http traffic to https.
|
||||
Other::
|
||||
* [Fixes #13096] Remove highlight query {pull}13231[#13231]
|
||||
Platform::
|
||||
* [Fixes #12012] Fail to start if settings include unknown keys {pull}12554[#12554]
|
||||
- When a config file includes invalid keys or values, Kibana usually logs a message describing the issue and fails to start. There has been an exception to this rule since 4.2 that allowed top-level keys to be unknown/misspelled and only caused a warning to be logged. That exception has been removed and now any unknown or misspelled config key passed to Kibana (via the config file or command line flags) will prevent it from starting.
|
||||
Visualization::
|
||||
* [Fixes #10907] allows more flexible timelion queries {pull}10961[#10961]
|
||||
|
||||
[float]
|
||||
[[other-6.0.0-rc1]]
|
||||
=== Other
|
||||
Design::
|
||||
* #12656 Fixes Aria-Hidden without value {pull}12658[#12658]
|
||||
* [Fixes #12634] Improve date picker accessibility {pull}12676[#12676]
|
||||
Discover::
|
||||
* [Fixes #12692] Re-enable filter editor suggestions {pull}13376[#13376]
|
||||
* [Fixes #13738] Fix "is one of" filter editor {pull}13771[#13771]
|
||||
* Fix filter editor test {pull}13971[#13971]
|
||||
* Remove simple_query_string hack now that multi_match supports * properly {pull}13285[#13285]
|
||||
* Add documentation link to query bar when Kuery is selected {pull}13300[#13300]
|
||||
* [Fixes #12639] Make filter pills keyboard accessible {pull}13331[#13331]
|
||||
* [Fixes #12640] Make 'all filters' actions keyboard accessible {pull}13391[#13391]
|
||||
* [Fixes #11830] Disable creation of "exists" filters for scripted fields {pull}13538[#13538]
|
||||
* Fix relative z-index of spy panel and filter editor {pull}13717[#13717]
|
||||
* [Fixes #5164] Check sort:options for Discover default sort order {pull}13708[#13708]
|
||||
* [Fixes #13075] Improve missing index pattern error message {pull}13915[#13915]
|
||||
Management::
|
||||
* Remove premature abstraction {pull}13042[#13042]
|
||||
* [Fixes #12861, #12862, #12863, #12865, #12868, #12870, #11526] [Management] Improve accessibility within management {pull}13364[#13364]
|
||||
* [Fixes #12864] [Management] Accessibility - continued {pull}13576[#13576]
|
||||
* [Fixes #13542] [Management] Fix breaking scope changes in the field format editor samples {pull}13549[#13549]
|
||||
* fix create_index_pattern_method to handle no timefields {pull}13852[#13852]
|
||||
* Work around #11959 for now {pull}12051[#12051]
|
||||
Operations::
|
||||
* Removing mapper.dynamic setting from the esArchiver mappings {pull}13970[#13970]
|
||||
* Add linting rules for formatting JSX. {pull}12810[#12810]
|
||||
* Upgrade eslint config to 0.8.1. {pull}13128[#13128]
|
||||
* Move eslint-config-kibana into core {pull}12725[#12725]
|
||||
* Remove `@elastic` folder from `packages/` {pull}13089[#13089]
|
||||
* [npm] Upgrade wreck {pull}13849[#13849]
|
||||
Other::
|
||||
* Add comments and inline docs for visualization saving and editing process. {pull}8208[#8208]
|
||||
* Revert "Make searching saved objects more powerful with query_string (#9870)" {pull}10239[#10239]
|
||||
* [Tests] Adjust makelog mappings and associated tests {pull}13014[#13014]
|
||||
* misspelling substituting to subtituting in CONTRIBUTING.md {pull}8730[#8730]
|
||||
* [Fixes #9763] [test fixtures] string -> text/keyword for logstash data {pull}9799[#9799]
|
||||
* [functional tests] Remove include_in_all {pull}10268[#10268]
|
||||
* [Fixes #8861] Port #8880 to master Support Cloud testing {pull}8915[#8915]
|
||||
* [Fixes #13743] Refetch even when the query has not changed {pull}13759[#13759]
|
||||
* Update 6.0 breaking changes docs to match 5.0 structure {pull}8800[#8800]
|
||||
* fixing linting issue which blocks CI {pull}9480[#9480]
|
||||
* Testbed for aiding development in Kibana {pull}11571[#11571]
|
||||
* [Pagination buttons] Adding test subjects to enable functional testing {pull}13925[#13925]
|
||||
* [esvm] bump, remove outdated config {pull}12043[#12043]
|
||||
* upgrade @elastic/eslint-import-resolver-kibana {pull}12296[#12296]
|
||||
* [server] remove unused module {pull}12694[#12694]
|
||||
* Updates esArchiver mappings to use single type {pull}13107[#13107]
|
||||
* [esTestConfig] fix esvm directory {pull}13190[#13190]
|
||||
* Add some testSubject helpers {pull}13305[#13305]
|
||||
* [ui/queryBar/tests] attach $elem to DOM so "click" triggers "submit" {pull}13544[#13544]
|
||||
* [savedObjectClient] decorate non-es errors too {pull}13596[#13596]
|
||||
* [visualize] Fix agg param race {pull}13429[#13429]
|
||||
* [Fixes #13439] Upgrade Angular to 1.6.5 {pull}13543[#13543]
|
||||
* [aggTypes/paramTypes] naming cleanup {pull}14020[#14020]
|
||||
* [uiFramework] fix webpack config {pull}14067[#14067]
|
||||
* [Fixes #13936] Fix flaky tilemap tests {pull}13942[#13942]
|
||||
* fix wrapped retry error. {pull}13967[#13967]
|
||||
* Allow custom timeouts on click {pull}14042[#14042]
|
||||
* Make breadcrumb a heading for screen readers, fix #12885 {pull}13734[#13734]
|
||||
* Remove Stats API {pull}13896[#13896]
|
||||
* Revert Stats API for 6.0 {pull}13969[#13969]
|
||||
* Fixes path to the functional test runner {pull}12651[#12651]
|
||||
* Removed _default_ from esArchiver test and updates data.json {pull}13122[#13122]
|
||||
Platform::
|
||||
* [server/indexPatterns] expose indexPatternService getter/factory {pull}13012[#13012]
|
||||
* [ftr] remove timestamp prefix, jenkins has it built in now {pull}13825[#13825]
|
||||
* [ftr/config] prevent mochaOpts and timeouts conflict {pull}14060[#14060]
|
||||
* create babel-preset and babel-register modules {pull}13973[#13973]
|
||||
* [vis/requesting] only call when actually requesting {pull}14017[#14017]
|
||||
Sharing::
|
||||
* Fix bug with Dashboard breadcrumb alignment. {pull}13580[#13580]
|
||||
* Stats API {pull}11992[#11992]
|
||||
- We introduced a new api endpoint at api/stats which displays counts of saved objects in your kibana index: {"dashboard":{"total":1},"visualization":{"total":3},"search":{"total":1},"index_pattern":{"total":1},"index":".kibana"}
|
||||
* remove inline awaits {pull}13043[#13043]
|
||||
* Stabilize and bring back flaky tests {pull}13034[#13034]
|
||||
* [Fixes #13040] Make sure no one can show the chrome if the default setting is hidden. {pull}13250[#13250]
|
||||
* [Fixes #13297] Fix full screen toggle button when panel is expanded {pull}13320[#13320]
|
||||
* [Fixes #12484, #12485, #12483] Fix accessibility issues with saved object finder {pull}13152[#13152]
|
||||
* Show full screen option even when write controls are hidden {pull}13247[#13247]
|
||||
* [Fixes #13289] Use find service instead of remote {pull}13296[#13296]
|
||||
* [Fixes #12181] Fix dark theme issues with spy toggle and spy pane {pull}13345[#13345]
|
||||
* [Fixes #13455] Avoid a wrapped retry and use exists instead of find, which will take up all the time allotted for the retry if it fails once {pull}13467[#13467]
|
||||
* [Fixes #13754] Small clean up with visualize test + extra debug log {pull}13755[#13755]
|
||||
* [Fixes #13588] Fix map updates not propagating to the dashboard {pull}13589[#13589]
|
||||
Visualization::
|
||||
* [Fixes #13713] [Accessibility] Use aria-label in TSVB React components, instead of ariaLabel. {pull}13714[#13714]
|
||||
* Duration Formatting for TSVB {pull}13337[#13337]
|
||||
* [Fixes #13471] Closes #13471 - Change split behavior of gauges and metrics vis {pull}13583[#13583]
|
||||
* [TSVB] Adding check for model and visData {pull}13854[#13854]
|
||||
* Fixes a bug with PR #13854 {pull}13873[#13873]
|
||||
* [TSVB] Fix chart legend formatting in bottom position {pull}14084[#14084]
|
||||
* [Fixes #11586] Use ui-select for agg selector {pull}13292[#13292]
|
||||
* [Fixes #13227] Send map filters through $newFilters so they get picked up by both kuery and lucene {pull}13251[#13251]
|
||||
* [Fixes #12227] Fix discover sidebar Visualize button for geo_point fields {pull}13539[#13539]
|
||||
* [Fixes #12733, #12781] fixing refresh and auto refresh {pull}12752[#12752]
|
||||
* [Fixes #12836] fix spy panel on discovery page {pull}12853[#12853]
|
||||
* [Fixes #12827] removes :filters from label {pull}12962[#12962]
|
||||
* [Fixes #12983] resize was not detected correctly {pull}13239[#13239]
|
||||
* Clamp the centroid to stay within the box boundaries {pull}13581[#13581]
|
||||
* [Fixes #13551] fix heatmap sizing on dashboard {pull}13636[#13636]
|
||||
* visual builder should set vis.initialized when ready {pull}13779[#13779]
|
||||
* [Fixes #13770] updating time picker should not set vis to dirty {pull}13793[#13793]
|
||||
* editor render method should not be called if request is pending {pull}13858[#13858]
|
||||
* [6.0] fixes bad backport of #13877 {pull}14070[#14070]
|
||||
* Remove some lodash usage {pull}10746[#10746]
|
||||
* [Fixes #12759, #12761, #12763] Fix TSVB UX flow {pull}12770[#12770]
|
||||
* fixing region map click handler {pull}12790[#12790]
|
||||
* ensure editor mode propagates correctly {pull}13355[#13355]
|
||||
* [Fixes #13517] remove geo_bounds agg from visualizations {pull}13536[#13536]
|
||||
* [Fixes #13424] Exclude filter agg from visualizations {pull}13680[#13680]
|
||||
* use parentNode iso parentElement {pull}13842[#13842]
|
||||
* wrap responsehandler in angular promise {pull}14095[#14095]
|
||||
* [Fixes #13572] Show a warning for non accessible charts for screen readers {pull}13573[#13573]
|
|
@ -1,65 +0,0 @@
|
|||
[[release-notes-6.0.0-rc2]]
|
||||
== 6.0.0-rc2 Release Notes
|
||||
|
||||
Also see <<breaking-changes-6.0>>.
|
||||
|
||||
|
||||
[float]
|
||||
[[bug-6.0.0-rc2]]
|
||||
=== Bug fixes
|
||||
Design::
|
||||
* [UI Framework] Fix margin for KuiLocalTabs which are applied to typographic elements. {pull}14451[#14451]
|
||||
* [DESIGN]: Remove truncate from viz form text, remove additional wrapper {pull}14311[#14311]
|
||||
Discover::
|
||||
* [Fixes #14270] Handle strings in source mapped as numbers in filter editor {pull}14318[#14318]
|
||||
* [Fixes #7767] Fix invisible filters caused by missing index pattern {pull}14131[#14131]
|
||||
* [Fixes #14319] Loosen check for dashboard queries in filters array {pull}14338[#14338]
|
||||
Management::
|
||||
* [Fixes #14350] [Management] Fix FF quirk with max width in the import saved object modal {pull}14352[#14352]
|
||||
* [Fixes #14592] [Management] Handle saved search import better {pull}14625[#14625]
|
||||
Operations::
|
||||
* Eslint/remove last amd modules {pull}14282[#14282]
|
||||
* Add (GPL-2.0 OR MIT) license as allowed {pull}14439[#14439]
|
||||
* [Fixes #14468] Fix crash when hitting shift+return in console {pull}14478[#14478]
|
||||
Platform::
|
||||
* [Fixes #14255] Use Boom.boomify instead of deprecated Boom.wrap {pull}14325[#14325]
|
||||
* [Fixes #14497] Import Babel polyfill when running Jest tests {pull}14508[#14508]
|
||||
Sharing::
|
||||
* Set pie chart border to match background in dark mode {pull}14375[#14375]
|
||||
* [Fixes #14462] Prevent event handlers from being triggered after they are "off"ed {pull}14463[#14463]
|
||||
Visualization::
|
||||
* [Fixes #13983] Fix Timelion suggestions broken by upgrading to Angular 1.6.5 {pull}14316[#14316]
|
||||
* [TSVB] Greater Than or Equal to Interval Pattern {pull}13872[#13872]
|
||||
* [Fixes #14470] [TSVB] Fixes #14470 - Remove field restriction on cardinality agg {pull}14483[#14483]
|
||||
* [TSVB] Fix CSS Bug with Top N Values {pull}14254[#14254]
|
||||
* [Fixes #14357] Fixes #14357 - Add courier's migrateFilters to dashboard context {pull}14481[#14481]
|
||||
* [Fixes #14040, #13997] Show query and filter bars even when there's a linked search {pull}14212[#14212]
|
||||
* [Fixes #13287] adds stroke back to area charts {pull}14149[#14149]
|
||||
* [Fixes #13193] fixes legend refreshing {pull}14150[#14150]
|
||||
* [Fixes #13252] fixes error when expanding gauge to full screen {pull}14114[#14114]
|
||||
* pie chart design guidelines {pull}13661[#13661]
|
||||
* [Fixes #14028] removing check for vis type on saved visualizations {pull}14093[#14093]
|
||||
* [Fixes #10543] fixing ordering of series in legend {pull}14113[#14113]
|
||||
- order of legend for series should be same as provided in the configuration.
|
||||
* [Fixes #14078] fixes console error when selecting a pipeline aggregation {pull}14148[#14148]
|
||||
* allows visualize to load saved vis {pull}14146[#14146]
|
||||
* [Fixes #13570] don't show spy panel with tsvb or timelion {pull}14090[#14090]
|
||||
* moving shouldShowSpyPanel to visualize {pull}14269[#14269]
|
||||
* refactor tagcloud to use tabify responseHandler {pull}14266[#14266]
|
||||
* some updates to visualize loader {pull}14404[#14404]
|
||||
* Visualize loader updates {pull}14528[#14528]
|
||||
* [Fixes #13705] use correct element for size {pull}14105[#14105]
|
||||
* [Fixes #12953] remove junk tests {pull}14191[#14191]
|
||||
* use tabify for regionmap {pull}14364[#14364]
|
||||
* use proper SVG APIs to readout contents {pull}14458[#14458]
|
||||
* [Fixes #13144] Fixes 13144 - Add ability to select percentiles in pipeline aggs {pull}13453[#13453]
|
||||
* [Fixes #12069] apply field formatter to tag cloud {pull}14230[#14230]
|
||||
* [Fixes #12134] add tickDecimals option to yaxis {pull}14371[#14371]
|
||||
* [Fixes #14457] Set configurable to true so AggConfig decorated properties can be deleted {pull}14569[#14569]
|
||||
* [Fixes #10236, #9053] Timelion .fit() - avoid removing values that are zero {pull}14560[#14560]
|
||||
* [Fixes #13874] Allow panning beyond dateline {pull}13955[#13955]
|
||||
- Users can now pan and zoom the map beyond the date line.
|
||||
* [TSVB] Allow negative time offsets {pull}14494[#14494]
|
||||
* [Fixes #14565] Fix tagcloud sync issues, fix #14565 {pull}14566[#14566]
|
||||
* Add tooltip to long title. {pull}14167[#14167]
|
||||
|
|
@ -1,297 +0,0 @@
|
|||
[[release-notes-6.0.0]]
|
||||
== 6.0.0 Release Notes
|
||||
|
||||
Also see <<breaking-changes-6.0>>.
|
||||
|
||||
[float]
|
||||
[[enhancement-6.0.0]]
|
||||
=== Enhancements
|
||||
Core::
|
||||
* Remove legacy pre-4.2 configurations {pull}12013[#12013]
|
||||
* NODE_ENV no longer has an impact on Kibana {pull}12010[#12010]
|
||||
* Only support 64 bit operating systems {pull}11941[#11941]
|
||||
* Remove field_stats pre-flight option for index patterns {pull}12814[#12814]
|
||||
* [Fixes #13439] Upgrade Angular to 1.6.5 {pull}13543[#13543]
|
||||
Design::
|
||||
* Palette swap for accessibility / kibana 6 {pull}12085[#12085]
|
||||
- We re-skinned a decent portion of Kibana to be mostly AA accessibility compatible in regards to coloring of major navigation elements.
|
||||
* [UI Framework] Reactify menu {pull}12135[#12135]
|
||||
* Adding for and id attributes to labels and form elements {pull}12215[#12215]
|
||||
* [UI Framework] Reactify kuiEvent and related CSS components (#12226) {pull}12228[#12228]
|
||||
* [UI Framework] Reactify actionItem {pull}12142[#12142]
|
||||
* [UI Framework] Reactify kuiCollapseButton {pull}12225[#12225]
|
||||
* [UI Framework] Reactify kuiFieldGroup and related CSS components {pull}12260[#12260]
|
||||
* [UI Framework] Update LocalNav examples to use tabIndex instead of tabindex, to eliminate React console warnings. {pull}12284[#12284]
|
||||
* [UI Framework] Reactify kuiCard and related CSS components {pull}12197[#12197]
|
||||
* [UI Framework] Reactify kuiBar {pull}12167[#12167]
|
||||
* [UI Framework] Reactify kuiGallery and related CSS components {pull}12277[#12277]
|
||||
* [UI Framework] Fix examples of Table component with ToolBar. {pull}12326[#12326]
|
||||
* [UI Framework] Improve Warning Button contrast {pull}12327[#12327]
|
||||
* [UI Framework] Reactify kuiHeaderBar and related CSS components {pull}12280[#12280]
|
||||
* [UI Framework] Define consistent default, small, and wide sizing for form fields, and support them within ExpressionItems. {pull}12190[#12190]
|
||||
* [UI Framework] Order UI Framework React component exports to be alphabetical {pull}12526[#12526]
|
||||
* [UI Framework] Reactify kuiTabs and related CSS components {pull}12302[#12302]
|
||||
* Replace brand-danger color with new global red color. {pull}12654[#12654]
|
||||
* Make ui-select appearance match other inputs. {pull}12652[#12652]
|
||||
* [UI Framework] remove check for ng-untouched class from formControlInvalid mixin {pull}12153[#12153]
|
||||
* [UI Framework] reactify prompt for items {pull}12151[#12151]
|
||||
* [UI Framework] Allow custom placeholder for Tool Bar Search Box {pull}12959[#12959]
|
||||
* [UI Framework] Add new react color picker to ui framework with tests {pull}12245[#12245]
|
||||
Discover::
|
||||
* Implement new Kibana query language {pull}12624[#12624]
|
||||
- This PR adds a new experimental query language to Kibana. The new language is turned off by default but can be enabled in the Management > Advanced Settings via the search:queryLanguage:switcher:enable option. Changing this setting to true will add a language selector to the query bar that allows users to choose the new language for their query. Details of the new query language can be found in the issue description (#12282).
|
||||
* Remove highlight query {pull}13231[#13231]
|
||||
* [Fixes #12635] Improve the accessibility of the Discover screen {pull}12681[#12681]
|
||||
* [Fixes #12343] Remove custom keyboard navigation in datepicker {pull}13644[#13644]
|
||||
* Accessible sort buttons {pull}12217[#12217]
|
||||
* [Accessibility] Avoid empty th in doc-table header row {pull}12364[#12364]
|
||||
- The discover document table header cells provide appropriate hints to screen-readers.
|
||||
* [Accessibility] Add button to skip past the discover doc table {pull}12539[#12539]
|
||||
- The new "Skip to bottom"-button in Discover is invisible unless focused. When activated it displays all remaining rows that were already loaded and focuses an anchor located below the table.
|
||||
* Timepicker on the right {pull}11980[#11980]
|
||||
Management::
|
||||
* [indexPatterns] remove support for time patterns {pull}12158[#12158]
|
||||
- Removes ability to create index patterns based on time patterns/intervals - Adds a warning that informs users when they are using an index pattern that is now unsupported (disabled by default until #10442 is done, #12322) - Does not address editing/remapping index patterns, see last task in #12242
|
||||
* [Fix for #11526, #8225] Move build info from management section to status page {pull}13341[#13341]
|
||||
* [Management] Provide a way to fetch indices and template index patterns {pull}12200[#12200]
|
||||
* [Management] More universal solution for fetching indices and aliases {pull}12405[#12405]
|
||||
* Add breadcrumb-page-title to management-app {pull}12765[#12765]
|
||||
- The bread-crumbs component allows for the consumer to pass in a page-title value which is appended as the final breadcrumb in the chain. This PR adds a scope argument to the management-app to take advantage of it.
|
||||
Operations::
|
||||
* Updates to status API, re-align status page {pull}10180[#10180]
|
||||
* [Fix for #10181] Revert same port http -> https redirect {pull}10930[#10930]
|
||||
- Kibana 5.x redirected requests from http to https on the same port if TLS was configured. Starting in Kibana 6.0.0 Kibana no longer redirects basic http traffic to https.
|
||||
* Update mappings for kibana index {pull}9280[#9280]
|
||||
* Use single ES document type {pull}12794[#12794]
|
||||
- Starting in Elasticsearch 6.0, you are no longer able to create new indices with multiple index types. To accomplish the same effect as index types, a new type field was added to identify the document and the value mapped under the index to allow for strict mapping.
|
||||
* [logging] Downgrade hapi connection errors when connecting with the w… {pull}11209[#11209]
|
||||
* [status] 15m load average should use the 3rd index {pull}11202[#11202]
|
||||
* [Fixes #9436] [optimizer] remove support for .jsx extension {pull}12712[#12712]
|
||||
* Sets ES mapping to single_type=false {pull}11451[#11451]
|
||||
Platform::
|
||||
* [Fix for #12012] Fail to start if settings include unknown keys {pull}12554[#12554]
|
||||
- When a config file includes invalid keys or values, Kibana usually logs a message describing the issue and fails to start. There has been an exception to this rule since 4.2 that allowed top-level keys to be unknown/misspelled and only caused a warning to be logged. That exception has been removed and now any unknown or misspelled config key passed to Kibana (via the config file or command line flags) will prevent it from starting.
|
||||
* Remove the es_admin proxy {pull}13000[#13000]
|
||||
* Restrict ES data proxy to msearch and search {pull}13020[#13020]
|
||||
* [server/indexPatterns] expose indexPatternService getter/factory {pull}13012[#13012]
|
||||
* Remove client-side management of Kibana index mappings {pull}12820[#12820]
|
||||
* Uses uuid for auto-generated ids and prepends type (#12834) {pull}12877[#12877]
|
||||
* [uiSettings] support defining settings with uiExports {pull}12250[#12250]
|
||||
- define a uiExports.uiSettingDefaults key your plugin definition to add uiSettingDefaults - uiSettingDefaults must be unique. If a key is already defined elsewhere then the server will not start. - defined settings will display in the advanced settings editor, along with the intended default value and description - the REST API is identical to before - the browser API is identical to before - defaults for timelion have been extracted to the timelion plugin definition and the existing defaults are defined in the kibana plugin definition
|
||||
* Refactor commaList filter logic into common util {pull}12553[#12553]
|
||||
* [kbnServer/extensions] formalize request factories with helper {pull}12697[#12697]
|
||||
* Allow plugins to turn off the "link to last URL" navigation helper {pull}13044[#13044]
|
||||
Sharing::
|
||||
* Add label and clear link to color picker {pull}12422[#12422]
|
||||
* Expose the variables for dynamically building doc links {pull}12513[#12513]
|
||||
* Reactify stateless table components {pull}12349[#12349]
|
||||
* Full screen mode implementation for dashboard {pull}12265[#12265]
|
||||
- You can now enter full screen mode when viewing a dashboard. This hides the Chrome and the top nav bar. If you have any filters applied, you'll see the filter bar, otherwise that will be hidden as well. To exit full screen mode, hover over and click the Kibana button on the lower left side of the page, or simple press the ESC key.
|
||||
Visualize::
|
||||
* Visualize Refactor {pull}11786[#11786]
|
||||
- When creating new visualizations, developers are no longer restricted to using just Angular as a rendering technology. The changes now also enables developers to create custom editors that do not conform to the current sidebar-layout. Commonly used functionality - such as access to the query bar or timefilter - is now also exposed on the visualization object. This avoids the need to import individual modules from inside Kibana. These changes are a first step in a longer term effort to provide a robust long-lived programming interface for building visualizations in Kibana.
|
||||
* Replace "marked" with "markdown-it" {pull}13623[#13623]
|
||||
* Upgrade kibana to leaflet 1.x {pull}12367[#12367]
|
||||
* Duration Formatting for TSVB {pull}13337[#13337]
|
||||
* allows more flexible timelion queries {pull}10961[#10961]
|
||||
* Support multiline Timelion queries {pull}11972[#11972]
|
||||
* Fix ui-select error border color and placeholder font color. {pull}12411[#12411]
|
||||
* Fix appearance of error indicator in Visualize sidebar. {pull}12410[#12410]
|
||||
* [Fix for #11193] hide current time marker when the timespan doesn't include the current time {pull}12266[#12266]
|
||||
- Only display current time marker on a visualization when the x-axis extent includes the current time.
|
||||
* [Fix for #7040] Add github-markdown.css to markdown visualization {pull}12377[#12377]
|
||||
* Filter geohash_grid aggregation to map view box with collar {pull}12806[#12806]
|
||||
* add font size control to markdown visualization {pull}12860[#12860]
|
||||
* [vis/resizeChecker] swap out implemenation with ResizeObserver polyfill {pull}9439[#9439]
|
||||
* Add imports for SavedObjectRegistryProvider.register, fixing Timelion {pull}12844[#12844]
|
||||
* [Fix for #7572] add polygon drawing tool {pull}11578[#11578]
|
||||
- On a coordinate map, users can now make a selection on the map by drawing a freehand polygon. Just like the earlier boundary selection, this adds a boundary filter to the filter bar.
|
||||
* [Fixes #12491, #12904, #12887] Improve accessibility of visualizations {pull}13507[#13507]
|
||||
* [Fixes #11856, #12888, #12900] Improve accessibility of visualization view {pull}13726[#13726]
|
||||
|
||||
|
||||
[float]
|
||||
[[bug-6.0.0]]
|
||||
=== Bug fixes
|
||||
Core::
|
||||
* update logstash data and mappings for single type {pull}13001[#13001]
|
||||
Design::
|
||||
* #12656 Fixes Aria-Hidden without value {pull}12658[#12658]
|
||||
* [UI Framework] Fix disappearing borders for LocalNav search select. {pull}12803[#12803]
|
||||
* Make breadcrumb a heading for screen readers, fix #12885 {pull}13734[#13734]
|
||||
* [Fixes #12634] Improve date picker accessibility {pull}12676[#12676]
|
||||
* [UI Framework] Fix margin for KuiLocalTabs which are applied to typographic elements. {pull}14451[#14451]
|
||||
* Remove truncate from viz form text, remove additional wrapper {pull}14311[#14311]
|
||||
Dev Tools::
|
||||
* [Fix for #10504] [console] Replace text/plain fallback with application/json {pull}12294[#12294]
|
||||
* [Fixes #13142] Allow console to send multiline strings with CRLF line endings {pull}14094[#14094]
|
||||
- Console will now allow sending multiline strings on Windows.
|
||||
Discover::
|
||||
* Remove simple_query_string hack now that multi_match supports * properly {pull}13285[#13285]
|
||||
* Add documentation link to query bar when Kuery is selected {pull}13300[#13300]
|
||||
* [Fixes #12970] Make 'time picker' button in Discover no results prompt keyboard and screen-reader accessible. {pull}13046[#13046]
|
||||
* [Fixes #12692] Re-enable filter editor suggestions {pull}13376[#13376]
|
||||
* [Fixes #13738] Fix 'is one of' filter editor {pull}13771[#13771]
|
||||
* [Fixes #12639] Make filter pills keyboard accessible {pull}13331[#13331]
|
||||
* [Fixes #12640] Make 'all filters' actions keyboard accessible {pull}13391[#13391]
|
||||
* [Fixes #11830] Disable creation of 'exists' filters for scripted fields {pull}13538[#13538]
|
||||
* Fix relative z-index of spy panel and filter editor {pull}13717[#13717]
|
||||
* [Fixes #5164] Check sort:options for Discover default sort order {pull}13708[#13708]
|
||||
* [Fixes #13075] Improve missing index pattern error message {pull}13915[#13915]
|
||||
* [Fixes #13743] Refetch even when the query has not changed {pull}13759[#13759]
|
||||
* [Fixes #14270] Handle strings in source mapped as numbers in filter editor {pull}14318[#14318]
|
||||
* [Fixes #7767] Fix invisible filters caused by missing index pattern {pull}14131[#14131]
|
||||
* [Fixes #14319] Loosen check for dashboard queries in filters array {pull}14338[#14338]
|
||||
Management::
|
||||
* Limit scripted fields to painless and expression langs {pull}9172[#9172]
|
||||
* [Fix for #12249] Fixes issue #12249 {pull}12254[#12254]
|
||||
* Refine getIndices() to return an empty array if there are no matching indices. {pull}12659[#12659]
|
||||
* [Fix for #9352] Change mapping of index-pattern fields to text {pull}9353[#9353]
|
||||
* [Fix for #12861, #12862, #12863, #12865, #12868, #12870, #11526] [Management] Improve accessibility within management {pull}13364[#13364]
|
||||
* [Fix for #12864] [Management] Accessibility - continued {pull}13576[#13576]
|
||||
* [Fix for #13542] [Management] Fix breaking scope changes in the field format editor samples {pull}13549[#13549]
|
||||
* [Fix for #12872] Adds getAriaName function and applies it to advanced settings {pull}13448[#13448]
|
||||
* Remove premature abstraction {pull}13042[#13042]
|
||||
* fix create_index_pattern_method to handle no timefields {pull}13852[#13852]
|
||||
* Work around #11959 for now {pull}12051[#12051]
|
||||
* [Fixes #14350] [Management] Fix FF quirk with max width in the import saved object modal {pull}14352[#14352]
|
||||
Operations::
|
||||
* Use es6 exports, replace module.exports {pull}12084[#12084]
|
||||
* Removing mapper.dynamic setting from the esArchiver mappings {pull}13970[#13970]
|
||||
* Add linting rules for formatting JSX. {pull}12810[#12810]
|
||||
* Upgrade eslint config to 0.8.1. {pull}13128[#13128]
|
||||
* Move eslint-config-kibana into core {pull}12725[#12725]
|
||||
* [npm] Upgrade wreck {pull}13849[#13849]
|
||||
* Eslint/remove last amd modules {pull}14282[#14282]
|
||||
Platform::
|
||||
* Update HTML style guide with rule for camel casing attribute values. {pull}11653[#11653]
|
||||
* Add title and tooltip accessibility information to HTML style guide. {pull}11655[#11655]
|
||||
* [Fix for #12580] Update HTML style guide with rule about putting nested elements on multiple lines. {pull}12812[#12812]
|
||||
* [Fix for #12047] [uiSettings] make service request based {pull}12243[#12243]
|
||||
- removes server.uiSettings() (throws error with instructions) - Adds request.getUiSettingsService() which returns a unique instance of UiSettingsService per request - Methods on UiSettingsService no longer require a request object - Adds server.uiSettingsServiceFactory(options) which can be used to create an instance of UiSettingsService with a custom callCluster() function
|
||||
* [Fix for #12436] Fix stats permissions and use underscore instead of dash {pull}12478[#12478]
|
||||
* [ftr] remove timestamp prefix, jenkins has it built in now {pull}13825[#13825]
|
||||
* [ftr/config] prevent mochaOpts and timeouts conflict {pull}14060[#14060]
|
||||
* create babel-preset and babel-register modules {pull}13973[#13973]
|
||||
* [vis/requesting] only call when actually requesting {pull}14017[#14017]
|
||||
* [Fixes #14255] Use Boom.boomify instead of deprecated Boom.wrap {pull}14325[#14325]
|
||||
* [Fixes #14497] Import Babel polyfill when running Jest tests {pull}14508[#14508]
|
||||
Sharing::
|
||||
* Restoring the dashboard-grid padding to appease Gridster {pull}12613[#12613]
|
||||
* [Fix for #11857] Accessibility: Sharing UI - associate labels with controls {pull}12143[#12143]
|
||||
* [Fix for #11860] Make add edit buttons accessible {pull}12320[#12320]
|
||||
* Need to trigger renderComplete when there are no results {pull}12380[#12380]
|
||||
* remove inline awaits {pull}13043[#13043]
|
||||
* Stabilize and bring back flaky tests {pull}13034[#13034]
|
||||
* [Fix for #12484, #12485, #12483] Fix accessibility issues with saved object finder {pull}13152[#13152]
|
||||
* [Fix for #12987] Children of buttons won't capture hover events in firefox {pull}13015[#13015]
|
||||
* [Fixes #13421] Dashboard dark-theme fixes {pull}13690[#13690]
|
||||
* [Fixes #12233] Be case insensitive when sorting on the visualize and dashboard landing pages {pull}13397[#13397]
|
||||
* Fix bug with Dashboard breadcrumb alignment. {pull}13580[#13580]
|
||||
* [Fixes #13040] Make sure no one can show the chrome if the default setting is hidden. {pull}13250[#13250]
|
||||
* [Fixes #13297] Fix full screen toggle button when panel is expanded {pull}13320[#13320]
|
||||
* Show full screen option even when write controls are hidden {pull}13247[#13247]
|
||||
* [Fixes #13289] Use find service instead of remote {pull}13296[#13296]
|
||||
* [Fixes #13754] Small clean up with visualize test + extra debug log {pull}13755[#13755]
|
||||
* [Fixes #13588] Fix map updates not propagating to the dashboard {pull}13589[#13589]
|
||||
* Set pie chart border to match background in dark mode {pull}14375[#14375]
|
||||
* [Fixes #14462] Prevent event handlers from being triggered after they are "off"ed {pull}14463[#14463]
|
||||
Visualize::
|
||||
* update spy table headers when columns update {pull}13225[#13225]
|
||||
* Fixes #12757 - Fixing field fetching for index patterns for TSVB {pull}12771[#12771]
|
||||
* [Fix for #4599] Add "Sum of series in legend" option {pull}7970[#7970]
|
||||
* [Fix for #9053] [timelion/fit/carry] do nothing if there is not any data {pull}9054[#9054]
|
||||
* [Fix for #8763] [vislib/tilemap/heatmap] scale the heatmap maxZoom with map zoom {pull}8765[#8765]
|
||||
* [Fix for #9184] fixes error with custom interval in datetime aggregation {pull}9427[#9427]
|
||||
* Fix timelion's flot when neither thor nor monitoring are installed {pull}10412[#10412]
|
||||
* Fixes #12763 - Add show_grid to the default vis structure for TSVB {pull}12769[#12769]
|
||||
* Fixes #12777 - Add onBrush to Visualization component for TSVB {pull}12778[#12778]
|
||||
* [Fix for #12802, #12762] Fix TSVB Visualizations to honor darkTheme {pull}12804[#12804]
|
||||
* [Fix for #8076] Scaled date format for date histogram aggregation {pull}12384[#12384]
|
||||
- Format date_histogram aggregation bucket labels with format specified in Advanced Setting's "dateFormat:scaled"
|
||||
* [Fix for #3230] Make vertical bar chart gutter widths consistent {pull}12264[#12264]
|
||||
- Histogram intervals are not always equal widths (monthly time intervals). Keeping gutter widths consistent and reducing the bar width provides a more visually appealing bar chart.
|
||||
* [Fix for #3173] Date histogram brush - add range filter when field is not index pattern time field. {pull}12286[#12286]
|
||||
* Remove event listener for resizeChecker when directive is destroyed {pull}12734[#12734]
|
||||
* Date histogram axis label not getting updated when time interval changes {pull}12815[#12815]
|
||||
* [Fix for #12782] visualize should send ready:vis event when done {pull}12796[#12796]
|
||||
* [Fix for #12811] reload visualization on auto refresh trigger {pull}12823[#12823]
|
||||
* [Fix for #12882] changing query should update url state {pull}12912[#12912]
|
||||
* vis with saved search should not show query and filter panels {pull}12911[#12911]
|
||||
* [Fix for #12925] analyze wildcard should not be part of default query {pull}12938[#12938]
|
||||
* [Fix for #12940] query queue should be cleared on failure {pull}12942[#12942]
|
||||
* Handle date histogram scaling for table vis and avg_buckets metric {pull}11929[#11929]
|
||||
* [Fix for #11414] remove default WMS settings {pull}11573[#11573]
|
||||
* [Fix for #12497] allows to order percentiles freely {pull}12498[#12498]
|
||||
* [Fix for #12732] Should only run visualization on Discover page when the indexpattern is time based {pull}12741[#12741]
|
||||
* reload on global fetch event and emit vis:ready {pull}12805[#12805]
|
||||
* [Fix for #12919] Fix excessive redraw {pull}12931[#12931]
|
||||
* [Fix for #13181, elastic/beats#4777] Add Checks to Dashboard Context {pull}13182[#13182]
|
||||
* [Fix for #11586] Use ui-select for agg selector {pull}13292[#13292]
|
||||
* [Fix for #13227] Send map filters through $newFilters so they get picked up by both kuery and lucene {pull}13251[#13251]
|
||||
* [Fix for #12827] removes :filters from label {pull}12962[#12962]
|
||||
* [Fix for #12983] resize was not detected correctly {pull}13239[#13239]
|
||||
* [Fix for #13011] Should respect pinned filters {pull}13019[#13019]
|
||||
* Visualization accessibility issues {pull}13226[#13226]
|
||||
* Fixes #12685 - Improve error handling for TSVB {pull}12688[#12688]
|
||||
* [Fix for #13246] Fixes #13246 - Add checks for empty annotations {pull}13422[#13422]
|
||||
* [Fix for #13010] Fixes #13010 - Add dateFormat config to TSVB Visualizations {pull}13626[#13626]
|
||||
* [Fix for #13625] Map filter not set appropriately when spy panel is open {pull}13678[#13678]
|
||||
* [Fix for #13156] fixing disabling aggregations {pull}13686[#13686]
|
||||
- Disabled aggregations are no longer removed on applying visualization configuration.
|
||||
* [Fix for #12896, #12897, #12898, #12899] Visualize Accessibility Issues {pull}13428[#13428]
|
||||
* Fix a bug with the interval label for TSVB {pull}13440[#13440]
|
||||
* [Fix for #12113] Fixes #12113 - Add timezone to date histogram aggregations for TSVB {pull}13378[#13378]
|
||||
* [Fix for #13471] Closes #13471 - Change split behavior of gauges and metrics vis {pull}13583[#13583]
|
||||
* [Fix for #12227] Fix discover sidebar Visualize button for geo_point fields {pull}13539[#13539]
|
||||
* Clamp the centroid to stay within the box boundaries {pull}13581[#13581]
|
||||
* [Fix for #13551] fix heatmap sizing on dashboard {pull}13636[#13636]
|
||||
* ensure editor mode propagates correctly {pull}13355[#13355]
|
||||
* [Fix for #13517] remove geo_bounds agg from visualizations {pull}13536[#13536]
|
||||
* [Fix for #13424] Exclude filter agg from visualizations {pull}13680[#13680]
|
||||
* [Fix for #13572] Show a warning for non accessible charts for screen readers {pull}13573[#13573]
|
||||
* date_histogram: some bars are too big {pull}13068[#13068]
|
||||
* [Fixes #13713] [Accessibility] Use aria-label in TSVB React components, instead of ariaLabel. {pull}13714[#13714]
|
||||
* [TSVB] Adding check for model and visData {pull}13854[#13854]
|
||||
* Fixes a bug with PR #13854 {pull}13873[#13873]
|
||||
* [TSVB] Fix chart legend formatting in bottom position {pull}14084[#14084]
|
||||
* [Fixes #12733, #12781] fixing refresh and auto refresh {pull}12752[#12752]
|
||||
* [Fixes #12836] fix spy panel on discovery page {pull}12853[#12853]
|
||||
* visual builder should set vis.initialized when ready {pull}13779[#13779]
|
||||
* [Fixes #13770] updating time picker should not set vis to dirty {pull}13793[#13793]
|
||||
* editor render method should not be called if request is pending {pull}13858[#13858]
|
||||
* [Fixes #12759, #12761, #12763] Fix TSVB UX flow {pull}12770[#12770]
|
||||
* fixing region map click handler {pull}12790[#12790]
|
||||
* use parentNode iso parentElement {pull}13842[#13842]
|
||||
* wrap responsehandler in angular promise {pull}14095[#14095]
|
||||
* [TSVB] Greater Than or Equal to Interval Pattern {pull}13872[#13872]
|
||||
* [Fixes #14470] [TSVB] Fixes #14470 - Remove field restriction on cardinality agg {pull}14483[#14483]
|
||||
* [TSVB] Fix CSS Bug with Top N Values {pull}14254[#14254]
|
||||
* [Fixes #14357] Fixes #14357 - Add courier's migrateFilters to dashboard context {pull}14481[#14481]
|
||||
* [Fixes #14040, #13997] Show query and filter bars even when there's a linked search {pull}14212[#14212]
|
||||
* [Fixes #13287] adds stroke back to area charts {pull}14149[#14149]
|
||||
* [Fixes #13193] fixes legend refreshing {pull}14150[#14150]
|
||||
* [Fixes #13252] fixes error when expanding gauge to full screen {pull}14114[#14114]
|
||||
* pie chart design guidelines {pull}13661[#13661]
|
||||
* [Fixes #14028] removing check for vis type on saved visualizations {pull}14093[#14093]
|
||||
* [Fixes #10543] fixing ordering of series in legend {pull}14113[#14113]
|
||||
- order of legend for series should be same as provided in the configuration.
|
||||
* [Fixes #14078] fixes console error when selecting a pipeline aggregation {pull}14148[#14148]
|
||||
* allows visualize to load saved vis {pull}14146[#14146]
|
||||
* [Fixes #13570] don't show spy panel with tsvb or timelion {pull}14090[#14090]
|
||||
* moving shouldShowSpyPanel to visualize {pull}14269[#14269]
|
||||
* refactor tagcloud to use tabify responseHandler {pull}14266[#14266]
|
||||
* some updates to visualize loader {pull}14404[#14404]
|
||||
* Visualize loader updates {pull}14528[#14528]
|
||||
* [Fixes #13705] use correct element for size {pull}14105[#14105]
|
||||
* [Fixes #12953] remove junk tests {pull}14191[#14191]
|
||||
* use tabify for regionmap {pull}14364[#14364]
|
||||
* [Fixes #13144] Fixes 13144 - Add ability to select percentiles in pipeline aggs {pull}13453[#13453]
|
||||
* [Fixes #12069] apply field formatter to tag cloud {pull}14230[#14230]
|
||||
* [Fixes #12134] add tickDecimals option to yaxis {pull}14371[#14371]
|
||||
* [Fixes #14457] Set configurable to true so AggConfig decorated properties can be deleted {pull}14569[#14569]
|
||||
* [Fixes #10236, #9053] Timelion .fit() - avoid removing values that are zero {pull}14560[#14560]
|
||||
* [Fixes #13874] Allow panning beyond dateline {pull}13955[#13955]
|
||||
- Users can now pan and zoom the map beyond the date line.
|
||||
* [TSVB] Allow negative time offsets {pull}14494[#14494]
|
||||
* [Fixes #14565] Fix tagcloud sync issues, fix #14565 {pull}14566[#14566]
|
|
@ -1,41 +0,0 @@
|
|||
[[release-notes-6.0.1]]
|
||||
== 6.0.1 Release Notes
|
||||
|
||||
Also see <<breaking-changes-6.0>>.
|
||||
|
||||
[float]
|
||||
[[security-6.0.1]]
|
||||
=== Security Issues
|
||||
* Kibana cross site scripting issue (ESA-2017-22): Kibana versions prior to 6.0.1 and 5.6.5 had a cross-site scripting (XSS) vulnerability via URL fields that could allow an attacker to obtain sensitive information from or perform destructive actions on behalf of other Kibana users. CVE ID: CVE-2017-11481
|
||||
* Kibana open redirect flaw (ESA-2017-23) : The Kibana fix for CVE-2017-8451 was found to be incomplete. With X-Pack installed, Kibana versions before 6.0.1 and 5.6.5 have an open redirect vulnerability on the login page that would enable an attacker to craft a link that redirects to an arbitrary website. CVE ID: CVE-2017-11482
|
||||
|
||||
Users should upgrade to Kibana version 6.0.1 or 5.6.5. There are no known workarounds for these issues.
|
||||
|
||||
[float]
|
||||
[[bug-6.0.1]]
|
||||
=== Bug fixes
|
||||
Design::
|
||||
* [UI Framework] Fix IE11 bug which caused kuiToolBarSearch to grow too wide when there is only a single kuiToolBarSection sibling. {pull}15215[#15215]
|
||||
Discover::
|
||||
* [Fixes #14634] Don't show { match_all: {} } for migrated objects {pull}14644[#14644]
|
||||
* [Fixes #15398] Solidify context app filter test {pull}15203[#15203]
|
||||
Platform::
|
||||
* Fix fieldFormat plugins {pull}14984[#14984]
|
||||
- In 6.0.0 we accidentally included a breaking change that prevented plugins from supplying custom FieldFormatters. This has been fixed but, also changes the way that they need to be defined. Take a look at the field formatters Kibana supplies to see how you should update your custom FieldFormats.
|
||||
* Fix: exponent values in table view {pull}15309[#15309]
|
||||
* Prepend relative urls {pull}14994[#14994]
|
||||
* [eslint] add eslint dev script {pull}14889[#14889]
|
||||
* [dev/ci_setup] generalize jenkins_setup script for other CI environments {pull}15178[#15178]
|
||||
Operations::
|
||||
* Adds task to export a CSV of all dependencies {pull}15068[#15068]
|
||||
* [Logging] more tests and added robustness to log formatting {pull}15035[#15035]
|
||||
Sharing::
|
||||
* [Fixes #15333] [Timepicker] Fix alignment, consistency in error msg {pull}15343[#15343]
|
||||
* [Fixes #15336] Add parsedUrl to the code driving viz/dashboards {pull}15335[#15335]
|
||||
Visualization::
|
||||
* [Fixes #13436] allows to hide warnings in gauge {pull}15139[#15139]
|
||||
* [Fixes #14833] Fix Kibana crashing when resizing a tag cloud too small {pull}15001[#15001]
|
||||
* [Fixes #13947] uses maximum space for arc gauge and center aligns it {pull}15140[#15140]
|
||||
* [Fixes #15146] fixes the visualizeLoader error in IE {pull}15150[#15150]
|
||||
* fixing field formatters for gauge {pull}15145[#15145]
|
||||
* [Fixes #13947] fix metric align and size {pull}15141[#15141]
|
|
@ -1,128 +0,0 @@
|
|||
[[release-notes-6.1.0]]
|
||||
== 6.1.0 Release Notes
|
||||
|
||||
Also see <<breaking-changes-6.0>>.
|
||||
|
||||
|
||||
[float]
|
||||
[[enhancement-6.1.0]]
|
||||
=== Enhancements
|
||||
Design::
|
||||
* [Fixes #12889] Make saved-object-finder and paginated-selectable-list accessible {pull}13834[#13834]
|
||||
* [Fixes #12901] [UI Framework] Add KuiCodeEditor as react-ace replacement/wrapper {pull}14026[#14026]
|
||||
* [UI Framework] KuiGalleryItem automatically becomes link or button {pull}14240[#14240]
|
||||
Dev Tools::
|
||||
* [Fixes #11522] Improve Dev Tools accessibility {pull}13496[#13496]
|
||||
- Console no longer traps keyboard focus. You can quit editing with Escape.
|
||||
Discover::
|
||||
* [Fixes #12633, #12641] Improve accessibility of the discover app {pull}13498[#13498]
|
||||
* [Fixes #14456] [Accessibility] Improve filter bar accessibility {pull}14474[#14474]
|
||||
Management::
|
||||
* [Fixes #12867] "Create index pattern" wizard. {pull}13454[#13454]
|
||||
- Introducing a new wizard to create index patterns that makes index discovery and matching much easier than before.
|
||||
* [Fixes #12668] add an option for url types so that it can be opened in current tab (master branch) {pull}13209[#13209]
|
||||
* [Fixes #12869, #12873, #13803] Improve Management section accessibility {pull}14243[#14243]
|
||||
* Add rel="noopener noreferrer" to external links {pull}14440[#14440]
|
||||
Operations::
|
||||
* [Fixes #11091] Adds keystore for storing settings {pull}14714[#14714]
|
||||
* [eslint-config-kibana] Add AirBnB linting rules for React best practices. Bump to v0.10.0. {pull}13259[#13259]
|
||||
* Add updated_at timestamp to saved objects {pull}13503[#13503]
|
||||
* [Fixes #14312] [build] Clean examples from node modules {pull}14587[#14587]
|
||||
* [SavedObjects] use constructor options {pull}14200[#14200]
|
||||
* [savedObjects] wait for Kibana index on every write {pull}14202[#14202]
|
||||
* [es/clusters] improve cleanup {pull}14188[#14188]
|
||||
* Upgrade to webpack 3 {pull}14315[#14315]
|
||||
* Upgrade to eslint 4 {pull}14862[#14862]
|
||||
* Proxy support for plugin installer {pull}12753[#12753]
|
||||
- Kibana now respects the http_proxy, https_proxy and no_proxy environment variables to download plugins via a proxy.
|
||||
* [Fixes #13937] Make console history keyboard accessible {pull}13946[#13946]
|
||||
Platform::
|
||||
* [Fixes #8499] [server/logging] Allow opting out of UTC {pull}14705[#14705]
|
||||
* Improve performance of sort_prefix_first for large arrays {pull}14974[#14974]
|
||||
Sharing::
|
||||
* Add a feature for custom panel titles {pull}14831[#14831]
|
||||
- Introduces the ability to specify custom titles, or remove the title entirely, for individual dashboard panels. Just hit the reset link to restore the title to it's original value.
|
||||
* Input Control visualization {pull}13314[#13314]
|
||||
* Kibana Home page - phase one {pull}14673[#14673]
|
||||
* only show expand toggle, in view mode, on hover {pull}14706[#14706]
|
||||
* [Fixes #13948] Add new "use margins" option to add separation between panels {pull}14708[#14708]
|
||||
* Add new title query param to dashboard listing page {pull}14760[#14760]
|
||||
* [Fixes #12563] Hide all panel titles option at the dashboard level {pull}15006[#15006]
|
||||
Visualization::
|
||||
* [Fixes #1702] pie chart labels {pull}12174[#12174]
|
||||
- pie charts can now have labels on them to increase readability
|
||||
* [Fixes #13519, #13103, #13968] Improve Region Maps for use without network connection {pull}15056[#15056]
|
||||
- Improve the use of Region Maps for deployment in environments without internet access. Similar to the Coordinate Map visualization, the Region map can now use a WMS-service as a base-layer. Admins can now also setup Kibana to opt-out of connection to the Elastic Maps Service. Users can now opt-out of having the visualization display warnings.
|
||||
* Introduce lab mode for visualizations {pull}15050[#15050]
|
||||
- Newly introduced visualizations can now be part of labs-mode. Visualizations in labs-mode introduce new more cutting-edge functionality and can be subject to change across minor releases. Labs-mode can be turned off in the advanced settings. Labs-visualization will then no longer be available to the user. The Time Series Visual Builder is not part of labs-mode, it continues to be an experimental feature. The input controls are the first to be flagged as a lab visualization.
|
||||
* reverts metric visualization {pull}14052[#14052]
|
||||
- The metric visualization now no longer reuses the rendering code of the gauge and goal visualizations. This improves consistency of positioning of the metric on Dashboards.
|
||||
* [TSVB] Adding the ability to sort terms split by terms and change order {pull}14213[#14213]
|
||||
* Math Aggregation to support Sibling Aggs for TSVB {pull}13681[#13681]
|
||||
* [TSVB] Add support for Math Aggregation to tables {pull}14553[#14553]
|
||||
- This PR adds support for the Math aggregation to the new TSVB table visualization. This wasn't possible at the time of the PR because both features were separated. This also adds support for the drop last bucket feature.
|
||||
* [TSVB] Series Filter {pull}14696[#14696]
|
||||
- This PR adds the series filter feature allowing the user to create a filter per series. This allows users to user to have a group by terms along with a filter for each series.
|
||||
* [Fixes #13992] Grab the default index pattern and use it in TSVB {pull}14739[#14739]
|
||||
- TSVB now uses Kibana's default index pattern by default.
|
||||
* [TSVB] Add params._interval to mathjs {pull}14944[#14944]
|
||||
- Make the bucket interval available as a parameter.
|
||||
* Upgrade kibana to leaflet 1.x {pull}12367[#12367]
|
||||
* [Fixes #1385] relative date field formatter {pull}13921[#13921]
|
||||
* Allow visualizations to specify open editor tab {pull}13977[#13977]
|
||||
* Show the x-axis (time) value in legend when hovering over a Timelion graph {pull}14627[#14627]
|
||||
- Hovering over a Timelion graph now shows the corresponding x-axis value in the legend.
|
||||
* Timelion typeahead for argument names {pull}14657[#14657]
|
||||
* [Fixes #9022] Timelion query language support for scripted fields {pull}14700[#14700]
|
||||
* Timelion typeahead for argument values {pull}14801[#14801]
|
||||
* add API to embed visualizations {pull}14292[#14292]
|
||||
- visualize loader helps with inserting visualizations into DOM elements
|
||||
* [Fixes #11533] Improve timelion accessibility {pull}13531[#13531]
|
||||
* [Fixes #11858] Allow reordering aggregation priority by keyboard {pull}13635[#13635]
|
||||
* [Fixes #12902, #12903] Improve time series visual builder accessibility {pull}13817[#13817]
|
||||
* [Fixes #11843] [Accessibility] Improve visualization legends accessibility {pull}14505[#14505]
|
||||
- Improve the keyboard accessibility of visualization legends.
|
||||
* [Fixes #12905] [Accessibility] Refactor font slider for accessibility {pull}14817[#14817]
|
||||
* Remove ready:vis and application.load event {pull}14988[#14988]
|
||||
- Visualizations no longer send a ready:vis event to the $rootScope once they initialized. Applications don't need to emit an application.load event anymore.
|
||||
|
||||
[float]
|
||||
[[bug-6.1.0]]
|
||||
=== Bug fixes
|
||||
Design::
|
||||
* [Fixes #12247] [Accessibility] Make table pagination controls keyboard-accessible. {pull}13541[#13541]
|
||||
* [Fixes #12482] [Accessibility] Give kuiTables keyboard-accessible column headers {pull}13586[#13586]
|
||||
* [UI Framework] Reset Chrome's native styling for button border-radius {pull}14758[#14758]
|
||||
* [UI Framework] Fix spacing bug with LocalTabs. {pull}14772[#14772]
|
||||
Dev Tools::
|
||||
* [Fixes #14586] [console] Remove cluster/_nodes/stats {pull}14757[#14757]
|
||||
* [Fixes #10841, #10840, #10071, #8930, #9651, #8790] [console] assorted autocomplete fixes {pull}14770[#14770]
|
||||
Management::
|
||||
* [Fixes #12612] Create keyboard mode for ui-ace editor {pull}13339[#13339]
|
||||
- Our code editor in several places won't trap keyboard focus anymore, by using the Tab key. When navigating by keyboard, you first need to Enter editing mode in the code editor and you can leave it by pressing Escape.
|
||||
Operations::
|
||||
* Removes webpack-directory-name-as-main dependency {pull}13584[#13584]
|
||||
Platform::
|
||||
* [Fixes #15078] Courier - $state in searchSource {pull}15166[#15166]
|
||||
Sharing::
|
||||
* Refine use of aria-label in Dashboard panel and top nav, Discover, and Management 'Edit index pattern' UI. {pull}14341[#14341]
|
||||
* [Fixes #11532] [11532] Improve local nav accessibility {pull}14365[#14365]
|
||||
* Fix bug with Dashboard breadcrumb alignment. {pull}13580[#13580]
|
||||
* [Fixes #13421] Dashboard dark-theme fixes {pull}13690[#13690]
|
||||
* Set timeout and terminate_after parameters when fetching terms for Input Controls {pull}14977[#14977]
|
||||
* [Fixes #13458] Fix out of memory crash on auto refreshing dashboards {pull}13871[#13871]
|
||||
* [Fixes #9523] Fix issue where saved searches are not updated {pull}14452[#14452]
|
||||
- There has been a long standing issue where if you add a saved search to a dashboard, then go edit and save that saved search, the updates are not propagated to the dashboard. The only way, previously, to get the new changes was to remove and re-add the search from your dashboard. With this fix, that is no longer necessary. However, there is one situation when your saved search will stop updating and that is when someone has made and saved local edits to the saved search on the dashboard. For example, if you remove a column from a saved search in a dashboard panel, then save the dashboard, that search will always show that column set, even if columns are added or removed to the underlying saved search. We did it this way to still allow users to override the configuration at the dashboard level.
|
||||
Visualization::
|
||||
* Visualization resizeInit {pull}15321[#15321]
|
||||
* [Fixes #14344] Remove aria-hidden="true" from TSVB tabs and agg component to make their content screen-reader accessible. {pull}14345[#14345]
|
||||
* [TSVB] Remove console.log from Resize PR {pull}14555[#14555]
|
||||
* [TSVB] Fixes #14124 - Removes the 1w label from interval pattern {pull}14577[#14577]
|
||||
* [TSVB] Change term sorting to match Kibana Core {pull}14679[#14679]
|
||||
* [TSVB] Stacked series should not contain null values {pull}14923[#14923]
|
||||
* fix issue of duplicate TSVB flot chart creation {pull}14626[#14626]
|
||||
* Fix spatial filters when Kuery is in use {pull}14158[#14158]
|
||||
* [6.x] update spy table headers when columns update {pull}13224[#13224]
|
||||
* [Fixes #2908] Scale histogram aggregation interval to avoid crashing browser {pull}14157[#14157]
|
||||
* [Fixes #12545] [timelion] trim number of colors when there are more colors than gradient stops {pull}14906[#14906]
|
||||
|
|
@ -1,17 +0,0 @@
|
|||
[[release-notes-6.1.1]]
|
||||
== 6.1.1 Release Notes
|
||||
|
||||
Also see <<breaking-changes-6.0>>.
|
||||
|
||||
[float]
|
||||
[[bug-6.1.1]]
|
||||
=== Bug fixes
|
||||
Management::
|
||||
* Allow pasting into index pattern field using keyboard shortcut {pull}15500[#15500]
|
||||
* Typing a CCS pattern into the index pattern field no longer triggers an error {pull}15372[#15372]
|
||||
Operations::
|
||||
* Bump node.js version to 6.12.2 {pull}15612[#15612]
|
||||
* Kibana indices are no longer flagged as out-of-date just because they include `_default_` {pull}15432[#15432]
|
||||
Visualizations::
|
||||
* Disable math aggregation in Time Series Visual Builder {pull}15653[#15653]
|
||||
* Bucket paths for overall aggregations now use syntax compatible with Elasticsearch 6+ {pull}15322[#15322]
|
|
@ -1,28 +0,0 @@
|
|||
[[release-notes-6.1.2]]
|
||||
== 6.1.2 Release Notes
|
||||
|
||||
Also see <<breaking-changes-6.0>>.
|
||||
|
||||
[float]
|
||||
[[security-6.1.2]]
|
||||
=== Security Issues
|
||||
* Kibana versions before 6.1.2 and 5.6.6 but after 5.1.1 had a cross-site scripting (XSS) vulnerability via the colored fields formatter that could allow an attacker to obtain sensitive information from or perform destructive actions on behalf of other Kibana users. CVE ID: CVE-2018-3818
|
||||
|
||||
Users should upgrade to Kibana version 6.1.2 or 5.6.6. There are no known workarounds for this issue.
|
||||
|
||||
[float]
|
||||
[[enhancement-6.1.2]]
|
||||
=== Enhancements
|
||||
Dev Tools::
|
||||
* [Fixes #15786] [Console] Adding autocomplete rules for composite agg {pull}15787[#15787]
|
||||
|
||||
[float]
|
||||
[[bug-6.1.2]]
|
||||
=== Bug fixes
|
||||
Visualization::
|
||||
* [Fixes #15843] Fix broken loader in 6.1 {pull}15885[#15885]
|
||||
* [Fixes #15594] fixes pie chart size to normal if labels are not applied {pull}15641[#15641]
|
||||
Platform::
|
||||
* Update color field formatter {pull}15837[#15837]
|
||||
|
||||
|
|
@ -1,11 +0,0 @@
|
|||
[[release-notes-6.1.3]]
|
||||
== 6.1.3 Release Notes
|
||||
|
||||
Also see <<breaking-changes-6.0>>.
|
||||
|
||||
|
||||
[float]
|
||||
[[bug-6.1.3]]
|
||||
=== Bug fixes
|
||||
Visualization::
|
||||
* Use textContent and jQuery to set label and title {pull}16178[#16178]
|
|
@ -1,113 +0,0 @@
|
|||
[[release-notes-6.2.0]]
|
||||
== 6.2.0 Release Notes
|
||||
|
||||
Also see <<breaking-changes-6.0>>.
|
||||
|
||||
|
||||
[float]
|
||||
[[enhancement-6.2.0]]
|
||||
=== Enhancements
|
||||
Discover::
|
||||
* [Fixes #15642] Introduce simple kibana query language {pull}15646[#15646]
|
||||
Management::
|
||||
* [Fixes #9228, #8983] add support for number format internationalization {pull}14019[#14019]
|
||||
* [Fixes #15922] [Management] Index pattern step in React! {pull}15936[#15936]
|
||||
* Advanced Settings - Image Input {pull}15342[#15342]
|
||||
Operations::
|
||||
* Use auto_expand_replicas to stay green on 1 node clusters {pull}15694[#15694]
|
||||
* Feat: Add config provider to disable state management {pull}15275[#15275]
|
||||
* [optimizer] More aggressive chunking of common/vendor code {pull}15907[#15907]
|
||||
- Improved the build optimize time by more aggressively chunking common code, resulting in the removal of duplicate code. This drastically cuts the build and plugin install time and overall bundle asset size.
|
||||
* [Fixes #14813] [ui/bundles][optimizer] only use caches when in dev mode {pull}15780[#15780]
|
||||
* [optimizer] run webpack compilation ASAP (no more laziness) {pull}15795[#15795]
|
||||
Platform::
|
||||
* [Fixes #6520] [optimizer] allow http caching for bundles {pull}15880[#15880]
|
||||
* Make it possible to disable CSRF check for the specified list of paths. {pull}13904[#13904]
|
||||
Sharing::
|
||||
* [Fixes #2758] Add advanced setting to control quick ranges {pull}15975[#15975]
|
||||
* [input controls] Horizontal layout {pull}14918[#14918]
|
||||
* Kibana Home page - phase two {pull}14749[#14749]
|
||||
* Add "use time filter" option to input controls {pull}15852[#15852]
|
||||
Visualization::
|
||||
* [Fixes #13992] Grab the default index pattern and use it in TSVB {pull}14739[#14739]
|
||||
- TSVB now uses Kibana's default index pattern by default.
|
||||
* [TSVB] Add params._interval to mathjs {pull}14944[#14944]
|
||||
- Make the bucket interval available as a parameter.
|
||||
* [Fixes #13781] [timelion] allow sum, subtract, multiply, divide functions to accept seriesList with multiple series {pull}14891[#14891]
|
||||
* [Fixes #8953] Add Timelion percentiles aggregation support (#8953) {pull}15154[#15154]
|
||||
* [Fixes #9845] [timelion] highlight series on legend mouseover {pull}15229[#15229]
|
||||
* add time to visualization status {pull}15856[#15856]
|
||||
* few enhancements to default sidebar editor {pull}15619[#15619]
|
||||
- Its now possible to resize the sidebar editor and auto apply is possible in markdown visualization.
|
||||
* [Fixes #1961] other and missing bucket support for terms agg {pull}15525[#15525]
|
||||
- 'other' and 'missing' bucket for the terms aggregation resolves #1961
|
||||
* [Fixes #15146] Refactor and improve Visualize Loader {pull}15157[#15157]
|
||||
- Do not use the <visualize> directive anymore to embed a visualization. Use the Visualize Loader instead.
|
||||
* [Fixes #15153] Use visualize loader for dashboards {pull}15444[#15444]
|
||||
* Refactor rendering events {pull}15895[#15895]
|
||||
* Migrating vega_vis from plugin {pull}15014[#15014]
|
||||
|
||||
[float]
|
||||
[[bug-6.2.0]]
|
||||
=== Bug fixes
|
||||
Discover::
|
||||
* display NOT when new filter is negated {pull}15865[#15865]
|
||||
* [Fixes #15364] Truncate long names in the discover index pattern selection {pull}15510[#15510]
|
||||
* Add missing discover labels {pull}16030[#16030]
|
||||
Management::
|
||||
* [Fixes #16098] [Management] Allow wildcard anywhere in the search query {pull}16109[#16109]
|
||||
* [Fixes #16192] [Management] Update pager with new props in Index Pattern Creation {pull}16195[#16195]
|
||||
* [Fixes #15922] Hide caret when indices has no time fields, remove indices object containing unused string {pull}16412[#16412]
|
||||
Sharing::
|
||||
* [Fixes #16307] link to dashboards by id instead of title {pull}16319[#16319]
|
||||
Visualization::
|
||||
* [Fixes #16349] Fix issue with disabled lab mode {pull}16351[#16351]
|
||||
* [TSVB] Changing the behaivor of getLastValue to get the actual last value {pull}14919[#14919]
|
||||
* [TSVB] Stacked series should not contain null values {pull}14923[#14923]
|
||||
* [Fixes #15273] disable input control when field contains no values in index pattern {pull}15317[#15317]
|
||||
* Set list-style-type for list items in markdown-body {pull}15827[#15827]
|
||||
* Visualization render status - pass correct parameters to resize check {pull}15855[#15855]
|
||||
* fixes angular vis type so it correctly propagates events up to visualize {pull}15629[#15629]
|
||||
* [Fixes #15427] fixing dot ratio slider {pull}15860[#15860]
|
||||
- dot size slider for line chart works again
|
||||
* fixing log scale error {pull}15984[#15984]
|
||||
- log scale now works with empty buckets
|
||||
* [Fixes #15114] fixing boolean filters {pull}15927[#15927]
|
||||
* [Fixes #15931, #15656] check if data hash changed instead of stringifying {pull}15988[#15988]
|
||||
- performance of visualization rendering is improved
|
||||
* Remove SVG element styling rules {pull}15906[#15906]
|
||||
* [Fixes #15553] Fix bug where negative time offsets in visual builder will shift x-axis range {pull}15554[#15554]
|
||||
* [6.x] Fix maps for reporting (#15272) {pull}15357[#15357]
|
||||
* Sharing - exposing Dashboard and Visualize title and type {pull}14946[#14946]
|
||||
* [Fixes #14730] pass bucket size as _interval param to calculation metric script {pull}14731[#14731]
|
||||
* [Fixes #15672, #14353] Revert Resize and FlotChart components to 6.0 {pull}15717[#15717]
|
||||
* [Fixes #15501] [TSVB] Fixes #15501 - Change xaxis formatter to honor dateFormat:tz {pull}15512[#15512]
|
||||
* [TSVB] Make form font-sizes consistent (after EUI upgrade) {pull}15909[#15909]
|
||||
* Remove MathJS Feature {pull}15652[#15652]
|
||||
* [TSVB] Add checks for scaledDataFormat and dateFormat in xaxisFormatter {pull}15997[#15997]
|
||||
* [TSVB] Fix typo is filter ratio path for table visualization {pull}16052[#16052]
|
||||
* [Fixes #14888] [timelion] provide argument suggestions when argument name not provided {pull}15081[#15081]
|
||||
* [Fixes #15594] fixes pie chart size to normal if labels are not applied {pull}15641[#15641]
|
||||
* [Fixes #15818] fixing collapsible side bar editor {pull}15826[#15826]
|
||||
* [Fixes #15703] refactoring vis uiState {pull}15709[#15709]
|
||||
* [Fixes #15673] fixes table padding on dashboard {pull}15862[#15862]
|
||||
* [Fixes #15778] fixing tag cloud and region map click handler {pull}15861[#15861]
|
||||
* fixes renderComplete in angular vis type {pull}16150[#16150]
|
||||
* [Fixes #16217] fixing axis title position for firefox {pull}16278[#16278]
|
||||
* [Fixes #13822] visualize editor should not show if embed is set to true in url {pull}16310[#16310]
|
||||
* [Fixes #16083] configure Kibana with production endpoint for EMSv3 {pull}16108[#16108]
|
||||
* [Fixes #13813] Use a width range instead of a fixed width for visualize legends {pull}13818[#13818]
|
||||
* should always set base layer {pull}16213[#16213]
|
||||
* Extract lab HTML on dashboard into own file {pull}15546[#15546]
|
||||
* Remove implementsRenderComplete property {pull}15579[#15579]
|
||||
* [Fixes #15255] Set uiState to Vis from visualization {pull}15549[#15549]
|
||||
* [Fixes #15618] Fix broken initial uiState set {pull}15630[#15630]
|
||||
* [Fixes #15742] Only apply forced max mode when panel is shown {pull}15752[#15752]
|
||||
* Fix JSON hint styling and accessibility {pull}15890[#15890]
|
||||
* [Fixes #15712] Fix broken editor styles {pull}15735[#15735]
|
||||
* [Fixes #15713] Use euiCallOut for experimental banner {pull}15989[#15989]
|
||||
* Fix some styling issues {pull}16023[#16023]
|
||||
* Listen to resize events in <visualize> {pull}16048[#16048]
|
||||
* [Fixes #16216] Prevent rendering into 0 size containers {pull}16287[#16287]
|
||||
* [Fixes #14331] Add topojson support / EMS v3 support {pull}15361[#15361]
|
||||
|
|
@ -1,7 +0,0 @@
|
|||
[[release-notes-6.2.1]]
|
||||
== 6.2.1 Release Notes
|
||||
|
||||
Also see <<breaking-changes-6.0>>.
|
||||
|
||||
There were no changes for this release.
|
||||
|
|
@ -1,15 +0,0 @@
|
|||
[[release-notes-6.2.2]]
|
||||
== 6.2.2 Release Notes
|
||||
|
||||
Also see <<breaking-changes-6.0>>.
|
||||
|
||||
[float]
|
||||
[[bug-6.2.2]]
|
||||
=== Bug fixes
|
||||
Design::
|
||||
* [Fixes #4475] Removing flex-basis: 0 to make items size properly in IE11 {pull}16557[#16557]
|
||||
* [Fixes #16608] Service to show confirmation prompt when leaving a dirty form {pull}16688[#16688]
|
||||
Management::
|
||||
* [Fixes #16304] [Management] Prevent react warnings in index pattern creation {pull}16520[#16520]
|
||||
Platform::
|
||||
* Destroying socket when we get a clientError {pull}16700[#16700]
|
|
@ -1,8 +0,0 @@
|
|||
[[release-notes-6.2.3]]
|
||||
== 6.2.3 Release Notes
|
||||
|
||||
Also see <<breaking-changes-6.0>>.
|
||||
|
||||
There are no changes for Kibana in this release.
|
||||
|
||||
There is one known issue, [#17139] Cross cluster search index pattern won't go to next step.
|
|
@ -1,26 +0,0 @@
|
|||
[[release-notes-6.2.4]]
|
||||
== 6.2.4 Release Notes
|
||||
|
||||
Also see <<breaking-changes-6.0>>.
|
||||
|
||||
|
||||
[float]
|
||||
[[bug-6.2.4]]
|
||||
=== Bug fixes
|
||||
Platform::
|
||||
* Fixed deprecation logging warnings {pull}17439[#17439]
|
||||
Visualization::
|
||||
* Fixed map zoom settings {pull}17367[#17367]
|
||||
* Enabled Option change to show on map {pull}17405[#17405]
|
||||
* Added support for percentiles and percentile ranks to metrics visualizations {pull}17243[#17243]
|
||||
Management::
|
||||
* Added better support for discarding results of older queries {pull}17148[#17148]
|
||||
Platform::
|
||||
* Fixed an issue with the numeric formatter to handle small exponential numbers {pull}17508[#17508]
|
||||
|
||||
[float]
|
||||
[[enhancement-6.2.4]]
|
||||
=== Enhancement
|
||||
|
||||
Visualization::
|
||||
* Upgraded Vega libraries: `vega-lib` to 3.2.1 and `vega-lite` to 2.3.1 {pull}17314[#17314]
|
|
@ -9,14 +9,15 @@ found on https://github.com/elastic/kibana-docker/tree/{branch}[GitHub].
|
|||
|
||||
=== Image types
|
||||
|
||||
The images are available in two different configurations or "flavors". The
|
||||
`x-pack` flavor, which is the default, ships with X-Pack features
|
||||
pre-installed. The `oss` flavor does not include X-Pack, and contains only
|
||||
open source Kibana.
|
||||
These images are free to use under the Elastic license. They contain open source
|
||||
and free commercial features and access to paid commercial features.
|
||||
{xpack-ref}/license-management.html[Start a 30-day trial] to try out all of the
|
||||
paid commercial features. See the
|
||||
https://www.elastic.co/subscriptions[Subscriptions] page for information about
|
||||
Elastic license levels.
|
||||
|
||||
NOTE: https://www.elastic.co/guide/en/x-pack/current/index.html[X-Pack] is
|
||||
pre-installed in the default image. With X-Pack installed, Kibana expects to
|
||||
connect to an Elasticsearch cluster that is also running X-Pack.
|
||||
Alternatively, you can download `-oss` images, which contain only features that
|
||||
are available under the Apache 2.0 license.
|
||||
|
||||
=== Pulling the image
|
||||
Obtaining Kibana for Docker is as simple as issuing a +docker pull+ command
|
||||
|
|
|
@ -34,8 +34,7 @@ Elastic website or from our RPM repository.
|
|||
`docker`::
|
||||
|
||||
Images are available for running Kibana as a Docker container. They may be
|
||||
downloaded from the Elastic Docker Registry. The default image ships with
|
||||
{xpack-ref}/index.html[X-Pack] pre-installed.
|
||||
downloaded from the Elastic Docker Registry.
|
||||
+
|
||||
<<docker,Running Kibana on Docker>>
|
||||
|
||||
|
|
|
@ -2,9 +2,16 @@
|
|||
=== Install Kibana with Debian Package
|
||||
|
||||
The Debian package for Kibana can be <<install-deb,downloaded from our website>>
|
||||
or from our <<deb-repo,APT repository>>. It can be used to install
|
||||
or from our <<deb-repo,APT repository>>. It can be used to install
|
||||
Kibana on any Debian-based system such as Debian and Ubuntu.
|
||||
|
||||
This package is free to use under the Elastic license. It contains open source
|
||||
and free commercial features and access to paid commercial features.
|
||||
{xpack-ref}/license-management.html[Start a 30-day trial] to try out all of the
|
||||
paid commercial features. See the
|
||||
https://www.elastic.co/subscriptions[Subscriptions] page for information about
|
||||
Elastic license levels.
|
||||
|
||||
The latest stable version of Kibana can be found on the
|
||||
link:/downloads/kibana[Download Kibana] page. Other versions can
|
||||
be found on the link:/downloads/past-releases[Past Releases page].
|
||||
|
@ -115,6 +122,10 @@ sudo dpkg -i kibana-{version}-amd64.deb
|
|||
<1> Compare the SHA produced by `shasum` with the
|
||||
https://artifacts.elastic.co/downloads/kibana/kibana-{version}-amd64.deb.sha512[published SHA].
|
||||
|
||||
Alternatively, you can download the following package, which contains only
|
||||
features that are available under the Apache 2.0 license:
|
||||
https://artifacts.elastic.co/downloads/kibana/kibana-oss-{version}-amd64.deb
|
||||
|
||||
endif::[]
|
||||
|
||||
include::init-systemd.asciidoc[]
|
||||
|
|
|
@ -2,13 +2,20 @@
|
|||
=== Install Kibana with RPM
|
||||
|
||||
The RPM for Kibana can be <<install-rpm,downloaded from our website>>
|
||||
or from our <<rpm-repo,RPM repository>>. It can be used to install
|
||||
or from our <<rpm-repo,RPM repository>>. It can be used to install
|
||||
Kibana on any RPM-based system such as OpenSuSE, SLES, Centos, Red Hat,
|
||||
and Oracle Enterprise.
|
||||
|
||||
NOTE: RPM install is not supported on distributions with old versions of RPM,
|
||||
such as SLES 11 and CentOS 5. Please see <<targz>> instead.
|
||||
|
||||
This package is free to use under the Elastic license. It contains open source
|
||||
and free commercial features and access to paid commercial features.
|
||||
{xpack-ref}/license-management.html[Start a 30-day trial] to try out all of the
|
||||
paid commercial features. See the
|
||||
https://www.elastic.co/subscriptions[Subscriptions] page for information about
|
||||
Elastic license levels.
|
||||
|
||||
The latest stable version of Kibana can be found on the
|
||||
link:/downloads/kibana[Download Kibana] page. Other versions can
|
||||
be found on the link:/downloads/past-releases[Past Releases page].
|
||||
|
@ -106,6 +113,10 @@ sudo rpm --install kibana-{version}-x86_64.rpm
|
|||
<1> Compare the SHA produced by `shasum` with the
|
||||
https://artifacts.elastic.co/downloads/kibana/kibana-{version}-x86_64.rpm.sha512[published SHA].
|
||||
|
||||
Alternatively, you can download the following package, which contains only
|
||||
features that are available under the Apache 2.0 license:
|
||||
https://artifacts.elastic.co/downloads/kibana/kibana-oss-{version}-x86_64.rpm
|
||||
|
||||
endif::[]
|
||||
|
||||
include::init-systemd.asciidoc[]
|
||||
|
|
|
@ -4,6 +4,13 @@
|
|||
Kibana is provided for Linux and Darwin as a `.tar.gz` package. These packages
|
||||
are the easiest formats to use when trying out Kibana.
|
||||
|
||||
These packages are free to use under the Elastic license. They contain open
|
||||
source and free commercial features and access to paid commercial features.
|
||||
{xpack-ref}/license-management.html[Start a 30-day trial] to try out all of the
|
||||
paid commercial features. See the
|
||||
https://www.elastic.co/subscriptions[Subscriptions] page for information about
|
||||
Elastic license levels.
|
||||
|
||||
The latest stable version of Kibana can be found on the
|
||||
link:/downloads/kibana[Download Kibana] page.
|
||||
Other versions can be found on the
|
||||
|
@ -61,6 +68,10 @@ cd kibana-{version}-darwin-x86_64/ <2>
|
|||
https://artifacts.elastic.co/downloads/kibana/kibana-{version}-darwin-x86_64.tar.gz.sha512[published SHA].
|
||||
<2> This directory is known as `$KIBANA_HOME`.
|
||||
|
||||
Alternatively, you can download the following package, which contains only
|
||||
features that are available under the Apache 2.0 license:
|
||||
https://artifacts.elastic.co/downloads/kibana/kibana-oss-{version}-darwin-x86_64.tar.gz
|
||||
|
||||
endif::[]
|
||||
|
||||
|
||||
|
|
|
@ -3,6 +3,13 @@
|
|||
|
||||
Kibana can be installed on Windows using the `.zip` package.
|
||||
|
||||
This package is free to use under the Elastic license. It contains open source
|
||||
and free commercial features and access to paid commercial features.
|
||||
{xpack-ref}/license-management.html[Start a 30-day trial] to try out all of the
|
||||
paid commercial features. See the
|
||||
https://www.elastic.co/subscriptions[Subscriptions] page for information about
|
||||
Elastic license levels.
|
||||
|
||||
The latest stable version of Kibana can be found on the
|
||||
link:/downloads/kibana[Download Kibana] page.
|
||||
Other versions can be found on the
|
||||
|
@ -32,6 +39,10 @@ terminal window, `CD` to the `$KIBANA_HOME` directory, for instance:
|
|||
CD c:\kibana-{version}-windows-x86_64
|
||||
----------------------------
|
||||
|
||||
Alternatively, you can download the following package, which contains only
|
||||
features that are available under the Apache 2.0 license:
|
||||
https://artifacts.elastic.co/downloads/kibana/kibana-oss-{version}-windows-x86_64.zip
|
||||
|
||||
endif::[]
|
||||
|
||||
[[windows-running]]
|
||||
|
|
|
@ -54,15 +54,6 @@ server.ssl.key: /path/to/your/server.key
|
|||
server.ssl.certificate: /path/to/your/server.crt
|
||||
----
|
||||
|
||||
Alternatively, you can specify a PKCS#12 encoded certificate with the `server.ssl.keystore.path` property in `kibana.yml`:
|
||||
|
||||
[source,text]
|
||||
----
|
||||
# SSL for outgoing requests from the Kibana Server (PKCS#12 formatted)
|
||||
server.ssl.enabled: true
|
||||
server.ssl.keystore.path: /path/to/your/server.p12
|
||||
----
|
||||
|
||||
If you are using X-Pack Security or a proxy that provides an HTTPS endpoint for Elasticsearch,
|
||||
you can configure Kibana to access Elasticsearch via HTTPS so communications between
|
||||
the Kibana server and Elasticsearch are encrypted.
|
||||
|
|
|
@ -3,76 +3,95 @@
|
|||
|
||||
The Kibana server reads properties from the `kibana.yml` file on startup. The default settings configure Kibana to run
|
||||
on `localhost:5601`. To change the host or port number, or connect to Elasticsearch running on a different machine,
|
||||
you'll need to update your `kibana.yml` file. You can also enable SSL and set a variety of other options.
|
||||
you'll need to update your `kibana.yml` file. You can also enable SSL and set a variety of other options. Finally, environment variables can be injected into configuration using `${MY_ENV_VAR}` syntax.
|
||||
|
||||
.Kibana Configuration Settings
|
||||
Kibana Configuration Settings
|
||||
`console.enabled:`:: *Default: true* Set to false to disable Console. Toggling this will cause the server to regenerate assets on the next startup, which may cause a delay before pages start being served.
|
||||
|
||||
`cpu.cgroup.path.override:`:: Override for cgroup cpu path when mounted in manner that is inconsistent with `/proc/self/cgroup`
|
||||
|
||||
`cpuacct.cgroup.path.override:`:: Override for cgroup cpuacct path when mounted in manner that is inconsistent with `/proc/self/cgroup`
|
||||
|
||||
`elasticsearch.customHeaders:`:: *Default: `{}`* Header names and values to send to Elasticsearch. Any custom headers
|
||||
cannot be overwritten by client-side headers, regardless of the `elasticsearch.requestHeadersWhitelist` configuration.
|
||||
|
||||
`elasticsearch.pingTimeout:`:: *Default: the value of the `elasticsearch.requestTimeout` setting* Time in milliseconds to
|
||||
wait for Elasticsearch to respond to pings.
|
||||
|
||||
`elasticsearch.preserveHost:`:: *Default: true* When this setting’s value is true Kibana uses the hostname specified in
|
||||
the `server.host` setting. When the value of this setting is `false`, Kibana uses the hostname of the host that connects
|
||||
to this Kibana instance.
|
||||
|
||||
`elasticsearch.requestHeadersWhitelist:`:: *Default: `[ 'authorization' ]`* List of Kibana client-side headers to send to Elasticsearch.
|
||||
To send *no* client-side headers, set this value to [] (an empty list).
|
||||
|
||||
`elasticsearch.requestTimeout:`:: *Default: 30000* Time in milliseconds to wait for responses from the back end or
|
||||
Elasticsearch. This value must be a positive integer.
|
||||
|
||||
`elasticsearch.shardTimeout:`:: *Default: 30000* Time in milliseconds for Elasticsearch to wait for responses from shards. Set to 0 to disable.
|
||||
`elasticsearch.ssl.keystore.path`:: Optional setting that provides the path to the PKCS#12-format SSL Certificate and Key file. This file is used to verify the identity of Kibana
|
||||
to Elasticsearch. Either this, or `elasticsearch.ssl.certificate`/`elasticsearch.ssl.key` pair is required when `xpack.ssl.verification_mode` in Elasticsearch is set to either
|
||||
`certificate` or `full`. Specifying both `elasticsearch.ssl.keystore.path` and `elasticsearch.ssl.certificate` is not allowed.
|
||||
|
||||
`elasticsearch.ssl.certificate:` and `elasticsearch.ssl.key:`:: Optional settings that provide the paths to the PEM-format SSL
|
||||
certificate and key files. These files are used to verify the identity of Kibana to Elasticsearch.
|
||||
Either this, or `elasticsearch.ssl.keystore.path` is required when `xpack.ssl.verification_mode` in Elasticsearch is set to either `certificate` or `full`.
|
||||
Specifying both `elasticsearch.ssl.certificate` and `elasticsearch.ssl.keystore.path` is not allowed.
|
||||
certificate and key files. These files are used to verify the identity of Kibana to Elasticsearch and are required when
|
||||
`xpack.ssl.verification_mode` in Elasticsearch is set to either `certificate` or `full`.
|
||||
|
||||
`elasticsearch.ssl.certificateAuthorities:`:: Optional setting that enables you to specify a list of paths to the PEM file for the certificate
|
||||
authority for your Elasticsearch instance.
|
||||
|
||||
`elasticsearch.ssl.keyPassphrase:`:: The passphrase that will be used to decrypt the private key. This value is optional as the key may not be encrypted.
|
||||
|
||||
`elasticsearch.ssl.verificationMode:`:: *Default: full* Controls the verification of certificates presented by Elasticsearch. Valid values are `none`, `certificate`, and `full`.
|
||||
`full` performs hostname verification, and `certificate` does not.
|
||||
|
||||
`elasticsearch.startupTimeout:`:: *Default: 5000* Time in milliseconds to wait for Elasticsearch at Kibana startup before
|
||||
retrying.
|
||||
|
||||
`elasticsearch.url:`:: *Default: "http://localhost:9200"* The URL of the Elasticsearch instance to use for all your
|
||||
queries.
|
||||
|
||||
`elasticsearch.username:` and `elasticsearch.password:`:: If your Elasticsearch is protected with basic authentication,
|
||||
these settings provide the username and password that the Kibana server uses to perform maintenance on the Kibana index at
|
||||
startup. Your Kibana users still need to authenticate with Elasticsearch, which is proxied through the Kibana server.
|
||||
|
||||
`elasticsearch.tribe.customHeaders:`:: *Default: `{}`* Header names and values to send to Elasticsearch. Any custom headers
|
||||
cannot be overwritten by client-side headers, regardless of the `elasticsearch.tribe.requestHeadersWhitelist` configuration.
|
||||
`elasticsearch.tribe.pingTimeout:`:: *Default: the value of the `elasticsearch.tribe.requestTimeout` setting* Time in milliseconds to
|
||||
wait for Elasticsearch to respond to pings.
|
||||
|
||||
`elasticsearch.tribe.pingTimeout:`:: *Default: the value of the `elasticsearch.tribe.requestTimeout` setting* Time in milliseconds to wait for Elasticsearch to respond to pings.
|
||||
|
||||
`elasticsearch.tribe.requestHeadersWhitelist:`:: *Default: `[ 'authorization' ]`* List of Kibana client-side headers to send to Elasticsearch.
|
||||
To send *no* client-side headers, set this value to [] (an empty list).
|
||||
|
||||
`elasticsearch.tribe.requestTimeout:`:: *Default: 30000* Time in milliseconds to wait for responses from the back end or
|
||||
Elasticsearch. This value must be a positive integer.
|
||||
|
||||
`elasticsearch.tribe.ssl.certificate:` and `elasticsearch.tribe.ssl.key:`:: Optional settings that provide the paths to the PEM-format SSL
|
||||
certificate and key files. These files validate that your Elasticsearch backend uses the same key files.
|
||||
|
||||
`elasticsearch.tribe.ssl.certificateAuthorities:`:: Optional setting that enables you to specify a path to the PEM file for the certificate
|
||||
authority for your tribe Elasticsearch instance.
|
||||
|
||||
`elasticsearch.tribe.ssl.keyPassphrase:`:: The passphrase that will be used to decrypt the private key. This value is optional as the key may not be encrypted.
|
||||
|
||||
`elasticsearch.tribe.ssl.verificationMode:`:: *Default: full* Controls the verification of certificates. Valid values are `none`, `certificate`, and `full`. `full` performs hostname verification, and `certificate` does not.
|
||||
|
||||
`elasticsearch.tribe.url:`:: Optional URL of the Elasticsearch tribe instance to use for all your
|
||||
queries.
|
||||
`elasticsearch.tribe.username:` and `elasticsearch.tribe.password:`:: If your Elasticsearch is protected with basic authentication,
|
||||
these settings provide the username and password that the Kibana server uses to perform maintenance on the Kibana index at
|
||||
startup. Your Kibana users still need to authenticate with Elasticsearch, which is proxied through the Kibana server.
|
||||
|
||||
`elasticsearch.tribe.username:` and `elasticsearch.tribe.password:`:: If your Elasticsearch is protected with basic authentication, these settings provide the username and password that the Kibana server uses to perform maintenance on the Kibana index at startup. Your Kibana users still need to authenticate with Elasticsearch, which is proxied through the Kibana server.
|
||||
|
||||
`kibana.defaultAppId:`:: *Default: "discover"* The default application to load.
|
||||
|
||||
`kibana.index:`:: *Default: ".kibana"* Kibana uses an index in Elasticsearch to store saved searches, visualizations and
|
||||
dashboards. Kibana creates a new index if the index doesn’t already exist.
|
||||
|
||||
`logging.dest:`:: *Default: `stdout`* Enables you specify a file where Kibana stores log output.
|
||||
|
||||
`logging.quiet:`:: *Default: false* Set the value of this setting to `true` to suppress all logging output other than
|
||||
error messages.
|
||||
|
||||
`logging.silent:`:: *Default: false* Set the value of this setting to `true` to suppress all logging output.
|
||||
`logging.verbose:`:: *Default: false* Set the value of this setting to `true` to log all events, including system usage
|
||||
information and all requests.
|
||||
|
||||
[[logging-verbose]]`logging.verbose:`:: *Default: false* Set the value of this setting to `true` to log all events, including system usage information and all requests. Supported on Elastic Cloud Enterprise.
|
||||
|
||||
`logging.useUTC`:: *Default: true* Set the value of this setting to `false` to log events using the timezone of the server, rather than UTC.
|
||||
|
||||
`map.includeElasticMapsService:`:: *Default: true* Turns on or off whether layers from the Elastic Maps Service should be included in the vector and tile layer option list.
|
||||
|
@ -86,7 +105,7 @@ By turning this off, only the layers that are configured here will be included.
|
|||
The minimum value is 100.
|
||||
|
||||
[[regionmap-settings]] `regionmap:`:: Specifies additional vector layers for use in <<regionmap, Region Map>> visualizations.
|
||||
Each layer object points to an external vector file that contains a geojson FeatureCollection.
|
||||
Each layer object points to an external vector file that contains a geojson FeatureCollection. Supported on Elastic Cloud Enterprise.
|
||||
The file must use the https://en.wikipedia.org/wiki/World_Geodetic_System[WGS84 coordinate reference system] and only include polygons.
|
||||
If the file is hosted on a separate domain from Kibana, the server needs to be CORS-enabled so Kibana can download the file.
|
||||
The following example shows a valid regionmap configuration.
|
||||
|
@ -103,40 +122,63 @@ The following example shows a valid regionmap configuration.
|
|||
- name: "INSEE"
|
||||
description: "INSEE numeric identifier"
|
||||
|
||||
`regionmap.layers[].name:`:: Mandatory. A description of the map being provided.
|
||||
`regionmap.layers[].url:`:: Mandatory. The location of the geojson file as provided by a webserver.
|
||||
`regionmap.layers[].attribution:`:: Optional. References the originating source of the geojson file.
|
||||
`regionmap.layers[].fields[]:`:: Mandatory. Each layer can contain multiple fields to indicate what properties from the geojson features you wish to expose. The example above shows how to define multiple properties.
|
||||
`regionmap.layers[].fields[].name:`:: Mandatory. This value is used to do an inner-join between the document stored in Elasticsearch and the geojson file. e.g. if the field in the geojson is called `Location` and has city names, there must be a field in Elasticsearch that holds the same values that Kibana can then use to lookup for the geoshape data.
|
||||
`regionmap.layers[].fields[].description:`:: Mandatory. The human readable text that is shown under the Options tab when building the Region Map visualization.
|
||||
`regionmap.includeElasticMapsService:`:: *Default: true* Turns on or off whether layers from the Elastic Maps Service should be included in the vector layer option list.
|
||||
By turning this off, only the layers that are configured here will be included.
|
||||
[[regionmap-name]]`regionmap.layers[].name:`:: Mandatory. A description of the map being provided. Supported on Elastic Cloud Enterprise.
|
||||
|
||||
[[regionmap-url]]`regionmap.layers[].url:`:: Mandatory. The location of the geojson file as provided by a webserver. Supported on Elastic Cloud Enterprise.
|
||||
|
||||
[[regionmap-attribution]]`regionmap.layers[].attribution:`:: Optional. References the originating source of the geojson file. Supported on Elastic Cloud Enterprise.
|
||||
|
||||
[[regionmap-fields]]`regionmap.layers[].fields[]:`:: Mandatory. Each layer can contain multiple fields to indicate what properties from the geojson features you wish to expose. The example above shows how to define multiple properties. Supported on Elastic Cloud Enterprise.
|
||||
|
||||
[[regionmap-field-name]]`regionmap.layers[].fields[].name:`:: Mandatory. This value is used to do an inner-join between the document stored in Elasticsearch and the geojson file. e.g. if the field in the geojson is called `Location` and has city names, there must be a field in Elasticsearch that holds the same values that Kibana can then use to lookup for the geoshape data. Supported on Elastic Cloud Enterprise.
|
||||
|
||||
[[regionmap-field-description]]`regionmap.layers[].fields[].description:`:: Mandatory. The human readable text that is shown under the Options tab when building the Region Map visualization. Supported on Elastic Cloud Enterprise.
|
||||
|
||||
[[regionmap-ES-map]]`regionmap.includeElasticMapsService:`:: turns on or off whether layers from the Elastic Maps Service should be included in the vector layer option list. Supported on Elastic Cloud Enterprise.
|
||||
By turning this off, only the layers that are configured here will be included. The default is true.
|
||||
|
||||
`server.basePath:`:: Enables you to specify a path to mount Kibana at if you are running behind a proxy. Use the `server.rewriteBasePath` setting to tell Kibana if it should remove the basePath from requests it receives, and to prevent a deprecation warning at startup. This setting cannot end in a slash (`/`).
|
||||
|
||||
`server.rewriteBasePath:`:: *Default: false* Specifies whether Kibana should rewrite requests that are prefixed with `server.basePath` or require that they are rewritten by your reverse proxy. This setting was effectively always `false` before Kibana 6.3 and will default to `true` starting in Kibana 7.0.
|
||||
|
||||
`server.customResponseHeaders:`:: *Default: `{}`* Header names and values to send on all responses to the client from the Kibana server.
|
||||
|
||||
`server.defaultRoute:`:: *Default: "/app/kibana"* This setting specifies the default route when opening Kibana. You can use this setting to modify the landing page when opening Kibana.
|
||||
|
||||
`server.host:`:: *Default: "localhost"* This setting specifies the host of the back end server.
|
||||
|
||||
`server.maxPayloadBytes:`:: *Default: 1048576* The maximum payload size in bytes for incoming server requests.
|
||||
|
||||
`server.name:`:: *Default: "your-hostname"* A human-readable display name that identifies this Kibana instance.
|
||||
|
||||
`server.port:`:: *Default: 5601* Kibana is served by a back end server. This setting specifies the port to use.
|
||||
|
||||
`server.ssl.enabled:`:: *Default: "false"* Enables SSL for outgoing requests from the Kibana server to the browser. When set to `true`, `server.ssl.certificate` and `server.ssl.key` are required
|
||||
|
||||
`server.ssl.certificate:` and `server.ssl.key:`:: Paths to the PEM-format SSL certificate and SSL key files, respectively.
|
||||
`server.ssl.keystore.path`:: Path to the PKCS#12 encoded SSL certificate and key. This is an alternative to setting `server.ssl.certificate` and `server.ssl.key`.
|
||||
`server.ssl.keystore.password`:: The password that will be used to decrypt the private key within the keystore. This value is optional as the key may not be encrypted.
|
||||
|
||||
`server.ssl.certificateAuthorities:`:: List of paths to PEM encoded certificate files that should be trusted.
|
||||
|
||||
`server.ssl.cipherSuites:`:: *Default: ECDHE-RSA-AES128-GCM-SHA256, ECDHE-ECDSA-AES128-GCM-SHA256, ECDHE-RSA-AES256-GCM-SHA384, ECDHE-ECDSA-AES256-GCM-SHA384, DHE-RSA-AES128-GCM-SHA256, ECDHE-RSA-AES128-SHA256, DHE-RSA-AES128-SHA256, ECDHE-RSA-AES256-SHA384, DHE-RSA-AES256-SHA384, ECDHE-RSA-AES256-SHA256, DHE-RSA-AES256-SHA256, HIGH,!aNULL, !eNULL, !EXPORT, !DES, !RC4, !MD5, !PSK, !SRP, !CAMELLIA*. Details on the format, and the valid options, are available via the [OpenSSL cipher list format documentation](https://www.openssl.org/docs/man1.0.2/apps/ciphers.html#CIPHER-LIST-FORMAT)
|
||||
|
||||
`server.ssl.keyPassphrase:`:: The passphrase that will be used to decrypt the private key. This value is optional as the key may not be encrypted.
|
||||
|
||||
`server.ssl.redirectHttpFromPort:`:: Kibana will bind to this port and redirect all http requests to https over the port configured as `server.port`.
|
||||
|
||||
`server.ssl.supportedProtocols:`:: *Default: TLSv1, TLSv1.1, TLSv1.2* Supported protocols with versions. Valid protocols: `TLSv1`, `TLSv1.1`, `TLSv1.2`
|
||||
|
||||
`status.allowAnonymous:`:: *Default: false* If authentication is enabled, setting this to `true` allows
|
||||
unauthenticated users to access the Kibana server status API and status page.
|
||||
|
||||
[[tilemap-settings]] `tilemap.options.attribution:`:: *Default: `"© [Elastic Maps Service](https://www.elastic.co/elastic-maps-service)"`* The map attribution string.
|
||||
`tilemap.options.maxZoom:`:: *Default: 10* The maximum zoom level.
|
||||
`tilemap.options.minZoom:`:: *Default: 1* The minimum zoom level.
|
||||
`tilemap.options.subdomains:`:: An array of subdomains used by the tile service.
|
||||
[[tilemap-settings]] `tilemap.options.attribution:`:: *Default: `"© [Elastic Maps Service](https://www.elastic.co/elastic-maps-service)"`* The map attribution string. Supported on Elastic Cloud Enterprise.
|
||||
|
||||
[[tilemap-max-zoom]]`tilemap.options.maxZoom:`:: *Default: 10* The maximum zoom level. Supported on Elastic Cloud Enterprise.
|
||||
|
||||
[[tilemap-min-zoom]]`tilemap.options.minZoom:`:: *Default: 1* The minimum zoom level. Supported on Elastic Cloud Enterprise.
|
||||
|
||||
[[tilemap-subdomains]]`tilemap.options.subdomains:`:: An array of subdomains used by the tile service. Supported on Elastic Cloud Enterprise.
|
||||
Specify the position of the subdomain the URL with the token `{s}`.
|
||||
`tilemap.url:`:: The URL to the tileservice that Kibana uses to display map tiles in tilemap visualizations. By default, Kibana reads this url from an external metadata service, but users can still override this parameter to use their own Tile Map Service. For example: `"https://tiles.elastic.co/v2/default/{z}/{x}/{y}.png?elastic_tile_service_tos=agree&my_app_name=kibana"`
|
||||
|
||||
[[tilemap-url]]`tilemap.url:`:: The URL to the tileservice that Kibana uses to display map tiles in tilemap visualizations. By default, Kibana reads this url from an external metadata service, but users can still override this parameter to use their own Tile Map Service. For example: `"https://tiles.elastic.co/v2/default/{z}/{x}/{y}.png?elastic_tile_service_tos=agree&my_app_name=kibana"`
|
||||
|
||||
`vega.enableExternalUrls:`:: *Default: false* Set this value to true to allow Vega to use any URL to access external data sources and images. If false, Vega can only get data from Elasticsearch.
|
||||
|
|
|
@ -61,8 +61,6 @@ image:images/tsvb-gauge.png["Gauge Visualization"]
|
|||
|
||||
This visualization allows you to enter Markdown text and embed Mustache
|
||||
template syntax to customize the Markdown with data based on a set of series.
|
||||
This visualization also supports HTML markup along with the ability to define
|
||||
a custom stylesheet.
|
||||
|
||||
image:images/tsvb-markdown.png["Markdown Visualization"]
|
||||
|
||||
|
@ -211,4 +209,3 @@ syntax uses the Handlebar.js processor which is an extended version of the Musta
|
|||
template language.
|
||||
|
||||
image:images/tsvb-markdown-tab.png["Markdown Tab"]
|
||||
|
||||
|
|
202
licenses/APACHE-LICENSE-2.0.txt
Normal file
202
licenses/APACHE-LICENSE-2.0.txt
Normal file
|
@ -0,0 +1,202 @@
|
|||
|
||||
Apache License
|
||||
Version 2.0, January 2004
|
||||
http://www.apache.org/licenses/
|
||||
|
||||
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
|
||||
|
||||
1. Definitions.
|
||||
|
||||
"License" shall mean the terms and conditions for use, reproduction,
|
||||
and distribution as defined by Sections 1 through 9 of this document.
|
||||
|
||||
"Licensor" shall mean the copyright owner or entity authorized by
|
||||
the copyright owner that is granting the License.
|
||||
|
||||
"Legal Entity" shall mean the union of the acting entity and all
|
||||
other entities that control, are controlled by, or are under common
|
||||
control with that entity. For the purposes of this definition,
|
||||
"control" means (i) the power, direct or indirect, to cause the
|
||||
direction or management of such entity, whether by contract or
|
||||
otherwise, or (ii) ownership of fifty percent (50%) or more of the
|
||||
outstanding shares, or (iii) beneficial ownership of such entity.
|
||||
|
||||
"You" (or "Your") shall mean an individual or Legal Entity
|
||||
exercising permissions granted by this License.
|
||||
|
||||
"Source" form shall mean the preferred form for making modifications,
|
||||
including but not limited to software source code, documentation
|
||||
source, and configuration files.
|
||||
|
||||
"Object" form shall mean any form resulting from mechanical
|
||||
transformation or translation of a Source form, including but
|
||||
not limited to compiled object code, generated documentation,
|
||||
and conversions to other media types.
|
||||
|
||||
"Work" shall mean the work of authorship, whether in Source or
|
||||
Object form, made available under the License, as indicated by a
|
||||
copyright notice that is included in or attached to the work
|
||||
(an example is provided in the Appendix below).
|
||||
|
||||
"Derivative Works" shall mean any work, whether in Source or Object
|
||||
form, that is based on (or derived from) the Work and for which the
|
||||
editorial revisions, annotations, elaborations, or other modifications
|
||||
represent, as a whole, an original work of authorship. For the purposes
|
||||
of this License, Derivative Works shall not include works that remain
|
||||
separable from, or merely link (or bind by name) to the interfaces of,
|
||||
the Work and Derivative Works thereof.
|
||||
|
||||
"Contribution" shall mean any work of authorship, including
|
||||
the original version of the Work and any modifications or additions
|
||||
to that Work or Derivative Works thereof, that is intentionally
|
||||
submitted to Licensor for inclusion in the Work by the copyright owner
|
||||
or by an individual or Legal Entity authorized to submit on behalf of
|
||||
the copyright owner. For the purposes of this definition, "submitted"
|
||||
means any form of electronic, verbal, or written communication sent
|
||||
to the Licensor or its representatives, including but not limited to
|
||||
communication on electronic mailing lists, source code control systems,
|
||||
and issue tracking systems that are managed by, or on behalf of, the
|
||||
Licensor for the purpose of discussing and improving the Work, but
|
||||
excluding communication that is conspicuously marked or otherwise
|
||||
designated in writing by the copyright owner as "Not a Contribution."
|
||||
|
||||
"Contributor" shall mean Licensor and any individual or Legal Entity
|
||||
on behalf of whom a Contribution has been received by Licensor and
|
||||
subsequently incorporated within the Work.
|
||||
|
||||
2. Grant of Copyright License. Subject to the terms and conditions of
|
||||
this License, each Contributor hereby grants to You a perpetual,
|
||||
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
||||
copyright license to reproduce, prepare Derivative Works of,
|
||||
publicly display, publicly perform, sublicense, and distribute the
|
||||
Work and such Derivative Works in Source or Object form.
|
||||
|
||||
3. Grant of Patent License. Subject to the terms and conditions of
|
||||
this License, each Contributor hereby grants to You a perpetual,
|
||||
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
||||
(except as stated in this section) patent license to make, have made,
|
||||
use, offer to sell, sell, import, and otherwise transfer the Work,
|
||||
where such license applies only to those patent claims licensable
|
||||
by such Contributor that are necessarily infringed by their
|
||||
Contribution(s) alone or by combination of their Contribution(s)
|
||||
with the Work to which such Contribution(s) was submitted. If You
|
||||
institute patent litigation against any entity (including a
|
||||
cross-claim or counterclaim in a lawsuit) alleging that the Work
|
||||
or a Contribution incorporated within the Work constitutes direct
|
||||
or contributory patent infringement, then any patent licenses
|
||||
granted to You under this License for that Work shall terminate
|
||||
as of the date such litigation is filed.
|
||||
|
||||
4. Redistribution. You may reproduce and distribute copies of the
|
||||
Work or Derivative Works thereof in any medium, with or without
|
||||
modifications, and in Source or Object form, provided that You
|
||||
meet the following conditions:
|
||||
|
||||
(a) You must give any other recipients of the Work or
|
||||
Derivative Works a copy of this License; and
|
||||
|
||||
(b) You must cause any modified files to carry prominent notices
|
||||
stating that You changed the files; and
|
||||
|
||||
(c) You must retain, in the Source form of any Derivative Works
|
||||
that You distribute, all copyright, patent, trademark, and
|
||||
attribution notices from the Source form of the Work,
|
||||
excluding those notices that do not pertain to any part of
|
||||
the Derivative Works; and
|
||||
|
||||
(d) If the Work includes a "NOTICE" text file as part of its
|
||||
distribution, then any Derivative Works that You distribute must
|
||||
include a readable copy of the attribution notices contained
|
||||
within such NOTICE file, excluding those notices that do not
|
||||
pertain to any part of the Derivative Works, in at least one
|
||||
of the following places: within a NOTICE text file distributed
|
||||
as part of the Derivative Works; within the Source form or
|
||||
documentation, if provided along with the Derivative Works; or,
|
||||
within a display generated by the Derivative Works, if and
|
||||
wherever such third-party notices normally appear. The contents
|
||||
of the NOTICE file are for informational purposes only and
|
||||
do not modify the License. You may add Your own attribution
|
||||
notices within Derivative Works that You distribute, alongside
|
||||
or as an addendum to the NOTICE text from the Work, provided
|
||||
that such additional attribution notices cannot be construed
|
||||
as modifying the License.
|
||||
|
||||
You may add Your own copyright statement to Your modifications and
|
||||
may provide additional or different license terms and conditions
|
||||
for use, reproduction, or distribution of Your modifications, or
|
||||
for any such Derivative Works as a whole, provided Your use,
|
||||
reproduction, and distribution of the Work otherwise complies with
|
||||
the conditions stated in this License.
|
||||
|
||||
5. Submission of Contributions. Unless You explicitly state otherwise,
|
||||
any Contribution intentionally submitted for inclusion in the Work
|
||||
by You to the Licensor shall be under the terms and conditions of
|
||||
this License, without any additional terms or conditions.
|
||||
Notwithstanding the above, nothing herein shall supersede or modify
|
||||
the terms of any separate license agreement you may have executed
|
||||
with Licensor regarding such Contributions.
|
||||
|
||||
6. Trademarks. This License does not grant permission to use the trade
|
||||
names, trademarks, service marks, or product names of the Licensor,
|
||||
except as required for reasonable and customary use in describing the
|
||||
origin of the Work and reproducing the content of the NOTICE file.
|
||||
|
||||
7. Disclaimer of Warranty. Unless required by applicable law or
|
||||
agreed to in writing, Licensor provides the Work (and each
|
||||
Contributor provides its Contributions) on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
|
||||
implied, including, without limitation, any warranties or conditions
|
||||
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
|
||||
PARTICULAR PURPOSE. You are solely responsible for determining the
|
||||
appropriateness of using or redistributing the Work and assume any
|
||||
risks associated with Your exercise of permissions under this License.
|
||||
|
||||
8. Limitation of Liability. In no event and under no legal theory,
|
||||
whether in tort (including negligence), contract, or otherwise,
|
||||
unless required by applicable law (such as deliberate and grossly
|
||||
negligent acts) or agreed to in writing, shall any Contributor be
|
||||
liable to You for damages, including any direct, indirect, special,
|
||||
incidental, or consequential damages of any character arising as a
|
||||
result of this License or out of the use or inability to use the
|
||||
Work (including but not limited to damages for loss of goodwill,
|
||||
work stoppage, computer failure or malfunction, or any and all
|
||||
other commercial damages or losses), even if such Contributor
|
||||
has been advised of the possibility of such damages.
|
||||
|
||||
9. Accepting Warranty or Additional Liability. While redistributing
|
||||
the Work or Derivative Works thereof, You may choose to offer,
|
||||
and charge a fee for, acceptance of support, warranty, indemnity,
|
||||
or other liability obligations and/or rights consistent with this
|
||||
License. However, in accepting such obligations, You may act only
|
||||
on Your own behalf and on Your sole responsibility, not on behalf
|
||||
of any other Contributor, and only if You agree to indemnify,
|
||||
defend, and hold each Contributor harmless for any liability
|
||||
incurred by, or claims asserted against, such Contributor by reason
|
||||
of your accepting any such warranty or additional liability.
|
||||
|
||||
END OF TERMS AND CONDITIONS
|
||||
|
||||
APPENDIX: How to apply the Apache License to your work.
|
||||
|
||||
To apply the Apache License to your work, attach the following
|
||||
boilerplate notice, with the fields enclosed by brackets "[]"
|
||||
replaced with your own identifying information. (Don't include
|
||||
the brackets!) The text should be enclosed in the appropriate
|
||||
comment syntax for the file format. We also recommend that a
|
||||
file or class name and description of purpose be included on the
|
||||
same "printed page" as the copyright notice for easier
|
||||
identification within third-party archives.
|
||||
|
||||
Copyright [yyyy] [name of copyright owner]
|
||||
|
||||
Licensed 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.
|
223
licenses/ELASTIC-LICENSE.txt
Normal file
223
licenses/ELASTIC-LICENSE.txt
Normal file
|
@ -0,0 +1,223 @@
|
|||
ELASTIC LICENSE AGREEMENT
|
||||
|
||||
PLEASE READ CAREFULLY THIS ELASTIC LICENSE AGREEMENT (THIS "AGREEMENT"), WHICH
|
||||
CONSTITUTES A LEGALLY BINDING AGREEMENT AND GOVERNS ALL OF YOUR USE OF ALL OF
|
||||
THE ELASTIC SOFTWARE WITH WHICH THIS AGREEMENT IS INCLUDED ("ELASTIC SOFTWARE")
|
||||
THAT IS PROVIDED IN OBJECT CODE FORMAT, AND, IN ACCORDANCE WITH SECTION 2 BELOW,
|
||||
CERTAIN OF THE ELASTIC SOFTWARE THAT IS PROVIDED IN SOURCE CODE FORMAT. BY
|
||||
INSTALLING OR USING ANY OF THE ELASTIC SOFTWARE GOVERNED BY THIS AGREEMENT, YOU
|
||||
ARE ASSENTING TO THE TERMS AND CONDITIONS OF THIS AGREEMENT. IF YOU DO NOT AGREE
|
||||
WITH SUCH TERMS AND CONDITIONS, YOU MAY NOT INSTALL OR USE THE ELASTIC SOFTWARE
|
||||
GOVERNED BY THIS AGREEMENT. IF YOU ARE INSTALLING OR USING THE SOFTWARE ON
|
||||
BEHALF OF A LEGAL ENTITY, YOU REPRESENT AND WARRANT THAT YOU HAVE THE ACTUAL
|
||||
AUTHORITY TO AGREE TO THE TERMS AND CONDITIONS OF THIS AGREEMENT ON BEHALF OF
|
||||
SUCH ENTITY.
|
||||
|
||||
Posted Date: April 20, 2018
|
||||
|
||||
This Agreement is entered into by and between Elasticsearch BV ("Elastic") and
|
||||
You, or the legal entity on behalf of whom You are acting (as applicable,
|
||||
"You").
|
||||
|
||||
1. OBJECT CODE END USER LICENSES, RESTRICTIONS AND THIRD PARTY OPEN SOURCE
|
||||
SOFTWARE
|
||||
|
||||
1.1 Object Code End User License. Subject to the terms and conditions of
|
||||
Section 1.2 of this Agreement, Elastic hereby grants to You, AT NO CHARGE and
|
||||
for so long as you are not in breach of any provision of this Agreement, a
|
||||
License to the Basic Features and Functions of the Elastic Software.
|
||||
|
||||
1.2 Reservation of Rights; Restrictions. As between Elastic and You, Elastic
|
||||
and its licensors own all right, title and interest in and to the Elastic
|
||||
Software, and except as expressly set forth in Sections 1.1, and 2.1 of this
|
||||
Agreement, no other license to the Elastic Software is granted to You under
|
||||
this Agreement, by implication, estoppel or otherwise. You agree not to: (i)
|
||||
reverse engineer or decompile, decrypt, disassemble or otherwise reduce any
|
||||
Elastic Software provided to You in Object Code, or any portion thereof, to
|
||||
Source Code, except and only to the extent any such restriction is prohibited
|
||||
by applicable law, (ii) except as expressly permitted in this Agreement,
|
||||
prepare derivative works from, modify, copy or use the Elastic Software Object
|
||||
Code or the Commercial Software Source Code in any manner; (iii) except as
|
||||
expressly permitted in Section 1.1 above, transfer, sell, rent, lease,
|
||||
distribute, sublicense, loan or otherwise transfer, Elastic Software Object
|
||||
Code, in whole or in part, to any third party; (iv) use Elastic Software
|
||||
Object Code for providing time-sharing services, any software-as-a-service,
|
||||
service bureau services or as part of an application services provider or
|
||||
other service offering (collectively, "SaaS Offering") where obtaining access
|
||||
to the Elastic Software or the features and functions of the Elastic Software
|
||||
is a primary reason or substantial motivation for users of the SaaS Offering
|
||||
to access and/or use the SaaS Offering ("Prohibited SaaS Offering"); (v)
|
||||
circumvent the limitations on use of Elastic Software provided to You in
|
||||
Object Code format that are imposed or preserved by any License Key, or (vi)
|
||||
alter or remove any Marks and Notices in the Elastic Software. If You have any
|
||||
question as to whether a specific SaaS Offering constitutes a Prohibited SaaS
|
||||
Offering, or are interested in obtaining Elastic's permission to engage in
|
||||
commercial or non-commercial distribution of the Elastic Software, please
|
||||
contact elastic_license@elastic.co.
|
||||
|
||||
1.3 Third Party Open Source Software. The Commercial Software may contain or
|
||||
be provided with third party open source libraries, components, utilities and
|
||||
other open source software (collectively, "Open Source Software"), which Open
|
||||
Source Software may have applicable license terms as identified on a website
|
||||
designated by Elastic. Notwithstanding anything to the contrary herein, use of
|
||||
the Open Source Software shall be subject to the license terms and conditions
|
||||
applicable to such Open Source Software, to the extent required by the
|
||||
applicable licensor (which terms shall not restrict the license rights granted
|
||||
to You hereunder, but may contain additional rights). To the extent any
|
||||
condition of this Agreement conflicts with any license to the Open Source
|
||||
Software, the Open Source Software license will govern with respect to such
|
||||
Open Source Software only. Elastic may also separately provide you with
|
||||
certain open source software that is licensed by Elastic. Your use of such
|
||||
Elastic open source software will not be governed by this Agreement, but by
|
||||
the applicable open source license terms.
|
||||
|
||||
2. COMMERCIAL SOFTWARE SOURCE CODE
|
||||
|
||||
2.1 Limited License. Subject to the terms and conditions of Section 2.2 of
|
||||
this Agreement, Elastic hereby grants to You, AT NO CHARGE and for so long as
|
||||
you are not in breach of any provision of this Agreement, a limited,
|
||||
non-exclusive, non-transferable, fully paid up royalty free right and license
|
||||
to the Commercial Software in Source Code format, without the right to grant
|
||||
or authorize sublicenses, to prepare Derivative Works of the Commercial
|
||||
Software, provided You (i) do not hack the licensing mechanism, or otherwise
|
||||
circumvent the intended limitations on the use of Elastic Software to enable
|
||||
features other than Basic Features and Functions or those features You are
|
||||
entitled to as part of a Subscription, and (ii) use the resulting object code
|
||||
only for reasonable testing purposes.
|
||||
|
||||
2.2 Restrictions. Nothing in Section 2.1 grants You the right to (i) use the
|
||||
Commercial Software Source Code other than in accordance with Section 2.1
|
||||
above, (ii) use a Derivative Work of the Commercial Software outside of a
|
||||
Non-production Environment, in any production capacity, on a temporary or
|
||||
permanent basis, or (iii) transfer, sell, rent, lease, distribute, sublicense,
|
||||
loan or otherwise make available the Commercial Software Source Code, in whole
|
||||
or in part, to any third party. Notwithstanding the foregoing, You may
|
||||
maintain a copy of the repository in which the Source Code of the Commercial
|
||||
Software resides and that copy may be publicly accessible, provided that you
|
||||
include this Agreement with Your copy of the repository.
|
||||
|
||||
3. TERMINATION
|
||||
|
||||
3.1 Termination. This Agreement will automatically terminate, whether or not
|
||||
You receive notice of such Termination from Elastic, if You breach any of its
|
||||
provisions.
|
||||
|
||||
3.2 Post Termination. Upon any termination of this Agreement, for any reason,
|
||||
You shall promptly cease the use of the Elastic Software in Object Code format
|
||||
and cease use of the Commercial Software in Source Code format. For the
|
||||
avoidance of doubt, termination of this Agreement will not affect Your right
|
||||
to use Elastic Software, in either Object Code or Source Code formats, made
|
||||
available under the Apache License Version 2.0.
|
||||
|
||||
3.3 Survival. Sections 1.2, 2.2. 3.3, 4 and 5 shall survive any termination or
|
||||
expiration of this Agreement.
|
||||
|
||||
4. DISCLAIMER OF WARRANTIES AND LIMITATION OF LIABILITY
|
||||
|
||||
4.1 Disclaimer of Warranties. TO THE MAXIMUM EXTENT PERMITTED UNDER APPLICABLE
|
||||
LAW, THE ELASTIC SOFTWARE IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND,
|
||||
AND ELASTIC AND ITS LICENSORS MAKE NO WARRANTIES WHETHER EXPRESSED, IMPLIED OR
|
||||
STATUTORY REGARDING OR RELATING TO THE ELASTIC SOFTWARE. TO THE MAXIMUM EXTENT
|
||||
PERMITTED UNDER APPLICABLE LAW, ELASTIC AND ITS LICENSORS SPECIFICALLY
|
||||
DISCLAIM ALL IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR
|
||||
PURPOSE AND NON-INFRINGEMENT WITH RESPECT TO THE ELASTIC SOFTWARE, AND WITH
|
||||
RESPECT TO THE USE OF THE FOREGOING. FURTHER, ELASTIC DOES NOT WARRANT RESULTS
|
||||
OF USE OR THAT THE ELASTIC SOFTWARE WILL BE ERROR FREE OR THAT THE USE OF THE
|
||||
ELASTIC SOFTWARE WILL BE UNINTERRUPTED.
|
||||
|
||||
4.2 Limitation of Liability. IN NO EVENT SHALL ELASTIC OR ITS LICENSORS BE
|
||||
LIABLE TO YOU OR ANY THIRD PARTY FOR ANY DIRECT OR INDIRECT DAMAGES,
|
||||
INCLUDING, WITHOUT LIMITATION, FOR ANY LOSS OF PROFITS, LOSS OF USE, BUSINESS
|
||||
INTERRUPTION, LOSS OF DATA, COST OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY
|
||||
SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES OF ANY KIND, IN CONNECTION WITH
|
||||
OR ARISING OUT OF THE USE OR INABILITY TO USE THE ELASTIC SOFTWARE, OR THE
|
||||
PERFORMANCE OF OR FAILURE TO PERFORM THIS AGREEMENT, WHETHER ALLEGED AS A
|
||||
BREACH OF CONTRACT OR TORTIOUS CONDUCT, INCLUDING NEGLIGENCE, EVEN IF ELASTIC
|
||||
HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
|
||||
|
||||
5. MISCELLANEOUS
|
||||
|
||||
This Agreement completely and exclusively states the entire agreement of the
|
||||
parties regarding the subject matter herein, and it supersedes, and its terms
|
||||
govern, all prior proposals, agreements, or other communications between the
|
||||
parties, oral or written, regarding such subject matter. This Agreement may be
|
||||
modified by Elastic from time to time, and any such modifications will be
|
||||
effective upon the "Posted Date" set forth at the top of the modified
|
||||
Agreement. If any provision hereof is held unenforceable, this Agreement will
|
||||
continue without said provision and be interpreted to reflect the original
|
||||
intent of the parties. This Agreement and any non-contractual obligation
|
||||
arising out of or in connection with it, is governed exclusively by Dutch law.
|
||||
This Agreement shall not be governed by the 1980 UN Convention on Contracts
|
||||
for the International Sale of Goods. All disputes arising out of or in
|
||||
connection with this Agreement, including its existence and validity, shall be
|
||||
resolved by the courts with jurisdiction in Amsterdam, The Netherlands, except
|
||||
where mandatory law provides for the courts at another location in The
|
||||
Netherlands to have jurisdiction. The parties hereby irrevocably waive any and
|
||||
all claims and defenses either might otherwise have in any such action or
|
||||
proceeding in any of such courts based upon any alleged lack of personal
|
||||
jurisdiction, improper venue, forum non conveniens or any similar claim or
|
||||
defense. A breach or threatened breach, by You of Section 2 may cause
|
||||
irreparable harm for which damages at law may not provide adequate relief, and
|
||||
therefore Elastic shall be entitled to seek injunctive relief without being
|
||||
required to post a bond. You may not assign this Agreement (including by
|
||||
operation of law in connection with a merger or acquisition), in whole or in
|
||||
part to any third party without the prior written consent of Elastic, which
|
||||
may be withheld or granted by Elastic in its sole and absolute discretion.
|
||||
Any assignment in violation of the preceding sentence is void. Notices to
|
||||
Elastic may also be sent to legal@elastic.co.
|
||||
|
||||
6. DEFINITIONS
|
||||
|
||||
The following terms have the meanings ascribed:
|
||||
|
||||
6.1 "Affiliate" means, with respect to a party, any entity that controls, is
|
||||
controlled by, or which is under common control with, such party, where
|
||||
"control" means ownership of at least fifty percent (50%) of the outstanding
|
||||
voting shares of the entity, or the contractual right to establish policy for,
|
||||
and manage the operations of, the entity.
|
||||
|
||||
6.2 "Basic Features and Functions" means those features and functions of the
|
||||
Elastic Software that are eligible for use under a Basic license, as set forth
|
||||
at https://www.elastic.co/subscriptions, as may be modified by Elastic from
|
||||
time to time.
|
||||
|
||||
6.3 "Commercial Software" means the Elastic Software Source Code in any file
|
||||
containing a header stating the contents are subject to the Elastic License or
|
||||
which is contained in the repository folder labeled "x-pack", unless a LICENSE
|
||||
file present in the directory subtree declares a different license.
|
||||
|
||||
6.4 "Derivative Work of the Commercial Software" means, for purposes of this
|
||||
Agreement, any modification(s) or enhancement(s) to the Commercial Software,
|
||||
which represent, as a whole, an original work of authorship.
|
||||
|
||||
6.5 "License" means a limited, non-exclusive, non-transferable, fully paid up,
|
||||
royalty free, right and license, without the right to grant or authorize
|
||||
sublicenses, solely for Your internal business operations to (i) install and
|
||||
use the applicable Features and Functions of the Elastic Software in Object
|
||||
Code, and (ii) permit Contractors and Your Affiliates to use the Elastic
|
||||
software as set forth in (i) above, provided that such use by Contractors must
|
||||
be solely for Your benefit and/or the benefit of Your Affiliates, and You
|
||||
shall be responsible for all acts and omissions of such Contractors and
|
||||
Affiliates in connection with their use of the Elastic software that are
|
||||
contrary to the terms and conditions of this Agreement.
|
||||
|
||||
6.6 "License Key" means a sequence of bytes, including but not limited to a
|
||||
JSON blob, that is used to enable certain features and functions of the
|
||||
Elastic Software.
|
||||
|
||||
6.7 "Marks and Notices" means all Elastic trademarks, trade names, logos and
|
||||
notices present on the Documentation as originally provided by Elastic.
|
||||
|
||||
6.8 "Non-production Environment" means an environment for development, testing
|
||||
or quality assurance, where software is not used for production purposes.
|
||||
|
||||
6.9 "Object Code" means any form resulting from mechanical transformation or
|
||||
translation of Source Code form, including but not limited to compiled object
|
||||
code, generated documentation, and conversions to other media types.
|
||||
|
||||
6.10 "Source Code" means the preferred form of computer software for making
|
||||
modifications, including but not limited to software source code,
|
||||
documentation source, and configuration files.
|
||||
|
||||
6.11 "Subscription" means the right to receive Support Services and a License
|
||||
to the Commercial Software.
|
32
package.json
32
package.json
|
@ -11,7 +11,7 @@
|
|||
"dashboarding"
|
||||
],
|
||||
"private": false,
|
||||
"version": "6.3.0",
|
||||
"version": "6.4.0",
|
||||
"branch": "6.x",
|
||||
"build": {
|
||||
"number": 8467,
|
||||
|
@ -54,10 +54,8 @@
|
|||
"test:ui:runner": "echo 'use `node scripts/functional_test_runner`' && false",
|
||||
"test:server": "grunt test:server",
|
||||
"test:coverage": "grunt test:coverage",
|
||||
"test:visualRegression": "grunt test:visualRegression:buildGallery",
|
||||
"checkLicenses": "grunt licenses",
|
||||
"build": "grunt build",
|
||||
"release": "grunt release",
|
||||
"build": "node scripts/build",
|
||||
"start": "sh ./bin/kibana --dev",
|
||||
"precommit": "node scripts/precommit_hook",
|
||||
"karma": "karma start",
|
||||
|
@ -77,7 +75,7 @@
|
|||
"url": "https://github.com/elastic/kibana.git"
|
||||
},
|
||||
"dependencies": {
|
||||
"@elastic/eui": "v0.0.38",
|
||||
"@elastic/eui": "v0.0.46",
|
||||
"@elastic/filesaver": "1.1.2",
|
||||
"@elastic/numeral": "2.3.2",
|
||||
"@elastic/ui-ace": "0.2.3",
|
||||
|
@ -132,8 +130,8 @@
|
|||
"handlebars": "4.0.5",
|
||||
"hapi": "14.2.0",
|
||||
"hjson": "3.1.0",
|
||||
"http-proxy-agent": "1.0.0",
|
||||
"https-proxy-agent": "2.1.1",
|
||||
"http-proxy-agent": "^2.1.0",
|
||||
"https-proxy-agent": "^2.2.1",
|
||||
"inert": "4.0.2",
|
||||
"jade": "1.11.0",
|
||||
"jade-loader": "0.8.0",
|
||||
|
@ -146,7 +144,7 @@
|
|||
"leaflet": "1.0.3",
|
||||
"leaflet-draw": "0.4.10",
|
||||
"leaflet-responsive-popup": "0.2.0",
|
||||
"leaflet-vega": "0.8.3",
|
||||
"leaflet-vega": "^0.8.6",
|
||||
"leaflet.heat": "0.2.0",
|
||||
"less": "2.7.1",
|
||||
"less-loader": "4.0.5",
|
||||
|
@ -204,15 +202,18 @@
|
|||
"ui-select": "0.19.6",
|
||||
"url-loader": "0.5.9",
|
||||
"uuid": "3.0.1",
|
||||
"val-loader": "^1.1.0",
|
||||
"validate-npm-package-name": "2.2.2",
|
||||
"vega-lib": "^3.2.1",
|
||||
"vega-lite": "^2.3.1",
|
||||
"vega-lib": "^3.3.1",
|
||||
"vega-lite": "^2.4.0",
|
||||
"vega-tooltip": "^0.9.14",
|
||||
"vega-schema-url-parser": "1.0.0",
|
||||
"vision": "4.1.0",
|
||||
"webpack": "3.6.0",
|
||||
"webpack-merge": "4.1.0",
|
||||
"whatwg-fetch": "^2.0.3",
|
||||
"wreck": "12.4.0",
|
||||
"x-pack": "link:x-pack",
|
||||
"yauzl": "2.7.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
|
@ -220,17 +221,20 @@
|
|||
"@elastic/eslint-plugin-kibana-custom": "link:packages/eslint-plugin-kibana-custom",
|
||||
"@kbn/es": "link:packages/kbn-es",
|
||||
"@kbn/eslint-import-resolver-kibana": "link:packages/kbn-eslint-import-resolver-kibana",
|
||||
"@kbn/eslint-plugin-license-header": "link:packages/kbn-eslint-plugin-license-header",
|
||||
"@kbn/plugin-generator": "link:packages/kbn-plugin-generator",
|
||||
"angular-mocks": "1.4.7",
|
||||
"babel-eslint": "8.1.2",
|
||||
"babel-jest": "^22.4.3",
|
||||
"backport": "2.2.0",
|
||||
"chai": "3.5.0",
|
||||
"chalk": "2.3.0",
|
||||
"chance": "1.0.6",
|
||||
"cheerio": "0.22.0",
|
||||
"chokidar": "1.6.0",
|
||||
"chromedriver": "2.36",
|
||||
"classnames": "2.2.5",
|
||||
"dedent": "^0.7.0",
|
||||
"enzyme": "3.2.0",
|
||||
"enzyme-adapter-react-16": "^1.1.1",
|
||||
"enzyme-to-json": "3.3.0",
|
||||
|
@ -248,17 +252,15 @@
|
|||
"expect.js": "0.3.1",
|
||||
"faker": "1.1.0",
|
||||
"getopts": "2.0.0",
|
||||
"globby": "^8.0.0",
|
||||
"grunt": "1.0.1",
|
||||
"grunt-aws-s3": "0.14.5",
|
||||
"grunt-babel": "6.0.0",
|
||||
"grunt-cli": "0.1.13",
|
||||
"grunt-contrib-clean": "1.0.0",
|
||||
"grunt-contrib-copy": "0.8.1",
|
||||
"grunt-contrib-watch": "^1.0.0",
|
||||
"grunt-karma": "2.0.0",
|
||||
"grunt-peg": "^2.0.1",
|
||||
"grunt-run": "0.7.0",
|
||||
"grunt-simple-mocha": "0.4.0",
|
||||
"gulp-babel": "^7.0.1",
|
||||
"gulp-sourcemaps": "1.7.3",
|
||||
"husky": "0.8.1",
|
||||
"image-diff": "1.6.0",
|
||||
|
@ -286,7 +288,7 @@
|
|||
"ncp": "2.0.0",
|
||||
"nock": "8.0.0",
|
||||
"pixelmatch": "4.0.2",
|
||||
"prettier": "^1.11.1",
|
||||
"prettier": "^1.12.1",
|
||||
"proxyquire": "1.7.10",
|
||||
"simple-git": "1.37.0",
|
||||
"sinon": "1.17.2",
|
||||
|
|
|
@ -105,6 +105,7 @@ module.exports = {
|
|||
'react/jsx-indent-props': ['error', 2],
|
||||
'react/jsx-max-props-per-line': ['error', { maximum: 1, when: 'multiline' }],
|
||||
'react/jsx-no-duplicate-props': ['error', { ignoreCase: true }],
|
||||
'react/no-danger': 'error',
|
||||
'react/self-closing-comp': 'error',
|
||||
'react/jsx-wrap-multilines': ['error', {
|
||||
declaration: true,
|
||||
|
|
|
@ -8,13 +8,14 @@ exports.description = 'Install and run from an Elasticsearch tar';
|
|||
exports.usage = 'es archive <path> [<args>]';
|
||||
|
||||
exports.help = (defaults = {}) => {
|
||||
const { password = 'changeme', 'base-path': basePath } = defaults;
|
||||
|
||||
return dedent`
|
||||
Options:
|
||||
|
||||
--base-path Path containing cache/installations [default: ${
|
||||
defaults['base-path']
|
||||
}]
|
||||
--base-path Path containing cache/installations [default: ${basePath}]
|
||||
--install-path Installation path, defaults to 'source' within base-path
|
||||
--password Sets password for elastic user [default: ${password}]
|
||||
-E Additional key=value settings to pass to Elasticsearch
|
||||
|
||||
Example:
|
||||
|
|
|
@ -5,14 +5,20 @@ const { Cluster } = require('../cluster');
|
|||
exports.description = 'Downloads and run from a nightly snapshot';
|
||||
|
||||
exports.help = (defaults = {}) => {
|
||||
const {
|
||||
license = 'basic',
|
||||
password = 'changeme',
|
||||
'base-path': basePath,
|
||||
} = defaults;
|
||||
|
||||
return dedent`
|
||||
Options:
|
||||
|
||||
--license Run with a 'oss', 'basic', or 'trial' license [default: ${license}]
|
||||
--version Version of ES to download [default: ${defaults.version}]
|
||||
--base-path Path containing cache/installations [default: ${
|
||||
defaults['base-path']
|
||||
}]
|
||||
--base-path Path containing cache/installations [default: ${basePath}]
|
||||
--install-path Installation path, defaults to 'source' within base-path
|
||||
--password Sets password for elastic user [default: ${password}]
|
||||
-E Additional key=value settings to pass to Elasticsearch
|
||||
|
||||
Example:
|
||||
|
|
|
@ -5,14 +5,20 @@ const { Cluster } = require('../cluster');
|
|||
exports.description = 'Build and run from source';
|
||||
|
||||
exports.help = (defaults = {}) => {
|
||||
const {
|
||||
license = 'basic',
|
||||
password = 'changeme',
|
||||
'base-path': basePath,
|
||||
} = defaults;
|
||||
|
||||
return dedent`
|
||||
Options:
|
||||
|
||||
--license Run with a 'oss', 'basic', or 'trial' license [default: ${license}]
|
||||
--source-path Path to ES source [default: ${defaults['source-path']}]
|
||||
--base-path Path containing cache/installations [default: ${
|
||||
defaults['base-path']
|
||||
}]
|
||||
--base-path Path containing cache/installations [default: ${basePath}]
|
||||
--install-path Installation path, defaults to 'source' within base-path
|
||||
--password Sets password for elastic user [default: ${password}]
|
||||
-E Additional key=value settings to pass to Elasticsearch
|
||||
|
||||
Example:
|
||||
|
|
|
@ -151,10 +151,9 @@ exports.Cluster = class Cluster {
|
|||
this._log.info(chalk.bold('Starting'));
|
||||
this._log.indent(4);
|
||||
|
||||
const args = extractConfigFiles(esArgs, this._installPath).reduce(
|
||||
(acc, cur) => acc.concat(['-E', cur]),
|
||||
[]
|
||||
);
|
||||
const args = extractConfigFiles(esArgs, installPath, {
|
||||
log: this._log,
|
||||
}).reduce((acc, cur) => acc.concat(['-E', cur]), []);
|
||||
|
||||
this._log.debug('%s %s', ES_BIN, args.join(' '));
|
||||
|
||||
|
@ -176,7 +175,7 @@ exports.Cluster = class Cluster {
|
|||
this._process.once('exit', code => {
|
||||
// JVM exits with 143 on SIGTERM and 130 on SIGINT, dont' treat them as errors
|
||||
if (code > 0 && !(code === 143 || code === 130)) {
|
||||
reject(createCliError(`ES exitted with code ${code}`));
|
||||
reject(createCliError(`ES exited with code ${code}`));
|
||||
} else {
|
||||
resolve();
|
||||
}
|
||||
|
|
|
@ -1,26 +1,29 @@
|
|||
const fs = require('fs');
|
||||
const path = require('path');
|
||||
const chalk = require('chalk');
|
||||
const execa = require('execa');
|
||||
const { log: defaultLog, extractTarball } = require('../utils');
|
||||
const { BASE_PATH } = require('../paths');
|
||||
const { BASE_PATH, ES_CONFIG, ES_KEYSTORE_BIN } = require('../paths');
|
||||
|
||||
/**
|
||||
* Extracts an ES archive and optionally installs plugins
|
||||
*
|
||||
* @param {String} archive - path to tar
|
||||
* @param {Object} options
|
||||
* @property {('oss'|'basic'|'trial')} options.license
|
||||
* @property {String} options.basePath
|
||||
* @property {String} options.installPath
|
||||
* @property {ToolingLog} options.log
|
||||
*/
|
||||
exports.installArchive = async function installArchive(
|
||||
archive,
|
||||
{
|
||||
exports.installArchive = async function installArchive(archive, options = {}) {
|
||||
const {
|
||||
license = 'basic',
|
||||
password = 'changeme',
|
||||
basePath = BASE_PATH,
|
||||
installPath = path.resolve(basePath, path.basename(archive, '.tar.gz')),
|
||||
log = defaultLog,
|
||||
}
|
||||
) {
|
||||
} = options;
|
||||
|
||||
if (fs.existsSync(installPath)) {
|
||||
log.info('install directory already exists, removing');
|
||||
rmrfSync(installPath);
|
||||
|
@ -30,6 +33,17 @@ exports.installArchive = async function installArchive(
|
|||
await extractTarball(archive, installPath);
|
||||
log.info('extracted to %s', chalk.bold(installPath));
|
||||
|
||||
if (license !== 'oss') {
|
||||
await appendToConfig(
|
||||
installPath,
|
||||
'xpack.license.self_generated.type',
|
||||
license
|
||||
);
|
||||
|
||||
await appendToConfig(installPath, 'xpack.security.enabled', 'true');
|
||||
await configureKeystore(installPath, password, log);
|
||||
}
|
||||
|
||||
return { installPath };
|
||||
};
|
||||
|
||||
|
@ -52,3 +66,36 @@ function rmrfSync(path) {
|
|||
fs.rmdirSync(path);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Appends single line to elasticsearch.yml config file
|
||||
*
|
||||
* @param {String} installPath
|
||||
* @param {String} key
|
||||
* @param {String} value
|
||||
*/
|
||||
async function appendToConfig(installPath, key, value) {
|
||||
fs.appendFileSync(
|
||||
path.resolve(installPath, ES_CONFIG),
|
||||
`${key}: ${value}\n`,
|
||||
'utf8'
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Creates and configures Keystore
|
||||
*
|
||||
* @param {String} installPath
|
||||
* @param {String} password
|
||||
* @param {ToolingLog} log
|
||||
*/
|
||||
async function configureKeystore(installPath, password, log = defaultLog) {
|
||||
log.info('setting bootstrap password to %s', chalk.bold(password));
|
||||
|
||||
await execa(ES_KEYSTORE_BIN, ['create'], { cwd: installPath });
|
||||
|
||||
await execa(ES_KEYSTORE_BIN, ['add', 'bootstrap.password', '-x'], {
|
||||
input: password,
|
||||
cwd: installPath,
|
||||
});
|
||||
}
|
||||
|
|
|
@ -8,27 +8,40 @@ const { installArchive } = require('./archive');
|
|||
const { log: defaultLog, cache } = require('../utils');
|
||||
|
||||
/**
|
||||
* Installs ES from snapshot
|
||||
*
|
||||
* @param {Object} options
|
||||
* @property {('oss'|'basic'|'trial')} options.license
|
||||
* @property {String} options.password
|
||||
* @property {String} options.version
|
||||
* @property {String} options.basePath
|
||||
* @property {String} options.installPath
|
||||
* @property {ToolingLog} options.log
|
||||
*/
|
||||
exports.installSnapshot = async function installSnapshot({
|
||||
license = 'basic',
|
||||
password = 'password',
|
||||
version,
|
||||
basePath = BASE_PATH,
|
||||
installPath = path.resolve(basePath, version),
|
||||
log = defaultLog,
|
||||
}) {
|
||||
const fileName = `elasticsearch-${version}-SNAPSHOT.tar.gz`;
|
||||
const fileName = getFilename(license, version);
|
||||
const url = `https://snapshots.elastic.co/downloads/elasticsearch/${fileName}`;
|
||||
const dest = path.resolve(basePath, 'cache', fileName);
|
||||
|
||||
log.info('version: %s', chalk.bold(version));
|
||||
log.info('install path: %s', chalk.bold(installPath));
|
||||
log.info('license: %s', chalk.bold(license));
|
||||
|
||||
await downloadFile(url, dest, log);
|
||||
return await installArchive(dest, { installPath, basePath, log });
|
||||
return await installArchive(dest, {
|
||||
license,
|
||||
password,
|
||||
basePath,
|
||||
installPath,
|
||||
log,
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
|
@ -82,3 +95,11 @@ function downloadFile(url, dest, log) {
|
|||
})
|
||||
);
|
||||
}
|
||||
|
||||
function getFilename(license, version) {
|
||||
if (license === 'oss') {
|
||||
return `elasticsearch-oss/elasticsearch-oss-${version}-SNAPSHOT.tar.gz`;
|
||||
}
|
||||
|
||||
return `elasticsearch-${version}-SNAPSHOT.tar.gz`;
|
||||
}
|
||||
|
|
|
@ -8,7 +8,12 @@ const simpleGit = require('simple-git/promise');
|
|||
const { installArchive } = require('./archive');
|
||||
const { createCliError } = require('../errors');
|
||||
const { findMostRecentlyChanged, log: defaultLog, cache } = require('../utils');
|
||||
const { GRADLE_BIN, ES_ARCHIVE_PATTERN, BASE_PATH } = require('../paths');
|
||||
const {
|
||||
GRADLE_BIN,
|
||||
ES_ARCHIVE_PATTERN,
|
||||
ES_OSS_ARCHIVE_PATTERN,
|
||||
BASE_PATH,
|
||||
} = require('../paths');
|
||||
|
||||
const onceEvent = (emitter, event) =>
|
||||
new Promise(resolve => emitter.once(event, resolve));
|
||||
|
@ -17,12 +22,16 @@ const onceEvent = (emitter, event) =>
|
|||
* Installs ES from source
|
||||
*
|
||||
* @param {Object} options
|
||||
* @property {('oss'|'basic'|'trial')} options.license
|
||||
* @property {String} options.password
|
||||
* @property {String} options.sourcePath
|
||||
* @property {String} options.basePath
|
||||
* @property {String} options.installPath
|
||||
* @property {ToolingLog} options.log
|
||||
*/
|
||||
exports.installSource = async function installSource({
|
||||
license = 'basic',
|
||||
password = 'changeme',
|
||||
sourcePath,
|
||||
basePath = BASE_PATH,
|
||||
installPath = path.resolve(basePath, 'source'),
|
||||
|
@ -30,15 +39,16 @@ exports.installSource = async function installSource({
|
|||
}) {
|
||||
log.info('source path: %s', chalk.bold(sourcePath));
|
||||
log.info('install path: %s', chalk.bold(installPath));
|
||||
log.info('license: %s', chalk.bold(license));
|
||||
|
||||
const { filename, etag } = await sourceInfo(sourcePath, log);
|
||||
const cacheDest = path.resolve(basePath, 'cache', filename);
|
||||
const metadata = await sourceInfo(sourcePath, license, log);
|
||||
const dest = path.resolve(basePath, 'cache', metadata.filename);
|
||||
|
||||
const cacheMeta = cache.readMeta(cacheDest);
|
||||
const isCached = cacheMeta.exists && cacheMeta.etag === etag;
|
||||
const cacheMeta = cache.readMeta(dest);
|
||||
const isCached = cacheMeta.exists && cacheMeta.etag === metadata.etag;
|
||||
const archive = isCached
|
||||
? cacheDest
|
||||
: await createSnapshot({ sourcePath, log });
|
||||
? dest
|
||||
: await createSnapshot({ sourcePath, log, license });
|
||||
|
||||
if (isCached) {
|
||||
log.info(
|
||||
|
@ -46,11 +56,17 @@ exports.installSource = async function installSource({
|
|||
chalk.bold(cacheMeta.ts)
|
||||
);
|
||||
} else {
|
||||
cache.writeMeta(cacheDest, { etag });
|
||||
fs.copyFileSync(archive, cacheDest);
|
||||
cache.writeMeta(dest, metadata);
|
||||
fs.copyFileSync(archive, dest);
|
||||
}
|
||||
|
||||
return await installArchive(cacheDest, { basePath, installPath, log });
|
||||
return await installArchive(dest, {
|
||||
license,
|
||||
password,
|
||||
basePath,
|
||||
installPath,
|
||||
log,
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
|
@ -58,7 +74,7 @@ exports.installSource = async function installSource({
|
|||
* @param {String} cwd
|
||||
* @param {ToolingLog} log
|
||||
*/
|
||||
async function sourceInfo(cwd, log = defaultLog) {
|
||||
async function sourceInfo(cwd, license, log = defaultLog) {
|
||||
if (!fs.existsSync(cwd)) {
|
||||
throw new Error(`${cwd} does not exist`);
|
||||
}
|
||||
|
@ -83,11 +99,16 @@ async function sourceInfo(cwd, log = defaultLog) {
|
|||
const cwdHash = crypto
|
||||
.createHash('md5')
|
||||
.update(cwd)
|
||||
.digest('hex');
|
||||
.digest('hex')
|
||||
.substr(0, 8);
|
||||
|
||||
const basename = `${branch}${license === 'oss' ? '-oss-' : '-'}${cwdHash}`;
|
||||
const filename = `${basename}.tar.gz`;
|
||||
|
||||
return {
|
||||
etag: etag.digest('hex'),
|
||||
filename: `${branch}-${cwdHash.substr(0, 8)}.tar.gz`,
|
||||
filename,
|
||||
cwd,
|
||||
branch,
|
||||
};
|
||||
}
|
||||
|
@ -96,12 +117,14 @@ async function sourceInfo(cwd, log = defaultLog) {
|
|||
* Creates archive from source
|
||||
*
|
||||
* @param {Object} options
|
||||
* @property {('oss'|'basic'|'trial')} options.license
|
||||
* @property {String} options.sourcePath
|
||||
* @property {ToolingLog} options.log
|
||||
* @returns {Object} containing archive and optional plugins
|
||||
*/
|
||||
async function createSnapshot({ sourcePath, log = defaultLog }) {
|
||||
const buildArgs = [':distribution:archives:tar:assemble'];
|
||||
async function createSnapshot({ license, sourcePath, log = defaultLog }) {
|
||||
const tarTask = license === 'oss' ? 'oss-tar' : 'tar';
|
||||
const buildArgs = [`:distribution:archives:${tarTask}:assemble`];
|
||||
|
||||
log.info('%s %s', GRADLE_BIN, buildArgs.join(' '));
|
||||
|
||||
|
@ -126,9 +149,15 @@ async function createSnapshot({ sourcePath, log = defaultLog }) {
|
|||
throw createCliError('unable to build ES');
|
||||
}
|
||||
|
||||
const archivePattern =
|
||||
license === 'oss' ? ES_OSS_ARCHIVE_PATTERN : ES_ARCHIVE_PATTERN;
|
||||
const esTarballPath = findMostRecentlyChanged(
|
||||
path.resolve(sourcePath, ES_ARCHIVE_PATTERN)
|
||||
path.resolve(sourcePath, archivePattern)
|
||||
);
|
||||
|
||||
if (!esTarballPath) {
|
||||
throw createCliError('could not locate ES distribution');
|
||||
}
|
||||
|
||||
return esTarballPath;
|
||||
}
|
||||
|
|
|
@ -0,0 +1,9 @@
|
|||
#!/usr/bin/env node
|
||||
|
||||
const { exitCode, start } = JSON.parse(process.argv[2]);
|
||||
|
||||
if (start) {
|
||||
console.log('started');
|
||||
}
|
||||
|
||||
process.exitCode = exitCode;
|
330
packages/kbn-es/src/integration_tests/cluster.test.js
Normal file
330
packages/kbn-es/src/integration_tests/cluster.test.js
Normal file
|
@ -0,0 +1,330 @@
|
|||
const { createToolingLog } = require('@kbn/dev-utils');
|
||||
const execa = require('execa');
|
||||
const { Cluster } = require('../cluster');
|
||||
const {
|
||||
installSource,
|
||||
installSnapshot,
|
||||
installArchive,
|
||||
} = require('../install');
|
||||
|
||||
jest.mock('../install', () => ({
|
||||
installSource: jest.fn(),
|
||||
installSnapshot: jest.fn(),
|
||||
installArchive: jest.fn(),
|
||||
}));
|
||||
|
||||
jest.mock('execa', () => jest.fn());
|
||||
|
||||
const log = createToolingLog('verbose');
|
||||
log.onData = jest.fn();
|
||||
log.on('data', log.onData);
|
||||
|
||||
function sleep(ms) {
|
||||
return new Promise(resolve => setTimeout(resolve, ms));
|
||||
}
|
||||
|
||||
async function ensureNoResolve(promise) {
|
||||
await Promise.race([
|
||||
sleep(100),
|
||||
promise.then(() => {
|
||||
throw new Error('promise was not supposed to resolve');
|
||||
}),
|
||||
]);
|
||||
}
|
||||
|
||||
async function ensureResolve(promise) {
|
||||
return await Promise.race([
|
||||
promise,
|
||||
sleep(100).then(() => {
|
||||
throw new Error(
|
||||
'promise was supposed to resolve with installSource() resolution'
|
||||
);
|
||||
}),
|
||||
]);
|
||||
}
|
||||
|
||||
function mockEsBin({ exitCode, start }) {
|
||||
execa.mockImplementationOnce((cmd, args, options) =>
|
||||
require.requireActual('execa')(
|
||||
process.execPath,
|
||||
[
|
||||
require.resolve('./__fixtures__/es_bin.js'),
|
||||
JSON.stringify({
|
||||
exitCode,
|
||||
start,
|
||||
}),
|
||||
],
|
||||
options
|
||||
)
|
||||
);
|
||||
}
|
||||
|
||||
beforeEach(() => {
|
||||
jest.resetAllMocks();
|
||||
});
|
||||
|
||||
describe('#installSource()', () => {
|
||||
it('awaits installSource() promise and returns { installPath }', async () => {
|
||||
let resolveInstallSource;
|
||||
installSource.mockImplementationOnce(
|
||||
() =>
|
||||
new Promise(resolve => {
|
||||
resolveInstallSource = () => {
|
||||
resolve({ installPath: 'foo' });
|
||||
};
|
||||
})
|
||||
);
|
||||
|
||||
const cluster = new Cluster(log);
|
||||
const promise = cluster.installSource();
|
||||
await ensureNoResolve(promise);
|
||||
resolveInstallSource();
|
||||
await expect(ensureResolve(promise)).resolves.toEqual({
|
||||
installPath: 'foo',
|
||||
});
|
||||
});
|
||||
|
||||
it('passes through all options+log to installSource()', async () => {
|
||||
installSource.mockResolvedValue({});
|
||||
const cluster = new Cluster(log);
|
||||
await cluster.installSource({ foo: 'bar' });
|
||||
expect(installSource).toHaveBeenCalledTimes(1);
|
||||
expect(installSource).toHaveBeenCalledWith({
|
||||
log,
|
||||
foo: 'bar',
|
||||
});
|
||||
});
|
||||
|
||||
it('rejects if installSource() rejects', async () => {
|
||||
installSource.mockRejectedValue(new Error('foo'));
|
||||
const cluster = new Cluster(log);
|
||||
await expect(cluster.installSource()).rejects.toThrowError('foo');
|
||||
});
|
||||
});
|
||||
|
||||
describe('#installSnapshot()', () => {
|
||||
it('awaits installSnapshot() promise and returns { installPath }', async () => {
|
||||
let resolveInstallSnapshot;
|
||||
installSnapshot.mockImplementationOnce(
|
||||
() =>
|
||||
new Promise(resolve => {
|
||||
resolveInstallSnapshot = () => {
|
||||
resolve({ installPath: 'foo' });
|
||||
};
|
||||
})
|
||||
);
|
||||
|
||||
const cluster = new Cluster(log);
|
||||
const promise = cluster.installSnapshot();
|
||||
await ensureNoResolve(promise);
|
||||
resolveInstallSnapshot();
|
||||
await expect(ensureResolve(promise)).resolves.toEqual({
|
||||
installPath: 'foo',
|
||||
});
|
||||
});
|
||||
|
||||
it('passes through all options+log to installSnapshot()', async () => {
|
||||
installSnapshot.mockResolvedValue({});
|
||||
const cluster = new Cluster(log);
|
||||
await cluster.installSnapshot({ foo: 'bar' });
|
||||
expect(installSnapshot).toHaveBeenCalledTimes(1);
|
||||
expect(installSnapshot).toHaveBeenCalledWith({
|
||||
log,
|
||||
foo: 'bar',
|
||||
});
|
||||
});
|
||||
|
||||
it('rejects if installSnapshot() rejects', async () => {
|
||||
installSnapshot.mockRejectedValue(new Error('foo'));
|
||||
const cluster = new Cluster(log);
|
||||
await expect(cluster.installSnapshot()).rejects.toThrowError('foo');
|
||||
});
|
||||
});
|
||||
|
||||
describe('#installArchive(path)', () => {
|
||||
it('awaits installArchive() promise and returns { installPath }', async () => {
|
||||
let resolveInstallArchive;
|
||||
installArchive.mockImplementationOnce(
|
||||
() =>
|
||||
new Promise(resolve => {
|
||||
resolveInstallArchive = () => {
|
||||
resolve({ installPath: 'foo' });
|
||||
};
|
||||
})
|
||||
);
|
||||
|
||||
const cluster = new Cluster(log);
|
||||
const promise = cluster.installArchive();
|
||||
await ensureNoResolve(promise);
|
||||
resolveInstallArchive();
|
||||
await expect(ensureResolve(promise)).resolves.toEqual({
|
||||
installPath: 'foo',
|
||||
});
|
||||
});
|
||||
|
||||
it('passes through path and all options+log to installArchive()', async () => {
|
||||
installArchive.mockResolvedValue({});
|
||||
const cluster = new Cluster(log);
|
||||
await cluster.installArchive('path', { foo: 'bar' });
|
||||
expect(installArchive).toHaveBeenCalledTimes(1);
|
||||
expect(installArchive).toHaveBeenCalledWith('path', {
|
||||
log,
|
||||
foo: 'bar',
|
||||
});
|
||||
});
|
||||
|
||||
it('rejects if installArchive() rejects', async () => {
|
||||
installArchive.mockRejectedValue(new Error('foo'));
|
||||
const cluster = new Cluster(log);
|
||||
await expect(cluster.installArchive()).rejects.toThrowError('foo');
|
||||
});
|
||||
});
|
||||
|
||||
describe('#start(installPath)', () => {
|
||||
it('rejects when bin/elasticsearch exists with 0 before starting', async () => {
|
||||
mockEsBin({ exitCode: 0, start: false });
|
||||
|
||||
await expect(new Cluster(log).start()).rejects.toThrowError(
|
||||
'ES exited without starting'
|
||||
);
|
||||
});
|
||||
|
||||
it('rejects when bin/elasticsearch exists with 143 before starting', async () => {
|
||||
mockEsBin({ exitCode: 143, start: false });
|
||||
|
||||
await expect(new Cluster(log).start()).rejects.toThrowError(
|
||||
'ES exited without starting'
|
||||
);
|
||||
});
|
||||
|
||||
it('rejects when bin/elasticsearch exists with 130 before starting', async () => {
|
||||
mockEsBin({ exitCode: 130, start: false });
|
||||
|
||||
await expect(new Cluster(log).start()).rejects.toThrowError(
|
||||
'ES exited without starting'
|
||||
);
|
||||
});
|
||||
|
||||
it('rejects when bin/elasticsearch exists with 1 before starting', async () => {
|
||||
mockEsBin({ exitCode: 1, start: false });
|
||||
|
||||
await expect(new Cluster(log).start()).rejects.toThrowError(
|
||||
'ES exited with code 1'
|
||||
);
|
||||
});
|
||||
|
||||
it('resolves when bin/elasticsearch logs "started"', async () => {
|
||||
mockEsBin({ start: true });
|
||||
|
||||
await new Cluster(log).start();
|
||||
});
|
||||
|
||||
it('rejects if #start() was called previously', async () => {
|
||||
mockEsBin({ start: true });
|
||||
|
||||
const cluster = new Cluster(log);
|
||||
await cluster.start();
|
||||
await expect(cluster.start()).rejects.toThrowError(
|
||||
'ES has already been started'
|
||||
);
|
||||
});
|
||||
|
||||
it('rejects if #run() was called previously', async () => {
|
||||
mockEsBin({ start: true });
|
||||
|
||||
const cluster = new Cluster(log);
|
||||
await cluster.run();
|
||||
await expect(cluster.start()).rejects.toThrowError(
|
||||
'ES has already been started'
|
||||
);
|
||||
});
|
||||
});
|
||||
|
||||
describe('#run()', () => {
|
||||
it('resolves when bin/elasticsearch exists with 0', async () => {
|
||||
mockEsBin({ exitCode: 0 });
|
||||
|
||||
await new Cluster(log).run();
|
||||
});
|
||||
|
||||
it('resolves when bin/elasticsearch exists with 143', async () => {
|
||||
mockEsBin({ exitCode: 143 });
|
||||
|
||||
await new Cluster(log).run();
|
||||
});
|
||||
|
||||
it('resolves when bin/elasticsearch exists with 130', async () => {
|
||||
mockEsBin({ exitCode: 130 });
|
||||
|
||||
await new Cluster(log).run();
|
||||
});
|
||||
|
||||
it('rejects when bin/elasticsearch exists with 1', async () => {
|
||||
mockEsBin({ exitCode: 1 });
|
||||
|
||||
await expect(new Cluster(log).run()).rejects.toThrowError(
|
||||
'ES exited with code 1'
|
||||
);
|
||||
});
|
||||
|
||||
it('rejects if #start() was called previously', async () => {
|
||||
mockEsBin({ exitCode: 0, start: true });
|
||||
|
||||
const cluster = new Cluster(log);
|
||||
await cluster.start();
|
||||
await expect(cluster.run()).rejects.toThrowError(
|
||||
'ES has already been started'
|
||||
);
|
||||
});
|
||||
|
||||
it('rejects if #run() was called previously', async () => {
|
||||
mockEsBin({ exitCode: 0 });
|
||||
|
||||
const cluster = new Cluster(log);
|
||||
await cluster.run();
|
||||
await expect(cluster.run()).rejects.toThrowError(
|
||||
'ES has already been started'
|
||||
);
|
||||
});
|
||||
});
|
||||
|
||||
describe('#stop()', () => {
|
||||
it('rejects if #run() or #start() was not called', async () => {
|
||||
const cluster = new Cluster(log);
|
||||
await expect(cluster.stop()).rejects.toThrowError(
|
||||
'ES has not been started'
|
||||
);
|
||||
});
|
||||
|
||||
it('resolves when ES exits with 0', async () => {
|
||||
mockEsBin({ exitCode: 0, start: true });
|
||||
|
||||
const cluster = new Cluster(log);
|
||||
await cluster.start();
|
||||
await cluster.stop();
|
||||
});
|
||||
|
||||
it('resolves when ES exits with 143', async () => {
|
||||
mockEsBin({ exitCode: 143, start: true });
|
||||
|
||||
const cluster = new Cluster(log);
|
||||
await cluster.start();
|
||||
await cluster.stop();
|
||||
});
|
||||
|
||||
it('resolves when ES exits with 130', async () => {
|
||||
mockEsBin({ exitCode: 130, start: true });
|
||||
|
||||
const cluster = new Cluster(log);
|
||||
await cluster.start();
|
||||
await cluster.stop();
|
||||
});
|
||||
|
||||
it('rejects when ES exits with 1', async () => {
|
||||
mockEsBin({ exitCode: 1, start: true });
|
||||
|
||||
const cluster = new Cluster(log);
|
||||
await expect(cluster.run()).rejects.toThrowError('ES exited with code 1');
|
||||
await expect(cluster.stop()).rejects.toThrowError('ES exited with code 1');
|
||||
});
|
||||
});
|
|
@ -11,5 +11,11 @@ exports.BASE_PATH = path.resolve(tempDir, 'kbn-es');
|
|||
|
||||
exports.GRADLE_BIN = useBat('./gradlew');
|
||||
exports.ES_BIN = useBat('bin/elasticsearch');
|
||||
exports.ES_CONFIG = 'config/elasticsearch.yml';
|
||||
|
||||
exports.ES_KEYSTORE_BIN = useBat('./bin/elasticsearch-keystore');
|
||||
|
||||
exports.ES_ARCHIVE_PATTERN =
|
||||
'distribution/archives/tar/build/distributions/elasticsearch-*.tar.gz';
|
||||
'distribution/archives/tar/build/distributions/elasticsearch-*-SNAPSHOT.tar.gz';
|
||||
exports.ES_OSS_ARCHIVE_PATTERN =
|
||||
'distribution/archives/oss-tar/build/distributions/elasticsearch-*-SNAPSHOT.tar.gz';
|
||||
|
|
30
packages/kbn-es/src/utils/find_most_recently_changed.test.js
Normal file
30
packages/kbn-es/src/utils/find_most_recently_changed.test.js
Normal file
|
@ -0,0 +1,30 @@
|
|||
const mockFs = require('mock-fs');
|
||||
const { findMostRecentlyChanged } = require('./find_most_recently_changed');
|
||||
|
||||
beforeEach(() => {
|
||||
mockFs({
|
||||
'/data': {
|
||||
'oldest.yml': mockFs.file({
|
||||
content: 'foo',
|
||||
ctime: new Date(2018, 2, 1),
|
||||
}),
|
||||
'newest.yml': mockFs.file({
|
||||
content: 'bar',
|
||||
ctime: new Date(2018, 2, 3),
|
||||
}),
|
||||
'middle.yml': mockFs.file({
|
||||
content: 'baz',
|
||||
ctime: new Date(2018, 2, 2),
|
||||
}),
|
||||
},
|
||||
});
|
||||
});
|
||||
|
||||
afterEach(() => {
|
||||
mockFs.restore();
|
||||
});
|
||||
|
||||
test('returns newest file', () => {
|
||||
const file = findMostRecentlyChanged('/data/*.yml');
|
||||
expect(file).toEqual('/data/newest.yml');
|
||||
});
|
101
packages/kbn-eslint-import-resolver-kibana/import_resolver_kibana.js
Executable file
101
packages/kbn-eslint-import-resolver-kibana/import_resolver_kibana.js
Executable file
|
@ -0,0 +1,101 @@
|
|||
const { join, dirname, extname } = require('path');
|
||||
|
||||
const webpackResolver = require('eslint-import-resolver-webpack');
|
||||
const nodeResolver = require('eslint-import-resolver-node');
|
||||
|
||||
const {
|
||||
getKibanaPath,
|
||||
getProjectRoot,
|
||||
getWebpackConfig,
|
||||
isFile,
|
||||
isProbablyWebpackShim,
|
||||
getIsPathRequest,
|
||||
resolveWebpackAlias,
|
||||
} = require('./lib');
|
||||
|
||||
// cache context, it shouldn't change
|
||||
let context;
|
||||
function initContext(file, config) {
|
||||
if (context) {
|
||||
return context;
|
||||
}
|
||||
|
||||
const projectRoot = getProjectRoot(file, config);
|
||||
const kibanaPath = getKibanaPath(config, projectRoot);
|
||||
const webpackConfig = getWebpackConfig(kibanaPath, projectRoot, config);
|
||||
const aliasEntries = Object.entries(webpackConfig.resolve.alias || {});
|
||||
|
||||
context = {
|
||||
webpackConfig,
|
||||
aliasEntries,
|
||||
};
|
||||
|
||||
return context;
|
||||
}
|
||||
|
||||
exports.resolve = function resolveKibanaPath(importRequest, file, config) {
|
||||
config = config || {};
|
||||
|
||||
// these modules are simulated by webpack, so there is no
|
||||
// path to resolve to and no reason to do any more work
|
||||
if (importRequest.startsWith('uiExports/')) {
|
||||
return {
|
||||
found: true,
|
||||
path: null,
|
||||
};
|
||||
}
|
||||
|
||||
const { webpackConfig, aliasEntries } = initContext(file, config);
|
||||
let isPathRequest = getIsPathRequest(importRequest);
|
||||
|
||||
// if the importRequest is not a path we might be able to map it to a path
|
||||
// by comparing it to the webpack aliases. If we can convert it to a path
|
||||
// without actually invoking the webpack resolver we can save a lot of time
|
||||
if (!isPathRequest) {
|
||||
const resolvedAlias = resolveWebpackAlias(importRequest, aliasEntries);
|
||||
if (resolvedAlias) {
|
||||
importRequest = resolvedAlias;
|
||||
isPathRequest = true;
|
||||
}
|
||||
}
|
||||
|
||||
// if the importRequest is a path, and it has a file extension, then
|
||||
// we just resolve it. This is most helpful with relative imports for
|
||||
// .css and .html files because those don't work with the node resolver
|
||||
// and we can resolve them much quicker than webpack
|
||||
if (isPathRequest && extname(importRequest)) {
|
||||
const abs = join(dirname(file), importRequest);
|
||||
if (isFile(abs)) {
|
||||
return {
|
||||
found: true,
|
||||
path: abs,
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
// only use the node resolver if the importRequest is a path, or is
|
||||
// a module request but not one that's probably a webpackShim. This
|
||||
// prevents false positives as webpackShims are likely to be resolved
|
||||
// to the node_modules directory by the node resolver, but we want
|
||||
// them to resolve to the actual shim
|
||||
if (isPathRequest || !isProbablyWebpackShim(importRequest, file)) {
|
||||
const nodeResult = nodeResolver.resolve(
|
||||
importRequest,
|
||||
file,
|
||||
Object.assign({}, config, {
|
||||
isFile,
|
||||
})
|
||||
);
|
||||
|
||||
if (nodeResult && nodeResult.found) {
|
||||
return nodeResult;
|
||||
}
|
||||
}
|
||||
|
||||
return webpackResolver.resolve(importRequest, file, {
|
||||
config: webpackConfig,
|
||||
});
|
||||
};
|
||||
|
||||
// use version 2 of the resolver interface, https://github.com/benmosher/eslint-plugin-import/blob/master/resolvers/README.md#interfaceversion--number
|
||||
exports.interfaceVersion = 2;
|
|
@ -1,29 +0,0 @@
|
|||
const webpackResolver = require('eslint-import-resolver-webpack');
|
||||
const nodeResolver = require('eslint-import-resolver-node');
|
||||
const getProjectRoot = require('./lib/get_project_root');
|
||||
const getWebpackConfig = require('./lib/get_webpack_config');
|
||||
|
||||
// cache expensive resolution results
|
||||
let projectRoot;
|
||||
let webpackConfig;
|
||||
|
||||
exports.resolve = function resolveKibanaPath(source, file, config) {
|
||||
const settings = config || {};
|
||||
|
||||
// try to resolve with the node resolver first
|
||||
const resolvedWithNode = nodeResolver.resolve(source, file, config);
|
||||
if (resolvedWithNode && resolvedWithNode.found) {
|
||||
return resolvedWithNode;
|
||||
}
|
||||
|
||||
// fall back to the webpack resolver
|
||||
projectRoot = projectRoot || getProjectRoot(file, settings);
|
||||
webpackConfig =
|
||||
webpackConfig || getWebpackConfig(source, projectRoot, settings);
|
||||
return webpackResolver.resolve(source, file, {
|
||||
config: webpackConfig,
|
||||
});
|
||||
};
|
||||
|
||||
// use version 2 of the resolver interface, https://github.com/benmosher/eslint-plugin-import/blob/master/resolvers/README.md#interfaceversion--number
|
||||
exports.interfaceVersion = 2;
|
|
@ -1,3 +1 @@
|
|||
const debug = require('debug')('eslint-plugin-import:resolver:kibana');
|
||||
|
||||
module.exports = debug;
|
||||
exports.debug = require('debug')('eslint-plugin-import:resolver:kibana');
|
||||
|
|
|
@ -0,0 +1,17 @@
|
|||
// "path" imports point to a specific location and don't require
|
||||
// module directory resolution. This RegExp should capture import
|
||||
// statements that:
|
||||
//
|
||||
// - start with `./`
|
||||
// - start with `../`
|
||||
// - equal `..`
|
||||
// - equal `.`
|
||||
// - start with `C:\`
|
||||
// - start with `C:/`
|
||||
// - start with `/`
|
||||
//
|
||||
const PATH_IMPORT_RE = /^(?:\.\.?(?:\/|$)|\/|([A-Za-z]:)?[/\\])/;
|
||||
|
||||
exports.getIsPathRequest = function(source) {
|
||||
return PATH_IMPORT_RE.test(source);
|
||||
};
|
|
@ -1,12 +1,13 @@
|
|||
const { resolve } = require('path');
|
||||
const debug = require('./debug');
|
||||
|
||||
const { debug } = require('./debug');
|
||||
|
||||
const DEFAULT_PLUGIN_PATH = '../../kibana';
|
||||
|
||||
/*
|
||||
* Resolves the path to Kibana, either from default setting or config
|
||||
*/
|
||||
module.exports = function getKibanaPath(config, projectRoot) {
|
||||
exports.getKibanaPath = function(config, projectRoot) {
|
||||
const inConfig = config != null && config.kibanaPath;
|
||||
|
||||
// We only allow `.` in the config as we need it for Kibana itself
|
||||
|
|
|
@ -0,0 +1,41 @@
|
|||
const { statSync } = require('fs');
|
||||
|
||||
const LRU = require('lru-cache');
|
||||
|
||||
const DIR = Symbol('dir');
|
||||
const FILE = Symbol('file');
|
||||
const cache = process.env.KIBANA_RESOLVER_HARD_CACHE
|
||||
? new Map()
|
||||
: new LRU({ maxAge: 1000 });
|
||||
|
||||
function getPathType(path) {
|
||||
const cached = cache.get(path);
|
||||
if (cached !== undefined) {
|
||||
return cached;
|
||||
}
|
||||
|
||||
let type = null;
|
||||
try {
|
||||
const stats = statSync(path);
|
||||
if (stats.isDirectory()) {
|
||||
type = DIR;
|
||||
} else if (stats.isFile() || stats.isFIFO()) {
|
||||
type = FILE;
|
||||
}
|
||||
} catch (error) {
|
||||
if (!error || (error.code !== 'ENOENT' && error.code !== 'ENOTDIR')) {
|
||||
throw error;
|
||||
}
|
||||
}
|
||||
|
||||
cache.set(path, type);
|
||||
return type;
|
||||
}
|
||||
|
||||
exports.isDirectory = function(path) {
|
||||
return getPathType(path) === DIR;
|
||||
};
|
||||
|
||||
exports.isFile = function(path) {
|
||||
return getPathType(path) === FILE;
|
||||
};
|
|
@ -1,7 +1,8 @@
|
|||
const { dirname, resolve } = require('path');
|
||||
|
||||
const glob = require('glob-all');
|
||||
|
||||
module.exports = function getPlugins(config, kibanaPath, projectRoot) {
|
||||
exports.getPlugins = function(config, kibanaPath, projectRoot) {
|
||||
const resolveToRoot = path => resolve(projectRoot, path);
|
||||
|
||||
const pluginDirs = [
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
const { dirname, resolve, parse } = require('path');
|
||||
const { accessSync, readFileSync } = require('fs');
|
||||
const debug = require('./debug');
|
||||
|
||||
const { debug } = require('./debug');
|
||||
|
||||
function getConfig(config) {
|
||||
const defaults = {
|
||||
|
@ -40,7 +41,7 @@ function getRootPackageDir(dirRoot, dir, rootPackageName) {
|
|||
}
|
||||
}
|
||||
|
||||
module.exports = function getProjectRoot(file, config) {
|
||||
exports.getProjectRoot = function(file, config) {
|
||||
const { root, dir } = parse(resolve(file));
|
||||
const { rootPackageName } = config;
|
||||
|
||||
|
|
|
@ -1,11 +1,9 @@
|
|||
const { resolve } = require('path');
|
||||
const debug = require('./debug');
|
||||
|
||||
const getKibanaPath = require('./get_kibana_path');
|
||||
const getPlugins = require('./get_plugins');
|
||||
const { debug } = require('./debug');
|
||||
const { getPlugins } = require('./get_plugins');
|
||||
|
||||
module.exports = function getWebpackConfig(source, projectRoot, config) {
|
||||
const kibanaPath = getKibanaPath(config, projectRoot);
|
||||
exports.getWebpackConfig = function(kibanaPath, projectRoot, config) {
|
||||
const fromKibana = (...path) => resolve(kibanaPath, ...path);
|
||||
|
||||
const alias = {
|
||||
|
|
10
packages/kbn-eslint-import-resolver-kibana/lib/index.js
Normal file
10
packages/kbn-eslint-import-resolver-kibana/lib/index.js
Normal file
|
@ -0,0 +1,10 @@
|
|||
module.exports = Object.assign(
|
||||
{},
|
||||
require('./get_kibana_path'),
|
||||
require('./get_project_root'),
|
||||
require('./get_webpack_config'),
|
||||
require('./get_path_type'),
|
||||
require('./is_probably_webpack_shim'),
|
||||
require('./get_is_path_request'),
|
||||
require('./resolve_webpack_alias')
|
||||
);
|
|
@ -0,0 +1,45 @@
|
|||
const { readdirSync } = require('fs');
|
||||
const { join, dirname } = require('path');
|
||||
|
||||
const LRU = require('lru-cache');
|
||||
|
||||
const { isDirectory } = require('./get_path_type');
|
||||
|
||||
const cache = process.env.KIBANA_RESOLVER_HARD_CACHE
|
||||
? new Map()
|
||||
: new LRU({ max: 1000 });
|
||||
|
||||
function readShimNames(shimDirectory) {
|
||||
if (!isDirectory(shimDirectory)) {
|
||||
return [];
|
||||
}
|
||||
|
||||
return readdirSync(shimDirectory)
|
||||
.filter(name => !name.startsWith('.') && !name.startsWith('_'))
|
||||
.map(name => (name.endsWith('.js') ? name.slice(0, -3) : name));
|
||||
}
|
||||
|
||||
function findRelativeWebpackShims(directory) {
|
||||
const cached = cache.get(directory);
|
||||
if (cached) {
|
||||
return cached;
|
||||
}
|
||||
|
||||
const ownShims = readShimNames(join(directory, 'webpackShims'));
|
||||
|
||||
const parent = dirname(directory);
|
||||
const parentShims =
|
||||
parent !== directory ? findRelativeWebpackShims(parent) : [];
|
||||
|
||||
const allShims = !ownShims.length
|
||||
? parentShims
|
||||
: ownShims.concat(parentShims);
|
||||
|
||||
cache.set(directory, allShims);
|
||||
return allShims;
|
||||
}
|
||||
|
||||
exports.isProbablyWebpackShim = function(source, file) {
|
||||
const shims = findRelativeWebpackShims(dirname(file));
|
||||
return shims.some(shim => source === shim || source.startsWith(shim + '/'));
|
||||
};
|
|
@ -0,0 +1,23 @@
|
|||
/**
|
||||
* Attempt to apply basic webpack alias transfomations so we can
|
||||
* avoid triggering the webpack resolver for many imports
|
||||
*
|
||||
* @param {string} source
|
||||
* @param {Array<[alias,path]>} aliasEntries
|
||||
* @return {string|undefined}
|
||||
*/
|
||||
exports.resolveWebpackAlias = function(source, aliasEntries) {
|
||||
for (const [alias, path] of aliasEntries) {
|
||||
if (source === alias) {
|
||||
return path;
|
||||
}
|
||||
|
||||
if (alias.endsWith('$')) {
|
||||
if (source === alias.slice(0, -1)) {
|
||||
return path;
|
||||
}
|
||||
} else if (source.startsWith(alias + '/')) {
|
||||
return path + '/' + source.slice(alias.length + 1);
|
||||
}
|
||||
}
|
||||
};
|
|
@ -3,7 +3,7 @@
|
|||
"description": "eslint-plugin-import resolver for Kibana",
|
||||
"private": true,
|
||||
"version": "2.0.0",
|
||||
"main": "index.js",
|
||||
"main": "import_resolver_kibana.js",
|
||||
"license": "Apache-2.0",
|
||||
"repository": {
|
||||
"type": "git",
|
||||
|
@ -14,6 +14,8 @@
|
|||
"eslint-import-resolver-node": "^0.3.0",
|
||||
"eslint-import-resolver-webpack": "^0.8.1",
|
||||
"glob-all": "^3.1.0",
|
||||
"lru-cache": "^4.1.2",
|
||||
"resolve": "^1.7.1",
|
||||
"webpack": "3.6.0"
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1397,6 +1397,13 @@ lru-cache@^4.0.1:
|
|||
pseudomap "^1.0.2"
|
||||
yallist "^2.1.2"
|
||||
|
||||
lru-cache@^4.1.2:
|
||||
version "4.1.2"
|
||||
resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.1.2.tgz#45234b2e6e2f2b33da125624c4664929a0224c3f"
|
||||
dependencies:
|
||||
pseudomap "^1.0.2"
|
||||
yallist "^2.1.2"
|
||||
|
||||
map-cache@^0.2.2:
|
||||
version "0.2.2"
|
||||
resolved "https://registry.yarnpkg.com/map-cache/-/map-cache-0.2.2.tgz#c32abd0bd6525d9b051645bb4f26ac5dc98a0dbf"
|
||||
|
@ -1946,9 +1953,9 @@ resolve-url@^0.2.1:
|
|||
version "0.2.1"
|
||||
resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a"
|
||||
|
||||
resolve@^1.2.0, resolve@^1.5.0:
|
||||
version "1.7.0"
|
||||
resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.7.0.tgz#2bdf5374811207285df0df652b78f118ab8f3c5e"
|
||||
resolve@^1.2.0, resolve@^1.5.0, resolve@^1.7.1:
|
||||
version "1.7.1"
|
||||
resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.7.1.tgz#aadd656374fd298aee895bc026b8297418677fd3"
|
||||
dependencies:
|
||||
path-parse "^1.0.5"
|
||||
|
||||
|
@ -2250,8 +2257,8 @@ tar@^2.2.1:
|
|||
inherits "2"
|
||||
|
||||
timers-browserify@^2.0.4:
|
||||
version "2.0.6"
|
||||
resolved "https://registry.yarnpkg.com/timers-browserify/-/timers-browserify-2.0.6.tgz#241e76927d9ca05f4d959819022f5b3664b64bae"
|
||||
version "2.0.7"
|
||||
resolved "https://registry.yarnpkg.com/timers-browserify/-/timers-browserify-2.0.7.tgz#e74093629cb62c20332af587ddc0c86b4ba97a05"
|
||||
dependencies:
|
||||
setimmediate "^1.0.4"
|
||||
|
||||
|
|
6
packages/kbn-eslint-plugin-license-header/index.js
Normal file
6
packages/kbn-eslint-plugin-license-header/index.js
Normal file
|
@ -0,0 +1,6 @@
|
|||
module.exports = {
|
||||
rules: {
|
||||
'require-license-header': require('./rules/require_license_header'),
|
||||
'remove-outdated-license-header': require('./rules/remove_outdated_license_header'),
|
||||
},
|
||||
};
|
28
packages/kbn-eslint-plugin-license-header/lib.js
Normal file
28
packages/kbn-eslint-plugin-license-header/lib.js
Normal file
|
@ -0,0 +1,28 @@
|
|||
exports.assert = function assert(truth, message) {
|
||||
if (truth) {
|
||||
return;
|
||||
}
|
||||
|
||||
const error = new Error(message);
|
||||
error.failedAssertion = true;
|
||||
throw error;
|
||||
};
|
||||
|
||||
exports.normalizeWhitespace = function normalizeWhitespace(string) {
|
||||
return string.replace(/\s+/g, ' ');
|
||||
};
|
||||
|
||||
exports.init = function (context, program, initStep) {
|
||||
try {
|
||||
return initStep();
|
||||
} catch (error) {
|
||||
if (error.failedAssertion) {
|
||||
context.report({
|
||||
node: program,
|
||||
message: error.message
|
||||
});
|
||||
} else {
|
||||
throw error;
|
||||
}
|
||||
}
|
||||
};
|
13
packages/kbn-eslint-plugin-license-header/package.json
Normal file
13
packages/kbn-eslint-plugin-license-header/package.json
Normal file
|
@ -0,0 +1,13 @@
|
|||
{
|
||||
"name": "@kbn/eslint-plugin-license-header",
|
||||
"version": "1.0.0",
|
||||
"private": true,
|
||||
"license": "Apache-2.0",
|
||||
"peerDependencies": {
|
||||
"eslint": ">=4.0.0",
|
||||
"babel-eslint": "^8.2.1"
|
||||
},
|
||||
"dependencies": {
|
||||
"dedent": "^0.7.0"
|
||||
}
|
||||
}
|
|
@ -0,0 +1,136 @@
|
|||
const { RuleTester } = require('eslint');
|
||||
const rule = require('../remove_outdated_license_header');
|
||||
const dedent = require('dedent');
|
||||
|
||||
const RULE_NAME = '@kbn/license-header/remove-outdated-license-header';
|
||||
|
||||
const ruleTester = new RuleTester({
|
||||
parser: 'babel-eslint',
|
||||
parserOptions: {
|
||||
ecmaVersion: 2015
|
||||
}
|
||||
});
|
||||
ruleTester.run(RULE_NAME, rule, {
|
||||
valid: [
|
||||
{
|
||||
code: dedent`
|
||||
/* license */
|
||||
|
||||
console.log('foo')
|
||||
`,
|
||||
|
||||
options: [{
|
||||
licenses: [
|
||||
'// license'
|
||||
]
|
||||
}],
|
||||
},
|
||||
{
|
||||
code: dedent`
|
||||
// license
|
||||
|
||||
console.log('foo')
|
||||
`,
|
||||
|
||||
options: [{
|
||||
licenses: [
|
||||
'/* license */',
|
||||
]
|
||||
}],
|
||||
}
|
||||
],
|
||||
|
||||
invalid: [
|
||||
// missing license option
|
||||
{
|
||||
code: dedent`
|
||||
console.log('foo')
|
||||
`,
|
||||
|
||||
options: [],
|
||||
errors: [
|
||||
{
|
||||
message: '"licenses" option is required',
|
||||
}
|
||||
]
|
||||
},
|
||||
|
||||
// license cannot contain multiple block comments
|
||||
{
|
||||
code: dedent`
|
||||
console.log('foo')
|
||||
`,
|
||||
|
||||
options: [{
|
||||
licenses: [
|
||||
'/* one *//* two */'
|
||||
]
|
||||
}],
|
||||
errors: [
|
||||
{
|
||||
message: '"licenses[0]" option must only include a single comment',
|
||||
}
|
||||
]
|
||||
},
|
||||
|
||||
// license cannot contain multiple line comments
|
||||
{
|
||||
code: dedent`
|
||||
console.log('foo')
|
||||
`,
|
||||
|
||||
options: [{
|
||||
licenses: [
|
||||
`// one\n// two`
|
||||
]
|
||||
}],
|
||||
errors: [
|
||||
{
|
||||
message: '"licenses[0]" option must only include a single comment',
|
||||
}
|
||||
]
|
||||
},
|
||||
|
||||
// license cannot contain expressions
|
||||
{
|
||||
code: dedent`
|
||||
console.log('foo')
|
||||
`,
|
||||
|
||||
options: [{
|
||||
licenses: [
|
||||
'// old license',
|
||||
dedent`
|
||||
/* license */
|
||||
console.log('hello world');
|
||||
`
|
||||
]
|
||||
}],
|
||||
errors: [
|
||||
{
|
||||
message: '"licenses[1]" option must only include a single comment',
|
||||
}
|
||||
]
|
||||
},
|
||||
|
||||
// license is not a single comment
|
||||
{
|
||||
code: dedent`
|
||||
console.log('foo')
|
||||
`,
|
||||
|
||||
options: [{
|
||||
licenses: [
|
||||
'// old license',
|
||||
'// older license',
|
||||
`console.log('hello world');`
|
||||
]
|
||||
}],
|
||||
errors: [
|
||||
{
|
||||
message: '"licenses[2]" option must only include a single comment',
|
||||
}
|
||||
]
|
||||
},
|
||||
]
|
||||
});
|
|
@ -0,0 +1,185 @@
|
|||
const { RuleTester } = require('eslint');
|
||||
const rule = require('../require_license_header');
|
||||
const dedent = require('dedent');
|
||||
|
||||
const RULE_NAME = '@kbn/license-header/require-license-header';
|
||||
|
||||
const ruleTester = new RuleTester({
|
||||
parser: 'babel-eslint',
|
||||
parserOptions: {
|
||||
ecmaVersion: 2015
|
||||
}
|
||||
});
|
||||
ruleTester.run(RULE_NAME, rule, {
|
||||
valid: [
|
||||
{
|
||||
code: dedent`
|
||||
/* license */
|
||||
|
||||
console.log('foo')
|
||||
`,
|
||||
|
||||
options: [{ license: '/* license */' }],
|
||||
},
|
||||
{
|
||||
code: dedent`
|
||||
// license
|
||||
|
||||
console.log('foo')
|
||||
`,
|
||||
|
||||
options: [{ license: '// license' }],
|
||||
}
|
||||
],
|
||||
|
||||
invalid: [
|
||||
// missing license option
|
||||
{
|
||||
code: dedent`
|
||||
console.log('foo')
|
||||
`,
|
||||
|
||||
options: [],
|
||||
errors: [
|
||||
{
|
||||
message: '"license" option is required',
|
||||
}
|
||||
]
|
||||
},
|
||||
|
||||
// content cannot contain multiple block comments
|
||||
{
|
||||
code: dedent`
|
||||
console.log('foo')
|
||||
`,
|
||||
|
||||
options: [
|
||||
{ license: '/* one *//* two */' }
|
||||
],
|
||||
errors: [
|
||||
{
|
||||
message: '"license" option must only include a single comment',
|
||||
}
|
||||
]
|
||||
},
|
||||
|
||||
// content cannot contain multiple line comments
|
||||
{
|
||||
code: dedent`
|
||||
console.log('foo')
|
||||
`,
|
||||
|
||||
options: [
|
||||
{ license: `// one\n// two` }
|
||||
],
|
||||
errors: [
|
||||
{
|
||||
message: '"license" option must only include a single comment',
|
||||
}
|
||||
]
|
||||
},
|
||||
|
||||
// content cannot contain expressions
|
||||
{
|
||||
code: dedent`
|
||||
console.log('foo')
|
||||
`,
|
||||
|
||||
options: [
|
||||
{
|
||||
license: dedent`
|
||||
/* license */
|
||||
console.log('hello world');
|
||||
`
|
||||
}
|
||||
],
|
||||
errors: [
|
||||
{
|
||||
message: '"license" option must only include a single comment',
|
||||
}
|
||||
]
|
||||
},
|
||||
|
||||
// content is not a single comment
|
||||
{
|
||||
code: dedent`
|
||||
console.log('foo')
|
||||
`,
|
||||
|
||||
options: [
|
||||
{ license: `console.log('hello world');` }
|
||||
],
|
||||
errors: [
|
||||
{
|
||||
message: '"license" option must only include a single comment',
|
||||
}
|
||||
]
|
||||
},
|
||||
|
||||
// missing license header
|
||||
{
|
||||
code: dedent`
|
||||
console.log('foo')
|
||||
`,
|
||||
|
||||
options: [{ license: '/* license */' }],
|
||||
errors: [
|
||||
{
|
||||
message: 'File must start with a license header',
|
||||
}
|
||||
],
|
||||
|
||||
output: dedent`
|
||||
/* license */
|
||||
|
||||
console.log('foo')
|
||||
`
|
||||
},
|
||||
|
||||
// strips newlines before the license comment
|
||||
{
|
||||
code: '\n\n' + dedent`
|
||||
/* license */
|
||||
|
||||
console.log('foo')
|
||||
`,
|
||||
|
||||
options: [{ license: '/* license */' }],
|
||||
errors: [
|
||||
{
|
||||
message: 'License header must be at the very beginning of the file',
|
||||
}
|
||||
],
|
||||
|
||||
output: dedent`
|
||||
/* license */
|
||||
|
||||
console.log('foo')
|
||||
`
|
||||
},
|
||||
|
||||
// moves license header before other nodes if necessary
|
||||
{
|
||||
code: dedent`
|
||||
/* not license */
|
||||
/* license */
|
||||
console.log('foo')
|
||||
`,
|
||||
|
||||
options: [{ license: '/* license */' }],
|
||||
errors: [
|
||||
{
|
||||
message: 'License header must be at the very beginning of the file',
|
||||
}
|
||||
],
|
||||
|
||||
output: dedent`
|
||||
/* license */
|
||||
|
||||
/* not license */
|
||||
|
||||
console.log('foo')
|
||||
`
|
||||
},
|
||||
]
|
||||
});
|
|
@ -0,0 +1,63 @@
|
|||
const babelEslint = require('babel-eslint');
|
||||
|
||||
const { assert, normalizeWhitespace, init } = require('../lib');
|
||||
|
||||
module.exports = {
|
||||
meta: {
|
||||
fixable: 'code',
|
||||
schema: [{
|
||||
type: 'object',
|
||||
properties: {
|
||||
licenses: {
|
||||
type: 'array',
|
||||
items: {
|
||||
type: 'string'
|
||||
}
|
||||
},
|
||||
},
|
||||
additionalProperties: false,
|
||||
}]
|
||||
},
|
||||
create: context => {
|
||||
return {
|
||||
Program(program) {
|
||||
const nodeValues = init(context, program, () => {
|
||||
const options = context.options[0] || {};
|
||||
const licenses = options.licenses;
|
||||
|
||||
assert(!!licenses, '"licenses" option is required');
|
||||
|
||||
return licenses.map((license, i) => {
|
||||
const parsed = babelEslint.parse(license);
|
||||
|
||||
assert(!parsed.body.length, `"licenses[${i}]" option must only include a single comment`);
|
||||
assert(parsed.comments.length === 1, `"licenses[${i}]" option must only include a single comment`);
|
||||
|
||||
return normalizeWhitespace(parsed.comments[0].value);
|
||||
});
|
||||
});
|
||||
|
||||
if (!nodeValues) return;
|
||||
|
||||
const sourceCode = context.getSourceCode();
|
||||
|
||||
sourceCode
|
||||
.getAllComments()
|
||||
.filter(node => (
|
||||
nodeValues.find(nodeValue => (
|
||||
normalizeWhitespace(node.value) === nodeValue
|
||||
))
|
||||
))
|
||||
.forEach(node => {
|
||||
context.report({
|
||||
node,
|
||||
message: 'Remove outdated license header.',
|
||||
fix(fixer) {
|
||||
return fixer.remove(node);
|
||||
}
|
||||
});
|
||||
});
|
||||
},
|
||||
};
|
||||
}
|
||||
};
|
|
@ -0,0 +1,85 @@
|
|||
const babelEslint = require('babel-eslint');
|
||||
|
||||
const { assert, normalizeWhitespace, init } = require('../lib');
|
||||
|
||||
module.exports = {
|
||||
meta: {
|
||||
fixable: 'code',
|
||||
schema: [{
|
||||
type: 'object',
|
||||
properties: {
|
||||
license: {
|
||||
type: 'string',
|
||||
},
|
||||
},
|
||||
additionalProperties: false,
|
||||
}]
|
||||
},
|
||||
create: context => {
|
||||
return {
|
||||
Program(program) {
|
||||
const license = init(context, program, function () {
|
||||
const options = context.options[0] || {};
|
||||
const license = options.license;
|
||||
|
||||
assert(!!license, '"license" option is required');
|
||||
|
||||
const parsed = babelEslint.parse(license);
|
||||
assert(!parsed.body.length, '"license" option must only include a single comment');
|
||||
assert(parsed.comments.length === 1, '"license" option must only include a single comment');
|
||||
|
||||
return {
|
||||
source: license,
|
||||
nodeValue: normalizeWhitespace(parsed.comments[0].value)
|
||||
};
|
||||
});
|
||||
|
||||
if (!license) {
|
||||
return;
|
||||
}
|
||||
|
||||
const sourceCode = context.getSourceCode();
|
||||
const comment = sourceCode.getAllComments().find(node => (
|
||||
normalizeWhitespace(node.value) === license.nodeValue
|
||||
));
|
||||
|
||||
// no licence comment
|
||||
if (!comment) {
|
||||
context.report({
|
||||
message: 'File must start with a license header',
|
||||
loc: {
|
||||
start: { line: 1, column: 0 },
|
||||
end: { line: 1, column: sourceCode.lines[0].length - 1 }
|
||||
},
|
||||
fix(fixer) {
|
||||
return fixer.replaceTextRange([0, 0], license.source + '\n\n');
|
||||
}
|
||||
});
|
||||
return;
|
||||
}
|
||||
|
||||
// ensure there is nothing before the comment
|
||||
const sourceBeforeNode = sourceCode.getText().slice(0, sourceCode.getIndexFromLoc(comment.loc.start));
|
||||
if (sourceBeforeNode.length) {
|
||||
context.report({
|
||||
node: comment,
|
||||
message: 'License header must be at the very beginning of the file',
|
||||
fix(fixer) {
|
||||
// replace leading whitespace if possible
|
||||
if (sourceBeforeNode.trim() === '') {
|
||||
return fixer.replaceTextRange([0, sourceBeforeNode.length], '');
|
||||
}
|
||||
|
||||
// inject content at top and remove node from current location
|
||||
// if removing whitespace is not possible
|
||||
return [
|
||||
fixer.remove(comment),
|
||||
fixer.replaceTextRange([0, 0], license.source + '\n\n'),
|
||||
];
|
||||
}
|
||||
});
|
||||
}
|
||||
},
|
||||
};
|
||||
}
|
||||
};
|
7
packages/kbn-eslint-plugin-license-header/yarn.lock
Normal file
7
packages/kbn-eslint-plugin-license-header/yarn.lock
Normal file
|
@ -0,0 +1,7 @@
|
|||
# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
|
||||
# yarn lockfile v1
|
||||
|
||||
|
||||
dedent@^0.7.0:
|
||||
version "0.7.0"
|
||||
resolved "https://registry.yarnpkg.com/dedent/-/dedent-0.7.0.tgz#2495ddbaf6eb874abb0e1be9df22d2e5a544326c"
|
|
@ -17,7 +17,9 @@ module.exports = function (root) {
|
|||
|
||||
return Object.assign({
|
||||
root: root,
|
||||
kibanaRoot: resolve(root, '../kibana'),
|
||||
kibanaRoot: pkg.name === 'x-pack'
|
||||
? resolve(root, '..')
|
||||
: resolve(root, '../kibana'),
|
||||
serverTestPatterns: ['server/**/__tests__/**/*.js'],
|
||||
buildSourcePatterns: buildSourcePatterns,
|
||||
skipInstallDependencies: false,
|
||||
|
|
6
packages/kbn-pm/dist/index.js
vendored
6
packages/kbn-pm/dist/index.js
vendored
|
@ -36109,7 +36109,12 @@ var _path = __webpack_require__(3);
|
|||
*/
|
||||
function getProjectPaths(rootPath, options) {
|
||||
const skipKibanaExtra = Boolean(options['skip-kibana-extra']);
|
||||
const ossOnly = Boolean(options.oss);
|
||||
const projectPaths = [rootPath, (0, _path.resolve)(rootPath, 'packages/*')];
|
||||
if (!ossOnly) {
|
||||
projectPaths.push((0, _path.resolve)(rootPath, 'x-pack'));
|
||||
projectPaths.push((0, _path.resolve)(rootPath, 'x-pack/plugins/*'));
|
||||
}
|
||||
if (!skipKibanaExtra) {
|
||||
projectPaths.push((0, _path.resolve)(rootPath, '../kibana-extra/*'));
|
||||
projectPaths.push((0, _path.resolve)(rootPath, '../kibana-extra/*/packages/*'));
|
||||
|
@ -36325,6 +36330,7 @@ function help() {
|
|||
|
||||
-e, --exclude Exclude specified project. Can be specified multiple times to exclude multiple projects, e.g. '-e kibana -e @kbn/pm'.
|
||||
-i, --include Include only specified projects. If left unspecified, it defaults to including all projects.
|
||||
--oss Do not include the x-pack when running command.
|
||||
--skip-kibana-extra Filter all plugins in ../kibana-extra when running command.
|
||||
`);
|
||||
}
|
||||
|
|
|
@ -51,7 +51,7 @@
|
|||
"log-symbols": "^2.2.0",
|
||||
"mkdirp": "^0.5.1",
|
||||
"ora": "^1.4.0",
|
||||
"prettier": "^1.11.1",
|
||||
"prettier": "^1.12.1",
|
||||
"read-pkg": "^3.0.0",
|
||||
"rxjs": "^5.5.7",
|
||||
"spawn-sync": "^1.0.15",
|
||||
|
|
|
@ -25,6 +25,7 @@ function help() {
|
|||
|
||||
-e, --exclude Exclude specified project. Can be specified multiple times to exclude multiple projects, e.g. '-e kibana -e @kbn/pm'.
|
||||
-i, --include Include only specified projects. If left unspecified, it defaults to including all projects.
|
||||
--oss Do not include the x-pack when running command.
|
||||
--skip-kibana-extra Filter all plugins in ../kibana-extra when running command.
|
||||
`);
|
||||
}
|
||||
|
|
|
@ -2,6 +2,7 @@ import { resolve } from 'path';
|
|||
|
||||
export type ProjectPathOptions = {
|
||||
'skip-kibana-extra'?: boolean;
|
||||
'oss'?: boolean;
|
||||
};
|
||||
|
||||
/**
|
||||
|
@ -9,9 +10,15 @@ export type ProjectPathOptions = {
|
|||
*/
|
||||
export function getProjectPaths(rootPath: string, options: ProjectPathOptions) {
|
||||
const skipKibanaExtra = Boolean(options['skip-kibana-extra']);
|
||||
const ossOnly = Boolean(options.oss);
|
||||
|
||||
const projectPaths = [rootPath, resolve(rootPath, 'packages/*')];
|
||||
|
||||
if (!ossOnly) {
|
||||
projectPaths.push(resolve(rootPath, 'x-pack'));
|
||||
projectPaths.push(resolve(rootPath, 'x-pack/plugins/*'));
|
||||
}
|
||||
|
||||
if (!skipKibanaExtra) {
|
||||
projectPaths.push(resolve(rootPath, '../kibana-extra/*'));
|
||||
projectPaths.push(resolve(rootPath, '../kibana-extra/*/packages/*'));
|
||||
|
|
|
@ -28,7 +28,7 @@ export async function linkProjectExecutables(
|
|||
|
||||
// existing logic from lerna -- ensure that the bin we are going to
|
||||
// point to exists or ignore it
|
||||
if (!await isFile(srcPath)) {
|
||||
if (!(await isFile(srcPath))) {
|
||||
continue;
|
||||
}
|
||||
|
||||
|
|
|
@ -2895,9 +2895,9 @@ preserve@^0.2.0:
|
|||
version "0.2.0"
|
||||
resolved "https://registry.yarnpkg.com/preserve/-/preserve-0.2.0.tgz#815ed1f6ebc65926f865b310c0713bcb3315ce4b"
|
||||
|
||||
prettier@^1.11.1:
|
||||
version "1.11.1"
|
||||
resolved "https://registry.yarnpkg.com/prettier/-/prettier-1.11.1.tgz#61e43fc4cd44e68f2b0dfc2c38cd4bb0fccdcc75"
|
||||
prettier@^1.12.1:
|
||||
version "1.12.1"
|
||||
resolved "https://registry.yarnpkg.com/prettier/-/prettier-1.12.1.tgz#c1ad20e803e7749faf905a409d2367e06bbe7325"
|
||||
|
||||
private@^0.1.6, private@^0.1.7:
|
||||
version "0.1.8"
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
const isUsingNpm = process.env.npm_config_git !== undefined;
|
||||
|
||||
if (isUsingNpm) {
|
||||
throw "Use Yarn instead of npm, see Kibana's contributing guidelines";
|
||||
throw `Use Yarn instead of npm, see Kibana's contributing guidelines`;
|
||||
}
|
||||
|
||||
// The value of the `npm_config_argv` env for each command:
|
||||
|
@ -29,4 +29,3 @@ try {
|
|||
} catch (e) {
|
||||
// if it fails we do nothing, as this is just intended to be a helpful message
|
||||
}
|
||||
|
||||
|
|
2
scripts/build.js
Normal file
2
scripts/build.js
Normal file
|
@ -0,0 +1,2 @@
|
|||
require('../src/babel-register');
|
||||
require('../src/dev/build/cli');
|
|
@ -4,6 +4,8 @@ const kbnEs = require('@kbn/es');
|
|||
|
||||
kbnEs
|
||||
.run({
|
||||
license: 'basic',
|
||||
password: 'changeme',
|
||||
version: pkg.version,
|
||||
'source-path': path.resolve(__dirname, '../../elasticsearch'),
|
||||
'base-path': path.resolve(__dirname, '../.es'),
|
||||
|
|
|
@ -8,8 +8,19 @@ if (!process.env.BABEL_CACHE_PATH) {
|
|||
|
||||
// paths that babel-register should ignore
|
||||
const ignore = [
|
||||
/[\\\/](node_modules|bower_components)[\\\/]/,
|
||||
/[\\\/](kbn-pm\/dist)[\\\/]/
|
||||
/\/bower_components\//,
|
||||
/\/kbn-pm\/dist\//,
|
||||
|
||||
// TODO: remove this and just transpile plugins at build time, but
|
||||
// has tricky edge cases that will probably require better eslint
|
||||
// restrictions to make sure that code destined for the server/browser
|
||||
// follows respects the limitations of each environment.
|
||||
//
|
||||
// https://github.com/elastic/kibana/issues/14800#issuecomment-366130268
|
||||
|
||||
// ignore paths matching `/node_modules/{a}/{b}`, unless `a`
|
||||
// is `x-pack` and `b` is not `node_modules`
|
||||
/\/node_modules\/(?!x-pack\/(?!node_modules)([^\/]+))([^\/]+\/[^\/]+)/
|
||||
];
|
||||
|
||||
if (global.__BUILT_WITH_BABEL__) {
|
||||
|
|
|
@ -26,28 +26,13 @@ export default class BasePathProxy {
|
|||
|
||||
const sslEnabled = config.get('server.ssl.enabled');
|
||||
if (sslEnabled) {
|
||||
const agentOptions = {
|
||||
ca: map(config.get('server.ssl.certificateAuthorities'), (certAuthority) => readFileSync(certAuthority)),
|
||||
this.proxyAgent = new HttpsAgent({
|
||||
key: readFileSync(config.get('server.ssl.key')),
|
||||
passphrase: config.get('server.ssl.keyPassphrase'),
|
||||
cert: readFileSync(config.get('server.ssl.certificate')),
|
||||
ca: map(config.get('server.ssl.certificateAuthorities'), readFileSync),
|
||||
rejectUnauthorized: false
|
||||
};
|
||||
|
||||
const keystoreConfig = config.get('server.ssl.keystore.path');
|
||||
const pemConfig = config.get('server.ssl.certificate');
|
||||
|
||||
if (keystoreConfig && pemConfig) {
|
||||
throw new Error(`Invalid Configuration: please specify either "server.ssl.keystore.path" or "server.ssl.certificate", not both.`);
|
||||
}
|
||||
|
||||
if (keystoreConfig) {
|
||||
agentOptions.pfx = readFileSync(keystoreConfig);
|
||||
agentOptions.passphrase = config.get('server.ssl.keystore.password');
|
||||
} else {
|
||||
agentOptions.key = readFileSync(config.get('server.ssl.key'));
|
||||
agentOptions.cert = readFileSync(pemConfig);
|
||||
agentOptions.passphrase = config.get('server.ssl.keyPassphrase');
|
||||
}
|
||||
|
||||
this.proxyAgent = new HttpsAgent(agentOptions);
|
||||
});
|
||||
}
|
||||
|
||||
if (!this.basePath) {
|
||||
|
|
|
@ -1,17 +0,0 @@
|
|||
import { set } from 'lodash';
|
||||
import BasePathProxy from './base_path_proxy';
|
||||
|
||||
describe('CLI Cluster Manager', function () {
|
||||
describe('base_path_proxy constructor', function () {
|
||||
it('should throw an error when both server.ssl.keystore.path and server.ssl.certificate are specified', function () {
|
||||
const settings = {};
|
||||
set(settings, 'server.ssl.keystore.path', '/cert.p12');
|
||||
set(settings, 'server.ssl.certificate', './cert.crt');
|
||||
set(settings, 'server.ssl.key', './cert.key');
|
||||
|
||||
expect(() => new BasePathProxy(null, settings)).toThrow(
|
||||
`Invalid Configuration: please specify either "server.ssl.keystore.path" or "server.ssl.certificate", not both.`
|
||||
);
|
||||
});
|
||||
});
|
||||
});
|
|
@ -102,6 +102,10 @@ export default class ClusterManager {
|
|||
fromRoot('src/server'),
|
||||
fromRoot('src/ui'),
|
||||
fromRoot('src/utils'),
|
||||
fromRoot('x-pack/common'),
|
||||
fromRoot('x-pack/plugins'),
|
||||
fromRoot('x-pack/server'),
|
||||
fromRoot('x-pack/webpackShims'),
|
||||
fromRoot('config'),
|
||||
...extraPaths
|
||||
].map(path => resolve(path));
|
||||
|
@ -109,7 +113,8 @@ export default class ClusterManager {
|
|||
this.watcher = chokidar.watch(uniq(watchPaths), {
|
||||
cwd: fromRoot('.'),
|
||||
ignored: [
|
||||
/[\\\/](\..*|node_modules|bower_components|public|__tests__|coverage)[\\\/]/,
|
||||
/[\\\/](\..*|node_modules|bower_components|public|__[a-z0-9_]+__|coverage)[\\\/]/,
|
||||
/\.test\.js$/,
|
||||
...extraIgnores
|
||||
]
|
||||
});
|
||||
|
|
|
@ -2,46 +2,40 @@
|
|||
|
||||
exports[`Server logging configuration should be reloadable via SIGHUP process signaling 1`] = `
|
||||
Object {
|
||||
"@timestamp": "## @timestamp ##",
|
||||
"message": "Plugin initialization disabled.",
|
||||
"pid": "## PID ##",
|
||||
"tags": Array [
|
||||
"info",
|
||||
],
|
||||
"type": "log",
|
||||
}
|
||||
`;
|
||||
|
||||
exports[`Server logging configuration should be reloadable via SIGHUP process signaling 2`] = `
|
||||
Object {
|
||||
"@timestamp": "## @timestamp ##",
|
||||
"message": "Server running at http://localhost:8274",
|
||||
"pid": "## PID ##",
|
||||
"tags": Array [
|
||||
"listening",
|
||||
"info",
|
||||
],
|
||||
"type": "log",
|
||||
}
|
||||
`;
|
||||
|
||||
exports[`Server logging configuration should be reloadable via SIGHUP process signaling 3`] = `
|
||||
Object {
|
||||
"@timestamp": "## @timestamp ##",
|
||||
"message": "Reloading logging configuration due to SIGHUP.",
|
||||
"pid": "## PID ##",
|
||||
"tags": Array [
|
||||
"info",
|
||||
"config",
|
||||
],
|
||||
"type": "log",
|
||||
}
|
||||
`;
|
||||
|
||||
exports[`Server logging configuration should be reloadable via SIGHUP process signaling 4`] = `
|
||||
Object {
|
||||
"@timestamp": "## @timestamp ##",
|
||||
"message": "New logging configuration:
|
||||
"code": 0,
|
||||
"lines": Array [
|
||||
Object {
|
||||
"@timestamp": "## @timestamp ##",
|
||||
"message": "Plugin initialization disabled.",
|
||||
"pid": "## PID ##",
|
||||
"tags": Array [
|
||||
"info",
|
||||
],
|
||||
"type": "log",
|
||||
},
|
||||
Object {
|
||||
"@timestamp": "## @timestamp ##",
|
||||
"message": "Server running at http://localhost:8274",
|
||||
"pid": "## PID ##",
|
||||
"tags": Array [
|
||||
"listening",
|
||||
"info",
|
||||
],
|
||||
"type": "log",
|
||||
},
|
||||
Object {
|
||||
"@timestamp": "## @timestamp ##",
|
||||
"message": "Reloading logging configuration due to SIGHUP.",
|
||||
"pid": "## PID ##",
|
||||
"tags": Array [
|
||||
"info",
|
||||
"config",
|
||||
],
|
||||
"type": "log",
|
||||
},
|
||||
Object {
|
||||
"@timestamp": "## @timestamp ##",
|
||||
"message": "New logging configuration:
|
||||
{
|
||||
\\"ops\\": {
|
||||
\\"interval\\": 5000
|
||||
|
@ -57,13 +51,14 @@ Object {
|
|||
\\"useUTC\\": true
|
||||
}
|
||||
}",
|
||||
"pid": "## PID ##",
|
||||
"tags": Array [
|
||||
"info",
|
||||
"config",
|
||||
"pid": "## PID ##",
|
||||
"tags": Array [
|
||||
"info",
|
||||
"config",
|
||||
],
|
||||
"type": "log",
|
||||
},
|
||||
" log [## timestamp ##] [info][config] Reloaded logging configuration due to SIGHUP.",
|
||||
],
|
||||
"type": "log",
|
||||
}
|
||||
`;
|
||||
|
||||
exports[`Server logging configuration should be reloadable via SIGHUP process signaling 5`] = `" log [## timestamp ##] [info][config] Reloaded logging configuration due to SIGHUP."`;
|
||||
|
|
|
@ -60,7 +60,7 @@ describe('Server logging configuration', function () {
|
|||
});
|
||||
} else {
|
||||
it('should be reloadable via SIGHUP process signaling', function (done) {
|
||||
expect.assertions(6);
|
||||
expect.assertions(1);
|
||||
|
||||
child = spawn('node', [kibanaPath, '--config', testConfigFile]);
|
||||
|
||||
|
@ -68,8 +68,12 @@ describe('Server logging configuration', function () {
|
|||
done(new Error(`error in child process while attempting to reload config. ${err.stack || err.message || err}`));
|
||||
});
|
||||
|
||||
child.on('exit', code => {
|
||||
expect([null, 0]).toContain(code);
|
||||
const lines = [];
|
||||
|
||||
child.on('exit', _code => {
|
||||
const code = _code === null ? 0 : _code;
|
||||
|
||||
expect({ code, lines }).toMatchSnapshot();
|
||||
done();
|
||||
});
|
||||
|
||||
|
@ -83,7 +87,7 @@ describe('Server logging configuration', function () {
|
|||
|
||||
if (isJson) {
|
||||
const data = JSON.parse(line);
|
||||
expect(prepareJson(data)).toMatchSnapshot();
|
||||
lines.push(prepareJson(data));
|
||||
|
||||
if (data.tags.includes('listening')) {
|
||||
switchToPlainTextLog();
|
||||
|
@ -94,12 +98,12 @@ describe('Server logging configuration', function () {
|
|||
// switching over.
|
||||
|
||||
const data = JSON.parse(line);
|
||||
expect(prepareJson(data)).toMatchSnapshot();
|
||||
lines.push(prepareJson(data));
|
||||
} else {
|
||||
// Kibana has successfully stopped logging json, so we verify the
|
||||
// log line and kill the server.
|
||||
|
||||
expect(prepareLogLine(line)).toMatchSnapshot();
|
||||
lines.push(prepareLogLine(line));
|
||||
|
||||
child.kill();
|
||||
child = undefined;
|
||||
|
@ -110,8 +114,11 @@ describe('Server logging configuration', function () {
|
|||
isJson = false;
|
||||
setLoggingJson(false);
|
||||
|
||||
// reload logging config
|
||||
child.kill('SIGHUP');
|
||||
// Reload logging config. We give it a little bit of time to just make
|
||||
// sure the process sighup handler is registered.
|
||||
setTimeout(() => {
|
||||
child.kill('SIGHUP');
|
||||
}, 100);
|
||||
}
|
||||
}, 60000);
|
||||
}
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
import { join, relative, resolve } from 'path';
|
||||
import { relative, resolve } from 'path';
|
||||
import { readYamlConfig } from './read_yaml_config';
|
||||
|
||||
function fixture(name) {
|
||||
|
@ -49,15 +49,14 @@ describe('cli/serve/read_yaml_config', function () {
|
|||
});
|
||||
|
||||
describe('different cwd()', function () {
|
||||
const oldCwd = process.cwd();
|
||||
const newCwd = join(oldCwd, '..');
|
||||
const originalCwd = process.cwd();
|
||||
const tempCwd = resolve(__dirname);
|
||||
|
||||
beforeAll(function () {
|
||||
process.chdir(newCwd);
|
||||
});
|
||||
beforeAll(() => process.chdir(tempCwd));
|
||||
afterAll(() => process.chdir(originalCwd));
|
||||
|
||||
it('resolves relative files based on the cwd', function () {
|
||||
const relativePath = relative(newCwd, fixture('one.yml'));
|
||||
const relativePath = relative(tempCwd, fixture('one.yml'));
|
||||
const config = readYamlConfig(relativePath);
|
||||
expect(config).toEqual({
|
||||
foo: 1,
|
||||
|
@ -67,12 +66,13 @@ describe('cli/serve/read_yaml_config', function () {
|
|||
|
||||
it('fails to load relative paths, not found because of the cwd', function () {
|
||||
expect(function () {
|
||||
readYamlConfig(relative(oldCwd, fixture('one.yml')));
|
||||
}).toThrowError(/ENOENT/);
|
||||
});
|
||||
const relativePath = relative(
|
||||
resolve(__dirname, '../../'),
|
||||
fixture('one.yml')
|
||||
);
|
||||
|
||||
afterAll(function () {
|
||||
process.chdir(oldCwd);
|
||||
readYamlConfig(relativePath);
|
||||
}).toThrowError(/ENOENT/);
|
||||
});
|
||||
});
|
||||
|
||||
|
|
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