diff --git a/docs/migration/migrate_6_0.asciidoc b/docs/migration/migrate_6_0.asciidoc index cf481ba78d68..27830c6f806f 100644 --- a/docs/migration/migrate_6_0.asciidoc +++ b/docs/migration/migrate_6_0.asciidoc @@ -1,4 +1,13 @@ [[breaking-changes-6.0]] == Breaking changes in 6.0 -There are not yet any breaking changes in Kibana 6.0 +This section discusses the changes that you need to be aware of when migrating +your application to Kibana 6.0. + +[float] +=== Removed option to use unsupported scripting languages +*Details:* Kibana 5.x allowed users to create scripted fields using any scripting language enabled in Elasticsearch. +Kibana 6.0 will only support Painless and Lucene expression based scripts. + + +*Impact:* You will need to migrate your groovy, python, javascript, etc. scripted fields to Painless or Lucene expressions. \ No newline at end of file diff --git a/src/ui/public/field_editor/field_editor.js b/src/ui/public/field_editor/field_editor.js index ed66858deaf5..ffa5dfca5d16 100644 --- a/src/ui/public/field_editor/field_editor.js +++ b/src/ui/public/field_editor/field_editor.js @@ -10,12 +10,14 @@ import chrome from 'ui/chrome'; import IndexPatternsCastMappingTypeProvider from 'ui/index_patterns/_cast_mapping_type'; import { scriptedFields as docLinks } from '../documentation_links/documentation_links'; import './field_editor.less'; +import { GetEnabledScriptingLanguagesProvider, getSupportedScriptingLanguages } from '../scripting_languages'; uiModules .get('kibana', ['colorpicker.module']) .directive('fieldEditor', function (Private, $sce) { let fieldFormats = Private(RegistryFieldFormatsProvider); let Field = Private(IndexPatternsFieldProvider); + let getEnabledScriptingLanguages = Private(GetEnabledScriptingLanguagesProvider); const fieldTypesByLang = { painless: ['number', 'string', 'date', 'boolean'], @@ -37,7 +39,7 @@ uiModules self.docLinks = docLinks; getScriptingLangs().then((langs) => { - self.scriptingLangs = langs; + self.scriptingLangs = _.intersection(langs, ['expression', 'painless']); if (!_.includes(self.scriptingLangs, self.field.lang)) { self.field.lang = undefined; } @@ -159,11 +161,9 @@ uiModules } function getScriptingLangs() { - return $http.get(chrome.addBasePath('/api/kibana/scripts/languages')) - .then((res) => res.data) - .catch(() => { - notify.error('Error getting available scripting languages from Elasticsearch'); - return []; + return getEnabledScriptingLanguages() + .then((enabledLanguages) => { + return _.intersection(enabledLanguages, getSupportedScriptingLanguages()); }); } diff --git a/src/ui/public/scripting_languages/index.js b/src/ui/public/scripting_languages/index.js new file mode 100644 index 000000000000..9a26119cb3df --- /dev/null +++ b/src/ui/public/scripting_languages/index.js @@ -0,0 +1,20 @@ +import chrome from 'ui/chrome'; +import Notifier from 'ui/notify/notifier'; +import { intersection } from 'lodash'; + +const notify = new Notifier({ location: 'Scripting Language Service' }); + +export function getSupportedScriptingLanguages() { + return ['expression', 'painless']; +} + +export function GetEnabledScriptingLanguagesProvider($http) { + return () => { + return $http.get(chrome.addBasePath('/api/kibana/scripts/languages')) + .then((res) => res.data) + .catch(() => { + notify.error('Error getting available scripting languages from Elasticsearch'); + return []; + }); + }; +}