[Alerting] Remove unnecessary call on every kibana load (#116572)
This commit is contained in:
parent
05cfe434f0
commit
4492a107bd
|
@ -42,7 +42,7 @@ describe('AlertNavigationRegistry', () => {
|
|||
test('returns true for registered consumer & alert types handlers', () => {
|
||||
const registry = new AlertNavigationRegistry();
|
||||
const alertType = mockAlertType('index_threshold');
|
||||
registry.register('siem', alertType, handler);
|
||||
registry.register('siem', alertType.id, handler);
|
||||
expect(registry.has('siem', alertType)).toEqual(true);
|
||||
});
|
||||
|
||||
|
@ -72,7 +72,7 @@ describe('AlertNavigationRegistry', () => {
|
|||
test('registers a handler by consumer & Alert Type', () => {
|
||||
const registry = new AlertNavigationRegistry();
|
||||
const alertType = mockAlertType('index_threshold');
|
||||
registry.register('siem', alertType, handler);
|
||||
registry.register('siem', alertType.id, handler);
|
||||
expect(registry.has('siem', alertType)).toEqual(true);
|
||||
});
|
||||
|
||||
|
@ -80,11 +80,11 @@ describe('AlertNavigationRegistry', () => {
|
|||
const registry = new AlertNavigationRegistry();
|
||||
|
||||
const indexThresholdAlertType = mockAlertType('index_threshold');
|
||||
registry.register('siem', indexThresholdAlertType, handler);
|
||||
registry.register('siem', indexThresholdAlertType.id, handler);
|
||||
expect(registry.has('siem', indexThresholdAlertType)).toEqual(true);
|
||||
|
||||
const geoAlertType = mockAlertType('geogrid');
|
||||
registry.register('siem', geoAlertType, handler);
|
||||
registry.register('siem', geoAlertType.id, handler);
|
||||
expect(registry.has('siem', geoAlertType)).toEqual(true);
|
||||
});
|
||||
|
||||
|
@ -92,19 +92,19 @@ describe('AlertNavigationRegistry', () => {
|
|||
const registry = new AlertNavigationRegistry();
|
||||
|
||||
const indexThresholdAlertType = mockAlertType('geogrid');
|
||||
registry.register('siem', indexThresholdAlertType, handler);
|
||||
registry.register('siem', indexThresholdAlertType.id, handler);
|
||||
expect(registry.has('siem', indexThresholdAlertType)).toEqual(true);
|
||||
|
||||
registry.register('apm', indexThresholdAlertType, handler);
|
||||
registry.register('apm', indexThresholdAlertType.id, handler);
|
||||
expect(registry.has('apm', indexThresholdAlertType)).toEqual(true);
|
||||
});
|
||||
|
||||
test('throws if an existing handler is registered', () => {
|
||||
const registry = new AlertNavigationRegistry();
|
||||
const alertType = mockAlertType('index_threshold');
|
||||
registry.register('siem', alertType, handler);
|
||||
registry.register('siem', alertType.id, handler);
|
||||
expect(() => {
|
||||
registry.register('siem', alertType, handler);
|
||||
registry.register('siem', alertType.id, handler);
|
||||
}).toThrowErrorMatchingInlineSnapshot(
|
||||
`"Navigation for Alert type \\"index_threshold\\" within \\"siem\\" is already registered."`
|
||||
);
|
||||
|
@ -125,7 +125,7 @@ describe('AlertNavigationRegistry', () => {
|
|||
expect(registry.hasDefaultHandler('siem')).toEqual(true);
|
||||
|
||||
const geoAlertType = mockAlertType('geogrid');
|
||||
registry.register('siem', geoAlertType, handler);
|
||||
registry.register('siem', geoAlertType.id, handler);
|
||||
expect(registry.has('siem', geoAlertType)).toEqual(true);
|
||||
});
|
||||
|
||||
|
@ -149,7 +149,7 @@ describe('AlertNavigationRegistry', () => {
|
|||
}
|
||||
|
||||
const indexThresholdAlertType = mockAlertType('indexThreshold');
|
||||
registry.register('siem', indexThresholdAlertType, indexThresholdHandler);
|
||||
registry.register('siem', indexThresholdAlertType.id, indexThresholdHandler);
|
||||
expect(registry.get('siem', indexThresholdAlertType)).toEqual(indexThresholdHandler);
|
||||
});
|
||||
|
||||
|
@ -167,7 +167,7 @@ describe('AlertNavigationRegistry', () => {
|
|||
test('returns default handlers by consumer when there are other alert type handler', () => {
|
||||
const registry = new AlertNavigationRegistry();
|
||||
|
||||
registry.register('siem', mockAlertType('indexThreshold'), () => ({}));
|
||||
registry.register('siem', mockAlertType('indexThreshold').id, () => ({}));
|
||||
|
||||
function defaultHandler(alert: SanitizedAlert) {
|
||||
return {};
|
||||
|
|
|
@ -15,11 +15,11 @@ export class AlertNavigationRegistry {
|
|||
new Map();
|
||||
|
||||
public has(consumer: string, alertType: AlertType) {
|
||||
return this.hasTypedHandler(consumer, alertType) || this.hasDefaultHandler(consumer);
|
||||
return this.hasTypedHandler(consumer, alertType.id) || this.hasDefaultHandler(consumer);
|
||||
}
|
||||
|
||||
public hasTypedHandler(consumer: string, alertType: AlertType) {
|
||||
return this.alertNavigations.get(consumer)?.has(alertType.id) ?? false;
|
||||
public hasTypedHandler(consumer: string, ruleTypeId: string) {
|
||||
return this.alertNavigations.get(consumer)?.has(ruleTypeId) ?? false;
|
||||
}
|
||||
|
||||
public hasDefaultHandler(consumer: string) {
|
||||
|
@ -50,14 +50,14 @@ export class AlertNavigationRegistry {
|
|||
consumerNavigations.set(DEFAULT_HANDLER, handler);
|
||||
}
|
||||
|
||||
public register(consumer: string, alertType: AlertType, handler: AlertNavigationHandler) {
|
||||
if (this.hasTypedHandler(consumer, alertType)) {
|
||||
public register(consumer: string, ruleTypeId: string, handler: AlertNavigationHandler) {
|
||||
if (this.hasTypedHandler(consumer, ruleTypeId)) {
|
||||
throw new Error(
|
||||
i18n.translate('xpack.alerting.alertNavigationRegistry.register.duplicateNavigationError', {
|
||||
defaultMessage:
|
||||
'Navigation for Alert type "{alertType}" within "{consumer}" is already registered.',
|
||||
values: {
|
||||
alertType: alertType.id,
|
||||
alertType: ruleTypeId,
|
||||
consumer,
|
||||
},
|
||||
})
|
||||
|
@ -67,7 +67,7 @@ export class AlertNavigationRegistry {
|
|||
const consumerNavigations =
|
||||
this.alertNavigations.get(consumer) ?? this.createConsumerNavigation(consumer);
|
||||
|
||||
consumerNavigations.set(alertType.id, handler);
|
||||
consumerNavigations.set(ruleTypeId, handler);
|
||||
}
|
||||
|
||||
public get(consumer: string, alertType: AlertType): AlertNavigationHandler {
|
||||
|
|
|
@ -59,15 +59,7 @@ export class AlertingPublicPlugin implements Plugin<PluginSetupContract, PluginS
|
|||
ruleTypeId: string,
|
||||
handler: AlertNavigationHandler
|
||||
) => {
|
||||
const alertType = await loadAlertType({ http: core.http, id: ruleTypeId });
|
||||
if (!alertType) {
|
||||
// eslint-disable-next-line no-console
|
||||
console.log(
|
||||
`Unable to register navigation for rule type "${ruleTypeId}" because it is not registered on the server side.`
|
||||
);
|
||||
return;
|
||||
}
|
||||
this.alertNavigationRegistry!.register(applicationId, alertType, handler);
|
||||
this.alertNavigationRegistry!.register(applicationId, ruleTypeId, handler);
|
||||
};
|
||||
|
||||
const registerDefaultNavigation = async (
|
||||
|
|
Loading…
Reference in a new issue