"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); Object.defineProperty(exports, "__esModule", { value: true }); exports.TaskRunMetricsAggregator = void 0; var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty")); var _result_type = require("../lib/result_type"); var _success_rate_counter = require("./success_rate_counter"); /* * 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. */ const taskTypeGrouping = new Set(['alerting:', 'actions:']); class TaskRunMetricsAggregator { constructor() { (0, _defineProperty2.default)(this, "taskRunSuccessRate", new _success_rate_counter.SuccessRateCounter()); (0, _defineProperty2.default)(this, "taskRunCounter", new Map()); } initialMetric() { return { overall: this.taskRunSuccessRate.initialMetric(), by_type: {} }; } collect() { return { overall: this.taskRunSuccessRate.get(), by_type: this.collectTaskTypeEntries() }; } reset() { this.taskRunSuccessRate.reset(); for (const taskType of this.taskRunCounter.keys()) { this.taskRunCounter.get(taskType).reset(); } } processTaskLifecycleEvent(taskEvent) { var _this$taskRunCounter$; const { task } = (0, _result_type.unwrap)(taskEvent.event); const taskType = task.taskType; const taskTypeSuccessRate = (_this$taskRunCounter$ = this.taskRunCounter.get(taskType)) !== null && _this$taskRunCounter$ !== void 0 ? _this$taskRunCounter$ : new _success_rate_counter.SuccessRateCounter(); const success = (0, _result_type.isOk)(taskEvent.event); this.taskRunSuccessRate.increment(success); taskTypeSuccessRate.increment(success); this.taskRunCounter.set(taskType, taskTypeSuccessRate); const taskTypeGroup = this.getTaskTypeGroup(taskType); if (taskTypeGroup) { var _this$taskRunCounter$2; const taskTypeGroupSuccessRate = (_this$taskRunCounter$2 = this.taskRunCounter.get(taskTypeGroup)) !== null && _this$taskRunCounter$2 !== void 0 ? _this$taskRunCounter$2 : new _success_rate_counter.SuccessRateCounter(); taskTypeGroupSuccessRate.increment(success); this.taskRunCounter.set(taskTypeGroup, taskTypeGroupSuccessRate); } } collectTaskTypeEntries() { const collected = {}; for (const [key, value] of this.taskRunCounter) { collected[key] = value.get(); } return collected; } getTaskTypeGroup(taskType) { for (const group of taskTypeGrouping) { if (taskType.startsWith(group)) { return group.replaceAll(':', ''); } } } } exports.TaskRunMetricsAggregator = TaskRunMetricsAggregator;