@oneuptime/common 14.0.0 → 14.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/Models/DatabaseModels/Index.ts +4 -0
- package/Models/DatabaseModels/ServiceLevelObjectiveFeed.ts +2 -0
- package/Models/DatabaseModels/ServiceLevelObjectiveLabelRule.ts +522 -0
- package/Models/DatabaseModels/ServiceLevelObjectiveMonitorRule.ts +38 -4
- package/Models/DatabaseModels/ServiceLevelObjectiveOwnerRule.ts +603 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/1794100000000-AddSloLabelAndOwnerRules.ts +248 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/1794200000000-AddSloMonitorRuleMonitorType.ts +19 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/Index.ts +4 -0
- package/Server/Services/DatabaseService.ts +10 -0
- package/Server/Services/Index.ts +4 -0
- package/Server/Services/MonitorService.ts +3 -2
- package/Server/Services/ServiceLevelObjectiveLabelRuleEngineService.ts +385 -0
- package/Server/Services/ServiceLevelObjectiveLabelRuleService.ts +51 -0
- package/Server/Services/ServiceLevelObjectiveMonitorRuleEngineService.ts +92 -16
- package/Server/Services/ServiceLevelObjectiveMonitorRuleService.ts +36 -1
- package/Server/Services/ServiceLevelObjectiveOwnerRuleEngineService.ts +521 -0
- package/Server/Services/ServiceLevelObjectiveOwnerRuleService.ts +51 -0
- package/Server/Services/ServiceLevelObjectiveService.ts +28 -0
- package/Server/Types/Workflow/Components/Telegram/SendMessageToChat.ts +27 -1
- package/Server/Utils/AI/Toolbox/SloTools.ts +1 -0
- package/Server/Utils/Monitor/AffectedResourceList.ts +31 -73
- package/Server/Utils/Monitor/Criteria/CompareCriteria.ts +1 -1
- package/Server/Utils/Monitor/Criteria/MetricMonitorCriteria.ts +1 -1
- package/Server/Utils/Monitor/MonitorCriteriaEvaluator.ts +181 -136
- package/Server/Utils/Monitor/RootCauseList.ts +139 -0
- package/Server/Utils/Rules/RuleRun/RuleRunRegistry.ts +28 -0
- package/Server/Utils/Slo/SloRulePatternValidator.ts +42 -0
- package/Tests/App/Dashboard/FeedFilterSortIntegration.test.tsx +1632 -0
- package/Tests/App/Dashboard/FeedOptionsLocales.test.ts +250 -0
- package/Tests/App/Dashboard/FeedOrdering.test.ts +279 -9
- package/Tests/App/Dashboard/InvestigationFeedRefresh.test.tsx +60 -1
- package/Tests/App/Dashboard/InvestigationPanel.test.tsx +594 -3
- package/Tests/App/Dashboard/ProductOrientation.test.tsx +646 -0
- package/Tests/App/Dashboard/ResourceFeed.test.tsx +612 -2
- package/Tests/App/Dashboard/ResourceFeedPageWiring.test.ts +30 -0
- package/Tests/App/Dashboard/ResourceFeedPagesFilterSort.test.tsx +1202 -0
- package/Tests/App/Dashboard/ScheduledMaintenanceFeedRefresh.test.tsx +52 -1
- package/Tests/App/Dashboard/SloFeed.test.tsx +106 -1
- package/Tests/App/Dashboard/SloMonitorRuleCriteria.test.tsx +566 -0
- package/Tests/App/Dashboard/SloNavigationWiring.test.tsx +6 -4
- package/Tests/App/Dashboard/SloNoticeBanner.test.tsx +186 -0
- package/Tests/App/Dashboard/SloOverviewKpiStrip.test.tsx +388 -44
- package/Tests/App/Dashboard/SloOverviewLayout.test.tsx +613 -0
- package/Tests/Models/DatabaseModels/ResourceFeedModels.test.ts +0 -8
- package/Tests/Models/DatabaseModels/SloLabelAndOwnerRuleModels.test.ts +404 -0
- package/Tests/Models/DatabaseModels/SloOverhaulModels.test.ts +17 -1
- package/Tests/Models/DatabaseModels/StaticRuleCriteriaInheritance.test.ts +4 -2
- package/Tests/Server/Infrastructure/Postgres/AddConfigurableRuleCriteriaMigration.test.ts +3 -0
- package/Tests/Server/Infrastructure/Postgres/AddSloLabelAndOwnerRulesMigration.test.ts +407 -0
- package/Tests/Server/Infrastructure/Postgres/AddSloMonitorRuleMonitorTypeMigration.test.ts +171 -0
- package/Tests/Server/Infrastructure/Postgres/SloProductOverhaulMigration.test.ts +88 -4
- package/Tests/Server/Services/DatabaseServiceRuleCriteriaValidation.test.ts +104 -0
- package/Tests/Server/Services/RuleRun/LabelRuleEnginesGroupBRun.test.ts +48 -1
- package/Tests/Server/Services/RuleRun/OwnerRuleEnginesGroupBRun.test.ts +30 -0
- package/Tests/Server/Services/ServiceLevelObjectiveLabelAndOwnerRuleEngines.test.ts +1170 -0
- package/Tests/Server/Services/ServiceLevelObjectiveLabelAndOwnerRuleServices.test.ts +172 -0
- package/Tests/Server/Services/ServiceLevelObjectiveMonitorRuleEngineService.test.ts +323 -0
- package/Tests/Server/Services/ServiceLevelObjectiveMonitorRuleService.test.ts +115 -0
- package/Tests/Server/Services/ServiceLevelObjectiveMonitorRuleTriggers.test.ts +21 -2
- package/Tests/Server/Services/ServiceLevelObjectiveMonitorTypePostgres.test.ts +480 -0
- package/Tests/Server/Services/ServiceLevelObjectiveService.test.ts +162 -0
- package/Tests/Server/Services/StaticRuleCriteriaRuntimeCoverage.test.ts +45 -6
- package/Tests/Server/Types/Database/FeedEventTypeFilterQuery.test.ts +745 -0
- package/Tests/Server/Types/Markdown.test.ts +2 -1
- package/Tests/Server/Types/Workflow/Components/ApiComponentSsrf.test.ts +49 -0
- package/Tests/Server/Types/Workflow/Components/TelegramSendMessageToChat.test.ts +331 -0
- package/Tests/Server/Utils/AI/SloTools.test.ts +10 -0
- package/Tests/Server/Utils/Monitor/Criteria/MetricMonitorCriteriaAnomalyUnits.test.ts +1 -1
- package/Tests/Server/Utils/Monitor/MonitorCriteriaEvaluator.test.ts +405 -0
- package/Tests/Server/Utils/Monitor/MonitorCriteriaEvaluatorBreachingSamples.test.ts +1101 -0
- package/Tests/Server/Utils/Monitor/MonitorCriteriaEvaluatorMetricUnits.test.ts +106 -80
- package/Tests/Server/Utils/Monitor/RootCauseList.test.ts +252 -0
- package/Tests/Server/Utils/Rules/RuleRun/RuleRunPermission.test.ts +154 -0
- package/Tests/Server/Utils/SSRFProtection.test.ts +111 -0
- package/Tests/Server/Utils/Slo/SloRulePatternValidator.test.ts +67 -0
- package/Tests/Server/Utils/VM/VMRunnerSsrf.test.ts +213 -0
- package/Tests/Types/API/Route.test.ts +56 -0
- package/Tests/Types/API/URLSchemeLikePath.test.ts +304 -0
- package/Tests/UI/Components/FeedOptions.test.ts +1404 -0
- package/Tests/UI/Components/FeedOptionsButton.test.tsx +2603 -0
- package/Tests/UI/Components/Icon.test.tsx +26 -0
- package/Tests/UI/Components/RuleCriteria/RuleCriteriaModelTable.test.tsx +3 -3
- package/Tests/UI/Components/useFeedItemsViewKey.test.tsx +1017 -0
- package/Tests/UI/Components/useFeedOptions.test.tsx +1107 -0
- package/Tests/Utils/LabelRuleImportExport.test.ts +102 -0
- package/Tests/Utils/Slo/SloDuration.test.ts +115 -24
- package/Tests/Utils/Slo/SloHealth.test.ts +93 -10
- package/Tests/Utils/Slo/SloMonitorRuleCriteria.test.ts +109 -0
- package/Tests/Utils/Slo/SloOverviewText.test.ts +64 -0
- package/Types/API/Route.ts +19 -2
- package/Types/API/URL.ts +26 -2
- package/Types/Monitor/MetricMonitor/MetricCriteriaContext.ts +6 -5
- package/Types/Monitor/MetricMonitor/MetricMonitorResponse.ts +9 -0
- package/Types/Permission.ts +90 -0
- package/Types/Rules/RuleCriteriaFieldRegistry.ts +11 -0
- package/Types/Rules/RuleRun.ts +4 -0
- package/UI/Components/Feed/FeedOptions.ts +427 -0
- package/UI/Components/Feed/FeedOptionsButton.tsx +692 -0
- package/UI/Components/Feed/useFeedItems.ts +28 -9
- package/UI/Components/Feed/useFeedOptions.ts +225 -0
- package/UI/Components/Icon/Icon.tsx +1 -1
- package/Utils/LabelRuleImportExport.ts +27 -9
- package/Utils/Monitor/MetricValueFormatter.ts +2 -2
- package/Utils/Rules/MonitorTypeRuleCriteria.ts +31 -0
- package/Utils/Slo/SloDuration.ts +22 -6
- package/Utils/Slo/SloHealth.ts +8 -7
- package/Utils/Slo/SloMonitorRuleCriteria.ts +33 -1
- package/Utils/Slo/SloOverviewText.ts +33 -0
- package/Utils/Slo/SloProjection.ts +4 -3
- package/build/dist/Models/DatabaseModels/Index.js +4 -0
- package/build/dist/Models/DatabaseModels/Index.js.map +1 -1
- package/build/dist/Models/DatabaseModels/ServiceLevelObjectiveFeed.js +2 -0
- package/build/dist/Models/DatabaseModels/ServiceLevelObjectiveFeed.js.map +1 -1
- package/build/dist/Models/DatabaseModels/ServiceLevelObjectiveLabelRule.js +530 -0
- package/build/dist/Models/DatabaseModels/ServiceLevelObjectiveLabelRule.js.map +1 -0
- package/build/dist/Models/DatabaseModels/ServiceLevelObjectiveMonitorRule.js +39 -4
- package/build/dist/Models/DatabaseModels/ServiceLevelObjectiveMonitorRule.js.map +1 -1
- package/build/dist/Models/DatabaseModels/ServiceLevelObjectiveOwnerRule.js +612 -0
- package/build/dist/Models/DatabaseModels/ServiceLevelObjectiveOwnerRule.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1794100000000-AddSloLabelAndOwnerRules.js +93 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1794100000000-AddSloLabelAndOwnerRules.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1794200000000-AddSloMonitorRuleMonitorType.js +12 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1794200000000-AddSloMonitorRuleMonitorType.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/Index.js +4 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/Index.js.map +1 -1
- package/build/dist/Server/Services/DatabaseService.js +7 -0
- package/build/dist/Server/Services/DatabaseService.js.map +1 -1
- package/build/dist/Server/Services/Index.js +4 -0
- package/build/dist/Server/Services/Index.js.map +1 -1
- package/build/dist/Server/Services/MonitorService.js +3 -2
- package/build/dist/Server/Services/MonitorService.js.map +1 -1
- package/build/dist/Server/Services/ServiceLevelObjectiveLabelRuleEngineService.js +295 -0
- package/build/dist/Server/Services/ServiceLevelObjectiveLabelRuleEngineService.js.map +1 -0
- package/build/dist/Server/Services/ServiceLevelObjectiveLabelRuleService.js +56 -0
- package/build/dist/Server/Services/ServiceLevelObjectiveLabelRuleService.js.map +1 -0
- package/build/dist/Server/Services/ServiceLevelObjectiveMonitorRuleEngineService.js +59 -14
- package/build/dist/Server/Services/ServiceLevelObjectiveMonitorRuleEngineService.js.map +1 -1
- package/build/dist/Server/Services/ServiceLevelObjectiveMonitorRuleService.js +22 -1
- package/build/dist/Server/Services/ServiceLevelObjectiveMonitorRuleService.js.map +1 -1
- package/build/dist/Server/Services/ServiceLevelObjectiveOwnerRuleEngineService.js +400 -0
- package/build/dist/Server/Services/ServiceLevelObjectiveOwnerRuleEngineService.js.map +1 -0
- package/build/dist/Server/Services/ServiceLevelObjectiveOwnerRuleService.js +56 -0
- package/build/dist/Server/Services/ServiceLevelObjectiveOwnerRuleService.js.map +1 -0
- package/build/dist/Server/Services/ServiceLevelObjectiveService.js +21 -0
- package/build/dist/Server/Services/ServiceLevelObjectiveService.js.map +1 -1
- package/build/dist/Server/Types/Workflow/Components/Telegram/SendMessageToChat.js +20 -1
- package/build/dist/Server/Types/Workflow/Components/Telegram/SendMessageToChat.js.map +1 -1
- package/build/dist/Server/Utils/AI/Toolbox/SloTools.js +1 -0
- package/build/dist/Server/Utils/AI/Toolbox/SloTools.js.map +1 -1
- package/build/dist/Server/Utils/Monitor/AffectedResourceList.js +22 -51
- package/build/dist/Server/Utils/Monitor/AffectedResourceList.js.map +1 -1
- package/build/dist/Server/Utils/Monitor/Criteria/CompareCriteria.js +1 -1
- package/build/dist/Server/Utils/Monitor/Criteria/MetricMonitorCriteria.js +1 -1
- package/build/dist/Server/Utils/Monitor/MonitorCriteriaEvaluator.js +139 -109
- package/build/dist/Server/Utils/Monitor/MonitorCriteriaEvaluator.js.map +1 -1
- package/build/dist/Server/Utils/Monitor/RootCauseList.js +101 -0
- package/build/dist/Server/Utils/Monitor/RootCauseList.js.map +1 -0
- package/build/dist/Server/Utils/Rules/RuleRun/RuleRunRegistry.js +28 -0
- package/build/dist/Server/Utils/Rules/RuleRun/RuleRunRegistry.js.map +1 -1
- package/build/dist/Server/Utils/Slo/SloRulePatternValidator.js +28 -0
- package/build/dist/Server/Utils/Slo/SloRulePatternValidator.js.map +1 -0
- package/build/dist/Types/API/Route.js +18 -2
- package/build/dist/Types/API/Route.js.map +1 -1
- package/build/dist/Types/API/URL.js +23 -2
- package/build/dist/Types/API/URL.js.map +1 -1
- package/build/dist/Types/Permission.js +84 -0
- package/build/dist/Types/Permission.js.map +1 -1
- package/build/dist/Types/Rules/RuleCriteriaFieldRegistry.js +11 -0
- package/build/dist/Types/Rules/RuleCriteriaFieldRegistry.js.map +1 -1
- package/build/dist/Types/Rules/RuleRun.js +4 -0
- package/build/dist/Types/Rules/RuleRun.js.map +1 -1
- package/build/dist/UI/Components/Feed/FeedOptions.js +235 -0
- package/build/dist/UI/Components/Feed/FeedOptions.js.map +1 -0
- package/build/dist/UI/Components/Feed/FeedOptionsButton.js +346 -0
- package/build/dist/UI/Components/Feed/FeedOptionsButton.js.map +1 -0
- package/build/dist/UI/Components/Feed/useFeedItems.js +17 -7
- package/build/dist/UI/Components/Feed/useFeedItems.js.map +1 -1
- package/build/dist/UI/Components/Feed/useFeedOptions.js +130 -0
- package/build/dist/UI/Components/Feed/useFeedOptions.js.map +1 -0
- package/build/dist/UI/Components/Icon/Icon.js +1 -1
- package/build/dist/UI/Components/Icon/Icon.js.map +1 -1
- package/build/dist/Utils/LabelRuleImportExport.js +22 -6
- package/build/dist/Utils/LabelRuleImportExport.js.map +1 -1
- package/build/dist/Utils/Monitor/MetricValueFormatter.js +2 -2
- package/build/dist/Utils/Rules/MonitorTypeRuleCriteria.js +18 -0
- package/build/dist/Utils/Rules/MonitorTypeRuleCriteria.js.map +1 -0
- package/build/dist/Utils/Slo/SloDuration.js +13 -5
- package/build/dist/Utils/Slo/SloDuration.js.map +1 -1
- package/build/dist/Utils/Slo/SloHealth.js +8 -7
- package/build/dist/Utils/Slo/SloHealth.js.map +1 -1
- package/build/dist/Utils/Slo/SloMonitorRuleCriteria.js +16 -1
- package/build/dist/Utils/Slo/SloMonitorRuleCriteria.js.map +1 -1
- package/build/dist/Utils/Slo/SloOverviewText.js +16 -0
- package/build/dist/Utils/Slo/SloOverviewText.js.map +1 -1
- package/build/dist/Utils/Slo/SloProjection.js.map +1 -1
- package/package.json +1 -1
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
import AlertReminderRule from "../../../Models/DatabaseModels/AlertReminderRule";
|
|
2
2
|
import StatusPageMonitorRule from "../../../Models/DatabaseModels/StatusPageMonitorRule";
|
|
3
|
+
import ServiceLevelObjectiveMonitorRule from "../../../Models/DatabaseModels/ServiceLevelObjectiveMonitorRule";
|
|
4
|
+
import MonitorType from "../../../Types/Monitor/MonitorType";
|
|
3
5
|
import DatabaseService from "../../../Server/Services/DatabaseService";
|
|
4
6
|
import DatabaseCommonInteractionProps from "../../../Types/BaseDatabase/DatabaseCommonInteractionProps";
|
|
5
7
|
import FilterCondition from "../../../Types/Filter/FilterCondition";
|
|
@@ -520,3 +522,105 @@ describe("DatabaseService rule criteria validation", () => {
|
|
|
520
522
|
);
|
|
521
523
|
});
|
|
522
524
|
});
|
|
525
|
+
|
|
526
|
+
describe("DatabaseService SLO monitor type criteria validation", () => {
|
|
527
|
+
const sloService: DatabaseService<ServiceLevelObjectiveMonitorRule> =
|
|
528
|
+
new DatabaseService<ServiceLevelObjectiveMonitorRule>(
|
|
529
|
+
ServiceLevelObjectiveMonitorRule,
|
|
530
|
+
);
|
|
531
|
+
const sanitizeSlo: SanitizeFunction = async (
|
|
532
|
+
data: unknown,
|
|
533
|
+
props: DatabaseCommonInteractionProps = { isRoot: true },
|
|
534
|
+
isUpdate: boolean = true,
|
|
535
|
+
): Promise<JSONObject> => {
|
|
536
|
+
return (await (
|
|
537
|
+
sloService as unknown as { sanitizeCreateOrUpdate: SanitizeFunction }
|
|
538
|
+
).sanitizeCreateOrUpdate(data, props, isUpdate)) as JSONObject;
|
|
539
|
+
};
|
|
540
|
+
|
|
541
|
+
it.each([true, false])(
|
|
542
|
+
"persists valid type criteria with a fail-closed compatibility shadow on update=%p",
|
|
543
|
+
async (isUpdate: boolean) => {
|
|
544
|
+
const criteria: JSONObject = criteriaFor({
|
|
545
|
+
field: "monitorType",
|
|
546
|
+
operator: RuleCriteriaOperator.Equals,
|
|
547
|
+
value: MonitorType.Docker,
|
|
548
|
+
});
|
|
549
|
+
const result: JSONObject = await sanitizeSlo(
|
|
550
|
+
{
|
|
551
|
+
criteria,
|
|
552
|
+
monitorType: MonitorType.API,
|
|
553
|
+
monitorNamePattern: ".*",
|
|
554
|
+
monitorLabels: ["11111111-1111-4111-8111-111111111111"],
|
|
555
|
+
},
|
|
556
|
+
{ isRoot: true },
|
|
557
|
+
isUpdate,
|
|
558
|
+
);
|
|
559
|
+
expect(result).toMatchObject({
|
|
560
|
+
criteria,
|
|
561
|
+
monitorType: null,
|
|
562
|
+
monitorNamePattern: "(?!)",
|
|
563
|
+
});
|
|
564
|
+
expect(result["monitorLabels"]).toBeUndefined();
|
|
565
|
+
},
|
|
566
|
+
);
|
|
567
|
+
|
|
568
|
+
it.each(Object.values(MonitorType))(
|
|
569
|
+
"accepts equality and inequality for %s",
|
|
570
|
+
async (monitorType: MonitorType) => {
|
|
571
|
+
for (const operator of [
|
|
572
|
+
RuleCriteriaOperator.Equals,
|
|
573
|
+
RuleCriteriaOperator.NotEquals,
|
|
574
|
+
]) {
|
|
575
|
+
await expect(
|
|
576
|
+
sanitizeSlo({
|
|
577
|
+
criteria: criteriaFor({
|
|
578
|
+
field: "monitorType",
|
|
579
|
+
operator,
|
|
580
|
+
value: monitorType,
|
|
581
|
+
}),
|
|
582
|
+
}),
|
|
583
|
+
).resolves.toBeDefined();
|
|
584
|
+
}
|
|
585
|
+
},
|
|
586
|
+
);
|
|
587
|
+
|
|
588
|
+
it.each(["Unknown", "api", "API.*", 1, true])(
|
|
589
|
+
"rejects invalid type value %p",
|
|
590
|
+
async (value: string | number | boolean) => {
|
|
591
|
+
await expect(
|
|
592
|
+
sanitizeSlo({
|
|
593
|
+
criteria: criteriaFor({
|
|
594
|
+
field: "monitorType",
|
|
595
|
+
operator: RuleCriteriaOperator.NotEquals,
|
|
596
|
+
value,
|
|
597
|
+
}),
|
|
598
|
+
}),
|
|
599
|
+
).rejects.toThrow("valid monitor type");
|
|
600
|
+
},
|
|
601
|
+
);
|
|
602
|
+
|
|
603
|
+
it.each([
|
|
604
|
+
RuleCriteriaOperator.Contains,
|
|
605
|
+
RuleCriteriaOperator.DoesNotContain,
|
|
606
|
+
RuleCriteriaOperator.StartsWith,
|
|
607
|
+
RuleCriteriaOperator.EndsWith,
|
|
608
|
+
RuleCriteriaOperator.MatchesPattern,
|
|
609
|
+
RuleCriteriaOperator.DoesNotMatchPattern,
|
|
610
|
+
RuleCriteriaOperator.HasAnyOf,
|
|
611
|
+
RuleCriteriaOperator.HasAllOf,
|
|
612
|
+
RuleCriteriaOperator.HasNoneOf,
|
|
613
|
+
])(
|
|
614
|
+
"rejects unsupported type operator %s",
|
|
615
|
+
async (operator: RuleCriteriaOperator) => {
|
|
616
|
+
const value: string | Array<string> = operator.startsWith("Has")
|
|
617
|
+
? [MonitorType.API]
|
|
618
|
+
: MonitorType.API;
|
|
619
|
+
await expect(
|
|
620
|
+
sanitizeSlo({
|
|
621
|
+
criteria: criteriaFor({ field: "monitorType", operator, value }),
|
|
622
|
+
}),
|
|
623
|
+
).rejects.toThrow("only support Equals");
|
|
624
|
+
},
|
|
625
|
+
);
|
|
626
|
+
});
|
|
@@ -28,6 +28,10 @@ import ServiceFeedService from "../../../../Server/Services/ServiceFeedService";
|
|
|
28
28
|
import ServiceLabelRuleEngineService from "../../../../Server/Services/ServiceLabelRuleEngineService";
|
|
29
29
|
import ServiceLabelRuleService from "../../../../Server/Services/ServiceLabelRuleService";
|
|
30
30
|
import ServiceService from "../../../../Server/Services/ServiceService";
|
|
31
|
+
import ServiceLevelObjectiveFeedService from "../../../../Server/Services/ServiceLevelObjectiveFeedService";
|
|
32
|
+
import ServiceLevelObjectiveLabelRuleEngineService from "../../../../Server/Services/ServiceLevelObjectiveLabelRuleEngineService";
|
|
33
|
+
import ServiceLevelObjectiveLabelRuleService from "../../../../Server/Services/ServiceLevelObjectiveLabelRuleService";
|
|
34
|
+
import ServiceLevelObjectiveService from "../../../../Server/Services/ServiceLevelObjectiveService";
|
|
31
35
|
import StatusPageLabelRuleEngineService from "../../../../Server/Services/StatusPageLabelRuleEngineService";
|
|
32
36
|
import StatusPageLabelRuleService from "../../../../Server/Services/StatusPageLabelRuleService";
|
|
33
37
|
import StatusPageService from "../../../../Server/Services/StatusPageService";
|
|
@@ -61,6 +65,8 @@ import ServerlessFunction from "../../../../Models/DatabaseModels/ServerlessFunc
|
|
|
61
65
|
import ServerlessFunctionLabelRule from "../../../../Models/DatabaseModels/ServerlessFunctionLabelRule";
|
|
62
66
|
import Service from "../../../../Models/DatabaseModels/Service";
|
|
63
67
|
import ServiceLabelRule from "../../../../Models/DatabaseModels/ServiceLabelRule";
|
|
68
|
+
import ServiceLevelObjective from "../../../../Models/DatabaseModels/ServiceLevelObjective";
|
|
69
|
+
import ServiceLevelObjectiveLabelRule from "../../../../Models/DatabaseModels/ServiceLevelObjectiveLabelRule";
|
|
64
70
|
import StatusPage from "../../../../Models/DatabaseModels/StatusPage";
|
|
65
71
|
import StatusPageLabelRule from "../../../../Models/DatabaseModels/StatusPageLabelRule";
|
|
66
72
|
import VMwareVCenter from "../../../../Models/DatabaseModels/VMwareVCenter";
|
|
@@ -397,6 +403,47 @@ const cases: Array<LabelEngineCase> = [
|
|
|
397
403
|
},
|
|
398
404
|
feedResourceIdKey: "serviceId",
|
|
399
405
|
}),
|
|
406
|
+
labelEngineCase<ServiceLevelObjective, ServiceLevelObjectiveLabelRule>({
|
|
407
|
+
name: "ServiceLevelObjectiveLabelRuleEngineService",
|
|
408
|
+
engine: ServiceLevelObjectiveLabelRuleEngineService,
|
|
409
|
+
applyOnCreate: (resource: ServiceLevelObjective): Promise<void> => {
|
|
410
|
+
return ServiceLevelObjectiveLabelRuleEngineService.applyRulesToServiceLevelObjective(
|
|
411
|
+
resource,
|
|
412
|
+
);
|
|
413
|
+
},
|
|
414
|
+
ruleService:
|
|
415
|
+
ServiceLevelObjectiveLabelRuleService as unknown as RuleReadService,
|
|
416
|
+
resourceService: ServiceLevelObjectiveService as unknown as ResourceService,
|
|
417
|
+
resourceModel: ServiceLevelObjective,
|
|
418
|
+
textField: "name",
|
|
419
|
+
patternField: "serviceLevelObjectiveNamePattern",
|
|
420
|
+
labelMatchField: "serviceLevelObjectiveLabels",
|
|
421
|
+
matchesHandedResource: false,
|
|
422
|
+
syncsInMemoryLabels: true,
|
|
423
|
+
severity: null,
|
|
424
|
+
expectedRuleSelect: {
|
|
425
|
+
_id: true,
|
|
426
|
+
name: true,
|
|
427
|
+
criteria: true,
|
|
428
|
+
serviceLevelObjectiveLabels: { _id: true },
|
|
429
|
+
serviceLevelObjectiveNamePattern: true,
|
|
430
|
+
serviceLevelObjectiveDescriptionPattern: true,
|
|
431
|
+
labelsToAdd: { _id: true },
|
|
432
|
+
},
|
|
433
|
+
expectedResourceSelect: IDS_ONLY_RESOURCE_SELECT,
|
|
434
|
+
mockFeed: (): jest.SpyInstance => {
|
|
435
|
+
jest
|
|
436
|
+
.spyOn(ServiceLevelObjectiveService, "getSloMarkdownLink")
|
|
437
|
+
.mockResolvedValue(MARKDOWN_LINK);
|
|
438
|
+
return jest
|
|
439
|
+
.spyOn(
|
|
440
|
+
ServiceLevelObjectiveFeedService,
|
|
441
|
+
"createServiceLevelObjectiveFeedItem",
|
|
442
|
+
)
|
|
443
|
+
.mockResolvedValue(undefined);
|
|
444
|
+
},
|
|
445
|
+
feedResourceIdKey: "serviceLevelObjectiveId",
|
|
446
|
+
}),
|
|
400
447
|
labelEngineCase<StatusPage, StatusPageLabelRule>({
|
|
401
448
|
name: "StatusPageLabelRuleEngineService",
|
|
402
449
|
engine: StatusPageLabelRuleEngineService,
|
|
@@ -797,7 +844,7 @@ describe("label rule engines (group B) - applying a rule to existing resources",
|
|
|
797
844
|
cases.map((c: LabelEngineCase) => {
|
|
798
845
|
return c.name;
|
|
799
846
|
}),
|
|
800
|
-
).toHaveLength(
|
|
847
|
+
).toHaveLength(12);
|
|
801
848
|
});
|
|
802
849
|
|
|
803
850
|
describe.each(cases)("$name", (c: LabelEngineCase) => {
|
|
@@ -43,6 +43,12 @@ import ServiceOwnerRuleService from "../../../../Server/Services/ServiceOwnerRul
|
|
|
43
43
|
import ServiceOwnerTeamService from "../../../../Server/Services/ServiceOwnerTeamService";
|
|
44
44
|
import ServiceOwnerUserService from "../../../../Server/Services/ServiceOwnerUserService";
|
|
45
45
|
import ServiceService from "../../../../Server/Services/ServiceService";
|
|
46
|
+
import ServiceLevelObjectiveFeedService from "../../../../Server/Services/ServiceLevelObjectiveFeedService";
|
|
47
|
+
import ServiceLevelObjectiveOwnerRuleEngineService from "../../../../Server/Services/ServiceLevelObjectiveOwnerRuleEngineService";
|
|
48
|
+
import ServiceLevelObjectiveOwnerRuleService from "../../../../Server/Services/ServiceLevelObjectiveOwnerRuleService";
|
|
49
|
+
import ServiceLevelObjectiveOwnerTeamService from "../../../../Server/Services/ServiceLevelObjectiveOwnerTeamService";
|
|
50
|
+
import ServiceLevelObjectiveOwnerUserService from "../../../../Server/Services/ServiceLevelObjectiveOwnerUserService";
|
|
51
|
+
import ServiceLevelObjectiveService from "../../../../Server/Services/ServiceLevelObjectiveService";
|
|
46
52
|
import StatusPageOwnerRuleEngineService from "../../../../Server/Services/StatusPageOwnerRuleEngineService";
|
|
47
53
|
import StatusPageOwnerRuleService from "../../../../Server/Services/StatusPageOwnerRuleService";
|
|
48
54
|
import StatusPageOwnerTeamService from "../../../../Server/Services/StatusPageOwnerTeamService";
|
|
@@ -78,6 +84,8 @@ import ServerlessFunctionOwnerTeam from "../../../../Models/DatabaseModels/Serve
|
|
|
78
84
|
import ServerlessFunctionOwnerUser from "../../../../Models/DatabaseModels/ServerlessFunctionOwnerUser";
|
|
79
85
|
import ServiceOwnerTeam from "../../../../Models/DatabaseModels/ServiceOwnerTeam";
|
|
80
86
|
import ServiceOwnerUser from "../../../../Models/DatabaseModels/ServiceOwnerUser";
|
|
87
|
+
import ServiceLevelObjectiveOwnerTeam from "../../../../Models/DatabaseModels/ServiceLevelObjectiveOwnerTeam";
|
|
88
|
+
import ServiceLevelObjectiveOwnerUser from "../../../../Models/DatabaseModels/ServiceLevelObjectiveOwnerUser";
|
|
81
89
|
import StatusPageOwnerTeam from "../../../../Models/DatabaseModels/StatusPageOwnerTeam";
|
|
82
90
|
import StatusPageOwnerUser from "../../../../Models/DatabaseModels/StatusPageOwnerUser";
|
|
83
91
|
import VMwareVCenterOwnerTeam from "../../../../Models/DatabaseModels/VMwareVCenterOwnerTeam";
|
|
@@ -336,6 +344,28 @@ const ENGINE_CASES: Array<EngineCase> = [
|
|
|
336
344
|
}),
|
|
337
345
|
prepare: noop,
|
|
338
346
|
},
|
|
347
|
+
{
|
|
348
|
+
name: "SLO",
|
|
349
|
+
engine: ServiceLevelObjectiveOwnerRuleEngineService,
|
|
350
|
+
createHook: "applyRulesToServiceLevelObjective",
|
|
351
|
+
ruleService: ServiceLevelObjectiveOwnerRuleService,
|
|
352
|
+
rereadService: ServiceLevelObjectiveService,
|
|
353
|
+
ownerUserService: ServiceLevelObjectiveOwnerUserService,
|
|
354
|
+
ownerTeamService: ServiceLevelObjectiveOwnerTeamService,
|
|
355
|
+
ownerUserModel: ServiceLevelObjectiveOwnerUser,
|
|
356
|
+
ownerTeamModel: ServiceLevelObjectiveOwnerTeam,
|
|
357
|
+
resourceIdColumn: "serviceLevelObjectiveId",
|
|
358
|
+
namePatternField: "serviceLevelObjectiveNamePattern",
|
|
359
|
+
hasNotificationFlag: true,
|
|
360
|
+
addOwnersService: null,
|
|
361
|
+
mockFeed: feedMock({
|
|
362
|
+
linkService: ServiceLevelObjectiveService,
|
|
363
|
+
linkMethod: "getSloMarkdownLink",
|
|
364
|
+
feedService: ServiceLevelObjectiveFeedService,
|
|
365
|
+
feedMethod: "createServiceLevelObjectiveFeedItem",
|
|
366
|
+
}),
|
|
367
|
+
prepare: noop,
|
|
368
|
+
},
|
|
339
369
|
{
|
|
340
370
|
name: "status page",
|
|
341
371
|
engine: StatusPageOwnerRuleEngineService,
|