@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
package/Server/Infrastructure/Postgres/SchemaMigrations/1794100000000-AddSloLabelAndOwnerRules.ts
ADDED
|
@@ -0,0 +1,248 @@
|
|
|
1
|
+
import { MigrationInterface, QueryRunner } from "typeorm";
|
|
2
|
+
|
|
3
|
+
/*
|
|
4
|
+
* Generated with npm run generate-postgres-migration. SLO label rules and SLO
|
|
5
|
+
* owner rules: the two rule tables plus their label, owner user and owner team
|
|
6
|
+
* join tables. New, empty tables only - nothing existing is touched.
|
|
7
|
+
*/
|
|
8
|
+
export class AddSloLabelAndOwnerRules1794100000000
|
|
9
|
+
implements MigrationInterface
|
|
10
|
+
{
|
|
11
|
+
public name: string = "AddSloLabelAndOwnerRules1794100000000";
|
|
12
|
+
|
|
13
|
+
public async up(queryRunner: QueryRunner): Promise<void> {
|
|
14
|
+
await queryRunner.query(
|
|
15
|
+
`CREATE TABLE "ServiceLevelObjectiveOwnerRule" ("_id" uuid NOT NULL DEFAULT uuid_generate_v4(), "createdAt" TIMESTAMP WITH TIME ZONE NOT NULL DEFAULT now(), "updatedAt" TIMESTAMP WITH TIME ZONE NOT NULL DEFAULT now(), "deletedAt" TIMESTAMP WITH TIME ZONE, "version" integer NOT NULL, "criteria" jsonb, "projectId" uuid NOT NULL, "name" character varying(100) NOT NULL, "description" character varying(500), "isEnabled" boolean NOT NULL DEFAULT true, "notifyOwners" boolean NOT NULL DEFAULT true, "serviceLevelObjectiveNamePattern" character varying(500), "serviceLevelObjectiveDescriptionPattern" character varying(500), "createdByUserId" uuid, "deletedByUserId" uuid, CONSTRAINT "PK_fcca76effc951a34efbbac08262" PRIMARY KEY ("_id"))`,
|
|
16
|
+
);
|
|
17
|
+
await queryRunner.query(
|
|
18
|
+
`CREATE INDEX "IDX_52a12c08da9cfed82a6d55ee2a" ON "ServiceLevelObjectiveOwnerRule" ("projectId") `,
|
|
19
|
+
);
|
|
20
|
+
await queryRunner.query(
|
|
21
|
+
`CREATE INDEX "IDX_675d55cd050bae45ead9bc5a76" ON "ServiceLevelObjectiveOwnerRule" ("name") `,
|
|
22
|
+
);
|
|
23
|
+
await queryRunner.query(
|
|
24
|
+
`CREATE INDEX "IDX_887a6293429f3079055ca2f593" ON "ServiceLevelObjectiveOwnerRule" ("isEnabled") `,
|
|
25
|
+
);
|
|
26
|
+
await queryRunner.query(
|
|
27
|
+
`CREATE TABLE "ServiceLevelObjectiveLabelRule" ("_id" uuid NOT NULL DEFAULT uuid_generate_v4(), "createdAt" TIMESTAMP WITH TIME ZONE NOT NULL DEFAULT now(), "updatedAt" TIMESTAMP WITH TIME ZONE NOT NULL DEFAULT now(), "deletedAt" TIMESTAMP WITH TIME ZONE, "version" integer NOT NULL, "criteria" jsonb, "projectId" uuid NOT NULL, "name" character varying(100) NOT NULL, "description" character varying(500), "isEnabled" boolean NOT NULL DEFAULT true, "serviceLevelObjectiveNamePattern" character varying(500), "serviceLevelObjectiveDescriptionPattern" character varying(500), "createdByUserId" uuid, "deletedByUserId" uuid, CONSTRAINT "PK_243e193d772af6b2268c50bc546" PRIMARY KEY ("_id"))`,
|
|
28
|
+
);
|
|
29
|
+
await queryRunner.query(
|
|
30
|
+
`CREATE INDEX "IDX_7bf2cb71d4eadd777dca39d2e5" ON "ServiceLevelObjectiveLabelRule" ("projectId") `,
|
|
31
|
+
);
|
|
32
|
+
await queryRunner.query(
|
|
33
|
+
`CREATE INDEX "IDX_f590d00d3ce34582a752bd8dca" ON "ServiceLevelObjectiveLabelRule" ("name") `,
|
|
34
|
+
);
|
|
35
|
+
await queryRunner.query(
|
|
36
|
+
`CREATE INDEX "IDX_bc184754b090db18209d325dc3" ON "ServiceLevelObjectiveLabelRule" ("isEnabled") `,
|
|
37
|
+
);
|
|
38
|
+
await queryRunner.query(
|
|
39
|
+
`CREATE TABLE "ServiceLevelObjectiveOwnerRuleServiceLevelObjectiveLabel" ("serviceLevelObjectiveOwnerRuleId" uuid NOT NULL, "labelId" uuid NOT NULL, CONSTRAINT "PK_abc4ed3e95319b9eddda678fbf2" PRIMARY KEY ("serviceLevelObjectiveOwnerRuleId", "labelId"))`,
|
|
40
|
+
);
|
|
41
|
+
await queryRunner.query(
|
|
42
|
+
`CREATE INDEX "IDX_8f61365ab62fb2cda9cabfba6a" ON "ServiceLevelObjectiveOwnerRuleServiceLevelObjectiveLabel" ("serviceLevelObjectiveOwnerRuleId") `,
|
|
43
|
+
);
|
|
44
|
+
await queryRunner.query(
|
|
45
|
+
`CREATE INDEX "IDX_a53d5afa239072fbbcd830ee1e" ON "ServiceLevelObjectiveOwnerRuleServiceLevelObjectiveLabel" ("labelId") `,
|
|
46
|
+
);
|
|
47
|
+
await queryRunner.query(
|
|
48
|
+
`CREATE TABLE "ServiceLevelObjectiveOwnerRuleOwnerUser" ("serviceLevelObjectiveOwnerRuleId" uuid NOT NULL, "userId" uuid NOT NULL, CONSTRAINT "PK_815cbebe01771c4cb5391e6c746" PRIMARY KEY ("serviceLevelObjectiveOwnerRuleId", "userId"))`,
|
|
49
|
+
);
|
|
50
|
+
await queryRunner.query(
|
|
51
|
+
`CREATE INDEX "IDX_bb2984cb07f49c10c2b43a2a71" ON "ServiceLevelObjectiveOwnerRuleOwnerUser" ("serviceLevelObjectiveOwnerRuleId") `,
|
|
52
|
+
);
|
|
53
|
+
await queryRunner.query(
|
|
54
|
+
`CREATE INDEX "IDX_0151b4abffe8e16c9ebdd3b4cf" ON "ServiceLevelObjectiveOwnerRuleOwnerUser" ("userId") `,
|
|
55
|
+
);
|
|
56
|
+
await queryRunner.query(
|
|
57
|
+
`CREATE TABLE "ServiceLevelObjectiveOwnerRuleOwnerTeam" ("serviceLevelObjectiveOwnerRuleId" uuid NOT NULL, "teamId" uuid NOT NULL, CONSTRAINT "PK_beb34d84842d0daf68f77cfa1ae" PRIMARY KEY ("serviceLevelObjectiveOwnerRuleId", "teamId"))`,
|
|
58
|
+
);
|
|
59
|
+
await queryRunner.query(
|
|
60
|
+
`CREATE INDEX "IDX_12919a82600bbabd2ed7554526" ON "ServiceLevelObjectiveOwnerRuleOwnerTeam" ("serviceLevelObjectiveOwnerRuleId") `,
|
|
61
|
+
);
|
|
62
|
+
await queryRunner.query(
|
|
63
|
+
`CREATE INDEX "IDX_6082f2cc1e7d70c21314f8571b" ON "ServiceLevelObjectiveOwnerRuleOwnerTeam" ("teamId") `,
|
|
64
|
+
);
|
|
65
|
+
await queryRunner.query(
|
|
66
|
+
`CREATE TABLE "ServiceLevelObjectiveLabelRuleServiceLevelObjectiveLabel" ("serviceLevelObjectiveLabelRuleId" uuid NOT NULL, "labelId" uuid NOT NULL, CONSTRAINT "PK_7118b5b1431e0c11443c93b7ee0" PRIMARY KEY ("serviceLevelObjectiveLabelRuleId", "labelId"))`,
|
|
67
|
+
);
|
|
68
|
+
await queryRunner.query(
|
|
69
|
+
`CREATE INDEX "IDX_5a4fed4da4bd53243128e78ced" ON "ServiceLevelObjectiveLabelRuleServiceLevelObjectiveLabel" ("serviceLevelObjectiveLabelRuleId") `,
|
|
70
|
+
);
|
|
71
|
+
await queryRunner.query(
|
|
72
|
+
`CREATE INDEX "IDX_f97e9f9b0f0f138be034ecefe7" ON "ServiceLevelObjectiveLabelRuleServiceLevelObjectiveLabel" ("labelId") `,
|
|
73
|
+
);
|
|
74
|
+
await queryRunner.query(
|
|
75
|
+
`CREATE TABLE "ServiceLevelObjectiveLabelRuleLabelToAdd" ("serviceLevelObjectiveLabelRuleId" uuid NOT NULL, "labelId" uuid NOT NULL, CONSTRAINT "PK_8ed516417c4aabb76de7f4082f6" PRIMARY KEY ("serviceLevelObjectiveLabelRuleId", "labelId"))`,
|
|
76
|
+
);
|
|
77
|
+
await queryRunner.query(
|
|
78
|
+
`CREATE INDEX "IDX_6511777681392a31b0d8e3ad1d" ON "ServiceLevelObjectiveLabelRuleLabelToAdd" ("serviceLevelObjectiveLabelRuleId") `,
|
|
79
|
+
);
|
|
80
|
+
await queryRunner.query(
|
|
81
|
+
`CREATE INDEX "IDX_b41fe48b6a5df099dfe513717d" ON "ServiceLevelObjectiveLabelRuleLabelToAdd" ("labelId") `,
|
|
82
|
+
);
|
|
83
|
+
await queryRunner.query(
|
|
84
|
+
`ALTER TABLE "ServiceLevelObjectiveOwnerRule" ADD CONSTRAINT "FK_52a12c08da9cfed82a6d55ee2a6" FOREIGN KEY ("projectId") REFERENCES "Project"("_id") ON DELETE CASCADE ON UPDATE NO ACTION`,
|
|
85
|
+
);
|
|
86
|
+
await queryRunner.query(
|
|
87
|
+
`ALTER TABLE "ServiceLevelObjectiveOwnerRule" ADD CONSTRAINT "FK_60f95ff7a6d32473e16dd7a9d96" FOREIGN KEY ("createdByUserId") REFERENCES "User"("_id") ON DELETE SET NULL ON UPDATE NO ACTION`,
|
|
88
|
+
);
|
|
89
|
+
await queryRunner.query(
|
|
90
|
+
`ALTER TABLE "ServiceLevelObjectiveOwnerRule" ADD CONSTRAINT "FK_7a1bb4246c7029fb5eec8dfbc1c" FOREIGN KEY ("deletedByUserId") REFERENCES "User"("_id") ON DELETE SET NULL ON UPDATE NO ACTION`,
|
|
91
|
+
);
|
|
92
|
+
await queryRunner.query(
|
|
93
|
+
`ALTER TABLE "ServiceLevelObjectiveLabelRule" ADD CONSTRAINT "FK_7bf2cb71d4eadd777dca39d2e55" FOREIGN KEY ("projectId") REFERENCES "Project"("_id") ON DELETE CASCADE ON UPDATE NO ACTION`,
|
|
94
|
+
);
|
|
95
|
+
await queryRunner.query(
|
|
96
|
+
`ALTER TABLE "ServiceLevelObjectiveLabelRule" ADD CONSTRAINT "FK_1de61bef2e13d1e25394360ba2e" FOREIGN KEY ("createdByUserId") REFERENCES "User"("_id") ON DELETE SET NULL ON UPDATE NO ACTION`,
|
|
97
|
+
);
|
|
98
|
+
await queryRunner.query(
|
|
99
|
+
`ALTER TABLE "ServiceLevelObjectiveLabelRule" ADD CONSTRAINT "FK_72ab545b8be48bcae655b1c83d2" FOREIGN KEY ("deletedByUserId") REFERENCES "User"("_id") ON DELETE SET NULL ON UPDATE NO ACTION`,
|
|
100
|
+
);
|
|
101
|
+
await queryRunner.query(
|
|
102
|
+
`ALTER TABLE "ServiceLevelObjectiveOwnerRuleServiceLevelObjectiveLabel" ADD CONSTRAINT "FK_8f61365ab62fb2cda9cabfba6a9" FOREIGN KEY ("serviceLevelObjectiveOwnerRuleId") REFERENCES "ServiceLevelObjectiveOwnerRule"("_id") ON DELETE CASCADE ON UPDATE CASCADE`,
|
|
103
|
+
);
|
|
104
|
+
await queryRunner.query(
|
|
105
|
+
`ALTER TABLE "ServiceLevelObjectiveOwnerRuleServiceLevelObjectiveLabel" ADD CONSTRAINT "FK_a53d5afa239072fbbcd830ee1eb" FOREIGN KEY ("labelId") REFERENCES "Label"("_id") ON DELETE CASCADE ON UPDATE CASCADE`,
|
|
106
|
+
);
|
|
107
|
+
await queryRunner.query(
|
|
108
|
+
`ALTER TABLE "ServiceLevelObjectiveOwnerRuleOwnerUser" ADD CONSTRAINT "FK_bb2984cb07f49c10c2b43a2a716" FOREIGN KEY ("serviceLevelObjectiveOwnerRuleId") REFERENCES "ServiceLevelObjectiveOwnerRule"("_id") ON DELETE CASCADE ON UPDATE CASCADE`,
|
|
109
|
+
);
|
|
110
|
+
await queryRunner.query(
|
|
111
|
+
`ALTER TABLE "ServiceLevelObjectiveOwnerRuleOwnerUser" ADD CONSTRAINT "FK_0151b4abffe8e16c9ebdd3b4cf6" FOREIGN KEY ("userId") REFERENCES "User"("_id") ON DELETE CASCADE ON UPDATE CASCADE`,
|
|
112
|
+
);
|
|
113
|
+
await queryRunner.query(
|
|
114
|
+
`ALTER TABLE "ServiceLevelObjectiveOwnerRuleOwnerTeam" ADD CONSTRAINT "FK_12919a82600bbabd2ed7554526e" FOREIGN KEY ("serviceLevelObjectiveOwnerRuleId") REFERENCES "ServiceLevelObjectiveOwnerRule"("_id") ON DELETE CASCADE ON UPDATE CASCADE`,
|
|
115
|
+
);
|
|
116
|
+
await queryRunner.query(
|
|
117
|
+
`ALTER TABLE "ServiceLevelObjectiveOwnerRuleOwnerTeam" ADD CONSTRAINT "FK_6082f2cc1e7d70c21314f8571b9" FOREIGN KEY ("teamId") REFERENCES "Team"("_id") ON DELETE CASCADE ON UPDATE CASCADE`,
|
|
118
|
+
);
|
|
119
|
+
await queryRunner.query(
|
|
120
|
+
`ALTER TABLE "ServiceLevelObjectiveLabelRuleServiceLevelObjectiveLabel" ADD CONSTRAINT "FK_5a4fed4da4bd53243128e78ced0" FOREIGN KEY ("serviceLevelObjectiveLabelRuleId") REFERENCES "ServiceLevelObjectiveLabelRule"("_id") ON DELETE CASCADE ON UPDATE CASCADE`,
|
|
121
|
+
);
|
|
122
|
+
await queryRunner.query(
|
|
123
|
+
`ALTER TABLE "ServiceLevelObjectiveLabelRuleServiceLevelObjectiveLabel" ADD CONSTRAINT "FK_f97e9f9b0f0f138be034ecefe7c" FOREIGN KEY ("labelId") REFERENCES "Label"("_id") ON DELETE CASCADE ON UPDATE CASCADE`,
|
|
124
|
+
);
|
|
125
|
+
await queryRunner.query(
|
|
126
|
+
`ALTER TABLE "ServiceLevelObjectiveLabelRuleLabelToAdd" ADD CONSTRAINT "FK_6511777681392a31b0d8e3ad1de" FOREIGN KEY ("serviceLevelObjectiveLabelRuleId") REFERENCES "ServiceLevelObjectiveLabelRule"("_id") ON DELETE CASCADE ON UPDATE CASCADE`,
|
|
127
|
+
);
|
|
128
|
+
await queryRunner.query(
|
|
129
|
+
`ALTER TABLE "ServiceLevelObjectiveLabelRuleLabelToAdd" ADD CONSTRAINT "FK_b41fe48b6a5df099dfe513717d8" FOREIGN KEY ("labelId") REFERENCES "Label"("_id") ON DELETE CASCADE ON UPDATE CASCADE`,
|
|
130
|
+
);
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
public async down(queryRunner: QueryRunner): Promise<void> {
|
|
134
|
+
await queryRunner.query(
|
|
135
|
+
`ALTER TABLE "ServiceLevelObjectiveLabelRuleLabelToAdd" DROP CONSTRAINT "FK_b41fe48b6a5df099dfe513717d8"`,
|
|
136
|
+
);
|
|
137
|
+
await queryRunner.query(
|
|
138
|
+
`ALTER TABLE "ServiceLevelObjectiveLabelRuleLabelToAdd" DROP CONSTRAINT "FK_6511777681392a31b0d8e3ad1de"`,
|
|
139
|
+
);
|
|
140
|
+
await queryRunner.query(
|
|
141
|
+
`ALTER TABLE "ServiceLevelObjectiveLabelRuleServiceLevelObjectiveLabel" DROP CONSTRAINT "FK_f97e9f9b0f0f138be034ecefe7c"`,
|
|
142
|
+
);
|
|
143
|
+
await queryRunner.query(
|
|
144
|
+
`ALTER TABLE "ServiceLevelObjectiveLabelRuleServiceLevelObjectiveLabel" DROP CONSTRAINT "FK_5a4fed4da4bd53243128e78ced0"`,
|
|
145
|
+
);
|
|
146
|
+
await queryRunner.query(
|
|
147
|
+
`ALTER TABLE "ServiceLevelObjectiveOwnerRuleOwnerTeam" DROP CONSTRAINT "FK_6082f2cc1e7d70c21314f8571b9"`,
|
|
148
|
+
);
|
|
149
|
+
await queryRunner.query(
|
|
150
|
+
`ALTER TABLE "ServiceLevelObjectiveOwnerRuleOwnerTeam" DROP CONSTRAINT "FK_12919a82600bbabd2ed7554526e"`,
|
|
151
|
+
);
|
|
152
|
+
await queryRunner.query(
|
|
153
|
+
`ALTER TABLE "ServiceLevelObjectiveOwnerRuleOwnerUser" DROP CONSTRAINT "FK_0151b4abffe8e16c9ebdd3b4cf6"`,
|
|
154
|
+
);
|
|
155
|
+
await queryRunner.query(
|
|
156
|
+
`ALTER TABLE "ServiceLevelObjectiveOwnerRuleOwnerUser" DROP CONSTRAINT "FK_bb2984cb07f49c10c2b43a2a716"`,
|
|
157
|
+
);
|
|
158
|
+
await queryRunner.query(
|
|
159
|
+
`ALTER TABLE "ServiceLevelObjectiveOwnerRuleServiceLevelObjectiveLabel" DROP CONSTRAINT "FK_a53d5afa239072fbbcd830ee1eb"`,
|
|
160
|
+
);
|
|
161
|
+
await queryRunner.query(
|
|
162
|
+
`ALTER TABLE "ServiceLevelObjectiveOwnerRuleServiceLevelObjectiveLabel" DROP CONSTRAINT "FK_8f61365ab62fb2cda9cabfba6a9"`,
|
|
163
|
+
);
|
|
164
|
+
await queryRunner.query(
|
|
165
|
+
`ALTER TABLE "ServiceLevelObjectiveLabelRule" DROP CONSTRAINT "FK_72ab545b8be48bcae655b1c83d2"`,
|
|
166
|
+
);
|
|
167
|
+
await queryRunner.query(
|
|
168
|
+
`ALTER TABLE "ServiceLevelObjectiveLabelRule" DROP CONSTRAINT "FK_1de61bef2e13d1e25394360ba2e"`,
|
|
169
|
+
);
|
|
170
|
+
await queryRunner.query(
|
|
171
|
+
`ALTER TABLE "ServiceLevelObjectiveLabelRule" DROP CONSTRAINT "FK_7bf2cb71d4eadd777dca39d2e55"`,
|
|
172
|
+
);
|
|
173
|
+
await queryRunner.query(
|
|
174
|
+
`ALTER TABLE "ServiceLevelObjectiveOwnerRule" DROP CONSTRAINT "FK_7a1bb4246c7029fb5eec8dfbc1c"`,
|
|
175
|
+
);
|
|
176
|
+
await queryRunner.query(
|
|
177
|
+
`ALTER TABLE "ServiceLevelObjectiveOwnerRule" DROP CONSTRAINT "FK_60f95ff7a6d32473e16dd7a9d96"`,
|
|
178
|
+
);
|
|
179
|
+
await queryRunner.query(
|
|
180
|
+
`ALTER TABLE "ServiceLevelObjectiveOwnerRule" DROP CONSTRAINT "FK_52a12c08da9cfed82a6d55ee2a6"`,
|
|
181
|
+
);
|
|
182
|
+
await queryRunner.query(
|
|
183
|
+
`DROP INDEX "public"."IDX_b41fe48b6a5df099dfe513717d"`,
|
|
184
|
+
);
|
|
185
|
+
await queryRunner.query(
|
|
186
|
+
`DROP INDEX "public"."IDX_6511777681392a31b0d8e3ad1d"`,
|
|
187
|
+
);
|
|
188
|
+
await queryRunner.query(
|
|
189
|
+
`DROP TABLE "ServiceLevelObjectiveLabelRuleLabelToAdd"`,
|
|
190
|
+
);
|
|
191
|
+
await queryRunner.query(
|
|
192
|
+
`DROP INDEX "public"."IDX_f97e9f9b0f0f138be034ecefe7"`,
|
|
193
|
+
);
|
|
194
|
+
await queryRunner.query(
|
|
195
|
+
`DROP INDEX "public"."IDX_5a4fed4da4bd53243128e78ced"`,
|
|
196
|
+
);
|
|
197
|
+
await queryRunner.query(
|
|
198
|
+
`DROP TABLE "ServiceLevelObjectiveLabelRuleServiceLevelObjectiveLabel"`,
|
|
199
|
+
);
|
|
200
|
+
await queryRunner.query(
|
|
201
|
+
`DROP INDEX "public"."IDX_6082f2cc1e7d70c21314f8571b"`,
|
|
202
|
+
);
|
|
203
|
+
await queryRunner.query(
|
|
204
|
+
`DROP INDEX "public"."IDX_12919a82600bbabd2ed7554526"`,
|
|
205
|
+
);
|
|
206
|
+
await queryRunner.query(
|
|
207
|
+
`DROP TABLE "ServiceLevelObjectiveOwnerRuleOwnerTeam"`,
|
|
208
|
+
);
|
|
209
|
+
await queryRunner.query(
|
|
210
|
+
`DROP INDEX "public"."IDX_0151b4abffe8e16c9ebdd3b4cf"`,
|
|
211
|
+
);
|
|
212
|
+
await queryRunner.query(
|
|
213
|
+
`DROP INDEX "public"."IDX_bb2984cb07f49c10c2b43a2a71"`,
|
|
214
|
+
);
|
|
215
|
+
await queryRunner.query(
|
|
216
|
+
`DROP TABLE "ServiceLevelObjectiveOwnerRuleOwnerUser"`,
|
|
217
|
+
);
|
|
218
|
+
await queryRunner.query(
|
|
219
|
+
`DROP INDEX "public"."IDX_a53d5afa239072fbbcd830ee1e"`,
|
|
220
|
+
);
|
|
221
|
+
await queryRunner.query(
|
|
222
|
+
`DROP INDEX "public"."IDX_8f61365ab62fb2cda9cabfba6a"`,
|
|
223
|
+
);
|
|
224
|
+
await queryRunner.query(
|
|
225
|
+
`DROP TABLE "ServiceLevelObjectiveOwnerRuleServiceLevelObjectiveLabel"`,
|
|
226
|
+
);
|
|
227
|
+
await queryRunner.query(
|
|
228
|
+
`DROP INDEX "public"."IDX_bc184754b090db18209d325dc3"`,
|
|
229
|
+
);
|
|
230
|
+
await queryRunner.query(
|
|
231
|
+
`DROP INDEX "public"."IDX_f590d00d3ce34582a752bd8dca"`,
|
|
232
|
+
);
|
|
233
|
+
await queryRunner.query(
|
|
234
|
+
`DROP INDEX "public"."IDX_7bf2cb71d4eadd777dca39d2e5"`,
|
|
235
|
+
);
|
|
236
|
+
await queryRunner.query(`DROP TABLE "ServiceLevelObjectiveLabelRule"`);
|
|
237
|
+
await queryRunner.query(
|
|
238
|
+
`DROP INDEX "public"."IDX_887a6293429f3079055ca2f593"`,
|
|
239
|
+
);
|
|
240
|
+
await queryRunner.query(
|
|
241
|
+
`DROP INDEX "public"."IDX_675d55cd050bae45ead9bc5a76"`,
|
|
242
|
+
);
|
|
243
|
+
await queryRunner.query(
|
|
244
|
+
`DROP INDEX "public"."IDX_52a12c08da9cfed82a6d55ee2a"`,
|
|
245
|
+
);
|
|
246
|
+
await queryRunner.query(`DROP TABLE "ServiceLevelObjectiveOwnerRule"`);
|
|
247
|
+
}
|
|
248
|
+
}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { MigrationInterface, QueryRunner } from "typeorm";
|
|
2
|
+
|
|
3
|
+
export class AddSloMonitorRuleMonitorType1794200000000
|
|
4
|
+
implements MigrationInterface
|
|
5
|
+
{
|
|
6
|
+
public name: string = "AddSloMonitorRuleMonitorType1794200000000";
|
|
7
|
+
|
|
8
|
+
public async up(queryRunner: QueryRunner): Promise<void> {
|
|
9
|
+
await queryRunner.query(
|
|
10
|
+
`ALTER TABLE "ServiceLevelObjectiveMonitorRule" ADD "monitorType" character varying(100)`,
|
|
11
|
+
);
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
public async down(queryRunner: QueryRunner): Promise<void> {
|
|
15
|
+
await queryRunner.query(
|
|
16
|
+
`ALTER TABLE "ServiceLevelObjectiveMonitorRule" DROP COLUMN "monitorType"`,
|
|
17
|
+
);
|
|
18
|
+
}
|
|
19
|
+
}
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
import { AddAIInvestigationDecision1793700000000 } from "./1793700000000-AddAIInvestigationDecision";
|
|
2
2
|
import { RemoveMonitorDescriptionLengthLimit1793800000000 } from "./1793800000000-RemoveMonitorDescriptionLengthLimit";
|
|
3
3
|
import { AddEnterpriseEditionFirstSeenAt1793900000000 } from "./1793900000000-AddEnterpriseEditionFirstSeenAt";
|
|
4
|
+
import { AddSloLabelAndOwnerRules1794100000000 } from "./1794100000000-AddSloLabelAndOwnerRules";
|
|
5
|
+
import { AddSloMonitorRuleMonitorType1794200000000 } from "./1794200000000-AddSloMonitorRuleMonitorType";
|
|
4
6
|
import { AddConfigurableRuleCriteria1792500000000 } from "./1792500000000-AddConfigurableRuleCriteria";
|
|
5
7
|
import { AddGoogleSecOpsDiagnostics1792300000000 } from "./1792300000000-AddGoogleSecOpsDiagnostics";
|
|
6
8
|
import { AddIncomingCallPolicyPhoneNumbers1792600000000 } from "./1792600000000-AddIncomingCallPolicyPhoneNumbers";
|
|
@@ -1202,4 +1204,6 @@ export default [
|
|
|
1202
1204
|
AddAIInvestigationDecision1793700000000,
|
|
1203
1205
|
RemoveMonitorDescriptionLengthLimit1793800000000,
|
|
1204
1206
|
AddEnterpriseEditionFirstSeenAt1793900000000,
|
|
1207
|
+
AddSloLabelAndOwnerRules1794100000000,
|
|
1208
|
+
AddSloMonitorRuleMonitorType1794200000000,
|
|
1205
1209
|
];
|
|
@@ -76,6 +76,7 @@ import Typeof from "../../Types/Typeof";
|
|
|
76
76
|
import API from "../../Utils/API";
|
|
77
77
|
import Slug from "../../Utils/Slug";
|
|
78
78
|
import { getRuleCriteriaValidationError } from "../../Utils/Rules/RuleCriteriaMatcher";
|
|
79
|
+
import { getMonitorTypeCriteriaValidationError } from "../../Utils/Rules/MonitorTypeRuleCriteria";
|
|
79
80
|
import RuleCriteria, {
|
|
80
81
|
RULE_CRITERIA_LEGACY_NEVER_MATCH_PATTERN,
|
|
81
82
|
RuleCriteriaOperator,
|
|
@@ -852,6 +853,15 @@ class DatabaseService<TBaseModel extends BaseModel> extends BaseService {
|
|
|
852
853
|
);
|
|
853
854
|
}
|
|
854
855
|
|
|
856
|
+
if (metadata.type === TableColumnType.MonitorType) {
|
|
857
|
+
const validationError: string | null =
|
|
858
|
+
getMonitorTypeCriteriaValidationError(filter);
|
|
859
|
+
|
|
860
|
+
if (validationError) {
|
|
861
|
+
throw new BadDataException(validationError);
|
|
862
|
+
}
|
|
863
|
+
}
|
|
864
|
+
|
|
855
865
|
const isRelationField: boolean =
|
|
856
866
|
metadata.type === TableColumnType.EntityArray;
|
|
857
867
|
const isRelationOperator: boolean = RULE_CRITERIA_RELATION_OPERATORS.has(
|
package/Server/Services/Index.ts
CHANGED
|
@@ -384,6 +384,8 @@ import ServiceLevelObjectiveOwnerUserService from "./ServiceLevelObjectiveOwnerU
|
|
|
384
384
|
import ServiceLevelObjectiveOwnerTeamService from "./ServiceLevelObjectiveOwnerTeamService";
|
|
385
385
|
import ServiceLevelObjectiveMonitorRuleService from "./ServiceLevelObjectiveMonitorRuleService";
|
|
386
386
|
import ServiceLevelObjectiveFeedService from "./ServiceLevelObjectiveFeedService";
|
|
387
|
+
import ServiceLevelObjectiveOwnerRuleService from "./ServiceLevelObjectiveOwnerRuleService";
|
|
388
|
+
import ServiceLevelObjectiveLabelRuleService from "./ServiceLevelObjectiveLabelRuleService";
|
|
387
389
|
import SloHistoryService from "./SloHistoryService";
|
|
388
390
|
import IncidentReminderRuleService from "./IncidentReminderRuleService";
|
|
389
391
|
import AlertReminderRuleService from "./AlertReminderRuleService";
|
|
@@ -818,6 +820,8 @@ const services: Array<BaseService> = [
|
|
|
818
820
|
ServiceLevelObjectiveOwnerTeamService,
|
|
819
821
|
ServiceLevelObjectiveMonitorRuleService,
|
|
820
822
|
ServiceLevelObjectiveFeedService,
|
|
823
|
+
ServiceLevelObjectiveOwnerRuleService,
|
|
824
|
+
ServiceLevelObjectiveLabelRuleService,
|
|
821
825
|
IncidentReminderRuleService,
|
|
822
826
|
AlertReminderRuleService,
|
|
823
827
|
ScheduledMaintenanceReminderRuleService,
|
|
@@ -1301,14 +1301,15 @@ export class Service extends DatabaseService<Model> {
|
|
|
1301
1301
|
}
|
|
1302
1302
|
|
|
1303
1303
|
/*
|
|
1304
|
-
* SLO monitor rules match on labels, name and description, so an edit to
|
|
1305
|
-
* any of
|
|
1304
|
+
* SLO monitor rules match on labels, type, name and description, so an edit to
|
|
1305
|
+
* any of those fields can pull this monitor into an SLO's error budget or
|
|
1306
1306
|
* push it out of one. Keyed on `!== undefined` rather than on a non-empty
|
|
1307
1307
|
* value: clearing every label arrives as `[]`, and that is precisely the
|
|
1308
1308
|
* edit that should detach the monitor from every rule-driven SLO.
|
|
1309
1309
|
*/
|
|
1310
1310
|
if (
|
|
1311
1311
|
(onUpdate.updateBy.data.labels !== undefined ||
|
|
1312
|
+
onUpdate.updateBy.data.monitorType !== undefined ||
|
|
1312
1313
|
onUpdate.updateBy.data.name !== undefined ||
|
|
1313
1314
|
onUpdate.updateBy.data.description !== undefined) &&
|
|
1314
1315
|
updatedItemIds.length > 0
|