"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.getExecutionLogForRule = getExecutionLogForRule; exports.getGlobalExecutionLogWithAuth = getGlobalExecutionLogWithAuth; var _authorization = require("../../authorization"); var _audit_events = require("../common/audit_events"); var _get_execution_log_aggregation = require("../../lib/get_execution_log_aggregation"); var _common = require("../common"); var _get = require("./get"); /* * 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. */ async function getExecutionLogForRule(context, { id, dateStart, dateEnd, filter, page, perPage, sort }) { var _context$auditLogger2; context.logger.debug(`getExecutionLogForRule(): getting execution log for rule ${id}`); const rule = await (0, _get.get)(context, { id, includeLegacyId: true }); try { // Make sure user has access to this rule await context.authorization.ensureAuthorized({ ruleTypeId: rule.alertTypeId, consumer: rule.consumer, operation: _authorization.ReadOperations.GetExecutionLog, entity: _authorization.AlertingAuthorizationEntity.Rule }); } catch (error) { var _context$auditLogger; (_context$auditLogger = context.auditLogger) === null || _context$auditLogger === void 0 ? void 0 : _context$auditLogger.log((0, _audit_events.ruleAuditEvent)({ action: _audit_events.RuleAuditAction.GET_EXECUTION_LOG, savedObject: { type: 'alert', id }, error })); throw error; } (_context$auditLogger2 = context.auditLogger) === null || _context$auditLogger2 === void 0 ? void 0 : _context$auditLogger2.log((0, _audit_events.ruleAuditEvent)({ action: _audit_events.RuleAuditAction.GET_EXECUTION_LOG, savedObject: { type: 'alert', id } })); // default duration of instance summary is 60 * rule interval const dateNow = new Date(); const parsedDateStart = (0, _common.parseDate)(dateStart, 'dateStart', dateNow); const parsedDateEnd = (0, _common.parseDate)(dateEnd, 'dateEnd', dateNow); const eventLogClient = await context.getEventLogClient(); try { const aggResult = await eventLogClient.aggregateEventsBySavedObjectIds('alert', [id], { start: parsedDateStart.toISOString(), end: parsedDateEnd.toISOString(), aggs: (0, _get_execution_log_aggregation.getExecutionLogAggregation)({ filter, page, perPage, sort }) }, rule.legacyId !== null ? [rule.legacyId] : undefined); return (0, _get_execution_log_aggregation.formatExecutionLogResult)(aggResult); } catch (err) { context.logger.debug(`rulesClient.getExecutionLogForRule(): error searching event log for rule ${id}: ${err.message}`); throw err; } } async function getGlobalExecutionLogWithAuth(context, { dateStart, dateEnd, filter, page, perPage, sort, namespaces }) { var _context$auditLogger4; context.logger.debug(`getGlobalExecutionLogWithAuth(): getting global execution log`); let authorizationTuple; try { authorizationTuple = await context.authorization.getFindAuthorizationFilter(_authorization.AlertingAuthorizationEntity.Alert, { type: _authorization.AlertingAuthorizationFilterType.KQL, fieldNames: { ruleTypeId: 'kibana.alert.rule.rule_type_id', consumer: 'kibana.alert.rule.consumer' } }); } catch (error) { var _context$auditLogger3; (_context$auditLogger3 = context.auditLogger) === null || _context$auditLogger3 === void 0 ? void 0 : _context$auditLogger3.log((0, _audit_events.ruleAuditEvent)({ action: _audit_events.RuleAuditAction.GET_GLOBAL_EXECUTION_LOG, error })); throw error; } (_context$auditLogger4 = context.auditLogger) === null || _context$auditLogger4 === void 0 ? void 0 : _context$auditLogger4.log((0, _audit_events.ruleAuditEvent)({ action: _audit_events.RuleAuditAction.GET_GLOBAL_EXECUTION_LOG })); const dateNow = new Date(); const parsedDateStart = (0, _common.parseDate)(dateStart, 'dateStart', dateNow); const parsedDateEnd = (0, _common.parseDate)(dateEnd, 'dateEnd', dateNow); const eventLogClient = await context.getEventLogClient(); try { const aggResult = await eventLogClient.aggregateEventsWithAuthFilter('alert', authorizationTuple.filter, { start: parsedDateStart.toISOString(), end: parsedDateEnd.toISOString(), aggs: (0, _get_execution_log_aggregation.getExecutionLogAggregation)({ filter, page, perPage, sort }) }, namespaces); return (0, _get_execution_log_aggregation.formatExecutionLogResult)(aggResult); } catch (err) { context.logger.debug(`rulesClient.getGlobalExecutionLogWithAuth(): error searching global event log: ${err.message}`); throw err; } }