mirror of
https://github.com/elastic/kibana.git
synced 2025-06-28 11:05:39 -04:00
[serverless] Create Observability Serverless plugin (#156118)
> Derived from https://github.com/elastic/kibana/pull/153274 > Builds upon https://github.com/elastic/kibana/pull/155582 ## Summary This PR creates the Serverless Observability plugin, based on the work from https://github.com/elastic/kibana/pull/153274: - creates the plugin, - adds API to hide the solution navigation from Enterprise Search, - calls that API if the chrome style is `project`. <img width="1610" alt="Screenshot 2023-04-27 at 5 03 44 PM" src="https://user-images.githubusercontent.com/297604/234990765-d6770650-41b3-4e94-ad7f-c6a22778d39a.png"> --------- Co-authored-by: kibanamachine <42973632+kibanamachine@users.noreply.github.com>
This commit is contained in:
parent
29dfcd56cd
commit
4e88645b59
24 changed files with 299 additions and 12 deletions
1
.github/CODEOWNERS
vendored
1
.github/CODEOWNERS
vendored
|
@ -574,6 +574,7 @@ packages/kbn-securitysolution-utils @elastic/security-solution-platform
|
||||||
packages/kbn-server-http-tools @elastic/kibana-core
|
packages/kbn-server-http-tools @elastic/kibana-core
|
||||||
packages/kbn-server-route-repository @elastic/apm-ui
|
packages/kbn-server-route-repository @elastic/apm-ui
|
||||||
x-pack/plugins/serverless @elastic/appex-sharedux
|
x-pack/plugins/serverless @elastic/appex-sharedux
|
||||||
|
x-pack/plugins/serverless_observability @elastic/appex-sharedux
|
||||||
packages/serverless/project_switcher @elastic/appex-sharedux
|
packages/serverless/project_switcher @elastic/appex-sharedux
|
||||||
x-pack/plugins/serverless_search @elastic/appex-sharedux
|
x-pack/plugins/serverless_search @elastic/appex-sharedux
|
||||||
packages/serverless/storybook/config @elastic/appex-sharedux
|
packages/serverless/storybook/config @elastic/appex-sharedux
|
||||||
|
|
|
@ -1,3 +1,18 @@
|
||||||
uiSettings.overrides.defaultRoute: /app/observability/overview
|
# Observability Project config
|
||||||
|
|
||||||
|
## Disable plugins
|
||||||
|
enterpriseSearch.enabled: false
|
||||||
|
xpack.cloudSecurityPosture.enabled: false
|
||||||
|
xpack.securitySolution.enabled: false
|
||||||
|
|
||||||
|
## Enable the Serverless Obsersability plugin
|
||||||
|
xpack.serverless.observability.enabled: true
|
||||||
|
|
||||||
|
## Configure plugins
|
||||||
xpack.infra.logs.app_target: discover
|
xpack.infra.logs.app_target: discover
|
||||||
|
|
||||||
|
## Set the home route
|
||||||
|
uiSettings.overrides.defaultRoute: /app/observability/overview
|
||||||
|
|
||||||
|
## Set the dev project switch current type
|
||||||
xpack.serverless.plugin.developer.projectSwitcher.currentType: 'observability'
|
xpack.serverless.plugin.developer.projectSwitcher.currentType: 'observability'
|
||||||
|
|
|
@ -714,6 +714,10 @@ Kibana.
|
||||||
|
|
|
|
||||||
|
|
||||||
|
|
||||||
|
|{kib-repo}blob/{branch}/x-pack/plugins/serverless_observability/README.mdx[serverlessObservability]
|
||||||
|
|This plugin contains configuration and code used to create a Serverless Observability project. It leverages universal configuration and other APIs in the serverless plugin to configure Kibana.
|
||||||
|
|
||||||
|
|
||||||
|{kib-repo}blob/{branch}/x-pack/plugins/serverless_search/README.mdx[serverlessSearch]
|
|{kib-repo}blob/{branch}/x-pack/plugins/serverless_search/README.mdx[serverlessSearch]
|
||||||
|This plugin contains configuration and code used to create a Serverless Search project. It leverages universal configuration and other APIs in the serverless plugin to configure Kibana.
|
|This plugin contains configuration and code used to create a Serverless Search project. It leverages universal configuration and other APIs in the serverless plugin to configure Kibana.
|
||||||
|
|
||||||
|
|
|
@ -575,6 +575,7 @@
|
||||||
"@kbn/server-http-tools": "link:packages/kbn-server-http-tools",
|
"@kbn/server-http-tools": "link:packages/kbn-server-http-tools",
|
||||||
"@kbn/server-route-repository": "link:packages/kbn-server-route-repository",
|
"@kbn/server-route-repository": "link:packages/kbn-server-route-repository",
|
||||||
"@kbn/serverless": "link:x-pack/plugins/serverless",
|
"@kbn/serverless": "link:x-pack/plugins/serverless",
|
||||||
|
"@kbn/serverless-observability": "link:x-pack/plugins/serverless_observability",
|
||||||
"@kbn/serverless-project-switcher": "link:packages/serverless/project_switcher",
|
"@kbn/serverless-project-switcher": "link:packages/serverless/project_switcher",
|
||||||
"@kbn/serverless-search": "link:x-pack/plugins/serverless_search",
|
"@kbn/serverless-search": "link:x-pack/plugins/serverless_search",
|
||||||
"@kbn/serverless-types": "link:packages/serverless/types",
|
"@kbn/serverless-types": "link:packages/serverless/types",
|
||||||
|
|
|
@ -116,6 +116,7 @@ pageLoadAssetSize:
|
||||||
security: 65433
|
security: 65433
|
||||||
securitySolution: 66738
|
securitySolution: 66738
|
||||||
serverless: 16573
|
serverless: 16573
|
||||||
|
serverlessObservability: 16582
|
||||||
serverlessSearch: 17548
|
serverlessSearch: 17548
|
||||||
sessionView: 77750
|
sessionView: 77750
|
||||||
share: 71239
|
share: 71239
|
||||||
|
|
|
@ -1142,6 +1142,8 @@
|
||||||
"@kbn/server-route-repository/*": ["packages/kbn-server-route-repository/*"],
|
"@kbn/server-route-repository/*": ["packages/kbn-server-route-repository/*"],
|
||||||
"@kbn/serverless": ["x-pack/plugins/serverless"],
|
"@kbn/serverless": ["x-pack/plugins/serverless"],
|
||||||
"@kbn/serverless/*": ["x-pack/plugins/serverless/*"],
|
"@kbn/serverless/*": ["x-pack/plugins/serverless/*"],
|
||||||
|
"@kbn/serverless-observability": ["x-pack/plugins/serverless_observability"],
|
||||||
|
"@kbn/serverless-observability/*": ["x-pack/plugins/serverless_observability/*"],
|
||||||
"@kbn/serverless-project-switcher": ["packages/serverless/project_switcher"],
|
"@kbn/serverless-project-switcher": ["packages/serverless/project_switcher"],
|
||||||
"@kbn/serverless-project-switcher/*": ["packages/serverless/project_switcher/*"],
|
"@kbn/serverless-project-switcher/*": ["packages/serverless/project_switcher/*"],
|
||||||
"@kbn/serverless-search": ["x-pack/plugins/serverless_search"],
|
"@kbn/serverless-search": ["x-pack/plugins/serverless_search"],
|
||||||
|
|
|
@ -6,6 +6,8 @@
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import React from 'react';
|
import React from 'react';
|
||||||
|
import useObservable from 'react-use/lib/useObservable';
|
||||||
|
|
||||||
import type {
|
import type {
|
||||||
ObservabilityPageTemplateDependencies,
|
ObservabilityPageTemplateDependencies,
|
||||||
WrappedPageTemplateProps,
|
WrappedPageTemplateProps,
|
||||||
|
@ -15,12 +17,19 @@ export const LazyObservabilityPageTemplate = React.lazy(() => import('./page_tem
|
||||||
|
|
||||||
export type LazyObservabilityPageTemplateProps = WrappedPageTemplateProps;
|
export type LazyObservabilityPageTemplateProps = WrappedPageTemplateProps;
|
||||||
|
|
||||||
export function createLazyObservabilityPageTemplate(
|
export function createLazyObservabilityPageTemplate({
|
||||||
injectedDeps: ObservabilityPageTemplateDependencies
|
isSidebarEnabled$,
|
||||||
) {
|
...injectedDeps
|
||||||
return (pageTemplateProps: LazyObservabilityPageTemplateProps) => (
|
}: ObservabilityPageTemplateDependencies) {
|
||||||
<React.Suspense fallback={null}>
|
return (pageTemplateProps: LazyObservabilityPageTemplateProps) => {
|
||||||
<LazyObservabilityPageTemplate {...pageTemplateProps} {...injectedDeps} />
|
const isSidebarEnabled = useObservable(isSidebarEnabled$);
|
||||||
</React.Suspense>
|
const { showSolutionNav: showSolutionNavProp, ...props } = pageTemplateProps;
|
||||||
);
|
const showSolutionNav = !!showSolutionNavProp || isSidebarEnabled;
|
||||||
|
|
||||||
|
return (
|
||||||
|
<React.Suspense fallback={null}>
|
||||||
|
<LazyObservabilityPageTemplate {...{ ...props, showSolutionNav }} {...injectedDeps} />
|
||||||
|
</React.Suspense>
|
||||||
|
);
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
|
|
@ -9,7 +9,7 @@ import { I18nProvider } from '@kbn/i18n-react';
|
||||||
import { render } from '@testing-library/react';
|
import { render } from '@testing-library/react';
|
||||||
import { shallow } from 'enzyme';
|
import { shallow } from 'enzyme';
|
||||||
import React from 'react';
|
import React from 'react';
|
||||||
import { of } from 'rxjs';
|
import { BehaviorSubject, of } from 'rxjs';
|
||||||
import { getKibanaPageTemplateKibanaDependenciesMock as getPageTemplateServices } from '@kbn/shared-ux-page-kibana-template-mocks';
|
import { getKibanaPageTemplateKibanaDependenciesMock as getPageTemplateServices } from '@kbn/shared-ux-page-kibana-template-mocks';
|
||||||
import { guidedOnboardingMock } from '@kbn/guided-onboarding-plugin/public/mocks';
|
import { guidedOnboardingMock } from '@kbn/guided-onboarding-plugin/public/mocks';
|
||||||
|
|
||||||
|
@ -56,6 +56,7 @@ describe('Page template', () => {
|
||||||
navigationSections$: navigationRegistry.sections$,
|
navigationSections$: navigationRegistry.sections$,
|
||||||
getPageTemplateServices,
|
getPageTemplateServices,
|
||||||
guidedOnboardingApi: guidedOnboardingMock.createStart().guidedOnboardingApi,
|
guidedOnboardingApi: guidedOnboardingMock.createStart().guidedOnboardingApi,
|
||||||
|
isSidebarEnabled$: new BehaviorSubject<boolean>(true),
|
||||||
});
|
});
|
||||||
|
|
||||||
const component = shallow(
|
const component = shallow(
|
||||||
|
|
|
@ -11,7 +11,7 @@ import { i18n } from '@kbn/i18n';
|
||||||
import React, { useMemo } from 'react';
|
import React, { useMemo } from 'react';
|
||||||
import { matchPath, useLocation } from 'react-router-dom';
|
import { matchPath, useLocation } from 'react-router-dom';
|
||||||
import useObservable from 'react-use/lib/useObservable';
|
import useObservable from 'react-use/lib/useObservable';
|
||||||
import type { Observable } from 'rxjs';
|
import type { BehaviorSubject, Observable } from 'rxjs';
|
||||||
import type { ApplicationStart } from '@kbn/core/public';
|
import type { ApplicationStart } from '@kbn/core/public';
|
||||||
import { useKibana } from '@kbn/kibana-react-plugin/public';
|
import { useKibana } from '@kbn/kibana-react-plugin/public';
|
||||||
import {
|
import {
|
||||||
|
@ -85,9 +85,13 @@ export interface ObservabilityPageTemplateDependencies {
|
||||||
navigationSections$: Observable<NavigationSection[]>;
|
navigationSections$: Observable<NavigationSection[]>;
|
||||||
getPageTemplateServices: () => KibanaPageTemplateKibanaDependencies;
|
getPageTemplateServices: () => KibanaPageTemplateKibanaDependencies;
|
||||||
guidedOnboardingApi: GuidedOnboardingPluginStart['guidedOnboardingApi'];
|
guidedOnboardingApi: GuidedOnboardingPluginStart['guidedOnboardingApi'];
|
||||||
|
isSidebarEnabled$: BehaviorSubject<boolean>;
|
||||||
}
|
}
|
||||||
|
|
||||||
export type ObservabilityPageTemplateProps = ObservabilityPageTemplateDependencies &
|
export type ObservabilityPageTemplateProps = Omit<
|
||||||
|
ObservabilityPageTemplateDependencies,
|
||||||
|
'isSidebarEnabled$'
|
||||||
|
> &
|
||||||
WrappedPageTemplateProps;
|
WrappedPageTemplateProps;
|
||||||
|
|
||||||
export function ObservabilityPageTemplate({
|
export function ObservabilityPageTemplate({
|
||||||
|
|
|
@ -5,6 +5,8 @@
|
||||||
* 2.0.
|
* 2.0.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
import { BehaviorSubject } from 'rxjs';
|
||||||
|
|
||||||
import type { CoreStart, Plugin } from '@kbn/core/public';
|
import type { CoreStart, Plugin } from '@kbn/core/public';
|
||||||
import type { GuidedOnboardingPluginStart } from '@kbn/guided-onboarding-plugin/public';
|
import type { GuidedOnboardingPluginStart } from '@kbn/guided-onboarding-plugin/public';
|
||||||
import { createNavigationRegistry } from './components/page_template/helpers/navigation_registry';
|
import { createNavigationRegistry } from './components/page_template/helpers/navigation_registry';
|
||||||
|
@ -13,6 +15,7 @@ import { updateGlobalNavigation } from './services/update_global_navigation';
|
||||||
|
|
||||||
export interface ObservabilitySharedStart {
|
export interface ObservabilitySharedStart {
|
||||||
guidedOnboarding: GuidedOnboardingPluginStart;
|
guidedOnboarding: GuidedOnboardingPluginStart;
|
||||||
|
setIsSidebarEnabled: (isEnabled: boolean) => void;
|
||||||
}
|
}
|
||||||
|
|
||||||
export type ObservabilitySharedPluginSetup = ReturnType<ObservabilitySharedPlugin['setup']>;
|
export type ObservabilitySharedPluginSetup = ReturnType<ObservabilitySharedPlugin['setup']>;
|
||||||
|
@ -20,6 +23,11 @@ export type ObservabilitySharedPluginStart = ReturnType<ObservabilitySharedPlugi
|
||||||
|
|
||||||
export class ObservabilitySharedPlugin implements Plugin {
|
export class ObservabilitySharedPlugin implements Plugin {
|
||||||
private readonly navigationRegistry = createNavigationRegistry();
|
private readonly navigationRegistry = createNavigationRegistry();
|
||||||
|
private isSidebarEnabled$: BehaviorSubject<boolean>;
|
||||||
|
|
||||||
|
constructor() {
|
||||||
|
this.isSidebarEnabled$ = new BehaviorSubject<boolean>(true);
|
||||||
|
}
|
||||||
|
|
||||||
public setup() {
|
public setup() {
|
||||||
return {
|
return {
|
||||||
|
@ -39,6 +47,7 @@ export class ObservabilitySharedPlugin implements Plugin {
|
||||||
navigationSections$: this.navigationRegistry.sections$,
|
navigationSections$: this.navigationRegistry.sections$,
|
||||||
guidedOnboardingApi: plugins.guidedOnboarding.guidedOnboardingApi,
|
guidedOnboardingApi: plugins.guidedOnboarding.guidedOnboardingApi,
|
||||||
getPageTemplateServices: () => ({ coreStart: core }),
|
getPageTemplateServices: () => ({ coreStart: core }),
|
||||||
|
isSidebarEnabled$: this.isSidebarEnabled$,
|
||||||
});
|
});
|
||||||
|
|
||||||
return {
|
return {
|
||||||
|
@ -46,6 +55,7 @@ export class ObservabilitySharedPlugin implements Plugin {
|
||||||
PageTemplate,
|
PageTemplate,
|
||||||
},
|
},
|
||||||
updateGlobalNavigation,
|
updateGlobalNavigation,
|
||||||
|
setIsSidebarEnabled: (isEnabled: boolean) => this.isSidebarEnabled$.next(isEnabled),
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
2
x-pack/plugins/serverless_observability/.gitignore
vendored
Normal file
2
x-pack/plugins/serverless_observability/.gitignore
vendored
Normal file
|
@ -0,0 +1,2 @@
|
||||||
|
/build
|
||||||
|
/target
|
3
x-pack/plugins/serverless_observability/README.mdx
Executable file
3
x-pack/plugins/serverless_observability/README.mdx
Executable file
|
@ -0,0 +1,3 @@
|
||||||
|
# Serverless Observability project plugin
|
||||||
|
|
||||||
|
This plugin contains configuration and code used to create a Serverless Observability project. It leverages universal configuration and other APIs in the [`serverless`](../serverless/README.mdx) plugin to configure Kibana.
|
9
x-pack/plugins/serverless_observability/common/index.ts
Normal file
9
x-pack/plugins/serverless_observability/common/index.ts
Normal file
|
@ -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
|
||||||
|
* 2.0; you may not use this file except in compliance with the Elastic License
|
||||||
|
* 2.0.
|
||||||
|
*/
|
||||||
|
|
||||||
|
export const PLUGIN_ID = 'serverlessObservability';
|
||||||
|
export const PLUGIN_NAME = 'serverlessObservability';
|
22
x-pack/plugins/serverless_observability/kibana.jsonc
Normal file
22
x-pack/plugins/serverless_observability/kibana.jsonc
Normal file
|
@ -0,0 +1,22 @@
|
||||||
|
{
|
||||||
|
"type": "plugin",
|
||||||
|
"id": "@kbn/serverless-observability",
|
||||||
|
"owner": "@elastic/appex-sharedux",
|
||||||
|
"description": "Serverless customizations for observability.",
|
||||||
|
"plugin": {
|
||||||
|
"id": "serverlessObservability",
|
||||||
|
"server": true,
|
||||||
|
"browser": true,
|
||||||
|
"configPath": [
|
||||||
|
"xpack",
|
||||||
|
"serverless",
|
||||||
|
"observability"
|
||||||
|
],
|
||||||
|
"requiredPlugins": [
|
||||||
|
"serverless",
|
||||||
|
"observabilityShared"
|
||||||
|
],
|
||||||
|
"optionalPlugins": [],
|
||||||
|
"requiredBundles": []
|
||||||
|
}
|
||||||
|
}
|
11
x-pack/plugins/serverless_observability/package.json
Normal file
11
x-pack/plugins/serverless_observability/package.json
Normal file
|
@ -0,0 +1,11 @@
|
||||||
|
{
|
||||||
|
"name": "@kbn/serverless-observability",
|
||||||
|
"version": "1.0.0",
|
||||||
|
"license": "Elastic License 2.0",
|
||||||
|
"private": true,
|
||||||
|
"scripts": {
|
||||||
|
"build": "yarn plugin-helpers build",
|
||||||
|
"plugin-helpers": "node ../../../scripts/plugin_helpers",
|
||||||
|
"kbn": "node ../../../scripts/kbn"
|
||||||
|
}
|
||||||
|
}
|
19
x-pack/plugins/serverless_observability/public/index.ts
Normal file
19
x-pack/plugins/serverless_observability/public/index.ts
Normal file
|
@ -0,0 +1,19 @@
|
||||||
|
/*
|
||||||
|
* Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
|
||||||
|
* or more contributor license agreements. Licensed under the Elastic License
|
||||||
|
* 2.0; you may not use this file except in compliance with the Elastic License
|
||||||
|
* 2.0.
|
||||||
|
*/
|
||||||
|
|
||||||
|
import { ServerlessObservabilityPlugin } from './plugin';
|
||||||
|
|
||||||
|
// This exports static code and TypeScript types,
|
||||||
|
// as well as, Kibana Platform `plugin()` initializer.
|
||||||
|
export function plugin() {
|
||||||
|
return new ServerlessObservabilityPlugin();
|
||||||
|
}
|
||||||
|
|
||||||
|
export type {
|
||||||
|
ServerlessObservabilityPluginSetup,
|
||||||
|
ServerlessObservabilityPluginStart,
|
||||||
|
} from './types';
|
35
x-pack/plugins/serverless_observability/public/plugin.ts
Normal file
35
x-pack/plugins/serverless_observability/public/plugin.ts
Normal file
|
@ -0,0 +1,35 @@
|
||||||
|
/*
|
||||||
|
* Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
|
||||||
|
* or more contributor license agreements. Licensed under the Elastic License
|
||||||
|
* 2.0; you may not use this file except in compliance with the Elastic License
|
||||||
|
* 2.0.
|
||||||
|
*/
|
||||||
|
|
||||||
|
import { CoreSetup, CoreStart, Plugin } from '@kbn/core/public';
|
||||||
|
import {
|
||||||
|
ServerlessObservabilityPluginSetup,
|
||||||
|
ServerlessObservabilityPluginStart,
|
||||||
|
ServerlessObservabilityPluginSetupDependencies,
|
||||||
|
ServerlessObservabilityPluginStartDependencies,
|
||||||
|
} from './types';
|
||||||
|
|
||||||
|
export class ServerlessObservabilityPlugin
|
||||||
|
implements Plugin<ServerlessObservabilityPluginSetup, ServerlessObservabilityPluginStart>
|
||||||
|
{
|
||||||
|
public setup(
|
||||||
|
_core: CoreSetup,
|
||||||
|
_setupDeps: ServerlessObservabilityPluginSetupDependencies
|
||||||
|
): ServerlessObservabilityPluginSetup {
|
||||||
|
return {};
|
||||||
|
}
|
||||||
|
|
||||||
|
public start(
|
||||||
|
_core: CoreStart,
|
||||||
|
{ observabilityShared }: ServerlessObservabilityPluginStartDependencies
|
||||||
|
): ServerlessObservabilityPluginStart {
|
||||||
|
observabilityShared.setIsSidebarEnabled(false);
|
||||||
|
return {};
|
||||||
|
}
|
||||||
|
|
||||||
|
public stop() {}
|
||||||
|
}
|
28
x-pack/plugins/serverless_observability/public/types.ts
Normal file
28
x-pack/plugins/serverless_observability/public/types.ts
Normal file
|
@ -0,0 +1,28 @@
|
||||||
|
/*
|
||||||
|
* Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
|
||||||
|
* or more contributor license agreements. Licensed under the Elastic License
|
||||||
|
* 2.0; you may not use this file except in compliance with the Elastic License
|
||||||
|
* 2.0.
|
||||||
|
*/
|
||||||
|
|
||||||
|
import { ServerlessPluginSetup, ServerlessPluginStart } from '@kbn/serverless/public';
|
||||||
|
import {
|
||||||
|
ObservabilitySharedPluginSetup,
|
||||||
|
ObservabilitySharedPluginStart,
|
||||||
|
} from '@kbn/observability-shared-plugin/public';
|
||||||
|
|
||||||
|
// eslint-disable-next-line @typescript-eslint/no-empty-interface
|
||||||
|
export interface ServerlessObservabilityPluginSetup {}
|
||||||
|
|
||||||
|
// eslint-disable-next-line @typescript-eslint/no-empty-interface
|
||||||
|
export interface ServerlessObservabilityPluginStart {}
|
||||||
|
|
||||||
|
export interface ServerlessObservabilityPluginSetupDependencies {
|
||||||
|
observabilityShared: ObservabilitySharedPluginSetup;
|
||||||
|
serverless: ServerlessPluginSetup;
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface ServerlessObservabilityPluginStartDependencies {
|
||||||
|
observabilityShared: ObservabilitySharedPluginStart;
|
||||||
|
serverless: ServerlessPluginStart;
|
||||||
|
}
|
23
x-pack/plugins/serverless_observability/server/config.ts
Normal file
23
x-pack/plugins/serverless_observability/server/config.ts
Normal file
|
@ -0,0 +1,23 @@
|
||||||
|
/*
|
||||||
|
* Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
|
||||||
|
* or more contributor license agreements. Licensed under the Elastic License
|
||||||
|
* 2.0; you may not use this file except in compliance with the Elastic License
|
||||||
|
* 2.0.
|
||||||
|
*/
|
||||||
|
|
||||||
|
import { schema, TypeOf } from '@kbn/config-schema';
|
||||||
|
import { PluginConfigDescriptor } from '@kbn/core/server';
|
||||||
|
|
||||||
|
export * from './types';
|
||||||
|
|
||||||
|
const configSchema = schema.object({
|
||||||
|
enabled: schema.boolean({ defaultValue: false }),
|
||||||
|
});
|
||||||
|
|
||||||
|
type ConfigType = TypeOf<typeof configSchema>;
|
||||||
|
|
||||||
|
export const config: PluginConfigDescriptor<ConfigType> = {
|
||||||
|
schema: configSchema,
|
||||||
|
};
|
||||||
|
|
||||||
|
export type ServerlessObservabilityConfig = TypeOf<typeof configSchema>;
|
23
x-pack/plugins/serverless_observability/server/index.ts
Normal file
23
x-pack/plugins/serverless_observability/server/index.ts
Normal file
|
@ -0,0 +1,23 @@
|
||||||
|
/*
|
||||||
|
* Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
|
||||||
|
* or more contributor license agreements. Licensed under the Elastic License
|
||||||
|
* 2.0; you may not use this file except in compliance with the Elastic License
|
||||||
|
* 2.0.
|
||||||
|
*/
|
||||||
|
|
||||||
|
import { PluginInitializerContext } from '@kbn/core/server';
|
||||||
|
|
||||||
|
import { ServerlessObservabilityPlugin } from './plugin';
|
||||||
|
export { config } from './config';
|
||||||
|
|
||||||
|
// This exports static code and TypeScript types,
|
||||||
|
// as well as, Kibana Platform `plugin()` initializer.
|
||||||
|
|
||||||
|
export function plugin(initializerContext: PluginInitializerContext) {
|
||||||
|
return new ServerlessObservabilityPlugin(initializerContext);
|
||||||
|
}
|
||||||
|
|
||||||
|
export type {
|
||||||
|
ServerlessObservabilityPluginSetup,
|
||||||
|
ServerlessObservabilityPluginStart,
|
||||||
|
} from './types';
|
26
x-pack/plugins/serverless_observability/server/plugin.ts
Normal file
26
x-pack/plugins/serverless_observability/server/plugin.ts
Normal file
|
@ -0,0 +1,26 @@
|
||||||
|
/*
|
||||||
|
* Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
|
||||||
|
* or more contributor license agreements. Licensed under the Elastic License
|
||||||
|
* 2.0; you may not use this file except in compliance with the Elastic License
|
||||||
|
* 2.0.
|
||||||
|
*/
|
||||||
|
|
||||||
|
import { PluginInitializerContext, Plugin } from '@kbn/core/server';
|
||||||
|
|
||||||
|
import { ServerlessObservabilityPluginSetup, ServerlessObservabilityPluginStart } from './types';
|
||||||
|
|
||||||
|
export class ServerlessObservabilityPlugin
|
||||||
|
implements Plugin<ServerlessObservabilityPluginSetup, ServerlessObservabilityPluginStart>
|
||||||
|
{
|
||||||
|
constructor(_initializerContext: PluginInitializerContext) {}
|
||||||
|
|
||||||
|
public setup() {
|
||||||
|
return {};
|
||||||
|
}
|
||||||
|
|
||||||
|
public start() {
|
||||||
|
return {};
|
||||||
|
}
|
||||||
|
|
||||||
|
public stop() {}
|
||||||
|
}
|
11
x-pack/plugins/serverless_observability/server/types.ts
Normal file
11
x-pack/plugins/serverless_observability/server/types.ts
Normal file
|
@ -0,0 +1,11 @@
|
||||||
|
/*
|
||||||
|
* Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
|
||||||
|
* or more contributor license agreements. Licensed under the Elastic License
|
||||||
|
* 2.0; you may not use this file except in compliance with the Elastic License
|
||||||
|
* 2.0.
|
||||||
|
*/
|
||||||
|
|
||||||
|
// eslint-disable-next-line @typescript-eslint/no-empty-interface
|
||||||
|
export interface ServerlessObservabilityPluginSetup {}
|
||||||
|
// eslint-disable-next-line @typescript-eslint/no-empty-interface
|
||||||
|
export interface ServerlessObservabilityPluginStart {}
|
23
x-pack/plugins/serverless_observability/tsconfig.json
Normal file
23
x-pack/plugins/serverless_observability/tsconfig.json
Normal file
|
@ -0,0 +1,23 @@
|
||||||
|
{
|
||||||
|
"extends": "../../../tsconfig.base.json",
|
||||||
|
"compilerOptions": {
|
||||||
|
"outDir": "target/types"
|
||||||
|
},
|
||||||
|
"include": [
|
||||||
|
"index.ts",
|
||||||
|
"common/**/*.ts",
|
||||||
|
"public/**/*.ts",
|
||||||
|
"public/**/*.tsx",
|
||||||
|
"server/**/*.ts",
|
||||||
|
"../../../typings/**/*"
|
||||||
|
],
|
||||||
|
"exclude": [
|
||||||
|
"target/**/*"
|
||||||
|
],
|
||||||
|
"kbn_references": [
|
||||||
|
"@kbn/core",
|
||||||
|
"@kbn/config-schema",
|
||||||
|
"@kbn/serverless",
|
||||||
|
"@kbn/observability-shared-plugin",
|
||||||
|
]
|
||||||
|
}
|
|
@ -5016,6 +5016,10 @@
|
||||||
"@kbn/server-route-repository@link:packages/kbn-server-route-repository":
|
"@kbn/server-route-repository@link:packages/kbn-server-route-repository":
|
||||||
version "0.0.0"
|
version "0.0.0"
|
||||||
uid ""
|
uid ""
|
||||||
|
|
||||||
|
"@kbn/serverless-observability@link:x-pack/plugins/serverless_observability":
|
||||||
|
version "0.0.0"
|
||||||
|
uid ""
|
||||||
|
|
||||||
"@kbn/serverless-project-switcher@link:packages/serverless/project_switcher":
|
"@kbn/serverless-project-switcher@link:packages/serverless/project_switcher":
|
||||||
version "0.0.0"
|
version "0.0.0"
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue