apps/firelens-stability/lib/helpers/metric-alarm-list-processor.ts (19 lines of code) (raw):
import { putMetricAlarm } from "../cloud/cloudwatch.js";
import { cascadeConfigurationLists, cascadeLists } from "../utils/config-utils.js";
export async function processMetricAlarmsList(testCases: ITestCase[]) {
/* Combine the lists */
const metricAlarmSeeds = generateMetricAlarmSeeds(testCases);
/* Convert to alarms */
await Promise.all(metricAlarmSeeds.map(seed => {
console.log(`🔔 Create alarm: ${seed.name}`);
return putMetricAlarm(seed);
}));
}
export function generateMetricAlarmSeeds(testCases: ITestCase[]) : IMetricAlarmSeed[] {
/* Combine the lists */
const metricAlarmsLists = testCases.map(tc => tc.config["lists.metricAlarms"] ?? []);
const metricAlarmsCascade = cascadeLists(metricAlarmsLists);
/* Get dashboards */
const metricAlarmSeeds: IMetricAlarmSeed[] = metricAlarmsCascade.map(mac => ({
name: mac.name,
config: mac.config,
region: testCases[0].config.region,
}));
return metricAlarmSeeds;
}