diff --git a/src/plugins/management/public/management_service.test.ts b/src/plugins/management/public/management_service.test.ts
index ceb91837921eb..18569ef285ff3 100644
--- a/src/plugins/management/public/management_service.test.ts
+++ b/src/plugins/management/public/management_service.test.ts
@@ -29,9 +29,8 @@ test('Provides default sections', () => {
() => {},
coreMock.createSetup().getStartServices
);
- expect(service.getAllSections().length).toEqual(3);
+ expect(service.getAllSections().length).toEqual(2);
expect(service.getSection('kibana')).not.toBeUndefined();
- expect(service.getSection('logstash')).not.toBeUndefined();
expect(service.getSection('elasticsearch')).not.toBeUndefined();
});
diff --git a/src/plugins/management/public/management_service.ts b/src/plugins/management/public/management_service.ts
index ed31a22992da8..8fc207e32e6ce 100644
--- a/src/plugins/management/public/management_service.ts
+++ b/src/plugins/management/public/management_service.ts
@@ -80,7 +80,6 @@ export class ManagementService {
);
register({ id: 'kibana', title: 'Kibana', order: 30, euiIconType: 'logoKibana' });
- register({ id: 'logstash', title: 'Logstash', order: 30, euiIconType: 'logoLogstash' });
register({
id: 'elasticsearch',
title: 'Elasticsearch',
diff --git a/x-pack/index.js b/x-pack/index.js
index 7fbd992120ea6..1a78c24b1221b 100644
--- a/x-pack/index.js
+++ b/x-pack/index.js
@@ -10,7 +10,6 @@ import { monitoring } from './legacy/plugins/monitoring';
import { reporting } from './legacy/plugins/reporting';
import { security } from './legacy/plugins/security';
import { dashboardMode } from './legacy/plugins/dashboard_mode';
-import { logstash } from './legacy/plugins/logstash';
import { beats } from './legacy/plugins/beats_management';
import { apm } from './legacy/plugins/apm';
import { maps } from './legacy/plugins/maps';
@@ -40,7 +39,6 @@ module.exports = function(kibana) {
spaces(kibana),
security(kibana),
dashboardMode(kibana),
- logstash(kibana),
beats(kibana),
apm(kibana),
maps(kibana),
diff --git a/x-pack/legacy/plugins/logstash/README.md b/x-pack/legacy/plugins/logstash/README.md
deleted file mode 100755
index 7d181249300fa..0000000000000
--- a/x-pack/legacy/plugins/logstash/README.md
+++ /dev/null
@@ -1,3 +0,0 @@
-## Logstash Plugin
-
-This plugin adds Logstash specific UI code to x-pack. Currently this plugin adds just the management features.
diff --git a/x-pack/legacy/plugins/logstash/common/lib/__tests__/get_moment.js b/x-pack/legacy/plugins/logstash/common/lib/__tests__/get_moment.js
deleted file mode 100755
index 2e63b231bec32..0000000000000
--- a/x-pack/legacy/plugins/logstash/common/lib/__tests__/get_moment.js
+++ /dev/null
@@ -1,33 +0,0 @@
-/*
- * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
- * or more contributor license agreements. Licensed under the Elastic License;
- * you may not use this file except in compliance with the Elastic License.
- */
-
-import expect from '@kbn/expect';
-import { getMoment } from '../get_moment';
-
-describe('get_moment', () => {
- describe('getMoment', () => {
- it(`returns a moment object when passed a date`, () => {
- const moment = getMoment('2017-03-30T14:53:08.121Z');
-
- expect(moment.constructor.name).to.be('Moment');
- });
-
- it(`returns null when passed falsy`, () => {
- const results = [
- getMoment(false),
- getMoment(0),
- getMoment(''),
- getMoment(null),
- getMoment(undefined),
- getMoment(NaN),
- ];
-
- results.forEach(result => {
- expect(result).to.be(null);
- });
- });
- });
-});
diff --git a/x-pack/legacy/plugins/logstash/common/lib/get_moment.js b/x-pack/legacy/plugins/logstash/common/lib/get_moment.js
deleted file mode 100755
index 7a808ec9a0336..0000000000000
--- a/x-pack/legacy/plugins/logstash/common/lib/get_moment.js
+++ /dev/null
@@ -1,15 +0,0 @@
-/*
- * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
- * or more contributor license agreements. Licensed under the Elastic License;
- * you may not use this file except in compliance with the Elastic License.
- */
-
-import moment from 'moment';
-
-export function getMoment(date) {
- if (!date) {
- return null;
- }
-
- return moment(date);
-}
diff --git a/x-pack/legacy/plugins/logstash/index.js b/x-pack/legacy/plugins/logstash/index.js
deleted file mode 100755
index 29f01032f3413..0000000000000
--- a/x-pack/legacy/plugins/logstash/index.js
+++ /dev/null
@@ -1,32 +0,0 @@
-/*
- * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
- * or more contributor license agreements. Licensed under the Elastic License;
- * you may not use this file except in compliance with the Elastic License.
- */
-
-import { resolve } from 'path';
-import { registerLicenseChecker } from './server/lib/register_license_checker';
-import { PLUGIN } from '../../../plugins/logstash/common/constants';
-
-export const logstash = kibana =>
- new kibana.Plugin({
- id: PLUGIN.ID,
- publicDir: resolve(__dirname, 'public'),
- require: ['kibana', 'elasticsearch', 'xpack_main'],
- configPrefix: 'xpack.logstash',
- config(Joi) {
- return Joi.object({
- enabled: Joi.boolean().default(true),
- }).default();
- },
- uiExports: {
- managementSections: [
- 'plugins/logstash/sections/pipeline_list',
- 'plugins/logstash/sections/pipeline_edit',
- ],
- home: ['plugins/logstash/lib/register_home_feature'],
- },
- init: server => {
- registerLicenseChecker(server);
- },
- });
diff --git a/x-pack/legacy/plugins/logstash/public/lib/register_home_feature.ts b/x-pack/legacy/plugins/logstash/public/lib/register_home_feature.ts
deleted file mode 100644
index 2e1ee2afb9ce6..0000000000000
--- a/x-pack/legacy/plugins/logstash/public/lib/register_home_feature.ts
+++ /dev/null
@@ -1,35 +0,0 @@
-/*
- * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
- * or more contributor license agreements. Licensed under the Elastic License;
- * you may not use this file except in compliance with the Elastic License.
- */
-
-import { i18n } from '@kbn/i18n';
-import { npSetup } from 'ui/new_platform';
-// @ts-ignore
-import { xpackInfo } from 'plugins/xpack_main/services/xpack_info';
-import { FeatureCatalogueCategory } from '../../../../../../src/plugins/home/public';
-// @ts-ignore
-import { PLUGIN } from '../../../../../plugins/logstash/common/constants';
-
-const {
- plugins: { home },
-} = npSetup;
-
-const enableLinks = Boolean(xpackInfo.get(`features.${PLUGIN.ID}.enableLinks`));
-
-if (enableLinks) {
- home.featureCatalogue.register({
- id: 'management_logstash',
- title: i18n.translate('xpack.logstash.homeFeature.logstashPipelinesTitle', {
- defaultMessage: 'Logstash Pipelines',
- }),
- description: i18n.translate('xpack.logstash.homeFeature.logstashPipelinesDescription', {
- defaultMessage: 'Create, delete, update, and clone data ingestion pipelines.',
- }),
- icon: 'pipelineApp',
- path: '/app/kibana#/management/logstash/pipelines',
- showOnHomePage: true,
- category: FeatureCatalogueCategory.ADMIN,
- });
-}
diff --git a/x-pack/legacy/plugins/logstash/public/lib/update_management_sections/update_logstash_sections.js b/x-pack/legacy/plugins/logstash/public/lib/update_management_sections/update_logstash_sections.js
deleted file mode 100755
index 8da687529c846..0000000000000
--- a/x-pack/legacy/plugins/logstash/public/lib/update_management_sections/update_logstash_sections.js
+++ /dev/null
@@ -1,22 +0,0 @@
-/*
- * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
- * or more contributor license agreements. Licensed under the Elastic License;
- * you may not use this file except in compliance with the Elastic License.
- */
-
-import { management } from 'ui/management';
-
-export function updateLogstashSections(pipelineId) {
- const editSection = management.getSection('logstash/pipelines/pipeline/edit');
- const newSection = management.getSection('logstash/pipelines/pipeline/new');
-
- newSection.hide();
- editSection.hide();
-
- if (pipelineId) {
- editSection.url = `#/management/logstash/pipelines/pipeline/${pipelineId}/edit`;
- editSection.show();
- } else {
- newSection.show();
- }
-}
diff --git a/x-pack/legacy/plugins/logstash/public/sections/pipeline_edit/components/pipeline_edit/pipeline_edit.js b/x-pack/legacy/plugins/logstash/public/sections/pipeline_edit/components/pipeline_edit/pipeline_edit.js
deleted file mode 100755
index 83446278fdeca..0000000000000
--- a/x-pack/legacy/plugins/logstash/public/sections/pipeline_edit/components/pipeline_edit/pipeline_edit.js
+++ /dev/null
@@ -1,60 +0,0 @@
-/*
- * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
- * or more contributor license agreements. Licensed under the Elastic License;
- * you may not use this file except in compliance with the Elastic License.
- */
-
-import React from 'react';
-import { render } from 'react-dom';
-import { isEmpty } from 'lodash';
-import { uiModules } from 'ui/modules';
-import { npSetup } from 'ui/new_platform';
-import { toastNotifications } from 'ui/notify';
-import { I18nContext } from 'ui/i18n';
-import { PipelineEditor } from '../../../../components/pipeline_editor';
-import 'plugins/logstash/services/license';
-import { logstashSecurity } from 'plugins/logstash/services/security';
-import 'ace';
-
-const app = uiModules.get('xpack/logstash');
-
-app.directive('pipelineEdit', function($injector) {
- const pipelineService = $injector.get('pipelineService');
- const licenseService = $injector.get('logstashLicenseService');
- const kbnUrl = $injector.get('kbnUrl');
- const $route = $injector.get('$route');
-
- return {
- restrict: 'E',
- link: async (scope, el) => {
- const close = () => scope.$evalAsync(kbnUrl.change('/management/logstash/pipelines', {}));
- const open = id =>
- scope.$evalAsync(kbnUrl.change(`/management/logstash/pipelines/${id}/edit`));
-
- const userResource = logstashSecurity.isSecurityEnabled()
- ? await npSetup.plugins.security.authc.getCurrentUser()
- : null;
-
- render(
-
-
- ,
- el[0]
- );
- },
- scope: {
- pipeline: '=',
- },
- };
-});
diff --git a/x-pack/legacy/plugins/logstash/public/sections/pipeline_edit/components/upgrade_failure/upgrade_failure.js b/x-pack/legacy/plugins/logstash/public/sections/pipeline_edit/components/upgrade_failure/upgrade_failure.js
deleted file mode 100755
index 2ef99d3b47672..0000000000000
--- a/x-pack/legacy/plugins/logstash/public/sections/pipeline_edit/components/upgrade_failure/upgrade_failure.js
+++ /dev/null
@@ -1,49 +0,0 @@
-/*
- * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
- * or more contributor license agreements. Licensed under the Elastic License;
- * you may not use this file except in compliance with the Elastic License.
- */
-
-import React from 'react';
-import { render } from 'react-dom';
-import { isEmpty } from 'lodash';
-import { uiModules } from 'ui/modules';
-import { I18nContext } from 'ui/i18n';
-import { UpgradeFailure } from '../../../../components/upgrade_failure';
-
-const app = uiModules.get('xpack/logstash');
-
-app.directive('upgradeFailure', $injector => {
- const $route = $injector.get('$route');
- const kbnUrl = $injector.get('kbnUrl');
-
- return {
- link: (scope, el) => {
- const onRetry = () => {
- $route.updateParams({ retry: true });
- $route.reload();
- };
- const onClose = () => {
- scope.$evalAsync(kbnUrl.change('management/logstash/pipelines', {}));
- };
- const isNewPipeline = isEmpty(scope.pipeline.id);
- const isManualUpgrade = !!$route.current.params.retry;
-
- render(
-
-
- ,
- el[0]
- );
- },
- restrict: 'E',
- scope: {
- pipeline: '=',
- },
- };
-});
diff --git a/x-pack/legacy/plugins/logstash/public/sections/pipeline_edit/pipeline_edit_route.html b/x-pack/legacy/plugins/logstash/public/sections/pipeline_edit/pipeline_edit_route.html
deleted file mode 100755
index e1c422d46dfdb..0000000000000
--- a/x-pack/legacy/plugins/logstash/public/sections/pipeline_edit/pipeline_edit_route.html
+++ /dev/null
@@ -1,5 +0,0 @@
-
-
-
-
-
diff --git a/x-pack/legacy/plugins/logstash/public/sections/pipeline_edit/pipeline_edit_route.js b/x-pack/legacy/plugins/logstash/public/sections/pipeline_edit/pipeline_edit_route.js
deleted file mode 100755
index 733f7dc3ae2e6..0000000000000
--- a/x-pack/legacy/plugins/logstash/public/sections/pipeline_edit/pipeline_edit_route.js
+++ /dev/null
@@ -1,87 +0,0 @@
-/*
- * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
- * or more contributor license agreements. Licensed under the Elastic License;
- * you may not use this file except in compliance with the Elastic License.
- */
-
-import routes from 'ui/routes';
-import { toastNotifications } from 'ui/notify';
-import { i18n } from '@kbn/i18n';
-import template from './pipeline_edit_route.html';
-import 'plugins/logstash/services/pipeline';
-import 'plugins/logstash/services/license';
-import 'plugins/logstash/services/upgrade';
-import './components/pipeline_edit';
-import './components/upgrade_failure';
-import { updateLogstashSections } from 'plugins/logstash/lib/update_management_sections';
-import { Pipeline } from 'plugins/logstash/models/pipeline';
-import { getPipelineCreateBreadcrumbs, getPipelineEditBreadcrumbs } from '../breadcrumbs';
-
-routes
- .when('/management/logstash/pipelines/pipeline/:id/edit', {
- k7Breadcrumbs: getPipelineEditBreadcrumbs,
- })
- .when('/management/logstash/pipelines/new-pipeline', {
- k7Breadcrumbs: getPipelineCreateBreadcrumbs,
- })
- .defaults(/management\/logstash\/pipelines\/(new-pipeline|pipeline\/:id\/edit)/, {
- template: template,
- controller: class PipelineEditRouteController {
- constructor($injector) {
- const $route = $injector.get('$route');
- this.pipeline = $route.current.locals.pipeline;
- this.isUpgraded = $route.current.locals.isUpgraded;
- }
- },
- controllerAs: 'pipelineEditRoute',
- resolve: {
- logstashTabs: $injector => {
- const $route = $injector.get('$route');
- const pipelineId = $route.current.params.id;
- updateLogstashSections(pipelineId);
- },
- pipeline: function($injector) {
- const $route = $injector.get('$route');
- const pipelineService = $injector.get('pipelineService');
- const licenseService = $injector.get('logstashLicenseService');
- const kbnUrl = $injector.get('kbnUrl');
-
- const pipelineId = $route.current.params.id;
-
- if (!pipelineId) return new Pipeline();
-
- return pipelineService
- .loadPipeline(pipelineId)
- .then(pipeline => (!!$route.current.params.clone ? pipeline.clone : pipeline))
- .catch(err => {
- return licenseService.checkValidity().then(() => {
- if (err.status !== 403) {
- toastNotifications.addDanger(
- i18n.translate('xpack.logstash.couldNotLoadPipelineErrorNotification', {
- defaultMessage: `Couldn't load pipeline. Error: '{errStatusText}'.`,
- values: {
- errStatusText: err.statusText,
- },
- })
- );
- }
-
- kbnUrl.redirect('/management/logstash/pipelines');
- return Promise.reject();
- });
- });
- },
- checkLicense: $injector => {
- const licenseService = $injector.get('logstashLicenseService');
- return licenseService.checkValidity();
- },
- isUpgraded: $injector => {
- const upgradeService = $injector.get('upgradeService');
- return upgradeService.executeUpgrade();
- },
- },
- });
-
-routes.when('/management/logstash/pipelines/pipeline/:id', {
- redirectTo: '/management/logstash/pipelines/pipeline/:id/edit',
-});
diff --git a/x-pack/legacy/plugins/logstash/public/sections/pipeline_list/components/pipeline_list/index.js b/x-pack/legacy/plugins/logstash/public/sections/pipeline_list/components/pipeline_list/index.js
deleted file mode 100755
index 7e8ca0e4c2c57..0000000000000
--- a/x-pack/legacy/plugins/logstash/public/sections/pipeline_list/components/pipeline_list/index.js
+++ /dev/null
@@ -1,7 +0,0 @@
-/*
- * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
- * or more contributor license agreements. Licensed under the Elastic License;
- * you may not use this file except in compliance with the Elastic License.
- */
-
-import './pipeline_list';
diff --git a/x-pack/legacy/plugins/logstash/public/sections/pipeline_list/components/pipeline_list/pipeline_list.js b/x-pack/legacy/plugins/logstash/public/sections/pipeline_list/components/pipeline_list/pipeline_list.js
deleted file mode 100755
index b856979aed8b6..0000000000000
--- a/x-pack/legacy/plugins/logstash/public/sections/pipeline_list/components/pipeline_list/pipeline_list.js
+++ /dev/null
@@ -1,58 +0,0 @@
-/*
- * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
- * or more contributor license agreements. Licensed under the Elastic License;
- * you may not use this file except in compliance with the Elastic License.
- */
-
-import React from 'react';
-import { render } from 'react-dom';
-import { uiModules } from 'ui/modules';
-import { toastNotifications } from 'ui/notify';
-import { I18nContext } from 'ui/i18n';
-import { PipelineList } from '../../../../components/pipeline_list';
-import 'plugins/logstash/services/pipelines';
-import 'plugins/logstash/services/license';
-import 'plugins/logstash/services/cluster';
-import 'plugins/logstash/services/monitoring';
-
-const app = uiModules.get('xpack/logstash');
-
-app.directive('pipelineList', function($injector) {
- const pipelinesService = $injector.get('pipelinesService');
- const licenseService = $injector.get('logstashLicenseService');
- const clusterService = $injector.get('xpackLogstashClusterService');
- const monitoringService = $injector.get('xpackLogstashMonitoringService');
- const kbnUrl = $injector.get('kbnUrl');
-
- return {
- restrict: 'E',
- link: (scope, el) => {
- const openPipeline = id =>
- scope.$evalAsync(kbnUrl.change(`management/logstash/pipelines/pipeline/${id}/edit`));
- const createPipeline = () =>
- scope.$evalAsync(kbnUrl.change('management/logstash/pipelines/new-pipeline'));
- const clonePipeline = id =>
- scope.$evalAsync(kbnUrl.change(`management/logstash/pipelines/pipeline/${id}/edit?clone`));
- render(
-
-
- ,
- el[0]
- );
- },
- scope: {},
- controllerAs: 'pipelineList',
- };
-});
diff --git a/x-pack/legacy/plugins/logstash/public/sections/pipeline_list/index.js b/x-pack/legacy/plugins/logstash/public/sections/pipeline_list/index.js
deleted file mode 100755
index f60decd1378d5..0000000000000
--- a/x-pack/legacy/plugins/logstash/public/sections/pipeline_list/index.js
+++ /dev/null
@@ -1,8 +0,0 @@
-/*
- * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
- * or more contributor license agreements. Licensed under the Elastic License;
- * you may not use this file except in compliance with the Elastic License.
- */
-
-import './register_management_section';
-import './pipeline_list_route';
diff --git a/x-pack/legacy/plugins/logstash/public/sections/pipeline_list/pipeline_list_route.html b/x-pack/legacy/plugins/logstash/public/sections/pipeline_list/pipeline_list_route.html
deleted file mode 100755
index 55b3fabd70161..0000000000000
--- a/x-pack/legacy/plugins/logstash/public/sections/pipeline_list/pipeline_list_route.html
+++ /dev/null
@@ -1,3 +0,0 @@
-
-
-
diff --git a/x-pack/legacy/plugins/logstash/public/sections/pipeline_list/pipeline_list_route.js b/x-pack/legacy/plugins/logstash/public/sections/pipeline_list/pipeline_list_route.js
deleted file mode 100755
index eb593207572c2..0000000000000
--- a/x-pack/legacy/plugins/logstash/public/sections/pipeline_list/pipeline_list_route.js
+++ /dev/null
@@ -1,33 +0,0 @@
-/*
- * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
- * or more contributor license agreements. Licensed under the Elastic License;
- * you may not use this file except in compliance with the Elastic License.
- */
-
-import routes from 'ui/routes';
-import { management } from 'ui/management';
-import template from './pipeline_list_route.html';
-import './components/pipeline_list';
-import 'plugins/logstash/services/license';
-import { getPipelineListBreadcrumbs } from '../breadcrumbs';
-
-routes.when('/management/logstash/pipelines/', {
- template,
- k7Breadcrumbs: getPipelineListBreadcrumbs,
-});
-
-routes.defaults(/\/management/, {
- resolve: {
- logstashManagementSection: $injector => {
- const licenseService = $injector.get('logstashLicenseService');
- const logstashSection = management.getSection('logstash/pipelines');
-
- if (licenseService.enableLinks) {
- logstashSection.show();
- logstashSection.enable();
- } else {
- logstashSection.hide();
- }
- },
- },
-});
diff --git a/x-pack/legacy/plugins/logstash/public/sections/pipeline_list/register_management_section.js b/x-pack/legacy/plugins/logstash/public/sections/pipeline_list/register_management_section.js
deleted file mode 100755
index e285418f5f2ae..0000000000000
--- a/x-pack/legacy/plugins/logstash/public/sections/pipeline_list/register_management_section.js
+++ /dev/null
@@ -1,36 +0,0 @@
-/*
- * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
- * or more contributor license agreements. Licensed under the Elastic License;
- * you may not use this file except in compliance with the Elastic License.
- */
-
-import { management } from 'ui/management';
-import { i18n } from '@kbn/i18n';
-
-management.getSection('logstash').register('pipelines', {
- display: i18n.translate('xpack.logstash.managementSection.pipelinesTitle', {
- defaultMessage: 'Pipelines',
- }),
- order: 10,
- url: '#/management/logstash/pipelines/',
-});
-
-management.getSection('logstash/pipelines').register('pipeline', {
- visible: false,
-});
-
-management.getSection('logstash/pipelines/pipeline').register('edit', {
- display: i18n.translate('xpack.logstash.managementSection.editPipelineTitle', {
- defaultMessage: 'Edit pipeline',
- }),
- order: 1,
- visible: false,
-});
-
-management.getSection('logstash/pipelines/pipeline').register('new', {
- display: i18n.translate('xpack.logstash.managementSection.createPipelineTitle', {
- defaultMessage: 'Create pipeline',
- }),
- order: 1,
- visible: false,
-});
diff --git a/x-pack/legacy/plugins/logstash/public/services/cluster/cluster_service.factory.js b/x-pack/legacy/plugins/logstash/public/services/cluster/cluster_service.factory.js
deleted file mode 100755
index 0fee2804c704d..0000000000000
--- a/x-pack/legacy/plugins/logstash/public/services/cluster/cluster_service.factory.js
+++ /dev/null
@@ -1,13 +0,0 @@
-/*
- * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
- * or more contributor license agreements. Licensed under the Elastic License;
- * you may not use this file except in compliance with the Elastic License.
- */
-
-import { uiModules } from 'ui/modules';
-import { ClusterService } from './cluster_service';
-
-uiModules.get('xpack/logstash').factory('xpackLogstashClusterService', $injector => {
- const $http = $injector.get('$http');
- return new ClusterService($http);
-});
diff --git a/x-pack/legacy/plugins/logstash/public/services/cluster/index.js b/x-pack/legacy/plugins/logstash/public/services/cluster/index.js
deleted file mode 100755
index ba52657a27ca8..0000000000000
--- a/x-pack/legacy/plugins/logstash/public/services/cluster/index.js
+++ /dev/null
@@ -1,7 +0,0 @@
-/*
- * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
- * or more contributor license agreements. Licensed under the Elastic License;
- * you may not use this file except in compliance with the Elastic License.
- */
-
-import './cluster_service.factory';
diff --git a/x-pack/legacy/plugins/logstash/public/services/license/index.js b/x-pack/legacy/plugins/logstash/public/services/license/index.js
deleted file mode 100755
index 8be8fb5ccbc64..0000000000000
--- a/x-pack/legacy/plugins/logstash/public/services/license/index.js
+++ /dev/null
@@ -1,7 +0,0 @@
-/*
- * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
- * or more contributor license agreements. Licensed under the Elastic License;
- * you may not use this file except in compliance with the Elastic License.
- */
-
-import './license_service.factory';
diff --git a/x-pack/legacy/plugins/logstash/public/services/license/license_service.factory.js b/x-pack/legacy/plugins/logstash/public/services/license/license_service.factory.js
deleted file mode 100755
index 0e131f9b94008..0000000000000
--- a/x-pack/legacy/plugins/logstash/public/services/license/license_service.factory.js
+++ /dev/null
@@ -1,14 +0,0 @@
-/*
- * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
- * or more contributor license agreements. Licensed under the Elastic License;
- * you may not use this file except in compliance with the Elastic License.
- */
-
-import { uiModules } from 'ui/modules';
-import { xpackInfo } from 'plugins/xpack_main/services/xpack_info';
-import 'ui/url';
-import { LogstashLicenseService } from './logstash_license_service';
-
-uiModules.get('xpack/logstash').factory('logstashLicenseService', ($timeout, kbnUrl) => {
- return new LogstashLicenseService(xpackInfo, kbnUrl, $timeout);
-});
diff --git a/x-pack/legacy/plugins/logstash/public/services/license/logstash_license_service.js b/x-pack/legacy/plugins/logstash/public/services/license/logstash_license_service.js
deleted file mode 100755
index 69cc8614a6ae2..0000000000000
--- a/x-pack/legacy/plugins/logstash/public/services/license/logstash_license_service.js
+++ /dev/null
@@ -1,62 +0,0 @@
-/*
- * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
- * or more contributor license agreements. Licensed under the Elastic License;
- * you may not use this file except in compliance with the Elastic License.
- */
-
-import React from 'react';
-import { toastNotifications } from 'ui/notify';
-import { MarkdownSimple } from '../../../../../../../src/plugins/kibana_react/public';
-import { PLUGIN } from '../../../../../../plugins/logstash/common/constants';
-
-export class LogstashLicenseService {
- constructor(xpackInfoService, kbnUrlService, $timeout) {
- this.xpackInfoService = xpackInfoService;
- this.kbnUrlService = kbnUrlService;
- this.$timeout = $timeout;
- }
-
- get enableLinks() {
- return Boolean(this.xpackInfoService.get(`features.${PLUGIN.ID}.enableLinks`));
- }
-
- get isAvailable() {
- return Boolean(this.xpackInfoService.get(`features.${PLUGIN.ID}.isAvailable`));
- }
-
- get isReadOnly() {
- return Boolean(this.xpackInfoService.get(`features.${PLUGIN.ID}.isReadOnly`));
- }
-
- get message() {
- return this.xpackInfoService.get(`features.${PLUGIN.ID}.message`);
- }
-
- notifyAndRedirect() {
- toastNotifications.addDanger({
- title: (
-
- {this.xpackInfoService.get(`features.${PLUGIN.ID}.message`)}
-
- ),
- });
- this.kbnUrlService.redirect('/management');
- }
-
- /**
- * Checks if the license is valid or the license can perform downgraded UI tasks.
- * Otherwise, notifies and redirects.
- */
- checkValidity() {
- return new Promise((resolve, reject) => {
- this.$timeout(() => {
- if (this.isAvailable) {
- return resolve();
- }
-
- this.notifyAndRedirect();
- return reject();
- }, 10); // To allow latest XHR call to update license info
- });
- }
-}
diff --git a/x-pack/legacy/plugins/logstash/public/services/monitoring/index.js b/x-pack/legacy/plugins/logstash/public/services/monitoring/index.js
deleted file mode 100755
index 83b2105beb5ef..0000000000000
--- a/x-pack/legacy/plugins/logstash/public/services/monitoring/index.js
+++ /dev/null
@@ -1,7 +0,0 @@
-/*
- * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
- * or more contributor license agreements. Licensed under the Elastic License;
- * you may not use this file except in compliance with the Elastic License.
- */
-
-import './monitoring_service.factory';
diff --git a/x-pack/legacy/plugins/logstash/public/services/monitoring/monitoring_service.factory.js b/x-pack/legacy/plugins/logstash/public/services/monitoring/monitoring_service.factory.js
deleted file mode 100755
index 271c776dd6f69..0000000000000
--- a/x-pack/legacy/plugins/logstash/public/services/monitoring/monitoring_service.factory.js
+++ /dev/null
@@ -1,18 +0,0 @@
-/*
- * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
- * or more contributor license agreements. Licensed under the Elastic License;
- * you may not use this file except in compliance with the Elastic License.
- */
-
-import { uiModules } from 'ui/modules';
-import { MonitoringService } from './monitoring_service';
-import '../cluster';
-
-uiModules.get('xpack/logstash').factory('xpackLogstashMonitoringService', $injector => {
- const $http = $injector.get('$http');
- const Promise = $injector.get('Promise');
- const monitoringUiEnabled =
- $injector.has('monitoringUiEnabled') && $injector.get('monitoringUiEnabled');
- const clusterService = $injector.get('xpackLogstashClusterService');
- return new MonitoringService($http, Promise, monitoringUiEnabled, clusterService);
-});
diff --git a/x-pack/legacy/plugins/logstash/public/services/pipeline/index.js b/x-pack/legacy/plugins/logstash/public/services/pipeline/index.js
deleted file mode 100755
index 3b0e28bd555e6..0000000000000
--- a/x-pack/legacy/plugins/logstash/public/services/pipeline/index.js
+++ /dev/null
@@ -1,7 +0,0 @@
-/*
- * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
- * or more contributor license agreements. Licensed under the Elastic License;
- * you may not use this file except in compliance with the Elastic License.
- */
-
-import './pipeline_service.factory';
diff --git a/x-pack/legacy/plugins/logstash/public/services/pipeline/pipeline_service.factory.js b/x-pack/legacy/plugins/logstash/public/services/pipeline/pipeline_service.factory.js
deleted file mode 100755
index cf93915425213..0000000000000
--- a/x-pack/legacy/plugins/logstash/public/services/pipeline/pipeline_service.factory.js
+++ /dev/null
@@ -1,14 +0,0 @@
-/*
- * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
- * or more contributor license agreements. Licensed under the Elastic License;
- * you may not use this file except in compliance with the Elastic License.
- */
-
-import { uiModules } from 'ui/modules';
-import { PipelineService } from './pipeline_service';
-
-uiModules.get('xpack/logstash').factory('pipelineService', $injector => {
- const $http = $injector.get('$http');
- const pipelinesService = $injector.get('pipelinesService');
- return new PipelineService($http, pipelinesService);
-});
diff --git a/x-pack/legacy/plugins/logstash/public/services/pipeline/pipeline_service.js b/x-pack/legacy/plugins/logstash/public/services/pipeline/pipeline_service.js
deleted file mode 100755
index b5d0dbeb852d5..0000000000000
--- a/x-pack/legacy/plugins/logstash/public/services/pipeline/pipeline_service.js
+++ /dev/null
@@ -1,40 +0,0 @@
-/*
- * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
- * or more contributor license agreements. Licensed under the Elastic License;
- * you may not use this file except in compliance with the Elastic License.
- */
-
-import chrome from 'ui/chrome';
-import { ROUTES } from '../../../../../../plugins/logstash/common/constants';
-import { Pipeline } from 'plugins/logstash/models/pipeline';
-
-export class PipelineService {
- constructor($http, pipelinesService) {
- this.$http = $http;
- this.pipelinesService = pipelinesService;
- this.basePath = chrome.addBasePath(ROUTES.API_ROOT);
- }
-
- loadPipeline(id) {
- return this.$http.get(`${this.basePath}/pipeline/${id}`).then(response => {
- return Pipeline.fromUpstreamJSON(response.data);
- });
- }
-
- savePipeline(pipelineModel) {
- return this.$http
- .put(`${this.basePath}/pipeline/${pipelineModel.id}`, pipelineModel.upstreamJSON)
- .catch(e => {
- throw e.data.message;
- });
- }
-
- deletePipeline(id) {
- return this.$http
- .delete(`${this.basePath}/pipeline/${id}`)
- .then(() => this.pipelinesService.addToRecentlyDeleted(id))
- .catch(e => {
- throw e.data.message;
- });
- }
-}
diff --git a/x-pack/legacy/plugins/logstash/public/services/pipelines/index.js b/x-pack/legacy/plugins/logstash/public/services/pipelines/index.js
deleted file mode 100755
index e273e12d46c6d..0000000000000
--- a/x-pack/legacy/plugins/logstash/public/services/pipelines/index.js
+++ /dev/null
@@ -1,7 +0,0 @@
-/*
- * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
- * or more contributor license agreements. Licensed under the Elastic License;
- * you may not use this file except in compliance with the Elastic License.
- */
-
-import './pipelines_service.factory';
diff --git a/x-pack/legacy/plugins/logstash/public/services/pipelines/pipelines_service.factory.js b/x-pack/legacy/plugins/logstash/public/services/pipelines/pipelines_service.factory.js
deleted file mode 100755
index 9295949e001eb..0000000000000
--- a/x-pack/legacy/plugins/logstash/public/services/pipelines/pipelines_service.factory.js
+++ /dev/null
@@ -1,17 +0,0 @@
-/*
- * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
- * or more contributor license agreements. Licensed under the Elastic License;
- * you may not use this file except in compliance with the Elastic License.
- */
-
-import { uiModules } from 'ui/modules';
-import { PipelinesService } from './pipelines_service';
-import '../monitoring';
-
-uiModules.get('xpack/logstash').factory('pipelinesService', $injector => {
- const $http = $injector.get('$http');
- const $window = $injector.get('$window');
- const Promise = $injector.get('Promise');
- const monitoringService = $injector.get('xpackLogstashMonitoringService');
- return new PipelinesService($http, $window, Promise, monitoringService);
-});
diff --git a/x-pack/legacy/plugins/logstash/public/services/pipelines/pipelines_service.js b/x-pack/legacy/plugins/logstash/public/services/pipelines/pipelines_service.js
deleted file mode 100755
index d70c8be06fde4..0000000000000
--- a/x-pack/legacy/plugins/logstash/public/services/pipelines/pipelines_service.js
+++ /dev/null
@@ -1,135 +0,0 @@
-/*
- * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
- * or more contributor license agreements. Licensed under the Elastic License;
- * you may not use this file except in compliance with the Elastic License.
- */
-
-import chrome from 'ui/chrome';
-import { ROUTES, MONITORING } from '../../../../../../plugins/logstash/common/constants';
-import { PipelineListItem } from 'plugins/logstash/models/pipeline_list_item';
-
-const RECENTLY_DELETED_PIPELINE_IDS_STORAGE_KEY = 'xpack.logstash.recentlyDeletedPipelines';
-
-export class PipelinesService {
- constructor($http, $window, Promise, monitoringService) {
- this.$http = $http;
- this.$window = $window;
- this.Promise = Promise;
- this.monitoringService = monitoringService;
- this.basePath = chrome.addBasePath(ROUTES.API_ROOT);
- }
-
- getPipelineList() {
- return this.Promise.all([
- this.getManagementPipelineList(),
- this.getMonitoringPipelineList(),
- ]).then(([managementPipelines, monitoringPipelines]) => {
- const now = Date.now();
-
- // Monitoring will report centrally-managed pipelines as well, including recently-deleted centrally-managed ones.
- // If there's a recently-deleted pipeline we're keeping track of BUT monitoring doesn't report it, that means
- // it's not running in Logstash any more. So we can stop tracking it as a recently-deleted pipeline.
- const monitoringPipelineIds = monitoringPipelines.map(pipeline => pipeline.id);
- this.getRecentlyDeleted().forEach(recentlyDeletedPipeline => {
- // We don't want to stop tracking the recently-deleted pipeline until Monitoring has had some
- // time to report on it. Otherwise, if we stop tracking first, *then* Monitoring reports it, we'll
- // still end up showing it in the list until Monitoring stops reporting it.
- if (now - recentlyDeletedPipeline.deletedOn < MONITORING.ACTIVE_PIPELINE_RANGE_S * 1000) {
- return;
- }
-
- // If Monitoring is still reporting the pipeline, don't stop tracking it yet
- if (monitoringPipelineIds.includes(recentlyDeletedPipeline.id)) {
- return;
- }
-
- this.removeFromRecentlyDeleted(recentlyDeletedPipeline.id);
- });
-
- // Merge centrally-managed pipelines with pipelines reported by monitoring. Take care to dedupe
- // while merging because monitoring will (rightly) report centrally-managed pipelines as well,
- // including recently-deleted ones!
- const managementPipelineIds = managementPipelines.map(pipeline => pipeline.id);
- return managementPipelines.concat(
- monitoringPipelines.filter(
- monitoringPipeline =>
- !managementPipelineIds.includes(monitoringPipeline.id) &&
- !this.isRecentlyDeleted(monitoringPipeline.id)
- )
- );
- });
- }
-
- getManagementPipelineList() {
- return this.$http
- .get(`${this.basePath}/pipelines`)
- .then(response =>
- response.data.pipelines.map(pipeline => PipelineListItem.fromUpstreamJSON(pipeline))
- );
- }
-
- getMonitoringPipelineList() {
- return this.monitoringService.getPipelineList();
- }
-
- /**
- * Delete a collection of pipelines
- *
- * @param pipelineIds Array of pipeline IDs
- * @return Promise { numSuccesses, numErrors }
- */
- deletePipelines(pipelineIds) {
- const body = {
- pipelineIds,
- };
- return this.$http.post(`${this.basePath}/pipelines/delete`, body).then(response => {
- this.addToRecentlyDeleted(...pipelineIds);
- return response.data.results;
- });
- }
-
- addToRecentlyDeleted(...pipelineIds) {
- const recentlyDeletedPipelines = this.getRecentlyDeleted();
- const recentlyDeletedPipelineIds = recentlyDeletedPipelines.map(pipeline => pipeline.id);
- pipelineIds.forEach(pipelineId => {
- if (!recentlyDeletedPipelineIds.includes(pipelineId)) {
- recentlyDeletedPipelines.push({
- id: pipelineId,
- deletedOn: Date.now(),
- });
- }
- });
- this.setRecentlyDeleted(recentlyDeletedPipelines);
- }
-
- removeFromRecentlyDeleted(...pipelineIds) {
- const recentlyDeletedPipelinesToKeep = this.getRecentlyDeleted().filter(
- recentlyDeletedPipeline => !pipelineIds.includes(recentlyDeletedPipeline.id)
- );
- this.setRecentlyDeleted(recentlyDeletedPipelinesToKeep);
- }
-
- isRecentlyDeleted(pipelineId) {
- return this.getRecentlyDeleted()
- .map(pipeline => pipeline.id)
- .includes(pipelineId);
- }
-
- getRecentlyDeleted() {
- const recentlyDeletedPipelines = this.$window.localStorage.getItem(
- RECENTLY_DELETED_PIPELINE_IDS_STORAGE_KEY
- );
- if (!recentlyDeletedPipelines) {
- return [];
- }
-
- return JSON.parse(recentlyDeletedPipelines);
- }
-
- setRecentlyDeleted(recentlyDeletedPipelineIds) {
- this.$window.localStorage.setItem(
- RECENTLY_DELETED_PIPELINE_IDS_STORAGE_KEY,
- JSON.stringify(recentlyDeletedPipelineIds)
- );
- }
-}
diff --git a/x-pack/legacy/plugins/logstash/public/services/security/index.js b/x-pack/legacy/plugins/logstash/public/services/security/index.js
deleted file mode 100755
index c9ff911723156..0000000000000
--- a/x-pack/legacy/plugins/logstash/public/services/security/index.js
+++ /dev/null
@@ -1,7 +0,0 @@
-/*
- * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
- * or more contributor license agreements. Licensed under the Elastic License;
- * you may not use this file except in compliance with the Elastic License.
- */
-
-export { logstashSecurity } from './logstash_security';
diff --git a/x-pack/legacy/plugins/logstash/public/services/security/logstash_security.js b/x-pack/legacy/plugins/logstash/public/services/security/logstash_security.js
deleted file mode 100755
index 0949038c9b6c7..0000000000000
--- a/x-pack/legacy/plugins/logstash/public/services/security/logstash_security.js
+++ /dev/null
@@ -1,13 +0,0 @@
-/*
- * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
- * or more contributor license agreements. Licensed under the Elastic License;
- * you may not use this file except in compliance with the Elastic License.
- */
-
-import { xpackInfo } from 'plugins/xpack_main/services/xpack_info';
-
-export const logstashSecurity = {
- isSecurityEnabled() {
- return Boolean(xpackInfo.get(`features.security`));
- },
-};
diff --git a/x-pack/legacy/plugins/logstash/public/services/upgrade/index.js b/x-pack/legacy/plugins/logstash/public/services/upgrade/index.js
deleted file mode 100755
index 345d0d0ff68c6..0000000000000
--- a/x-pack/legacy/plugins/logstash/public/services/upgrade/index.js
+++ /dev/null
@@ -1,7 +0,0 @@
-/*
- * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
- * or more contributor license agreements. Licensed under the Elastic License;
- * you may not use this file except in compliance with the Elastic License.
- */
-
-import './upgrade_service.factory';
diff --git a/x-pack/legacy/plugins/logstash/public/services/upgrade/upgrade_service.factory.js b/x-pack/legacy/plugins/logstash/public/services/upgrade/upgrade_service.factory.js
deleted file mode 100755
index 925c6ae677bdf..0000000000000
--- a/x-pack/legacy/plugins/logstash/public/services/upgrade/upgrade_service.factory.js
+++ /dev/null
@@ -1,13 +0,0 @@
-/*
- * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
- * or more contributor license agreements. Licensed under the Elastic License;
- * you may not use this file except in compliance with the Elastic License.
- */
-
-import { uiModules } from 'ui/modules';
-import { UpgradeService } from './upgrade_service';
-
-uiModules.get('xpack/logstash').factory('upgradeService', $injector => {
- const $http = $injector.get('$http');
- return new UpgradeService($http);
-});
diff --git a/x-pack/legacy/plugins/logstash/public/services/upgrade/upgrade_service.js b/x-pack/legacy/plugins/logstash/public/services/upgrade/upgrade_service.js
deleted file mode 100755
index 2019bdc1bf1aa..0000000000000
--- a/x-pack/legacy/plugins/logstash/public/services/upgrade/upgrade_service.js
+++ /dev/null
@@ -1,24 +0,0 @@
-/*
- * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
- * or more contributor license agreements. Licensed under the Elastic License;
- * you may not use this file except in compliance with the Elastic License.
- */
-
-import chrome from 'ui/chrome';
-import { ROUTES } from '../../../../../../plugins/logstash/common/constants';
-
-export class UpgradeService {
- constructor($http) {
- this.$http = $http;
- this.basePath = chrome.addBasePath(ROUTES.API_ROOT);
- }
-
- executeUpgrade() {
- return this.$http
- .post(`${this.basePath}/upgrade`)
- .then(response => response.data.is_upgraded)
- .catch(e => {
- throw e.data.message;
- });
- }
-}
diff --git a/x-pack/legacy/plugins/logstash/server/lib/check_license/__tests__/check_license.js b/x-pack/legacy/plugins/logstash/server/lib/check_license/__tests__/check_license.js
deleted file mode 100755
index 5fcce0aaa1219..0000000000000
--- a/x-pack/legacy/plugins/logstash/server/lib/check_license/__tests__/check_license.js
+++ /dev/null
@@ -1,179 +0,0 @@
-/*
- * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
- * or more contributor license agreements. Licensed under the Elastic License;
- * you may not use this file except in compliance with the Elastic License.
- */
-
-import expect from '@kbn/expect';
-import { set } from 'lodash';
-import { checkLicense } from '../check_license';
-
-describe('check_license', function() {
- let mockLicenseInfo;
- beforeEach(() => (mockLicenseInfo = {}));
-
- describe('license information is undefined', () => {
- beforeEach(() => (mockLicenseInfo = undefined));
-
- it('should set isAvailable to false', () => {
- expect(checkLicense(mockLicenseInfo).isAvailable).to.be(false);
- });
-
- it('should set enableLinks to false', () => {
- expect(checkLicense(mockLicenseInfo).enableLinks).to.be(false);
- });
-
- it('should set isReadOnly to false', () => {
- expect(checkLicense(mockLicenseInfo).isReadOnly).to.be(false);
- });
-
- it('should set a message', () => {
- expect(checkLicense(mockLicenseInfo).message).to.not.be(undefined);
- });
- });
-
- describe('license information is not available', () => {
- beforeEach(() => (mockLicenseInfo.isAvailable = () => false));
-
- it('should set isAvailable to false', () => {
- expect(checkLicense(mockLicenseInfo).isAvailable).to.be(false);
- });
-
- it('should set enableLinks to false', () => {
- expect(checkLicense(mockLicenseInfo).enableLinks).to.be(false);
- });
-
- it('should set isReadOnly to false', () => {
- expect(checkLicense(mockLicenseInfo).isReadOnly).to.be(false);
- });
-
- it('should set a message', () => {
- expect(checkLicense(mockLicenseInfo).message).to.not.be(undefined);
- });
- });
-
- describe('license information is available', () => {
- beforeEach(() => {
- mockLicenseInfo.isAvailable = () => true;
- set(mockLicenseInfo, 'license.getType', () => 'basic');
- });
-
- describe('& license is > basic', () => {
- beforeEach(() => {
- set(mockLicenseInfo, 'license.isOneOf', () => true);
- mockLicenseInfo.feature = () => ({ isEnabled: () => true }); // Security feature is enabled
- });
-
- describe('& license is active', () => {
- beforeEach(() => set(mockLicenseInfo, 'license.isActive', () => true));
-
- it('should set isAvailable to true', () => {
- expect(checkLicense(mockLicenseInfo).isAvailable).to.be(true);
- });
-
- it('should set enableLinks to true', () => {
- expect(checkLicense(mockLicenseInfo).enableLinks).to.be(true);
- });
-
- it('should set isReadOnly to false', () => {
- expect(checkLicense(mockLicenseInfo).isReadOnly).to.be(false);
- });
-
- it('should not set a message', () => {
- expect(checkLicense(mockLicenseInfo).message).to.be(undefined);
- });
- });
-
- describe('& license is expired', () => {
- beforeEach(() => set(mockLicenseInfo, 'license.isActive', () => false));
-
- it('should set isAvailable to true', () => {
- expect(checkLicense(mockLicenseInfo).isAvailable).to.be(true);
- });
-
- it('should set enableLinks to true', () => {
- expect(checkLicense(mockLicenseInfo).enableLinks).to.be(true);
- });
-
- it('should set isReadOnly to true', () => {
- expect(checkLicense(mockLicenseInfo).isReadOnly).to.be(true);
- });
-
- it('should set a message', () => {
- expect(checkLicense(mockLicenseInfo).message).to.not.be(undefined);
- });
- });
- });
-
- describe('& license is basic', () => {
- beforeEach(() => {
- set(mockLicenseInfo, 'license.isOneOf', () => false);
- mockLicenseInfo.feature = () => ({ isEnabled: () => true }); // Security feature is enabled
- });
-
- describe('& license is active', () => {
- beforeEach(() => set(mockLicenseInfo, 'license.isActive', () => true));
-
- it('should set isAvailable to false', () => {
- expect(checkLicense(mockLicenseInfo).isAvailable).to.be(false);
- });
-
- it('should set enableLinks to false', () => {
- expect(checkLicense(mockLicenseInfo).enableLinks).to.be(false);
- });
-
- it('should set isReadOnly to false', () => {
- expect(checkLicense(mockLicenseInfo).isReadOnly).to.be(false);
- });
-
- it('should set a message', () => {
- expect(checkLicense(mockLicenseInfo).message).to.not.be(undefined);
- });
- });
-
- describe('& license is expired', () => {
- beforeEach(() => set(mockLicenseInfo, 'license.isActive', () => false));
-
- it('should set isAvailable to false', () => {
- expect(checkLicense(mockLicenseInfo).isAvailable).to.be(false);
- });
-
- it('should set enableLinks to false', () => {
- expect(checkLicense(mockLicenseInfo).enableLinks).to.be(false);
- });
-
- it('should set isReadOnly to false', () => {
- expect(checkLicense(mockLicenseInfo).isReadOnly).to.be(false);
- });
-
- it('should set a message', () => {
- expect(checkLicense(mockLicenseInfo).message).to.not.be(undefined);
- });
- });
- });
-
- describe('& security is disabled', () => {
- beforeEach(() => {
- mockLicenseInfo.feature = () => ({ isEnabled: () => false }); // Security feature is disabled
- set(mockLicenseInfo, 'license.isOneOf', () => true);
- set(mockLicenseInfo, 'license.isActive', () => true);
- });
-
- it('should set isAvailable to false', () => {
- expect(checkLicense(mockLicenseInfo).isAvailable).to.be(false);
- });
-
- it('should set enableLinks to false', () => {
- expect(checkLicense(mockLicenseInfo).enableLinks).to.be(false);
- });
-
- it('should set isReadOnly to false', () => {
- expect(checkLicense(mockLicenseInfo).isReadOnly).to.be(false);
- });
-
- it('should set a message', () => {
- expect(checkLicense(mockLicenseInfo).message).to.not.be(undefined);
- });
- });
- });
-});
diff --git a/x-pack/legacy/plugins/logstash/server/lib/check_license/check_license.js b/x-pack/legacy/plugins/logstash/server/lib/check_license/check_license.js
deleted file mode 100755
index 31136ae1c72a5..0000000000000
--- a/x-pack/legacy/plugins/logstash/server/lib/check_license/check_license.js
+++ /dev/null
@@ -1,86 +0,0 @@
-/*
- * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
- * or more contributor license agreements. Licensed under the Elastic License;
- * you may not use this file except in compliance with the Elastic License.
- */
-
-import { i18n } from '@kbn/i18n';
-
-export function checkLicense(xpackLicenseInfo) {
- // If, for some reason, we cannot get the license information
- // from Elasticsearch, assume worst case and disable the Logstash pipeline UI
- if (!xpackLicenseInfo || !xpackLicenseInfo.isAvailable()) {
- return {
- isAvailable: false,
- enableLinks: false,
- isReadOnly: false,
- message: i18n.translate(
- 'xpack.logstash.managementSection.notPossibleToManagePipelinesMessage',
- {
- defaultMessage:
- 'You cannot manage Logstash pipelines because license information is not available at this time.',
- }
- ),
- };
- }
-
- const VALID_LICENSE_MODES = ['trial', 'standard', 'gold', 'platinum', 'enterprise'];
-
- const isLicenseModeValid = xpackLicenseInfo.license.isOneOf(VALID_LICENSE_MODES);
- const isLicenseActive = xpackLicenseInfo.license.isActive();
- const licenseType = xpackLicenseInfo.license.getType();
- const isSecurityEnabled = xpackLicenseInfo.feature('security').isEnabled();
-
- // Security is not enabled in ES
- if (!isSecurityEnabled) {
- const message = i18n.translate('xpack.logstash.managementSection.enableSecurityDescription', {
- defaultMessage:
- 'Security must be enabled in order to use Logstash pipeline management features.' +
- ' Please set xpack.security.enabled: true in your elasticsearch.yml.',
- });
- return {
- isAvailable: false,
- enableLinks: false,
- isReadOnly: false,
- message,
- };
- }
-
- // License is not valid
- if (!isLicenseModeValid) {
- return {
- isAvailable: false,
- enableLinks: false,
- isReadOnly: false,
- message: i18n.translate('xpack.logstash.managementSection.licenseDoesNotSupportDescription', {
- defaultMessage:
- 'Your {licenseType} license does not support Logstash pipeline management features. Please upgrade your license.',
- values: { licenseType },
- }),
- };
- }
-
- // License is valid but not active, we go into a read-only mode.
- if (!isLicenseActive) {
- return {
- isAvailable: true,
- enableLinks: true,
- isReadOnly: true,
- message: i18n.translate(
- 'xpack.logstash.managementSection.pipelineCrudOperationsNotAllowedDescription',
- {
- defaultMessage:
- 'You cannot edit, create, or delete your Logstash pipelines because your {licenseType} license has expired.',
- values: { licenseType },
- }
- ),
- };
- }
-
- // License is valid and active
- return {
- isAvailable: true,
- enableLinks: true,
- isReadOnly: false,
- };
-}
diff --git a/x-pack/legacy/plugins/logstash/server/lib/check_license/index.js b/x-pack/legacy/plugins/logstash/server/lib/check_license/index.js
deleted file mode 100755
index f2c070fd44b6e..0000000000000
--- a/x-pack/legacy/plugins/logstash/server/lib/check_license/index.js
+++ /dev/null
@@ -1,7 +0,0 @@
-/*
- * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
- * or more contributor license agreements. Licensed under the Elastic License;
- * you may not use this file except in compliance with the Elastic License.
- */
-
-export { checkLicense } from './check_license';
diff --git a/x-pack/legacy/plugins/logstash/server/lib/register_license_checker/index.js b/x-pack/legacy/plugins/logstash/server/lib/register_license_checker/index.js
deleted file mode 100755
index 7b0f97c38d129..0000000000000
--- a/x-pack/legacy/plugins/logstash/server/lib/register_license_checker/index.js
+++ /dev/null
@@ -1,7 +0,0 @@
-/*
- * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
- * or more contributor license agreements. Licensed under the Elastic License;
- * you may not use this file except in compliance with the Elastic License.
- */
-
-export { registerLicenseChecker } from './register_license_checker';
diff --git a/x-pack/legacy/plugins/logstash/server/lib/register_license_checker/register_license_checker.js b/x-pack/legacy/plugins/logstash/server/lib/register_license_checker/register_license_checker.js
deleted file mode 100755
index a0d06e77b410d..0000000000000
--- a/x-pack/legacy/plugins/logstash/server/lib/register_license_checker/register_license_checker.js
+++ /dev/null
@@ -1,21 +0,0 @@
-/*
- * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
- * or more contributor license agreements. Licensed under the Elastic License;
- * you may not use this file except in compliance with the Elastic License.
- */
-
-import { mirrorPluginStatus } from '../../../../../server/lib/mirror_plugin_status';
-import { checkLicense } from '../check_license';
-import { PLUGIN } from '../../../../../../plugins/logstash/common/constants';
-
-export function registerLicenseChecker(server) {
- const xpackMainPlugin = server.plugins.xpack_main;
- const logstashPlugin = server.plugins.logstash;
-
- mirrorPluginStatus(xpackMainPlugin, logstashPlugin);
- xpackMainPlugin.status.once('green', () => {
- // Register a function that is called whenever the xpack info changes,
- // to re-compute the license check results for this plugin
- xpackMainPlugin.info.feature(PLUGIN.ID).registerLicenseCheckResultsGenerator(checkLicense);
- });
-}
diff --git a/x-pack/plugins/logstash/kibana.json b/x-pack/plugins/logstash/kibana.json
index bcc926535d3c2..97dbf58865a88 100644
--- a/x-pack/plugins/logstash/kibana.json
+++ b/x-pack/plugins/logstash/kibana.json
@@ -4,9 +4,13 @@
"kibanaVersion": "kibana",
"configPath": ["xpack", "logstash"],
"requiredPlugins": [
- "licensing"
+ "licensing",
+ "management"
+ ],
+ "optionalPlugins": [
+ "home",
+ "security"
],
- "optionalPlugins": ["security"],
"server": true,
- "ui": false
+ "ui": true
}
diff --git a/x-pack/legacy/plugins/logstash/public/sections/breadcrumbs.js b/x-pack/plugins/logstash/public/application/breadcrumbs.js
similarity index 80%
rename from x-pack/legacy/plugins/logstash/public/sections/breadcrumbs.js
rename to x-pack/plugins/logstash/public/application/breadcrumbs.js
index 3121a58ff6a74..322b9860b3785 100644
--- a/x-pack/legacy/plugins/logstash/public/sections/breadcrumbs.js
+++ b/x-pack/plugins/logstash/public/application/breadcrumbs.js
@@ -5,11 +5,9 @@
*/
import { i18n } from '@kbn/i18n';
-import { MANAGEMENT_BREADCRUMB } from 'ui/management';
export function getPipelineListBreadcrumbs() {
return [
- MANAGEMENT_BREADCRUMB,
{
text: i18n.translate('xpack.logstash.pipelines.listBreadcrumb', {
defaultMessage: 'Pipelines',
@@ -19,12 +17,11 @@ export function getPipelineListBreadcrumbs() {
];
}
-export function getPipelineEditBreadcrumbs($route) {
- const { pipeline } = $route.current.locals;
+export function getPipelineEditBreadcrumbs(pipelineId) {
return [
...getPipelineListBreadcrumbs(),
{
- text: pipeline.id,
+ text: pipelineId,
},
];
}
diff --git a/x-pack/legacy/plugins/logstash/public/components/pipeline_editor/__snapshots__/confirm_delete_pipeline_modal.test.js.snap b/x-pack/plugins/logstash/public/application/components/pipeline_editor/__snapshots__/confirm_delete_pipeline_modal.test.js.snap
similarity index 100%
rename from x-pack/legacy/plugins/logstash/public/components/pipeline_editor/__snapshots__/confirm_delete_pipeline_modal.test.js.snap
rename to x-pack/plugins/logstash/public/application/components/pipeline_editor/__snapshots__/confirm_delete_pipeline_modal.test.js.snap
diff --git a/x-pack/legacy/plugins/logstash/public/components/pipeline_editor/__snapshots__/flex_item_setting.test.js.snap b/x-pack/plugins/logstash/public/application/components/pipeline_editor/__snapshots__/flex_item_setting.test.js.snap
similarity index 100%
rename from x-pack/legacy/plugins/logstash/public/components/pipeline_editor/__snapshots__/flex_item_setting.test.js.snap
rename to x-pack/plugins/logstash/public/application/components/pipeline_editor/__snapshots__/flex_item_setting.test.js.snap
diff --git a/x-pack/legacy/plugins/logstash/public/components/pipeline_editor/__snapshots__/form_label_with_icon_tip.test.js.snap b/x-pack/plugins/logstash/public/application/components/pipeline_editor/__snapshots__/form_label_with_icon_tip.test.js.snap
similarity index 100%
rename from x-pack/legacy/plugins/logstash/public/components/pipeline_editor/__snapshots__/form_label_with_icon_tip.test.js.snap
rename to x-pack/plugins/logstash/public/application/components/pipeline_editor/__snapshots__/form_label_with_icon_tip.test.js.snap
diff --git a/x-pack/legacy/plugins/logstash/public/components/pipeline_editor/__snapshots__/pipeline_editor.test.js.snap b/x-pack/plugins/logstash/public/application/components/pipeline_editor/__snapshots__/pipeline_editor.test.js.snap
similarity index 100%
rename from x-pack/legacy/plugins/logstash/public/components/pipeline_editor/__snapshots__/pipeline_editor.test.js.snap
rename to x-pack/plugins/logstash/public/application/components/pipeline_editor/__snapshots__/pipeline_editor.test.js.snap
diff --git a/x-pack/legacy/plugins/logstash/public/components/pipeline_editor/confirm_delete_pipeline_modal.js b/x-pack/plugins/logstash/public/application/components/pipeline_editor/confirm_delete_pipeline_modal.js
similarity index 100%
rename from x-pack/legacy/plugins/logstash/public/components/pipeline_editor/confirm_delete_pipeline_modal.js
rename to x-pack/plugins/logstash/public/application/components/pipeline_editor/confirm_delete_pipeline_modal.js
diff --git a/x-pack/legacy/plugins/logstash/public/components/pipeline_editor/confirm_delete_pipeline_modal.test.js b/x-pack/plugins/logstash/public/application/components/pipeline_editor/confirm_delete_pipeline_modal.test.js
similarity index 100%
rename from x-pack/legacy/plugins/logstash/public/components/pipeline_editor/confirm_delete_pipeline_modal.test.js
rename to x-pack/plugins/logstash/public/application/components/pipeline_editor/confirm_delete_pipeline_modal.test.js
diff --git a/x-pack/legacy/plugins/logstash/public/components/pipeline_editor/constants.js b/x-pack/plugins/logstash/public/application/components/pipeline_editor/constants.js
similarity index 100%
rename from x-pack/legacy/plugins/logstash/public/components/pipeline_editor/constants.js
rename to x-pack/plugins/logstash/public/application/components/pipeline_editor/constants.js
diff --git a/x-pack/legacy/plugins/logstash/public/components/pipeline_editor/flex_item_setting.js b/x-pack/plugins/logstash/public/application/components/pipeline_editor/flex_item_setting.js
similarity index 100%
rename from x-pack/legacy/plugins/logstash/public/components/pipeline_editor/flex_item_setting.js
rename to x-pack/plugins/logstash/public/application/components/pipeline_editor/flex_item_setting.js
diff --git a/x-pack/legacy/plugins/logstash/public/components/pipeline_editor/flex_item_setting.test.js b/x-pack/plugins/logstash/public/application/components/pipeline_editor/flex_item_setting.test.js
similarity index 100%
rename from x-pack/legacy/plugins/logstash/public/components/pipeline_editor/flex_item_setting.test.js
rename to x-pack/plugins/logstash/public/application/components/pipeline_editor/flex_item_setting.test.js
diff --git a/x-pack/legacy/plugins/logstash/public/components/pipeline_editor/form_label_with_icon_tip.js b/x-pack/plugins/logstash/public/application/components/pipeline_editor/form_label_with_icon_tip.js
similarity index 100%
rename from x-pack/legacy/plugins/logstash/public/components/pipeline_editor/form_label_with_icon_tip.js
rename to x-pack/plugins/logstash/public/application/components/pipeline_editor/form_label_with_icon_tip.js
diff --git a/x-pack/legacy/plugins/logstash/public/components/pipeline_editor/form_label_with_icon_tip.test.js b/x-pack/plugins/logstash/public/application/components/pipeline_editor/form_label_with_icon_tip.test.js
similarity index 100%
rename from x-pack/legacy/plugins/logstash/public/components/pipeline_editor/form_label_with_icon_tip.test.js
rename to x-pack/plugins/logstash/public/application/components/pipeline_editor/form_label_with_icon_tip.test.js
diff --git a/x-pack/legacy/plugins/logstash/public/components/pipeline_editor/index.js b/x-pack/plugins/logstash/public/application/components/pipeline_editor/index.js
similarity index 100%
rename from x-pack/legacy/plugins/logstash/public/components/pipeline_editor/index.js
rename to x-pack/plugins/logstash/public/application/components/pipeline_editor/index.js
diff --git a/x-pack/legacy/plugins/logstash/public/components/pipeline_editor/pipeline_editor.js b/x-pack/plugins/logstash/public/application/components/pipeline_editor/pipeline_editor.js
similarity index 97%
rename from x-pack/legacy/plugins/logstash/public/components/pipeline_editor/pipeline_editor.js
rename to x-pack/plugins/logstash/public/application/components/pipeline_editor/pipeline_editor.js
index 5e430ccbd8ceb..e45820d56cc03 100644
--- a/x-pack/legacy/plugins/logstash/public/components/pipeline_editor/pipeline_editor.js
+++ b/x-pack/plugins/logstash/public/application/components/pipeline_editor/pipeline_editor.js
@@ -13,7 +13,7 @@ import 'brace/mode/plain_text';
import 'brace/theme/github';
import { isEmpty } from 'lodash';
-import { TOOLTIPS } from '../../../../../../plugins/logstash/common/constants/tooltips';
+import { TOOLTIPS } from '../../../../common/constants/tooltips';
import {
EuiButton,
EuiButtonEmpty,
@@ -40,7 +40,6 @@ class PipelineEditorUi extends React.Component {
const {
pipeline: { id, description, pipeline, settings },
- username,
} = this.props;
const pipelineWorkersSet = typeof settings['pipeline.workers'] === 'number';
@@ -60,7 +59,6 @@ class PipelineEditorUi extends React.Component {
'queue.max_bytes': settings['queue.max_bytes.number'] + settings['queue.max_bytes.units'],
'queue.type': settings['queue.type'],
},
- username,
},
pipelineIdErrors: [],
pipelineIdPattern: /^[A-Za-z\_][A-Za-z0-9\-\_]*$/,
@@ -236,15 +234,7 @@ class PipelineEditorUi extends React.Component {
};
getPipelineHeadingText = () => {
- const {
- routeService: {
- current: {
- params: { clone, id },
- },
- },
- isNewPipeline,
- intl,
- } = this.props;
+ const { clone, id, isNewPipeline, intl } = this.props;
if (!!clone && id) {
return intl.formatMessage(
@@ -502,6 +492,8 @@ class PipelineEditorUi extends React.Component {
}
PipelineEditorUi.propTypes = {
+ id: PropTypes.string,
+ clone: PropTypes.bool.isRequired,
close: PropTypes.func.isRequired,
isNewPipeline: PropTypes.bool.isRequired,
licenseService: PropTypes.shape({
@@ -527,20 +519,11 @@ PipelineEditorUi.propTypes = {
deletePipeline: PropTypes.func.isRequired,
savePipeline: PropTypes.func.isRequired,
}).isRequired,
- routeService: PropTypes.shape({
- current: PropTypes.shape({
- params: PropTypes.shape({
- clone: PropTypes.oneOf([true, undefined]),
- id: PropTypes.string,
- }),
- }),
- }).isRequired,
toastNotifications: PropTypes.shape({
addWarning: PropTypes.func.isRequired,
addSuccess: PropTypes.func.isRequired,
addError: PropTypes.func.isRequired,
}).isRequired,
- username: PropTypes.string,
};
export const PipelineEditor = injectI18n(PipelineEditorUi);
diff --git a/x-pack/legacy/plugins/logstash/public/components/pipeline_editor/pipeline_editor.test.js b/x-pack/plugins/logstash/public/application/components/pipeline_editor/pipeline_editor.test.js
similarity index 96%
rename from x-pack/legacy/plugins/logstash/public/components/pipeline_editor/pipeline_editor.test.js
rename to x-pack/plugins/logstash/public/application/components/pipeline_editor/pipeline_editor.test.js
index 2d7ed5f257fbd..bb5961ce36120 100644
--- a/x-pack/legacy/plugins/logstash/public/components/pipeline_editor/pipeline_editor.test.js
+++ b/x-pack/plugins/logstash/public/application/components/pipeline_editor/pipeline_editor.test.js
@@ -17,7 +17,6 @@ describe('PipelineEditor component', () => {
let open;
let pipeline;
let pipelineService;
- let routeService;
let toastNotifications;
let username;
@@ -47,14 +46,6 @@ describe('PipelineEditor component', () => {
deletePipeline: jest.fn(),
savePipeline: jest.fn(),
};
- routeService = {
- current: {
- params: {
- clone: undefined,
- id: undefined,
- },
- },
- };
toastNotifications = {
addWarning: jest.fn(),
addSuccess: jest.fn(),
@@ -62,13 +53,14 @@ describe('PipelineEditor component', () => {
};
username = 'elastic';
props = {
+ clone: false,
+ id: 'pipelineId',
close,
isNewPipeline,
licenseService,
open,
pipeline,
pipelineService,
- routeService,
toastNotifications,
username,
};
@@ -79,10 +71,8 @@ describe('PipelineEditor component', () => {
});
it('matches snapshot for clone pipeline', () => {
- routeService.current.params = {
- clone: true,
- id: 'pipelineToClone',
- };
+ props.clone = true;
+ props.id = 'pipelineToClone';
expect(shallowWithIntl()).toMatchSnapshot();
});
diff --git a/x-pack/legacy/plugins/logstash/public/components/pipeline_list/__snapshots__/add_role_alert.test.js.snap b/x-pack/plugins/logstash/public/application/components/pipeline_list/__snapshots__/add_role_alert.test.js.snap
similarity index 100%
rename from x-pack/legacy/plugins/logstash/public/components/pipeline_list/__snapshots__/add_role_alert.test.js.snap
rename to x-pack/plugins/logstash/public/application/components/pipeline_list/__snapshots__/add_role_alert.test.js.snap
diff --git a/x-pack/legacy/plugins/logstash/public/components/pipeline_list/__snapshots__/alert_call_out.test.js.snap b/x-pack/plugins/logstash/public/application/components/pipeline_list/__snapshots__/alert_call_out.test.js.snap
similarity index 100%
rename from x-pack/legacy/plugins/logstash/public/components/pipeline_list/__snapshots__/alert_call_out.test.js.snap
rename to x-pack/plugins/logstash/public/application/components/pipeline_list/__snapshots__/alert_call_out.test.js.snap
diff --git a/x-pack/legacy/plugins/logstash/public/components/pipeline_list/__snapshots__/confirm_delete_modal.test.js.snap b/x-pack/plugins/logstash/public/application/components/pipeline_list/__snapshots__/confirm_delete_modal.test.js.snap
similarity index 100%
rename from x-pack/legacy/plugins/logstash/public/components/pipeline_list/__snapshots__/confirm_delete_modal.test.js.snap
rename to x-pack/plugins/logstash/public/application/components/pipeline_list/__snapshots__/confirm_delete_modal.test.js.snap
diff --git a/x-pack/legacy/plugins/logstash/public/components/pipeline_list/__snapshots__/enable_monitoring_alert.test.js.snap b/x-pack/plugins/logstash/public/application/components/pipeline_list/__snapshots__/enable_monitoring_alert.test.js.snap
similarity index 100%
rename from x-pack/legacy/plugins/logstash/public/components/pipeline_list/__snapshots__/enable_monitoring_alert.test.js.snap
rename to x-pack/plugins/logstash/public/application/components/pipeline_list/__snapshots__/enable_monitoring_alert.test.js.snap
diff --git a/x-pack/legacy/plugins/logstash/public/components/pipeline_list/__snapshots__/info_alerts.test.js.snap b/x-pack/plugins/logstash/public/application/components/pipeline_list/__snapshots__/info_alerts.test.js.snap
similarity index 100%
rename from x-pack/legacy/plugins/logstash/public/components/pipeline_list/__snapshots__/info_alerts.test.js.snap
rename to x-pack/plugins/logstash/public/application/components/pipeline_list/__snapshots__/info_alerts.test.js.snap
diff --git a/x-pack/legacy/plugins/logstash/public/components/pipeline_list/__snapshots__/pipelines_table.test.js.snap b/x-pack/plugins/logstash/public/application/components/pipeline_list/__snapshots__/pipelines_table.test.js.snap
similarity index 100%
rename from x-pack/legacy/plugins/logstash/public/components/pipeline_list/__snapshots__/pipelines_table.test.js.snap
rename to x-pack/plugins/logstash/public/application/components/pipeline_list/__snapshots__/pipelines_table.test.js.snap
diff --git a/x-pack/legacy/plugins/logstash/public/components/pipeline_list/add_role_alert.js b/x-pack/plugins/logstash/public/application/components/pipeline_list/add_role_alert.js
similarity index 100%
rename from x-pack/legacy/plugins/logstash/public/components/pipeline_list/add_role_alert.js
rename to x-pack/plugins/logstash/public/application/components/pipeline_list/add_role_alert.js
diff --git a/x-pack/legacy/plugins/logstash/public/components/pipeline_list/add_role_alert.test.js b/x-pack/plugins/logstash/public/application/components/pipeline_list/add_role_alert.test.js
similarity index 100%
rename from x-pack/legacy/plugins/logstash/public/components/pipeline_list/add_role_alert.test.js
rename to x-pack/plugins/logstash/public/application/components/pipeline_list/add_role_alert.test.js
diff --git a/x-pack/legacy/plugins/logstash/public/components/pipeline_list/alert_call_out.js b/x-pack/plugins/logstash/public/application/components/pipeline_list/alert_call_out.js
similarity index 100%
rename from x-pack/legacy/plugins/logstash/public/components/pipeline_list/alert_call_out.js
rename to x-pack/plugins/logstash/public/application/components/pipeline_list/alert_call_out.js
diff --git a/x-pack/legacy/plugins/logstash/public/components/pipeline_list/alert_call_out.test.js b/x-pack/plugins/logstash/public/application/components/pipeline_list/alert_call_out.test.js
similarity index 100%
rename from x-pack/legacy/plugins/logstash/public/components/pipeline_list/alert_call_out.test.js
rename to x-pack/plugins/logstash/public/application/components/pipeline_list/alert_call_out.test.js
diff --git a/x-pack/legacy/plugins/logstash/public/components/pipeline_list/confirm_delete_modal.js b/x-pack/plugins/logstash/public/application/components/pipeline_list/confirm_delete_modal.js
similarity index 100%
rename from x-pack/legacy/plugins/logstash/public/components/pipeline_list/confirm_delete_modal.js
rename to x-pack/plugins/logstash/public/application/components/pipeline_list/confirm_delete_modal.js
diff --git a/x-pack/legacy/plugins/logstash/public/components/pipeline_list/confirm_delete_modal.test.js b/x-pack/plugins/logstash/public/application/components/pipeline_list/confirm_delete_modal.test.js
similarity index 100%
rename from x-pack/legacy/plugins/logstash/public/components/pipeline_list/confirm_delete_modal.test.js
rename to x-pack/plugins/logstash/public/application/components/pipeline_list/confirm_delete_modal.test.js
diff --git a/x-pack/legacy/plugins/logstash/public/components/pipeline_list/constants.js b/x-pack/plugins/logstash/public/application/components/pipeline_list/constants.js
similarity index 100%
rename from x-pack/legacy/plugins/logstash/public/components/pipeline_list/constants.js
rename to x-pack/plugins/logstash/public/application/components/pipeline_list/constants.js
diff --git a/x-pack/legacy/plugins/logstash/public/components/pipeline_list/enable_monitoring_alert.js b/x-pack/plugins/logstash/public/application/components/pipeline_list/enable_monitoring_alert.js
similarity index 100%
rename from x-pack/legacy/plugins/logstash/public/components/pipeline_list/enable_monitoring_alert.js
rename to x-pack/plugins/logstash/public/application/components/pipeline_list/enable_monitoring_alert.js
diff --git a/x-pack/legacy/plugins/logstash/public/components/pipeline_list/enable_monitoring_alert.test.js b/x-pack/plugins/logstash/public/application/components/pipeline_list/enable_monitoring_alert.test.js
similarity index 100%
rename from x-pack/legacy/plugins/logstash/public/components/pipeline_list/enable_monitoring_alert.test.js
rename to x-pack/plugins/logstash/public/application/components/pipeline_list/enable_monitoring_alert.test.js
diff --git a/x-pack/legacy/plugins/logstash/public/components/pipeline_list/index.js b/x-pack/plugins/logstash/public/application/components/pipeline_list/index.js
similarity index 100%
rename from x-pack/legacy/plugins/logstash/public/components/pipeline_list/index.js
rename to x-pack/plugins/logstash/public/application/components/pipeline_list/index.js
diff --git a/x-pack/legacy/plugins/logstash/public/components/pipeline_list/info_alerts.js b/x-pack/plugins/logstash/public/application/components/pipeline_list/info_alerts.js
similarity index 100%
rename from x-pack/legacy/plugins/logstash/public/components/pipeline_list/info_alerts.js
rename to x-pack/plugins/logstash/public/application/components/pipeline_list/info_alerts.js
diff --git a/x-pack/legacy/plugins/logstash/public/components/pipeline_list/info_alerts.test.js b/x-pack/plugins/logstash/public/application/components/pipeline_list/info_alerts.test.js
similarity index 100%
rename from x-pack/legacy/plugins/logstash/public/components/pipeline_list/info_alerts.test.js
rename to x-pack/plugins/logstash/public/application/components/pipeline_list/info_alerts.test.js
diff --git a/x-pack/legacy/plugins/logstash/public/components/pipeline_list/pipeline_list.js b/x-pack/plugins/logstash/public/application/components/pipeline_list/pipeline_list.js
similarity index 100%
rename from x-pack/legacy/plugins/logstash/public/components/pipeline_list/pipeline_list.js
rename to x-pack/plugins/logstash/public/application/components/pipeline_list/pipeline_list.js
diff --git a/x-pack/legacy/plugins/logstash/public/components/pipeline_list/pipeline_list.test.js b/x-pack/plugins/logstash/public/application/components/pipeline_list/pipeline_list.test.js
similarity index 100%
rename from x-pack/legacy/plugins/logstash/public/components/pipeline_list/pipeline_list.test.js
rename to x-pack/plugins/logstash/public/application/components/pipeline_list/pipeline_list.test.js
diff --git a/x-pack/legacy/plugins/logstash/public/components/pipeline_list/pipelines_table.js b/x-pack/plugins/logstash/public/application/components/pipeline_list/pipelines_table.js
similarity index 100%
rename from x-pack/legacy/plugins/logstash/public/components/pipeline_list/pipelines_table.js
rename to x-pack/plugins/logstash/public/application/components/pipeline_list/pipelines_table.js
diff --git a/x-pack/legacy/plugins/logstash/public/components/pipeline_list/pipelines_table.test.js b/x-pack/plugins/logstash/public/application/components/pipeline_list/pipelines_table.test.js
similarity index 100%
rename from x-pack/legacy/plugins/logstash/public/components/pipeline_list/pipelines_table.test.js
rename to x-pack/plugins/logstash/public/application/components/pipeline_list/pipelines_table.test.js
diff --git a/x-pack/legacy/plugins/logstash/public/components/upgrade_failure/__snapshots__/upgrade_failure.test.js.snap b/x-pack/plugins/logstash/public/application/components/upgrade_failure/__snapshots__/upgrade_failure.test.js.snap
similarity index 100%
rename from x-pack/legacy/plugins/logstash/public/components/upgrade_failure/__snapshots__/upgrade_failure.test.js.snap
rename to x-pack/plugins/logstash/public/application/components/upgrade_failure/__snapshots__/upgrade_failure.test.js.snap
diff --git a/x-pack/legacy/plugins/logstash/public/components/upgrade_failure/__snapshots__/upgrade_failure_actions.test.js.snap b/x-pack/plugins/logstash/public/application/components/upgrade_failure/__snapshots__/upgrade_failure_actions.test.js.snap
similarity index 100%
rename from x-pack/legacy/plugins/logstash/public/components/upgrade_failure/__snapshots__/upgrade_failure_actions.test.js.snap
rename to x-pack/plugins/logstash/public/application/components/upgrade_failure/__snapshots__/upgrade_failure_actions.test.js.snap
diff --git a/x-pack/legacy/plugins/logstash/public/components/upgrade_failure/__snapshots__/upgrade_failure_title.test.js.snap b/x-pack/plugins/logstash/public/application/components/upgrade_failure/__snapshots__/upgrade_failure_title.test.js.snap
similarity index 100%
rename from x-pack/legacy/plugins/logstash/public/components/upgrade_failure/__snapshots__/upgrade_failure_title.test.js.snap
rename to x-pack/plugins/logstash/public/application/components/upgrade_failure/__snapshots__/upgrade_failure_title.test.js.snap
diff --git a/x-pack/legacy/plugins/logstash/public/components/upgrade_failure/constants.js b/x-pack/plugins/logstash/public/application/components/upgrade_failure/constants.js
similarity index 100%
rename from x-pack/legacy/plugins/logstash/public/components/upgrade_failure/constants.js
rename to x-pack/plugins/logstash/public/application/components/upgrade_failure/constants.js
diff --git a/x-pack/legacy/plugins/logstash/public/components/upgrade_failure/index.js b/x-pack/plugins/logstash/public/application/components/upgrade_failure/index.js
similarity index 100%
rename from x-pack/legacy/plugins/logstash/public/components/upgrade_failure/index.js
rename to x-pack/plugins/logstash/public/application/components/upgrade_failure/index.js
diff --git a/x-pack/legacy/plugins/logstash/public/components/upgrade_failure/upgrade_failure.js b/x-pack/plugins/logstash/public/application/components/upgrade_failure/upgrade_failure.js
similarity index 100%
rename from x-pack/legacy/plugins/logstash/public/components/upgrade_failure/upgrade_failure.js
rename to x-pack/plugins/logstash/public/application/components/upgrade_failure/upgrade_failure.js
diff --git a/x-pack/legacy/plugins/logstash/public/components/upgrade_failure/upgrade_failure.test.js b/x-pack/plugins/logstash/public/application/components/upgrade_failure/upgrade_failure.test.js
similarity index 100%
rename from x-pack/legacy/plugins/logstash/public/components/upgrade_failure/upgrade_failure.test.js
rename to x-pack/plugins/logstash/public/application/components/upgrade_failure/upgrade_failure.test.js
diff --git a/x-pack/legacy/plugins/logstash/public/components/upgrade_failure/upgrade_failure_actions.js b/x-pack/plugins/logstash/public/application/components/upgrade_failure/upgrade_failure_actions.js
similarity index 100%
rename from x-pack/legacy/plugins/logstash/public/components/upgrade_failure/upgrade_failure_actions.js
rename to x-pack/plugins/logstash/public/application/components/upgrade_failure/upgrade_failure_actions.js
diff --git a/x-pack/legacy/plugins/logstash/public/components/upgrade_failure/upgrade_failure_actions.test.js b/x-pack/plugins/logstash/public/application/components/upgrade_failure/upgrade_failure_actions.test.js
similarity index 100%
rename from x-pack/legacy/plugins/logstash/public/components/upgrade_failure/upgrade_failure_actions.test.js
rename to x-pack/plugins/logstash/public/application/components/upgrade_failure/upgrade_failure_actions.test.js
diff --git a/x-pack/legacy/plugins/logstash/public/components/upgrade_failure/upgrade_failure_title.js b/x-pack/plugins/logstash/public/application/components/upgrade_failure/upgrade_failure_title.js
similarity index 100%
rename from x-pack/legacy/plugins/logstash/public/components/upgrade_failure/upgrade_failure_title.js
rename to x-pack/plugins/logstash/public/application/components/upgrade_failure/upgrade_failure_title.js
diff --git a/x-pack/legacy/plugins/logstash/public/components/upgrade_failure/upgrade_failure_title.test.js b/x-pack/plugins/logstash/public/application/components/upgrade_failure/upgrade_failure_title.test.js
similarity index 100%
rename from x-pack/legacy/plugins/logstash/public/components/upgrade_failure/upgrade_failure_title.test.js
rename to x-pack/plugins/logstash/public/application/components/upgrade_failure/upgrade_failure_title.test.js
diff --git a/x-pack/plugins/logstash/public/application/index.tsx b/x-pack/plugins/logstash/public/application/index.tsx
new file mode 100644
index 0000000000000..438038d6c885e
--- /dev/null
+++ b/x-pack/plugins/logstash/public/application/index.tsx
@@ -0,0 +1,117 @@
+/*
+ * 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.
+ */
+
+import React from 'react';
+import ReactDOM from 'react-dom';
+import { HashRouter, Route, Switch, Redirect } from 'react-router-dom';
+import { Observable } from 'rxjs';
+import { first } from 'rxjs/operators';
+
+import { CoreStart } from 'src/core/public';
+import { ManagementAppMountParams } from '../../../../../src/plugins/management/public';
+import {
+ ClusterService,
+ MonitoringService,
+ PipelineService,
+ PipelinesService,
+ UpgradeService,
+ // @ts-ignore
+} from '../services';
+// @ts-ignore
+import { PipelineList } from './components/pipeline_list';
+import { PipelineEditView } from './pipeline_edit_view';
+// @ts-ignore
+import { Pipeline } from '../models/pipeline';
+// @ts-ignore
+import * as Breadcrumbs from './breadcrumbs';
+
+export const renderApp = async (
+ core: CoreStart,
+ { basePath, element, setBreadcrumbs }: ManagementAppMountParams,
+ licenseService$: Observable
+) => {
+ const logstashLicenseService = await licenseService$.pipe(first()).toPromise();
+ const clusterService = new ClusterService(core.http);
+ const monitoringService = new MonitoringService(
+ core.http,
+ // When monitoring is migrated this should be fetched from monitoring's plugin contract
+ core.injectedMetadata.getInjectedVar('monitoringUiEnabled'),
+ clusterService
+ );
+ const pipelinesService = new PipelinesService(core.http, monitoringService);
+ const pipelineService = new PipelineService(core.http, pipelinesService);
+ const upgradeService = new UpgradeService(core.http);
+
+ ReactDOM.render(
+
+
+
+ {
+ setBreadcrumbs(Breadcrumbs.getPipelineListBreadcrumbs());
+ return (
+ history.push(`/pipeline/${id}/edit`)}
+ clonePipeline={(id: string) => history.push(`/pipeline/${id}/edit?clone`)}
+ createPipeline={() => history.push(`/pipeline/new-pipeline`)}
+ pipelinesService={pipelinesService}
+ toastNotifications={core.notifications.toasts}
+ />
+ );
+ }}
+ />
+ (
+
+ )}
+ />
+ }
+ />
+ (
+
+ )}
+ />
+
+
+ ,
+ element
+ );
+
+ return () => {
+ ReactDOM.unmountComponentAtNode(element);
+ };
+};
diff --git a/x-pack/plugins/logstash/public/application/pipeline_edit_view.tsx b/x-pack/plugins/logstash/public/application/pipeline_edit_view.tsx
new file mode 100644
index 0000000000000..c1b465febcd9b
--- /dev/null
+++ b/x-pack/plugins/logstash/public/application/pipeline_edit_view.tsx
@@ -0,0 +1,153 @@
+/*
+ * 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.
+ */
+
+import React, { useState, useLayoutEffect, useCallback } from 'react';
+import { usePromise } from 'react-use';
+import { History } from 'history';
+
+import { i18n } from '@kbn/i18n';
+import { ToastsStart } from 'src/core/public';
+
+// @ts-ignore
+import { UpgradeFailure } from './components/upgrade_failure';
+// @ts-ignore
+import { PipelineEditor } from './components/pipeline_editor';
+// @ts-ignore
+import { Pipeline } from '../models/pipeline';
+import { ManagementAppMountParams } from '../../../../../src/plugins/management/public';
+// @ts-ignore
+import * as Breadcrumbs from './breadcrumbs';
+
+const usePipeline = (
+ pipelineService: any,
+ logstashLicenseService: any,
+ toasts: ToastsStart,
+ shouldClone: boolean,
+ id?: string
+) => {
+ const mounted = usePromise();
+ const [pipeline, setPipeline] = useState(null);
+
+ useLayoutEffect(() => {
+ (async () => {
+ if (!id) {
+ return setPipeline(new Pipeline());
+ }
+
+ try {
+ const result = await mounted(pipelineService.loadPipeline(id) as Promise);
+ setPipeline(shouldClone ? result.clone : result);
+ } catch (e) {
+ await logstashLicenseService.checkValidity();
+ if (e.status !== 403) {
+ toasts.addDanger(
+ i18n.translate('xpack.logstash.couldNotLoadPipelineErrorNotification', {
+ defaultMessage: `Couldn't load pipeline. Error: '{errStatusText}'.`,
+ values: {
+ errStatusText: e.statusText,
+ },
+ })
+ );
+ }
+ }
+ })();
+ }, [pipelineService, id, mounted, shouldClone, logstashLicenseService, toasts]);
+
+ return pipeline;
+};
+
+const useIsUpgraded = (upgradeService: any) => {
+ const [isUpgraded, setIsUpgraded] = useState(null);
+ const mounted = usePromise();
+
+ useLayoutEffect(() => {
+ mounted(upgradeService.executeUpgrade() as Promise).then(result =>
+ setIsUpgraded(result)
+ );
+ }, [mounted, upgradeService]);
+
+ return isUpgraded;
+};
+
+interface EditProps {
+ pipelineService: any;
+ logstashLicenseService: any;
+ upgradeService: any;
+ toasts: ToastsStart;
+ history: History;
+ setBreadcrumbs: ManagementAppMountParams['setBreadcrumbs'];
+
+ // URL params
+ id?: string;
+}
+
+export const PipelineEditView: React.FC = ({
+ pipelineService,
+ logstashLicenseService,
+ upgradeService,
+ toasts,
+ history,
+ setBreadcrumbs,
+ id,
+}) => {
+ const params = new URLSearchParams(history.location.search);
+ const shouldRetry = params.get('retry') === 'true';
+ const shouldClone = params.get('clone') === '';
+
+ const pipeline = usePipeline(pipelineService, logstashLicenseService, toasts, shouldClone, id);
+ const isUpgraded = useIsUpgraded(upgradeService);
+
+ const onRetry = useCallback(() => {
+ const newParams = new URLSearchParams(history.location.search);
+ newParams.set('retry', 'true');
+ history.replace({ search: newParams.toString() });
+ }, [history]);
+ const close = useCallback(() => {
+ history.push('/');
+ }, [history]);
+ const open = useCallback(
+ (newId: string) => {
+ history.push(`/pipeline/${newId}/edit`);
+ },
+ [history]
+ );
+
+ if (!pipeline || isUpgraded === null) {
+ return null;
+ }
+
+ const isNewPipeline = !pipeline.id;
+ setBreadcrumbs(
+ isNewPipeline
+ ? Breadcrumbs.getPipelineCreateBreadcrumbs()
+ : Breadcrumbs.getPipelineEditBreadcrumbs(pipeline.id)
+ );
+
+ if (!isUpgraded) {
+ return (
+
+ );
+ }
+
+ return (
+
+ );
+};
diff --git a/x-pack/plugins/logstash/public/index.ts b/x-pack/plugins/logstash/public/index.ts
new file mode 100644
index 0000000000000..26a1ca4e8c6c4
--- /dev/null
+++ b/x-pack/plugins/logstash/public/index.ts
@@ -0,0 +1,9 @@
+/*
+ * 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.
+ */
+
+import { LogstashPlugin } from './plugin';
+
+export const plugin = () => new LogstashPlugin();
diff --git a/x-pack/legacy/plugins/logstash/public/lib/get_search_value/get_search_value.js b/x-pack/plugins/logstash/public/lib/get_search_value/get_search_value.js
similarity index 100%
rename from x-pack/legacy/plugins/logstash/public/lib/get_search_value/get_search_value.js
rename to x-pack/plugins/logstash/public/lib/get_search_value/get_search_value.js
diff --git a/x-pack/legacy/plugins/logstash/public/lib/get_search_value/index.js b/x-pack/plugins/logstash/public/lib/get_search_value/index.js
similarity index 100%
rename from x-pack/legacy/plugins/logstash/public/lib/get_search_value/index.js
rename to x-pack/plugins/logstash/public/lib/get_search_value/index.js
diff --git a/x-pack/legacy/plugins/logstash/public/models/cluster/cluster.js b/x-pack/plugins/logstash/public/models/cluster/cluster.js
similarity index 100%
rename from x-pack/legacy/plugins/logstash/public/models/cluster/cluster.js
rename to x-pack/plugins/logstash/public/models/cluster/cluster.js
diff --git a/x-pack/legacy/plugins/logstash/public/models/cluster/index.js b/x-pack/plugins/logstash/public/models/cluster/index.js
similarity index 100%
rename from x-pack/legacy/plugins/logstash/public/models/cluster/index.js
rename to x-pack/plugins/logstash/public/models/cluster/index.js
diff --git a/x-pack/legacy/plugins/logstash/public/models/pipeline/index.js b/x-pack/plugins/logstash/public/models/pipeline/index.js
similarity index 100%
rename from x-pack/legacy/plugins/logstash/public/models/pipeline/index.js
rename to x-pack/plugins/logstash/public/models/pipeline/index.js
diff --git a/x-pack/legacy/plugins/logstash/public/models/pipeline/pipeline.js b/x-pack/plugins/logstash/public/models/pipeline/pipeline.js
similarity index 100%
rename from x-pack/legacy/plugins/logstash/public/models/pipeline/pipeline.js
rename to x-pack/plugins/logstash/public/models/pipeline/pipeline.js
diff --git a/x-pack/legacy/plugins/logstash/public/models/pipeline_list_item/index.js b/x-pack/plugins/logstash/public/models/pipeline_list_item/index.js
similarity index 100%
rename from x-pack/legacy/plugins/logstash/public/models/pipeline_list_item/index.js
rename to x-pack/plugins/logstash/public/models/pipeline_list_item/index.js
diff --git a/x-pack/legacy/plugins/logstash/public/models/pipeline_list_item/pipeline_list_item.js b/x-pack/plugins/logstash/public/models/pipeline_list_item/pipeline_list_item.js
similarity index 83%
rename from x-pack/legacy/plugins/logstash/public/models/pipeline_list_item/pipeline_list_item.js
rename to x-pack/plugins/logstash/public/models/pipeline_list_item/pipeline_list_item.js
index 06d01a05bac27..3a304e467e0c0 100755
--- a/x-pack/legacy/plugins/logstash/public/models/pipeline_list_item/pipeline_list_item.js
+++ b/x-pack/plugins/logstash/public/models/pipeline_list_item/pipeline_list_item.js
@@ -5,10 +5,10 @@
*/
import { pick, capitalize } from 'lodash';
+import moment from 'moment';
-import { getSearchValue } from 'plugins/logstash/lib/get_search_value';
-import { getMoment } from 'plugins/logstash/../common/lib/get_moment';
-import { PIPELINE } from '../../../../../../plugins/logstash/common/constants';
+import { getSearchValue } from '../../lib/get_search_value';
+import { PIPELINE } from '../../../common/constants';
/**
* Represents the model for listing pipelines in the UI
@@ -25,7 +25,7 @@ export class PipelineListItem {
this.username = props.username;
if (props.lastModified) {
- this.lastModified = getMoment(props.lastModified);
+ this.lastModified = getMomentDate(props.lastModified);
this.lastModifiedHumanized = capitalize(this.lastModified.fromNow());
}
}
@@ -51,3 +51,11 @@ export class PipelineListItem {
return new PipelineListItem(props);
}
}
+
+function getMomentDate(date) {
+ if (!date) {
+ return null;
+ }
+
+ return moment(date);
+}
diff --git a/x-pack/plugins/logstash/public/plugin.ts b/x-pack/plugins/logstash/public/plugin.ts
new file mode 100644
index 0000000000000..91d1a39d3970c
--- /dev/null
+++ b/x-pack/plugins/logstash/public/plugin.ts
@@ -0,0 +1,92 @@
+/*
+ * 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.
+ */
+
+import { i18n } from '@kbn/i18n';
+import { Subscription } from 'rxjs';
+import { map } from 'rxjs/operators';
+import { once } from 'lodash';
+
+import { CoreSetup, CoreStart, Plugin } from 'src/core/public';
+import {
+ HomePublicPluginSetup,
+ FeatureCatalogueCategory,
+} from '../../../../src/plugins/home/public';
+import { LicensingPluginSetup } from '../../licensing/public';
+import { ManagementSetup } from '../../../../src/plugins/management/public';
+
+// @ts-ignore
+import { LogstashLicenseService } from './services';
+
+interface SetupDeps {
+ licensing: LicensingPluginSetup;
+ management: ManagementSetup;
+
+ home?: HomePublicPluginSetup;
+}
+
+export class LogstashPlugin implements Plugin {
+ private licenseSubscription?: Subscription;
+
+ public setup(core: CoreSetup, plugins: SetupDeps) {
+ const logstashLicense$ = plugins.licensing.license$.pipe(
+ map(license => new LogstashLicenseService(license))
+ );
+ const section = plugins.management.sections.register({
+ id: 'logstash',
+ title: 'Logstash',
+ order: 30,
+ euiIconType: 'logoLogstash',
+ });
+ const managementApp = section.registerApp({
+ id: 'pipelines',
+ title: i18n.translate('xpack.logstash.managementSection.pipelinesTitle', {
+ defaultMessage: 'Pipelines',
+ }),
+ order: 10,
+ mount: async params => {
+ const [coreStart] = await core.getStartServices();
+ const { renderApp } = await import('./application');
+
+ return renderApp(coreStart, params, logstashLicense$);
+ },
+ });
+
+ this.licenseSubscription = logstashLicense$.subscribe((license: any) => {
+ if (license.enableLinks) {
+ managementApp.enable();
+ } else {
+ managementApp.disable();
+ }
+
+ if (plugins.home && license.enableLinks) {
+ // Ensure that we don't register the feature more than once
+ once(() => {
+ plugins.home!.featureCatalogue.register({
+ id: 'management_logstash',
+ title: i18n.translate('xpack.logstash.homeFeature.logstashPipelinesTitle', {
+ defaultMessage: 'Logstash Pipelines',
+ }),
+ description: i18n.translate('xpack.logstash.homeFeature.logstashPipelinesDescription', {
+ defaultMessage: 'Create, delete, update, and clone data ingestion pipelines.',
+ }),
+ icon: 'pipelineApp',
+ path: '/app/kibana#/management/logstash/pipelines',
+ showOnHomePage: true,
+ category: FeatureCatalogueCategory.ADMIN,
+ });
+ });
+ }
+ });
+ }
+
+ public start(core: CoreStart) {}
+
+ public stop() {
+ if (this.licenseSubscription) {
+ this.licenseSubscription.unsubscribe();
+ }
+ }
+}
diff --git a/x-pack/legacy/plugins/logstash/public/services/cluster/cluster_service.js b/x-pack/plugins/logstash/public/services/cluster/cluster_service.js
similarity index 51%
rename from x-pack/legacy/plugins/logstash/public/services/cluster/cluster_service.js
rename to x-pack/plugins/logstash/public/services/cluster/cluster_service.js
index e89c2fe7d11bf..20f3b0d349c80 100755
--- a/x-pack/legacy/plugins/logstash/public/services/cluster/cluster_service.js
+++ b/x-pack/plugins/logstash/public/services/cluster/cluster_service.js
@@ -4,22 +4,20 @@
* you may not use this file except in compliance with the Elastic License.
*/
-import chrome from 'ui/chrome';
-import { ROUTES } from '../../../../../../plugins/logstash/common/constants';
-import { Cluster } from 'plugins/logstash/models/cluster';
+import { ROUTES } from '../../../common/constants';
+import { Cluster } from '../../models/cluster';
export class ClusterService {
- constructor($http) {
- this.$http = $http;
- this.basePath = chrome.addBasePath(ROUTES.API_ROOT);
+ constructor(http) {
+ this.http = http;
}
loadCluster() {
- return this.$http.get(`${this.basePath}/cluster`).then(response => {
- if (!response.data) {
+ return this.http.get(`${ROUTES.API_ROOT}/cluster`).then(response => {
+ if (!response) {
return;
}
- return Cluster.fromUpstreamJSON(response.data.cluster);
+ return Cluster.fromUpstreamJSON(response.cluster);
});
}
diff --git a/x-pack/legacy/plugins/logstash/public/sections/pipeline_edit/components/pipeline_edit/index.js b/x-pack/plugins/logstash/public/services/cluster/index.js
similarity index 82%
rename from x-pack/legacy/plugins/logstash/public/sections/pipeline_edit/components/pipeline_edit/index.js
rename to x-pack/plugins/logstash/public/services/cluster/index.js
index 5889bbdf96a93..4417262d9f442 100755
--- a/x-pack/legacy/plugins/logstash/public/sections/pipeline_edit/components/pipeline_edit/index.js
+++ b/x-pack/plugins/logstash/public/services/cluster/index.js
@@ -4,4 +4,4 @@
* you may not use this file except in compliance with the Elastic License.
*/
-import './pipeline_edit';
+export { ClusterService } from './cluster_service';
diff --git a/x-pack/plugins/logstash/public/services/index.js b/x-pack/plugins/logstash/public/services/index.js
new file mode 100644
index 0000000000000..a7e8aa5c6259f
--- /dev/null
+++ b/x-pack/plugins/logstash/public/services/index.js
@@ -0,0 +1,12 @@
+/*
+ * 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.
+ */
+
+export { ClusterService } from './cluster';
+export { LogstashLicenseService } from './license';
+export { MonitoringService } from './monitoring';
+export { PipelineService } from './pipeline';
+export { PipelinesService } from './pipelines';
+export { UpgradeService } from './upgrade';
diff --git a/x-pack/legacy/plugins/logstash/public/lib/update_management_sections/index.js b/x-pack/plugins/logstash/public/services/license/index.js
similarity index 77%
rename from x-pack/legacy/plugins/logstash/public/lib/update_management_sections/index.js
rename to x-pack/plugins/logstash/public/services/license/index.js
index 9d53d4dd61163..64f39b1144cee 100755
--- a/x-pack/legacy/plugins/logstash/public/lib/update_management_sections/index.js
+++ b/x-pack/plugins/logstash/public/services/license/index.js
@@ -4,4 +4,4 @@
* you may not use this file except in compliance with the Elastic License.
*/
-export { updateLogstashSections } from './update_logstash_sections';
+export { LogstashLicenseService } from './logstash_license_service';
diff --git a/x-pack/plugins/logstash/public/services/license/logstash_license_service.js b/x-pack/plugins/logstash/public/services/license/logstash_license_service.js
new file mode 100755
index 0000000000000..b836b75b89cc7
--- /dev/null
+++ b/x-pack/plugins/logstash/public/services/license/logstash_license_service.js
@@ -0,0 +1,106 @@
+/*
+ * 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.
+ */
+
+import { i18n } from '@kbn/i18n';
+
+export class LogstashLicenseService {
+ constructor(license, navigateToApp, toasts) {
+ this.license = license;
+ this.navigateToApp = navigateToApp;
+ this.toasts = toasts;
+ }
+
+ get enableLinks() {
+ return this.calculated.enableLinks;
+ }
+
+ get isAvailable() {
+ return this.calculated.isAvailable;
+ }
+
+ get isReadOnly() {
+ return this.calculated.isReadOnly;
+ }
+
+ get message() {
+ return this.calculated.message;
+ }
+
+ get isSecurityEnabled() {
+ return this.license.getFeature(`security`).isEnabled;
+ }
+
+ /**
+ * Checks if the license is valid or the license can perform downgraded UI tasks.
+ * Rejects if the plugin is not available due to license.
+ */
+ checkValidity() {
+ return new Promise((resolve, reject) => {
+ if (this.isAvailable) {
+ return resolve();
+ }
+
+ return reject();
+ });
+ }
+
+ get calculated() {
+ if (!this.license) {
+ throw new Error(`No license available!`);
+ }
+
+ if (!this.isSecurityEnabled) {
+ return {
+ isAvailable: false,
+ enableLinks: false,
+ isReadOnly: false,
+ message: i18n.translate('xpack.logstash.managementSection.enableSecurityDescription', {
+ defaultMessage:
+ 'Security must be enabled in order to use Logstash pipeline management features.' +
+ ' Please set xpack.security.enabled: true in your elasticsearch.yml.',
+ }),
+ };
+ }
+
+ if (!this.license.hasAtLeast('standard')) {
+ return {
+ isAvailable: false,
+ enableLinks: false,
+ isReadOnly: false,
+ message: i18n.translate(
+ 'xpack.logstash.managementSection.licenseDoesNotSupportDescription',
+ {
+ defaultMessage:
+ 'Your {licenseType} license does not support Logstash pipeline management features. Please upgrade your license.',
+ values: { licenseType: this.license.type },
+ }
+ ),
+ };
+ }
+
+ if (!this.license.isActive) {
+ return {
+ isAvailable: true,
+ enableLinks: true,
+ isReadonly: true,
+ message: i18n.translate(
+ 'xpack.logstash.managementSection.pipelineCrudOperationsNotAllowedDescription',
+ {
+ defaultMessage:
+ 'You cannot edit, create, or delete your Logstash pipelines because your {licenseType} license has expired.',
+ values: { licenseType: this.license.type },
+ }
+ ),
+ };
+ }
+
+ return {
+ isAvailable: true,
+ enableLinks: true,
+ isReadOnly: false,
+ };
+ }
+}
diff --git a/x-pack/plugins/logstash/public/services/monitoring/index.js b/x-pack/plugins/logstash/public/services/monitoring/index.js
new file mode 100755
index 0000000000000..bc0e8b6bc978a
--- /dev/null
+++ b/x-pack/plugins/logstash/public/services/monitoring/index.js
@@ -0,0 +1,7 @@
+/*
+ * 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.
+ */
+
+export { MonitoringService } from './monitoring_service';
diff --git a/x-pack/legacy/plugins/logstash/public/services/monitoring/monitoring_service.js b/x-pack/plugins/logstash/public/services/monitoring/monitoring_service.js
similarity index 58%
rename from x-pack/legacy/plugins/logstash/public/services/monitoring/monitoring_service.js
rename to x-pack/plugins/logstash/public/services/monitoring/monitoring_service.js
index 6103e730c2171..d551f4fba61d2 100755
--- a/x-pack/legacy/plugins/logstash/public/services/monitoring/monitoring_service.js
+++ b/x-pack/plugins/logstash/public/services/monitoring/monitoring_service.js
@@ -5,17 +5,14 @@
*/
import moment from 'moment';
-import chrome from 'ui/chrome';
-import { ROUTES, MONITORING } from '../../../../../../plugins/logstash/common/constants';
-import { PipelineListItem } from 'plugins/logstash/models/pipeline_list_item';
+import { ROUTES, MONITORING } from '../../../common/constants';
+import { PipelineListItem } from '../../models/pipeline_list_item';
export class MonitoringService {
- constructor($http, Promise, monitoringUiEnabled, clusterService) {
- this.$http = $http;
- this.Promise = Promise;
+ constructor(http, monitoringUiEnabled, clusterService) {
+ this.http = http;
this.monitoringUiEnabled = monitoringUiEnabled;
this.clusterService = clusterService;
- this.basePath = chrome.addBasePath(ROUTES.MONITORING_API_ROOT);
}
isMonitoringEnabled() {
@@ -30,18 +27,18 @@ export class MonitoringService {
return this.clusterService
.loadCluster()
.then(cluster => {
- const url = `${this.basePath}/v1/clusters/${cluster.uuid}/logstash/pipeline_ids`;
+ const url = `${ROUTES.MONITORING_API_ROOT}/v1/clusters/${cluster.uuid}/logstash/pipeline_ids`;
const now = moment.utc();
- const body = {
+ const body = JSON.stringify({
timeRange: {
max: now.toISOString(),
min: now.subtract(MONITORING.ACTIVE_PIPELINE_RANGE_S, 'seconds').toISOString(),
},
- };
- return this.$http.post(url, body);
+ });
+ return this.http.post(url, { body });
})
.then(response =>
- response.data.map(pipeline => PipelineListItem.fromUpstreamMonitoringJSON(pipeline))
+ response.map(pipeline => PipelineListItem.fromUpstreamMonitoringJSON(pipeline))
)
.catch(() => []);
}
diff --git a/x-pack/legacy/plugins/logstash/public/sections/pipeline_edit/components/upgrade_failure/index.js b/x-pack/plugins/logstash/public/services/pipeline/index.js
similarity index 81%
rename from x-pack/legacy/plugins/logstash/public/sections/pipeline_edit/components/upgrade_failure/index.js
rename to x-pack/plugins/logstash/public/services/pipeline/index.js
index 3a9a6b860c51f..70d228b34860b 100755
--- a/x-pack/legacy/plugins/logstash/public/sections/pipeline_edit/components/upgrade_failure/index.js
+++ b/x-pack/plugins/logstash/public/services/pipeline/index.js
@@ -4,4 +4,4 @@
* you may not use this file except in compliance with the Elastic License.
*/
-import './upgrade_failure';
+export { PipelineService } from './pipeline_service';
diff --git a/x-pack/plugins/logstash/public/services/pipeline/pipeline_service.js b/x-pack/plugins/logstash/public/services/pipeline/pipeline_service.js
new file mode 100755
index 0000000000000..7c3e18e745d82
--- /dev/null
+++ b/x-pack/plugins/logstash/public/services/pipeline/pipeline_service.js
@@ -0,0 +1,40 @@
+/*
+ * 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.
+ */
+
+import { ROUTES } from '../../../common/constants';
+import { Pipeline } from '../../models/pipeline';
+
+export class PipelineService {
+ constructor(http, pipelinesService) {
+ this.http = http;
+ this.pipelinesService = pipelinesService;
+ }
+
+ loadPipeline(id) {
+ return this.http.get(`${ROUTES.API_ROOT}/pipeline/${id}`).then(response => {
+ return Pipeline.fromUpstreamJSON(response);
+ });
+ }
+
+ savePipeline(pipelineModel) {
+ return this.http
+ .put(`${ROUTES.API_ROOT}/pipeline/${pipelineModel.id}`, {
+ body: JSON.stringify(pipelineModel.upstreamJSON),
+ })
+ .catch(e => {
+ throw e.message;
+ });
+ }
+
+ deletePipeline(id) {
+ return this.http
+ .delete(`${ROUTES.API_ROOT}/pipeline/${id}`)
+ .then(() => this.pipelinesService.addToRecentlyDeleted(id))
+ .catch(e => {
+ throw e.message;
+ });
+ }
+}
diff --git a/x-pack/legacy/plugins/logstash/common/lib/index.js b/x-pack/plugins/logstash/public/services/pipelines/index.js
similarity index 81%
rename from x-pack/legacy/plugins/logstash/common/lib/index.js
rename to x-pack/plugins/logstash/public/services/pipelines/index.js
index 6ed1d24a37791..a932dd4b951f4 100755
--- a/x-pack/legacy/plugins/logstash/common/lib/index.js
+++ b/x-pack/plugins/logstash/public/services/pipelines/index.js
@@ -4,4 +4,4 @@
* you may not use this file except in compliance with the Elastic License.
*/
-export { getMoment } from './get_moment';
+export { PipelinesService } from './pipelines_service';
diff --git a/x-pack/plugins/logstash/public/services/pipelines/pipelines_service.js b/x-pack/plugins/logstash/public/services/pipelines/pipelines_service.js
new file mode 100755
index 0000000000000..00610a23f2717
--- /dev/null
+++ b/x-pack/plugins/logstash/public/services/pipelines/pipelines_service.js
@@ -0,0 +1,128 @@
+/*
+ * 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.
+ */
+
+import { ROUTES, MONITORING } from '../../../common/constants';
+import { PipelineListItem } from '../../models/pipeline_list_item';
+
+const RECENTLY_DELETED_PIPELINE_IDS_STORAGE_KEY = 'xpack.logstash.recentlyDeletedPipelines';
+
+export class PipelinesService {
+ constructor(http, monitoringService) {
+ this.http = http;
+ this.monitoringService = monitoringService;
+ }
+
+ getPipelineList() {
+ return Promise.all([this.getManagementPipelineList(), this.getMonitoringPipelineList()]).then(
+ ([managementPipelines, monitoringPipelines]) => {
+ const now = Date.now();
+
+ // Monitoring will report centrally-managed pipelines as well, including recently-deleted centrally-managed ones.
+ // If there's a recently-deleted pipeline we're keeping track of BUT monitoring doesn't report it, that means
+ // it's not running in Logstash any more. So we can stop tracking it as a recently-deleted pipeline.
+ const monitoringPipelineIds = monitoringPipelines.map(pipeline => pipeline.id);
+ this.getRecentlyDeleted().forEach(recentlyDeletedPipeline => {
+ // We don't want to stop tracking the recently-deleted pipeline until Monitoring has had some
+ // time to report on it. Otherwise, if we stop tracking first, *then* Monitoring reports it, we'll
+ // still end up showing it in the list until Monitoring stops reporting it.
+ if (now - recentlyDeletedPipeline.deletedOn < MONITORING.ACTIVE_PIPELINE_RANGE_S * 1000) {
+ return;
+ }
+
+ // If Monitoring is still reporting the pipeline, don't stop tracking it yet
+ if (monitoringPipelineIds.includes(recentlyDeletedPipeline.id)) {
+ return;
+ }
+
+ this.removeFromRecentlyDeleted(recentlyDeletedPipeline.id);
+ });
+
+ // Merge centrally-managed pipelines with pipelines reported by monitoring. Take care to dedupe
+ // while merging because monitoring will (rightly) report centrally-managed pipelines as well,
+ // including recently-deleted ones!
+ const managementPipelineIds = managementPipelines.map(pipeline => pipeline.id);
+ return managementPipelines.concat(
+ monitoringPipelines.filter(
+ monitoringPipeline =>
+ !managementPipelineIds.includes(monitoringPipeline.id) &&
+ !this.isRecentlyDeleted(monitoringPipeline.id)
+ )
+ );
+ }
+ );
+ }
+
+ getManagementPipelineList() {
+ return this.http.get(`${ROUTES.API_ROOT}/pipelines`).then(response => {
+ return response.pipelines.map(pipeline => PipelineListItem.fromUpstreamJSON(pipeline));
+ });
+ }
+
+ getMonitoringPipelineList() {
+ return this.monitoringService.getPipelineList();
+ }
+
+ /**
+ * Delete a collection of pipelines
+ *
+ * @param pipelineIds Array of pipeline IDs
+ * @return Promise { numSuccesses, numErrors }
+ */
+ deletePipelines(pipelineIds) {
+ const body = JSON.stringify({
+ pipelineIds,
+ });
+ return this.http.post(`${ROUTES.API_ROOT}/pipelines/delete`, { body }).then(response => {
+ this.addToRecentlyDeleted(...pipelineIds);
+ return response.results;
+ });
+ }
+
+ addToRecentlyDeleted(...pipelineIds) {
+ const recentlyDeletedPipelines = this.getRecentlyDeleted();
+ const recentlyDeletedPipelineIds = recentlyDeletedPipelines.map(pipeline => pipeline.id);
+ pipelineIds.forEach(pipelineId => {
+ if (!recentlyDeletedPipelineIds.includes(pipelineId)) {
+ recentlyDeletedPipelines.push({
+ id: pipelineId,
+ deletedOn: Date.now(),
+ });
+ }
+ });
+ this.setRecentlyDeleted(recentlyDeletedPipelines);
+ }
+
+ removeFromRecentlyDeleted(...pipelineIds) {
+ const recentlyDeletedPipelinesToKeep = this.getRecentlyDeleted().filter(
+ recentlyDeletedPipeline => !pipelineIds.includes(recentlyDeletedPipeline.id)
+ );
+ this.setRecentlyDeleted(recentlyDeletedPipelinesToKeep);
+ }
+
+ isRecentlyDeleted(pipelineId) {
+ return this.getRecentlyDeleted()
+ .map(pipeline => pipeline.id)
+ .includes(pipelineId);
+ }
+
+ getRecentlyDeleted() {
+ const recentlyDeletedPipelines = window.localStorage.getItem(
+ RECENTLY_DELETED_PIPELINE_IDS_STORAGE_KEY
+ );
+ if (!recentlyDeletedPipelines) {
+ return [];
+ }
+
+ return JSON.parse(recentlyDeletedPipelines);
+ }
+
+ setRecentlyDeleted(recentlyDeletedPipelineIds) {
+ window.localStorage.setItem(
+ RECENTLY_DELETED_PIPELINE_IDS_STORAGE_KEY,
+ JSON.stringify(recentlyDeletedPipelineIds)
+ );
+ }
+}
diff --git a/x-pack/legacy/plugins/logstash/public/sections/pipeline_edit/index.js b/x-pack/plugins/logstash/public/services/upgrade/index.js
similarity index 82%
rename from x-pack/legacy/plugins/logstash/public/sections/pipeline_edit/index.js
rename to x-pack/plugins/logstash/public/services/upgrade/index.js
index 4b699ed79cd26..1c835b11ae423 100755
--- a/x-pack/legacy/plugins/logstash/public/sections/pipeline_edit/index.js
+++ b/x-pack/plugins/logstash/public/services/upgrade/index.js
@@ -4,4 +4,4 @@
* you may not use this file except in compliance with the Elastic License.
*/
-import './pipeline_edit_route';
+export { UpgradeService } from './upgrade_service';
diff --git a/x-pack/plugins/logstash/public/services/upgrade/upgrade_service.js b/x-pack/plugins/logstash/public/services/upgrade/upgrade_service.js
new file mode 100755
index 0000000000000..7bd101ebee6b0
--- /dev/null
+++ b/x-pack/plugins/logstash/public/services/upgrade/upgrade_service.js
@@ -0,0 +1,22 @@
+/*
+ * 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.
+ */
+
+import { ROUTES } from '../../../common/constants';
+
+export class UpgradeService {
+ constructor(http) {
+ this.http = http;
+ }
+
+ executeUpgrade() {
+ return this.http
+ .post(`${ROUTES.API_ROOT}/upgrade`)
+ .then(response => response.is_upgraded)
+ .catch(e => {
+ throw e.message;
+ });
+ }
+}
diff --git a/x-pack/plugins/logstash/server/routes/pipeline/save.ts b/x-pack/plugins/logstash/server/routes/pipeline/save.ts
index 556c281944a85..e484d0e221b6d 100644
--- a/x-pack/plugins/logstash/server/routes/pipeline/save.ts
+++ b/x-pack/plugins/logstash/server/routes/pipeline/save.ts
@@ -25,7 +25,6 @@ export function registerPipelineSaveRoute(router: IRouter, security?: SecurityPl
id: schema.string(),
description: schema.string(),
pipeline: schema.string(),
- username: schema.string(),
settings: schema.maybe(schema.object({}, { unknowns: 'allow' })),
}),
},
diff --git a/x-pack/plugins/translations/translations/ja-JP.json b/x-pack/plugins/translations/translations/ja-JP.json
index 209a3f626272f..8a606e230dc36 100644
--- a/x-pack/plugins/translations/translations/ja-JP.json
+++ b/x-pack/plugins/translations/translations/ja-JP.json
@@ -8787,8 +8787,6 @@
"xpack.logstash.idFormatErrorMessage": "パイプライン ID は文字またはアンダーラインで始まる必要があり、文字、アンダーライン、ハイフン、数字のみ使用できます",
"xpack.logstash.insufficientUserPermissionsDescription": "Logstash パイプラインの管理に必要なユーザーパーミッションがありません",
"xpack.logstash.kibanaManagementPipelinesTitle": "Kibana の管理で作成されたパイプラインだけがここに表示されます",
- "xpack.logstash.managementSection.createPipelineTitle": "パイプラインの作成",
- "xpack.logstash.managementSection.editPipelineTitle": "パイプラインの編集",
"xpack.logstash.managementSection.enableSecurityDescription": "Logstash パイプライン管理機能を使用するには、セキュリティを有効にする必要があります。elasticsearch.yml で xpack.security.enabled: true に設定してください。",
"xpack.logstash.managementSection.licenseDoesNotSupportDescription": "ご使用の {licenseType} ライセンスは Logstash パイプライン管理をサポートしていません。ライセンスをアップグレードしてください。",
"xpack.logstash.managementSection.notPossibleToManagePipelinesMessage": "現在ライセンス情報が利用できないため Logstash パイプラインを使用できません。",
diff --git a/x-pack/plugins/translations/translations/zh-CN.json b/x-pack/plugins/translations/translations/zh-CN.json
index 5d8d733f2b5b6..faee95b8172b7 100644
--- a/x-pack/plugins/translations/translations/zh-CN.json
+++ b/x-pack/plugins/translations/translations/zh-CN.json
@@ -8790,8 +8790,6 @@
"xpack.logstash.idFormatErrorMessage": "管道 ID 必须以字母或下划线开头,并只能包含字母、下划线、短划线和数字",
"xpack.logstash.insufficientUserPermissionsDescription": "管理 Logstash 管道的用户权限不足",
"xpack.logstash.kibanaManagementPipelinesTitle": "仅在 Kibana“管理”中创建的管道显示在此处",
- "xpack.logstash.managementSection.createPipelineTitle": "创建管道",
- "xpack.logstash.managementSection.editPipelineTitle": "编辑管道",
"xpack.logstash.managementSection.enableSecurityDescription": "必须启用 Security,才能使用 Logstash 管道管理功能。请在 elasticsearch.yml 中设置 xpack.security.enabled: true。",
"xpack.logstash.managementSection.licenseDoesNotSupportDescription": "您的{licenseType}许可不支持 Logstash 管道管理功能。请升级您的许可。",
"xpack.logstash.managementSection.notPossibleToManagePipelinesMessage": "您不能管理 Logstash 管道,因为许可信息当前不可用。",
diff --git a/x-pack/test/api_integration/apis/logstash/pipeline/delete.ts b/x-pack/test/api_integration/apis/logstash/pipeline/delete.ts
index cdbf5a3e6a1fe..2463dbe4500b5 100644
--- a/x-pack/test/api_integration/apis/logstash/pipeline/delete.ts
+++ b/x-pack/test/api_integration/apis/logstash/pipeline/delete.ts
@@ -20,7 +20,6 @@ export default function({ getService }: FtrProviderContext) {
.send({
id: 'fast_generator',
description: 'foobar baz',
- username: 'seger',
pipeline: 'input { generator {} }\n\n output { stdout {} }',
})
.expect(204);
diff --git a/x-pack/test/api_integration/apis/logstash/pipeline/save.ts b/x-pack/test/api_integration/apis/logstash/pipeline/save.ts
index 2ca9fbe7d68e0..ca0cfb19b9454 100644
--- a/x-pack/test/api_integration/apis/logstash/pipeline/save.ts
+++ b/x-pack/test/api_integration/apis/logstash/pipeline/save.ts
@@ -28,7 +28,6 @@ export default function({ getService }: FtrProviderContext) {
.send({
id: 'fast_generator',
description: 'foobar baz',
- username: 'seger',
pipeline: 'input { generator {} }\n\n output { stdout {} }',
})
.expect(204);