* [New Platform Migration]: Management - Implement NP API Part of #47432 * partial progress on a number of management sections * fix passing history * Fixed types * Fixed routing for Ingest Node Pipelines * introduce and use react router wrapped eui components * react router utils * work in progress => hashRouter to router * more partial progress * remove console.log * use reactRouterNavigate for management_sidebar * Breadcrumbs will need to make use of the reactRouterNavigate function * [triggersActions] app. Hash Router -> Router * Replace /app/kibana#/management urls to /app/management * remove ui/public/management * fix some links to management apps * fix management url for functional tests * add data-test-subj for EuiSideNavItem * partial progress * fix some of ts issues * Fixed breadcrumbs for data index management * [kibana/spaces] section * fix functional test * [role_management] fix Breadcrumbs * [api_keys] fix Breadcrumbs and Navigation * Fixed routing for remote cluster * [role_mapping] Partial progress * [users] partial progress * [watcher] partial progress * fix eslint issues * [snapshot_restore] partial progress * [rollup_jobs] partial progress * Fixed routing for cross cluster replications (partial progress). Enhanced reactRouterNavigate * Perf optimization: fix extra re-rendering * fix TS errors * x-pack fix config for functional tests * Fixed routing for index lifecycle management * fix some broken CI tests * fix PR comment * [snapshot_restore] move onClick into reactRouterNavigate * fix some jest * fix some functional tests * fix functiona test: management scripted fields testing regression for issue * fix some functional tests * [licence_management] partial progress * Fixed x-pack jest tests * [saved_object_management] partial progress * Fixed some tests * fix functional test: should add new role myroleEast * Reverted part of changes for ml * [transforms] partial progress * fix TS errors * fix functional: redirects to Kibana home * add support of Backward compatibility * fix functional: Saved objects management feature controls saved objects management global visualize all privileges listing redirects to Kibana home * fix PR comment * fix TS issues * Fixed x-pack jest tests * fix oss JEST * Fixed functional test * fix functional test * fix PR comment * Fixed i18n * fix typo * fix Styles * Fixed paths for cross_cluster_replication * fix wrong link * Fixed jest * Fixed some comments * fix sorting * fix type check * fixed x-pack jest * fixed x-pack jest * reverted using of parentHistory * Add debugging toasts to CCR. * Comment out non-CCR functional tests. * Fix typo. * Uncomment non-CCR functional tests. * Enable CCR. * fix CI * Add comment to explain why CCR is enabled by default and move config variable back to original location in CCR plugin. * revert some changes in APM * add space between index pattern name and tags * fix function test * Update x-pack/plugins/security/public/management/management_urls.ts Co-authored-by: Joe Portner <5295965+jportner@users.noreply.github.com> * Update x-pack/plugins/security/public/management/api_keys/api_keys_management_app.tsx Co-authored-by: Joe Portner <5295965+jportner@users.noreply.github.com> * Update x-pack/plugins/spaces/public/management/spaces_management_app.tsx Co-authored-by: Joe Portner <5295965+jportner@users.noreply.github.com> * Update x-pack/plugins/security/public/management/roles/roles_management_app.tsx Co-authored-by: Joe Portner <5295965+jportner@users.noreply.github.com> * Update x-pack/plugins/security/public/management/users/users_management_app.tsx Co-authored-by: Joe Portner <5295965+jportner@users.noreply.github.com> * Update x-pack/plugins/security/public/management/management_urls.ts Co-authored-by: Joe Portner <5295965+jportner@users.noreply.github.com> * Update x-pack/plugins/security/public/management/management_urls.ts Co-authored-by: Joe Portner <5295965+jportner@users.noreply.github.com> * [security] getUrlForApp -> navigateToApp * [mp] fix Uncaught (in promise) undefined Co-authored-by: Matt Kime <matt@mattki.me> Co-authored-by: Uladzislau Lasitsa <Uladzislau_Lasitsa@epam.com> Co-authored-by: Elastic Machine <elasticmachine@users.noreply.github.com> Co-authored-by: CJ Cenizal <cj@cenizal.com> Co-authored-by: Joe Portner <5295965+jportner@users.noreply.github.com>
107 lines
3.8 KiB
TypeScript
107 lines
3.8 KiB
TypeScript
/*
|
|
* 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 { get } from 'lodash';
|
|
import { first } from 'rxjs/operators';
|
|
import { CoreSetup, Plugin, PluginInitializerContext } from 'src/core/public';
|
|
|
|
import { ManagementSectionId } from '../../../../src/plugins/management/public';
|
|
import { PLUGIN, MANAGEMENT_ID } from '../common/constants';
|
|
import { init as initUiMetric } from './app/services/track_ui_metric';
|
|
import { init as initNotification } from './app/services/notifications';
|
|
import { PluginDependencies, ClientConfigType } from './types';
|
|
|
|
// @ts-ignore;
|
|
import { setHttpClient } from './app/services/api';
|
|
|
|
export class CrossClusterReplicationPlugin implements Plugin {
|
|
constructor(private readonly initializerContext: PluginInitializerContext) {}
|
|
|
|
public setup(coreSetup: CoreSetup, plugins: PluginDependencies) {
|
|
const { licensing, remoteClusters, usageCollection, management, indexManagement } = plugins;
|
|
const esSection = management.sections.getSection(ManagementSectionId.Data);
|
|
|
|
const {
|
|
http,
|
|
notifications: { toasts },
|
|
fatalErrors,
|
|
getStartServices,
|
|
} = coreSetup;
|
|
|
|
// Initialize services even if the app isn't mounted, because they're used by index management extensions.
|
|
setHttpClient(http);
|
|
initUiMetric(usageCollection);
|
|
initNotification(toasts, fatalErrors);
|
|
|
|
const ccrApp = esSection.registerApp({
|
|
id: MANAGEMENT_ID,
|
|
title: PLUGIN.TITLE,
|
|
order: 6,
|
|
mount: async ({ element, setBreadcrumbs, history }) => {
|
|
const { mountApp } = await import('./app');
|
|
|
|
const [coreStart] = await getStartServices();
|
|
const {
|
|
i18n: { Context: I18nContext },
|
|
docLinks: { ELASTIC_WEBSITE_URL, DOC_LINK_VERSION },
|
|
application: { getUrlForApp },
|
|
} = coreStart;
|
|
|
|
return mountApp({
|
|
element,
|
|
setBreadcrumbs,
|
|
I18nContext,
|
|
ELASTIC_WEBSITE_URL,
|
|
DOC_LINK_VERSION,
|
|
history,
|
|
getUrlForApp,
|
|
});
|
|
},
|
|
});
|
|
|
|
// NOTE: We enable the plugin by default instead of disabling it by default because this
|
|
// creates a race condition that causes functional tests to fail on CI (see #66781).
|
|
licensing.license$
|
|
.pipe(first())
|
|
.toPromise()
|
|
.then((license) => {
|
|
const licenseStatus = license.check(PLUGIN.ID, PLUGIN.minimumLicenseType);
|
|
const isLicenseOk = licenseStatus.state === 'valid';
|
|
const config = this.initializerContext.config.get<ClientConfigType>();
|
|
|
|
// remoteClusters.isUiEnabled is driven by the xpack.remote_clusters.ui.enabled setting.
|
|
// The CCR UI depends upon the Remote Clusters UI (e.g. by cross-linking to it), so if
|
|
// the Remote Clusters UI is disabled we can't show the CCR UI.
|
|
const isCcrUiEnabled = config.ui.enabled && remoteClusters.isUiEnabled;
|
|
|
|
if (isLicenseOk && isCcrUiEnabled) {
|
|
if (indexManagement) {
|
|
const propertyPath = 'isFollowerIndex';
|
|
|
|
const followerBadgeExtension = {
|
|
matchIndex: (index: any) => {
|
|
return get(index, propertyPath);
|
|
},
|
|
label: i18n.translate('xpack.crossClusterReplication.indexMgmtBadge.followerLabel', {
|
|
defaultMessage: 'Follower',
|
|
}),
|
|
color: 'default',
|
|
filterExpression: 'isFollowerIndex:true',
|
|
};
|
|
|
|
indexManagement.extensionsService.addBadge(followerBadgeExtension);
|
|
}
|
|
} else {
|
|
ccrApp.disable();
|
|
}
|
|
});
|
|
}
|
|
|
|
public start() {}
|
|
public stop() {}
|
|
}
|