[SLO] Fix slo manifest (#187139)

## Summary

Fix slo manifest !!

`node scripts/plugin_check --dependencies slo
`
<img width="1007" alt="image"
src="9e710897-6e65-4818-9c51-a23ea18b2a5c">
This commit is contained in:
Shahzad 2024-07-22 12:06:21 +02:00 committed by GitHub
parent dd42834209
commit d9c651f20a
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
10 changed files with 36 additions and 62 deletions

View file

@ -15,8 +15,6 @@
"alerting", "alerting",
"cases", "cases",
"charts", "charts",
"contentManagement",
"controls",
"dashboard", "dashboard",
"data", "data",
"dataViews", "dataViews",
@ -27,7 +25,6 @@
"observability", "observability",
"observabilityShared", "observabilityShared",
"ruleRegistry", "ruleRegistry",
"security",
"taskManager", "taskManager",
"triggersActionsUi", "triggersActionsUi",
"share", "share",
@ -37,7 +34,7 @@
"presentationUtil", "presentationUtil",
"features", "features",
"licensing", "licensing",
"usageCollection", "usageCollection"
], ],
"optionalPlugins": [ "optionalPlugins": [
"cloud", "cloud",
@ -47,6 +44,7 @@
"observabilityAIAssistant" "observabilityAIAssistant"
], ],
"requiredBundles": [ "requiredBundles": [
"controls",
"kibanaReact", "kibanaReact",
"kibanaUtils", "kibanaUtils",
"unifiedSearch", "unifiedSearch",

View file

@ -4,7 +4,7 @@
* 2.0; you may not use this file except in compliance with the Elastic License * 2.0; you may not use this file except in compliance with the Elastic License
* 2.0. * 2.0.
*/ */
import { DefaultEmbeddableApi, EmbeddableInput } from '@kbn/embeddable-plugin/public'; import { DefaultEmbeddableApi } from '@kbn/embeddable-plugin/public';
import { import {
type CoreStart, type CoreStart,
IUiSettingsClient, IUiSettingsClient,
@ -15,7 +15,6 @@ import { TriggersAndActionsUIPublicPluginStart } from '@kbn/triggers-actions-ui-
import type { DataPublicPluginStart } from '@kbn/data-plugin/public'; import type { DataPublicPluginStart } from '@kbn/data-plugin/public';
import { CasesPublicStart } from '@kbn/cases-plugin/public'; import { CasesPublicStart } from '@kbn/cases-plugin/public';
import { SettingsStart } from '@kbn/core-ui-settings-browser'; import { SettingsStart } from '@kbn/core-ui-settings-browser';
import { SecurityPluginStart } from '@kbn/security-plugin/public';
import type { ChartsPluginStart } from '@kbn/charts-plugin/public'; import type { ChartsPluginStart } from '@kbn/charts-plugin/public';
import type { UiActionsStart } from '@kbn/ui-actions-plugin/public'; import type { UiActionsStart } from '@kbn/ui-actions-plugin/public';
import { ServerlessPluginStart } from '@kbn/serverless/public'; import { ServerlessPluginStart } from '@kbn/serverless/public';
@ -23,7 +22,6 @@ import {
SerializedTitles, SerializedTitles,
PublishesWritablePanelTitle, PublishesWritablePanelTitle,
PublishesPanelTitle, PublishesPanelTitle,
EmbeddableApiContext,
HasEditCapabilities, HasEditCapabilities,
} from '@kbn/presentation-publishing'; } from '@kbn/presentation-publishing';
import { ObservabilityPublicStart } from '@kbn/observability-plugin/public'; import { ObservabilityPublicStart } from '@kbn/observability-plugin/public';
@ -40,8 +38,6 @@ export interface EmbeddableSloProps {
showAllGroupByInstances?: boolean; showAllGroupByInstances?: boolean;
} }
export type SloAlertsEmbeddableInput = EmbeddableInput & EmbeddableSloProps;
export type SloAlertsEmbeddableState = SerializedTitles & EmbeddableSloProps; export type SloAlertsEmbeddableState = SerializedTitles & EmbeddableSloProps;
export type SloAlertsApi = DefaultEmbeddableApi<SloAlertsEmbeddableState> & export type SloAlertsApi = DefaultEmbeddableApi<SloAlertsEmbeddableState> &
@ -55,18 +51,6 @@ export interface HasSloAlertsConfig {
updateSloAlertsConfig: (next: EmbeddableSloProps) => void; updateSloAlertsConfig: (next: EmbeddableSloProps) => void;
} }
export const apiHasSloAlertsConfig = (api: unknown | null): api is HasSloAlertsConfig => {
return Boolean(
api &&
typeof (api as HasSloAlertsConfig).getSloAlertsConfig === 'function' &&
typeof (api as HasSloAlertsConfig).updateSloAlertsConfig === 'function'
);
};
export type SloAlertsEmbeddableActionContext = EmbeddableApiContext & {
embeddable: SloAlertsApi;
};
export interface SloEmbeddableDeps { export interface SloEmbeddableDeps {
uiSettings: IUiSettingsClient; uiSettings: IUiSettingsClient;
http: CoreStart['http']; http: CoreStart['http'];
@ -78,7 +62,6 @@ export interface SloEmbeddableDeps {
notifications: NotificationsStart; notifications: NotificationsStart;
cases: CasesPublicStart; cases: CasesPublicStart;
settings: SettingsStart; settings: SettingsStart;
security: SecurityPluginStart;
charts: ChartsPluginStart; charts: ChartsPluginStart;
uiActions: UiActionsStart; uiActions: UiActionsStart;
serverless?: ServerlessPluginStart; serverless?: ServerlessPluginStart;

View file

@ -104,11 +104,15 @@ export function EventsChartPanel({ slo, range, selectedTabId, onBrushed }: Props
<EuiFlexItem grow={0}> <EuiFlexItem grow={0}>
<EuiLink <EuiLink
color="text" color="text"
href={getDiscoverLink(discover, slo, { href={getDiscoverLink(
from: 'now-24h', slo,
to: 'now', {
mode: 'relative', from: 'now-24h',
})} to: 'now',
mode: 'relative',
},
discover
)}
data-test-subj="sloDetailDiscoverLink" data-test-subj="sloDetailDiscoverLink"
> >
<EuiIcon type="sortRight" style={{ marginRight: '4px' }} /> <EuiIcon type="sortRight" style={{ marginRight: '4px' }} />

View file

@ -16,12 +16,12 @@ import { EuiResizableContainer, EuiProgress, EuiCallOut, EuiSpacer } from '@elas
import { buildFilter, FILTERS, TimeRange } from '@kbn/es-query'; import { buildFilter, FILTERS, TimeRange } from '@kbn/es-query';
import { FieldPath, useFormContext } from 'react-hook-form'; import { FieldPath, useFormContext } from 'react-hook-form';
import { Serializable } from '@kbn/utility-types'; import { Serializable } from '@kbn/utility-types';
import { useFieldSidebar } from './use_field_sidebar';
import { useTableDocs } from './use_table_docs';
import { SearchBarProps } from './query_builder';
import { QuerySearchBar } from './query_search_bar';
import { CreateSLOForm } from '../../types';
import { useKibana } from '../../../../utils/kibana_react'; import { useKibana } from '../../../../utils/kibana_react';
import { CreateSLOForm } from '../../types';
import { QuerySearchBar } from './query_search_bar';
import { SearchBarProps } from './query_builder';
import { useTableDocs } from './use_table_docs';
import { useFieldSidebar } from './use_field_sidebar';
export function DocumentsTable({ export function DocumentsTable({
dataView, dataView,
@ -131,7 +131,15 @@ export function DocumentsTable({
} }
} }
}} }}
services={services} services={{
theme: services.theme,
fieldFormats: services.fieldFormats,
uiSettings: services.uiSettings,
dataViewFieldEditor: services.dataViewFieldEditor,
toastNotifications: services.notifications.toasts,
storage: services.storage,
data: services.data,
}}
ariaLabelledBy={i18n.translate('xpack.slo.edit.documentsTableAriaLabel', { ariaLabelledBy={i18n.translate('xpack.slo.edit.documentsTableAriaLabel', {
defaultMessage: 'Documents table', defaultMessage: 'Documents table',
})} })}

View file

@ -89,7 +89,7 @@ export function GoodBadEventsChart({
to: moment(datum.x).add(intervalInMilliseconds, 'ms').toISOString(), to: moment(datum.x).add(intervalInMilliseconds, 'ms').toISOString(),
mode: 'absolute' as const, mode: 'absolute' as const,
}; };
openInDiscover(discover, slo, isBad, !isBad, timeRange); openInDiscover(slo, isBad, !isBad, timeRange, discover);
} }
}; };

View file

@ -56,7 +56,6 @@ export class SloPlugin
const mount = async (params: AppMountParameters<unknown>) => { const mount = async (params: AppMountParameters<unknown>) => {
const { renderApp } = await import('./application'); const { renderApp } = await import('./application');
const [coreStart, pluginsStart] = await coreSetup.getStartServices(); const [coreStart, pluginsStart] = await coreSetup.getStartServices();
const { ruleTypeRegistry, actionTypeRegistry } = pluginsStart.triggersActionsUi;
const { observabilityRuleTypeRegistry } = pluginsStart.observability; const { observabilityRuleTypeRegistry } = pluginsStart.observability;
return renderApp({ return renderApp({
@ -67,7 +66,7 @@ export class SloPlugin
kibanaVersion, kibanaVersion,
usageCollection: pluginsSetup.usageCollection, usageCollection: pluginsSetup.usageCollection,
ObservabilityPageTemplate: pluginsStart.observabilityShared.navigation.PageTemplate, ObservabilityPageTemplate: pluginsStart.observabilityShared.navigation.PageTemplate,
plugins: { ...pluginsStart, ruleTypeRegistry, actionTypeRegistry }, plugins: pluginsStart,
isServerless: !!pluginsStart.serverless, isServerless: !!pluginsStart.serverless,
experimentalFeatures: this.experimentalFeatures, experimentalFeatures: this.experimentalFeatures,
}); });
@ -156,8 +155,6 @@ export class SloPlugin
public start(coreStart: CoreStart, pluginsStart: SloPublicPluginsStart) { public start(coreStart: CoreStart, pluginsStart: SloPublicPluginsStart) {
const kibanaVersion = this.initContext.env.packageInfo.version; const kibanaVersion = this.initContext.env.packageInfo.version;
const { ruleTypeRegistry, actionTypeRegistry } = pluginsStart.triggersActionsUi;
return { return {
getCreateSLOFlyout: getCreateSLOFlyoutLazy({ getCreateSLOFlyout: getCreateSLOFlyoutLazy({
core: coreStart, core: coreStart,
@ -165,7 +162,7 @@ export class SloPlugin
kibanaVersion, kibanaVersion,
observabilityRuleTypeRegistry: pluginsStart.observability.observabilityRuleTypeRegistry, observabilityRuleTypeRegistry: pluginsStart.observability.observabilityRuleTypeRegistry,
ObservabilityPageTemplate: pluginsStart.observabilityShared.navigation.PageTemplate, ObservabilityPageTemplate: pluginsStart.observabilityShared.navigation.PageTemplate,
plugins: { ...pluginsStart, ruleTypeRegistry, actionTypeRegistry }, plugins: pluginsStart,
isServerless: !!pluginsStart.serverless, isServerless: !!pluginsStart.serverless,
experimentalFeatures: this.experimentalFeatures, experimentalFeatures: this.experimentalFeatures,
}), }),

View file

@ -4,7 +4,6 @@
* 2.0; you may not use this file except in compliance with the Elastic License * 2.0; you may not use this file except in compliance with the Elastic License
* 2.0. * 2.0.
*/ */
import { ToastsStart } from '@kbn/core/public';
import { import {
ObservabilityPublicSetup, ObservabilityPublicSetup,
ObservabilityPublicStart, ObservabilityPublicStart,
@ -22,7 +21,6 @@ import type {
TriggersAndActionsUIPublicPluginSetup, TriggersAndActionsUIPublicPluginSetup,
TriggersAndActionsUIPublicPluginStart, TriggersAndActionsUIPublicPluginStart,
} from '@kbn/triggers-actions-ui-plugin/public'; } from '@kbn/triggers-actions-ui-plugin/public';
import type { NavigationPublicPluginStart } from '@kbn/navigation-plugin/public';
import type { LicensingPluginSetup } from '@kbn/licensing-plugin/public'; import type { LicensingPluginSetup } from '@kbn/licensing-plugin/public';
import { SharePluginSetup, SharePluginStart } from '@kbn/share-plugin/public'; import { SharePluginSetup, SharePluginStart } from '@kbn/share-plugin/public';
import { LicensingPluginStart } from '@kbn/licensing-plugin/public'; import { LicensingPluginStart } from '@kbn/licensing-plugin/public';
@ -31,10 +29,6 @@ import type { PresentationUtilPluginStart } from '@kbn/presentation-util-plugin/
import { ServerlessPluginSetup, ServerlessPluginStart } from '@kbn/serverless/public'; import { ServerlessPluginSetup, ServerlessPluginStart } from '@kbn/serverless/public';
import type { DataViewsPublicPluginStart } from '@kbn/data-views-plugin/public'; import type { DataViewsPublicPluginStart } from '@kbn/data-views-plugin/public';
import type { DataPublicPluginSetup, DataPublicPluginStart } from '@kbn/data-plugin/public'; import type { DataPublicPluginSetup, DataPublicPluginStart } from '@kbn/data-plugin/public';
import {
ActionTypeRegistryContract,
RuleTypeRegistryContract,
} from '@kbn/triggers-actions-ui-plugin/public';
import type { CloudStart } from '@kbn/cloud-plugin/public'; import type { CloudStart } from '@kbn/cloud-plugin/public';
import type { import type {
UsageCollectionSetup, UsageCollectionSetup,
@ -44,12 +38,10 @@ import {
ObservabilityAIAssistantPublicSetup, ObservabilityAIAssistantPublicSetup,
ObservabilityAIAssistantPublicStart, ObservabilityAIAssistantPublicStart,
} from '@kbn/observability-ai-assistant-plugin/public'; } from '@kbn/observability-ai-assistant-plugin/public';
import { SecurityPluginStart } from '@kbn/security-plugin/public';
import { SpacesPluginStart } from '@kbn/spaces-plugin/public'; import { SpacesPluginStart } from '@kbn/spaces-plugin/public';
import type { LensPublicStart } from '@kbn/lens-plugin/public'; import type { LensPublicStart } from '@kbn/lens-plugin/public';
import { DataViewEditorStart } from '@kbn/data-view-editor-plugin/public'; import { DataViewEditorStart } from '@kbn/data-view-editor-plugin/public';
import { UnifiedSearchPublicPluginStart } from '@kbn/unified-search-plugin/public'; import { UnifiedSearchPublicPluginStart } from '@kbn/unified-search-plugin/public';
import type { IUiSettingsClient } from '@kbn/core/public';
import { CasesPublicStart } from '@kbn/cases-plugin/public'; import { CasesPublicStart } from '@kbn/cases-plugin/public';
import type { DiscoverStart } from '@kbn/discover-plugin/public'; import type { DiscoverStart } from '@kbn/discover-plugin/public';
import { DataViewFieldEditorStart } from '@kbn/data-view-field-editor-plugin/public'; import { DataViewFieldEditorStart } from '@kbn/data-view-field-editor-plugin/public';
@ -67,13 +59,12 @@ export interface SloPublicPluginsSetup {
embeddable: EmbeddableSetup; embeddable: EmbeddableSetup;
uiActions: UiActionsSetup; uiActions: UiActionsSetup;
serverless?: ServerlessPluginSetup; serverless?: ServerlessPluginSetup;
presentationUtil?: PresentationUtilPluginStart; presentationUtil: PresentationUtilPluginStart;
observabilityAIAssistant?: ObservabilityAIAssistantPublicSetup; observabilityAIAssistant?: ObservabilityAIAssistantPublicSetup;
usageCollection: UsageCollectionSetup; usageCollection: UsageCollectionSetup;
} }
export interface SloPublicPluginsStart { export interface SloPublicPluginsStart {
actionTypeRegistry: ActionTypeRegistryContract;
aiops: AiopsPluginStart; aiops: AiopsPluginStart;
cases: CasesPublicStart; cases: CasesPublicStart;
cloud?: CloudStart; cloud?: CloudStart;
@ -83,8 +74,6 @@ export interface SloPublicPluginsStart {
observability: ObservabilityPublicStart; observability: ObservabilityPublicStart;
observabilityShared: ObservabilitySharedPluginStart; observabilityShared: ObservabilitySharedPluginStart;
triggersActionsUi: TriggersAndActionsUIPublicPluginStart; triggersActionsUi: TriggersAndActionsUIPublicPluginStart;
navigation: NavigationPublicPluginStart;
security: SecurityPluginStart;
spaces?: SpacesPluginStart; spaces?: SpacesPluginStart;
share: SharePluginStart; share: SharePluginStart;
licensing: LicensingPluginStart; licensing: LicensingPluginStart;
@ -94,16 +83,13 @@ export interface SloPublicPluginsStart {
serverless?: ServerlessPluginStart; serverless?: ServerlessPluginStart;
data: DataPublicPluginStart; data: DataPublicPluginStart;
dataViews: DataViewsPublicPluginStart; dataViews: DataViewsPublicPluginStart;
ruleTypeRegistry: RuleTypeRegistryContract;
observabilityAIAssistant?: ObservabilityAIAssistantPublicStart; observabilityAIAssistant?: ObservabilityAIAssistantPublicStart;
lens: LensPublicStart; lens: LensPublicStart;
charts: ChartsPluginStart; charts: ChartsPluginStart;
unifiedSearch: UnifiedSearchPublicPluginStart; unifiedSearch: UnifiedSearchPublicPluginStart;
uiSettings: IUiSettingsClient;
usageCollection: UsageCollectionStart; usageCollection: UsageCollectionStart;
discover: DiscoverStart; discover?: DiscoverStart;
dataViewFieldEditor: DataViewFieldEditorStart; dataViewFieldEditor: DataViewFieldEditorStart;
toastNotifications: ToastsStart;
} }
export type SloPublicSetup = ReturnType<SloPlugin['setup']>; export type SloPublicSetup = ReturnType<SloPlugin['setup']>;

View file

@ -145,20 +145,20 @@ function createDiscoverLocator(
} }
export function getDiscoverLink( export function getDiscoverLink(
discover: DiscoverStart,
slo: SLOWithSummaryResponse, slo: SLOWithSummaryResponse,
timeRange: TimeRange timeRange: TimeRange,
discover?: DiscoverStart
) { ) {
const config = createDiscoverLocator(slo, false, false, timeRange); const config = createDiscoverLocator(slo, false, false, timeRange);
return discover?.locator?.getRedirectUrl(config); return discover?.locator?.getRedirectUrl(config);
} }
export function openInDiscover( export function openInDiscover(
discover: DiscoverStart,
slo: SLOWithSummaryResponse, slo: SLOWithSummaryResponse,
showBad = false, showBad = false,
showGood = false, showGood = false,
timeRange?: TimeRange timeRange?: TimeRange,
discover?: DiscoverStart
) { ) {
const config = createDiscoverLocator(slo, showBad, showGood, timeRange); const config = createDiscoverLocator(slo, showBad, showGood, timeRange);
discover?.locator?.navigate(config); discover?.locator?.navigate(config);

View file

@ -53,7 +53,7 @@ export interface PluginSetup {
taskManager: TaskManagerSetupContract; taskManager: TaskManagerSetupContract;
spaces?: SpacesPluginSetup; spaces?: SpacesPluginSetup;
cloud?: CloudSetup; cloud?: CloudSetup;
usageCollection?: UsageCollectionSetup; usageCollection: UsageCollectionSetup;
} }
export interface PluginStart { export interface PluginStart {

View file

@ -17,7 +17,6 @@
"@kbn/i18n-react", "@kbn/i18n-react",
"@kbn/shared-ux-router", "@kbn/shared-ux-router",
"@kbn/core", "@kbn/core",
"@kbn/navigation-plugin",
"@kbn/translations-plugin", "@kbn/translations-plugin",
"@kbn/rule-data-utils", "@kbn/rule-data-utils",
"@kbn/triggers-actions-ui-plugin", "@kbn/triggers-actions-ui-plugin",
@ -38,7 +37,6 @@
"@kbn/cases-plugin", "@kbn/cases-plugin",
"@kbn/data-plugin", "@kbn/data-plugin",
"@kbn/core-ui-settings-browser", "@kbn/core-ui-settings-browser",
"@kbn/security-plugin",
"@kbn/charts-plugin", "@kbn/charts-plugin",
"@kbn/ui-actions-plugin", "@kbn/ui-actions-plugin",
"@kbn/serverless", "@kbn/serverless",