Skip to content

Commit a1bef57

Browse files
committed
feat: handle the case of no matchingIncident found
1 parent 49998a5 commit a1bef57

File tree

2 files changed

+31
-62
lines changed

2 files changed

+31
-62
lines changed

web/src/components/Incidents/processAlerts.spec.ts

Lines changed: 26 additions & 58 deletions
Original file line numberDiff line numberDiff line change
@@ -319,8 +319,6 @@ describe('convertToAlerts', () => {
319319
alertname: 'Alert2',
320320
namespace: 'ns2',
321321
severity: 'warning',
322-
component: 'comp2',
323-
layer: 'layer2',
324322
name: 'name2',
325323
alertstate: 'firing',
326324
},
@@ -331,8 +329,6 @@ describe('convertToAlerts', () => {
331329
alertname: 'Alert1',
332330
namespace: 'ns1',
333331
severity: 'critical',
334-
component: 'comp1',
335-
layer: 'layer1',
336332
name: 'name1',
337333
alertstate: 'firing',
338334
},
@@ -343,13 +339,17 @@ describe('convertToAlerts', () => {
343339
const incidents: Array<Partial<Incident>> = [
344340
{
345341
group_id: 'incident1',
342+
component: 'comp1',
343+
layer: 'layer1',
346344
src_alertname: 'Alert1',
347345
src_namespace: 'ns1',
348346
src_severity: 'critical',
349347
values: [[nowSeconds - 3600, '2']],
350348
},
351349
{
352350
group_id: 'incident2',
351+
component: 'comp2',
352+
layer: 'layer2',
353353
src_alertname: 'Alert2',
354354
src_namespace: 'ns2',
355355
src_severity: 'warning',
@@ -370,8 +370,6 @@ describe('convertToAlerts', () => {
370370
alertname: 'Alert1',
371371
namespace: 'ns1',
372372
severity: 'critical',
373-
component: 'comp1',
374-
layer: 'layer1',
375373
name: 'name1',
376374
alertstate: 'firing',
377375
},
@@ -382,8 +380,6 @@ describe('convertToAlerts', () => {
382380
alertname: 'Alert2',
383381
namespace: 'ns2',
384382
severity: 'warning',
385-
component: 'comp2',
386-
layer: 'layer2',
387383
name: 'name2',
388384
alertstate: 'firing',
389385
},
@@ -393,10 +389,22 @@ describe('convertToAlerts', () => {
393389

394390
const incidents: Array<Partial<Incident>> = [
395391
{
396-
values: [
397-
[nowSeconds - 3600, '2'],
398-
[nowSeconds - 1800, '1'],
399-
],
392+
group_id: 'incident1',
393+
src_alertname: 'Alert1',
394+
src_namespace: 'ns1',
395+
src_severity: 'critical',
396+
component: 'comp1',
397+
layer: 'layer1',
398+
values: [[nowSeconds - 3600, '2']],
399+
},
400+
{
401+
group_id: 'incident2',
402+
src_alertname: 'Alert2',
403+
src_namespace: 'ns2',
404+
src_severity: 'warning',
405+
component: 'comp2',
406+
layer: 'layer2',
407+
values: [[nowSeconds - 1800, '1']],
400408
},
401409
];
402410

@@ -415,8 +423,6 @@ describe('convertToAlerts', () => {
415423
alertname: 'TestAlert',
416424
namespace: 'test-namespace',
417425
severity: 'critical',
418-
component: 'test-component',
419-
layer: 'test-layer',
420426
name: 'test',
421427
alertstate: 'firing',
422428
},
@@ -430,6 +436,8 @@ describe('convertToAlerts', () => {
430436
src_alertname: 'TestAlert',
431437
src_namespace: 'test-namespace',
432438
src_severity: 'critical',
439+
component: 'test-component',
440+
layer: 'test-layer',
433441
silenced: true,
434442
values: [[nowSeconds, '2']],
435443
},
@@ -439,37 +447,6 @@ describe('convertToAlerts', () => {
439447
expect(result).toHaveLength(1);
440448
expect(result[0].silenced).toBe(true);
441449
});
442-
443-
it('should default silenced to false when no matching incident found', () => {
444-
const prometheusResults: PrometheusResult[] = [
445-
{
446-
metric: {
447-
alertname: 'TestAlert',
448-
namespace: 'test-namespace',
449-
severity: 'critical',
450-
component: 'test-component',
451-
layer: 'test-layer',
452-
name: 'test',
453-
alertstate: 'firing',
454-
},
455-
values: [[nowSeconds, '2']],
456-
},
457-
];
458-
459-
const incidents: Array<Partial<Incident>> = [
460-
{
461-
group_id: 'incident1',
462-
src_alertname: 'DifferentAlert',
463-
src_namespace: 'different-namespace',
464-
src_severity: 'warning',
465-
values: [[nowSeconds, '1']],
466-
},
467-
];
468-
469-
const result = convertToAlerts(prometheusResults, incidents, now);
470-
expect(result).toHaveLength(1);
471-
expect(result[0].silenced).toBe(false);
472-
});
473450
});
474451

475452
describe('incident merging', () => {
@@ -480,8 +457,6 @@ describe('convertToAlerts', () => {
480457
alertname: 'TestAlert',
481458
namespace: 'test-namespace',
482459
severity: 'critical',
483-
component: 'test-component',
484-
layer: 'test-layer',
485460
name: 'test',
486461
alertstate: 'firing',
487462
},
@@ -499,6 +474,8 @@ describe('convertToAlerts', () => {
499474
src_alertname: 'TestAlert',
500475
src_namespace: 'test-namespace',
501476
src_severity: 'critical',
477+
component: 'test-component',
478+
layer: 'test-layer',
502479
silenced: false,
503480
values: [[nowSeconds - 600, '2']],
504481
},
@@ -527,8 +504,6 @@ describe('convertToAlerts', () => {
527504
alertname: 'MyAlert',
528505
namespace: 'my-namespace',
529506
severity: 'warning',
530-
component: 'my-component',
531-
layer: 'my-layer',
532507
name: 'my-name',
533508
alertstate: 'firing',
534509
},
@@ -542,6 +517,8 @@ describe('convertToAlerts', () => {
542517
src_alertname: 'MyAlert',
543518
src_namespace: 'my-namespace',
544519
src_severity: 'warning',
520+
component: 'my-component',
521+
layer: 'my-layer',
545522
values: [[nowSeconds, '1']],
546523
},
547524
];
@@ -566,7 +543,6 @@ describe('deduplicateAlerts', () => {
566543
metric: {
567544
alertname: 'Alert1',
568545
namespace: 'ns1',
569-
component: 'comp1',
570546
severity: 'critical',
571547
alertstate: 'resolved',
572548
},
@@ -576,7 +552,6 @@ describe('deduplicateAlerts', () => {
576552
metric: {
577553
alertname: 'Alert2',
578554
namespace: 'ns2',
579-
component: 'comp2',
580555
severity: 'warning',
581556
alertstate: 'firing',
582557
},
@@ -597,7 +572,6 @@ describe('deduplicateAlerts', () => {
597572
metric: {
598573
alertname: 'Alert1',
599574
namespace: 'ns1',
600-
component: 'comp1',
601575
severity: 'critical',
602576
alertstate: 'firing',
603577
},
@@ -610,7 +584,6 @@ describe('deduplicateAlerts', () => {
610584
metric: {
611585
alertname: 'Alert1',
612586
namespace: 'ns1',
613-
component: 'comp1',
614587
severity: 'critical',
615588
alertstate: 'firing',
616589
},
@@ -632,7 +605,6 @@ describe('deduplicateAlerts', () => {
632605
metric: {
633606
alertname: 'Alert1',
634607
namespace: 'ns1',
635-
component: 'comp1',
636608
severity: 'critical',
637609
alertstate: 'firing',
638610
},
@@ -642,7 +614,6 @@ describe('deduplicateAlerts', () => {
642614
metric: {
643615
alertname: 'Alert2',
644616
namespace: 'ns1',
645-
component: 'comp1',
646617
severity: 'critical',
647618
alertstate: 'firing',
648619
},
@@ -660,7 +631,6 @@ describe('deduplicateAlerts', () => {
660631
metric: {
661632
alertname: 'Alert1',
662633
namespace: 'ns1',
663-
component: 'comp1',
664634
severity: 'critical',
665635
alertstate: 'firing',
666636
},
@@ -670,7 +640,6 @@ describe('deduplicateAlerts', () => {
670640
metric: {
671641
alertname: 'Alert1',
672642
namespace: 'ns1',
673-
component: 'comp1',
674643
severity: 'warning',
675644
alertstate: 'firing',
676645
},
@@ -690,7 +659,6 @@ describe('deduplicateAlerts', () => {
690659
metric: {
691660
alertname: 'Alert1',
692661
namespace: 'ns1',
693-
component: 'comp1',
694662
severity: 'critical',
695663
alertstate: 'firing',
696664
},

web/src/components/Incidents/processAlerts.ts

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -252,9 +252,10 @@ export function convertToAlerts(
252252
incident.src_severity === alert.metric.severity,
253253
);
254254

255-
// Use silenced value from incident data (cluster_health_components_map)
256-
// Default to false if no matching incident found
257-
const silenced = matchingIncident?.silenced ?? false;
255+
// If no matching incident found, skip the alert
256+
if (!matchingIncident) {
257+
return null;
258+
}
258259

259260
// Add padding points for chart rendering
260261
const paddedValues = insertPaddingPointsForChart(sortedValues, currentTime);
@@ -274,7 +275,7 @@ export function convertToAlerts(
274275
alertsEndFiring: lastTimestamp,
275276
resolved,
276277
x: 0, // Will be set after sorting
277-
silenced,
278+
silenced: matchingIncident.silenced,
278279
};
279280
})
280281
.filter((alert): alert is Alert => alert !== null)

0 commit comments

Comments
 (0)